Documentation

FieldTalk Modbus Master C++ Library  Library version 2.13.3
Data and Control Functions for all Modbus Protocol Flavours

This Modbus protocol library implements the most commonly used data functions as well as some control functions. The functions to perform PLC program download and other device specific functions are outside the scope of this library.

All Bit Access and 16 Bits Access Modbus Function Codes have been implemented. In addition the most frequently used Diagnostics Function Codes have been implemented. This rich function set enables a user to solve nearly every Modbus data transfer problem.

The following table lists the supported Modbus function codes:

Function CodeCurrent TerminologyClassic Terminology
Bit Access  
1 Read Coils Read Coil Status
2 Read Discrete Inputs Read Input Status
5 Write Single Coil Force Single Coil
15 (0F hex)Write Multiple Coils Force Multiple Coils
16 Bits Access  
3 Read Multiple Registers Read Holding Registers
4 Read Input Registers Read Input Registers
6 Write Single Register Preset Single Register
16 (10 Hex)Write Multiple Registers Preset Multiple Registers
22 (16 hex)Mask Write Register Mask Write 4X Register
23 (17 hex)Read/Write Multiple RegistersRead/Write 4X Registers
Record Access  
20 (14 hex)Read File Record Read General Reference
21 (15 hex)Write File Record Write General Reference
Diagnostics  
7 Read Exception Status Read Exception Status
8 subcode 00Diagnostics - Return Query Data Diagnostics - Return Query Data
8 subcode 01Diagnostics - Restart Communications OptionDiagnostics - Restart Communications Option
43 (2B hex) subcode 14 (0E hex) Read Device Identification  
Vendor Specific  
Advantech Send/Receive ADAM 5000/6000 ASCII commands

 

Remarks
When passing register numbers and discrete numbers to FieldTalk library functions you have to use the the Modbus register and discrete numbering scheme. See Register and Discrete Numbering Scheme. (Internally the functions will deduct 1 from the start register value before transmitting the value to the slave device.)

Using multiple instances of a MbusMaster... class enables concurrent protocol transfer on different communication channels (e.g. multiple TCP/IP sessions in separate threads or multiple COM ports in separate threads).