QuakeGod
2023-10-20 6fa60de2b0d0237054aa7571191df0f291838031
提交 | 用户 | age
418cb3 1 /*
Q 2
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
4ed7fc 37     KLCoilTypeP = 9 | TYPECOIL,        //P register
Z 38     KLCoilTypeE = 10 | TYPECOIL,        //E register
418cb3 39
Q 40 };
41 enum enKLDataTypes
42 {
43     KLDataTypeDEC = 0 | TYPEDATA,
44     KLDataTypeHEX = 1 | TYPEDATA,
45     KLDataTypeFloat = 2 | TYPEDATA,
46     KLDataTypeWX = 3 | TYPEDATA,
47     KLDataTypeWY = 4 | TYPEDATA,
48     KLDataTypeWR = 5 | TYPEDATA,
49     KLDataTypeWLX = 6 | TYPEDATA,
50     KLDataTypeWLY = 7 | TYPEDATA,
51     KLDataTypeDT = 8 | TYPEDATA,
52     KLDataTypeSDT = 9 | TYPEDATA,
53     KLDataTypeWSR = 10 | TYPEDATA,
54     KLDataTypeSV = 11 | TYPEDATA,
55     KLDataTypeEV = 12 | TYPEDATA,
56     KLDataTypeLD = 13 | TYPEDATA,
57     KLDataSysCfg = 25 | TYPEDATA,
58     KLDataTypeFlash = 33 | TYPEDATA,
59     KLDataTypeWDT = 41 | TYPEDATA,
60     KLDataTypeKBD = 51 | TYPEDATA,
61     KLDataTypeTest = 254 | TYPEDATA,
62 };
63 enum enKLDataCounts
64 {
65     KLDataDTCount = 256,
66     KLDataSDTCount = 256,
67
68     KLDataWXCount = 16,
69     KLDataWYCount = 16,
70     KLDataWRCount = 16,
71     KLDataLDCount = 64,
72     KLDataWLCount = 8,
73
74     KLCoilXCount = KLDataWXCount * 16,
75     KLCoilYCount = KLDataWYCount * 16,
76     KLCoilRCount = KLDataWRCount * 16,
77
78     KLCoilTCount = 64,
79     KLCoilCCount = KLCoilTCount,
80     KLDataSVCount = KLCoilTCount,
81     KLDataEVCount = KLCoilTCount,
82
83     KLCoilLXCount = 128,
84     KLCoilLYCount = 128,
85     KLCoilLRCount = 128,
86     KLCoilSRCount = 128,
87
88
89 };
90
91 enum enInputFilter
92 {
93     InputFilter_None = 0,
94     InputFilter_1mS = 1,
95     InputFilter_2mS = 2,
96     InputFilter_4mS = 3,
97     InputFilter_8mS = 4,
98     InputFilter_16mS = 5,
99     InputFilter_32mS = 6,
100     InputFilter_64mS = 7,
101     InputFilter_128mS = 8,
102     InputFilter_256mS = 9,
103 };
104
105 enum enOutputHold
106 {
107     Output_Hold = 0,
108     Output_Set_0 = 1,
109     Output_Set_1 = 2,
110 };
111
112 enum enPortType
113 {
114     PortType_Com = 0,    //¼ÆËã»úͨѶ
115     PortType_Gen = 1,    //ͨÓÃͨѶ£¬×ÔÓÉ¿Ú
116     PortType_KLink = 2, //KlinkͨѶ
117     PortType_KBus = 3,     //KBusͨѶ
118     PortType_KNet = 4,     // KNetͨѶ
119     PortType_ModbusRTU = 5, //Modbus RTU Í¨Ñ¶
120 };
121
122 enum enKeventType
123 {
124     EventTypeNone = 0,
125     EventTypePowerUp = 1,
126     EventTypePowerDown = 2,
127     EventTypePowerRecover = 3,
128     EventTypeConnected = 4,
129     EventTypeLostCon = 5,
130     EventTypeSetTime = 6,
131     EventTypeSysCfg = 7,
132     EventTypeProg = 8,
133     EventTypeForce = 9,
134     EventTypeClearEvent = 10,
135
136
137     EventType
138 };
139
140 typedef struct tagInfoBlock // 20 bytes
141 {
142     //    USHORT nBlockLenth;
143     USHORT nDeviceTypeVer;            //device type        x.y
144 //    UCHAR nDevierVer;
145     USHORT nProgVer;                    //prog version    x.y
146     USHORT nKLinkVer;                //x.y
147     USHORT nKBusVer;                //x.y
148 //    USHORT nKNetVer;                //x.y
149 //    USHORT nKWLVer;                    //x.y
150
151     UCHAR nCapacity1;                //    ? K
152     UCHAR nCapacity2;                //    ? k
153
154     UCHAR nDInput;
155     UCHAR nDOutput;
156     UCHAR nAInput;
157     UCHAR nAOutput;
158     UCHAR nHInput;
159     UCHAR nHOutput;
160     UCHAR nExt1;
161     UCHAR nExt2;
162     UCHAR nLogSize;
163     UCHAR nPorts;
164     UCHAR nManSize;
165     UCHAR nAbility;
166     UCHAR nSwitchBits;
167
168 }stKMInfoBlock, *pKMInfoBlock;
169
170 typedef struct tagFactoryData        //¹¤³§Á¿²ú²ÎÊý£¬Êý¾Ý
171 {
172     USHORT Sign1;
173     USHORT Seq1;
174     USHORT nModelNo;
175     USHORT nModelVer;
176     UINT nLotNo;
177     UINT nProductDateTime;
178     UINT SN1;
179     UINT nProtocalVer;
180     UINT nDefaultFunc;
181     UCHAR ModelStr[16];
182     UCHAR LOT_NO[16];            //
183     UCHAR SNStr[16];
184     unsigned short CRC1;
185     unsigned short EndSign1;
186
187 }stFactoryData, *pFactoryData;
188
189
190 typedef struct tagKMFuncParam
191 {
192     USHORT EnablePLC : 1;        //使能内部PLC功能
193     USHORT RunMode;                //工作模式
194 }stKMFuncParam;
195
196 //输入输出地址映射
197 typedef struct tagAddrMapping
198 {
199     USHORT InputAddr;
200     USHORT OutputAddr;
201     USHORT WRAddr;
202     USHORT DTAddr;
203 }stAddrMapping;
204
205 typedef struct tagComPortParam            //4 Bytes
206 {
207     USHORT WorkMode;                /* 0-5=Default,KLink,KBus,KNet,RTU,Com,Gen */
208     USHORT Station;                    /* 0=From jumper */
209     USHORT BaudRate;       /* =*100 Baudrate at which running       */
210     USHORT ByteSize : 2;        /* 0-1=Number of bits/byte, 7-8    */
211     USHORT Parity : 4;                    /* 0-4=None,Odd,Even,Mark,Space    */
212     USHORT StopBits : 2;        /* 0,1,2 = 1, 1.5, 2               */
213     USHORT EndType : 2;                    /* 0=ByChar, 1= ByTime */
214     USHORT EofChar : 4;         /* 0,1,2 = None, CR, CR+LF, ETX;  End of character  */
215     USHORT SofChar : 2;                    /* 0,1,2 = None, STX */
216     USHORT EndTime;                        /*(*0.01mS) */
217     USHORT RecvAddr;
218     USHORT RecvSize;
219
220 }stComPortParam, *pstComPortParam;
221
222
223 typedef struct tagInputFilterParam
224 {
225     BYTE Filter0 : 4;
226     BYTE Filter1 : 4;
227
228 }stInputFilterParam;
229
230 typedef struct tagOutputHoldParam
231 {
232     BYTE Hold1 : 4;
233     BYTE Hold2 : 4;
234 }stOutputHoldParam;
235 // 硬件描述文件
236
237 //#pragma pack(2)
238 typedef struct tagKMSysCfg        //120 Bytes total
239 {
240     USHORT Version;                        // SC0    // 2 Bytes
241     USHORT workmode;                    // SC1  // 2 Bytes 0=From jumper  
242     USHORT SwitchFunc;                    // SC2  // 2 Bytes 
243     USHORT Space1;                        // 2 bytes
244
245     stComPortParam PortParams[2];                    // 28 Bytes
246     stInputFilterParam InputParams[16];                //8 Bytes
247     stOutputHoldParam OutputParams[16];                //16 Bytes
248     USHORT OutMappings[6];                //12 Bytes //输出映射
249
250     UINT Space2[12];                                //48 bytes
251
252 }stKMSysCfg, *pKMSysCfg;
253
254
255 typedef struct tagTimer
256 {
257     unsigned int LastActTime;
258     union {
259         unsigned short StatByte;
260         struct
261         {
262             unsigned short nScale : 2;    //Time Scale, 0:1ms 1:10ms 2:100ms 3:1S
263             unsigned short nType : 1;        //0 : timer 1    :    counter ;
264             unsigned short nDir : 1;        //0 : count down. 1 count up;
265             unsigned short nInited : 1;
266             unsigned short bSet : 1;
267             unsigned short bTon : 1;
268
269         };
270         //        stTimerStat Stat;
271     };
272 }stTimer;
273
274 typedef struct tagKMem
275 {
276     unsigned short WDFs[TOTAL_WDFS];
277     unsigned char CurVALs[TOTAL_CurVAL];
278     unsigned char CurVAL;
279
280     stTimer Timers[TOTALTIMERS];
281
282     unsigned short WX[KLDataWXCount];        //
283     unsigned short WY[KLDataWYCount];        //
284     unsigned short WR[KLDataWRCount];
285     unsigned short WT[16];
286
287     unsigned short WC[16];
288     unsigned short EV[KLDataEVCount];
289     unsigned short SV[KLDataSVCount];
290
291     unsigned short WLX[16];        //
292     unsigned short WLY[16];
293     unsigned short WLR[16];
294     unsigned short WSR[16];
295     unsigned short DT[KLDataDTCount];
296
297     union {
298         unsigned int SDD[KLDataSDTCount / 2];
299         unsigned short SDT[KLDataSDTCount];
300         unsigned char SDB[KLDataSDTCount * 2];
301         struct {
302             unsigned int EffJumperSW;
303             unsigned int CurJumperSW;
304             unsigned int haltick;
305             unsigned int nRunCount;
306             unsigned int RunStat;
307             unsigned int ErrStat;
308             unsigned int PwrOnCount;
309             unsigned int ThisRunTime;
310             unsigned int TotalRunTime;
311             unsigned int CurTimeSec;
312             unsigned int PwrFailCount;
313             unsigned int LastPwrFailTime;
314             unsigned int LastScanTime;
315             unsigned int ScanTimeuS;
316             unsigned int MinScanTimeuS;
317             unsigned int MaxScanTimeuS;
318             unsigned int nEventCount;
319             unsigned int nEventMinIndex;
320             unsigned int nEventMaxIndex;
321             unsigned int Rev2[5];
322             unsigned short ADCValues[20];
323         };
324     };
325     int Reserverd5[1024];
326 }stKMem;
327
328
329 enum enOpType
330 {
331     OP_NONE = 0,
332     OP_NOP = 0,
333     OP_ST = 1,        //
334     OP_ST_ = 2,        //
335     OP_AN = 3,        //
336     OP_AN_ = 4,        //
337     OP_OR = 5,        //
338     OP_OR_ = 6,        //
339     OP_NOT = 7,        //
340     OP_ANS = 8,    //
341     OP_ORS = 9,    //
342
343     OP_PSHS = 10,    //
344     OP_RDS = 11,        //
345     OP_POPS = 12,    //
346
347     OP_OUT = 16,        //
348     OP_SET = 17,    //
349     OP_RESET = 18,    //
350     OP_DF = 19,        //
351     OP_DF_ = 20,    //
352
353     OP_ST_EQ,    //
354     OP_ST_LT,    //
355     OP_ST_GT,    //
356     OP_ST_LE,    //
357     OP_ST_GE,        //
358     OP_ST_NE,        //
359     OP_AN_EQ,        //
360     OP_AN_LT,        //
361     OP_AN_GT,
362     OP_AN_LE,
363     OP_AN_GE,
364     OP_AN_NE,
365     OP_OR_EQ,
366     OP_OR_LT,
367     OP_OR_GT,
368     OP_OR_LE,
369     OP_OR_GE,
370     OP_OR_NE,
371
372
373     OP_MV = 51,
374     OP_INC = 52,
375     OP_ADD2 = 53,
376     OP_ADD3 = 54,
377     OP_DEC = 55,
378     OP_SUB2 = 56,
379     OP_SUB3 = 57,
380     OP_MUL = 58,
381     OP_DIV = 59,
382     OP_BKMV = 60,
383     OP_COPY = 61,
384     OP_CLR = 62,
385
386     OP_BRK,
387     OP_PAUSE,
388     OP_JP,
389     OP_CALL,
390
391     OP_TML = 0xC8,    //
392     OP_TMR = 0xDC,    //
393     OP_TMX = 0xDD,    //
394     OP_TMY = 0xFA,    //
395
396 };
397
398 typedef struct stBinProg1
399 {
400     unsigned char nOp;
401     unsigned char nParamType;
402     unsigned short nParamAddr;
403 }stBinProg1;
404 typedef struct stBinProg15
405 {    //定时器
406     //单参数高级指令
407     unsigned char nOp;
408     unsigned char nOpNum;
409     unsigned short nParamAddr1;
410     unsigned char nParamType1;
411     unsigned char resvr1;
412     unsigned short resvr2;
413 }stBinProg15;
414 typedef struct stBinProg2
415 {    //比较指令
416     //双参数高级指令
417     unsigned char nOp;
418     unsigned char nOpNum;
419     unsigned short nParamAddr1;
420     unsigned char nParamType1;
421     unsigned char nParamType2;
422     unsigned short nParamAddr2;
423 }stBinProg2;
424 typedef struct stBinProg3
425 {    //三参数高级指令
426     unsigned char nOp;
427     unsigned char nOpNum;
428     unsigned short nParamAddr1;
429     unsigned char nParamType1;
430     unsigned char nParamType2;
431     unsigned short nParamAddr2;
432     unsigned char resvr1;
433     unsigned char nParamType3;
434     unsigned short nParamAddr3;
435 }stBinProg3;
436