📄 lzkfunc.lst
字号:
C51 COMPILER V7.20 LZKFUNC 09/04/2006 16:29:05 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE LZKFUNC
OBJECT MODULE PLACED IN LzkFUNC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe LzkFUNC.c DB OE
line level source
1 #include "LZK.H"
2 #include <stdio.h>
3
4 #define Vref 1.200
*** WARNING C317 IN LINE 4 OF LzkFUNC.c: attempt to redefine macro 'Vref'
5
6 /***********************************************************************
7 *** DO开关量(控制输出继电器)功能说明:
8 (1)KQJ:KQ可控硅开通控制继电器(常闭).
9 (2)LZJ:励磁状态继电器(常开),LZJ决定是否进行RF检测.
10 (3)LCJ:失步保护继电器(常开),控制主电源开关或输出给PLC.
11 (4)SZJ:跳闸停机继电器(常开),后备保护用,输出给PLC.
12 (5)BXJ:报警输出继电器(常开),用于接通声光报警或输出至PLC.
13 (6)TYJ:降压起动继电器(常开),控制输出.
14 (7)YKJ:遥控继电器(常开)
15 (8)N/A:
16 ***********************************************************************/
17 uint8 bdata RelayOUT = 0; // Output Relay STATUS.
18 // sbit ZJJ_OUT = RelayOUT^7; // N/A.
19 sbit YKJ_OUT = RelayOUT^6; // YKJ Output Relay No.6.遥控状态输出
20 sbit TYJ_OUT = RelayOUT^5; // TYJ Output Relay No.5.降压启动控制输出
21 sbit BXJ_OUT = RelayOUT^4; // BXJ Output Relay No.4.报警输出
22 sbit SZJ_OUT = RelayOUT^3; // SZJ Output Relay No.3.失步再整步失败状态输出
23 sbit LCJ_OUT = RelayOUT^2; // LCJ Output Relay No.2.失步状态输出
24 sbit LZJ_OUT = RelayOUT^1; // LZJ Output Relay No.1.KQ误导通检测使能控制
25 sbit KQJ_OUT = RelayOUT^0; // KQJ Output Relay No.0.KQ控制继电器
26
27
28 /***********************************************************************
29 *** DI开关量(状态输入继电器)功能说明:
30 (1)DLJ:电机加电状态输入(常开),由PLC输入.
31 (2)RFJ:KQ导通检测(常开),RFJ闭合表示KQ导通.
32 (3)FCJ:断电保护输入(常开),由PLC输入,防止对电机的冲击.
33 (4)JYJ:降压起动输入(常开),由PLC输入.
34 (5)ZCJ:增值(常开),遥控增值.
35 (6)JCJ:减值(常开),遥控减值.
36 (7)YCJ:遥控状态继电器,由PLC输入.
37 (8)DYJ:低压状态输入.
38 ***********************************************************************/
39 uint8 bdata RelayIN = 0xff; // Digital Input STATUS.
40 sbit DYJ_IN = RelayIN^7; // DYJ Input Relay No.7.低电压强励控制输入
41 sbit YCJ_IN = RelayIN^6; // YCJ Input Relay No.6.遥控状态控制输入
42 sbit JCJ_IN = RelayIN^5; // JCJ Input Relay No.5.减值
43 sbit ZCJ_IN = RelayIN^4; // ZCJ Input Relay No.4.增值
44 sbit JYJ_IN = RelayIN^3; // JYJ Input Relay No.3.降压启动控制输入
45 sbit FCJ_IN = RelayIN^2; // FCJ Input Relay No.2.防冲击输入<DSJ断电失步保护继电器>
46 sbit RFJ_IN = RelayIN^1; // RFJ Input Relay No.1.RF误导通信号输入
47 sbit DLJ_IN = RelayIN^0; // DLJ Input Relay No.0.电机启动控制信号输入
48
49
50 /*****************************************************************
51 *** 相差法测量电动机电源功率因数,PhasePole为DUx的过零检测波形
52 *****************************************************************/
53 uint8 bdata PwrFact_MsrFLAG = 0x00;
54 sbit DUxCO_LastVal = PwrFact_MsrFLAG ^ 7; // DUx
C51 COMPILER V7.20 LZKFUNC 09/04/2006 16:29:05 PAGE 2
55 sbit DUxCO_CurrVal = PwrFact_MsrFLAG ^ 6; //
56 sbit PwrFact_CurLoopMsrOVER = PwrFact_MsrFLAG ^ 5; //
57 sbit PwrFact_CurLoopMsrEN = PwrFact_MsrFLAG ^ 4; //
58 sbit PwrFact_CalcMsrOVER = PwrFact_MsrFLAG ^ 3; // Every Wave 32 Points.
59 sbit PwrFact_CalcMsrEN = PwrFact_MsrFLAG ^ 2; //
60 sbit PwrFact_PhaDiffMsrOVER = PwrFact_MsrFLAG ^ 1; // Average for 8 Periods.
61 sbit PwrFact_PhaDiffMsrEN = PwrFact_MsrFLAG ^ 0; //
62
63 uint8 data DUxCO_RisTimCNT = 0;
64 uint8 data PwrFact_PhaDiffMsrCNT = 0;
65 UINTC data PwrFact_PhaDiffMsrDATA[8];
*** ERROR C129 IN LINE 65 OF LZKFUNC.C: missing ';' before 'data'
66
67
68 /****************************************************************************
69 *** 外部变量.
70 ****************************************************************************/
71 extern uint16 xdata *InFlashWrPtr; // Internal FLASH Write Addr Point.
72 extern uint16 code *InFlashRdPtr; // Internal FLASH Read Addr Point.
73
74
75 /****************************************************************************
76 ** 函数名称: T0_ISR()
77 ** 功能描述: T0定时器中断处理,中断间隔125uS
78 (1)125uS时间基准:分为5个相位;
79 (2)WDT清除;
80 (3)A/D采样:UF,IF,DU,DI,CurrRingEY,CurrRingEI;
81 (4)DI读入: UFCO,IFCO,SYNCx,RelayIN;
82 (5)DO输出: RelayOUT,PulseOUT;
83 (6)功率因数相差法TIMER1测量结果读入;
84 ** 入口参数: 无
85 ** 出口参数: 无
86 ** 全局变量: 无
87 ** 调用模块: 无
88 ** 说明:
89 ****************************************************************************/
90 void T0_ISR(void) interrupt 1
91 {
92 uint8 ucTMP;
93
94 SFRPAGE = TIMER01_PAGE; // Change to TIMER01 PAGE.
95 TF0 = 0;
96 WDTCN = 0xA5; // Enable WDT or Reload the WDT.
97
98
99 SFRPAGE = 0x0f; // P5 SFR PAGE.
100 /*****************************************************************
101 *** DI开关量(状态输入继电器)读入(8路);
102 *****************************************************************/
103 P5MDOUT = 0x00; // P5口设置为漏极开路,输入方式.
104 P5MDOUT = 0x00; // P5口设置为漏极开路,输入方式.
105 nReInLE = 0; // Relay Input Enabled.
106 nReInLE = 0; // Relay Input Enabled.
107 RelayIN = P5; // Read Relay Digital Input.
108 nReInLE = 1; // Relay Input Disabled.
109
110 /*****************************************************************
111 *** DO开关量(控制输出继电器)输出(8路);
112 *****************************************************************/
113 P5MDOUT = 0xff; // P5口设置为推挽输出,输出方式.
114 P5MDOUT = 0xff; // P5口设置为推挽输出,输出方式.
115 ReOutLE = 1; // Relay Output Latch Enabled.
C51 COMPILER V7.20 LZKFUNC 09/04/2006 16:29:05 PAGE 3
116 ReOutLE = 1; // Relay Output Latch Enabled.
117 P5 = RelayOUT; // Relay Digital Output.
118 ReOutLE = 0; // Relay Output Latch Disabled.
119
120
121 /*****************************************************************
122 *** DLJ释放或吸合动作处理.
123 *****************************************************************/
124 DLJ_LastVal = DLJ_CurrVal; // 保存DLJ状态.
125 DLJ_CurrVal = DLJ_IN; // 读取DLJ当前状态.
126 if( DLJ_CurrVal != DLJ_LastVal ) // DLJ状态改变.
127 {
128 if( DLJ_CurrVal == 0 ) // 开机启动.
129 {
130 MotNmlVoltStaUpEN = 1; // 电机正常启动允许使能.
131 DLJ_StopProDONE = 0; // 复位停机处理标志.
132 }
133 else // 停机.
134 {
135 if( DLJ_StopProDONE == 0 ) // 未进行过停机处理.
136 {
137 TrigPulseOutEN = 0; // 禁止可控硅触发脉冲输出.
138 // LCD显示“电机停机”.
139 // 所有DO复位,DO = "0xff".
140 // 所有计数器、定时器和标志位复位.
141 DLJ_StopProDONE = 1; // 置已停机处理标志.
142 }
143 }
144 }
145 else
146 {
147 if( DLJ_CurrVal == 1 ) // 等待启动信号.
148 {
149 if( JYJ_IN == 0 ) // 降压启动信号.
150 {
151 MotLowVoltStaUpEN = 1; // 电机启动允许使能.
152 }
153 }
154 }
155
156
157 /*****************************************************************
158 *** 可控硅触发脉冲输出,与SYNCa同步,SYNCa同步信号周期更新.
159 *****************************************************************/
160 SYNCa_LastVal = SYNCa_CurrVal; // 保存SYNCa状态
161 SYNCa_CurrVal = SYNCa; // 读取SYNCa当前状态
162 if( TrigPulseOutEN == 1) // 可控硅触发脉冲输出
163 {
164 if( SYNCa_CurrVal != SYNCa_LastVal) // SYNCa上升沿或下降沿
165 if( SYNCa_CurrVal == 1 ) // SYNCa上升沿,“0”-->“1”
166 {
167 TrigOutSyncTimCNT = 0; // 重新同步
168 TrigOutSyncTimCntEN = 1; // 同步计数使能,避免计时误差累积
169 }
170
171 if( EM_RegBrdgMode == 0 ) // EM Half Bridge,励磁为半桥形式.
172 {
173 if( TrigOutSyncTimCNT == TrigOutPosiA_OnTim ) // Trig Phase A+ ON.
174 PulseOutPut(0x7f & TrigOutPosiA_ON);
175 if( TrigOutSyncTimCNT == TrigOutPosiA_OffTim ) // Trig Phase A+ OFF.
176 PulseOutPut(0x7f);
177
C51 COMPILER V7.20 LZKFUNC 09/04/2006 16:29:05 PAGE 4
178 if( TrigOutSyncTimCNT == TrigOutPosiB_OnTim ) // Trig Phase B+ ON.
179 PulseOutPut(0x7f & TrigOutPosiB_ON);
180 if( TrigOutSyncTimCNT == TrigOutPosiB_OffTim ) // Trig Phase B+ OFF.
181 PulseOutPut(0x7f);
182
183 if( TrigOutSyncTimCNT == TrigOutPosiC_OnTim ) // Trig Phase C+ ON.
184 PulseOutPut(0x7f & TrigOutPosiC_ON);
185 if( TrigOutSyncTimCNT == TrigOutPosiC_OffTim ) // Trig Phase C+ OFF.
186 PulseOutPut(0x7f);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -