Twido Modbus Communication - Quick Guide - File3

Download as pdf or txt
Download as pdf or txt
You are on page 1of 32

Communications

Transmission/ When in Transmit Only mode, the Control and Transmission tables are filled in prior
reception tables to executing the EXCHx instruction, and can be of type %KW or %MW. No space is
required for the reception of characters in Transmission only mode. Once all bytes
are transmitted, %MSGx.D is set to 1, and a new EXCHx instruction can be executed.
When in Transmit/Receive mode, the Control and Transmission tables are filled in prior to
executing the EXCHx instruction, and must be of type %MW. Space for up to 256 reception
bytes is required at the end of the Transmission table. Once all bytes are transmitted, the
Twido controller switches to reception mode and waits to receive any bytes.
When in Reception only mode, the Control table is filled in prior to executing the
EXCHx instruction, and must be of type %MW. Space for up to 256 reception bytes
is required at the end of the Control table. Twido controller immediately enters the
reception mode and waits to receive any bytes.
Reception ends when end of frame bytes used have been received, or the Reception
table is full. In this case, an error (receive table overflowed) appears in the word
%SW63 and %SW64. If a non-zero timeout is configured, reception ends when the
timeout is completed. If a zero timeout value is selected, there is no reception
timeout. Therefore to stop reception, %MSGx.R input must be activated.

Message The language offers two services for the communication:


Exchange z EXCHx instruction: to transmit/receive messages
z %MSGx Function Block: to control the message exchanges.
Twido controller uses the protocol configured for that port when processing an
EXCHx instruction.

Note: Each communications port can be configured for different protocols or the
same. The EXCHx instruction or %MSGx function block for each communications
port is accessed by appending the port number (1 or 2).

EXCHx The EXCHx instruction allows the Twido controller to send and/or receive information to/
Instruction from ASCII devices. The user defines a table of words (%MWi:L or %KWi:L) containing
control information and the data to be sent and/or received (up to 256 bytes in
transmission and/or reception). The format for the word table is described earlier.
A message exchange is performed using the EXCHx instruction:

Syntax: [EXCHx %MWi:L]


where: x = port number (1 or 2)
L = number of words in the control words and transmission and
reception tables

The Twido controller must finish the exchange from the first EXCHx instruction
before a second can be launched. The %MSGx function block must be used when
sending several messages.
The processing of the EXCHx list instruction occurs immediately, with any
transmissions started under interrupt control (reception of data is also under
interrupt control), which is considered background processing.

120 TWD USE 10AE


Communications

%MSGx Function The use of the %MSGx function block is optional; it can be used to manage data
Block exchanges. The %MSGx function block has three purposes:
z Communications error checking
The error checking verifies that the parameter L (length of the Word table)
programmed with the EXCHx instruction is large enough to contain the length of
the message to be sent. This is compared with the length programmed in the
least significant byte of the first word of the word table.
z Coordination of multiple messages
To ensure the coordination when sending multiple messages, the %MSGx
function block provides the information required to determine when transmission
of a previous message is complete.
z Transmission of priority messages
The %MSGx function block allows current message transmissions to be stopped
in order to allow the immediate sending of an urgent message.
The %MSGx function block has one input and two outputs associated with it:
Input/Output Definition Description
R Reset input Set to 1: re-initializes communication or
resets block (%MSGx.E = 0 and %MSGx.D =
1).
%MSGx.D Communication 0: Request in progress.
complete 1: communication done if end of
transmission, end character received, error,
or reset of block.
%MSGx.E Error 0: message length OK and link OK.
1: if bad command, table incorrectly
configured, incorrect character received
(speed, parity, and so on.), or reception table
full.

Limitations It is important to note the following limitations:


z Port 2 availability and type (see %SW7) is checked only at power-up or reset
z Any message processing on Port 1 is aborted when the TwidoSoft is connected
z EXCHx or %MSG can not be processed on a port configured as Remote Link
z EXCHx aborts active Modbus Slave processing
z Processing of EXCHx instructions is not re-tried in the event of an error
z Reset input (R) can be used to abort EXCHx instruction reception processing
z EXCHx instructions can be configured with a time out to abort reception
z Multiple messages are controlled via %MSGx.D

TWD USE 10AE 121


Communications

Error and If an error occurs when using the EXCHx instruction, bits %MSGx.D and %MSGx.E
Operating Mode are set to 1 and system word %SW63 contains the error code for Port 1, and
Conditions %SW64 contains the error code for Port 2.
System Use
Words
%SW63 EXCH1 error code:
0 - operation was successful
1 – number of bytes to be transmitted is too great (> 250)
2 - transmission table too small
3 - word table too small
4 - receive table overflowed
5 - time-out elapsed
6 - transmission error
7 - bad command within table
8 - selected port not configured/available
9 - reception error
10 - cannot use %KW if receiving
11 - transmission offset larger than transmission table
12 - reception offset larger than reception table
13 - controller stopped EXCH processing
%SW64 EXCH2 error code: See %SW63.

Consequence of If a controller restarts, one of the following events happens:


Controller z A cold start (%S0 = 1) forces a re-initialization of the communications.
Restart on the z A warm start (%S1 = 1) forces a re-initialization of the communications.
Communication z In Stop, the controller stops all ASCII communications.

122 TWD USE 10AE


Communications

Modbus Communications

Introduction The Modbus protocol is a master-slave protocol that allows for one, and only one,
master to request responses from slaves, or to act based on the request. The master
can address individual slaves, or can initiate a broadcast message to all slaves.
Slaves return a message (response) to queries that are addressed to them
individually. Responses are not returned to broadcast queries from the master.

CAUTION
UNEXPECTED EQUIPMENT OPERATION
z Be sure that there is only one Modbus master controller on the bus and that
each Modbus slave has a unique address. Failure to observe this precaution
may lead to corrupted data or unexpected and ambiguous results.
z Be sure that all Modbus slaves have unique addresses. No two slaves should
have the same address. Failure to observe this precaution may lead to
corrupted data or unexpected and ambiguous results.
Failure to follow this instruction can result in injury or equipment damage.

126 TWD USE 10AE


Communications

Hardware A Modbus link can be established on either the EIA RS-232 or EIA RS-485 port and
Configuration can run on as many as two communications ports at a time. Each of these ports can
be assigned its own Modbus address, using system bit %S101 and system words
%SW101 and %SW102 (See System Bits (%S), p. 596). . (See also System Words
(%SW), p. 604)
The table below lists the devices that can be used:
Remote Port Specifications
TWDLC•A10/16/24DRF, 1 Base controller supporting a 3-wire EIA RS-485 port with a miniDIN connector.
TWDLCA•40DRF,
TWDLMDA20/40DTK,
TWDLMDA20DRT
TWDNOZ232D 2 Communication module equipped with a 3-wire EIA RS-232 port with a miniDIN connector.
Note: This module is only available for the Modular controllers. When the module
is attached, the controller cannot have an Operator Display expansion module.
TWDNOZ485D 2 Communication module equipped with a 3-wire EIA RS-485 port with a miniDIN connector.
Note: This module is only available for the Modular controllers. When the module
is attached, the controller cannot have an Operator Display expansion module.
TWDNOZ485T 2 Communication module equipped with a 3-wire EIA RS-485 port with a terminal.
Note: This module is only available for the Modular controllers. When the module
is attached, the controller cannot have an Operator Display expansion module.
TWDNAC232D 2 Communication adapter equipped with a 3-wire EIA RS-232 port with a miniDIN connector.
Note: This adapter is only available for the Compact 16, 24 and 40 I/O controllers
and the Operator Display expansion module.
TWDNAC485D 2 Communication adapter equipped with a 3-wire EIA RS-485 port with a miniDIN connector.
Note: This adapter is only available for the Compact 16, 24 and 40 I/O controllers
and the Operator Display expansion module.
TWDNAC485T 2 Communication adapter equipped with a 3-wire EIA RS-485 port with a terminal connector.
Note: This adapter is only available for the Compact 16, 24 and 40 I/O controllers
and the Operator Display expansion module.
TWDXCPODM 2 Operator Display expansion module equipped with a 3-wire EIA RS-232 port with
a miniDIN connector, a 3-wire EIA RS-485 port with a miniDIN connector and a 3-
wire EIA RS-485 port with a terminal.
Note: This module is only available for the Modular controllers. When the module
is attached, the controller cannot have a Communication expansion module.

Note: The presence and configuration (RS232 or RS485) of Port 2 is checked at


power-up or at reset by the firmware executive program.

TWD USE 10AE 127


Communications

Nominal Cabling Nominal cable connections are illustrated below for both the EIA RS-232 and the
EIA RS-485 types.

Note: If port 1 is used on the Twido controller, the DPT signal on pin 5 must be tied
to the circuit common (COM) on pin 7. This signifies to the Twido controller that the
communications through port 1 is Modbus and is not the protocol used to
communicate with the TwidoSoft software.

The cable connections made to each remote device are shown below.
Mini-DIN connection
RS-232 EIA cable

Twido Remote
controller peripheral
TXD RXD COM TXD RXD COM
3 4 7

RS-485 EIA cable


Twido Remote Remote
controller peripheral ... peripheral
D1(A+) D0(B-) COM DPT D1(A+) D0(B-) COM D1(A+) D0(B-) COM
1 2 7 5

Terminal block connection

Remote Master Remote


controller controller controller
A(+) B(-) 0V A(+) B(-) 0V A(+) B(-) 0V
A B SG

128 TWD USE 10AE


Communications

EIA RS-485 Line There is no internal pre-polarization in TWDLCA•40DRF controllers. Therefore,


Polarization on external line polarization is required when connecting the TWDLCA•40DRF Modbus
TWDLCA•40DRF master controller to the EIA-485 Modbus network.
Controllers (When there is no data activity on an EIA-485 balanced pair, the lines are not driven
and, therefore, susceptible to external noise or interference. To ensure that its
receiver stays in a constant state, when no data signal is present, the Modbus
master device needs to bias the network via external line polarization.)

Note: EIA RS-485 external line polarization must be implemented on the Modbus
Master controller only; you must not implement it on any slave device.

The external line polarization assembly on the TWDLCA•40DRF mini-DIN RS-485


EIA line shall consist in:
z One pull-up resistor to a 5V voltage on D1(A+) circuit,
z One pull-down resistor to the common circuit on D0(B-) circuit.
The following figure illustrates the external line polarization assembly on the
TWDLCA•40DRF mini-DIN RS-485 EIA line:
Mini-DIN connection
RS-485 EIA cable

Twido (Master) Remote (Slave) Remote (Slave)


controller peripheral ... peripheral
D1(A+) D0(B-) COM DPT D1(A+) D0(B-) COM D1(A+) D0(B-) COM
1 2 7 5

+5 V
TWDLCA40•DRF Master
RS-485 EIA Line Polarization
Assembly
R

D1(A+)

D0(B-)
R
COM (0V)

where R = 600-650 Ω resistor

External polarization can be performed in any of two ways:


z Connecting externally the user-provided polarization assembly via mini-DIN fly
cable. (Please refer to pin definition for connector.)
z Using a polarization tap (configured for 2-wire polarization) and polarization
assembly (available soon from the catalog).

TWD USE 10AE 129


Communications

Software To configure the controller to use a serial connection to send and receive characters
Configuration using the Modbus protocol, you must:
Step Description
1 Configure the serial port for Modbus using TwidoSoft.
2 Create in your application a transmission/reception table that will be used by the
EXCHx instruction.

Configuring the A Twido controller can use its primary port 1 or an optionally configured port 2 to use
Port the Modbus protocol. To configure a serial port for Modbus:
Step Action
1 Define any additional communication adapters or modules configured to the base.
2 Right-click on the port and click Edit Controller Comm Setup... and change serial port
type to "Modbus".
3 Set the associated communication parameters.

130 TWD USE 10AE


Communications

Modbus Master Modbus master mode allows the controller to send a Modbus query to a slave, and
to wait for the response. The Modbus Master mode is only supported via the EXCHx
instruction. Both Modbus ASCII and RTU are supported in Modbus Master mode.
The maximum size of the transmitted and/or received frames is 250 bytes.
Moreover, the word table associated with the EXCHx instruction is composed of the
control, transmission and reception tables.
Most significant byte Least significant byte
Control table Command Length (Transmission/
Reception)
Reception offset Transmission offset
Transmission table Transmitted Byte 1 Transmitted Byte 2
... ...
... Transmitted Byte n
Transmitted Byte n+1
Reception table Received Byte 1 Received Byte 2
... ...
... Received Byte p
Received Byte p+1

Note: In addition to queries to invidual slaves, the Modbus master controller can
initiate a broadcast query to all slaves. The command byte in case of a boradcast
query must be set to 00, while the slave address must be set to 0.

TWD USE 10AE 131


Communications

Control table The Length byte contains the length of the transmission table (maximum 250
bytes), which is overwritten by the number of characters received at the end of the
reception, if reception is requested.
This parameter is the length in bytes of the transmission table. If the Tx Offset
parameter is equal to 0, this parameter will be equal to the length of the transmission
frame. If the Tx Offset parameter is not equal to 0, one byte of the transmission table
(indicated by the offset value) will not be transmitted and this parameter is equal to
the frame length itself plus 1.
The Command byte in case of Modbus RTU request (except for broadcast) must
always equal to 1 (Tx and Rx).
The Tx Offset byte contains the rank (1 for the first byte, 2 for the second byte, and
so on) within the Transmission Table of the byte to ignore when transmitting the
bytes. This is used to handle the issues associated with byte/word values within the
Modbus protocol. For example, if this byte contains 3, the third byte would be
ignored, making the fourth byte in the table the third byte to be transmitted.
The Rx Offset byte contains the rank (1 for the first byte, 2 for the second byte, and
so on) within the Reception Table to add when transmitting the packet. This is used
to handle the issues associated with byte/word values within the Modbus protocol.
For example, if this byte contains 3, the third byte within the table would be filled with
a ZERO, and the third byte was actually received would be entered into the fourth
location in the table.

132 TWD USE 10AE


Communications

Transmission/ When using either mode (Modbus ASCII or Modbus RTU), the Transmission table
reception tables is filled with the request prior to executing the EXCHx instruction. At execution time,
the controller determines what the Data Link Layer is, and performs all conversions
necessary to process the transmission and response. Start, end, and check
characters are not stored in the Transmission/Reception tables.
Once all bytes are transmitted, the controller switches to reception mode and waits
to receive any bytes.
Reception is completed in one of several ways:
z timeout on a character or frame has been detected,
z end of frame character(s) received in ASCII mode,
z the Reception table is full.

Transmitted byte X entries contain Modbus protocol (RTU encoding) data that is to
be transmitted. If the communications port is configured for Modbus ASCII, the
correct framing characters are appended to the transmission. The first byte contains
the device address (specific or broadcast), the second byte contains the function
code, and the rest contain the information associated with that function code.

Note: This is a typical application, but does not define all the possibilities. No
validation of the data being transmitted will be performed.

Received Bytes X contain Modbus protocol (RTU encoding) data that is to be


received. If the communications port is configured for Modbus ASCII, the correct
framing characters are removed from the response. The first byte contains the
device address, the second byte contains the function code (or response code), and
the rest contain the information associated with that function code.

Note: This is a typical application, but does not define all the possibilities. No
validation of the data being received will be performed, except for checksum
verification.

TWD USE 10AE 133


Communications

