/* */ #pragma once #define TYPECOIL 0x00 #define TYPEDATA 0x80 #define TOTAL_WDFS (16) //Total DF Count #define TOTAL_CurVAL (16) // //extern unsigned short X[256]; //extern unsigned short Y[256]; //extern unsigned short R[256]; #define TOTALTIMERS (64) #define TICK_OF_MS (10) //1ms #define TICK_OF_RS (100) //10mS #define TICK_OF_XS (1000) //100mS #define TICK_OF_YS (10000) //1S enum enKLCoilTypes { KLCoilTypeX = 0 | TYPECOIL, //X Input KLCoilTypeY = 1 | TYPECOIL, //Y Output KLCoilTypeR = 2 | TYPECOIL, //R register KLCoilTypeLX = 3 | TYPECOIL, //Link register KLCoilTypeLY = 4 | TYPECOIL, //Link register KLCoilTypeT = 5 | TYPECOIL, //Timer KLCoilTypeC = 6 | TYPECOIL, //Counter KLCoilTypeLR = 7 | TYPECOIL, //Link register KLCoilTypeSR = 8 | TYPECOIL, //Link register }; enum enKLDataTypes { KLDataTypeDEC = 0 | TYPEDATA, KLDataTypeHEX = 1 | TYPEDATA, KLDataTypeFloat = 2 | TYPEDATA, KLDataTypeWX = 3 | TYPEDATA, KLDataTypeWY = 4 | TYPEDATA, KLDataTypeWR = 5 | TYPEDATA, KLDataTypeWLX = 6 | TYPEDATA, KLDataTypeWLY = 7 | TYPEDATA, KLDataTypeDT = 8 | TYPEDATA, KLDataTypeSDT = 9 | TYPEDATA, KLDataTypeWSR = 10 | TYPEDATA, KLDataTypeSV = 11 | TYPEDATA, KLDataTypeEV = 12 | TYPEDATA, KLDataTypeLD = 13 | TYPEDATA, KLDataSysCfg = 25 | TYPEDATA, KLDataTypeFlash = 33 | TYPEDATA, KLDataTypeTest = 254 | TYPEDATA, }; enum enKLDataCounts { KLDataDTCount = 256, KLDataSDTCount = 256, KLDataWXCount = 16, KLDataWYCount = 16, KLDataWRCount = 16, KLDataLDCount = 64, KLDataWLCount = 8, KLCoilXCount = KLDataWXCount * 16, KLCoilYCount = KLDataWYCount * 16, KLCoilRCount = KLDataWRCount * 16, KLCoilTCount = 64, KLCoilCCount = KLCoilTCount, KLDataSVCount = KLCoilTCount, KLDataEVCount = KLCoilTCount, KLCoilLXCount = 128, KLCoilLYCount = 128, KLCoilLRCount = 128, KLCoilSRCount = 128, }; enum enInputFilter { InputFilter_None = 0, InputFilter_1mS = 1, InputFilter_2mS = 2, InputFilter_4mS = 3, InputFilter_8mS = 4, InputFilter_16mS = 5, InputFilter_32mS = 6, InputFilter_64mS = 7, InputFilter_128mS = 8, InputFilter_256mS = 9, }; enum enOutputHold { Output_Hold = 0, Output_Set_0 = 1, Output_Set_1 = 2, }; enum enPortType { PortType_Com = 0, //¼ÆËã»úͨѶ PortType_Gen = 1, //ͨÓÃͨѶ£¬×ÔÓÉ¿Ú PortType_KLink = 2, //KlinkͨѶ PortType_KBus = 3, //KBusͨѶ PortType_KNet = 4, // KNetͨѶ PortType_ModbusRTU = 5, //Modbus RTU ͨѶ }; enum enKeventType { EventTypeNone = 0, EventTypePowerUp = 1, EventTypePowerDown = 2, EventTypePowerRecover = 3, EventTypeConnected = 4, EventTypeLostCon = 5, EventTypeSetTime = 6, EventTypeSysCfg = 7, EventTypeProg = 8, EventTypeForce = 9, EventTypeClearEvent = 10, EventType }; typedef struct tagInfoBlock { USHORT nDeviceType; USHORT ProgVer; USHORT KlinkVer; USHORT nCapacity; UCHAR nDInput; UCHAR nDOutput; UCHAR nAInput; UCHAR nAOutput; UCHAR nHInput; UCHAR nHOutput; UCHAR nExt1; UCHAR nEXT2; }stKMInfoBlock; typedef struct tagKMFuncParam { USHORT EnablePLC : 1; //使能内部PLC功能 USHORT RunMode; //工作模式 }stKMFuncParam; //输入输出地址映射 typedef struct tagAddrMapping { USHORT InputAddr; USHORT OutputAddr; USHORT WRAddr; USHORT DTAddr; }stAddrMapping; typedef struct tagComPortParam { USHORT PortType : 4; /* 0-5=Com,Gen,KLink,KBus,KNet,RTU */ USHORT ByteSize : 2; /* 0-1=Number of bits/byte, 7-8 */ USHORT Parity : 4; /* 0-4=None,Odd,Even,Mark,Space */ USHORT StopBits : 2; /* 0,1,2 = 1, 1.5, 2 */ USHORT EofChar : 2; /* 0,1,2 = None, CR, CR+LF, ETX; End of character */ USHORT SofChar : 2; /* 0,1,2 = None, STX */ USHORT BaudRate; /* =*100 Baudrate at which running */ }stComPortParam; typedef struct tagInputFilterParam { BYTE Filter0 : 4; BYTE Filter1 : 4; }stInputFilterParam; typedef struct tagOutputHoldParam { BYTE Hold1 : 4; BYTE Hold2 : 4; }stOutputHoldParam; // 硬件描述文件 typedef struct tagMSysCfg { unsigned short Sign1; //2 unsigned short Seq1; //2 UINT cfgvar2; //4 stComPortParam Ports[2]; //2*4B stOutputHoldParam OutputParams[16]; //16B stInputFilterParam InputParams[16]; //16B UINT cfgvar3; UINT cfgvar4; UINT cfgvar5; UINT cfgvar6; UINT cfgvar7; UINT cfgvar8; UINT cfgvar9; UINT cfgvar10; UINT cfgvar11; UINT cfgvar12; UINT cfgvar13; UINT cfgvar14; UINT cfgvar15; UINT cfgvar16; //14*4 56B UINT Space1[5]; // 20B unsigned short CRC1; //2B unsigned short EndSign1; //2B }stKMSysCfg, *pKMSysCfg; //128B typedef struct tagTimer { unsigned int LastActTime; union { unsigned short StatByte; struct { unsigned short nScale : 2; //Time Scale, 0:1ms 1:10ms 2:100ms 3:1S unsigned short nType : 1; //0 : timer 1 : counter ; unsigned short nDir : 1; //0 : count down. 1 count up; unsigned short nInited : 1; unsigned short bSet : 1; unsigned short bTon : 1; }; // stTimerStat Stat; }; }stTimer; typedef struct tagKMem { unsigned short WDFs[TOTAL_WDFS]; unsigned char CurVALs[TOTAL_CurVAL]; unsigned char CurVAL; stTimer Timers[TOTALTIMERS]; unsigned short WX[KLDataWXCount]; // unsigned short WY[KLDataWYCount]; // unsigned short WR[KLDataWRCount]; unsigned short WT[16]; unsigned short WC[16]; unsigned short EV[KLDataEVCount]; unsigned short SV[KLDataSVCount]; unsigned short WLX[16]; // unsigned short WLY[16]; unsigned short WLR[16]; unsigned short WSR[16]; unsigned short DT[KLDataDTCount]; union { unsigned int SDD[KLDataSDTCount / 2]; unsigned short SDT[KLDataSDTCount]; unsigned char SDB[KLDataSDTCount * 2]; struct { unsigned int EffJumperSW; unsigned int CurJumperSW; unsigned int haltick; unsigned int nRunCount; unsigned int RunStat; unsigned int ErrStat; unsigned int PwrOnCount; unsigned int ThisRunTime; unsigned int TotalRunTime; unsigned int CurTimeSec; unsigned int PwrFailCount; unsigned int LastPwrFailTime; unsigned int LastScanTime; unsigned int ScanTimeuS; unsigned int MinScanTimeuS; unsigned int MaxScanTimeuS; unsigned int nEventCount; unsigned int nEventMinIndex; unsigned int nEventMaxIndex; unsigned int Rev2[5]; unsigned short ADCValues[20]; }; }; int Reserverd5[1024]; }stKMem; enum enOpType { OP_NONE = 0, OP_NOP = 0, OP_ST = 1, // OP_ST_ = 2, // OP_AN = 3, // OP_AN_ = 4, // OP_OR = 5, // OP_OR_ = 6, // OP_NOT = 7, // OP_ANS = 8, // OP_ORS = 9, // OP_PSHS = 10, // OP_RDS = 11, // OP_POPS = 12, // OP_OUT = 16, // OP_SET = 17, // OP_RESET = 18, // OP_DF = 19, // OP_DF_ = 20, // OP_ST_EQ, // OP_ST_LT, // OP_ST_GT, // OP_ST_LE, // OP_ST_GE, // OP_ST_NE, // OP_AN_EQ, // OP_AN_LT, // OP_AN_GT, OP_AN_LE, OP_AN_GE, OP_AN_NE, OP_OR_EQ, OP_OR_LT, OP_OR_GT, OP_OR_LE, OP_OR_GE, OP_OR_NE, OP_MV = 51, OP_INC = 52, OP_ADD2 = 53, OP_ADD3 = 54, OP_DEC = 55, OP_SUB2 = 56, OP_SUB3 = 57, OP_MUL = 58, OP_DIV = 59, OP_BKMV = 60, OP_COPY = 61, OP_CLR = 62, OP_BRK, OP_PAUSE, OP_JP, OP_CALL, OP_TML = 0xC8, // OP_TMR = 0xDC, // OP_TMX = 0xDD, // OP_TMY = 0xFA, // }; typedef struct stBinProg1 { unsigned char nOp; unsigned char nParamType; unsigned short nParamAddr; }stBinProg1; typedef struct stBinProg15 { //定时器 //单参数高级指令 unsigned char nOp; unsigned char nOpNum; unsigned short nParamAddr1; unsigned char nParamType1; unsigned char resvr1; unsigned short resvr2; }stBinProg15; typedef struct stBinProg2 { //比较指令 //双参数高级指令 unsigned char nOp; unsigned char nOpNum; unsigned short nParamAddr1; unsigned char nParamType1; unsigned char nParamType2; unsigned short nParamAddr2; }stBinProg2; typedef struct stBinProg3 { //三参数高级指令 unsigned char nOp; unsigned char nOpNum; unsigned short nParamAddr1; unsigned char nParamType1; unsigned char nParamType2; unsigned short nParamAddr2; unsigned char resvr1; unsigned char nParamType3; unsigned short nParamAddr3; }stBinProg3;