| | |
| | | #include "GlobalDef.h" |
| | | #include "KMachine.h" |
| | | |
| | | #if (ENABLE_PLC) |
| | | |
| | | #define TICK_OF_MS (10) //1ms |
| | | #define TICK_OF_RS (100) //10mS |
| | | #define TICK_OF_XS (1000) //100mS |
| | | #define TICK_OF_YS (10000) //1S |
| | | |
| | | #define TOTAL_WDFS (32) //Total DF Count |
| | | #define TOTAL_CurVAL (16) // |
| | | #define TOTALTIMERS (64) |
| | | |
| | | #define PLC_PROGRAM_USE_BANK 1 |
| | | |
| | | typedef struct tagTimerStat |
| | | { |
| | | 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; |
| | | |
| | | 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; |
| | | |
| | | #pragma anon_unions |
| | | |
| | |
| | | { |
| | | int bPLCRunning; |
| | | int nScanCount; |
| | | unsigned short WDFs[TOTAL_WDFS]; |
| | | unsigned char CurVALs[TOTAL_CurVAL]; |
| | | unsigned char CurVAL; |
| | | stTimer Timers[TOTALTIMERS]; |
| | | unsigned short WT[16]; |
| | | |
| | | unsigned short WC[16]; |
| | | unsigned short EV[KLDataEVCount]; |
| | | unsigned short SV[KLDataSVCount]; |
| | | |
| | | unsigned short ProgTrace[256]; |
| | | |
| | | }stPLCMem; |
| | | extern stPLCMem PLCMem; |
| | | |
| | | int InitPLC(void); |
| | | int StartPLC(void); |
| | | int StopPLC(void); |
| | | |
| | | enum enPLCOPs |
| | | { |
| | |
| | | OP_PAUSE, |
| | | OP_JP, |
| | | OP_CALL, |
| | | OP_RET, |
| | | |
| | | OP_TML = 0xC8, // |
| | | OP_TMR = 0xDC, // |
| | | OP_TMX = 0xDD, // |
| | | OP_TMY = 0xFA, // |
| | | |
| | | OP_END = 0xFF, |
| | | |
| | | }; |
| | | /* |
| | |
| | | unsigned short Addr; |
| | | }stPLCPROG; |
| | | */ |
| | | typedef struct stBinProg1 |
| | | typedef struct stBinInstrcn1 |
| | | { |
| | | unsigned char nOp; |
| | | unsigned char nParamType; |
| | | unsigned short nParamAddr; |
| | | }stBinProg1; |
| | | typedef struct stBinProg15 |
| | | }stBinInstrcn1; |
| | | typedef struct stBinInstrcn15 |
| | | { //??? |
| | | // |
| | | unsigned char nOp; |
| | |
| | | unsigned char nParamType1; |
| | | unsigned char resvr1; |
| | | unsigned short resvr2; |
| | | }stBinProg15; |
| | | typedef struct stBinProg2 |
| | | }stBinInstrcn15; |
| | | typedef struct stBinInstrcn2 |
| | | { //???? |
| | | // |
| | | unsigned char nOp; |
| | |
| | | unsigned char nParamType1; |
| | | unsigned char nParamType2; |
| | | unsigned short nParamAddr2; |
| | | }stBinProg2; |
| | | typedef struct stBinProg3 |
| | | }stBinInstrcn2; |
| | | typedef struct stBinInstrcn3 |
| | | { //??????? |
| | | unsigned char nOp; |
| | | unsigned char nOpNum; |
| | |
| | | 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]; |
| | | |
| | | ///* |
| | | }stBinInstrcn3; |
| | | |
| | | |
| | | //*/ |
| | | typedef struct tagStoredHdr |
| | | { |
| | | unsigned short nBlockSign; |
| | | unsigned char nBlockType; |
| | | unsigned char nSeq; |
| | | unsigned short nSize; |
| | | unsigned short nCRC2; |
| | | }stStoredHdr; |
| | | |
| | | |
| | | /* |
| | | typedef struct tagBinProgs |
| | | { |
| | | unsigned short nSteps; |
| | | unsigned short nOptions; |
| | | stBinInstrcn1 BinInstrcns[1]; |
| | | }stBinProgs, *pstBinProgs; |
| | | */ |
| | | typedef struct tagStoredBinProgs |
| | | { |
| | | stStoredHdr StoredHdr; |
| | | stBinInstrcn1 BinInstrcns[1]; |
| | | |
| | | }stStoredBinProgs, *pstStoredBinProgs; |
| | | |
| | | typedef struct tagStoredAnno |
| | | { |
| | | stStoredHdr StoredHdr; |
| | | unsigned char Annos[1]; |
| | | |
| | | }stStoredAnno, *pstStoredAnno; |
| | | |
| | | //extern stBinInstrcn1 const prog1[]; |
| | | //extern int nSizeProg1; |
| | | extern stPLCMem PLCMem; |
| | | |
| | | |
| | | int InitPLC(void); |
| | | int StartPLC(void); |
| | | int StopPLC(void); |
| | | |
| | | int InitTimer(int nIndex, int nType); |
| | | int RunTimer(int nIndex , int SV); |
| | |
| | | int PushInVal(void); |
| | | int PopOutVal(void); |
| | | |
| | | int ProcessPLCBinProg(const stBinProg1 * pBinprog, int nSize); |
| | | //int ProcessPLCPROG(const stBinProg1 * prog,int nSize); |
| | | int ProcessPLCBinProg(const stBinInstrcn1 * pBinProg, int nSize); |
| | | //int ProcessPLCPROG(const stBinInstrcn1 * prog,int nSize); |
| | | |
| | | |
| | | #endif // (ENABLE_PLC) |
| | | |
| | | #endif /* __PLCFUNCTIONS_H__ */ |