From ea83fa3e67ec0f8a6b8e3f70b63509f1483be25a Mon Sep 17 00:00:00 2001 From: QuakeGod <QuakeGod@sina.com> Date: 星期一, 17 十月 2022 02:28:53 +0800 Subject: [PATCH] Merge branch 'dev1' of file://hasee-k680e/GitBase/F030C8xx_KLink into dev1 --- Inc/PLCfunctions.h | 220 +++++++++++++++++++++++++++++++----------------------- 1 files changed, 125 insertions(+), 95 deletions(-) diff --git a/Inc/PLCfunctions.h b/Inc/PLCfunctions.h index d62fdf7..4a9c35d 100644 --- a/Inc/PLCfunctions.h +++ b/Inc/PLCfunctions.h @@ -10,15 +10,6 @@ #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 @@ -26,49 +17,138 @@ #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]; @@ -78,23 +158,16 @@ //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); @@ -106,51 +179,8 @@ 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_RDS = 9, - OP_POPS =10, - - OP_ANS=11, - OP_ORS=12, - - 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); -- Gitblit v1.9.1