hsu han-lin
/
Modbus_Test
from Cam Marshall original modbus
Fork of Modbus by
Revision 7:44579368875a, committed 2017-03-30
- 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; } } }