from Cam Marshall original modbus

Dependencies:   mbed

Fork of Modbus by Cam Marshall

Files at this revision

API Documentation at this revision

Comitter:
stanley1228
Date:
Thu Mar 30 23:20:29 2017 +0800
Parent:
6:c3eaa87a6b3e
Child:
8:924d128c1722
Commit message:
1.change all data to holding register

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed Mar 22 22:37:25 2017 +0800
+++ b/main.cpp	Thu Mar 30 23:20:29 2017 +0800
@@ -31,13 +31,13 @@
 Serial pc(USBTX, USBRX);  //stanley
 
 /* ----------------------- Defines ------------------------------------------*/
-#define REG_INPUT_START (3001)
-#define REG_INPUT_NREGS 15
+#define REG_INPUT_START (3001)  //not use now stanley
+#define REG_INPUT_NREGS 15		//not use now stanley
 #define REG_HOLDING_START (4001)
-#define REG_HOLDING_NREGS 6
+#define REG_HOLDING_NREGS 28
 
 #define SLAVE_ID 0x0A
-
+#define DEF_MAX_AXIS 7
   //==
     //Modbus struct
     //==
@@ -54,17 +54,48 @@
     //public Int16 SpeedRatio; //0~1	1	
 
 enum{
-	DEF_RHI_TARGET_POSX=0,
-	DEF_RHI_TARGET_POSY,
-	DEF_RHI_TARGET_POSZ,
-	DEF_RHI_OPMODE,
-	DEF_RHI_SPPED_RATIO_L,
-	DEF_RHI_SPPED_RATIO_H
+	DEF_INX_TARGET_POSX=0,
+	DEF_INX_TARGET_POSY,
+	DEF_INX_TARGET_POSZ,
+	DEF_INX_OPMODE,
+	DEF_INX_SPPED_RATIO_L,
+	DEF_INX_SPPED_RATIO_H,
+
+	DEF_INX_TARPOS1=6,
+	DEF_INX_TARPOS2,
+	DEF_INX_TARPOS3,
+	DEF_INX_TARPOS4,
+	DEF_INX_TARPOS5,
+	DEF_INX_TARPOS6,
+	DEF_INX_TARPOS7,
+
+	DEF_INX_POSVAL1=13,
+	DEF_INX_POSVAL2,
+	DEF_INX_POSVAL3,
+	DEF_INX_POSVAL4,
+	DEF_INX_POSVAL5,
+	DEF_INX_POSVAL6,
+	DEF_INX_POSVAL7,
+
+	DEF_INX_VELVAL1=20,
+	DEF_INX_VELVAL2,
+	DEF_INX_VELVAL3,
+	DEF_INX_VELVAL4,
+	DEF_INX_VELVAL5,
+	DEF_INX_VELVAL6,
+	DEF_INX_VELVAL7
 };
 
+enum eOPMode
+{
+    JOG,
+    P2P,
+    SEWING,
+    LINE
+};
 /* ----------------------- Static variables ---------------------------------*/
-static USHORT   usRegInputStart = REG_INPUT_START;
-static USHORT   usRegInputBuf[REG_INPUT_NREGS];
+static USHORT   usRegInputStart = REG_INPUT_START; //not use now stanley
+static USHORT   usRegInputBuf[REG_INPUT_NREGS]; //not use now stanley
 
 static USHORT   usRegHoldingStart = REG_HOLDING_START;
 static USHORT   usRegHoldingBuf[REG_HOLDING_NREGS];
@@ -82,22 +113,29 @@
     //eStatus = eMBEnable(  );
     
     // Initialise some registers
-    usRegInputBuf[1] = 0x1234;
-    usRegInputBuf[2] = 0x5678;
-    usRegInputBuf[3] = 0x9abc;  
-	usRegInputBuf[4] = 0x1000;
-    usRegInputBuf[5] = 0x1001;  
-    usRegInputBuf[6] = 0x1002;  
+ //   usRegInputBuf[1] = 0x1234;
+ //   usRegInputBuf[2] = 0x5678;
+ //   usRegInputBuf[3] = 0x9abc;  
+	//usRegInputBuf[4] = 0x1000;
+ //   usRegInputBuf[5] = 0x1001;  
+ //   usRegInputBuf[6] = 0x1002;  
 
-	usRegHoldingBuf[DEF_RHI_TARGET_POSX]=0x0;
-	usRegHoldingBuf[DEF_RHI_TARGET_POSY]=0x1122;
-	usRegHoldingBuf[DEF_RHI_TARGET_POSZ]=0x3344;
-	usRegHoldingBuf[DEF_RHI_OPMODE]=0x2;
-
+	usRegHoldingBuf[DEF_INX_TARGET_POSX]=0;
+	usRegHoldingBuf[DEF_INX_TARGET_POSY]=1000;
+	usRegHoldingBuf[DEF_INX_TARGET_POSZ]=2000;
+	usRegHoldingBuf[DEF_INX_OPMODE]=JOG;
+	
 	float fSpeedRatio=0.345;
 	USHORT* usp=(USHORT*)&fSpeedRatio;
-	usRegHoldingBuf[DEF_RHI_SPPED_RATIO_L]=*usp;
-	usRegHoldingBuf[DEF_RHI_SPPED_RATIO_H]=*(usp+1);
+	usRegHoldingBuf[DEF_INX_SPPED_RATIO_L]=*usp;
+	usRegHoldingBuf[DEF_INX_SPPED_RATIO_H]=*(usp+1);
+
+	for(int i=0;i<DEF_MAX_AXIS;i++)
+	{
+		usRegHoldingBuf[DEF_INX_TARPOS1+i]=500+i;
+		usRegHoldingBuf[DEF_INX_POSVAL1+i]=1000+i;
+		usRegHoldingBuf[DEF_INX_VELVAL1+i]=2000+i;
+	}
 	
 
 	
@@ -110,13 +148,13 @@
 		eStatus=eMBPoll();
 		
         /* Here we simply count the number of poll cycles. */
-        usRegInputBuf[0]++;
+        usRegHoldingBuf[DEF_INX_TARGET_POSX]++;
 		 
 		wait_ms(5);        //stanley
-		if(usRegInputBuf[0]==200)//stanley
+		if(usRegHoldingBuf[DEF_INX_TARGET_POSX]==200)//stanley
 		{
 			myled=!myled;
-			usRegInputBuf[0]=0;
+			usRegHoldingBuf[DEF_INX_TARGET_POSX]=0;
 		}
     }
 }