Modbus is a communication method used for transmitting information over serial lines between electronic devices. The device requesting the information is called the Modbus Master (Client) and the devices supplying information are Modbus Slaves (Servers). This protocol was originally developed by Modicon systems.
Modbus protocol comes in basically three different types. Ethernet (Modbus TCP) or Serial (Modbus RTU or Modbus ASCII). Modbus TCP and Modbus RTU come as standard protocols in the productivity series of PLCs.
We will connect the Click PLC to a Solo process temperature controller. This will be done using the Modbus ASCII protocol over serial RS485 communication wire. (Media) The present and set values (PV / SV) will be read from the Solo controller and the set value will be written when required. Let’s get started.
Previously in this series, we have discussed:
System Hardware – Video
Installing the Software – Video
Establish Communication – Video
Numbering System and Addressing – Video
Timers and Counters
– Counter Video
– Timer Video
Compare and Math Instructions – Video
Program Control Instructions – Video
Shift Register – Video
Drum Instruction – Video
Send and Receive Instructions – Video
AdvancedHMI Communication – Video
Firmware Update – Video
HMI Rotary Encoder Dial Input – Video
High Speed Counters Part 1
– High-Speed Count Mode Video
– Interval Measurement Mode Video
– Duration Measurement Mode Video
– Frequency Measurement Mode Video
High Speed Counters Part 2
– External Interrupt Mode Video
– Pulse Catch Mode Video
– Filter Pulse Mode Video
– Frequency Measurement and High-Speed Count Mode Video
Wiring Stack Light to Click PLC – Video
Wiring Push Buttons and Selector Switch to Click PLC – Video
– Test and Assembly of Push Buttons and a Selector Switch – Video
Wiring an Inductive Proximity NPN PNP Sensor to the Click PLC – Video
Wiring a Capacitive Proximity NPN PNP Sensor to the Click PLC – Video
Wiring an Ultrasonic Proximity Sensor to the Click PLC – Video
– Unboxing our UK1F Ultrasonic Proximity Sensor – Video
Analog Dusk to Dawn Program – Video
PID using Factory IO – Video
PID Instruction and Autotuning using Factory IO – Video
Logging Data with Time and Date Stamp – Video
Stride Field Remote IO Modules Modbus TCP Ethernet
– Unboxing SIO MB12CDR and SIO MB04ADS Video
– Powering and Configuring Video
Click PLC to Stride Field IO Modbus TCP – Video
Modbus RTU TCP Remote IO Controller BX-MBIO
– BX-MBIO Hardware Video
– BX-MBIO Powering and Configuring Video
Click PLC to Modbus TCP RTU Remote IO Controller BX-MBIO – Video
Our entire series can be found here.
The programming software and manuals can be downloaded from the Automation Direct website free of charge.
Watch the video below to see Click PLC controller control analog and digital inputs and outputs remotely.
Solo Process Temperature Controller
All Solo Standard Controllers are capable of Modbus communication.
The data and bit registers support the following Modbus function codes.
03: Read Holding Registers (maximum limit is read of eight registers)
06: Write Single Register
16: Write Multiple Registers (maximum limit is eight)
01: Read Coils
02: Read Discrete Inputs (Both Function Code 1 & 2 read the same memory area.)
05: Write Single Coil (Write FF00H to set the coil or 0000H to reset the coil.)
The modbus addresses for the Solo process temperature controller can be found in chapter 7 of the manual. See the link below.
In our example, we will be reading the PV and SV values from the controller and write the SV when required.
Solo Process Temperature Controller Configuration
The first thing that we will do is set up the Solo Temperature Controller. Additional information can be found at the following link.
The solo process temperature controller needs to be set up before we can communicate with it. The default setting is ‘Off’ for the On-Line Configuration. Here is the way to change into the different modes in the Solo.
In the Initial Setting Mode we will change the online configuration to on and make the changes to the Modbus settings as follows: 19200 Baud, Even, 7 Data Bits, 1 Stop Bit, Modbus ASCII Format. We will leave the default unit number as 1.
Our controller is now set to communicate.
Modbus ASCII Protocol Format
As the name states, ASCII (American Standard Code for Information Interchange) is used for the communication messages.
Modbus ASCII marks the start of each message with a colon character “: ” (hex 3A).
The end of each message is terminated with the carriage return and line feed characters (hex 0D and 0A).
Sent data from the master
: – Start of message
01 – Address (unit) number
03 – Function Code (read multiple registers)
1000 – Data – Starting address to read
0002 – Data – Number of registers to read
EA – LRC (Longitudinal Redundancy Check) error checking byte
Response data from the slave
: – Start of message
01 – Address (unit) number
03 – Function Code (read multiple registers)
04 – Number of return registers in bytes
00DC – Data returned PV in Hexadecimal = 22.1 degrees C
012C – Data returned SV in Hexadecimal = 30.0 degree C
EE – LRC (Longitudinal Redundancy Check) error checking byte
The bytes that you see in sending and receiving information is represented by two ASCII characters. Each ASCII character is 8 bits long. This means that Modbus ASCII sends more information back and forth than Modbus RTU.
Note: Since the space between bytes is variable, transmission through modems is possible with Modbus ASCII.
Click PLC Modbus Setup – Master
Modbus ASCII will be the serial (RS485) method in which we will communicate between the Click PLC Port #3 and the Automation Direct Solo Process Temperature Controller.
We can address up to 247 (Solo 1 to 247) devices on this master-slave protocol. A maximum of 32 devices (Nodes) on the network can communicate to the master.
Using the Click programming software call up Com Port Setup… by selecting it from the main menu | Setup.
Select Setup… under port 3. This is our RS485 communication port.
Under the Com Port Setup Details window, select ASCII for the protocol. Our communication parameters must be set to match our selection from the Solo controller.
(19200, Even, 7, 1) Select OK to save the parameters.
Another way to get to the port setting on the PLC is to use the System Configuration… (main menu | Setup)
Click on the port that you would like to set up on the system configuration window.
In our case, we are selecting the RS485 port. If the protocol will not allow you to change (Dim) then this indicates that a program is in the PLC that controls this port already. Delete the ladder instructions so you can change the protocol.
We are using the ASCII instruction to send and receive out the port. Our PLC is now set to start programming our Modbus ASCII protocol.
Click PLC Program
Using the Modbus ASCII Protocol communicate to a Solo Process Temperature Controller
DH1 – PV present value
DH2 – SV set value
DH20 – Change SV
When the value in DH20 changes to greater than 0 the value is then written into the Solo controller. Call the subroutine to perform the Modbus ASCII protocol.
Modbus ASCII Send:
:010310000002EA (See above for an explanation.)
Modbus ASCII Receive:
:010304XXXXYYYYZZ (See above for an explanation.)
When the correct number of return characters are received, then set the done bit.
All communications (Send / Receive) will have a time delay of at least 10 msec.
Convert the returned ASCII values into the appropriate hexadecimal values. This will return the Solo present and set values.
Send SV Value to Solo
If the Solo SV Change Value is greater than 0 then copy the value to the Solo SV Write variable. We then set the Change SV bit.
The set value is then unpacked into the individual 16 bits. We then assemble the lease significant byte (LSB) and the most significant byte (MSB) into DH4 and DH5. This is used for the calculation of the LRC.
Calculation of LRC value for Sending SV to Solo
The LRC is calculated by adding together successive eight-bit bytes in the message, discarding any carries, then two’s complementing the result.
Modbus ASCII SV Write – :01061001XXXXYY (XXXX SV) (YY LRC)
01 + 06 + 10 + 01 = 18
Formula: 1 – (18 + SV LSB + SV MSB) – 1
The result word is then converted to ASCII text.
Convert the SV into ASCII text.
Assemble the ASCII string to change the Solo SV value.
TXT101 to TXT109
TXT110 to TXT113
Solo SV (XXXX)
TXT114 to TXT115
Change the Solo SV time delay before sending the Modbus ASCII string.
Send the Modbus ASCII string to change the Solo set value (SV).
Receive the return string after changing the solo SV.
Modbus SV Write Receive:
When the SV is sent successfully on the port, then set the communication done bit for the SV write.
Set the communication delay timer.
Reset the parameters and bits once all of the communications have been done. Then turn on a communication restart bit.
Restart the communication again after a time delay.
Timeout Delay Signals
Timer 5 will reset the Modbus ASCII communications if no activity is seen for 2 seconds. (2000 ms)
Watch the video below to see the running and configuration of the Modbus ASCII Serial Communication from the Click PLC to the Solo Process Temperature Controller.
Solo Error Response Codes
Exception responses that the Solo process temperature controller will help to troubleshoot your communication.
Modbus Address + (function code + 80H) + Error code
Here are the response codes (error codes) that can be returned.
01H function code is not supported
02H Illegal function address
03H Illegal read/write word count
04H Data process fails
09H Checksum error
Note: 04H is often caused by writes to the solo, but not having parameter CoSH set.
Download the Click PLC program here.
Click PLC Support Links
The Click PLC can be programmed using free Click programming software from Automation Direct. Here is a link to the software.
The following links will help you to install the software and establish communication.
The entire Click PLC series can be found at the following URL:
Watch on YouTube: Click PLC Modbus ASCII Protocol
If you have any questions or need further information please contact me.
If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.
To get this free article, subscribe to my free email newsletter.
Use the information to inform other people how numbering systems work. Sign up now.
The ‘Robust Data Logging for Free’ eBook is also available as a free download. The link is included when you subscribe to ACC Automation.