Modbus Slave Modbus slave mode allows the controller to respond to standard Modbus queries
from a Modbus master.
When TSXPCX1031 cable is attached to the controller, TwidoSoft communications
are started at the port, temporarily disabling the communications mode that was
running prior to the cable being connected.
The Modbus protocol supports two Data Link Layer formats: ASCII and RTU. Each
is defined by the Physical Layer implementation, with ASCII using 7 data bits, and
RTU using 8 data bits.
When using Modbus ASCII mode, each byte in the message is sent as two ASCII
characters. The Modbus ASCII frame begins with a start character (':'), and can end
with two end characters (CR and LF). The end of frame character defaults to 0x0A
(line feed), and the user can modify the value of this byte during configuration. The
check value for the Modbus ASCII frame is a simple two's complement of the frame,
excluding the start and end characters.
Modbus RTU mode does not reformat the message prior to transmitting; however,
it uses a different checksum calculation mode, specified as a CRC.
The Modbus Data Link Layer has the following limitations:
z Address 1-247
z Bits: 128 bits on request
z Words: 125 words of 16 bits on request

Message The language offers two services for communication:


Exchange z EXCHx instruction: to transmit/receive messages
z %MSGx Function Block: to control the message exchanges.
The Twido controller uses the protocol configured for that port when processing an
EXCHx instruction.

Note: Each communications port can be configured for different protocols or the
same. The EXCHx instruction or %MSGx function block for each communications
port is accessed by appending the port number (1 or 2).

134 TWD USE 10AE


Communications

EXCHx The EXCHx instruction allows the Twido controller to send and/or receive
Instruction information to/from Modbus devices. The user defines a table of words (%MWi:L)
containing control information and the data to be sent and/or received (up to 250
bytes in transmission and/or reception). The format for the word table is described
earlier.
A message exchange is performed using the EXCHx instruction:
Syntax: [EXCHx %MWi:L]
where: x = port number (1 or 2)
L = number of words in the control words, transmission and reception tables

The Twido controller must finish the exchange from the first EXCHx instruction
before a second can be launched. The %MSGx function block must be used when
sending several messages.
The processing of the EXCHx list instruction occurs immediately, with any
transmissions started under interrupt control (reception of data is also under
interrupt control), which is considered background processing.

TWD USE 10AE 135


Communications

%MSGx Function The use of the %MSGx function block is optional; it can be used to manage data
Block exchanges. The %MSGx function block has three purposes:
z Communications error checking
The error checking verifies that the parameter L (length of the Word table)
programmed with the EXCHx instruction is large enough to contain the length of
the message to be sent. This is compared with the length programmed in the
least significant byte of the first word of the word table.
z Coordination of multiple messages
To ensure the coordination when sending multiple messages, the %MSGx
function block provides the information required to determine when transmission
of a previous message is complete.
z Transmission of priority messages
The %MSGx function block allows current message transmissions to be stopped
in order to allow the immediate sending of an urgent message.
The %MSGx function block has one input and two outputs associated with it:
Input/Output Definition Description
R Reset input Set to 1: re-initializes communication or
resets block (%MSGx.E = 0 and %MSGx.D =
1).
%MSGx.D Communication 0: request in progress.
complete 1: communication done if end of
transmission, end character received, error,
or reset of block.
%MSGx.E Error 0: message length OK and link OK.
1: if bad command, table incorrectly
configured, incorrect character received
(speed, parity, and so on.), or reception table
full.

Limitations It is important to note the following limitations:


z Port 2 presence and configuration (RS232 or RS485) is checked at power-up or
reset
z Any message processing on Port 1 is aborted when the TwidoSoft is connected
z EXCHx or %MSG can not be processed on a port configured as Remote Link
z EXCHx aborts active Modbus Slave processing
z Processing of EXCHx instructions is not re-tried in the event of an error
z Reset input (R) can be used to abort EXCHx instruction reception processing
z EXCHx instructions can be configured with a time out to abort reception
z Multiple messages are controlled via %MSGx.D

136 TWD USE 10AE


Communications

Error and If an error occurs when using the EXCHx instruction, bits %MSGx.D and %MSGx.E
Operating Mode are set to 1 and system word %SW63 contains the error code for Port 1, and
Conditions %SW64 contains the error code for Port 2.

System Use
Words
%SW63 EXCH1 error code:
0 - operation was successful
1 – number of bytes to be transmitted is too great (> 250)
2 - transmission table too small
3 - word table too small
4 - receive table overflowed
5 - time-out elapsed
6 - transmission
7 - bad command within table
8 - selected port not configured/available
9 - reception error
10 - can not use %KW if receiving
11 - transmission offset larger than transmission table
12 - reception offset larger than reception table
13 - controller stopped EXCH processing
%SW64 EXCH2 error code: See %SW63.

Master If a master/slave controller restarts, one of the following events happens:


Controller z A cold start (%S0 = 1) forces a re-initialization of the communications.
Restart z A warm start (%S1 = 1) forces a re-initialization of the communications.
z In Stop mode, the controller stops all Modbus communications.

TWD USE 10AE 137


Communications

Modbus Link To configure a Modbus Link, you must:


Example 1 1. Configure the hardware.
2. Connect the Modbus communications cable.
3. Configure the port.
4. Write an application.
5. Initialize the Animation Table Editor.
The diagrams below illustrate the use of Modbus request code 3 to read a slave’s
output words. This example uses two Twido Controllers.

Step 1: Configure the Hardware:

1 Controller RS-485 EIA Port 1 To serial COM 1


Master
Module RS-485 EIA Port 2 TSXPCX1031
2
1 3
0
2 Controller RS-485 EIA Port 1
Slave
Modbus RS-485 EIA Port 2

The hardware configuration is two Twido controllers. One will be configured as the
Modbus Master and the other as the Modbus Slave.

