Frequently Asked Questions

<< Click to Display Table of Contents >>

 

Frequently Asked Questions

Known peculiarities of Twido devices by Schneider

The application is trying to read a Float-type value, but it is failing. The value displayed by this PLC is completely different from the one displayed by the application for the same address.

Answer: This device does not use protocol's default byte order, or big endian. Users must configure a byte order by executing a swap of Words, which corresponds to the b2 option on the configuration by Strings., or select the Swap Words option on the configuration of operations on numerical configuration. For more information, please check topic Operations Tab.

The application is trying to read inputs and outputs of this PLC, but it is failing.

Answer: This device does not allow reading or writing input and output variables, and users must use PLC's internal variables to perform this reading, that is, create a mirror of inputs and outputs in an area where this Driver has access. Users must also be careful to create a PLC routine to check when an application changes an output value, so that it is effectively activated or deactivated in this PLC.

 

Known peculiarities of MPC 6006 devices by Atos - Schneider

The application is trying to read a DWord-type value, but the correct value is not displayed. The application displays values different from the ones in this PLC.

Answer: Please check the article Using Modbus Master (ASC/RTU/TCP) drivers with ATOS's controllers on Elipse Knowledgebase. If using the new String configuration, the Device and Item fields, also check section Byte Order on topic String Configuration. If using the old numerical configuration, the N/B parameters, also check topic Operations Tab, specially the Byte Order section.

 

How to join two Int16-type values in this PLC into an Int32-type value in the application?

There is a 32-bit number stored in two 16-bit registers in this PLC. How to display this number on an application's screen as a single 32-bit register?

Answer: Users must create Tags using 32-bit data types, such as Float, DWord, or Int32 data types. When configuring an I/O Tag, users must inform the first address of each PLC variable. For more information, please check topic Configuring an I/O Tag. This Driver then joins two 16-bit registers from the device into a single 32-bit value, which is returned on Tag's Value field or on Block Tag's Element. If using a configuration by Strings, the Device and Item fields, inform a data type right after register's address. For more information, please check topic String Configuration. If using the old numerical configuration, the N/B parameters, users must define operations with 32-bit data types. Notice that, on the Operations tab of the configuration window, 32-bit data types are always displayed with a four-byte size, the Size field. For more information, please check topic Supported Data Types.

The application is already developed, but how to join values from two Words into a single Tag?

Answer: Users can execute that join operation using scripts, by creating an unsigned 32-bit integer. To do so, users must multiply the Word that contains the highest part of that Word by 65536 and then sum the Word that contains the lowest part of that Word. For example, UInt32 = (HighWord × 65536) + LowWord.

The application wants to read Float-type values. A reading function 03 and a writing function 16 with a Float data type were configured. However, the application displays a value that is different from the one on this device.

Answer: The official Modbus protocol uses a big endian byte order, with the most significant bytes of every value coming first. If this Driver is reading nonsense values, even with its address correctly configured, probably the device uses a non-standard byte order. In this case, users must configure its swap options. If users are using a configuration by Strings, the Device and Item fields, please check the Byte Order section on topic String Configuration. If users are using the old numerical configuration, the N/B parameters, please check the Byte Order section on topic Operations Tab for more information on using these swap options.

 

How to communicate with more than one device on a Serial communication network?

There is more than one device on a serial network, each one with a unique address. How to communicate with every one of them?

Answer: Users must be careful with the Slave Id of each I/O Tag, because this field indicates the device to communicate. On an RS485 serial network, all devices listen simultaneously to all driver requests, that is, there is a single bus, although only the one with the corresponding Slave Id responds to the request, because multiple devices with the same Id are not allowed. When configuring by Strings, this value can be provided in the Device field, or at the beginning of the Item field. For more information, please check topic String Configuration. If users are using the numerical configuration, this value is provided in the N1/B1 parameter of each Tag. Users can use the same operations for Tags from several devices. A good reference for information and tips regarding the installation and maintenance of serial networks is the book Serial Port Complete, by Jan Axelson.

There is more than one serial port on the computer. How to configure this Driver to communicate with devices connected to each one of these ports?

