Yao Chunli
2022-05-28 eea0893be9d4ef175ab26e8fea51d41fa33477ce
提交 | 用户 | age
65f713 1 /*
0ed438 2
Q 3
4
5
6 */
7 #pragma once
8
9 #define TYPECOIL 0x00
10 #define TYPEDATA 0x80
11
12 #define TOTAL_WDFS (16)        //Total DF Count
13 #define TOTAL_CurVAL (16)        //
14
15 //extern unsigned short X[256];
16 //extern unsigned short Y[256];
17 //extern unsigned short R[256];
18
19 #define TOTALTIMERS (64)
20 #define TICK_OF_MS (10)        //1ms
21 #define TICK_OF_RS (100)        //10mS
22 #define TICK_OF_XS (1000)            //100mS
23 #define TICK_OF_YS (10000)        //1S
24
25
26 enum enKLCoilTypes
27 {
28     KLCoilTypeX = 0 | TYPECOIL,        //X Input
29     KLCoilTypeY = 1 | TYPECOIL,        //Y Output
30     KLCoilTypeR = 2 | TYPECOIL,        //R register
31     KLCoilTypeLX = 3 | TYPECOIL,        //Link register
32     KLCoilTypeLY = 4 | TYPECOIL,        //Link register
33     KLCoilTypeT = 5 | TYPECOIL,        //Timer
34     KLCoilTypeC = 6 | TYPECOIL,        //Counter
35     KLCoilTypeLR = 7 | TYPECOIL,        //Link register
36     KLCoilTypeSR = 8 | TYPECOIL,        //Link register
37
38 };
39 enum enKLDataTypes
40 {
41     KLDataTypeDEC = 0 | TYPEDATA,
42     KLDataTypeHEX = 1 | TYPEDATA,
43     KLDataTypeFloat = 2 | TYPEDATA,
44     KLDataTypeWX = 3 | TYPEDATA,
45     KLDataTypeWY = 4 | TYPEDATA,
46     KLDataTypeWR = 5 | TYPEDATA,
47     KLDataTypeWLX = 6 | TYPEDATA,
48     KLDataTypeWLY = 7 | TYPEDATA,
49     KLDataTypeDT = 8 | TYPEDATA,
50     KLDataTypeSDT = 9 | TYPEDATA,
51     KLDataTypeWSR = 10 | TYPEDATA,
52     KLDataTypeSV = 11 | TYPEDATA,
53     KLDataTypeEV = 12 | TYPEDATA,
54     KLDataTypeLD = 13 | TYPEDATA,
55     KLDataSysCfg = 25 | TYPEDATA,
56     KLDataTypeFlash = 33 | TYPEDATA,
57     KLDataTypeTest = 254 | TYPEDATA,
58 };
59 enum enKLDataCounts
60 {
61     KLDataDTCount = 256,
62     KLDataSDTCount = 256,
63
64     KLDataWXCount = 16,
65     KLDataWYCount = 16,
66     KLDataWRCount = 16,
67     KLDataLDCount = 64,
68     KLDataWLCount = 8,
69
70     KLCoilXCount = KLDataWXCount * 16,
71     KLCoilYCount = KLDataWYCount * 16,
72     KLCoilRCount = KLDataWRCount * 16,
73
74     KLCoilTCount = 64,
75     KLCoilCCount = KLCoilTCount,
76     KLDataSVCount = KLCoilTCount,
77     KLDataEVCount = KLCoilTCount,
78
79     KLCoilLXCount = 128,
80     KLCoilLYCount = 128,
81     KLCoilLRCount = 128,
82     KLCoilSRCount = 128,
83
84
85 };
86
65f713 87 enum enInputFilter
Q 88 {
89     InputFilter_None = 0,
90     InputFilter_1mS = 1,
91     InputFilter_2mS = 2,
92     InputFilter_4mS = 3,
93     InputFilter_8mS = 4,
94     InputFilter_16mS = 5,
95     InputFilter_32mS = 6,
96     InputFilter_64mS = 7,
97     InputFilter_128mS = 8,
98     InputFilter_256mS = 9,
99 };
100
101 enum enOutputHold
102 {
103     Output_Hold = 0,
104     Output_Set_0 = 1,
105     Output_Set_1 = 2,
106 };
107
108 enum enPortType
109 {
110     PortType_Com = 0,    //¼ÆËã»úͨѶ
111     PortType_Gen = 1,    //ͨÓÃͨѶ£¬×ÔÓÉ¿Ú
112     PortType_KLink = 2, //KlinkͨѶ
113     PortType_KBus = 3,     //KBusͨѶ
114     PortType_KNet = 4,     // KNetͨѶ
115     PortType_ModbusRTU = 5, //Modbus RTU Í¨Ñ¶
116 };
117
118 enum enKeventType
119 {
120     EventTypeNone = 0,
121     EventTypePowerUp = 1,
122     EventTypePowerDown = 2,
123     EventTypePowerRecover = 3,
124     EventTypeConnected = 4,
125     EventTypeLostCon = 5,
126     EventTypeSetTime = 6,
127     EventTypeSysCfg = 7,
128     EventTypeProg = 8,
129     EventTypeForce = 9,
130     EventTypeClearEvent = 10,
131
132
133     EventType
134 };
135 typedef struct tagInfoBlock
136 {
137     USHORT nDeviceType;
138     USHORT ProgVer;
139     USHORT KlinkVer;
140     USHORT nCapacity;
141     UCHAR nDInput;
142     UCHAR nDOutput;
143     UCHAR nAInput;
144     UCHAR nAOutput;
145     UCHAR nHInput;
146     UCHAR nHOutput;
147     UCHAR nExt1;
148     UCHAR nEXT2;
149
150 }stKMInfoBlock;
151
152 typedef struct tagKMFuncParam
153 {
154     USHORT EnablePLC : 1;        //使能内部PLC功能
155     USHORT RunMode;                //工作模式
156 }stKMFuncParam;
157
158 //输入输出地址映射
159 typedef struct tagAddrMapping
160 {
161     USHORT InputAddr;
162     USHORT OutputAddr;
163     USHORT WRAddr;
164     USHORT DTAddr;
165 }stAddrMapping;
166 typedef struct tagComPortParam
167 {
168     USHORT PortType : 4;                /* 0-5=Com,Gen,KLink,KBus,KNet,RTU */
169     USHORT ByteSize : 2;        /* 0-1=Number of bits/byte, 7-8    */
170     USHORT Parity : 4;                    /* 0-4=None,Odd,Even,Mark,Space    */
171     USHORT StopBits : 2;        /* 0,1,2 = 1, 1.5, 2               */
172     USHORT EofChar : 2;         /* 0,1,2 = None, CR, CR+LF, ETX;  End of character  */
173     USHORT SofChar : 2;                    /* 0,1,2 = None, STX */
174     USHORT BaudRate;       /* =*100 Baudrate at which running       */
175 }stComPortParam;
176
177 typedef struct tagInputFilterParam
178 {
179     BYTE Filter0 : 4;
180     BYTE Filter1 : 4;
181
182 }stInputFilterParam;
183
184 typedef struct tagOutputHoldParam
185 {
186     BYTE Hold1 : 4;
187     BYTE Hold2 : 4;
188 }stOutputHoldParam;
189 // 硬件描述文件
190
191 typedef struct tagMSysCfg
192 {
193     unsigned short Sign1;        //2
194     unsigned short Seq1;        //2
195     UINT cfgvar2;                //4
196     stComPortParam Ports[2];                //2*4B
197     stOutputHoldParam OutputParams[16];        //16B
198     stInputFilterParam InputParams[16];        //16B
199
200     UINT cfgvar3;
201     UINT cfgvar4;
202     UINT cfgvar5;
203     UINT cfgvar6;
204     UINT cfgvar7;
205     UINT cfgvar8;
206     UINT cfgvar9;
207     UINT cfgvar10;
208     UINT cfgvar11;
209     UINT cfgvar12;
210     UINT cfgvar13;
211     UINT cfgvar14;
212     UINT cfgvar15;
213     UINT cfgvar16;                            //14*4 56B
214     UINT Space1[5];                            // 20B
215
216     unsigned short CRC1;                    //2B
217     unsigned short EndSign1;                //2B
218 }stKMSysCfg, *pKMSysCfg;                    //128B
0ed438 219
Q 220
221 typedef struct tagTimer
222 {
223     unsigned int LastActTime;
224     union {
225         unsigned short StatByte;
226         struct
227         {
228             unsigned short nScale : 2;    //Time Scale, 0:1ms 1:10ms 2:100ms 3:1S
229             unsigned short nType : 1;        //0 : timer 1    :    counter ;
230             unsigned short nDir : 1;        //0 : count down. 1 count up;
231             unsigned short nInited : 1;
232             unsigned short bSet : 1;
233             unsigned short bTon : 1;
234
235         };
236         //        stTimerStat Stat;
237     };
238 }stTimer;
239
240 typedef struct tagKMem
241 {
242     unsigned short WDFs[TOTAL_WDFS];
243     unsigned char CurVALs[TOTAL_CurVAL];
244     unsigned char CurVAL;
245
246     stTimer Timers[TOTALTIMERS];
247
248     unsigned short WX[KLDataWXCount];        //
249     unsigned short WY[KLDataWYCount];        //
250     unsigned short WR[KLDataWRCount];
251     unsigned short WT[16];
252
253     unsigned short WC[16];
254     unsigned short EV[KLDataEVCount];
255     unsigned short SV[KLDataSVCount];
256
257     unsigned short WLX[16];        //
258     unsigned short WLY[16];
259     unsigned short WLR[16];
260     unsigned short WSR[16];
261     unsigned short DT[KLDataDTCount];
262
263     union {
264         unsigned int SDD[KLDataSDTCount / 2];
265         unsigned short SDT[KLDataSDTCount];
266         unsigned char SDB[KLDataSDTCount * 2];
267         struct {
268             unsigned int EffJumperSW;
269             unsigned int CurJumperSW;
270             unsigned int haltick;
271             unsigned int nRunCount;
272             unsigned int RunStat;
273             unsigned int ErrStat;
274             unsigned int PwrOnCount;
275             unsigned int ThisRunTime;
276             unsigned int TotalRunTime;
277             unsigned int CurTimeSec;
278             unsigned int PwrFailCount;
279             unsigned int LastPwrFailTime;
280             unsigned int LastScanTime;
281             unsigned int ScanTimeuS;
282             unsigned int MinScanTimeuS;
283             unsigned int MaxScanTimeuS;
284             unsigned int nEventCount;
285             unsigned int nEventMinIndex;
286             unsigned int nEventMaxIndex;
287             unsigned int Rev2[5];
288             unsigned short ADCValues[20];
289         };
290     };
291     int Reserverd5[1024];
292 }stKMem;
293
294
295 enum enOpType
296 {
297     OP_NONE = 0,
298     OP_NOP = 0,
299     OP_ST = 1,        //
300     OP_ST_ = 2,        //
301     OP_AN = 3,        //
302     OP_AN_ = 4,        //
303     OP_OR = 5,        //
304     OP_OR_ = 6,        //
305     OP_NOT = 7,        //
306     OP_ANS = 8,    //
307     OP_ORS = 9,    //
308
309     OP_PSHS = 10,    //
310     OP_RDS = 11,        //
311     OP_POPS = 12,    //
312
313     OP_OUT = 16,        //
314     OP_SET = 17,    //
315     OP_RESET = 18,    //
316     OP_DF = 19,        //
317     OP_DF_ = 20,    //
318
319     OP_ST_EQ,    //
320     OP_ST_LT,    //
321     OP_ST_GT,    //
322     OP_ST_LE,    //
323     OP_ST_GE,        //
324     OP_ST_NE,        //
325     OP_AN_EQ,        //
326     OP_AN_LT,        //
327     OP_AN_GT,
328     OP_AN_LE,
329     OP_AN_GE,
330     OP_AN_NE,
331     OP_OR_EQ,
332     OP_OR_LT,
333     OP_OR_GT,
334     OP_OR_LE,
335     OP_OR_GE,
336     OP_OR_NE,
337
338
339     OP_MV = 51,
340     OP_INC = 52,
341     OP_ADD2 = 53,
342     OP_ADD3 = 54,
343     OP_DEC = 55,
344     OP_SUB2 = 56,
345     OP_SUB3 = 57,
346     OP_MUL = 58,
347     OP_DIV = 59,
348     OP_BKMV = 60,
349     OP_COPY = 61,
350     OP_CLR = 62,
351
352     OP_BRK,
353     OP_PAUSE,
354     OP_JP,
355     OP_CALL,
356
357     OP_TML = 0xC8,    //
358     OP_TMR = 0xDC,    //
359     OP_TMX = 0xDD,    //
360     OP_TMY = 0xFA,    //
361
362 };
363
364 typedef struct stBinProg1
365 {
366     unsigned char nOp;
367     unsigned char nParamType;
368     unsigned short nParamAddr;
369 }stBinProg1;
370 typedef struct stBinProg15
65f713 371 {    //定时器
Q 372     //单参数高级指令
0ed438 373     unsigned char nOp;
Q 374     unsigned char nOpNum;
375     unsigned short nParamAddr1;
376     unsigned char nParamType1;
377     unsigned char resvr1;
378     unsigned short resvr2;
379 }stBinProg15;
380 typedef struct stBinProg2
65f713 381 {    //比较指令
Q 382     //双参数高级指令
0ed438 383     unsigned char nOp;
Q 384     unsigned char nOpNum;
385     unsigned short nParamAddr1;
386     unsigned char nParamType1;
387     unsigned char nParamType2;
388     unsigned short nParamAddr2;
389 }stBinProg2;
390 typedef struct stBinProg3
65f713 391 {    //三参数高级指令
0ed438 392     unsigned char nOp;
Q 393     unsigned char nOpNum;
394     unsigned short nParamAddr1;
395     unsigned char nParamType1;
396     unsigned char nParamType2;
397     unsigned short nParamAddr2;
398     unsigned char resvr1;
399     unsigned char nParamType3;
400     unsigned short nParamAddr3;
401 }stBinProg3;
402