Mvi69E-Mbs: User Manual
Mvi69E-Mbs: User Manual
Mvi69E-Mbs: User Manual
CompactLogix™ Platform
Modbus Serial Enhanced Communication
Module
USER MANUAL
Contents MVI69E-MBS ♦ CompactLogix™ Platform
User Manual Modbus Serial Enhanced Communication Module
ProSoft Technology®, is a registered copyright of ProSoft Technology, Inc. All other brand or product names are
or may be trademarks of, and are used to identify products and services of, their respective owners.
In an effort to conserve paper, ProSoft Technology no longer includes printed manuals with our product
shipments. User Manuals, Datasheets, Sample Ladder Files, and Configuration Files are provided at:
www.prosoft-technology.com
Content Disclaimer
This documentation is not intended as a substitute for and is not to be used for determining suitability or reliability
of these products for specific user applications. It is the duty of any such user or integrator to perform the
appropriate and complete risk analysis, evaluation and testing of the products with respect to the relevant
specific application or use thereof. Neither ProSoft Technology nor any of its affiliates or subsidiaries shall be
responsible or liable for misuse of the information contained herein. Information in this document including
illustrations, specifications and dimensions may contain technical inaccuracies or typographical errors. ProSoft
Technology makes no warranty or representation as to its accuracy and assumes no liability for and reserves the
right to correct such inaccuracies or errors at any time without notice. If you have any suggestions for
improvements or amendments or have found errors in this publication, please notify us.
No part of this document may be reproduced in any form or by any means, electronic or mechanical, including
photocopying, without express written permission of ProSoft Technology. All pertinent state, regional, and local
safety regulations must be observed when installing and using this product. For reasons of safety and to help
ensure compliance with documented system data, only the manufacturer should perform repairs to components.
When devices are used for applications with technical safety requirements, the relevant instructions must be
followed. Failure to use ProSoft Technology software or approved software with our hardware products may
result in injury, harm, or improper operating results. Failure to observe this information can result in injury or
equipment damage.
Printed documentation is available for purchase. Contact ProSoft Technology for pricing and availability.
North America: +1 (661) 716-5100
Asia Pacific: +603.7724.2080
Europe, Middle East, Africa: +33 (0) 5.3436.87.20
Latin America: +1.281.298.9109
Contents
Your Feedback Please ...................................................................................................................... 2
Content Disclaimer ............................................................................................................................ 2
Important Safety Information ............................................................................................................. 3
1 Start Here 8
1.1 System Requirements ............................................................................................. 8
1.2 Deployment Checklist .............................................................................................. 9
1.3 Package Contents ................................................................................................... 9
1.4 Setting Jumpers ..................................................................................................... 10
1.5 Installing the Module in the Rack ........................................................................... 11
6 Legacy Mode 75
6.1 Webpage Configuration..........................................................................................75
6.2 PCB Configuration ..................................................................................................78
6.2.1 Comment Parameter ..............................................................................................79
6.2.2 Backplane69 Parameter .........................................................................................80
6.2.3 MCM Port x Parameters .........................................................................................81
6.2.4 Modbus Port x Commands .....................................................................................83
6.2.5 Ethernet 1 Parameter .............................................................................................86
6.3 Downloading PCB Configuration to the MVI69E-MBS ...........................................87
6.4 Optional Add-On Instruction ...................................................................................89
6.4.1 Setting Up the Optional AOI ...................................................................................91
6.4.2 Synchronizing the IP Settings from the MVI69E-MBS to the Processor ................93
6.4.3 Synchronizing the IP Settings from the Processor to the MVI69E-MBS ................94
6.4.4 Reading the Date/Time from the MVI69E-MBS to the Processor ..........................95
6.4.5 Writing the Date/Time from the Processor to the MVI69E-MBS ............................96
8 Reference 111
8.1 Product Specifications ......................................................................................... 111
8.1.1 Hardware Specifications ...................................................................................... 111
8.1.2 General Specifications - Modbus Master/Slave ................................................... 112
8.2 About the Modbus Protocol ................................................................................. 112
8.2.1 Modbus Master .................................................................................................... 113
8.2.2 Modbus Slave ...................................................................................................... 113
8.2.3 Function Codes Supported by the Module .......................................................... 113
8.2.4 Read Coil Status (Function Code 01) .................................................................. 114
8.2.5 Read Input Status (Function Code 02) ................................................................ 115
8.2.6 Read Holding Registers (Function Code 03) ....................................................... 116
8.2.7 Read Input Registers (Function Code 04) ........................................................... 117
8.2.8 Force Single Coil (Function Code 05) ................................................................. 118
8.2.9 Preset Single Register (Function Code 06) ......................................................... 119
8.2.10 Diagnostics (Function Code 08) .......................................................................... 120
8.2.11 Force Multiple Coils (Function Code 15) ............................................................. 122
8.2.12 Preset Multiple Registers (Function Code 16) ..................................................... 123
8.3 Floating-Point Support ......................................................................................... 124
8.3.1 Enron Floating Point Support............................................................................... 125
8.3.2 Configuring the Floating Point Data Transfer ...................................................... 125
8.4 Function Blocks.................................................................................................... 130
8.4.1 Event Command Blocks (1000 to 1255, 2000 to 2255) ....................................... 131
8.4.2 Slave Polling Disable Blocks ............................................................................... 132
8.4.3 Slave Polling Enable Blocks (3001, 3101) ........................................................... 132
8.4.4 Slave Polling Status Blocks (3002 to 3006, 3102 to 3106) ................................. 133
8.4.5 Command Control Blocks (5001 to 5006, 5101 to 5106) .................................... 134
8.4.6 Add Event with Data Blocks (8000, 8001) ........................................................... 135
8.4.7 Get Event with Data Status Block (8100) ............................................................ 136
8.4.8 Get Configuration File Information Block (9000 or -9000) ................................... 137
8.4.9 Get Configuration File Block (9001 or -9001) ...................................................... 138
8.4.10 Get General Module Status Data Block (9250) ................................................... 139
8.4.11 Set Port and Command Active Bits Block (9500) ................................................ 141
8.4.12 Get Port and Command Active Bits Block (9501)................................................ 142
8.4.13 Pass-through Formatted Word Data Block for Functions 6 & 16 (9956) ............. 143
8.4.14 Pass-through Formatted Float Data Block for Functions 6 & 16 (9957).............. 144
8.4.15 Pass-through Formatted Block for Function 5 (9958).......................................... 145
8.4.16 Pass-through Formatted Block for Function 15 (9959) ....................................... 146
8.4.17 Pass-through Formatted Block for Function 23 (9961) ....................................... 147
8.4.18 Pass-through Block for Function 99 (9970) ......................................................... 148
8.4.19 Pass Module Time to Processor Block (9973) .................................................... 149
8.4.20 Reset Status Block (9997) ................................................................................... 150
8.4.21 Cold-boot Control Block (9999) ........................................................................... 150
8.5 Ethernet Port Connection .................................................................................... 151
8.5.1 Ethernet Cable Specifications.............................................................................. 151
8.6 Modbus Application Port Connection .................................................................. 152
8.6.1 RS-232 Wiring...................................................................................................... 152
8.6.2 RS-422 Wiring...................................................................................................... 155
8.6.3 RS-485 Wiring...................................................................................................... 155
8.6.4 DB9 to RJ45 Adaptor (Cable 14) ......................................................................... 156
Index 160
1 Start Here
To get the most benefit from this User Manual, you should have following skills:
Studio 5000 Logix Designer ®: launch the program, configure ladder logic,
and transfer the ladder logic to the processor
Microsoft Windows®: install and launch programs, execute menu
commands, navigate dialog boxes, and enter data
Hardware installation and wiring: install the module, and safely connect
Modbus and CompactLogix or MicroLogix 1500-LRP devices to a power
source and to the MVI69E-MBS module’s application port(s)
Important: The MVI69E-MBS module has a power supply distance rating of 4 (L43 and L45
installations on first 2 slots of 1769 bus). It consumes 500 mA at 5 VDC.
Important: For 1769-L23x processors, please make note of the following limitation:
1769-L23E-QBFC1B = 450 mA at 5 VDC (No MVI69E module can be used with this processor.)
Note: The Hardware and Operating System requirements in this list are the minimum
recommended to install and run software provided by ProSoft Technology®. Other third party
applications may have different minimum requirements.
Important: Before beginning the installation, please verify that all of the following items are
present.
The Setup Jumper acts as "write protection" for the module’s firmware. In "write
protected" mode, the Setup pins are not connected, and the module’s firmware
cannot be overwritten. The module is shipped with the Setup jumper OFF. If an
update of the firmware is needed, apply the Setup jumper to both pins.
The following illustration shows the MVI69E-MBS jumper configuration, with the
Setup Jumper OFF.
Warning: Please follow all safety instructions when installing this or any other electronic devices.
Failure to follow safety procedures could result in damage to hardware or data, or even serious
injury or death to personnel. Refer to the documentation for each device to be connected to verify
that suitable safety procedures are in place before installing or servicing the device.
After you verify the jumper placements, insert the MVI69E-MBS into the rack.
Use the same technique recommended by Rockwell Automation to remove and
install CompactLogix or MicroLogix 1500-LRP modules.
Warning: This module is not hot-swappable! Always remove power from the rack before
inserting or removing this module, or damage may result to the module, the processor, or other
connected devices.
1 Align the module using the upper and lower tongue-and-groove slots with the
adjacent module and slide forward in the direction of the arrow.
2 Move the module back along the tongue-and-groove slots until the bus
connectors on the MVI69 module and the adjacent module line up with each
other.
3 Push the module’s bus lever back slightly to clear the positioning tab and
move it firmly to the left until it clicks. Ensure that it is locked firmly in place.
5 Press the DIN-rail mounting area of the controller against the DIN-rail. The
latches momentarily open and lock into place.
1 Run the MPSetup.exe file to start the Setup Wizard. Follow the Setup Wizard
to install the AOP.
3 Click FINISH when complete. The AOP is now installed in Studio 5000. You
do not need to reboot the PC.
This opens the Select Module Type dialog box. In the Module Type Vendor
Filters area, uncheck all boxes except the PROSOFT TECHNOLOGY box. A list
of ProSoft Technology modules appears in the dialog box.
Note : The I/O TABLE SIZES above should reflect the Block Transfer Size parameter set in PCB
(Section Module Configuration Parameters (page 39)).
Applications that require smaller amounts of data or faster update times, such as ControlNet
networks, will benefit from smaller block transfer sizes.
1 Expand the I/O CONFIGURATION folder in the Project tree. Right-click the
appropriate communications bus and choose NEW MODULE.
2 In the Select Module Type dialog, select the 1769-MODULE and click on the
CREATE button.
Parameter Value
Name Enter a module identification string. Example: MVI69EMBS
Description Enter a description for the module. Example: ProSoft
communication module for Serial Modbus communications.
Comm Format Select DATA-INT
Slot Enter the slot number in the rack where the MV69E-MBS
module is installed.
Input Assembly Instance 101
Input Size 62 / 122 / 242
Output Assembly Instance 100
Output Size 61 / 121 / 241
Configuration Assembly Instance 102
Configuration Size 0
4 On the Connection tab, set the REQUESTED PACKET INTERVAL value for your
project and click OK.
3 In the Tree view, right-click DEFAULT MODULE, and then click CHOOSE
MODULE TYPE. This opens the Choose Module Type dialog box.
4 In the Product Line Filter area of the dialog box, click MVI69. In the Select
Module Type dropdown list, click MVI69E-MBS, and then click OK to save
your settings and return to the ProSoft Configuration Builder window. The
MVI69E-MBS icon is now visible in the tree view.
1 Expand the MVI69E-MBS icon by clicking the [+] symbol beside it. Similarly,
expand the icon. Double-click the icon to open the Edit -
Module dialog box.
2 Set the Block Transfer Size to the desired size of the data blocks transferred
between the module and processor (60, 120 or 240 words). Block transfer
size information can be found starting in the section on Normal Data Transfer
(page 67).
3 Edit the Slot Number indicating where the module is placed in the 1769 bus.
4 Click OK to close the Edit – Module dialog box. The .L5X file is now ready to
be exported to the PC/Laptop.
5 Right-click the MVI69E-MBS icon in the project tree and choose EXPORT AOI
FILE.
6 Save the .L5X file to the PC/Laptop in an easily found location, such as
Windows Desktop.
Note: You can place the Add-On Instruction in a different routine than the MainRoutine. Make sure
to add a rung with a jump instruction (JSR) in the MainRoutine to jump to the routine containing the
Add-On Instruction.
5 Select the .L5X file that you exported from PCB (Creating and Exporting the
.L5X File (page 24)).
This opens the Import Configuration dialog box. Click TAGS under
MAINROUTINE to display the controller tags in the Add-On Instruction.
Note: If you are using RSLogix version 16 or earlier, the Import Configuration dialog box does not
contain the Import Content tree.
6 If the module is not located in the default slot (or is in a remote rack), edit the
connection input and output variables that define the path to the module in
the FINAL NAME column (NAME column for RSLogix version 16 or less). For
example, if your module is located in slot 3, change Local:1:I in the FINAL
NAME column to Local:3:I. Do the same for Local:1:O.
Note: If your module is located in Slot 1 of the local rack, this step is not required.
The procedure also imports new user-defined data types, data objects and
the Add-On instruction to be used in the project with the MVI69E-MBS
module.
Important: This procedure is for multiple MVI69E-MBS modules running in the same
CompactLogix or MicroLogix 1500-LRP rack.
You can add additional modules of the same type to the rack.
1 Add a new MVI69E-MBS module to the ProSoft Configuration Builder (PCB)
project.
2 Export the module configuration as an L5X file.
3 Add a new MVI69E-MBS to the Studio 5000 project.
4 Import the .L5X file into Studio 5000 for the new module as an Add-On
Instruction.
4 In the Choose Module Type dialog box, select MVI69E in the PRODUCT LINE
FILTER area, and then select MVI69E-MBS as the MODULE TYPE. Click OK.
5 Select the MVI69E-MBS module in the tree and repeat the above steps to
add a second (or more) module in the PCB project.
Note: You must give each MVI69E-MBS module a unique name. The default name on a duplicate
module appends a number to the end such as MVI69E-MBS_000, MVI69E-MBS_001, etc.
6 You can rename the module by right clicking the module and choosing
Rename.
3 In the Select Module Type dialog box, select the MVI69E-MBS module.
o If you are using an Add-On Profile (AOP), this adds the MVI69E-MBS
module and configures the relevant parameters. You must be using
RSLogix version 15 or later to to use an AOP.
o If using an AOP is not an option, select GENERIC 1769 MODULE and click
CREATE.
4 The New Module dialog box appears. Enter a unique name for the new
module, and confirm the slot number of the new module.
6 You must also import the Add-On Instruction (AOI) for the new module (see
Adding another module in PCB (page 29)). In the Controller Organizer pane,
double-click MAINROUTINE to open the ladder for the routine.
7 Right-click an empty rung in the routine, and then choose IMPORT RUNGS…
8 Select the .L5X file you created and exported for the new module, and click
IMPORT. The new .L5X file has a unique filename that is specific to the new
module.
9 This opens the IMPORT CONFIGURATION dialog box. Click TAGS to show the
controller tags in the AOI. You must edit the FINAL NAME column of the tags
for the second module to make them unique.
11 Click OK.
Note: Depending on the parameter, you must enter text, or a valid number, or select from a list of
options.
7 To edit the row, click EDIT ROW. This opens an Edit dialog box.
Important: The sum of the Read Register Count and Write Register Count cannot exceed 10,000
total registers. Furthermore, neither the Read Data nor the Write Data area may extend above
module register 9999. The Read Data and Write Data areas must not overlap.
In order to interface the MVI69E-MBS with Modbus slave devices, you must
create a command list. The commands in the list specify the slave device to be
addressed, the function to be performed (read or write), the data area in the
device to interface with and the registers in the internal database to be
associated with the device data.
The Master command list supports up to 250 commands. The command list is
processed from top (Command #0) to bottom.
Read commands are executed without condition. You can set write commands to
execute only if the data in the write command changes (Conditional Enable). If
the register data values in the command have not changed since the command
was last issued, the command is not executed. You can use this feature to
optimize network performance.
The MVI69E-MBS Master (and Slave) communication drivers support several
data read and write commands. When a command is configured, the type of data
(bit, 16-bit integer, 32-bit float, etc), and the level of Modbus support in the slave
equipment needs to be considered.
3.2.4 Ethernet 1
This section defines the permanent IP address, Subnet Mask, and Gateway of
the module.
In the ProSoft Configuration Builder tree view, double-click the ETHERNET 1 icon.
Parameter Description
IP Address Unique IP address assigned to the module
Netmask Subnet mask of module
Gateway Gateway (if used)
4 Notice the CIPConnect path has been updated in the Download Configuration
File dialog box. Click TEST CONNECTION to verify the path is active and can
successfully connect to the processor.
6 After rebooting, the ladder logic sends the configuration data from the
processor to the module. When that is complete, the module starts Modbus
communications.
2 In the Upload Configuration File dialog box, the CIPConnect path should
already be constructed if you have previously downloaded the configuration
file from the same PC. If not, click RSWHO, browse to, then select the
CompactLogix or MicroLogix 1500-LRP Processor, and click OK.
3 Click TEST CONNECTION to verify the path is active and can successfully
connect to the processor.
The five lower-level controller tag structures contain other controller tags and
controller tag structures. Click the [+] sign next to any controller tag structure to
expand it and view the next level in the structure.
For example, if you expand the MBS.DATA controller tag structure, you see that
it contains two controller tag arrays, MBS.DATA.ReadData and
MBS.DATA.WriteData, which are 600-element integer arrays by default.
The controller tags in the Add-On Instruction are commented in the DESCRIPTION
column.
Notice that the DATA TYPE column displays the data types used to declare each
controller tag, controller tag array or controller tag structure. Individual controller
tags are declared with basic data types, such as INT and BOOL. Controller tag
arrays are declared with arrays of basic data types. Controller tag structures are
declared with user-defined data types (UDTs).
Click the [+] signs to expand the UDT structures and view lower-level UDTs.
For example, if you expand MBS.DATA, you see that it contains two UDTs,
ReadData and WriteData. Both of these are 600-element integer arrays by
default.
Notice that these UDTs are the data types used to declare the
MBS.DATA.ReadData and MBS.DATA.WriteData controller tag arrays.
The UDTs are commented in the DESCRIPTION column.
Tip: If more than 600 words of Read or Write Data are needed, the MBS.DATA.ReadData and
MBS.DATA.WriteData controller tag arrays can be expanded. Simply edit the size of the ReadData
or WriteData integer array in the DATA TYPE column of the MBSDATA UDT. In the example below,
the ReadData array size has been changed to 2000. Save and download the ladder program for
this change to take effect.
4.3.1 MBS.CONFIG
When ProSoft Configuration Builder (PCB) downloads the configuration file from
the PC to the processor, the processor stores the configuration file data in the
MBS.CONFIG.FileData array. Its CRC is also included in this array.
You cannot edit this array directly. You must use PCB to edit the module
configuration since PCB calculates a unique CRC to protect data integrity. Any
change to the configuration parameters directly in this array will not match the
calculated CRC.
Tag Name Description
MBS.CONFIG.FileData This parameter contains the MBS configuration data after it has
been downloaded from PCB. It is displayed in ASCII format.
Note: MBS configuration changes cannot be made directly in
this array; the configuration must be downloaded with PCB.
MBS.CONFIG.FileSize Configuration file size (MBS.CONFIG.FileData array) in bytes.
MBS.CONFIG.FileCRC32 CRC checksum of the configuration file stored in the array.
MBS.CONFIG.FileStatus Configuration file status. 0 = No file present, 1 = File present
4.3.2 MBS.DATA
This structure contains the Read Data and Write Data arrays for processor-to-
module communication.
Tag Name Description
MBS.DATA.ReadData Data area copied from the module to the processor. This array
stores the Modbus data coming into the module from the Modbus
network.
MBS.DATA.WriteData Data area copied from the processor to the module. This array
stores the outgoing data sent from the module to the Modbus
network.
4.3.3 MBS.CONTROL
This array handles special tasks requested by the processor.
MBS.CONTROL.PortControl
This array allows port commands to be controlled by the processor.
Tag Name Range Description
MBS.CONTROL.PortControl. 0 or 1 Sends Port Control to module
Set
MBS.CONTROL.PortControl. 0 or 1 Reads Port Control from module
Get
MBS.CONTROL.PortControl. n/a Definition of Port x Control
Portx
MBS.CONTROL.PortControl. 0 or 1 Port Control: Disable = 0, Enable = 1
Portx.Active
MBS.CONTROL.PortControl. 0 or 1 Index of command to be controlled. Example:
Portx.CmdEnableBits[x] Command 20 in port 1 command list can be
controlled at CmdEnableBits[1].3. This is the 20th bit
offset.
MBS.CONTROL.CmdControl
This array allows the processor to dynamically enable configured commands for
execution.
Tag Name Range Description
MBS.CONTROL.CmdControl. 0 or 1 Command Control:
CmdControlTrigger Disable = 0, Enable = 1
MBS.CONTROL.CmdControl. 0 to 6 Total number of commands to be executed via
NumberOfCommands Command Control
MBS.CONTROL.CmdControl. 1 or 2 Port number to be associated with Command Control
PortNumber function
MBS.CONTROL.CmdControl. 0 or 1 Command Index of port command [x] to be enabled.
CommandIndex[x] Up to 6 command indexes can be populated at a
time.
MBS.CONTROL.EventCmd_DBData
This array allows the processor to dynamically build Modbus commands with
data associated to the MBS database. This feature is meant for periodic
execution such as resetting the clock and zeroing-out counters.
Tag Name Range Description
MBS.CONTROL.EventCmd_DB 0 or 1 Toggle to send Event Command.
Data.EventCmdTrigger 0 = Disable, 1 = Enable
MBS.CONTROL.EventCmd_DB 1 or 2 Port number to be associated with command Control
Data.PortNumber function
MBS.CONTROL.EventCmd_DB 1 to 248 Slave ID of Modbus slave
Data.SlaveID
MBS.CONTROL.EventCmd_DB 0 to 9999 Used only if UseModuleDBAddress=1. MVI69E
Data.InternalDBAddress database address (word address for functions
3,4,6,16 and bit address for 1,2,5,15)
MBS.CONTROL.EventCmd_DB 0 to 125 Number of bit/words associated with this command.
Data.PointCount
MBS.CONTROL.EventCmd_DB 0 to 3 Swap code 0 = no swap, 1 = word swap, 2 = words
Data.SwapCode & byte swap, 3 = byte swap
MBS.CONTROL.EventCmd_DB - Modbus function code (1,2,3,4,5,6,15, or 16)
Data.ModbusFunctionCode
MBS.CONTROL.EventCmd_DB 0 to 9999 Modbus address of the target slave database
Data.DeviceDBAddress
MBS.CONTROL.EventCmd_DB - Event status returned by the module
Data.EventCmdStatusReturned
MBS.CONTROL.EventCmd_ProcessorData
This array allows the processor to dynamically build Modbus commands with
processor data. This feature is meant for periodic execution such as resetting the
clock and zeroing-out counters.
Tag Name Range Description
MBS.CONTROL.EventCmd_Processor 0 or 1 Toggle to send Event Command.
Data.CmdTrigger 0 = Disable, 1 = Enable
MBS.CONTROL.EventCmd_Processor 0 or 1 Toggle to retrieve event status.
Data.GetStatusTrigger 0 = Disable, 1 = Enable
MBS.CONTROL.EventCmd_Processor 1 or 2 Port number to be associated with
Data.PortNumber command
MBS.CONTROL.EventCmd_Processor 1 to 248 Slave ID of Modbus slave
Data.SlaveAddress
MBS.CONTROL.EventCmd_Processor - Modbus function code (5,6,15, or 16)
Data.ModbusFunctionCode
MBS.CONTROL.EventCmd_Processor 0 to 9999 Modbus address of the target slave
Data.DeviceDBAddress database
MBS.CONTROL.EventCmd_Processor 0 to 125 Number of bit/words associated with this
Data.PointCount command.
MBS.CONTROL.EventCmd_Processor 0 to 49 Data values to be sent to the slave
Data.Data[x]
MBS.CONTROL.EventCmd_Processor - Command status
Data.EventCmdStatusReturned
MBS.CONTROL.SlavePoll
This array allows the processor to enable, disable and retrieve status for slaves.
Tag Name Range Description
MBS.CONTROL.SlavePoll.Portx - Port x slave polling control
MBS.CONTROL.SlavePoll.Portx. 0 or 1 Slave Poll request
EnableSlaves 0 = Disable, 1 = Enable
MBS.CONTROL.SlavePoll.Portx. 1 to 60 Number of slaves to be enabled
EnableSlaveCount
MBS.CONTROL.SlavePoll.Portx. - Data array associated to enable slave request
EnableSlavesIDs[x] where word x corresponds to slave ID x (0-based).
1 = Enable slave
MBS.CONTROL.SlavePoll.Portx. 0 or 1 Triggers disable slaves request
DisableSlaves 0 = Disable, 1 = Enable
MBS.CONTROL.SlavePoll.Portx. 1 to 60 Number of slaves to be disabled
DisableSlaveCount
MBS.CONTROL.SlavePoll.Portx. - Data array associated to disable slave request
DisableSlavesIDs[x] where word x corresponds to slave ID x (0-based).
1 = Disable slave
MBS.CONTROL.SlavePoll.Portx. 0 or 1 Triggers request to read slave status
GetSlavesStatus 0 = Disable, 1 = Enabled
MBS.CONTROL.SlavePoll.Portx. - Data array with status
SlavesStatus[x]
MBS.CONTROL.Time
This array allows the processor to get or set module time.
Tag Name Range Description
SetTime 0 or 1 Sends the PLC time to the module
0 = Disable, 1 = Enable
GetTime 0 or 1 Retrieves the time from the module to PLC
0 = Disable, 1 = Enable
Year 0 to 9999 Four digit year value. Example: 2015
Month 1 to 12 Month
Day 1 to 31 Day
Hour 0 to 23 Hour
Minute 0 to 59 Minute
Second 0 to 59 Second
Milliseconds 0 to 999 Millisecond
MBS.CONTROL.GetStatus
This tag allows the processor to retrieve status from the module.
Tag Name Range Description
GetStatus 0 or 1 Triggers status retrieval from the module
0 = Disable, 1 = Enable
MBS.CONTROL.ResetStatus
This tag allows the processor to reset the module status counters.
Tag Name Range Description
ResetStatus 0 or 1 Triggers module status counter reset
0 = Disable, 1 = Enable
MBS.CONTROL.ColdBoot
This tag allows the processor to Coldboot the module (full reboot).
Tag Name Range Description
ColdBoot 0 or 1 Triggers a cold boot of the module
0 = Disable, 1 = Enable
MBS.CONTROL.WarmBoot
This tag allows the processor to Warmboot the module (driver reboot).
Tag Name Range Description
WarmBoot 0 or 1 Triggers a warm boot the module
0 = Disable, 1 = Enable
4.3.4 MBS.STATUS
This array contains status data for the module.
Tag Name Description
MBS.STATUS.PassCnt Program cycle counter – this value is incremented each
time a complete program cycle occurs in the module
MBS.STATUS.Product Product code
MBS.STATUS.Rev Firmware revision level number
MBS.STATUS.OP Operating level number
MBS.STATUS.Run Run number
MBS.STATUS.PortxStats Port x status
MBS.STATUS.PortxStats.CmdListReq Total number of requests made from this port to slave
devices on the network
MBS.STATUS.PortxStats.CmdListResp Total number of slave response messages received on
the port
MBS.STATUS.PortxStats.CmdListErr Total number of command errors processed on the port.
These errors could be due to a bad response or
command
MBS.STATUS.PortxStats.PortReq Total number of messages sent out of the port
MBS.STATUS.PortxStats.PortResp Total number of messages received on the port
MBS.STATUS.PortxStats.PortErrSent Total number of message errors sent out of the port.
MBS.STATUS.PortxStats.PortErrRec Total number of message errors received on the port
MBS.STATUS.PortxStats.CurrErr Not used
MBS.STATUS.PortxStats.LastErr Not used
MBS.STATUS.Block Backplane transfer status
MBS.STATUS.Block.Read Total number of read blocks transferred from the module
to the processor
MBS.STATUS.Block.Write Total number of write blocks transferred from the
processor to the module
MBS.STATUS.Block.Parse Total number of blocks successfully parsed that were
received from the processor
MBS.STATUS.Block.Event Total number of event command blocks received from
the processor
MBS.STATUS.Block.Cmd Total number of command blocks received from the
processor
MBS.STATUS.Block.Err Total number of block transfer errors recognized by the
module
MBS.STATUS.PortxLastErr For a slave port, this field contains the value of the
current error code returned.
For a master port, this field contains the index of the
currently executing command.
MBS.STATUS.PortxPreviousErr For a slave port, this field contains the value of the last
error code returned.
For a master port, this field contains the index of the
command with an error.
4.3.5 MBS.UTIL
The array is used for internal ladder processing, and must not be modified.
Tag Name Description
MBS.UTIL.ReadDataSizeGet Holds Read Data array size
MBS.UTIL.WriteDataSizeGet Holds Write Data array size
MBS.UTIL.ReadDataBlkCount Number of Read Data blocks – this value is the Read
Register Count divided by the Block Transfer Size
MBS.UTIL.WriteDataBlkCount Number of Write Data blocks – this value is the Write Register
Count divided by the Block Transfer Size
MBS.UTIL.RBTSremainder Remainder from the Read Register Count divided by the
Block Transfer Size
MBS.UTIL.WBTSremainder Remainder from the Write Register Count divided by the
Block Transfer Size
MBS.UTIL.BlockIndex Computed block offset for data
MBS.UTIL.LastRead Latest Read Block ID received from the module
MBS.UTIL.LastWrite Latest Write Block ID to be sent to the module
MBS.UTIL.LastWriteInit Latest Write Block ID used during initialization
MBS.UTIL.ConfigFile Holds variables for configuration file transfer
MBS.UTIL.ConfigFile.WordLength Length of configuration data to be included in block transfer
MBS.UTIL.ConfigFile.BlockCount Not used
MBS.UTIL.ConfigFile.FileOffset Offset in configuration file to use as a starting point for
copying over configuration data
MBS.UTIL.ConnectionInputSize Holds size of the Connection Input array
MBS.UTIL.BlockTransferSize Size of the backplane transfer blocks
MBS.UTIL.SlotNumber Slot number of the module in the rack
MBS.UTIL.EventBlockID Holds Block ID for Event Command
MBS.UTIL.EventCmdPending Keeps an Event Command message from being sent to the
module before the previous Event Command is completed
MBS.UTIL.PollStatusOffset Offset in slave status data array to use as a starting point for
copying over slave status data
MBS.UTIL.CmdsAddedToQueue Number of Command Control messages added to the
command queue
MBS.UTIL.CmdControlBlockID Holds Block ID for Command Control
MBS.UTIL.CmdCntrlPending Keeps a Command Control message from being sent to the
module before the previous Command Control is completed
MBS.UTIL.EventDataCmdPending Keeps an Event Command with Data message from being
sent to the module before the previous Event Command with
Data is completed
MBS.UTIL.BootTimer Timer used to clear both cold and warm boot requests
MBS.UTIL.PassThru[ ] Array Holds variables used for processing pass-through messages
All data transferred between the module and the processor over the backplane is
through the input and output images. Ladder logic in the CompactLogix or
MicroLogix 1500-LRP processor interfaces the input and output image data with
data defined in the Controller Tags. All data used by the module is stored in its
internal database. This database is defined as virtual MBS data tables with
addresses from 0 to the maximum number of points for each data type.
Step Description
1 Any time the module restarts (boots or reboots), the Modbus slave port driver receives
configuration information from the MBS controller tags. This information configures the
serial ports and defines slave node characteristics. The configuration information may also
contain instructions to offset data stored in the database to addresses different from
addresses requested in the received messages.
2 A Modbus Master device, such as a Modicon PLC or an HMI application, issues a read or
write command to the module’s node address. The port driver qualifies the message before
accepting it into the module. Rejected commands cause an Exception Response.
3 After the module accepts the command, the data is immediately transferred to or from the
module’s internal database. On a read command, the data is read from of the database and
a response message is built. On a write command, the data is written directly into the
database and a response message is built.
4 After Steps 2 and 3 have been completed, either a normal response message or an
Exception Response message is sent to the Master.
5 Counters are available in the Status Block to permit the ladder logic program to determine
the level of activity of the Slave driver.
In Slave Pass-Through mode, write commands from the Master are handled
differently than they are in Normal mode. In Slave Pass-Through mode, all write
requests are passed directly to the processor and data is not written directly into the
module’s database.
This mode is especially useful when both a Modbus Master and the module’s
processor logic need to be able to read and write values to the same internal
database addresses.
The following diagram shows the data flow for a slave port with pass-through enabled:
Step Description
1 Same as normal mode.
2 Same as normal mode.
3 a. In Pass-Through mode, if the Slave driver receives a read request, it looks for the data
in module’s internal database, just as it would in Normal mode.
b. The data needed to respond to the read command is retrieved directly from the
internal database and returned to the Slave driver so it can build a response message.
c. In Pass-Through mode, if the Slave Driver receives a write request, it does not send
the data directly to the module’s internal database. It puts the data to be written into a
special Input Image with a special Block ID code to identify it as a Pass-Through Write
Block and substitutes this special block in place of the next regular Read Data Block. The
special block is processed by the ladder logic and the data to be written is placed into the
WriteData controller tag array at an address that corresponds to the Modbus Address
received in the write command.
d. During normal backplane communications, the data from the WriteData array,
including the data updated by the Pass-Through Write Block, is sent to the module’s
internal database. This gives the ladder logic the opportunity to also change the values
stored in these addresses, if need be, before they are written to the database.
Note: The ReadData array is not used in Pass-Through mode.
4 Same as normal mode.
5 Same as normal mode.
Step Description
1 Upon module boot-up, the Master driver obtains configuration data from the MBS
controller tags. The configuration data retrieved includes port configuration and the
Master Command List.
Special Commands can be issued directly from the CompactLogix or MicroLogix 1500-
LRP processor using Event Commands and Command Control. These command values
are used by the Master driver to determine the types and order of commands to send to
slaves on the network.
2 After configuration, the Master driver begins transmitting read and/or write commands to
slave nodes on the network. If the Master driver is writing data to a slave, the data for the
write command is retrieved from the module’s internal database.
3 Once the specified slave has successfully processed the command, it returns a response
message to the Master driver for processing.
4 Data received from a slave in response to a read command is stored in the module’s
internal database.
5 Status is returned to the processor for each command in the Master Command List.
Important: Take care when constructing each command in the list to ensure predictable operation
of the module. If two commands write to the same internal database address of the module, the
results are invalid. All commands containing invalid data are ignored by the module.
Note: 125 words is the maximum count allowed by the Modbus protocol. Some field devices may
support less than the full 125 words. Check with the device manufacturer for the maximum count
supported by the particular slave device.
Note: The Command Error List must be placed in the Read Data area of the database, so it can be
transferred to the processor in the input image.
6 Legacy Mode
Legacy Mode allows you to replace an existing MVI69-MCM module with the
MVI69E-MBS. This feature is only supported with MVI69E-MBS firmware version
1.11.001 or later.
You may also convert the existing MVI69-MCM PCB configuration to the
MVI69E-MBS module in Legacy Mode. This conversion procedure is supported
by PCB v4.4.24.20.0302 or later.
3 In the Advanced Settings page, change the LEGACY MODE field to ‘Yes’,
then click on the UPDATE LEGACY MODE button.
Protocol RTU or ASCII Specifies the Modbus protocol for the port.
Baud Rate Multiple options Specifies the baud rate for the port.
Parity None, Odd, Specifies the type of parity error checking. All devices on
Even this port must use the same parity setting.
Data Bits 7 or 8 Sets the number of data bits for each word used by the
protocol. All devices communicating through this port
must use the same number of data bits.
Stop Bits 1 or 2 Sets the number of stop bits that signal the end of a
character in the data stream. For most applications, use
one stop bit. For slower devices that require more time to
re-synchronize, use two stop bits. All devices
communicating through this port must use the same
number of stop bits.
RTS On 0 to 65535 ms Sets the number of milliseconds to delay after Ready To
Send (RTS) is asserted before data is transmitted.
RTS Off 0 to 65535 ms Sets the number of milliseconds to delay after the last
byte of data is sent before the RTS modem signal is set
low.
Minimum Response 0 to 65535 ms (Slave mode) Number of milliseconds to delay before
Delay response to a Modbus command.
Use CTS Line Yes or No Specifies if the Clear To Send (CTS) modem control line
is to be used or not. If you set the parameter to NO, the
CTS line is not monitored. If you set the parameter to
YES, the CTS line is monitored and must be high before
the module sends data. Normally, this parameter is
required when half-duplex modems are used for
communication (2-wire). This procedure is commonly
referred to as hardware handshaking.
Command Count 0 to 100 (Master mode) Specifies the number of commands to be
processed by the Modbus master port.
Minimum Command 0 to 32767 ms (Master mode) Specifies the number of milliseconds to
Delay wait between receiving the end of a slave's response to
the most recently transmitted command and the issuance
of the next command. Use this parameter to place a delay
after each command to avoid sending commands on the
network faster than the slaves can receive them. This
parameter does not affect retries of a command, as retries
are issued when a command failure is recognized.
Cmd Err Pointer 0 to 4900 (Master mode) Internal DB location to place command
error list
Response Timeout 0 to 65535 ms (Master mode) Specifies the command response timeout
period in 1 ms increments. This is the time that a Master
waits for a response from the addressed slave before re-
transmitting the command (Retries) or skipping to the next
command in the Command List. The value to specify
depends on the communication network used and the
expected response time (plus or minus) of the slowest
device on the network.
Retry Count 0 to 10 (Master mode) Specifies the number of times a command
is retried if it fails.
Error Delay Count 0 to 60000 (Master mode) Specifies the number of poll attempts to be
skipped before trying to re-establish communications with
a slave that has failed to respond to a command within
the time limit set by the Response Timeout parameter.
After the slave fails to respond, the master skips sending
commands that should have been sent to the slave until
the number of skipped commands matches the value
entered in this parameter. This creates a sort of slow poll
mode for slaves that are experiencing communication
problems.
Slave Address 1 to 255 (Slave mode) Modbus Slave address on network.
Bit Input Offset 0 to 3998 (Slave mode) Specifies the offset address into the internal
Modbus database that is to be used with network for
Modbus function 2 commands.
Word Input Offset 0 to 3998 (Slave mode) Specifies the offset address into the internal
Modbus database that is to be used with network for
Modbus function 4 commands.
Output Offset 0 to 3998 (Slave mode) Specifies the offset address into the internal
Modbus database that is to be used with network
requests for Modbus function 1, 5, or 15 commands.
Holding Register 0 to 3998 (Slave mode) Specifies the offset address in the internal
Offset Modbus database that is to be used with network for
Modbus function 3, 6, or 16 commands.
Inter-character 0 to 65535 ms (Master mode) Specifies a time delay to be added to the
Timeout 3.5 character time delay used by the module to recognize
the end of a message.
Command Error 0 to 4998 (Master mode) Internal Database offset location of
Offset command error
In order to interface the MVI69E-MBS with Modbus slave devices, you must
create a command list. The commands in the list specify the slave device to be
addressed, the function to be performed (read or write), the data area in the
device to interface with and the registers in the internal database to be
associated with the device data.
The Master command list supports up to 100 commands. The command list is
processed from top (Command #0) to bottom.
Read commands are executed without condition. You can set write commands to
execute only if the data in the write command changes (Conditional Enable). If
the register data values in the command have not changed since the command
was last issued, the command is not executed. You can use this feature to
optimize network performance.
The MVI69E-MBS Master supports several data read and write commands.
When a command is configured, the type of data (bit, 16-bit integer, 32-bit float,
etc), and the level of Modbus support in the slave equipment needs to be
considered.
Swap Code 0,1,2,3 Defines if the data received from the Modbus slave is to be
ordered differently than received from the slave device. This
parameter is helpful when dealing with floating-point or other
multi-register values, as there is no standard method of storage of
these data types in slave devices. You can set this parameter to
order the register data received in an order useful by other
applications.
No Change (0)= No change is made in the byte ordering (ABCD
= ABCD)
Word Swap (1)= The words are swapped (ABCD= CDAB)
Word and Byte Swap (2) = The words are swapped, then the
bytes in each word are swapped (ABCD=DCBA)
Byte Swap (3) = The bytes in each word are swapped
(ABCD=BADC)
Note: Each pair of characters is a byte. Ex: AB and CD. Two
pairs of characters is 16-bit register Ex: ABCD.
Node Address 1 to 255 Specifies the Modbus slave node address on the network to be
(0 = broadcast) considered. Most Modbus devices only accept an address in the
range of 1 to 247. If you set the value to zero, the command is a
broadcast message on the network. The Modbus protocol permits
broadcast commands for write operations. Do not use this node
address for read operations.
Modbus Function 1,2,3,4,5,6,15,16 Specifies the Modbus function to be executed by the command.
These function codes are defined in the Modbus protocol.
1 – Read Coil Status (0xxxx)
2 – Read Input Status (1xxxx)
3 – Read Holding Registers (4xxxx)
4 – Read Input Registers (3xxxx)
5 – Force (Write Single) Coil (0xxxx)
6 – Force (Write Single) Holding Register (4xxxx)
15 – Preset (Write) Multiple Coils (0xxxx)
16 – Preset (Write) Multiple Registers (4xxxx)
MB Address in 0 to 65535 Specifies the register or digital point address offset within the
Device Modbus slave device. The MBS Master reads or writes from/to
this address within the slave.
Refer to the documentation of each Modbus slave device for their
register and digital point address assignments.
Note: The value entered here does not need to include the
"Modbus Prefix" addressing scheme. Also, this value is an offset
of the zero-based Modbus addressing scheme.
Example: Using a Modbus Function Code 3 to read from address
40010 in the slave, a value of ‘9’ would be entered in this
parameter. The firmware (internally) adds a ‘40001’ offset to the
value entered. This is the same for all Modbus addresses (0x, 1x,
3x, 4x).
5 Once complete, the MVI69E-MBS in Legacy Mode will operate similarly to the
MVI69-MCM.
Using controller tags, the Optional AOI allows you to request and set the
module’s IP address, date, and time. These optional features are not supported
by the MVI69E-MCM legacy module.
Note: The Optional AOI may be added to an existing legacy MVI69E-MBS application to add the
new functionality during a module replacement.
1 Add a new rung to the existing processor ladder logic. Right-click on the new
rung and select Import Rungs…
3 In the Message Path Browser dialog, select the MVI69E-MBS module under
the 1769 Bus and click at OK.
4 The module name is displayed in the Path field. Click OK to confirm the route
configuration.
5 Repeat the same procedure to set the route for the remaining messages:
WriteEthernetMSG
ReadClockMSG
WriteClockMSG
Once the operation is concluded, the tag will automatically reset to ‘0’.
3 The date and time read from the MVI69E-MBS is stored at the
MVI69EMBSClock.Config tag.
For further information concerning the MVI69-MCM, please download the MVI69-
MCM User Manual from www.prosoft-technology.com.
7.4 Troubleshooting
Use the following troubleshooting steps if you encounter problems when the
module is powered up. If these steps do not resolve your problem, please contact
ProSoft Technology Technical Support.
Processor Errors
Problem description Steps to take
Processor fault Verify that the module is securely plugged into the slot that has been
configured for the module in the I/O Configuration in RSLogix.
Verify that the slot location in the rack has been configured correctly in
the ladder logic.
Processor I/O LED This indicates a problem with backplane communications. A problem
flashes could exist between the processor and any installed I/O module, not just
the MVI69E-MBS. Verify that all modules in the rack are correctly
configured.
Module Errors
Problem description Steps to take
BP ACT LED (not This indicates that backplane transfer operations are failing. Connect to
present on MVI56E the module’s Configuration/Debug port to check this.
modules) remains OFF To establish backplane communications, verify the following items:
or blinks slowly The processor is in RUN or REM RUN mode.
MVI69 modules with The backplane driver is loaded in the module.
scrolling LED display: The module is configured for read and write data block transfer.
<Backplane Status> The ladder logic handles all read and write block situations.
condition reads ERR The module is properly configured in the processor I/O configuration
and ladder logic.
OK LED remains RED The program has halted or a critical error has occurred. Connect to the
Configuration/Debug (or Communication) port to see if the module is
running. If the program has halted, turn off power to the rack, remove the
card from the rack, then re-insert it, and then restore power to the rack.
Important: ProSoft Configuration Builder (PCB) locates MVI69E-MBS modules through UDP
broadcast messages. These messages may be blocked by routers or layer 3 switches. In that
case, ProSoft Discovery Service is unable to locate the modules.
To use ProSoft Configuration Builder, arrange the Ethernet connection so that there is no router/
layer 3 switch between the computer and the module, OR reconfigure the router/ layer 3 switch to
allow routing of the UDP broadcast messages.
1 In the tree view in ProSoft Configuration Builder (PCB), select the MVI69E-
MBS module. (For instructions on opening and using a project in PCB, please
refer to Configuring the MVI69E-MBS Using PCB (page 36).
4 In the Connection Setup dialog box, click BROWSE DEVICE(S) to start ProSoft
Discovery Service. Right-click the module and choose ASSIGN TEMPORARY
IP.
Important: The temporary IP address is only valid until the next time the module is initialized. For
information on how to set the module’s permanent IP address, see Ethernet 1 (page 47).
6 Close the ProSoft Discovery Service window. Enter the temporary IP address
in the ETHERNET ADDRESS field of the Connection Setup dialog box, then click
TEST CONNECTION to verify that the module is accessible with the current
settings.
7 If the Test Connection is successful, click CONNECT. The Diagnostics window
is now accessible.
2 After the Diagnostics window opens, click the SET UP CONNECTION button to
browse for the module’s IP address.
3 In the Ethernet field of the Connection Setup dialog box, enter the current IP
address, whether it is temporary or permanent. Click TEST CONNECTION to
verify that the module is accessible with the current settings.
Note: If an error code is reported that is not listed below, check with the documentation of the
Modbus device(s) on the module's application ports. Modbus devices can produce device-specific
error codes.
2 In the Connection Setup dialog box, click BROWSE DEVICE(S) to start ProSoft
Discovery Service.
3 Right-click the module icon and choose VIEW MODULE’S WEBPAGE to launch
your default browser and display the module’s webpage.
8 Reference
Parameter Description
Command List Up to 250 commands per Master port, each fully configurable for function,
slave address, register to/from addressing and word/bit count.
Polling of command list Configurable polling of command list, including continuous and on change
of data, and dynamically user or automatic enabled.
Status Data Error codes available on an individual command basis. In addition, a slave
status list is maintained per active Modbus Master port.
Each command list record has the same general format. The first part of the
record contains the information relating to the communication module and the
second part contains information required to interface to the Modbus slave.
Query
This function allows you to obtain the ON/OFF status of logic coils (Modbus 0x
range) used to control discrete outputs from the addressed slave only. Broadcast
mode is not supported with this function code. In addition to the slave address
and function fields, the message requires that the information field contain the
initial coil address to be read (Starting Address) and the number of locations that
are interrogated to obtain status data.
The addressing allows up to 2000 coils to be obtained at each request; however,
the specific slave device may have restrictions that lower the maximum quantity.
The coils are numbered from zero; (coil number 1 = zero, coil number 2 = one,
coil number 3 = two, and so on).
The following table is a sample read output status request to read coils 0020 to
0056 (37 coils) from slave device number 11.
Note: This is the structure of the message being sent out to the Modbus network. The byte values
below are in hexadecimal display
Node Function Data Start Data Start Number of Number of Error Check
Address Code Point High Point Low Points High Points Low Field (2 bytes)
0B 01 00 13 00 25 CRC
Response
An example response to Read Coil Status is as shown in the table below. The
data is packed one bit for each coil. The response includes the slave address,
function code, quantity of data characters, the data characters, and error
checking. Data is packed with one bit for each coil (1 = ON, 0 = OFF). The low
order bit of the first character contains the addressed coil, and the remainder
follows. For coil quantities that are not even multiples of eight, the last characters
are filled in with zeros at high order end. The quantity of data characters is
always specified as quantity of RTU characters, that is, the number is the same
whether RTU or ASCII is used.
Because the slave interface device is serviced at the end of a controller's scan,
data reflects coil status at the end of the scan. Some slaves limit the quantity of
coils provided each scan; thus, for large coil quantities, multiple PC transactions
must be made using coil status from sequential scans.
Node Func Byte Data Coil Data Coil Data Coil Data Coil Data Coil Error Check
Address Code Count Status 20 Status 28 Status 36 Status 44 Status 52 Field
to 27 to 35 to 43 to 51 to 56 (2 bytes)
0B 01 05 CD 6B B2 OE 1B CRC
Query
This function allows you to obtain the ON/OFF status of discrete inputs (Modbus
1x range) in the addressed slave. PC Broadcast mode is not supported with this
function code. In addition to the slave address and function fields, the message
requires that the information field contain the initial input address to be read
(Starting Address) and the number of locations that are interrogated to obtain
status data.
The addressing allows up to 2000 inputs to be obtained at each request;
however, the specific slave device may have restrictions that lower the maximum
quantity. The inputs are numbered form zero; (input 10001 = zero, input 10002 =
one, input 10003 = two, and so on, for a 584).
The following table is a sample read input status request to read inputs 10197 to
10218 (22 coils) from slave number 11.
Note: This is the structure of the message being sent out to the Modbus network. The byte values
below are in hexadecimal display.
Node Function Data Start Data Start Number of Number of Error Check
Address Code Point High Point Low Points High Points Low Field (2 bytes)
0B 02 00 C4 00 16 CRC
Response
An example response to Read Input Status is as shown in the table below. The
data is packed one bit for each input. The response includes the slave address,
function code, quantity of data characters, the data characters, and error
checking. Data is packed with one bit for each input (1=ON, 0=OFF). The lower
order bit of the first character contains the addressed input, and the remainder
follows. For input quantities that are not even multiples of eight, the last
characters are filled in with zeros at high order end. The quantity of data
characters is always specified as a quantity of RTU characters, that is, the
number is the same whether RTU or ASCII is used.
Because the slave interface device is serviced at the end of a controller's scan,
the data reflect input status at the end of the scan. Some slaves limit the quantity
of inputs provided each scan; thus, for large coil quantities, multiple PC
transactions must be made using coil status for sequential scans.
Node Func Byte Data Discrete Data Discrete Data Discrete Error Check
Address Code Count Input 10197 to Input 10205 to Input 10213 to Field
10204 10212 10218 (2 bytes)
0B 02 03 AC DB 35 CRC
Query
This function allows you to retrieve the contents of holding registers 4xxxx
(Modbus 4x range) in the addressed slave. The registers can store the numerical
values of associated timers and counters which can be driven to external
devices. The addressing allows retrieving up to 125 registers at each request;
however, the specific slave device may have restrictions that lower this maximum
quantity. The registers are numbered form zero (40001 = zero, 40002 = one, and
so on). The broadcast mode is not allowed.
The example below reads registers 40108 through 40110 (three registers) from
slave number 11.
Note: This is the structure of the message being sent out to the Modbus network. The byte values
below are in hexadecimal display.
Node Function Data Start Data Start Data Number Data Number Error Check
Address Code Registers Registers Low of Registers of Registers Field
High High Low (2 bytes)
0B 03 00 6B 00 03 CRC
Response
The addressed slave responds with its address and the function code, followed
by the information field. The information field contains 1 byte describing the
quantity of data bytes to be returned. The contents of the registers requested
(DATA) are two bytes each, with the binary content right justified within each pair
of characters. The first byte includes the high order bits and the second, the low
order bits.
Because the slave interface device is normally serviced at the end of the
controller's scan, the data reflect the register content at the end of the scan.
Some slaves limit the quantity of register content provided each scan; thus for
large register quantities, multiple transmissions are made using register content
from sequential scans.
In the example below, the registers 40108 to 40110 have the decimal contents
555, 0, and 100 respectively.
Node Function Byte High Low High Low High Low Error Check
Address Code Count Data Data Data Data Data Data Field
(2 bytes)
0B 03 06 02 2B 00 00 00 64 CRC
Query
This function retrieves the contents of the controller's input registers from the
Modbus 3x range. These locations receive their values from devices connected
to the I/O structure and can only be referenced, not altered from within the
controller, The addressing allows retrieving up to 125 registers at each request;
however, the specific slave device may have restrictions that lower this maximum
quantity. The registers are numbered for zero (30001 = zero, 30002 = one, and
so on). Broadcast mode is not allowed.
The example below requests the contents of register 30009 in slave number 11.
Note: This is the structure of the message being sent out to the Modbus network. The byte values
below are in hexadecimal display.
Node Function Data Start Data Start Data Number Data Number Error Check
Address Code Point High Point Low of Points High of Points Low Field
(2 bytes)
0B 04 00 08 00 01 CRC
Response
The addressed slave responds with its address and the function code followed by
the information field. The information field contains 1 byte describing the quantity
of data bytes to be returned. The contents of the registers requested (DATA) are
2 bytes each, with the binary content right justified within each pair of characters.
The first byte includes the high order bits and the second, the low order bits.
Because the slave interface is normally serviced at the end of the controller's
scan, the data reflect the register content at the end of the scan. Each PC limits
the quantity of register contents provided each scan; thus for large register
quantities, multiple PC scans are required, and the data provided is from
sequential scans.
In the example below the register 30009 contains the decimal value 0.
Node Function Byte Count Data Input Data Input Error Check
Address Code Register High Register Low Field
(2 bytes)
0B 04 02 00 00 CRC
Query
This Function Code forces a single coil (Modbus 0x range) either ON or OFF.
Any coil that exists within the controller can be forced to either state (ON or
OFF). However, because the controller is actively scanning, unless the coil is
disabled, the controller can also alter the state of the coil. Coils are numbered
from zero (coil 0001 = zero, coil 0002 = one, and so on). The data value 65,280
(FF00 HEX) sets the coil ON and the value zero turns it OFF; all other values are
illegal and do not affect that coil.
The use of slave address 00 (Broadcast Mode) forces all attached slaves to
modify the desired coil.
Note: Functions 5, 6, 15, and 16 are the only messages that are recognized as valid for broadcast.
Note: This is the structure of the message being sent out to the Modbus network. The byte values
below are in hexadecimal display.
Node Function Data Start Bit Data Start Bit Number of Number of Error Check
Address Code High Low Bits High Bits Low Field (2 bytes)
0B 05 00 AC FF 00 CRC
Response
The normal response to the Command Request is to re-transmit the message as
received after the coil state has been altered.
Node Function Data Coil Bit Data Coil Bit Data On/Off Data Error Check
Address Code High Low Field (2 bytes)
0B 05 00 AC FF 00 CRC
The forcing of a coil via Modbus function 5 happens regardless of whether the
addressed coil is disabled or not (In ProSoft products, the coil is only affected if
you implement the necessary ladder logic).
Note: The Modbus protocol does not include standard functions for testing or changing the
DISABLE state of discrete inputs or outputs. Where applicable, this may be accomplished via
device specific Program commands (In ProSoft products, this is only accomplished through ladder
logic programming).
Coils that are reprogrammed in the controller logic program are not automatically
cleared upon power up. Thus, if such a coil is set ON by function Code 5 and
(even months later), an output is connected to that coil, the output is "hot".
Query
This Function Code allows you to modify the contents of a Modbus 4x range in
the slave. This writes to a single register only. Any holding register that exists
within the controller can have its contents changed by this message. However,
because the controller is actively scanning, it also can alter the content of any
holding register at any time. The values are provided in binary up to the
maximum capacity of the controller. Unused high order bits must be set to zero.
When used with slave address zero (Broadcast mode), all slave controllers load
the specified register with the contents specified.
Note Functions 5, 6, 15, and 16 are the only messages that are recognized as valid for broadcast.
Note: This is the structure of the message being sent out to the Modbus network. The byte values
below are in hexadecimal display.
The example below is a request to write the value ‘3’ to register 40002 in slave
11.
Node Function Data Start Bit Data Start Preset Data Preset Data Error Check
Address Code High Bit Low Register High Register Low Field (2 bytes)
0B 06 00 01 00 03 CRC
Response
The response to a preset single register request is to re-transmit the query
message after the register has been altered.
Node Function Data Register Data Register Preset Data Preset Data Error Check
Address Code High Low Register High Register Low Field (2 bytes)
0B 06 00 01 00 03 CRC
Request Response
Field Name (Hex) Field Name (Hex)
Function 08 Function 08
Sub-function Hi 00 Sub-function Hi 00
Sub-function Lo 00 Sub-function Lo 00
Data Hi A5 Data Hi A5
Data Lo 37 Data Lo 27
The data fields in responses to other kinds of queries could contain error counts
or other data requested by the sub-function code.
Query
This function forces each coil (Modbus 0x range) in a consecutive block of coils
to a desired ON or OFF state. Any coil that exists within the controller can be
forced to either state (ON or OFF). However, because the controller is actively
scanning, unless the coils are disabled, the controller can also alter the state of
the coil. Coils are numbered from zero (coil 00001 = zero, coil 00002 = one, and
so on). The desired status of each coil is packed in the data field, one bit for each
coil (1= ON, 0= OFF). The use of slave address 0 (Broadcast Mode) forces all
attached slaves to modify the desired coils.
Note: Functions 5, 6, 15, and 16 are the only messages (other than Loopback Diagnostic Test) that
are recognized as valid for broadcast.
The following example forces 10 coils starting at address 20 (13 HEX). The two
data fields, CD =1100 and 00 = 0000 000, indicate that coils 27, 26, 23, 22, and
20 are to be forced on.
Note: This is the structure of the message being sent out to the Modbus network. The byte values
below are in hexadecimal display.
Node Func Coil Coil Number of Number of Byte Force Force Error Check
Address Code Address Address Coils High Coils Low Count Data High Data Low Field (2 bytes)
High Low 20 to 27 28 to 29
0B 0F 00 13 00 0A 02 CD 01 CRC
Response
The normal response is an echo of the slave address, function code, starting
address, and quantity of coils forced.
Query
This Function Code allows you to modify the contents of a Modbus 4x range in
the slave. This writes up to 125 registers at time. Since the controller is actively
scanning, it also can alter the content of any holding register at any time.
Note: Function codes 5, 6, 15, and 16 are the only messages that are recognized as valid for
broadcast.
Note: This is the structure of the message being sent out to the Modbus network. The byte values
below are in hexadecimal display.
Node Func Data Start Data Start Number Number Byte Data Data Data Data Error
Address Code Address Address of Points of Points Count High Low High Low Check
High Low High Low Field (2
bytes)
0B 10 00 01 00 02 04 00 0A 01 02 CRC
Response
The normal response to a function 16 query is to echo the address, function
code, starting address and number of registers to be loaded.
Node Func Data Start Data Start Number Number Error Check
Address Code Address Address of Points of Points Field (2 bytes)
High Low High Low
0B 10 00 01 00 02 CRC
This instruction moves one floating-point value in two 16-bit integer images to
MBS.DATA.WriteData[0], which is an integer tag. For multiple floating-point
values increase the Length field by a factor of 2 per floating-point value.
The COP instruction to move data from MBS.DATA.ReadData[0], which is an
integer tag, to a floating-point tag (something you would do to receive floating-
point values from the module) is shown below.
This instruction moves two 16-bit integer registers containing one floating point
value image into the floating-point tag. For multiple values increase the Length
field.
Example #1
Modbus Address Data Type Parameter
47101 32 bit REAL TEMP Pump #1
47102 32 bit REAL Pressure Pump #1
47103 32 bit REAL TEMP Pump #2
47104 32 bit REAL Pressure Pump #2
With the module configured as a master, you only need to enable these
parameters to support a write to this type of addressing (Modbus FC 6 or 16).
If the slave device uses addressing as shown in Example #2, then you do not
need to do anything with the Float Flag or Float Start parameters, as this
addressing scheme uses two Modbus addresses to represent each floating-point
value:
Example #2
Modbus Address Data Type Parameter
47101 32 bit REAL TEMP Pump #1
47103 32 bit REAL Pressure Pump #1
47105 32 bit REAL TEMP Pump #2
47107 32 bit REAL Pressure Pump #2
Example #1: Master is issuing Modbus command with FC 16 (with Float Flag: Yes) to
transfer Float data to slave.
In the above example, the master's Modbus command to transmit inside the
Modbus packet is as follows.
Example #2: Master is issuing Modbus command with FC 16 (with Float Flag: No) to transfer
Float data.
Float Flag: "N" tells the master to ignore the floating values and treat each
register data as a data point composed of 1 word, 2 bytes or 16 bits.
Float Start: Ignored.
DB Addr - same as when Float Flag: Y.
Reg Count - Tells the master how many data points to send to the slave.
Swap Code - same as when Float Flag: Y.
Func Code - same as when Float Flag: Y.
Addr in Dev - same as when Float Flag: Y as long as the slave's Float Flag = Y.
In the above example, the master's Modbus command to transmit inside the
Modbus packet is as follows.
Example #3: Master is issuing Modbus command with FC 3 to transfer Float data from slave.
In the above example, the master's Modbus command to transmit inside the
Modbus packet is as follows.
Slave Address Function Code Address in Device Reg Count
DEC 01 3 6100 2
HEX 01 03 17 D4 00 02
In the above example the (Enron/Daniel supporting) slave's Modbus command to
transmit inside the Modbus packet is as follows.
Slave Address Function Code Byte Count Data
DEC 01 3 8 32.75 275.69
HEX 01 03 08 00 00 42 03 D8 52 43 89
In the above example the (a NON-Enron/Daniel supporting) slave's Modbus
command that is transmitted inside the Modbus packet is as follows.
Slave Address Function Code Byte Count Data
DEC 01 3 4 32.75
HEX 01 03 04 00 00 42 03
Event Command blocks send Modbus commands directly from the ladder logic to
one of the Master ports. The Event Command is added to the high-priority queue
and interrupts normal polling so that this special command can be sent as soon
as possible.
Note: Overusing Event Commands may substantially slow or totally disrupt normal polling. Use
Event Commands sparingly. Event Commands are meant to be used as one-shot commands
triggered by special circumstances or uncommon events.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
These blocks allow the processor to disable polling for specific slaves.
These blocks allow the processor to enable polling for specific slaves.
Two arrays are allocated in the module’s primary object to hold the polling status
of each slave on the Master ports. You can use this status data to determine
which slaves are currently active on the port, in communication error, or have
their polling suspended and disabled.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
7 to (n-1) Spare
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
The 8000-series blocks are similar to the 1000 and 2000-series blocks. The
8000-series blocks source the command data from the processor, instead of from
the module’s database.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
This block requests status data for Event with Data Commands.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
This block requests information from the processor about the configuration file, in
preparation for transferring the configuration file from the processor to the
module. It specifies the location in the configuration file to start copying and
sending the information.
1 Write Block ID: 9000 or -9000 to be used by the processor in its next Write block.
This block requests the configuration file from the processor. The module returns
the requested contents of the configuration file.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
Offset Description
24 Port 2 Errors Received: Total number of message errors received on the port.
25 Read Block Count: Total number of read blocks transferred from the module to the
processor.
26 Write Block Count: Total number of write blocks transferred from the processor to the
module.
27 Parse Block Count: Total number of blocks successfully parsed that were received
from the processor.
28 Event Command Block Count: Total number of Event Command blocks received
from the processor.
29 Command Control Block Count: Total number of Command Control blocks received
from the processor.
30 Error Block Count: Total number of block errors recognized by the module.
31 Port 1 Current Error: For a slave port, this field contains the value of the current error
code returned. For a master port, this field contains the index of the currently
executing command.
32 Port 1 Last Error: For a slave port, this field contains the value of the last error code
returned. For a master port, this field contains the index of the command with an
error.
33 Port 2 Current Error: For a slave port, this field contains the value of the current error
code returned. For a master port, this field contains the index of the currently
executing command.
34 Port 2 Last Error: For a slave port, this field contains the value of the last error code
returned. For a master port, this field contains the index of the command with an
error.
35 to (n-1) Spare
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
This block enables and disables ports, as well as individual Master commands
for a port.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
This block requests the enabled/disabled status of ports and Master commands.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
If one or more of the slave ports on the module are configured for formatted
Pass-Through mode, the module sends input image blocks with identification
codes of 9956, 9957, 9958 or 9959 to the processor for each write command
received. Any incoming Modbus Function 5, 6, 15 or 16 command is passed from
the port to the processor using a block identification number that identifies the
Function Code received in the incoming command.
The MBS Add-On Instruction handles the receipt of all Modbus write functions
and to respond to commands issued by the remote Modbus Master device.
Note: Mutual exclusion on Pass-Through Block IDs 9956, 9957, 9958, and 9959 from both ports -
If both ports are configured as slave ports, when both of the slave ports receive write commands
with the same Function Code, which would need to use the same block identifier from the above
list, the module will process the command from the port which first received the command and will
return an Exception Code error code 6 (node is busy - retry command later error) from the other
port that received the command last. The Master retries the command on the busy port after a
short delay. This prevents Pass-Through blocks on both ports from overwriting each other.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
The ladder logic is responsible for parsing and copying the received message
and performing the proper control operation as expected by the Master device.
The processor must then respond to the Pass-Through control block with an
output image write block with the following format.
This informs the module that the command has been processed and can be
cleared from the Pass-Through queue.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
The ladder logic is responsible for parsing and copying the received message
and performing the proper control operation as expected by the Master device.
The processor must then respond to the Pass-Through block with a write block
with the following format.
This informs the module that the command has been processed and can be
cleared from the Pass-Through queue.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
The ladder logic is responsible for parsing and copying the received message
and performing the proper control operation as expected by the Master device.
The processor must then respond to the Pass-Through control block with an
output image write block with the following format.
This informs the module that the command has been processed and can be
cleared from the Pass-Through queue.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
The ladder logic is responsible for parsing and copying the received message
and performing the proper control operation as expected by the Master device.
The processor must then respond to the Pass-Through control block with a write
block with the following format.
This informs the module that the command has been processed and can be
cleared from the Pass-Through queue.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
The ladder logic is responsible for parsing and copying the received message
and performing the proper control operation as expected by the Master device.
The processor must then respond to the pass-through control block with an
output image write block with the following format.
This informs the module that the command has been processed and can be
cleared from the Pass-Through queue.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
The ladder logic is responsible for parsing and copying the received message
and performing the proper control operation as expected by the Master device.
The processor must then respond to the Pass-Through control block with an
output image write block with the following format.
This informs the module that the command has been processed and can be
cleared from the Pass-Through queue.
This block uses the time information from the module to set the processor time.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
Where n = 60, 120, or 240 depending on the Block Transfer Size parameter.
Note: The standard connector view shown is color-coded for a straight-through cable.
Ethernet Performance
Ethernet performance in the MVI69E-MBS module can be affected in the
following way:
Accessing the web interface (refreshing the page, downloading files, and so
on) may affect performance
Also, high Ethernet traffic may impact MBS performance, so consider one of
these options:
o Use managed switches to reduce traffic coming to module port
o Use CIPconnect for these applications and disconnect the module
Ethernet port from the network
The module supports RS-232, RS-422, and RS-485 wiring to remote devices.
The "Use CTS Line" parameter for the port configuration should be set to 'Y' for
most modem applications.
Note: For most null modem connections where hardware handshaking is not required, the Use
CTS Line parameter should be set to N and no jumper is required between Pins 7 (RTS) and 8
(CTS) on the connector. If the port is configured with the Use CTS Line set to Y, then a jumper is
required between the RTS and the CTS lines on the port connection.
Note: Terminating resistors are generally not required on the RS-485 network, unless you are
experiencing communication problems that can be attributed to signal echoes or reflections. In
these cases, installing a 120-ohm terminating resistor between pins 1 and 8 on the module
connector end of the RS-485 line may improve communication quality.
Note: For technical support calls within the United States, ProSoft’s 24/7 after-hours phone support
is available for urgent plant-down issues. Detailed contact information for all our worldwide
locations is available on the following page.
Mexico
Phone: +52.222.264.1814
[email protected]
Languages spoken: Spanish, English
REGIONAL TECH SUPPORT
[email protected]
E
Index Editing Configuration Parameters • 37
ENRON Floating Point Support • 125
A Ethernet 1 • 47, 102
Ethernet Cable Configuration • 151
About the Modbus Protocol • 112 Ethernet Cable Specifications • 151
Add Event with Data Blocks (8000, 8001) • 135 Ethernet LED Indicators • 98
Adding another module in PCB • 29, 32 Ethernet Performance • 152
Adding Another Module in RSLogix 5000 • 31 Ethernet Port Connection • 151
Adding Multiple Modules in the Rack (Optional) • 29 Event Command Blocks (1000 to 1255, 2000 to 2255)
Adding the Module to RSLogix • 14, 36, 54 • 131
Additional Configuration Parameters as Master • 42, Example and State Diagram • 120
74
Additional Configuration Parameters as Slave • 43 F
B Floating-Point Support • 124
Force Multiple Coils (Function Code 15) • 122
Backplane Data Transfer • 66 Force Single Coil (Function Code 05) • 118
Basic PCB Functions • 36 Function Blocks • 130
Function Codes Supported by the Module • 113
C
G
Clearing a Fault Condition • 98
Cold-boot Control Block (9999) • 150 General Concepts of the MVI69E-MBS Data Transfer •
Command Control Blocks (5001 to 5006, 5101 to 65
5106) • 134 General Specifications - Modbus Master/Slave • 112
Command Error Codes • 74 Generating the AOI (.L5X File) in ProSoft
Command List Entry Errors • 109 Configuration Builder • 22
Communication Error Codes • 61, 74, 109 Get Configuration File Block (9001 or -9001) • 138
Configuration Parameters Common to Master and Get Configuration File Information Block (9000 or -
Slave • 40, 42, 43 9000) • 137
Configuring the Floating Point Data Transfer • 125 Get Event with Data Status Block (8100) • 136
Configuring the MVI69E-MBS Using PCB • 36, 101, Get General Module Status Data Block (9250) • 139
103 Get Port and Command Active Bits Block (9501) • 142
Connecting the PC to the Module's Ethernet Port • 100
Connecting to the Module’s Web Page • 110 H
Contacting Technical Support • 157 Hardware Specifications • 111
Content Disclaimer • 2
Controller Tags • 54 I
Creating a Module in the Project Using a Generic 1769
Module Profile • 14, 19 If Block Transfer Size = 120 • 69
Creating a Module in the Project Using an Add-On If Block Transfer Size = 240 • 70
Profile • 14, 15 If Block Transfer Size = 60 • 69
Creating a New PCB Project and Exporting an .L5X Important Safety Information • 3
File • 36 Importing the Add-On Instruction • 26
Creating and Exporting the .L5X File • 24, 27, 30, 36 Installing an Add-On Profile • 15
Creating the Module in an RSLogix 5000 Project • 14 Installing ProSoft Configuration Builder • 21
Installing the Module in the Rack • 11
D
L
Data Flow Between the Module and Processor • 71
DB9 to RJ45 Adaptor (Cable 14) • 156 LED Status Indicators • 97
Deployment Checklist • 9
M
Diagnostics (Function Code 08) • 120
Diagnostics and Troubleshooting • 74, 97 Master Command List • 74
Diagnostics Menu • 105 Master Mode • 73
MBS Controller Tag Overview • 58
R
Read and Write Block Transfer Sequences • 68