CG39FDI-3 CONTENTS TABLE OF CONTENTS SECTION AND TITLE PAGE 1.0 INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 PRODUCT DESCRIPTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 SOFTWARE REGISTRATION AND SUPPORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 Software Registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2 Product Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 RELATED LITERATURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1 1-2 1-3 1-3 1-3 1-5 2.0 SOFTWARE INSTALLATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1 2.1 DISK IDENTIFICATION AND BACKUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1 2.2 INSTALLATION PROCEDURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1 3.0 CONFIGURATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 PROCEDURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 ACCESSING THE FUNCTION BLOCK LIBRARY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 GENERAL CONCEPTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 CONFIGURATION GUIDELINES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 3-1 3-1 3-1 3-2 4.0 FUNCTION BLOCKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1 4.1 MODBUS SLAVE FUNCTION BLOCK (MODBUS_S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2 4.1.1 Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2 4.1.2 Modbus Function Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6 4.1.3 Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-9 4.1.4 Soft List Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10 4.2 SERIAL FUNCTION BLOCK (SERIAL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-13 4.2.1 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-13 4.2.2 Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-13 4.2.3 Soft List Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-14 A.0 APPENDIX A S APPLICATION EXAMPLE 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1 A.1 HANDLING WRITES FROM THE MODBUS MASTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-2 B.0 APPENDIX B S APPLICATION EXAMPLE 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-1 B.1 HANDLING WRITES FROM THE MODBUS MASTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2 C.0 APPENDIX C S ERROR CODES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-1 D.0 APPENDIX D S SPECIFICATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D-1 E.0 APPENDIX E S CABLE CONNECTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-1 F.0 APPENDIX F S ENTRELEC RS-232/RS-485 CONVERTER CONNECTIONS . . . . . . . . . . . . F-1 May 1997 i CONTENTS CG39FDI-3 G.0 APPENDIX G S REDUNDANT SYSTEM WIRING CONFIGURATION . . . . . . . . . . . . . . . . . G-1 TABLE OF CONTENTS (Continued) PAGE SECTION AND TITLE H.0 APPENDIX H S USING MODBUS_S AS A SERIAL ANALYZER . . . . . . . . . . . . . . . . . . . . . . H.1 SERIAL ANALYZER INPUTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . H.2 SERIAL ANALYZER OUTPUTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . H.3 SERIAL ANALYZER SOFT LIST PARAMETERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . H-1 H-2 H-2 H-3 LIST OF FIGURES PAGE FIGURE AND TITLE A-1 MODBUS_S Configuration Showing On-line Data for Example 1 . . . . . . . . . . . . . . . . . . . . . . . . . A-1 A-2 DATA Array Element Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-2 A-3 Register Writes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-3 B-1 MODBUS_S Configuration Showing On-line Data for Example 2 . . . . . . . . . . . . . . . . . . . . . . . . . . B-1 B-2 DATA Array Element Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2 B-3 Coil Writes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-3 E-1 Minimum Serial Cable Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-1 F-1 Entrelec RS-232/RS-485 Converter Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F-1 G-1 Redundant System Wiring Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . G-1 H-1 MODBUS_S Block Used as a Serial Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . H-1 LIST OF TABLES TABLE AND TITLE PAGE C-1 Error Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-1 D-1 Library Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D-1 E-1 Control Module Serial Port Pin-Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-1 ii May 1997 CG39FDI-3 CONTENTS SIGNIFICANT CHANGES FOR REV. 2 Significant changes for rev. 2 are indicated by change bars located in the page margins. These changes are listed here. 1.0 INTRODUCTION - This section has been updated to accommodate the QUADLOG version of the library. Section descriptions were updated to include the new appendices outlined below. 1.2.2 PRODUCT SUPPORT - This section has been enhanced with the addition of a telephone listing of international subsidiaries. 2.0 SOFTWARE INSTALLATION - This section has been rewritten to accommodate the different versions of MS-Windows (i.e. Windows 3.x, Windows 95, and Windows NT). 4.0 FUNCTION BLOCKS - This section has updated graphics for the Modbus Slave (MODBUS_S) and Serial (SERIAL) function blocks. Also, two new soft list parameters (WriteSecurity and ExtendedAddress) have been added to the MODBUS_S block. A.0 APPENDIX A, APPLICATION EXAMPLE 1 - This section has been revised with updates to graphics which show examples of on-line display information. B.0 APPENDIX B, APPLICATION EXAMPLE 2 - This section has been revised with updates to graphics which show examples of on-line display information. C.0 APPENDIX C, ERROR CODES - This section has been expanded. It now lists the error code messages that appear at the error code (E_CODE) output of the MODBUS_S function block, a description of each code, and recommended user actions. D.0 APPENDIX D, SPECIFICATIONS - This section has been updated to include the latest general specifications of the Modbus Slave Function Block Library. F.0 APPENDIX F, ENTRELEC RS232/485 CONVERTER CONNECTIONS - This is a new section that shows the connections needed for wiring an RS-485 foreign device to an ACM/CCM’s RS-232 serial port using an Entrelec RS-232 to RS-485 converter. G.0 APPENDIX G, REDUNDANT SYSTEM WIRING CONFIGURATION - This is a new section that shows the general wiring needed for a dual Modbus network in a redundant system. H.0 APPENDIX H, USING MODBUS_ S BLOCK AS A SERIAL ANALYZER - This is a new section that describes the configuration of a MODBUS_S block for use as a serial protocol analyzer. May 1997 iii CONTENTS CG39FDI-3 Moore Products Co. assumes no liability for errors or omissions in this document or for the application and use of information included in this document. The information herein is subject to change without notice. The Moore logo, APACS, the APACS logo, QUADLOG, the QUADLOG logo, and 4-mation are trademarks of Moore Products Co. All other trademarks are the property of the respective owners. © Copyright 1997 Moore Products Co. All rights reserved. iv May 1997 CG39FDI-3 INTRODUCTION 1.0 INTRODUCTION The Modbus Slave Function Block Library is add-on software for use with the 4-mation™ configuration software, version 3.00 or higher. The library software is available in both APACS® and QUADLOG® versions. The APACS version (P/N 15939-624V4.xx) is for use with the Advanced Control Module (ACM) software, version 4.01 or higher. The QUADLOG version (P/N 15939-682V3.2x) is for use with either the Advanced Control Module Plus (ACM+) software or the Critical Control Module (CCM) software. Each must be version 3.20 or higher. The library software provides 4-mation with a set of function blocks for configuring a control module to operate as a Modbus slave. This document describes how to identify, register, backup, and install the Modbus Slave FB Library. It also provides reference information for each function block. This information is intended to be used in conjunction with Using the 4-mation Configuration Software, as well as the other documents listed in section 1.3, Related Literature. After the Modbus Slave FB Library software has been installed, most of the information presented in this document is also available through 4-mation’s on-line help system. This Guide is organized into the following sections: C Section 1, Introduction—Summarizes the information presented in this Guide, describes the software package, provides the software registration procedure, and lists reference literature to consult for additional information. C Section 2, Software Installation—Describes the general disk handling and backup requirements and the software installation procedure. C Section 3, Configuration—Gives a general configuration objective, refers to the needed configuration software and associated literature, indicates how the function block library is accessed, and provides guidelines to carry out the MODBUS_S function block configuration. C Section 4, Function Blocks—Details the inputs, outputs, and softlist parameters of the MODBUS_S and the SERIAL function blocks. C Appendix A, Application Example 1—Provides a configuration example of using a control module as a Modbus slave to provide 60 floating-point (REAL) values to a Modbus master. C Appendix B, Application Example 2—Describes a control module configured as a Modbus slave to provide 500 BOOL values to a Modbus master. Handling of reverse data flow (Modbus master write operation) is also discussed briefly. C Appendix C, Error Codes—Lists the error code messages that appear at the error code (E_CODE) output of the MODBUS_S function block whenever an error condition is encountered. C Appendix D, Specifications—Lists general specifications for the Modbus Slave Function Block (FB) Library. May 1997 1-1 * * * * * * INTRODUCTION CG39FDI-3 C Appendix E, Cable Connections—Shows the pin-out of control module serial ports and the minimum cable requirements for connecting to the serial port of a foreign device. C Appendix F, Entrelec RS-232 to RS-485 Converter Connections—Details the wiring and configuration of the recommended RS-232 to RS-485 converter. C Appendix G, Redundant System Wiring—Shows the general wiring configuration of a dual Modbus network in a redundant system. C Appendix H, Using MODBUS_S as a Serial Analyzer—Describes the configuration of a MODBUS_S block for use as a serial protocol analyzer. 1.1 PRODUCT DESCRIPTION The Modbus Function Block (FB) Libraries permit the control module and the APACS/QUADLOG system to exchange data with foreign devices that use the Modbus protocol. The Modbus RTU protocol is used by AEG Schneider Automation (formerly Gould/Modicon) RTU programmable logic controllers (PLCs) and by many types of specialty instruments and interfaces such as analyzers, chromatographs, weigh scales, humanmachine interfaces (HMIs), remote termination units (RTUs), and other distributed control systems (DCSs). Modbus RTU is a master/slave protocol in which a single master can address multiple slaves. The slave devices do not initiate any communication; they wait for a command from the master, which requests the slave to read or write data values. The control module can be configured to be either the master or the slave, but not both from the same port. The Modbus Slave FB Library contains the Modbus Slave (MODBUS_S) function block, which allows the control module to act as a Modbus slave. The Modbus Master FB Library contains the Modbus Master (MODBUS_M) function block, which allows the control module to act as a Modbus master. To use a control module as a Modbus Master, refer to the Modbus Master Function Block Library (document number CG39FDI-2). Both libraries also contain a Serial (SERIAL) function block, which is used to initialize the Modbus communications port. The function blocks included in Modbus Slave FB Library are configured on a configuration sheet using the 4-mation™ configuration software. The configuration of the MODBUS_S function block establishes, inside the control module, a data array to hold the foreign device data. The control module configuration, another control module, or an operator interface can then access and use the foreign device data by referencing the array element. Configuration of the SERIAL function block enables the control module’s serial port to communicate with the Modbus network and its foreign devices. 1.2 SOFTWARE REGISTRATION AND SUPPORT The following subsections present guidelines for registering your software package and for contacting Moore Products Co. for software product support. 1-2 May 1997 CG39FDI-3 INTRODUCTION 1.2.1 Software Registration Before reading further, complete and mail the brief Software Registration Form included in the package. Registration will: C Enter your software’s part number/version number and serial number in the master database of active software packages C Initiate product support C Identify you as the person to whom information about future software enhancements and updates should be sent Without proper registration, it may be impossible to provide product support and to inform you of enhancements and updates. Each software update or enhancement will include a Software Registration Form so that your package’s current part number/version number and serial number can be recorded in the database. Additional registration forms are provided for subsequent users who become responsible for the software. 1.2.2 Product Support Product support can be obtained from the Moore Products Co. Technical Information Center (TIC). TIC is a customer service center that provides direct telephone support on technical issues related to the functionality, application, and integration of all products supplied by Moore Products Co. To contact TIC for support, either call 215-646-7400, extension 4TIC (4842) or leave a message in the bulletin board service (BBS) by calling 215-283-4968. The following information should be at hand when contacting TIC for support: C Caller ID number, or name and company name (When someone calls for support for the first time, a personal caller number is assigned. This number is mailed in the form of a caller card. Having the number available when calling for support will allow the TIC representative taking the call to use the central customer database to quickly identify the caller’s location and past support needs.) C Product part number, software version, and serial number, all of which are identified on the software’s disk label C Computer brand name, model number, and hardware configuration (types of disk drives, memory size, video adapter, etc.) C Version number of operating system (e.g. MS-DOS 6.22, Windows 3.x, Windows 95, Windows NT) May 1997 1-3 INTRODUCTION C CG39FDI-3 If there is a problem with software operation: - The steps performed before the problem occurred - Any error messages displayed - A copy of the computer’s CONFIG.SYS file - A copy of the computer’s AUTOEXEC.BAT file It would also be helpful to have the following information: - 4-mation version number - Control module ROM version - Documentation about your system’s architecture - Information about the foreign device (e.g. company name, model number, software version, Modbus protocol implementation, etc.) to which the control module and the Modbus software are trying to communicate. For product support outside of North America, an alternative support system is available by contacting the appropriate Moore Products Co. subsidiary: * * * * * * * * * * * * * * * * * * * * * * * Australia Moore Products Co. (Australia) Pty.Ltd. Tel: (61) (2) 9319 4877 Canada Moore Products Co. (Canada) Inc. Tel: (905) 457 9638 France Factory Systemes, 22 Tel: (33 1) 64 61 68 68 India Moore Controls Pvt. Limited Tel: (91) (212) 770171 Italy Moore Products Co. (Italia) S.r.l. Tel: (39) (2) 2940 1094 Mexico Moore Products de Mexico S.A. de C.V. Tel: 6-11-98-58; 6-15-19-48; 6-15-02-62; or 6-15-02-38 The Netherlands Moore Products Co. B.V. Tel: (00) (31) 180 461111 Singapore Moore Products Co. (S) Pte.Ltd. Tel: (65) 299 6051 South Africa Moore Controls S.A. (Pty.) Tel: (27) 466 1673/9 United Kingdom Moore Products Co.(U.K.) Ltd. Tel: (44) (1935) 706262 Japan Moore Products Co.(Japan) K.K. Tel: (81) (3) 5484 4390 1-4 May 1997 CG39FDI-3 INTRODUCTION 1.3 RELATED LITERATURE The following Moore Products Co. literature is available for reference: C C C C * * * * * 4-mation, Installation and Operation (version 3.x binder number UM39-6, version 4.x binder number UM39-11) Function Block Language (version 3.x binder number UM39-7, version 4.x binder number UM39-12) APACS ACM Installation & Service Instruction (document number SD39ACM-2) QUADLOG CCM Installation & Service Instruction (document number SDQLCCM-1) The following vendor literature should be available as needed: • • C C Microsoft MS-DOS Operating System Reference Microsoft Windows User’s Guide Foreign Device’s Modbus Protocol Communications Manual AEG Schneider Automation’s “Modicon Modbus Protocol Reference Guide PI-MBUS-300” * # May 1997 1-5 INTRODUCTION 1-6 CG39FDI-3 May 1997 CG39FDI-3 SOFTWARE INSTALLATION * 2.0 SOFTWARE INSTALLATION This section provides the procedures for making a backup copy of the Modbus Slave FB Library software, installing the software, and performing initial software set-up. The software must be installed from floppy disks to a permanent storage medium, such as the computer’s hard disk. 2.1 DISK IDENTIFICATION AND BACKUP The Modbus Slave FB Library software is shipped on a high density (HD) 3½" floppy disk. The label on the disk lists the product’s part number, release number, and date. It is recommended that you make backup copies of the original disk. Make the copies using the disk copying procedure appropriate for your computer’s operating system. Once copied, safeguard the original by storing it separately from the copies. Be sure to correctly label and write-protect the copies. 2.2 INSTALLATION PROCEDURE The following procedures are used to install the Modbus Slave FB Library software from a floppy drive to a permanent storage medium, such as a hard drive. The installation is performed from Windows Program Manager or Explorer. This is accomplished with the installation program (SETUP.EXE) resident on the library disk. Essentially, you are to load and run this program and respond to prompts. The prompts will be in the form of pop-up dialog boxes which will query you to enter information regarding your computer system. The method used to run the setup program varies depending on the specific version of Windows on the host computer. Use the appropriate procedure as needed. IMPORTANT An ACM/CCM configuration created before the Modbus Slave FB Library installation can either be exported/imported to include the new function blocks, or a new configuration can be created and copy/paste used to place the Modbus Slave and Serial function blocks into it. To install the library under Windows 3.x: 1. Insert the library disk into the floppy drive. 2. From Program Manager, select File, Run. 3. At the Run command line, enter drive:\SETUP.EXE to start and initialize the setup program. Examples: A:\SETUP.EXE or B:\SETUP.EXE 4. When the setup program starts, you are presented with an installation screen. Pop-up dialog boxes will prompt you to enter information about your computer. Respond as needed. May 1997 2-1 SOFTWARE INSTALLATION CG39FDI-3 To install the library under Windows 95: 1. Click on the Start button, point to Settings, and then click Control Panel. 2. Double-click on the Add/Remove Programs icon. This opens the Add/Remove Program Properties dialog box. 3. Click the Install button. This opens the Install Program From Floppy Disk or CD-ROM dialog box. 4. Insert the library disk into the floppy drive then click the Next button. This opens the Run Installation Program dialog box. 5. Verify that the command line is displaying the path and name of the setup program, then click the Finish button to commence installation. Examples: A:\SETUP.EXE or B:\SETUP.EXE 6. When the setup program starts, you are presented with a series of dialog boxes that prompt you for information about your computer. Respond as needed. To install the library under Windows NT: The procedure for installing this library under Windows NT (also called Windows NT Workstation) depends on which version of this operating system you are using. For Windows NT up to and including version 3.5.1, use the procedure for Windows 3.x above. For Windows NT version 4.0 and higher, use the procedure for Windows 95 above. # 2-2 May 1997 CG39FDI-3 CONFIGURATION 3.0 CONFIGURATION The Modbus Slave FB Library is used to configure a control module to act as a Modbus slave. In this role, the control module provides APACS/QUADLOG data in response to requests from a Modbus master. Many devices found in the control industry act as Modbus masters, such as human-machine interfaces (HMIs), remote terminal units (RTUs), data acquisition systems, and distributed control systems. The slave control module also responds to commands from the Modbus master to change (write) APACS/QUADLOG values mapped as Modbus addresses. 3.1 PROCEDURE The configuration procedure for the Modbus Slave FB Library entails the same skills and knowledge needed for the configuration of other function blocks used by either APACS or QUADLOG. The configuration is developed by use of the 4-mation configuration software. Instructions for proper installation and use of 4mation are given in the appropriate literature listed in section 1.3, Related Literature. 3.2 ACCESSING THE FUNCTION BLOCK LIBRARY With the Modbus Slave FB Library properly installed (see section 2.0, Installation), 4-mation will automatically include the Modbus Slave (MODBUS_S) and Serial (SERIAL) function blocks when it is started. These function blocks can then be selected from 4-mation’s Standard function block list (they will not appear on the icon bar). Use the DERIVED key and then select the Standard radio button to display the list of function blocks including the MODBUS_S and SERIAL blocks. IMPORTANT An ACM/CCM configuration created before the Modbus Slave FB Library installation can be exported/imported to include the new function blocks, or a new configuration can be created and copy/paste used to place the Modbus Slave and Serial function blocks into it. 3.3 GENERAL CONCEPTS The MODBUS_S function block(s) can be configured to handle the majority of the Modbus communication requirements. Additional control module configuration (ladder logic, function blocks, etc.) is also needed to create and manipulate data arrays that provide data values to the MODBUS_S function blocks and, thus, the Modbus master. The basic MODBUS_S function block is shown in section 4.1. The Modbus slave node address is specified as the ADDR input. A control module can only appear as a single slave node address. The Modbus reference type (i.e. output coil, input coil, input register or holding register), length of the data array, and scaling values are also entered as function block inputs. Scaling can be performed on analog values by using the ENG_LO May 1997 3-1 CONFIGURATION CG39FDI-3 and HI data array inputs. The purpose of the SERIAL function block is to setup one of the control module’s serial ports for serial communication with a foreign device. This function block handles the baud rate, parity, stop bits, etc. along with flow control, timeout, and buffer size parameters. The SERIAL block provides an ID output to be referenced by other serial communication function blocks that use the control module serial port. Multiple serial communication function blocks, such as the MODBUS_S, can make use of a single SERIAL block. 3.4 CONFIGURATION GUIDELINES A common application for the MODBUS_S function block is to provide APACS/QUADLOG values to a Modbus master using data references that are understood by the master (for example, coils and registers). Typically, several MODBUS_S function blocks would be configured to retrieve APACS/QUADLOG values in the control module, such as process variables, I/O points, and calculated variables, and to map these to the Modbus coil and register addresses. The Modbus master would then be able to read and, as needed, write to those coils and registers over the Modbus protocol link. The control module is configured to represent a single Modbus slave node address by entering a value in the ADDR input of each MODBUS_S function block. The type of Modbus reference (coil, register, etc.) is determined by the START input. In the Modbus system, coils are addresses from 00001 to 09999 (1 to 9999), input coils are 10001 to 19999, input registers are 30001 to 39999, and holding registers are 40001 to 49999. The NUM input then defines how many sequential references will be provided by this MODBUS_S function block, beginning at the START address. The actual data values are placed in the configured DATA array, where each element generally corresponds to a Modbus coil or register. For some values, like REALs and DINTs, two registers may be used to represent a single value, depending on the function block configuration. Analog values in the APACS/QUADLOG system, such as REALs, DINTs, and UINTs should be mapped to input registers (3xxxx) or holding registers (4xxxx). Discrete values, like BOOLs, should be mapped to coils (0xxxx) or input coils (1xxxx). Using a simple assignment method on a control module configuration sheet, each APACS/QUADLOG value can be transferred to a corresponding DATA array element and provided to the Modbus master when requested. New data values, sent by the Modbus master to change Modbus values via the MODBUS_S function block, also appear in the DATA array. 3-2 May 1997 CG39FDI-3 CONFIGURATION IMPORTANT When structuring the database in the control module acting as a Modbus slave device, it is strongly suggested that a sequential block of discretes, registers, etc. be allocated as the data to be read by the master. A sequential block of data will be read much more efficiently by the master, resulting in improved performance. If necessary, use control module instructions to move the data from scattered origins to a sequential or tightly packed group of registers, discretes, etc. to be read by the master. Section 4.0, Function Blocks, defines the inputs, outputs, and soft list parameters of the MODBUS_S and SERIAL function blocks used in configuring the Modbus slave. Detailed descriptions of two applications are provided in the appendices of this Guide. Appendix A contains Application Example 1, which describes a control module configured as a Modbus slave that provides sixty floating point (REAL) values to a Modbus master. Appendix B contains Application Example 2, which describes a control module configured as a Modbus slave that provides 500 BOOL values to a Modbus master. Both examples also include information for handling Modbus master write operations. Additional supplemental information is provided in appendices C through H as described in section 1.0, Introduction. # May 1997 3-3 CONFIGURATION 3-4 CG39FDI-3 May 1997 CG39FDI-3 FUNCTION BLOCKS * 4.0 FUNCTION BLOCKS The Modbus Slave Function Block Library provides the 4-mation configuration software with a set of function blocks for configuring a control module (ACM/CCM) to operate as a Modbus slave. This permits an APACS or QUADLOG system to exchange data with foreign devices that use the Modbus protocol. Modbus is a master/slave protocol in which a single master can address multiple slaves. A listing of the library blocks is presented here. Reference information pertaining to individual blocks is detailed in the sections to follow. C C Modbus Slave block (MODBUS_S) Serial block (SERIAL) May 1997 4-1 FUNCTION BLOCKS CG39FDI-3 4.1 MODBUS SLAVE FUNCTION BLOCK (MODBUS_S) The symbol for the Modbus Slave (MODBUS_S) function block is shown above. This block allows the control module to act as a Modbus slave. This section defines the inputs, outputs, and soft list parameters of the block. 4.1.1 Inputs This section describes the inputs of the MODBUS_S function block. EN Data Type: BOOL When this ENable input is TRUE, the block is setup for continuous response to read requests or commands from the master that are configured properly for this block. If EN is FALSE, the master does not get a response for a command destined for this block. ID Data Type: INT A valid ID input must be configured for each MODBUS_S function block to execute. The ID originates from a SERIAL connect block, which can be used for multiple MODBUS_S blocks in a control module. ADDR Data Type: INT This is the Address input. Enter the Modbus slave address that is assigned to the Modbus slave emulation running in this control module. Commands from a Modbus master must use this slave address for proper communication with the control module. The control module does not respond to commands that are not destined for the configured slave address. 4-2 May 1997 CG39FDI-3 FUNCTION BLOCKS IMPORTANT A control module can only appear as a single Modbus slave address. Multiple MODBUS_S blocks can be configured in one control module, but they must have the same ADDR input value. START Data Type: DINT This input defines the starting address for the configured command. It requires a double integer (DINT) data type since valid entries are 1 (for coil 00001) to 49999 (holding register 49999) and allows for future reference types to be added. NUM Data Type: INT This input defines the quantity of coils or registers to be read or written by the configured command. When reading floating point or double integer values from the slave device, give careful notice to this entry and the NumBytesPerReg Softlist entry. If the FP or DINT value is composed of two register addresses (NumBytesPerReg=2), the NUMber of registers configured should be twice the number of values desired (see Application Example 1 in Appendix A). DATA Data Type: Single dimension array of REAL, UDINT, DINT, STRING, UINT, WORD, or BOOL depending upon the Modbus Command number (see the Command descriptions above) When receiving a command that reads data from the slave device, this array contains the actual data values returned in the response from the slave. When the command performs a write to change a value in the slave, the new values are written to this array. When declaring and handling this array, it is important to be aware of the following important rules: C It must be a single dimensional array (e.g. DATAONE[1..100]). C Do not use the Modbus reference type (0,1,3,4) as part of the DATA array size declaration. For example, if the MODBUS_S block is sourcing 50 unsigned integer registers to your master (START=40301, NUM=50), the DATA array could be declared as SLVDATA[301..400]; that is, the 4 is omitted from the array size. C Values communicated via Modbus are placed or extracted from the DATA array according to how the array is declared, the value of the START input and/or the ArrayOffset soft list parameter. If the ArrayOffset parameter is FALSE, the first Modbus value corresponds to the first DATA array element number. In the example above, the ArrayOffset should be set FALSE so that the value for register 40301 is placed in the first DATA array element, in this case SLVDATA[301]. May 1997 4-3 FUNCTION BLOCKS CG39FDI-3 Since the SLVDATA array was declared with a range 301..400, element [301] is still the first element even though its value is not 1. Declaring the DATA array with element numbers that correspond to the Modbus reference may provide a convenient way to identify an array element number with the Modbus reference, depending upon the data type. If the ArrayOffset parameter is TRUE, the value of the START input determines the corresponding DATA array element number. Continuing with the example given above, if a second MODBUS_S block was configured to soure registers 351 to 400 (START=40351, NUM=50), the same SLVDATA array could be used. However, ArrayOffset should be set TRUE so that register 40351 is placed in SLVDATA[351]. The value of the START input, ignoring the Modbus reference type, is used to determine the offset. C When 32-bit values are handled and the slave uses two registers for one value, the number of Modbus registers required is twice the number of actual 32-bit values. Therefore, a one-to-one correspondence between register number and DATA array element number will not exist. As an example using 32-bit values where NumBytesPerReg=2, if the START value is 48001 and the NUM input is 100, the DATA array could be created as DATAONE[8001..8050] REALs. That is, it takes 100 registers to produce 50 floating point (REAL) values when NumBytesPerReg=2. The composite value from registers 48001 and 48002 would be placed in DATAONE[8001], the value from registers 48003 and 48004 would be placed in DATAONE[8002], etc. The composite value for the last two registers, 48099 and 48100, would be found in DATAONE[8050]. As an alternative, the register number association to the DATA array element number can be eliminated by declaring your DATA array to be [1..50] in the example above. In this manner, the 10th floating point value read would be placed in DATAONE[10]. C The DATA array dimensions must encompass the range of addresses configured by the START and NUM inputs. For example, if the START input is 16000 (Input Coil 6000) and the NUM is 200, the DATA array could be declared as INPUTS[6000..6199]. Again, note that the reference type designator (0,1,3 or 4) is not declared as part of the array element number. C When reading and writing Text Strings, refer to the Special Application section under ENG_LO for details on proper DATA Array declaration. * ENG_LO Data Type: Single dimension array of REALs * * This Engineering Range Low input is used in conjunction with the ENG_HI input. Most analog values in * an APACS/QUADLOG system are of data type REAL, however, some Modbus masters cannot read and * write REAL (floating point) data values from slaves. These masters often use the standard 16-bit * unsigned integer (UINT) register value and then use local scaling to provide an engineering range. The * MODBUS_S block can be configured to convert REAL values to UINTs so they can be properly handled * by the Modbus master. 4-4 May 1997 CG39FDI-3 FUNCTION BLOCKS The MODBUS_S function block assumes a raw data range of 0 (0%) to 65535 (100%) for a 16-bit unsigned integer value. Based upon the configured ENG_LO and ENG_HI array element values, each DATA array element is scaled by the linear equation y = mx + b, where y is the scaled REAL value and x is the raw register value. For example, if ENG_LO=0.00 and ENG_HI=100.00, a REAL value of 50.00 is scaled to produce a register value of 32768. The associated Modbus master must then use its own scaling mechanism to produce an engineering range value, in this case, converting it back to 50.00. This can be accomplished as follows: DATA[a] = [(ENG_HI[a] - LO[a] ) / (65535)] (register value) + ENG_LO[a] Where: [a] is the array element number. IMPORTANT ENG LO and ENG_ HI array inputs should not be configured when 32-bit values can be handled by the Modbus master. These scaling factors are primarily intended for use when converting an APACS/QUADLOG REAL to a 16-bit value (unsigned integer) because the Modbus master does not support this data type. ENG_LO Special Application - Accessing Text Strings Data Type: INT (with STRING DATA Array) When a Modbus master reads a text string from a Modbus slave, the DATA array must be declared with a STRING data type and ENG_LO with an INT data type. Each text string in the (ACM/CCM) Modbus slave has a certain character length that you define. Typically, each Modbus register holds two characters. Each text string corresponds to a STRING array element in your MODBUS_S DATA array. The number of characters for each text string and, therefore, each STRING array element is specified by the corresponding array element in the ENG_LO array. The ENG_LO array should be declared as data type INT with the same number of elements as the DATA array. The value in the ENG_LO array element specifies the number of characters for the corresponding STRING. For example, assume your Modbus slave device has three text strings, as shown below, to be read into the control module. The START input still specifies the starting Modbus register, in this case, 40325. The DATA array is declared as SLV1TXT1[1..3], STRING data type. The ENG_LO array is declared as LENGTH1[1..3], INT data type. SLAVE TEXT DATA FB DATA READ RESULT Starting Register 40325 START = 40325 Text String A: 8 characters (4 registers) LENGTH[1] = 8 SLV1TXT[1] Text String B: 16 characters LENGTH[2] = 16 SLV1TXT[2] Text String C: 4 characters LENGTH[3] = 4 SLV1TXT[3] May 1997 4-5 * * * * * * * * * * * * * * * * * * * * * * FUNCTION BLOCKS CG39FDI-3 When the Modbus master sends a Modbus command to the slave (usually Function Code 03) to read 14 registers starting at 40325, the NUM input does not need to be configured because the MODBUS_S block calculates the correct number of registers for you (based on two characters per register, the ENG_LO array values, and DATA array length). ENG_HI Data Type: Single dimension array of REALs This is the Engineering Range High input. It is used in conjunction with the ENG_LO input. Refer to the description of the ENG_LO input for usage information. 4.1.2 Modbus Function Codes * * * * * The MODBUS_S function block does not have a CMD (command) input because, as a slave, it does not execute any commands; it only responds to commands issued from the Modbus master. The Modbus function code commands supported by the MODBUS_S function block are described in this section. Consult the master device’s Modbus implementation regarding implemented function codes, valid reference types and ranges, maximum number of values read in a single command, etc. to ensure compatibility. 01 - Read Coil Status DATA Array: BOOL Reads Modbus reference type Output Coil (addresses 00001 to 09999 decimal). Note that the STARTing address for MODBUS_S function block does not have the leading zeroes (e.g. Coil 00001 would be entered as 1). Maximum coils read by a function block using Command 01 is 2000. 02 - Read Input Status DATA Array: BOOL Reads Modbus reference type Input Coil (addresses 10001 to 19999 decimal). The maximum coils read by a function block using Command 02 is 2000. 03 - Read Holding Registers DATA Array: 4-6 WORD, INT, UINT, REAL, DINT, UDINT, STRING, or BOOL (lowest number coil is first BOOL element in array) May 1997 CG39FDI-3 FUNCTION BLOCKS Reads Modbus reference type Holding Register (addresses 40001 to 49999 decimal). Maximum registers read by a function block using Command 03 are: 126 DATA Array: (NumBytesPerReg=2) WORD, INT, UINT, BOOL, REAL, DINT, or UDINT 63 REAL, DINT, or UDINT (NumBytesPerReg=4) DATA Array: 04 - Read Input Registers DATA Array: WORD, INT, UINT, REAL, DINT, UDINT, STRING, or BOOL (lowest number coil is first BOOL element in array) Reads Modbus reference type Input Register (addresses 30001 to 39999 decimal). Maximum registers read by a function block using Command 04 are: 126 DATA Array: WORD, INT, UINT, BOOL, REAL, DINT, or UDINT (NumBytesPerReg=2) 63 DATA Array: REAL, DINT, or UDINT (NumBytesPerReg=4) 05 - Force Single Coil DATA Array: BOOL Processes a command from a Modbus master to change the state of a single 0xxxx coil. 06 - Preset Single Register DATA Array: WORD, INT, UINT, REAL, DINT, UDINT, STRING, or BOOL (lowest number coil is first BOOL element in array) Processes a command to change the value of a single 4xxxx holding register. 08 - Loopback Test One of the properly configured MODBUS_S blocks automatically handles this command by retransmitting the received data from the Modbus master. NOTE The MODBUS_S implementation of the Loopback Test requires that the first word of data, after the diagnostic code portion, indicate the number of words (registers) being May 1997 4-7 FUNCTION BLOCKS CG39FDI-3 transmitted. For example, when the master sends a Loopback Test command with Diag. Code = 00 00, followed by 6 registers of data, the value in the first data register should be 00 06. 15 - Force Multiple Coils DATA Array: BOOL Processes a command to change the state of multiple 0xxxx coils. 16 - Preset Multiple Registers DATA Array: WORD, INT, UINT, REAL, DINT, UDINT, STRING, or BOOL (lowest number coil is first BOOL element in array) Processes a command to change the value of multiple 4xxxx holding registers. When changing the value of a floating point or double integer address that uses two consecutive registers, this command must be used (Function Code 06 does not work). 17 - Report Slave I.D. DATA Array: WORD, INT, UINT One of the configured MODBUS_S function blocks will automatically handle this command by responding with nine bytes of data, similar to a Modicon 984 PLC. BYTE 1 2 3 4 5 6 7 8 9 CONTENTS 09 Slave ID FF Run Indicator 00 not used, refer to PI-MBUS-300 00 not used, refer to PI-MBUS-300 00 not used, refer to PI-MBUS-300 00 not used, refer to PI-MBUS-300 A0 pwr on, run, mem protect off, battery OK (may not reflect actual ACM conditions) 00 not used, refer to PI-MBUS-300 00 not used, refer to PI-MBUS-300 4.1.3 Outputs This section describes the outputs of the MODBUS_S function block. 4-8 May 1997 CG39FDI-3 NDR FUNCTION BLOCKS Data Type: BOOL When a command is received through the serial port for the configured function block, the boolean output will toggle from FALSE to TRUE and then back to FALSE the next scan. This can be used to inform other logic that new data has been received or a command has completed. ERROR Data Type: BOOL An error condition received by this block causes the output to go TRUE for one control module scan. If desired, this output can be used to indicate to outside logic that an error has occurred and to assist in troubleshooting communication problems. E_CODE Data Type: INT This output provides a string description of an error condition. A value of 0 at the output indicates no errors. Other error values are described in Appendix C. STATE Data Type: INT This output provides an integer that represents the current communication status of the function block as follows: 1 = Idle 2 = Building a command 3 = Sending a command 4 = Waiting for a response 4.1.4 Soft List Parameters This subsection provides specifications and important supplementary information for the MODBUS_S function block soft list parameters. NumBytesPerReg Data Type: INT (valid values are 2 and 4) This parameter configures the function block to handle each register as either a 2-byte entity or a 4byte entity (a byte is 8 bits). When the MODBUS_S block is providing a 32-bit value to the master, the DATA array should be configured as REAL, DINT, or UDINT as appropriate. Some slaves, like Modicon PLCs, use two consecutive registers to represent a single 32-bit value, while others use one register. For proper reading (and writing) of data values, this parameter must be set correctly. In addition, the byte ordering is very important in determining a 32-bit value. This characteristic is handled by the ModiconByteOrder parameter discussed below. May 1997 4-9 FUNCTION BLOCKS CG39FDI-3 2 Registers for one 32-bit value: NumBytesPerReg=2 1 Register for one 32-bit value: NumBytesPerReg=4 NOTE The NumBytesPerReg parameter is ignored unless the DATA array is configured as either REAL, DINT, or UDINT. ModiconByteOrder Data Type: BOOL When this parameter is TRUE, the MODBUS_S function block assumes that the byte ordering for 32-bit floating point values is similar to Modicon PLCs. That is, a Modicon 32-bit value is sent as two registers (NumBytesPerReg=2) and the transmitted byte order is: Register x = bytes 1 and 0, Register x+1 = bytes 3 and 2 For example, a floating point value in a Modicon PLC-compatible slave device is stored in Registers 40001 and 40002. The current value is 100.00. This value would be transmitted via Modbus protocol as: 40001 00 00 40002 42 C8 Using the standard IEEE single-precision floating point format, this would be interpreted as the value 100.00 REAL in the APACS or QUADLOG system. When this parameter is FALSE, the MODBUS_S function block expects the byte order to be “wordswapped” from the Modicon byte order. That is, the value above would be transmitted as: 40001 42 C8 40002 00 00 NOTE The ModiconByteOrder parameter is ignored unless the DATA array is configured as either REAL, DINT, or UDINT. The Byte Order will also operate on values that use four bytes per register. ArrayOffset Data Type: BOOL When this parameter is FALSE, the data values correspond to the first element location of the declared DATA array, regardless of the START input value. When ArrayOffset is set to TRUE, an offset is used when placing values in the DATA array. This offset process actually causes values to be placed in the array according to the configured START input value. For example, if the START value is 41626, ArrayOffset=TRUE, and the DATA array is declared as UINT data type 4-10 May 1997 CG39FDI-3 FUNCTION BLOCKS (DATA_ONE[501..750]), the values from a register read command are placed in the DATA_ONE array, starting at element [626] not the first element [501]. This feature is often useful in applications where several full-capacity MODBUS_S blocks are going to bring data into the control module and build a single DATA array. For example, MODBUS_S_1 reads registers 41501 to 625 and places data in DATA_ONE[501] to [625]. MODBUS_S_2 reads registers 41626 to 750 and places data in DATA_ONE [626] to [750]. The complete range of values can then be accessed by an APACS or QUADLOG client by reading array DATA_ONE. The ArrayOffset=TRUE must be set for MODBUS_S_2). Default: FALSE WriteSecurity Data Type: BOOL When this parameter is TRUE and the security is enabled to prevent data writes, Register and Coil writes are rejected. Default: TRUE ExtendedAddress Data Type: BOOL When this parameter is FALSE, the valid address ranges are defined as follows: 00001-09999 Read/Write Coils 10001-19999 Read Input Status 30001-39999 Read Input Registers 40001-49999 Read/Write Holding Registers When this parameter is TRUE, the valid address ranges for extended addressing are defined as follows: 000001-065535 Read/Write Coils 100001-165535 Read Input Status 300001-365535 Read Input Registers 400001-465535 Read/Write Holding Registers Default: Version FALSE Data Type: STRING This parameter is intended to specify the minimum APACS or QUADLOG version compatibility level for using this function block. Its use is flexible. For example, you can use it to enter the control module firmware revision number, 4-mation’s software version number, or both. Once entered, you can determine compatibility by checking a software number against the number(s) in this parameter. May 1997 4-11 FUNCTION BLOCKS 4-12 CG39FDI-3 May 1997 CG39FDI-3 FUNCTION BLOCKS 4.2 SERIAL FUNCTION BLOCK (SERIAL) SERIAL BOOL EN NDR ERROR E_CODE ID BOOL BOOL INT INT The symbol for the Serial (SERIAL) function block is shown above. This block is used to initialize the Modbus communications port. Specifically, it enables the control module’s serial port to communicate with the Modbus network and its foreign devices. This section defines the input/output nubs and the soft list parameters of the SERIAL function block. The following subsections provides specifications and important supplementary information for all the SERIAL function block input/output nubs. 4.2.1 Input This section describes the input of the SERIAL function block. EN Data Type: BOOL When this input is set to FALSE, the SERIAL block is not active. When TRUE, the function block will generate an ID output, which is to be used by the other serial communication function blocks. When active, the function block handles requests from the communication function blocks and external devices connected to the serial port. 4.2.2 Outputs This section describes the outputs of the SERIAL function block. NDR Data Type: BOOL Reserved for future use. ERROR Data Type: BOOL This output is TRUE when the last transmitted or received message contained an error. More information about the error is provided by the E_CODE output. May 1997 4-13 FUNCTION BLOCKS CG39FDI-3 E_CODE Data Type: INT A zero output indicates that no general serial port errors exist. Error conditions particular to a serial port command will be passed to the appropriate communication function block (e.g. MODBUS_S), which has its own E_CODE output. ID Data Type: INT If the SERIAL block is functioning, it provides an ID output which must be used by other serial communication function blocks as their ID input. An output of 0 indicates the SERIAL block is not functioning. 4.2.3 Soft List Parameters This subsection provides specifications and important supplementary information for the SERIAL function block’s soft list parameters. BaudRate Data Type: UDINT This parameter sets the communication baud rate between the control module and the foreign serial device. The baud rates must be the same for all the serial communication devices. Valid Entries: 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 125000, 143000, 170000, 200000, 250000 Default: 9600 DataBits Data Type: UINT The number of data bits used to represent a character must be specified. For Modbus, the data bits should be set to 8. Valid Entries: 7, 8 Default: 8 4-14 May 1997 CG39FDI-3 Parity FUNCTION BLOCKS Data Type: UINT The parity mode must be the same for all serial communication devices. Traditional Modbus devices use even parity but be sure to check the foreign device’s documentation. Valid Entries: 0 = None, 1 = Odd, 2 = Even Default: 0 = None StopBits Data Type: UINT The number of stop bits used for a serial transmission must be specified. Valid Entries: 1, 2 Default: 1 FlowControl Data Type: UINT Flow control specifies what type of hardware handshaking will be used between the serial communication devices. If the options below do not satisfy your application, you may have to hardwire the necessary handshaking lines. Refer to Appendix E for typical cable pin-outs. Valid Entries: 0 = RTS (Pin 8) held asserted 1 = RTS asserted when control module transmits 2 = Full RTS/CTS operation 3 = RTS held asserted with CTS observed before transmitting Default: 0 IMPORTANT When using a FlowControl setting other than 0, the control module serial port Data Carrier Detect (DCD) input, pin 4, must be connected to a logic TRUE pin from the Modbus device serial port, such as a DCD output or a Data Terminal Ready (DTR) signal. If the Modbus device does not have this signal, pin 4 of the control module serial port can be tied back to pin 8, the Request to Send (RTS) output. May 1997 4-15 FUNCTION BLOCKS Timeout CG39FDI-3 Data Type: UINT When a control module initiates a serial transmission, it waits for the specified period of time for a response from the foreign device before indicating a timeout. Valid Entries: 0 to 65535 (time base is milliseconds) Default: 3000 (3.0 seconds) ReceiveBufSize Data Type: UINT Reserved for future use. TransmitBufSize Data Type: UINT Reserved for future use. SIM_RackNum Data Type: UINT Reserved for future use. SIM_SlotNum Data Type: UINT Reserved for future use. PortNum Data Type: UINT This parameter should be set to the control module serial port number connected to the Modbus master device. Valid Entries: 1 to 8 Default: 2 Version Data Type: STRING This parameter is intended to specify the minimum APACS or QUADLOG version compatibility level for using this function block. Its use is flexible. For example, you can use it to enter the control module firmware revision number, 4-mation’s software version number, or both. Once entered, you can determine compatibility by checking a software number against the number(s) in this parameter. 4-16 May 1997 CG39FDI-3 FUNCTION BLOCKS # May 1997 4-17 FUNCTION BLOCKS 4-18 CG39FDI-3 May 1997 CG39FDI-3 APPENDIX A — APPLICATION EXAMPLE 1 * A.0 APPENDIX A — APPLICATION EXAMPLE 1 In this example, the control module operating as Modbus slave device address 10, provides 60 REAL values to a Modbus master. The Modbus master handles a single floating point value (REAL) as two Modbus registers, with a byte order similar to a Modicon PLC. Therefore, the MODBUS_S block is configured with a NUMber of registers that is twice the number of DATA array elements (120 registers for 60 floating point values). Because the block is using 4xxxx type registers, the master must use Modbus function code 03 to read registers and Code 16 to write registers (and write two registers for one FP value). Figures A-1, A-2, and A-3 show the various configuration parameters associated with this example. The ENable input is set TRUE by the SLV_EX1_EN input to the MODBUS_S function block, which allows the block to respond to properly configured commands from the Modbus master. The ID1 input value comes from the SERIAL block that handles communication on the control modules’s serial port 2. The control module is configured to appear as slave address 10, and the starting register address for this block is 45001 as set by the R45001 variable. This block will respond to read (or write) commands for Modbus registers in the range from 45001 to 45120, as determined by the START and NUM inputs. SLV_EX1 MODBUS_S TRUE SLV_EX1_EN - EN 2 ID1 - ID 10 SLV_ADDR10 - ADDR NDR - ERROR E_CODE - 45001 R45001 - START 120 NUM_120 - NUM SLVDATA1 - DATA - ENG_LO - ENG_HI FIGURE A-1 MODBUS_S Configuration Showing On-line Data for Example 1 May 1997 A-1 APPENDIX A — APPLICATION EXAMPLE 1 CG39FDI-3 The data values that are provided to the Modbus master correspond to actual variables in the control module or elsewhere in the APACS/QUADLOG system. The values might originate from I/O modules or other variables on an ACM/CCM configuration sheet. These values can be provided to the Modbus master as “registers” by assigning them to elements in the SLVDATA1 array. An example of this assignment is shown in Figure A-2. The value for APACS /QUADLOG variable PV1 will be assigned to the variable in the cell to the right, in this case, the variable SLVDATA1[5001]. This element of the SLVDATA1 array corresponds to Modbus registers 45001 and 45002. As a result, when the Modbus master asks for two registers starting at 45001, it will receive the PV1 value in floating point format. Similar assignments are made for the other array elements. 65.9 65.9 PV1 SLVDATA1[5001] 100.0 100.0 PV2 SLVDATA1[5002] 200.0 200.0 PV3 SLVDATA1[5003] 250.0 250.0 PV4 SLVDATA1[5004] 275.0 275.0 PV5 SLVDATA1[5005] 350.0 350.0 PV6 SLVDATA1[5006] 777.56 777.56 PV7 SLVDATA1[5007] FIGURE A-2 DATA Array Element Assignment A.1 HANDLING WRITES FROM THE MODBUS MASTER If it is desired to have the Modbus master change an ACM/CCM value, two options are available. A portion of the SLVDATA1 array can be used for write-only registers that will contain the new value sent by the Modbus master. For example, Registers 45101 to 45120 (which correspond to SLVDATA1[5051] to [5060]) could be set aside as write-only elements; that is, no assignment is made from APACS/QUADLOG variables to these elements. In fact, the opposite would normally occur, the array element containing the new value would be assigned to an APACS/QUADLOG variable in the cell to the right (see Figure A-3.) Another option would be to configure another MODBUS_S function block and another DATA array for handling writes from the master. A-2 May 1997 CG39FDI-3 APPENDIX A — APPLICATION EXAMPLE 1 65.9 65.9 SLVDATA1[5051] SETPOINT_A 100.0 100.0 SLVDATA1[5052] SETPOINT_B 200.0 200.0 SLVDATA1[5053] SETPOINT_C 250.0 250.0 SLVDATA1[5054] SETPOINT_D 275.0 275.0 SLVDATA1[5055] SETPOINT_E 350.0 350.0 SLVDATA1[5056] SETPOINT_F 777.56 777.56 SLVDATA1[5057] SETPOINT_G FIGURE A-3 Register Writes # May 1997 A-3 APPENDIX A — APPLICATION EXAMPLE 1 A-4 CG39FDI-3 May 1997 CG39FDI-3 APPENDIX B — APPLICATION EXAMPLE 2 * B.0 APPENDIX B — APPLICATION EXAMPLE 2 In this example, the same control module appearing as Modbus slave 10 will be configured to provide 500 BOOL values to the Modbus master. BOOL variables in the APACS or QUADLOG system would typically be handled as Modbus “coils,” that is, references of the 0xxxx type. The “coils” may actually be the Standard Discrete Module Plus (SDM+) or Critical Discrete Module (CDM) discrete inputs/outputs or BOOL elements in a ladder logic diagram. The Modbus master will use function code 01 to read the coils and Codes 5 or 15 to write coils. Figures B-1, B-2, and B-3 show the various configuration parameters associated with this example. The ENable input is set TRUE by the SLV_EX2_EN input to the MODBUS_S block, which allows the block to respond to properly configured commands from the Modbus master. The ID1 input value comes from the SERIAL block that handles communication on the ACM/CCM’s serial port 2. The ACM/CCM is configured to appear as slave address10 and the starting coil address for this block is 1 as set by the O00001 variable. This block will respond to read (or write) commands for Modbus coils in the range from 00001 to 00500, as determined by the START and NUM inputs. SLV_EX2 MODBUS_S TRUE SLV_EX2_EN - EN 2 ID1 - ID 10 SLV_ADDR10 - ADDR NDR - ERROR E_CODE - 1 O00001 - START 500 NUM_500 - NUM COIL_RW1 - DATA - ENG_LO - ENG_HI FIGURE B-1 MODBUS_S Configuration Showing On-line Data for Example 2 May 1997 B-1 APPENDIX B — APPLICATION EXAMPLE 2 CG39FDI-3 The 500 BOOL values (coils 1 to 500) are placed in the DATA array COIL_RW1. This array must be defined as a one-dimensional BOOL array from 1 to at least 500. The MODBUS_S function block uses the array element number as a reference for handling each data value. In this case, there will be a one-to-one correspondence between the Modbus coil number and the COIL_RW1 array element. For example, the value for coil 465 will be found in COIL_RW1[465]. The data values that are provided to the Modbus master correspond to actual variables in the ACM/CCM or elsewhere in the APACS/QUADLOG system. The values might originate from I/O modules or other variables on a configuration sheet. These values can be provided to the Modbus master as “coils” by assigning them to elements in the COIL_RW1 array. An example of this assignment is shown in Figure B-2. The value for APACS/QUADLOG variable MTR1_RUN will be assigned to the variable in the cell to the right, in this case, the variable COIL_RW1[1]. This element of the COIL_RW1 array corresponds to Modbus coil 00001. As a result , when the Modbus master asks for coil 00001, it will receive the run status for MOTOR1. Similar assignments are made for the other array elements. TRUE TRUE MTR1_RUN COIL_RW1[1] TRUE TRUE MTR2_RUN COIL_RW1[2] FALSE FALSE MTR3_RUN COIL_RW1[3] FALSE FALSE TANK1_HI COIL_RW1[4] FALSE FALSE TANK1_HIHI COIL_RW1[5] TRUE TRUE TANK1_FEED COIL_RW1[6] FIGURE B-2 DATA Array Element Assignment B.1 HANDLING WRITES FROM THE MODBUS MASTER In this example, coils 401 to 500 have been pre-determined to handle write commands from the Modbus master. Therefore, when the master wants to change the state of a BOOLean value in the ACM/CCM, such as an SDM+/CDM output, it would write to the coil that corresponds to that DATA array element. In Figure B-3, an assignment is made between COIL_RW1[401] and the channel 5 output of the SDM+/CDM in Rack 2, Slot 6. When the Modbus master writes to coil 00401, the ACM/CCM configuration will transfer this value to the SDM+/CDM output. A similar assignment is made for other coils to which the Modbus master will write. B-2 May 1997 CG39FDI-3 APPENDIX B — APPLICATION EXAMPLE 2 In typical applications, the Modbus master only writes at the request of an operator or as the result of an automatic trigger (alarm, limitswitch, etc). In other words, writes from the master to the slave (control module) usually occur much less frequently than read operations. TRUE TRUE COIL_RW1[401] SDMR2S6C5 TRUE TRUE COIL_RW1[402] SDMR2S6C6 FALSE FALSE COIL_RW1[403] SDMR2S6C7 FALSE FALSE COIL_RW1[404] SDMR2S6C8 FALSE FALSE COIL_RW1[405] SDMR2S6C9 FIGURE B-3 Coil Writes # May 1997 B-3 APPENDIX B — APPLICATION EXAMPLE 2 B-4 CG39FDI-3 May 1997 CG39FDI-3 APPENDIX CS MODBUS ERROR CODES * C.0 APPENDIX C — ERROR CODES The error code (E_CODE) output from the Modbus Slave (MODBUS_S) function block provides a string that lists one or more of the following error code messages listed in Table C-1. The E_CODE output clears with each execution of the block. To view the string in 4-mation’s on-line mode, use its Variable Control function to set the block’s Request (REQ) and Continuous (CONT) inputs to FALSE. Then, toggle the REQ input TRUE (do not pulse the input). The block executes once and the error string can be read until the REQ input is changed. TABLE C-1 Error Codes ERROR CODE (E_CODE) 03 Backup_Confirmation_Failed 04 Checksum_Problem 06 Message_Problem May 1997 DESCRIPTION OR POSSIBLE CAUSE RECOMMENDED ACTION C A message was received by only one side of a redundant pair. Check all cables, signal converters (RS-422/RS-232), or modems used. C A message was discarded. C There is a cable or signal converter problem. C A partial message was received. C There was a CRC error in the message. C An unknown message was received. C This is a loopback message failure. C There is a possible communication hardware problem. Check source of message for proper setup. Check hardware connections. Check all cables, signal converters (RS-422/RS-232), or modems used. C-1 APPENDIX C S MODBUS ERROR CODES CG39FDI-3 TABLE C-1 Error Codes (Continued) ERROR CODE (E_CODE) DESCRIPTION OR POSSIBLE CAUSE RECOMMENDED ACTION 07 Transmit_Busy The serial port is busy servicing another function block. No action required if multiple function blocks are configured for one serial port. 08 Old_Message_Removed C C Check the source of message for proper setup. C Use a protocol analyzer to decipher the message for additional information. C Verify the MODBUS_S block configuration. C Check for multiple SERIAL blocks using one serial port. C Check for conflicting function blocks using the same serial port. C 09 General_Uart_Problem A message was discarded from the serial port that was not serviced within three controller scans. Possibly, a MODBUS_S block was not configured to handle this message. C There is a problem with the ACM/CCM’s serial port. C There is a conflicting configuration using the same serial port. C An attempt was made to use a serial port other than 1 or 2. 10 Re_Initializing_Port A MODBUS function block is reinitializing because of a configuration change. If this code persists, check for changing inputs or soft list parameters on MODBUS function blocks. 11 No_ID_Present The ID input of a MODBUS function block is not configured or zero. This would be a normal code if you choose to disable a set of function blocks so they do not use a particular serial port. Configure the ID input of the MODBUS block as the output of the SERIAL block and enable the SERIAL block. C-2 May 1997 CG39FDI-3 APPENDIX CS MODBUS ERROR CODES TABLE C-1 Error Codes (Continued) ERROR CODE (E_CODE) 12 Invalid_Range_Inputs DESCRIPTION OR POSSIBLE CAUSE C The ENG_LO or ENG_HI inputs are not configured properly. These inputs should only be configured with a REAL array and two bytes per register. C The span is equal to zero. C The string size is greater than 255 characters. C The ENG_HI input was configured using signed integer conversion. RECOMMENDED ACTION Check for proper configuration of the ENG_LO and ENG_HI inputs. See section 4.1.1, Inputs. 13 Default_Message_Problem An unknown Modbus command was received. Check the sending device. 14 Array_Problem On the MODBUS block, either the DATA, ENG_LO, or ENG_HI input array is not configured properly. Arrays must be one dimensional. If the input array is a string array, the ENG_LO input requires an INT array. The ENG_LO and ENG_HI arrays must have the same number of elements as the DATA array. Check the configuration of the MODBUS block’s ENG_LO, ENG_HI, and DATA inputs. See section 4.1.1, Inputs. 15 Array_DataType_Problem The DATA input array variable type is invalid. Verify the MODBUS block’s DATA input with respect to its CMD, START, and NUM inputs. See section 4.1.1, Inputs. 18 Max_Size_Exceeded The NUM input exceeds the maximum allowed for the DATA and CMD inputs. Verify theMODBUS’s NUM input based on the DATA input variable type and CMD input. See section 4.1.1, Inputs. May 1997 C-3 APPENDIX C S MODBUS ERROR CODES CG39FDI-3 TABLE C-1 Error Codes (Continued) ERROR CODE (E_CODE) DESCRIPTION OR POSSIBLE CAUSE RECOMMENDED ACTION 21 Invalid_Inputs The function code specified on theMODBUS block’s CMD input is not compatible with the START input’s address range. Verify the MODBUS block’s CMD and START inputs. See section 4.1.1, Inputs. 22 Invalid_Command The MODBUS block’s CMD input is invalid. Verify the CMD input is supported by the MODBUS function block. 23 Timeout_Error The Modbus device did not respond within the configured time-out period. Use a protocol analyzer to verify communications between the APACS/QUADLOG system and the Modbus device. 24 Unknown_Exception_Received The MODBUS_M block has received an exception response with an unsupported exception code. C Check the source of message for proper setup. C Use a protocol analyzer to decipher the message for additional information. 25 Invalid_Address The MODBUS block’s START input address may be invalid. The START and NUM input values may not match the DATA, ENG_LO or ENG_HI array sizes. Verify the START, NUM and DATA inputs for valid address ranges. See section 4.1.1, Inputs. 28 CTS_Lost_During_Transmission When using FlowControl options 2 or 3, the CTS line went low before transmission was completed. Monitor serial communications parameters and check modem if problem persists. 29 Unknown_TX_Error This is an unknown serial port driver transmission problem. Check for misconfiguration of serial port, bad wiring or incompatible communication parameters (e.g. baud rate, parity, etc). C-4 May 1997 CG39FDI-3 APPENDIX CS MODBUS ERROR CODES TABLE C-1 Error Codes (Continued) ERROR CODE (E_CODE) DESCRIPTION OR POSSIBLE CAUSE RECOMMENDED ACTION 30 Unknown_RX_Error This is an unknown serial port driver reception problem. Check for misconfiguration of serial port, bad wiring or incompatible communication parameters (e.g. baud rate, parity, etc). 31 Illegal_Function_Exception The Modbus slave device does not understand the function code. Verify that the function code used is supported by the Modbus slave device. 32 Illegal_Data_address_Exception The starting or ending Modbus address, data register, or coils is out of range. Verify that the value used is within the defined range. 33 Illegal_Data_value_Exception C An illegal data value was written. C Correct the data value. C C A coil or register write failed for security reasons. Check the MODBUS_S block’s security settings. C Check all cables, signal converters (RS-422/RS232), or modems used to connect to the slave device. C Check the Modbus slave device for proper operation. 34 Connection_Lost The MODBUS_M block has lost contact with its Modbus slave device. # May 1997 C-5 APPENDIX C S MODBUS ERROR CODES C-6 CG39FDI-3 May 1997 CG39FDI-3 APPENDIX DS MODBUS LIBRARY SPECIFICATIONS * D.0 APPENDIX D — SPECIFICATIONS General specifications for the Modbus_S Function Block Library are listed in Table D-1. Where applicable, default values are shown in bold type. TABLE D-1 Library Specifications ITEM Library Software Part Numbers SPECIFICATION APACS 15939-624V4.00 Modbus Slave QUADLOG 15939-682V3.20 Modbus Slave Note that the Vx.xx suffix refers to the software version number. It will differ for later versions. Required 4-mation Version 3.00 or later Electrical I/O Port RS232 (Other physical layers can be accommodated with external converters, such as RS422 for multi-drop applications). For RS422/RS485, use 4-wire only. Transmission Mode Modbus RTU (binary) Baud Rate 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 125000, 143000, 170000, 200000, 250000 Start Bits 1 Data Bits 7 or 8 Parity Odd, Even, Space, Mark, or None Stop Bits 1 or 2 Error Checking CRC-16 Slave Address 1 to 247 Supported Function Codes 01 - Read Coil Status 02 - Read Input Status 03 - Read Holding Registers 04 - Read Input Registers 05 - Force Single Coil 06 - Preset Single Register 08 - Loopback Test 15 - Force Multiple Coils 16 - Preset Multiple Registers 17 - Report Slave I.D. 65 - Coil Status Read/Write * 66 - Holding Register Read/Write* * MODBUS_M only May 1997 D-1 APPENDIX DS MODBUS LIBRARY SPECIFICATIONS CG39FDI-3 TABLE D-1 Library Specifications (Continued) ITEM Supported Address Types SPECIFICATION 00001-09999 Read/Write Coils 10001-19999 Read Input Status 30001-39999 Read Input Registers 40001-49999 Read/Write Holding Registers Extended Addressing: 000001-065535 Read/Write Coils 100001-165535 Read Input Status 300001-365535 Read Input Registers 400001-465535 Read/Write Holding Registers Device Data Types Boolean Word Signed Integer Unsigned Integer Double Signed Integer Double Unsigned Integer Floating Point (2-register and 1-register formats; two different byte orders) String # D-2 May 1997 CG39FDI-3 APPENDIX ES CABLE CONNECTIONS E.0 APPENDIX E — CABLE CONNECTIONS The pin-out for a control module serial port (DB9 female) is shown in Table E-1. As a minimum, the cable between the control module serial port and the foreign device will require TD, RD, and SG as shown in Figure E-1. The foreign device may require additional handshaking signals for proper operation (consult the foreign device documentation.) The FlowControl soft list parameter of the SERIAL block may also be useful in selecting the proper handshaking mode, or these signals may have to be tied back to the foreign device (RTS to CTS, and DTR to DSR and DCD) as shown in Figure E-1. TABLE E-1 Control Module Serial Port Pin-Out PIN # DESCRIPTION 1 No Connection 2 Transmitted Data (TD) Output 3 Received Data (RD) Input 4 Data Carrier Detect (DCD) Input 5 Signal Ground (SG) N/A 6 No Connection 7 Clear to Send (CTS) Input 8 Request to Send (RTS) Output 9 Ring Indicator (RI) Input ACM /CCM Serial Port (1 or 2) TD Pin 2 RD Pin 3 DCD Pin 4 Signal Common Pin 5 CTS Pin 7 RTS Pin 8 DIRECTION Foreign Device Serial Port Received Data RD Transmitted Data TD Signal Ground SG Clear to Send CTS Request to Send RTS Data Set Ready DSR Data Terminal Ready DTR Data Carrier Detect DCD FIGURE E-1 Minimum Serial Cable Requirements May 1997 E-1 APPENDIX ES CABLE CONNECTIONS CG39FDI-3 NOTE The control module’s serial port pin-out is not the same as that typically found on a personal computer. The control module’s serial port is a DB9 female connection, using different pins than a PC for transmitting (TD) and receiving (RD) data. When using a FlowControl setting other than 0, the control module’s serial port Data Carrier Detect (DCD) input, pin 4, must be connected to a logic TRUE pin from the Modbus device serial port, such as a Data Carrier Detect (DCD) output or a Data Terminal Ready (DTR) signal. If the Modbus device does not have this signal, pin 4 of the control module can be tied back to pin 8, the Request to Send (RTS) output. # E-2 May 1997 CG39FDI-3 APPENDIX F—ENTRELEC RS232/485 CONVERTER CONNECTIONS * F.0 APPENDIX F — ENTRELEC RS232/485 CONVERTER CONNECTIONS Cable connections needed to interface an RS-485 foreign device to the ACM/CCM RS-232 serial port by means of the Entrelec RS232/485 Converter are shown in Figure F-1. This converter is recommended by and available from Moore Products Co. RS-232 to RS-485 Converter ACM/ CCM SERIAL PORT DS9 DIN rail mount 500v Isolation APACS/QUADLOG supports 4-wire interface only FOREIGN RS-485 DEVICE Txd 2 M Rxd Tx+ A Rx+ Rxd 3 K Txd Tx- D Rx- RTS 8 L CTRL Rx+ B Tx+ 5 G 0V Rx- E Tx- Signal Common (0V) C Signal Common F Note: 4 Signal Common J Note: 7 Note: 8 Entrelec P/N 84233-11 Moore Products Co. P/N 16055-395 P+ P0V 5V COM V- +24VDC V+ < 100ma Notes: 1, 2, 3, 4, 5, 6 NOTES: 1. Internal Jumper Rt set to 220 Ohms 2. Internal Jumper R set to ON 3. Internal Jumper E set to ON/OFF 4. All RS-485 Slave devices must be wired in parallel. 5. Arrows on lines denote signal direction. 6. When RTS is not available, (i.e. Foreign Device side) Jumper M to L on converter. 7. Shield must be connected to the metal connector shell. 8. J to F connection has been provided inside the Entrelec converter. FIGURE F-1 Entrelec RS-232/RS-485 Converter Cable Connections May 1997 F-1 APPENDIX F—ENTRELEC RS232/485 CONVERTER CONNECTIONS F-2 CG39FDI-3 May 1997 CG39FDI-3 APPENDIX G—REDUNDANT SYSTEM WIRING CONFIGURATION * G.0 APPENDIX G — REDUNDANT SYSTEM WIRING CONFIGURATION Figure G-1 shows the general wiring needed for a dual Modbus network in a redundant system. For typical RS-232 and RS-485 cable connections, refer to Appendix F. FIGURE G-1 Redundant System Wiring Configuration # May 1997 G-1 APPENDIX G—REDUNDANT SYTEM WIRING CONFIGURATION G-2 CG39FDI-3 May 1997 CG39FDI-3 APPENDIX H-USING MODBUS_S AS A SERIAL ANALYZER * H.0 APPENDIX H — USING MODBUS_S AS A SERIAL ANALYZER The following describes how to configure a Modbus Slave (MODBUS_S) block to be used as a serial protocol analyzer. Using the block in this way permits you to view messages coming into the control module (i.e. ACM/CCM) in both Modbus master and slave applications. Refer to Figure H-1 as an example of setting up a serial analyzer. Position the Serial Analyzer block on the configuration sheet so that it is the first Modbus function block to execute. The incoming Modbus messages are placed into a string array one byte at a time in hex ASCII format. SERIAL_ANALYZER MODBUS_S TRUE EN_SERIAL_ANAL - EN 2 ID1 - ID - ADDR NDR - FALSE ERROR - FALSE E_CODE - ' ' - START 6 - NUM Example viewing the array: RCVD_MESSAGES - DATA - ENG_LO - ENG_HI '01 03 00 03 00 01 AC 45' RCVD_MESSAGES[1] '01 01 00 10 00 01 34 65' RCVD_MESSAGES[2] '02 01 00 20 00 01 EF 28' RCVD_MESSAGES[3] FIGURE H-1 MODBUS_S Block Used as a Serial Analyzer H.1 SERIAL ANALYZER INPUTS EN Data Type: BOOL When the ENable input is TRUE, the function block looks for incoming messages. If a message is found and the MODBUS ADDR matches, the data is converted to hex ASCII format. As much of the message as possible is placed into one DATA array element. When EN is FALSE, the array is not overwritten. When the EN input transitions from FALSE to TRUE, the array connected to DATA input is cleared. May 1997 H-1 APPENDIX H-USING MODBUS_S AS A SERIAL ANALYZER ID CG39FDI-3 Data Type: INT A valid ID input must be configured for each MODBUS_S function block to execute. The ID originates from a SERIAL connect block, which can be used for multiple MODBUS_S blocks in a control module (ACM/CCM). ADDR Data Type: INT If not configured, all messages are received and placed into the DATA array. If a specific Modbus slave address is configured, only messages to that slave address are placed into the DATA array. START NUM Leaving this input unconfigured selects the Serial Analyzer Mode. Data Type: INT This input defines the number of array elements to use for placing received messages. DATA Data Type: Single dimension STRING array is used for Serial Analyzer Mode Received messages that match the slave address definition are placed into the DATA array. Each new message is placed as the next element of the array and the following array element is emptied (set to ‘ ’). When the end of the array is reached, new messages overwrite old ones starting at the first array element. Each byte in a Modbus message takes 3 characters in the string array element. This means the largest message would be 84 bytes captured without a Max_Size_Exceeded error, assuming a 254 byte string size for the array. If the message cannot fit into the array element, as many bytes as possible are placed into the array element and the following array element will have the error string ‘Max_Size_Exceeded’ placed into it. ENG_LO Not used in this application; leave it unconnected. ENG_HI Not used in this application; leave it unconnected. H.2 SERIAL ANALYZER OUTPUTS NDR Data Type: BOOL When a message is received through the serial port for the configured function block, the BOOL output toggles from FALSE to TRUE and then back to FALSE the next scan. This input stays TRUE if messages are being received every scan. H-2 May 1997 CG39FDI-3 ERROR APPENDIX H-USING MODBUS_S AS A SERIAL ANALYZER Data Type: BOOL An error condition received by this block will cause the output to go TRUE for one control module scan. E_CODE Data Type: STRING This output provides a STRING description of an error condition. A value of 0 at the output indicates no errors. A Max_Size_Exceeded error will be displayed if the received message cannot fit into the array element. Other error strings are described in Appendix C. H.3 SERIAL ANALYZER SOFT LIST PARAMETERS Soft list parameters are ignored when in the Serial Analyzer mode. # May 1997 H-3