User Tools

Site Tools


mycnc:host_modbus_api

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
mycnc:host_modbus_api [2018/10/14 18:37] skirillovmycnc:host_modbus_api [2019/08/01 15:26] (current) ivan
Line 10: Line 10:
 | GVAR_XMODBUS_SERVER_ADDR | 5750 | Writing to this register sets **Modbus Server Address** | | GVAR_XMODBUS_SERVER_ADDR | 5750 | Writing to this register sets **Modbus Server Address** |
 | GVAR_XMODBUS_VALUE | 5751 | Writing to this register sets a **Value** that will be sent while **write to Modbus Server** | | GVAR_XMODBUS_VALUE | 5751 | Writing to this register sets a **Value** that will be sent while **write to Modbus Server** |
-GVAR_XMODBUS_ADDR2READ | 5752 | Writing to this Register sets **Address of Global register** to put a result of **Modbus Read** operation |+GVAR_XMODBUS_RW_READY| 5752 |  |
 | GVAR_XMODBUS_READY_READ | 5753 | Ready Read flag. The value is automatically cleared ion start of Modbus read operation. \\ If Read is finished successfully, the value is set to "1". \\  If Read operation is failed, the value is set to "-1". | | GVAR_XMODBUS_READY_READ | 5753 | Ready Read flag. The value is automatically cleared ion start of Modbus read operation. \\ If Read is finished successfully, the value is set to "1". \\  If Read operation is failed, the value is set to "-1". |
 | GVAR_XMODBUS_WRITE | 5755 | Writing to this register initiates Modbus Write operation. \\ Written value is Modbus Server Register address (for Write). \\ A value defined in register 5751 will be sent | | GVAR_XMODBUS_WRITE | 5755 | Writing to this register initiates Modbus Write operation. \\ Written value is Modbus Server Register address (for Write). \\ A value defined in register 5751 will be sent |
 | GVAR_XMODBUS_READ | 5756 | Writing to this register initiates Modbus Read operation. \\ Written value is a Modbus Server Register address (for Read). \\ Writing to this register will clear READY_READ register (5753). The READ_READY register value will be set to "1" when Read completed successfully. The READ_READY register will be set to "-1" if Read Error happens | | GVAR_XMODBUS_READ | 5756 | Writing to this register initiates Modbus Read operation. \\ Written value is a Modbus Server Register address (for Read). \\ Writing to this register will clear READY_READ register (5753). The READ_READY register value will be set to "1" when Read completed successfully. The READ_READY register will be set to "-1" if Read Error happens |
 +| GVAR_XMODBUS_ADDR2READ | 5761 | Writing to this Register sets **Address of Global register** to put a result of **Modbus Read** operation |
 +|GVAR_XMODBUS_READ_INPUT_BITS | 5763 | Read the input bits. This will read the digital inputs/outputs in the  |
 +| GVAR_XMODBUS_READ | 5764 | Read Modbus register (specify the particular register to read such as 5764,0) |
  
  
Line 46: Line 49:
 </code> </code>
  
 +**Another read/write example for WP9038ADAM with digital inputs/outputs and analog inputs**
  
 +The analog inputs in this example are the holding registers, while the bits are the digital inputs and outputs which are dealt with through read/write commands. The code is using a 3 ms delay in order to loop the timer and to allow the Modbus device to receive/send all the necessary commands.
 +
 +<code c>main()
 +{
 +
 +
 +//Write
 +  gvarset(5750,34);  //Set Modbus Server Address (device ID is set to be 34 in this case)
 +  gvarset(5752,1);  //Indicator whether the operation is complete (0 for complete, 1 for not complete)
 +
 +  timer=0; 
 +
 +  address=500; //the variable address is specified to the 500
 +  gvarset(5761,address);  //Address to store read value
 +
 +count=0;
 +  do
 +  {
 +  gvarset(5761,address);  //Address to store read value
 +
 +  gvarset(5751,count); //Set a value to write (selects which value will be written)
 +  gvarset(5756,0); //Set a value to write (command to write the value that was set)
 +
 +  timer=3;do{timer--; }while(timer>0); //0.3 ms timer to loop
 +
 +// Read Bits
 +  gvarset(5763,0);  //Read Modbus register #0
 +  timer=3;do{timer--; }while(timer>0); 
 +
 +// Read Holding Registers
 +
 +  gvarset(5761,address+1);  //Address to store read value will be variable 501
 +  gvarset(5764,0);  //Read Modbus register #0
 +  timer=3;do{timer--; }while(timer>0); 
 +
 +// Read Holding Registers
 +
 +  gvarset(5761,address+2);  //Address to store read value will be variable 502
 +  gvarset(5764,1);  //Read Modbus register #1
 +  timer=3;do{timer--; }while(timer>0); 
 +
 +// Read Holding Registers
 +
 +  gvarset(5761,address+3);  //Address to store read value will be variable 503
 +  gvarset(5764,2);  //Read Modbus register #2
 +  timer=3;do{timer--; }while(timer>0); 
 +
 +// Read Holding Registers
 +
 +  gvarset(5761,address+4);  //Address to store read value will be variable 504
 +  gvarset(5764,3);  //Read Modbus register #3
 +  timer=3;do{timer--; }while(timer>0); 
 +
 +count++;
 +gvarset(507,count); //specifies the value for the 507 address
 +
 +   }while(1);
 +
 + exit(99);
 +};</code>
 +
 +The specifications for the Modbus devices that are currently sold through the myCNC shop can be found here: 
 +[[mycnc:modbus_devices|Modbus Devices available]]
mycnc/host_modbus_api.1539556679.txt.gz · Last modified: 2018/10/14 18:37 by skirillov

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki