Frequently Asked Questions

<< Click to Display Table of Contents >>

 

Frequently Asked Questions

Known peculiarities of a Twido device by Schneider

The application is trying to read a Float-type value, but it is failing. The value displayed by a device is completely different from the one displayed by this 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.

An application is trying to read inputs and outputs of a device, but it is failing.

Answer: This device does not allow reading or writing input and output variables, and users must use internal variables of this device 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 routine in this device to check when an application changes an output value, so that it is effectively activated or deactivated in this device.

 

Known peculiarities of an MPC 6006 device by Atos - Schneider

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

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 or B parameters, also check topic Operations Tab, specially the Byte Order section.

 

How to join two values with an Int16 data type in a device into a value with an Int32 data type value in an application?

There is a 32-bit number stored in two 16-bit registers each in this device. 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 variable in a device. For more information, please check topic Configuring an I/O Tag. This Driver then joins two 16-bit registers from a device into a single 32-bit value, which is returned on the Value property of a Tag or an Element of a Block Tag. If using a configuration by Strings, the Device and Item fields, inform a data type right after the address of a register. For more information, please check topic String Configuration. If using the old numerical configuration, the N or 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 size of 4 (four) bytes, the Size field. For more information, please check topic Supported Data Types.

An application is already developed, but how to join values from 2 (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.

An application must read values with a Float data type. A reading function 03 and a writing function 16 with a Float data type were configured. However, an Elipse E3, Elipse Power, or Elipse Water 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 this 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 or 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 these devices?

Answer: Users must be careful with the Slave Id of each I/O Tag, because this field indicates which device to communicate. On RS-485 serial networks, all devices listen simultaneously to all requests from this Driver, that is, there is a single bus, although only the one with the corresponding Slave Id responds to that request, because multiple devices with the same identifier 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 or 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 a 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 RS-485 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 condition, 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 these devices?

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 / RS-485 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 or B4 parameter of I/O Tags?

Which address to use in the N4 or 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 a 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?

A device is communicating directly on a computer's RS-232 serial port. How to configure RTS and DTR controls?

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

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

Answer: When communicating with devices using RS232-RS485 converters, such configurations depend on the converter. This device, or Slave, does not influence it, as these signals only exist on the RS-232 serial side, with no equivalent on the RS-485 serial layer. The RTS control is commonly used by older converters to switch between transmission and reception modes, because RS-485 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 a converter's documentation or a 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, in which 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 a device, 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 or B parameters, please check section Byte Order on topic Operations Tab. Users are also advised to check a device's documentation.

An application is trying to read a Word value, but this value appears different from the one configured in this device. If in this device it is configured as "1" (one), this 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.

An application contains a Tag configured to read a DWord value, but the value read by this application is different from the value stored in this device. When setting the value "258", for example, to a register in this device, this 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, in which 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 devices?

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 or 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 Elipse E3, Elipse Power, or Elipse Water application is trying to read registers or bits from a device, but there are always errors.

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

There are interruptions on the map of register addresses of these devices, 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 8 (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:

1.Disable Superblock reading, by configuring the EnableReadGrouping property of this Driver to False.

2.Prefer defining Block Tags, by grouping the largest possible number of variables in the smallest number of Blocks, respecting a 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 an application's developer.

 

An 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 a device's programming why it is returning non-normalized values.

Additional Information: Such message indicates that this 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 types of devices, 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?