Note: In this example, each controller is configured to use EIA RS-485 on Port 1
and an optional EIA RS-485 Port 2. On a Modular controller, the optional Port 2 can
be either a TWDNOZ485D or a TWDNOZ485T, or if you use TWDXCPODM, it can
be either a TWDNAC485D or a TWDNAC485T. On a Compact controller, the
optional Port 2 can be either a TWDNAC485D or a TWDNAC485T.

To configure each controller, connect the TSXPCX1031 cable to Port 1 of the


controller.

Note: The TSXPCX1031 can only be connected to one controller at a time, on RS-
485 EIA port 1 only.

Next, connect the cable to the COM 1 port of the PC. Be sure that the cable is in
switch position 2. Download and monitor the application. Repeat procedure for
second controller.

138 TWD USE 10AE


Communications

Step 2: Connect the Modbus Communications Cable:


Mini-DIN connection

Twido Twido
Modbus Master Modbus Slave
D1(A+) D0(B-) COM D1(A+) D0(B-) COM
1 2 7

Terminal block connection

Twido Twido
Modbus Master Modbus Slave
D1(A+) D0(B-) 0V D1(A+) D0(B-) 0V
A B SG

The wiring in this example demonstrates a simple point to point connection. The
three signals D1(A+), D0(B-), and COM(0V) are wired according to the diagram.
If using Port 1 of the Twido controller, the DPT signal (pin 5) must be tied to circuit
common (pin 7). This conditioning of DPT determines if TwidoSoft is connected.
When tied to the ground, the controller will use the port configuration set in the
application to determine the type of communication.

Step 3: Port Configuration:

Hardware -> Add Option Hardware -> Add Option


TWDNOZ485- TWDNOZ485-
Hardware => Controller Comm. Setting Hardware => Controller Comm. Setting
Serial Port 2 Serial Port 2
Protocol Modbus Protocol Modbus
Address 1 Address 2
Baud Rate 19200 Baud Rate 19200
Data Bits 8 (RTU) Data Bits 8 (RTU)
Parity None Parity None
Stop Bit 1 Stop Bit 1
Response Timeout (x100ms) 10 Response Timeout (x100ms) 100
Time between frames (ms) 10 Time between frames (ms) 10

In both master and slave applications, the optional EIA RS-485 ports are configured.
Ensure that the controller's communication parameters are modified in Modbus
protocol and at different addresses.
In this example, the master is set to an address of 1 and the slave to 2. The number
of bits is set to 8, indicating that we will be using Modbus RTU mode. If this had been
set to 7, then we would be using Modbus-ASCII mode. The only other default
modified was to increase the response timeout to 1 second.

TWD USE 10AE 139


Communications

Note: Since Modbus RTU mode was selected, the "End of Frame" parameter was
ignored.

Step 4: Write the application:


