/* */ #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 KLCoilTypeP = 9 | TYPECOIL, //P register KLCoilTypeE = 10 | TYPECOIL, //E 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, KLDataTypeWDT = 41 | TYPEDATA, KLDataTypeKBD = 51 | 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 // 20 bytes { // USHORT nBlockLenth; USHORT nDeviceTypeVer; //device type x.y // UCHAR nDevierVer; USHORT nProgVer; //prog version x.y USHORT nKLinkVer; //x.y USHORT nKBusVer; //x.y // USHORT nKNetVer; //x.y // USHORT nKWLVer; //x.y UCHAR nCapacity1; // ? K UCHAR nCapacity2; // ? k UCHAR nDInput; UCHAR nDOutput; UCHAR nAInput; UCHAR nAOutput; UCHAR nHInput; UCHAR nHOutput; UCHAR nExt1; UCHAR nExt2; UCHAR nLogSize; UCHAR nPorts; UCHAR nManSize; UCHAR nAbility; UCHAR nSwitchBits; }stKMInfoBlock, *pKMInfoBlock; typedef struct tagFactoryData //¹¤³§Á¿²ú²ÎÊý£¬Êý¾Ý { USHORT Sign1; USHORT Seq1; USHORT nModelNo; USHORT nModelVer; UINT nLotNo; UINT nProductDateTime; UINT SN1; UINT nProtocalVer; UINT nDefaultFunc; UCHAR ModelStr[16]; UCHAR LOT_NO[16]; // UCHAR SNStr[16]; unsigned short CRC1; unsigned short EndSign1; }stFactoryData, *pFactoryData; 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 //4 Bytes { USHORT WorkMode; /* 0-5=Default,KLink,KBus,KNet,RTU,Com,Gen */ USHORT Station; /* 0=From jumper */ USHORT BaudRate; /* =*100 Baudrate at which running */ 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 EndType : 2; /* 0=ByChar, 1= ByTime */ USHORT EofChar : 4; /* 0,1,2 = None, CR, CR+LF, ETX; End of character */ USHORT SofChar : 2; /* 0,1,2 = None, STX */ USHORT EndTime; /*(*0.01mS) */ USHORT RecvAddr; USHORT RecvSize; }stComPortParam, *pstComPortParam; typedef struct tagInputFilterParam { BYTE Filter0 : 4; BYTE Filter1 : 4; }stInputFilterParam; typedef struct tagOutputHoldParam { BYTE Hold1 : 4; BYTE Hold2 : 4; }stOutputHoldParam; // 硬件描述文件 //#pragma pack(2) typedef struct tagKMSysCfg //120 Bytes total { USHORT Version; // SC0 // 2 Bytes USHORT workmode; // SC1 // 2 Bytes 0=From jumper USHORT SwitchFunc; // SC2 // 2 Bytes USHORT Space1; // 2 bytes stComPortParam PortParams[2]; // 28 Bytes stInputFilterParam InputParams[16]; //8 Bytes stOutputHoldParam OutputParams[16]; //16 Bytes USHORT OutMappings[6]; //12 Bytes //输出映射 UINT Space2[12]; //48 bytes }stKMSysCfg, *pKMSysCfg; 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;