| | |
| | | #include "GlobalDef.h"
|
| | | #include "KMachine.h"
|
| | |
|
| | |
|
| | | #define TOTAL_WDFS (16) //Total DF Count
|
| | | #define TOTAL_CurVAL (8) //
|
| | |
|
| | | //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
|
| | |
| | |
|
| | | #pragma anon_unions
|
| | |
|
| | | typedef struct tagTimerStat
|
| | | typedef struct tagPLCMem
|
| | | {
|
| | | 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;
|
| | | int bPLCRunning;
|
| | | int nScanCount;
|
| | | char ProgTrace[512];
|
| | |
|
| | | }stTimerStat;
|
| | | }stPLCMem;
|
| | | extern stPLCMem PLCMem;
|
| | |
|
| | | typedef struct tagTimer
|
| | | int InitPLC(void);
|
| | | int StartPLC(void);
|
| | | int StopPLC(void);
|
| | |
|
| | | enum enPLCOPs
|
| | | {
|
| | | unsigned short SV;
|
| | | unsigned short EV;
|
| | | 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;
|
| | | 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 stPLCPROG const prog1[];
|
| | | |
| | | 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 WR[64];
|
| | | //extern unsigned short DT[256];
|
| | | //extern unsigned short SDT[256];
|
| | | extern const unsigned short bitMasks[16];
|
| | | //extern const unsigned short bitMasks[16];
|
| | | //extern stTimer Timers[TOTALTIMERS];
|
| | |
|
| | | ///*
|
| | |
|
| | | typedef struct tagPLCMem
|
| | | {
|
| | | unsigned short WDFs[TOTAL_WDFS];
|
| | | unsigned char CurVALs[TOTAL_CurVAL];
|
| | | unsigned char CurVAL;
|
| | | stTimer Timers[TOTALTIMERS];
|
| | | |
| | | }stPLCMem;
|
| | |
|
| | | extern stPLCMem PLCMem;
|
| | | //*/
|
| | |
|
| | | int InitTimer(int nIndex, int nType);
|
| | | int StartTimer(int nIndex , int SV);
|
| | | int RunTimer(int nIndex , int SV);
|
| | | int StopTimer(int nIndex);
|
| | | int ResetTimer(int nIndex);
|
| | | int SetTimerValue(int nIndex, int bSet, int SV);
|
| | |
| | | int PushInVal(void);
|
| | | int PopOutVal(void);
|
| | |
|
| | |
|
| | | enum enPLCOPs
|
| | | {
|
| | | OP_None =0,
|
| | | OP_ST=1,
|
| | | OP_ST_=2,
|
| | | OP_AN=3,
|
| | | OP_AN_=4,
|
| | | OP_OR=5,
|
| | | OP_OR_=6,
|
| | | OP_NOT=7,
|
| | | |
| | | OP_PSHS =8,
|
| | | OP_POPS =9,
|
| | |
|
| | | OP_ANS=10,
|
| | | OP_ORS=11,
|
| | |
|
| | | OP_OUT=16,
|
| | | OP_SET=17,
|
| | | OP_RESET=18,
|
| | | OP_DF=19,
|
| | | OP_DF_=20,
|
| | | |
| | | OP_TML=0xC8,
|
| | | OP_TMR=0xDC,
|
| | | OP_TMX=0xDD,
|
| | | OP_TMY=0xFA,
|
| | | |
| | | };
|
| | |
|
| | | enum enAddrTypes
|
| | | {
|
| | | Addr_None =0,
|
| | | Addr_X =1,
|
| | | Addr_Y =2,
|
| | | Addr_R =3,
|
| | | Addr_T =4,
|
| | | Addr_L =5,
|
| | | Addr_ =6,
|
| | |
|
| | | };
|
| | |
|
| | | int ProcessPLCPROG(const stPLCPROG * prog,int nSize);
|
| | | int ProcessPLCBinProg(const stBinProg1 * pBinprog, int nSize);
|
| | | //int ProcessPLCPROG(const stBinProg1 * prog,int nSize);
|
| | |
|
| | |
|
| | |
|