|
|
|
| Info | Support | Contact | About | ||
|
How to integrate the Protocol in your ApplicationUsing Serial ProtocolsLet's assume we want to talk to a Modbus slave device with slave address 1.The registers for reading are in the reference range 4:00100 to 4:00119 and the registers for writing are in the range 4:00200 to 4:00219. The discretes for reading are in the reference range 0:00010 to 0:00019 and the discretes for writing are in the range 0:00020 to 0:00029. 1. Include the package header files #include "MbusRtuMasterProtocol.hpp"
2. Device data profile definition Define the data sets which reflects the slave's data profile by type and size: short readRegSet[20]; short writeRegSet[20]; int readBitSet[20]; int writeBitSet[20]; If you are using floats instead of 16-bit shorts define: float readFloatSet[10]; float writeFloatSet[10]; If you are using 32-bit ints instead of 16-bit shorts define: long readLongSet[10]; long writeLongSet[10]; 3. Declare and instantiate a protocol object MbusRtuMasterProtocol mbusProtocol; 4. Open the protocol int result; result = mbusProtocol.openProtocol(portName, 9600L, // Baudrate 8, // Databits 1, // Stopbits 0); // Parity if (result != FTALK_SUCCESS) { fprintf(stderr, "Error opening protocol: %s!\n", getBusProtocolErrorText(result)); exit(EXIT_FAILURE); } 5. Perform the data transfer functions
6. Close the protocol port if not needed any more mbusProtocol.closeProtocol(); 7. Error Handling Serial protocol errors like slave device failures, transmission failures, checksum errors and time-outs return an error code. The following code snippet can handle and report these errors:
int result; result = mbusProtocol.readMultipleRegisters(1, 100, dataSetArray, 10); if (result != FTALK_SUCCESS) { fprintf(stderr, "%s!\n", getBusProtocolErrorText(result)); // Stop for fatal errors if (!(result & FTALK_BUS_PROTOCOL_ERROR_CLASS)) return; } An automatic retry mechanism is available and can be enabled with mbusProtocol.setRetryCnt(3) before opening the protocol port. Using MODBUS/TCP ProtocolLet's assume we want to talk to a Modbus slave device with unit address 1 and IP address 10.0.0.11.The registers for reading are in the reference range 4:00100 to 4:00119 and the registers for writing are in the range 4:00200 to 4:00219. The discretes for reading are in the reference range 0:00010 to 0:00019 and the discretes for writing are in the range 0:00020 to 0:00029. 1. Include the package header files #include "MbusTcpMasterProtocol.hpp"
2. Device data profile definition Define the data sets which reflects the slave's data profile by type and size: short readRegSet[20]; short writeRegSet[20]; int readBitSet[10]; int writeBitSet[10]; If you are using floats instead of 16-bit shorts define: float readFloatSet[10]; float writeFloatSet[10]; If you are using 32-bit ints instead of 16-bit shorts define: long readLongSet[10]; long writeLongSet[10]; 3. Declare and instantiate a protocol object MbusTcpMasterProtocol mbusProtocol; 4. Open the protocol mbusProtocol.openProtocol("10.0.0.11); 5. Perform the data transfer functions
6. Close the connection if not needed any more mbusProtocol.closeProtocol(); 7. Error Handling TCP/IP protocol errors like slave failures, TCP/IP connection failures and time-outs return an error code. The following code snippet can handle these errors:
int result; result = mbusProtocol.readMultipleRegisters(1, 100, dataSetArray, 10); if (result != FTALK_SUCCESS) { fprintf(stderr, "%s!\n", getBusProtocolErrorText(result)); // Stop for fatal errors if (!(result & FTALK_BUS_PROTOCOL_ERROR_CLASS)) return; } } If the method returns FTALK_CONNECTION_WAS_CLOSED, it signals that the the TCP/IP connection was lost or closed by the remote end. Before using further data and control functions the connection has to be re-opened succesfully. Examples |
||||||||||||||||||||||||||||||||
| Back | Top of page | Info | Support | Contact | About | ||
|
Information in this document is subject to change without notice.
Copyright © 2000-2013 proconX Pty Ltd.
All rights reserved.
All product and brand names mentioned on this page may be trademarks or registered trademarks of their respective owners. |