LD 1 LD 1
[%MW0 := 16#0106 ] [%MW0 := 16#6566 ]
[%MW1 := 16#0300 ] [%MW1 := 16#6768 ]
[%MW2 := 16#0203 ] [%MW2 := 16#6970 ]
[%MW3 := 16#0000 ] [%MW3 := 16#7172 ]
[%MW4 := 16#0004 ] END
LD 1
AND %MSG2.D
[EXCH2 %MW0:11]
LD %MSG2.E
ST %Q0.0
END

Using TwidoSoft, an application program is written for both the master and the slave.
For the slave, we simply write some memory words to a set of known values. In the
master, the word table of the EXCHx instruction is initialized to read 4 words from
the slave at Modbus address 2 starting at location %MW0.

Note: Notice the use of the RX offset set in %MW1 of the Modbus master. The
offset of three will add a byte (value = 0) at the third position in the reception area
of the table. This aligns the words in the master so that they fall correctly on word
boundaries. Without this offset, each word of data would be split between two
words in the exchange block. This offset is used for convenience.

Before executing the EXCH2 instruction, the application checks the communication
bit associated with %MSG2. Finally, the error status of the %MSG2 is sensed and
stored on the first output bit on the local base controller I/O. Additional error checking
using %SW64 could also be added to make this more accurate.

Step 5:Initialize the animation table editor in the master:


Address Current Retained Format
1 %MW5 0203 0000 Hexadecimal
2 %MW6 0008 0000 Hexadecimal
3 %MW7 6566 0000 Hexadecimal
4 %MW8 6768 0000 Hexadecimal
5 %MW9 6970 0000 Hexadecimal
6 %MW10 7172 0000 Hexadecimal

After downloading and setting each controller to run, open an animation table on the
master. Examine the response section of the table to check that the response code
is 3 and that the correct number of bytes was read. Also in this example, note that
the words read from the slave (beginning at %MW7) are aligned correctly with the
word boundaries in the master.

140 TWD USE 10AE


Communications

Modbus Link The diagram below illustrates the use of Modbus request 16 to write output words to
Example 2 a slave. This example uses two Twido Controllers.
Step 1: Configure the Hardware:

1 Controller RS-485 EIA Port 1 To serial COM 1


Modbus
master RS-485 EIA Port 2 TSXPCX1031
2
1 3
0
2 Controller RS-485 EIA Port 1
Modbus
slave RS-485 EIA Port 2

The hardware configuration is identical to the previous example.


Step 2: Connect the Modbus Communications Cable (RS-485):
Mini-DIN connection

Twido Twido
Modbus Master Modbus Slave
D1(A+) D0(B-) COM D1(A+) D0(B-) COM
1 2 7

Terminal block connection

Twido Twido
Modbus Master Modbus Slave
D1(A+) D0(B-) 0V D1(A+) D0(B-) 0V
A B SG

The Modbus communications cabling is identical to the previous example.

TWD USE 10AE 141


Communications

Step 3: Port Configuration:

Hardware -> Add Option Hardware -> Add Option


TWDNOZ485- TWDNOZ485-
Hardware => Controller Comm. Setting Hardware => Controller Comm. Setting
Serial Port 2 Serial Port 2
Protocol Modbus Protocol Modbus
Address 1 Address 2
Baud Rate 19200 Baud Rate 19200
Data Bits 8 (RTU) Data Bits 8 (RTU)
Parity None Parity None
Stop Bit 1 Stop Bit 1
Response Timeout (x100ms) 10 Response Timeout (x100ms) 100
Time between frames (ms) 10 Time between frames (ms) 10

The port configurations are identical to those in the previous example.


Step 4: Write the application:
LD 1
LD 1
[%MW18 := 16#FFFF ]
[%MW0 := 16#010C ]
END
[%MW1 := 16#0007 ]
[%MW2 := 16#0210 ]
[%MW3 := 16#0010 ]
[%MW4 := 16#0002 ]
[%MW5 := 16#0004 ]
[%MW6 := 16#6566 ]
[%MW7 := 16#6768 ]
LD 1
AND %MSG2.D
[EXCH2 %MW0:11]
LD %MSG2.E
ST %Q0.0
END

Using TwidoSoft, an application program is created for both the master and the
slave. For the slave, write a single memory word %MW18. This will allocate space
on the slave for the memory addresses from %MW0 through %MW18. Without
allocating the space, the Modbus request would be trying to write to locations that
did not exist on the slave.
In the master, the word table of the EXCH2 instruction is initialized to read 4 bytes
to the slave at Modbus address 2 at the address %MW16 (10 hexadecimal).

Note: Notice the use of the TX offset set in %MW1 of the Modbus master
application. The offset of seven will suppress the high byte in the sixth word (the
value 00 hexadecimal in %MW5). This works to align the data values in the
transmission table of the word table so that they fall correctly on word boundaries.

142 TWD USE 10AE


Communications

Before executing the EXCH2 instruction, the application checks the communication
bit associated with %MSG2. Finally, the error status of the %MSG2 is sensed and
stored on the first output bit on the local base controller I/O. Additional error checking
using %SW64 could also be added to make this more accurate.
Step 5:Initialize the Animation Table Editor:
Create the following animation table on the master:
Address Current Retained Format
1 %MW0 010C 0000 Hexadecimal
2 %MW1 0007 0000 Hexadecimal
3 %MW2 0210 0000 Hexadecimal
4 %MW3 0010 0000 Hexadecimal
5 %MW4 0002 0000 Hexadecimal
6 %MW5 0004 0000 Hexadecimal
7 %MW6 6566 0000 Hexadecimal
8 %MW7 6768 0000 Hexadecimal
9 %MW8 0210 0000 Hexadecimal
10 %MW9 0010 0000 Hexadecimal
11 %MW10 0004 0000 Hexadecimal

Create the following animation table on the slave:


Address Current Retained Format
1 %MW16 6566 0000 Hexadecimal
2 %MW17 6768 0000 Hexadecimal

After downloading and setting each controller to run, open an animation table on the
slave controller. The two values in %MW16 and %MW17 are written to the slave. In
the master, the animation table can be used to examine the reception table portion
of the exchange data. This data displays the slave address, the response code, the
first word written, and the number of words written starting at %MW8 in the example
above.

TWD USE 10AE 143


Communications

Standard Modbus Requests

Introduction These requests are used to exchange memory words or bits between remote
devices. The table format is the same for both RTU and ASCII modes.
Format Reference number
Bit %Mi
Word %MWi

Modbus Master: The following table represents requests 01 and 02.


Read N Bits
Table Index Most significant byte Least significant byte
Control table 0 01 (Transmission/reception) 06 (Transmission length) (*)
1 03 (Reception offset) 00 (Transmission offset)
Transmission table 2 Slave@(1..247) 01 or 02 (Request code)
3 Address of the first bit to read
4 N1 = Number of bits to read
Reception table (after 5 Slave@(1..247) 01 or 02 (Response code)
response) 6 00 (byte added by Rx Offset action) N2
= Number of data bytes to read
= [1+(N1-1)/8],
where [] means integral part
7 Value of the 1st byte (value = 00 or 01) Value of the 2nd byte (if N1>1)
8 Value of the 3rd byte
(if N1>1)
...
(N2/2)+6 (if N2 is even) Value of the N2th byte (if N1>1)
(N2/2+1)+6 (if N2 is odd

(*) This byte also receives the length of the string transmitted after response

144 TWD USE 10AE


Communications

Modbus Master: The following table represents requests 03 and 04.


Read N Words
Table Most significant byte Least significant byte
Index
Control table 0 01 (Transmission/ 06 (Transmission length) (*)
reception)
1 03 (Reception Offset) 00 (Transmission offset)
Transmission table 2 Slave@(1..247) 03 or 04 (Request code)
3 Address of the first word to read
4 N = Number of words to read
Reception table 5 Slave@(1..247) 03 or 04 (Response code)
(after response) 6 00 (byte added by Rx 2*N (number of bytes read)
Offset action)
7 First word read
8 Second word read (if N>1)
...
N+6 Word N read (if N>2)

(*) This byte also receives the length of the string transmitted after response

Note: The Rx offset of three will add a byte (value = 0) at the third position in the
reception table. This ensures a good positioning of the number of bytes read and
of the read words’ values in this table.

TWD USE 10AE 145


Communications

Modbus Master: This table represents Request 05.


Write Bit
Table Most significant byte Least significant byte
Index
Control table 0 01 (Transmission/ 06 (Transmission length) (*)
reception)
1 00 (Reception offset) 00 (Transmission offset)
Transmission table 2 Slave@(1..247) 05 (Request code)
3 Address of the bit to write
4 Bit value to write
Reception table 5 Slave@(1..247) 05 (Response code)
(after response) 6 Address of the bit written
7 Value written

(*) This byte also receives the length of the string transmitted after response

Note:
z This request does not need the use of offset.
z The response frame is the same as the request frame here (in a normal case).
z For a bit to write 1, the associated word in the transmission table must contain
the value FF00H, and 0 for the bit to write 0.

146 TWD USE 10AE


Communications

Modbus Master: This table represents Request 06.


Write Word
Table Most significant byte Least significant byte
Index
Control table 0 01 (Transmission/ 06 (Transmission length) (*)
reception)
1 00 (Reception offset) 00 (Transmission offset)
Transmission table 2 Slave@(1..247) 06 (Request code)
3 Address of the word to write
4 Word value to write
Reception table 5 Slave@(1..247) 06 (Response code)
(after response) 6 Address of the word written
7 Value written

(*) This byte also receives the length of the string transmitted after response

Note:
z This request does not need the use of offset.
z The response frame is the same as the request frame here (in a normal case).

TWD USE 10AE 147


Communications

Modbus Master: This table represents Request 15.


Write of N Bits
Table Index Most significant byte Least significant byte
Control table 0 01 (Transmission/reception) 8 + number of bytes
(transmission)
1 00 (Reception Offset) 07 (Transmission offset)
Transmission table 2 Slave@(1..247) 15 (Request code)
3 Number of the first bit to write
4 N1 = Number of bits to write
5 00 (byte not sent, offset effect) N2
= Number of data bytes to write
= [1+(N1-1)/8],
where [] means integral part
6 Value of the 1st byte Value of the 2nd byte
7 Value of the 3rd byte Value of the 4th byte
...
(N2/2)+5 (if N2 is even) Value of the N2th byte
(N2/2+1)+5 (if N2 is odd
Reception table (after Slave@(1..247) 15 (Response code)
response)
Address of the 1st bit written
Address of bits written (= N1)

Note:
z The Tx Offset=7 will suppress the 7th byte in the sent frame. This also allows a
good correspondence of words’ values in the transmission table.

148 TWD USE 10AE


Communications

Modbus Master: This table represents Request 16.


Write of N Words
Table Most significant byte Least significant byte
Index
Control table 0 01 (Transmission/ 8 + (2*N) (Transmission
reception) length)
1 00 (Reception offset) 07 (Transmission offset)
Transmission table 2 Slave@(1..247) 16 (Request code)
3 Address of the first word to write
4 N = Number of words to write
5 00 (byte not sent, offset 2*N = Number of bytes to
effect) write
6 First word value to write
7 Second value to write
...
N+5 N values to write
Reception table N+6 Slave@(1..247) 16 (Response code)
(after response) N+7 Address of the first word written
N+8 Address of words written (= N)

Note: The Tx Offset = 7 will suppress the 5th MMSB byte in the sent frame. This
also allows a good correspondence of words’ values in the transmission table.

TWD USE 10AE 149


Advanced Instructions

Transmitting/Receiving Messages - the Exchange Instruction (EXCH)

Introduction A Twido controller can be configured to communicate with Modbus slave devices or
can send and/or receive messages in character mode (ASCII).
TwidoSoft provides the following functions for these communications:
z EXCH instruction to transmit/receive messages
z Exchange control function block (%MSG) to control the data exchanges
The Twido controller uses the protocol configured for the specified port when
processing an EXCH instruction. Each communication port can be assigned a
different protocol. The communication ports are accessed by appending the port
number to the EXCH or %MSG function (EXCH1, EXCH2, %MSG1, %MSG2).
In addition, TWDLCAE40DRF series controllers implement Modbus TCP
messaging over the Ethernet network by using the EXCH3 intruction and %MSG3
function.

EXCH The EXCH instruction allows a Twido controller to send and/or receive information
Instruction to/from ASCII devices. The user defines a table of words (%MWi:L) containing the
data to be sent and/or received (up to 250 data bytes in transmission and/or
reception). The format for the word table is described in the paragraphs about each
protocol. A message exchange is performed using the EXCH instruction.

Syntax The following is the format for the EXCH instruction:


[EXCHx %MWi:L]
Where: x = serial port number (1 or 2); x = Ethernet port (3); L = total number of
words of the word table (maximum 121). Values of the internal word table %MWi:L
are such as i+L <= 255.
The Twido controller must finish the exchange from the first EXCHx instruction
before a second exchange instruction can be started. The %MSG function block
must be used when sending several messages.

Note: To find out more information about the Modbus TCP messaging instruction
EXCH3, please refer to TCP Modbus Messaging, p. 180.

476 TWD USE 10AE


Advanced Instructions

Exchange Control Function Block (%MSGx)

Introduction
Note: The "x" in %MSGx signifies the controller port: "x = 1 or 2"
z x = 1 or 2, signifies the serial port 1 or 2 of the controller, respectively;
z x = 3, signifies the Ethernet network port of the controller (on TWDLCAE40DRF
controllers only). For more information about the %MSG3 function, please refer
to TCP Modbus Messaging, p. 180.

The %MSGx function block manages data exchanges and has three functions:
z Communications error checking:
Error checking verifies that the block length (word table) programmed with the
EXCH instruction is large enough to contain the length of the message to be sent
(compare with length programmed in the least significant byte of the first word of
the word table).
z Coordination of multiple messages:
To ensure coordination when sending multiple messages, the %MSGx function
block provides the information required to determine when a previous message
is complete.
z Transmission of priority messages:
The %MSGx function block allows the current message transmission to be
stopped, in order to allow the immediate sending of an urgent message.
The programming of the %MSGx function block is optional.

Illustration The following is an example of the %MSGx function block.

%MSG1
R D

TWD USE 10AE 477


Advanced Instructions

Parameters The following table lists parameters for the %MSGx function block.
Parameter Label Value
Reset input (or R At state 1, reinitializes communication: %MSGx.E = 0 and
instruction) %MSGx.D = 1.
Comm. done %MSGx.D State 1, comm. done, if:
output z End of transmission (if transmission)
z End of reception (end character received)
z Error
z Reset the block
State 0, request in progress.
Fault (Error) %MSGx.E State 1, comm. done, if:
output z Bad command
z Table incorrectly configured
z Incorrect character received (speed, parity, etc.)
z Reception table full (not updated)
State 0, message length OK, link OK.

If an error occurs when using an EXCH instruction, bits %MSGx.D and %MSGx.E
are set to 1, and system word %SW63 contains the error code for Port 1, and
%SW64 contains the error code for Port 2. See System Words (%SW), p. 604.

Reset Input (R) When Reset Input set to 1:


z Any messages that are being transmitted are stopped.
z The Fault (Error) output is reset to 0.
z The Done bit is set to 1.
A new message can now be sent.

Fault (Error) The error output is set to 1 either because of a communications programming error
Output or a message transmission error. The error output is set to 1 if the number of bytes
(%MSGx.E) defined in the data block associated with the EXCH instruction (word 1, least
significant byte) is greater than 128 (+80 in hexadecimal by FA).
The error output is also set to 1if a problem exists in sending a Modbus message to
a Modbus device. In this case, the user should check wiring, and that the destination
device supports Modbus communication.

Communications When the Done output is set to 1, the Twido controller is ready to send another
Done output message. Use of the %MSGx.D bit is recommended when multiple messages are
(%MSGx.D) sent. If it is not used, messages may be lost.

478 TWD USE 10AE


Advanced Instructions

Transmission of Execution of the EXCH instruction activates a message block in the application
Several program. The message is transmitted if the message block is not already active
Successive (%MSGx.D = 1). If several messages are sent in the same cycle, only the first
Messages message is transmitted. The user is responsible for managing the transmission of
several messages using the program.
Example of a transmission of two messages in succession on port 2:
%I0.0 %MSG2.D
P EXCH2%MW2:4 LDR %I0.0
AND %MSG2.D
%M0 [EXCH2 %MW2:4]
S S %M0
%MSG.D %M0 LD %MSG2.D
AND %M0
EXCH2%MW8:3
[EXCH2 %MW8:3]
%M0 R %M0
R

Reinitializing An exchange is cancelled by activating the input (or instruction) R. This input
Exchanges initializes communication and resets output %MSGx.E to 0 and output %MSGx.D to
1. It is possible to reinitialize an exchange if a fault is detected.
Example of reinitializing an exchange:

%M0 %MSG1
BLK %MSG1
LD %M0
R D R
END_BLK

Special Cases The following table the special operating cases for the %MSGx function block.
Special Case Description
Effect of a cold restart (%S0=1) Forces a reinitialization of the communication.
Effect of a warm restart (%S1=1) Has no effect.
Effect of a controller stop If a message transmission is in progress, the
controller stops its transfer and reinitializes the
outputs %MSGx.D and %MSGx.E.

TWD USE 10AE 479


System Bits and Words

System Function Description Control


Word
%SW59 Adjust current Adjusts the current date. U
date Contains two sets of 8 bits to adjust current date.
The operation is always performed on rising edge of the bit. This word is
enabled by bit %S59.
Increment Decrement Parameter
bit 0 bit 8 Day of week
bit 1 bit 9 Seconds
bit 2 bit 10 Minutes
bit 3 bit 11 Hours
bit 4 bit 12 Days
bit 5 bit 13 Month
bit 6 bit 14 Years
bit 7 bit 15 Centuries
%SW60 RTC correction RTC correction value U
%SW63 EXCH1 block EXCH1 error code: S
error code 0 - operation was successful
1 – number of bytes to be transmitted is too great (> 250)
2 - transmission table too small
3 - word table too small
4 - receive table overflowed
5 - time-out elapsed
6 - transmission
7 - bad command within table
8 - selected port not configured/available
9 - reception error
10 - can not use %KW if receiving
11 - transmission offset larger than transmission table
12 - reception offset larger than reception table
13 - controller stopped EXCH processing
%SW64 EXCH2 block EXCH2 error code: See %SW63. S
error code

TWD USE 10AE 609

You might also like