From eb4ffba9f16634e6f8144b9e85a0291e1cb8dfba Mon Sep 17 00:00:00 2001
From: QuakeGod <QuakeGod@sina.com>
Date: 星期一, 17 十月 2022 23:04:14 +0800
Subject: [PATCH] fix KNet

---
 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