Application note
Integrated Modbus support
AN00198
ABB Motion control products
18
new.abb.com/motion
Note that, due to timing constraints, 9600 baud is not supported. The baudrate to be used is set using the Mint
SERIALBAUD(_Term1) keyword in the Mint program (or via the Mint Workbench ‘Connectivity’ page). As Modbus RTU packets
include a node address it is also important to set the correct value for BUSNODE(_busSERIAL1) in the Mint program (or via the
Mint Workbench ‘Connectivity’ page). Support is included for broadcast write functions (i.e. to Node address 0) so the user
should avoid configuring a controller as Node 0 unless they intend to use broadcast functions.
When using Modbus TCP NextMove e100 uses the standard Modbus port 502. The IP address used by Modbus TCP is usually
set by the rotary address switches on the front of the NextMove e100; 192.168.100.x (where x is the switch setting), but use of
the BUSIPCONFIG keyword in the program will allow the controller to assume any IP address (please refer to the Mint Help file
for further details). Similarly, if there is a MicroFlex e190 or MotiFlex e180 drive in an EPL network acting as a router (between
standard Ethernet and Ethernet Powerlink)
then the NextMove e100’s IP address can appear to be on the standard Ethernet
network
– with the drive using a Network Address Translation (NAT) table to resolve this for example.
To enable Modbus Server (Server
) operation the Mint program should issue….
ModbusParameter (bus, _mpENABLE) = 1 (where bus = _busETHERNET for Modbus TCP or _busSERIAL1 for Modbus RTU).
Enabling Modbus RTU Server operation automatically disables both Host Comms Protocol (HCP1/2) and ABB Binary Protocol
(BBP) functionality on the serial port. Enabling Modbus RTU also prevents the controller from directing data from Mint PRINT
statements to the serial port to avoid corruption of Modbus data packets.
Example Mint Code
The following code snippets show typical Mint code that may be included in a NextMove controller
’s Startup block:
Example Mint code
– Mint Modbus RTU Server (e.g. NextMove ESB-2) connected to AC500 or CP600 using Comms array:
BUSNODE(_busSERIAL1) = 2
‘Mint controller is node 2 on RTU network
SERIALBAUD(_Term1) = 57600
‘Running at 57.6kbaud
ModbusParameter (_busSERIAL1, _mpBYTE_ORDER) = 0 ‘Use big endian byte order
ModbusParameter (_busSERIAL1, _mpWORD_ORDER) = 0 ‘Use big endian word order
ModbusParameter (_busSERIAL1, _mpREGISTER_MAPPING) = _rmCOMMS_ARRAY
ModbusParameter (_busSERIAL1, _mpENABLE) = 1
Example Mint code
– Mint Modbus TCP Server (e.g. NextMove e100) connected to AC500 or CP600 using Netdata array:
ModbusParameter (_busETHERNET,
_mpBYTE_ORDER) = 0 ‘Use big endian byte order
ModbusParameter (_busETHERNET, _mpWORD_ORDER) = 0 ‘Use big endian word order
ModbusParameter (_busETHERNET, _mpREGISTER_MAPPING) = _rmNET_DATA
ModbusParameter (_busETHERNET, _mpENABLE) = 1
Example Mint code
– Mint Modbus RTU Server (e.g. NextMove ESB-2) connected to third party Modbus Client using little
endian word order and Netdata:
BUSNODE(_busSERIAL1) = 4
‘Mint controller is node 4 on RTU network
SERIALBAUD(_Term1) = 38400
‘Running at 38.4kbaud
ModbusParameter (_busSERIAL1, _mpBYTE_ORDER) = 0 ‘Use big endian byte order
ModbusParameter (_busSERIAL1, _mpWORD_ORDER) = 1 ‘Use little endian word order
ModbusParameter (_busSERIAL1, _mpREGISTER_MAPPING) = _rmNET_DATA
ModbusParameter (_busSERIAL1, _mpENABLE) = 1
As NextMove e100 supports both Ethernet and serial channels it is possible to configure / enable Modbus TCP operation on
Ethernet and at the same time configure / enable Modbus RTU operation on the serial port.