Answer: In this case, as there is more than one different physical layer, such as Serial 1, Serial 2, and so on, it is necessary as many I/O Drivers as the existing ports. Configurations for this Driver's Tags can be the same for all Driver objects or instances. The only difference is that one Driver must be configured to communicate via Serial 1 port, another Driver configured to communicate via Serial 2 port, and so on. Port configuration is performed on the Serial tab of this Driver's configuration window. For more information, please check topic Properties.

 

How to communicate with more than one device on a serial network with an RS485 converter?

There is an RS485 network with several devices communicating via an RS232-RS485 converter using a Serial port. Whenever an address switches (Slave ID), that is, when this Driver requests data from another device, a time-out occurs. After retrying the same message, this device answers normally. Is there a way of preventing this time-out during an address or Slave ID switching?

Answer: Some RS232-RS485 converters require a time interval to switch, that is, commuting from transmission mode to reception mode, or vice versa. To circumvent this limitation, users can use the Inter-frame delay option on the Serial tab of IOKit library, available on the configuration window. This option defines a time interval between messages. The exact value of this interval depends on the converter in use but, if it is unknown, users are recommended to try values between 50 ms and 300 ms.

 

NOTE

The Inter-frame delay option of IOKit library may significantly degrade performance in some applications, and it must be used only when absolutely necessary. Please be sure that this converter is in good conditions, and if it effectively requires a delay. If needed, please check with manufacturer's technical support.

 

How to communicate with more than one device on an Ethernet network?

There is more than one device connected to an Ethernet network, each one with a unique IP address. How to communicate with each one of them?

Answer: Currently, for each IP address, users need as many I/O Drivers as the number of IP addresses to communicate. The configuration referring to this Driver Tags can be the same for all Drivers. The only difference is that one Driver must be configured to communicate with IP address 1 (one), another Driver must be configured to communicate with IP address 2 (two), and so on. The Slave Id parameter can be still used in Modbus TCP mode to differentiate devices connected to a Modbus Ethernet / RS485 gateway on the same IP address. Notice that this gateway not only must allow an interconnection among Ethernet and serial networks, but also convert ModbusTCP frames for the serial modes supported by devices, ModbusRTU or ModbusASC. The IP address must be configured on the Ethernet tab of IOKit library, on this Driver's configuration window.

 

TIP

Avoid using protocol's RTU or ASC mode encapsulated in TCP/IP layer. If users want to encapsulate serial communication of devices using Modbus RTU in TCP/IP, there are gateways available in the market that not only encapsulate serial communication in Ethernet TCP/IP, the physical, network, and transport layers, but also convert Modbus RTU into Modbus TCP, the application layer. As a last option, if it is inevitable to use Modbus RTU in Ethernet TCP/IP layer, enable the Reconnect after Timeout option, described on topic Modbus Tab.

 

Modbus Simulator Software

Is there any software that simulates Modbus protocol and can be used for testing with this Driver?

Answer: Yes, there are several alternatives. Elipse Software provides a free version (demo) of Elipse Modbus Simulator on its website, which allows simulating the most basic protocol features. There is also the possibility of using Elipse Software's Modbus Slave Driver as an emulator. Another possibility is Modsim, one of the oldest and well known alternatives to emulate a slave Modbus device. This simulator can be purchased at http://www.win-tech.com/html/modsim32.htm. In addition to it, there is also a free and open alternative named Free Modbus PLC Simulator, available at http://www.plcsimulator.org. There are still many other options and a list with other software can be found at Modbus.org website.

 

How to configure the N4/B4 parameter of I/O Tags?

Which address to use in the N4/B4 parameter of an I/O Tag?

Answer: This address varies from device to device. To know which is the exact address to use, please check device's documentation or contact its manufacturer's technical support. The topic Addressing Tips (Modbus Convention) provides tips on common additional offset conventions used by many manufacturers.

 

When to use RTS and DTR controls that appear on the Serial tab of this Driver's configuration window?

The device is communicating directly on computer's RS232 serial port. How to configure RTS and DTR controls?

Answer: Please check device's documentation or manufacturer's technical support for the correct configuration.

The device is communicating through an RS232-RS485 converter connected to computer's RS232 serial port. How to configure RTS and DTR controls?

