/** ****************************************************************************** * @file : PLCfunctions.h * @brief : Header for PLCfunctions.c file. * This file contains the user functions defines of the application. ****************************************************************************** */ #ifndef __PLCFUNCTIONS_H__ #define __PLCFUNCTIONS_H__ #include "GlobalDef.h" #include "KMachine.h" #define TICK_OF_MS (10) //1ms #define TICK_OF_RS (100) //10mS #define TICK_OF_XS (1000) //100mS #define TICK_OF_YS (10000) //1S #pragma anon_unions typedef struct tagPLCMem { int bPLCRunning; int nScanCount; char ProgTrace[512]; }stPLCMem; extern stPLCMem PLCMem; int InitPLC(void); int StartPLC(void); int StopPLC(void); enum enPLCOPs { 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 tagPLCPROG { unsigned char OP; unsigned char AddrType; unsigned short Addr; }stPLCPROG; */ 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; extern stBinProg1 const prog1[]; extern int nSizeProg1; //extern unsigned char CurVAL; //extern unsigned char CurVALs[TOTAL_CurVAL]; //extern unsigned short DFs[TOTAL_WDFS]; //extern unsigned short WX[13]; //extern unsigned short WY[13]; //extern unsigned short WR[64]; //extern unsigned short DT[256]; //extern unsigned short SDT[256]; //extern const unsigned short bitMasks[16]; //extern stTimer Timers[TOTALTIMERS]; ///* //*/ int InitTimer(int nIndex, int nType); int RunTimer(int nIndex , int SV); int StopTimer(int nIndex); int ResetTimer(int nIndex); int SetTimerValue(int nIndex, int bSet, int SV); int ProcessTimer(int nIndex); int IsTimerOn(int nIndex); int GetTimerSV(int nIndex); int GetTimerEV(int nIndex); int PushInVal(void); int PopOutVal(void); int ProcessPLCBinProg(const stBinProg1 * pBinprog, int nSize); //int ProcessPLCPROG(const stBinProg1 * prog,int nSize); #endif /* __PLCFUNCTIONS_H__ */