Professional Documents
Culture Documents
The Proficy HMI/SCADA – CIMPLICITY product has the ability to communicate to any MODBUS TCP/IP
device that meets the Modicon MODBUS TCP/IP specifications; however, only the specific devices listed
below are preconfigured in Proficy HMI/SCADA – CIMPLICITY.
Modicon 184/384
Modicon 484
Modicon 584
Modicon 984
GE Intelligent Platforms VersaMax ENIU
GE Intelligent Platforms VersaPoint ENIU
Quantum
To configure the MODBUS TCP/IP protocol to communicate with other MODBUS TCP/IP compliant
devices not in this list additional configuration is required. The addition of a STAT_PLC or GENERIC_PLC
will have to be added to the Device Model type to allow for the custom MODBUS TCP/IP compliant
communication. This document will explain the additional configuration required to configure these
model Types.
2 Requirements
3 How it works
With the normally defined Modbus Devices (those shown in the device drop down) they are known
devices and have pre-defined maximum memory sizes and Modbus settings. Although the driver does
some checking on project startup with these devices, the maximums are accepted and static. When
you are using a Generic device the maximum memory size is simply not known. Due to this fact, a
model can be added that allows for the maximum memory size to be manually added. This is called the
STAT_PLC model (Static Memory Sized PLC).
It is also possible to add the GENERIC_PLC model type using the same steps. The main difference
between GENERIC_PLC and STAT_PLC is that GENERIC_PLC will actively attempt to find the memory
sizing when you first start the driver, whereas STAT_PLC will use the INI files to determine the
maximum memory sizes.
4 Licensing
4.1 Ensure the system is licensed for Modbus TCP.
Figure 1.1 – Proficy License Viewer for CIMPLCITY 7.0 and Higher
5.1 If you have not yet created a project the STAT_PLC or Generic PLC model are not selectable from
the device configuration screen and can be added to the CIMPLICITY configuration by editing the
IC646TME000.MODEL configuration file located in the BSM_DATA subdirectory of the original
CIMPLICITY distribution.
NOTE: Proficy HMI/SCADA – CIMPLICTY 8.2 SIM 5 add STAT_PLC to the standard model types
and can be used in place of step 5.1.
Figure 1.3 – Modify CIMPLCITY Install to Make STAT_PLC default Model Type
5.3 NOTE: STAT_PLC and GENERIC PLC are now selectable in the device properties -> General (Tab)
-> Model type.
Project Properties
Create Port:
5.5 Skip step 6 ”Existing Project Configuration” and Continue to step 7 “Device configuration” if
using the STAT_PLC device type.
6.1 For an existing project with Modbus TCP/IP already being used in it, you must modify some of
the project files in order for the STAT_PLC or GENERIC PLC Models to be listed.
NOTE: Command Prompt MUST be opened from the workbench as required environmental
variables are set.
6.4 Type “notepad model.idt” and add the following lines to the file.
MB_TCPIP|STAT_PLC|35
MB_TCPIP|Generic PLC|180
6.5 In notepad, do a File->Save. Then exit notepad.
6.6 At the same command prompt type “scpop model” and press <ENTER>
6.8 You can now create a new device using the STAT_PLC or GENERIC PLC device types.
Figure 1.10 – STAT_PLC in Device Properties Model Type
Field Description
Description Enter the base scan rate for the port. Point scan rates are multiples of the base rate.
You can specify a scan rate in Ticks (100 ticks = 1 second), Seconds, Minutes, or Hours.
Scan Rate Enter an optional description to help you identify the port.
Retry If communications cannot be established for a device on the port, the device is
Count considered to be down, and a $DEVICE_DOWN alarm is generated. Once a device is
down, periodic attempts are made to resume connections to it.
Enter the number of scans to wait before attempting to reconnect to a device after a
communications error has been detected.
Enable Set this check box if you want the port to be enabled when the project starts. If you
clear this check box, the port will not be enabled when the project starts, and points
will not be available for devices on the
NOTE: Saved setting will not be used with STAT_PLC and should only be used in advanced
implementations. Consult CIMPLICITY help and/or GE technical support for more information.
Where:
X.X.X.X is the Modicon Bridge IP address and Y is the Destination ID of the device to route the
message to.
Example
NOTE: Some stand alone MODBUS devices will require the X.X.X.X@Y even though they are not
configured through a dedicated MODBUS switch. Consult the manufactures documentation to see if
this applies to your device.
8 STAT_PLC INI Configuration
8.1 Once the model type is added you then have to create the INI file that lists out the maximum
domain sizes for the STAT_PLC device. To do this you will have to consult the documentation
provided with your "Generic" Modbus TCP/IP Device. The rules for this INI file are as follows:
Example:
MASTER_MBTCP0.INI
MASTER_MBTCP1.INI
8.2 In the INI file you specify the memory domain and the number of bytes in each domain. This is
done for each STAT_PLC device.
If the STAT_PLC sizes are not defined in the INI file the defaults are:
NOTE: See Appendix B for a detailed sample of MASTER_MBTCP0.INI that can be copies into
notepad.exe and save in the projects data directory.
9 Point Configuration
9.1 Create a new Modbus TCP point in the Project:
Update Criteria The update criteria you use determines how the data will be requested.
Select On Change or On Scan for points whose values should be polled by the Modbus
TCP/IP driver at regular intervals.
Select On Demand On Scan or On Demand On Change for points whose values should
be polled by the Modbus TCP/IP driver at regular intervals while users are viewing
them.
Select Unsolicited for points whose value will be sent by the programmable controller
as necessary.
Important: The address of the unsolicited data must exactly match the point address.
NOTE: Unsolicited Modbus requires special considerations in the Modbus device and in
CIMPLCIITY in regards to Global Parameters and settings. This configuration is outside
the scope of this document. More more information please Contact GE Intelligent
Platforms support and review the Proficy HMI/SCADA – CIMPLCITY help files.
Address Enter the point address of the data as follows:
0xxxx or 0xxxxx for Coils
1xxxx or 1xxxxx for Discrete Inputs
3xxxx or 3xxxxx for Input Registers
4xxxx or 4xxxxx for Holding Registers
6yxxxx or 6yxxxxx for General Reference
D4xxxx or D4xxxxx for Holding Registers as Double Precision
Where xxxx or xxxxx is the bit number or register number of the point. For example, the
address of Holding Register 1 is 40001, and the address of Coil 1 is 00001.
If you are configuring a General Reference point, y is the file number.
Double Precision points in Holding Registers require two Holding Registers per point. The
upper register is multiplied by 10000 and the product is added to the lower register to get
the resulting value. No more than one Double Precision point may be written in a single
write operation. Use DINT or UDINT types for these points.
If you are configuring an Analog point type in Discrete Inputs or Coils, the address entered
in this field must be that of the least significant bit of the point. For example, if you
configure a 16-bit analog point for Coils 17 through 32, enter 00017 in this field.
When you configure Boolean points in Holding Registers, Input Registers, or General Reference, you
must also enter data in the following field:
Bit Offset Enter the bit offset in the Holding Register, Input Register, or General Reference that defines
the point, where 0 is the least significant bit and 15 is the most significant bit.
10 Appendix A – MODBUS TCP/IP Global Parameters
----------------------------------------------------------
Global Parameter: [DEVICEID]_CONN_SECONDARY
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.0.3
Hotfix: Description: Host Redundancy with Devices with One Connection
Some devices will only support one connection. In host redundant environments, it is necessary to
identify the devices with this characteristic so that the connection can be terminated on the acting
secondary and initiated on the primary following a transition in the host redundancy roles. Note that
a device down will not be generated as a result of not having a connection with the secondary. To
identify a device that only support a single connection, define the following project level global:
----------------------------------------------------------
Global Parameter: [DEVICEID]_CONSERVES_CONN
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.0.3
Hotfix: Description: Connection Conservation
Some devices will terminate a connection if it there is no activity for some pre-configured interval. For
devices which exhibit this behavior, a global variable may be defined so re-define the device
communication interface’s handling a disconnect as it relates to device down. When the global is
defined, the device will not be declared down unless it is unable to re-establish the connection and
perform the next immediate I/O operation to request or modify data on the device. The global is
defined on a device-by-device basis at the project level as follows:
Note that for device model VersaPoint ENIU, the device communication interface will perform specific
processing that overrides the behavior of this setting.
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: [DEVICEID]_ONE_COIL_WRITE
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: Hotfix: Description: Some devices use the Force Single Coil command (function code 5)
for writing single coils while others support (sometimes exclusively) the Force Multiple Coils (function
code 15) when writing coils. It is possible to configure the Modbus Ethernet communication interface
to use a specific function code when writing single coils when interacting with a particular device. To
control the behavior, for this specific action on a specific device, define the following project level
global variable as shown below:
Note that for device models Modicon 484, VersaMax ENIU and VersaPoint ENIUs, single coils writes will
be selected regardless of the user-configured preferences.
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: [DEVICEID]_ONE_REG_WRITE
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: Hotfix: Description: Writing Single Holding Registers
Some devices use the Force Single Holding Registers command (function code 6) to write a single
holding register while other support (sometimes exclusively) the Force Multiple Holding Registers
Command (Function Code 16). To control the behavior, for this specific function on a specific device,
define the following global as shown below at the project level:
Note that for device models Modicon 484, VersaMax ENIU and VersaPoint ENIUs, when performing a
request to write a single register, single register writes will be selected regardless of the user
configured preferences.
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: [PORT]_ASYNC_CONNECTION
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.1 SP 2
Hotfix: Description: Support is now available for asynchronous maintenance of the Modbus TCP/IP
connections. The feature can be enabled on a project or port basis by configuring the appropriate
project global parameter. By default, the feature is disabled and connections are maintained
synchronously.
Global (project): MBETH_ASYNC_CONNECTION - affects all Modbus TCP/IP devcoms on the same
project.
Value: Y or N (default)
Global (project): [PORT]_ASYNC_CONNECTION - affects all Modbus TCP/IP devices on the given port.
where [PORT] is the name of the port (ie MBTCP0).
Value: Y or N (default)
Configure this parameter to a value of Y to specify asynchronous connection management for all
devices configured on the [PORT]. Configure the parameter to a value of N to define synchronous
connection management for all devices configured on the [PORT].
IMPORTANT: There are Modbus TCP/IP bridges that do not provide a response as defined by the
Modbus TCP/IP protocol when the queried device is not present. If such devices are configured on a
CIMPLICITY port, use a synchronous connection on the port.
Ports with devices utilizing such bridges are not supported in asynchronous mode. In addition, the use
of synchronous communications is forced when either the MBETH_NORESP_ipaddress or
[DeviceID]_CONSERVES_CONN global parameter is enabled.
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: [PORT]_DISABLE_IO_ERRLOG
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.0 SP 3
Hotfix: Description: The disabling of logging of I/O errors on a specific Modbus Ethernet port within a
project may be defined as follows:
Global: [PORT]_DISABLE_IO_ERRLOG
Value: Y or N (default)
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: [PORT]_DISABLE_UNSO_DATA
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.0 SP 3
Hotfix: Description: The Modbus TCP/IP device communication interface is designed so that only one
Modbus Ethernet device communication port per computer should be processing the unsolicited data.
By default, the ability to process unsolicited data is enabled on all Modbus Ethernet ports.
To disable unsolicited communication on a single Modbus Ethernet port, define the following project
global where <PORT> is the name of the Modbus Ethernet Port.
Value: Y or N
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: [PORT]_ENABLE_PROTOCOL_DEBUG
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.0 SP 3
Hotfix: Description: Protocol level diagnostics can be logged to the Modbus Ethernet’s port file. By
default, logging is disabled.
Protocol level debugging may be enabled on a single port basis by defining the project level global
variable where [PORT] is the Modbus port in the project.
Value: Y or N (default)
Protocol information is logged in a HEX representation. All data is flushed to the file when the
communication interface terminates. Prior to this time, all data may not have been flushed to the disk.
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: [PORT]_REQ_MILLISECOND_TIMEOUT
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.1 SP 2
Hotfix: Description: Time-outs may now be specified down to the millisecond level by configuring a
project and/or port level global parameters. These parameters work in conjunction with the pre-
existing time-out parameters. The parameters are described below.
Define this project level global to specify a default millisecond component to the timing for all devices
configured in the project.
NOTE: The [PORT] in the above parameters represents the port name, such as MBTCP0.
----------------------------------------------------------
Global Parameter: [PORT]_SOCKET_PORT
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 7.5
Hotfix: SIM 4
Description: Problem
Users were not able to configure the Modbus TCP/IP protocol to use a configurable port (instead of the
hard coded port 502).
There are now two global parameters available that enable a system manager to specify the Modbus
TCP/IP port number.
MBETH_SOCKET_PORT
For: Project
Purpose: To reset the default socket port for Modbust TCP/IP from 502 to the designated value.
Comment: [PORT]_SOCKET_PORT takes precedence over MBETH_SOCKET_PORT.
Value: Port number that should be the new default
Default Value: 502
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: [PORT]_UNSO_DATA_QUEUE_SIZE
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.0 SP 3
Hotfix: Description: Unsolicited data from devices is queued by each port for processing. The default
queue size is 16 messages. This can be changed on a project basis by defining this global parameter
where <PORT> is the port name of the Modbus TCP/IP port.
----------------------------------------------------------
Global Parameter: MBETH_ASYNC_CONNECTION
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.1 SP 2
Hotfix: Description: Support is now available for asynchronous maintenance of the Modbus TCP/IP
connections. The feature can be enabled on a project or port basis by configuring the appropriate
project global parameter. By default, the feature is disabled and connections are maintained
synchronously.
Global (project): MBETH_ASYNC_CONNECTION - affects all Modbus TCP/IP devcoms on the same
project.
Value: Y or N (default)
Global (project): [PORT]_ASYNC_CONNECTION - affects all Modbus TCP/IP devices on the given port.
where [PORT] is the name of the port (ie MBTCP0).
Value: Y or N (default)
Configure this parameter to a value of Y to specify asynchronous connection management for all
devices configured on the [PORT]. Configure the parameter to a value of N to define synchronous
connection management for all devices configured on the [PORT].
IMPORTANT: There are Modbus TCP/IP bridges that do not provide a response as defined by the
Modbus TCP/IP protocol when the queried device is not present. If such devices are configured on a
CIMPLICITY port, use a synchronous connection on the port.
Ports with devices utilizing such bridges are not supported in asynchronous mode. In addition, the use
of synchronous communications is forced when either the MBETH_NORESP_ipaddress or
[DeviceID]_CONSERVES_CONN global parameter is enabled.
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: MBETH_DISABLE_IO_ERRLOG
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.0 SP 3
Hotfix: Description: To disable logging of I/O errors for all Modbus Ethernet ports within a project, this
project level global can be defined.
Value: Y or N (default)
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: MBETH_DISABLE_UNSO_DATA
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.0 SP 3
Hotfix: Description: The Modbus TCP/IP device communication interface is designed so that only one
Modbus Ethernet device communication port per computer should be processing the unsolicited data.
By default, the ability to process unsolicited data is enabled on all Modbus Ethernet ports. This global
parameter will disable unsolicited data on the project.
Value: Y or N
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: MBETH_ENABLE_PROTOCOL_DEBUG
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.0 SP 3
Hotfix: Description: Protocol level diagnostics can be logged to the Modbus Ethernet’s port file. By
default, logging is disabled.
To enable debugging for all Modbus Ethernet interfaces on the project, define the project level global
variable:
Value: Y or N (default)
Protocol information is logged in a HEX representation. All data is flushed to the file when the
communication interface terminates. Prior to this time, all data may not have been flushed to the disk.
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: MBETH_NORESP_[IPADDRESS]
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.0 SP 2
Hotfix: Description: Not all Modbus Ethernet Bridges behave the same when a request is made of a
device that is not available through the bridge. Some bridges respond indicating that the device is not
present while others will not respond at all. For bridges that fall into the latter category, define this
global parameter.
With the global parameter defined as shown, should the device communication interface request data
from a device communicating through a bridge at the given TCP/IP address and no response is
received, the software will only declare the device queried as down. Without the global defined as
shown, all devices connected to the bridge will be declared down.
When the global variable is enabled, if the bridge is off, it will take longer for the device communication
software to detect that all devices communicating through the bridge are down. This is because the
software cannot distinguish bridge down scenarios from single device down scenarios because of
bridge functionality.
Value: Y or N.
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: MBETH_REQ_MILLISECOND_TIMEOUT
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.1 SP 2
Hotfix: Description: Time-outs may now be specified down to the millisecond level by configuring a
project and/or port level global parameters. These parameters work in conjunction with the pre-
existing time-out parameters. The parameters are described below.
Define this project level global to specify a default millisecond component to the timing for all devices
configured in the project.
NOTE: The [PORT] in the above parameters represents the port name, such as MBTCP0.
----------------------------------------------------------
Global Parameter: MBETH_REQ_TIMEOUT
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: Hotfix: Description: This global parameter sets the amount of time to wait for a request
to return from a device.
You can override the devcoms default timeout of 5 seconds by setting a global parameter.
Global: MBETH_REQ_TIMEOUT
Value: 5 (default - in seconds)
Global: MBETH_REQ_TIMEOUT
Value: 10
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: MBETH_SOCKET_PORT
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 7.5
Hotfix: SIM 4
Description: Problem
Users were not able to configure the Modbus TCP/IP protocol to use a configurable port (instead of the
hard coded port 502).
There are now two global parameters available that enable a system manager to specify the Modbus
TCP/IP port number.
MBETH_SOCKET_PORT
For: Project
Purpose: To reset the default socket port for Modbust TCP/IP from 502 to the designated value.
Comment: [PORT]_SOCKET_PORT takes precedence over MBETH_SOCKET_PORT.
Value: Port number that should be the new default
Default Value: 502
[PORT]_SOCKET_PORT
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: MBETH_TIMEOUT_RETRY_DELAY
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: Hotfix: Description: Time in tcks (0.01 seconds) to pause when a request fails. Default is
no delay.
Global: MBETH_TIMEOUT_RETRY_DELAY
Value: 0 (default)
Global: MBETH_TIMEOUT_RETRY_DELAY
Value: 10
----------------------------------------------------------
----------------------------------------------------------
Global Parameter: MBETH_UNSO_DATA_QUEUE_SIZE
Sub-System: Device Communications - Modbus TCPIP
Global or Logical Parameter: Global
Parameter Type: Project
Initial Version: 6.0 SP 3
Hotfix: Description: Unsolicited data from devices is queued by each port for processing. The default
queue size is 16 messages. This can be changed on a project basis by defining this global parameter.
[MODBUSDEVICE]
UseTheseDomainSizes=1
UseCounts=1
OneCoilWrite=0
OneRegWrite=0
ConservesConn=1
ConnSecondary=0
COILS=0
DISC INPUTS=0
INPUT REG.=0
HOLDING REG.=5
GEN REF FILE1=0
GEN REF FILE2=0
GEN REF FILE3=0
GEN REF FILE4=0
GEN REF FILE5=0
GEN REF FILE6=0
GEN REF FILE7=0
GEN REF FILE8=0
GEN REF FILE9=0
GEN REF FILE10=0
DP_INPUT REG.=0
DP_HOLDING REG.=0