Answer: When communicating with devices using RS232-RS485 converters, such configurations depend on the converter. The device, or Slave, does not influence it, as these signals only exist on the RS232 serial side, with no equivalent on the RS485 serial layer. The RTS control is commonly used by older converters to switch between transmission and reception modes, because RS485 is half-duplex, and in these cases it must be configured in Toggle mode. There are some rare devices that require other configurations. On most recent converters, however, switching between transmission and reception is automatic, and these signals in general are not used, and they may be ignored. For more information, please check converter's documentation or manufacturer's technical support.

 

When to use Swap Bytes, Swap Words, and Swap DWords options?

These options must be used for 16-, 32-, or 64-bit data types, whose byte order of this device-provided value does not correspond to Modbus default byte order, where the most significant bytes always come first, or big endian standard, also known as Motorola. If this Driver is reading nonsense values, or values different from the ones stored on the PLC, it may use a byte order different from protocol's default. For more information, please check section Byte Order on topic String Configuration or, if using the old numerical configuration, the N/B parameters, please check section Byte Order on topic Operations Tab. Users are also advised to check device's documentation.

The application is trying to read a Word value, but this value appears different from the one configured in the PLC. If in the PLC it is configured as "1" (one), the application displays it as "256".

Answer: Value 1 (one) in hexadecimal is 0001H and value 256 in hexadecimal corresponds to 0100H. This device has a non-standard byte order. Users must enable the Swap Bytes option, the "b1" option on the String Configuration, to read the correct value.

The application contains a Tag configured to read a DWord value, but the value read by the application is different from the value stored in the PLC. When setting the value "258", for example, to a PLC register, the application displays a nonsense value of "16908288".

Answer: The value 258 in hexadecimal is 00000102H and the value 16908288 in hexadecimal corresponds to 01020000H. This device has a byte order different from protocol's default, where the least significant Word comes first. In this case, users must enable the Swap Words option, the "b2" option on the String Configuration, to read the correct value.

 

How to correctly read Float data types from WEG TPW-03 PLCs?

Answer: When configuring I/O Tags, users must enable the Swap Words option, which corresponds to the "b2" option on String configuration. If users are using the old numerical configuration, the N/B parameters, please check section Byte Order on topic Operations Tab.

 

Known peculiarities of devices from the ABB Advant Controller 31 series 90 family, such as ABB 07KT97

An E3 or Elipse Power application is trying to read registers or bits from a PLC, but there are always errors.

Answer: Devices from this series do not allow using E3 or Elipse Power Superblocks for the following reasons:

There are interruptions on the address map of device's registers, with undefined address intervals.

The maximum PDU size is different from the one established by protocol's default, and it is defined as a size that supports 96 Words or Bits. As this protocol groups eight bits at each data byte, that results in different maximum PDU sizes for reading functions for Bits and Words, which prevents customizing the maximum PDU size allowed by this Driver, which does not allow configuring different limits for each protocol function.

Solution: Follow these steps:

Disable Superblock reading, by configuring this Driver's EnableReadGrouping property to False.

Prefer defining Block Tags, by grouping the largest possible number of variables in the smallest number of blocks, respecting device's limit of 96 Words or 96 Bits for each Block. For more information, please check section about Manual Grouping on topic Superblock Reading (Grouping).

 

NOTE

Users can also use automatic grouping, or Superblocks, if there is no need to read Words and Bits on the same Driver object, obviously depending on the interval of addresses to read, more specifically, whether this interval contains interruptions or not. In this case, anyway, users must configure the Customize Max. PDU Size option on the Modbus tab, according to the limit of 96 Words, 96 × 2 = 192 bytes, or 96 Bits, 96 ÷ 8 = 12 bytes. Such possibility can be carefully evaluated, in a case-by-case basis, by the application's developer.

 

The application is trying to read values with Float data types, and the following message appears on this Driver's log: "Warning: denormalized float number! Returning zero". What to do?

Answer: This message does not mean a communication or configuration error. Users are advised to check PLC's programming why it is returning non-normalized values.

Additional Information: Such message indicates that the device sent a floating point value, a Float, to this Driver in IEEE 754 format, but non-normalized. Such values may be a result of arithmetical operations with results that extrapolate all representation possibilities of this format, such as overflow, underflow, +∞, and −∞, among others. Non-normalized values are described in IEEE 754 standard, and they are not supposed to raise problems for this Driver or for an application. However, due to previous error detections related to specific hardware, this Driver now returns 0 (zero) to an application when receiving non-normalized values from a device, registering this message on log.

Was this page useful?