GCS Modbus Protocol Support 4V8
GCS Modbus Protocol Support 4V8
GCS Modbus Protocol Support 4V8
INTRODUCTION
The Graphic Control System products support a subset of the functions of Modicon Modbus Protocol in RTU (or
binary) format as described in Modicon Modbus Protocol Reference Guide PI-MBUS-300, Rev C, dated
January 1991. Specifically, the supported Modbus function codes are:
This document describes the supported functions and the response to each valid request from the host. It is
intended to be used in conjunction with the Modicon Modbus protocol definition and applies to GCS (Graphic
Control System) system controller software revision 8.04 or higher. All numeric values shown in the function
code request and response examples are in hexadecimal (base 16) format, even when not denoted with an “H”.
FUNCTION CODE SUPPORT
This portion of the document provides examples of each MODBUS function code that is supported by the GCS
controllers. For a complete list of register address, refer to tables 1 through 4 in this manual.
Query:
Response:
For a complete list of the registers, see the tables at the end of this document.
Query:
Response:
For a complete list of the registers, see the tables at the end of this document.
Query:
Response:
Query:
Response:
Query:
RTU FUNCTION COIL ADDR COIL ADDR DATA ON/OFF DATA CRC
ADDRESS CODE HIGH LOW
Response:
RTU FUNCTION COIL ADDR COIL ADDR DATA ON/OFF DATA CRC
ADDRESS CODE HIGH LOW
For a complete list of the registers, see the tables at the end of this document.
Query:
RTU FUNCTION REG. ADDR REG. ADDR DATA VALUE DATA VALUE CRC
ADDRESS CODE HIGH LOW HIGH LOW
Response:
RTU FUNCTION COIL ADDR COIL ADDR DATA ON/OFF DATA CRC
ADDRESS CODE HIGH LOW
Query:
01H 0FH 02H 02H 00H 01H 01H 00H 56H B5H
Response:
Query:
01H 10H 02H 20H 00H 01H 02H 00H 22H F0H 78H
Response:
The right-most column may contain a single letter code denoting that particular register is of meaning only when
being accessed on the pertinent GCS controller or module. The applicable controllers at present are the
Electrospeed GCS (E) and VORTEX GCS (V). The applicable modules are the Expansion I/O Module (M), the
Remote Data Communication Module (R) and the Centinel Interface Module (C).
INPUT STATUS
(READ INPUT STATUS = FUNCTION CODE 02)
(V =Vortex, E =Electrospeed, M =Expansion Module, R =RDCM, C =Centinel)
DIGITAL_IN1_SD_ALARM Digital Input 1 Shutdown Alarm 0x0100 10257
DIGITAL_IN2_SD_ALARM Digital Input 2 Shutdown Alarm 0x0101 10258
IUNBAL_SD_ALARM Current Unbalance Shutdown Alarm 0x0102 10259 V
VUNBAL_SD_ALARM Voltage Unbalance Shutdown Alarm 0x0103 10260
OVERVOLT_SD_ALARM Over Voltage Shutdown Alarm 0x0104 10261
UNDERVOLT_SD_ALARM Under Voltage Shutdown Alarm 0x0105 10262
UNDERLOAD_SD_ALARM Undercurrent Shutdown Alarm 0x0106 10263
OVERLOAD_SD_ALARM Over current Shutdown Alarm 0x0107 10264
CONTACTOR Status of motor contactor 0x0108 10265
RED Relay contact Status for Red panel light 0x0109 10266
AUTO Optional HOA mode switch in “AUTO” 0x010A 10267
HAND Optional HOA mode switch in “HAND” 0x010B 10268
LOCKOUT Status of Auto restarts Lockout / permit 0x010C 10269
START Optional Start switch input status 0x010D 10270
ROTATION_ALARM Incoming phase rotation change alarm 0x010E 10271
ANALOG1_HI_THLD_SD_ALARM High Threshold Shutdown Alarm 0x010F 10272
ANALOG1_LO_THLD_SD_ALARM Low Threshold Shutdown Alarm 0x0110 10273
ANALOG2_HI_THLD_SD_ALARM High Threshold Shutdown Alarm 0x0111 10274
ANALOG2_LO_THLD_SD_ALARM Low Threshold Shutdown Alarm 0x0112 10275
DIGITAL_IN1_SDSTATE_TRUE Digital In 1 in Alarm, in Shutdown Delay 0x0114 10277
DIGITAL_IN2_SDSTATE_TRUE Digital In 2 in Alarm, in Shutdown Delay 0x0115 10278
OVERLOAD_HI_THLD_XCEED Overload in Alarm, in Shutdown Delay 0x0116 10279
UNDERLOAD_LO_THLD_XCEED Underload in Alarm, in Shutdown Delay 0x0117 10280
ANALOG1_HI_THLD_XCEED Analog1 Hi in Alarm, in Shutdown Delay 0x0118 10281
DIGITAL_IN3_SD_ALARM Digital Input 3 Shutdown Alarm 0x0119 10282 E
OVERVOLT_HI_THLD_XCEED Over Voltage Alarm, in Shutdown Delay 0x011A 10283
UNDERVOLT_LO_THLD_XCEED Under Voltage Alarm, in Shutdown Delay 0x011B 10284
ROTATION_SDSTATE_TRUE Incoming Phase Rotation has Changed 0x011C 10285
ANALOG1_LO_THLD_XCEED Analog1 Lo in Alarm, in Shutdown Delay 0x011D 10286
ANALOG2_HI_THLD_XCEED Analog 2 Hi in Alarm, in Shutdown Delay 0x011E 10287
ANALOG2_LO_THLD_XCEED Analog 2 Lo in Alarm, in Shutdown Delay 0x011F 10288
PCM_CONSTANT_TORQUE Constant Torque Mode 0x0120 10289 E
PCM_ILIMIT Current Limit Active 0x0121 10290 E
DIGITAL_IN1 On board Digital Input 1 0x0122 10291
DIGITAL_IN2 On board Digital Input 2 0x0123 10292
DIGITAL_IN3 On board Digital Input 3 0x0124 10293 E
IO1DI1_DEBOUNCED I/O Module 1 Digital Input 1 0x0125 10294 M
IO1DI2_DEBOUNCED I/O Module 1 Digital Input 2 0x0126 10295 M
IO1DI3_DEBOUNCED I/O Module 1 Digital Input 3 0x0127 10296 M
IO2DI1_DEBOUNCED I/O Module 2 Digital Input 1 0x0128 10297 M
IO2DI2_DEBOUNCED I/O Module 2 Digital Input 2 0x0129 10298 M
INPUT STATUS
(READ INPUT STATUS = FUNCTION CODE 02)
(V =Vortex, E =Electrospeed, M =Expansion Module, R =RDCM, C =Centinel)
IO2DI3_DEBOUNCED I/O Module 2 Digital Input 3 0x012A 10299 M
IO3DI1_DEBOUNCED I/O Module 3 Digital Input 1 0x012B 10300 M
IO3DI2_DEBOUNCED I/O Module 3 Digital Input 2 0x012C 10301 M
IO3DI3_DEBOUNCED I/O Module 3 Digital Input 3 0x012D 10302 M
IO1DI1_DETECT_AC I/O Module 1 Digital Input 1 (AC Input) 0x012E 10303 M
IO1DI2_DETECT_AC I/O Module 1 Digital Input 2 (AC Input) 0x012F 10304 M
IO1DI3_DETECT_AC I/O Module 1 Digital Input 3 (AC Input) 0x0130 10305 M
IO2DI1_DETECT_AC I/O Module 2 Digital Input 1 (AC Input) 0x0131 10306 M
IO2DI2_DETECT_AC I/O Module 2 Digital Input 2 (AC Input) 0x0132 10307 M
IO2DI3_DETECT_AC I/O Module 2 Digital Input 3 (AC Input) 0x0133 10308 M
IO3DI1_DETECT_AC I/O Module 3 Digital Input 1 (AC Input) 0x0134 10309 M
IO3DI2_DETECT_AC I/O Module 3 Digital Input 2 (AC Input) 0x0135 10310 M
IO3DI3_DETECT_AC I/O Module 3 Digital Input 3 (AC Input) 0x0136 10311 M
PASSWORD_INVALID User Password is invalid / expired 0x0138 10313
CSU_OPEN_CIRCUIT Centinel Open Circuit Alarm 0x0139 10314 C
CSU_SHORT_CIRCUIT Centinel Short Circuit Alarm 0x013A 10315 C
CSU_SIGNAL_LOSS Centinel Signal Loss Alarm 0x013B 10316 C
CSU_EXCESSIVE_NOISE Centinel Excessive Noise Alarm 0x013C 10317 C
CSU_COMM_FAILURE Centinel Communication Failure Alarm 0x013D 10318 C
IUNBAL_HI_THLD_XCEED Current Unbalance Threshold exceeded 0x013E 10319 V
VUNBAL_HI_THLD_XCEED Voltage Unbalance Threshold exceeded 0x013F 10320
PCM STATUS WORD 1 Power Conversion Module
PCM_RUNNING Running 0x0140 10321 E
PCM_STOPPED Stopped: All gate signals inhibited 0x0141 10322 E
PCM_STOPPING Stopping: Command acknowledged 0x0142 10323 E
PCM_ACCEL Accelerating 0x0143 10324 E
PCM_DECEL Decelerating 0x0144 10325 E
PCM_ILIMIT Current Limit 0x0145 10326 E
PCM_BUS_VOLTS_BIT DC Bus voltage High Threshold 0x0146 10327 E
PCM STATUS WORD 2 Power Conversion Module
PCM_FAULT PCM Fault word is active 0x0147 10328 E
PCM_INVERTER_ROTATION Output inverter phase rotation 0x0148 10329 E
PCM_CONVERTER1_ROTATION Converter 1 input phase rotation 0x0149 10330 E
PCM_CONVERTER2_ROTATION Converter 2 input phase rotation 0x014A 10331 E
PCM_PHASED Input phase rotation determined 0x014B 10332 E
PCM_IN_SYNC_DELAY Inverter in synchronization delay 0x014C 10333 E
PCM_PHASE_LOCKED Converter Zero Crossing established 0x014D 10334 E
PCM Fault Word Power Conversion Module
PCM_FAULT PCM Fault word is active 0x014E 10335 E
PCM_PHASE_APOSITIVE_IOT A Ø Positive Instantaneous overload 0x014F 10336 E
PCM_PHASE_BPOSITIVE_IOT B Ø Positive Instantaneous overload 0x0150 10337 E
PCM_PHASE_CPOSITIVE_IOT C Ø Positive Instantaneous overload 0x0151 10338 E
PCM_PHASE_ANEGATIVE_IOT A Ø Negative Instantaneous overload 0x0152 10339 E
PCM_PHASE_BNEGATIVE_IOT B Ø Positive Instantaneous overload 0x0153 10340 E
PCM_PHASE_CNEGATIVE_IOT C Ø Positive Instantaneous overload 0x0154 10341 E
PCM_ZERO_CROSSING_FAULT Input Zero Crossing signal loss 0x0155 10342 E
PCM_SYSTEM_ERROR Processor software or hardware fault 0x0156 10343 E
PCM_CONVERTER_FAULT Input converter fault 0x0157 10344 E
PCM_INVERTER_FAULT, Output inverter fault 0x0158 10345 E
PCM_OVER_CURRENT_A_FAULT A Ø Peak Over current 0x0159 10346 E
PCM_OVER_CURRENT_B_FAULT B Ø Peak Over current 0x015A 10347 E
PCM_OVER_CURRENT_C_FAULT C Ø Peak Over current 0x015B 10348 E
PCM_BUS_OVER_VOLTAGE_FLT DC Bus overvoltage 0x015C 10349 E
RCB_COMM_ERROR Remote Converter Board Com. Failure 0x015D 10350 E
STATUS WORD 3 Power Conversion Module
INPUT STATUS
(READ INPUT STATUS = FUNCTION CODE 02)
(V =Vortex, E =Electrospeed, M =Expansion Module, R =RDCM, C =Centinel)
PCM_TORQUE_ILIMIT Output Torque/Current Limit 0x015E 10351 E
HOA_STOP Hand-Off-Auto Stop 0x015F 10352 V
DRIVE_STOPPED_MANUALLY Keypad / HOA switch Stop 0x0160 10353
RDCM_DEV1_TAG01 RDCM - Device 1 – Data Tag 1 0x0165 10358 R
RDCM_DEV1_TAG02 RDCM - Device 1 – Data Tag 2 0x0166 10359 R
RDCM_DEV1_TAG03 RDCM - Device 1 – Data Tag 3 0x0167 10360 R
RDCM_DEV1_TAG04 RDCM - Device 1 – Data Tag 4 0x0168 10361 R
RDCM_DEV1_TAG05 RDCM - Device 1 – Data Tag 5 0x0169 10362 R
RDCM_DEV1_TAG06 RDCM - Device 1 – Data Tag 6 0x016A 10363 R
RDCM_DEV1_TAG07 RDCM - Device 1 – Data Tag 7 0x016B 10364 R
RDCM_DEV1_TAG08 RDCM - Device 1 – Data Tag 8 0x016C 10365 R
RDCM_DEV1_TAG09 RDCM - Device 1 – Data Tag 9 0x016D 10366 R
RDCM_DEV1_TAG10 RDCM - Device 1 – Data Tag 10 0x016E 10367 R
RDCM_DEV1_TAG11 RDCM - Device 1 – Data Tag 11 0x016F 10368 R
RDCM_DEV1_TAG12 RDCM - Device 1 – Data Tag 12 0x0170 10369 R
RDCM_DEV2_TAG01 RDCM - Device 2 – Data Tag 1 0x0171 10370 R
RDCM_DEV2_TAG02 RDCM - Device 2 – Data Tag 2 0x0172 10371 R
RDCM_DEV2_TAG03 RDCM - Device 2 – Data Tag 3 0x0173 10372 R
RDCM_DEV2_TAG04 RDCM - Device 2 – Data Tag 4 0x0174 10373 R
RDCM_DEV2_TAG05 RDCM - Device 2 – Data Tag 5 0x0175 10374 R
RDCM_DEV2_TAG06 RDCM - Device 2 – Data Tag 6 0x0176 10375 R
RDCM_DEV2_TAG07 RDCM - Device 2 – Data Tag 7 0x0177 10376 R
RDCM_DEV2_TAG08 RDCM - Device 2 – Data Tag 8 0x0178 10377 R
RDCM_DEV2_TAG09 RDCM - Device 2 – Data Tag 9 0x0179 10378 R
RDCM_DEV2_TAG10 RDCM - Device 2 – Data Tag 10 0x017A 10379 R
RDCM_DEV2_TAG11 RDCM - Device 2 – Data Tag 11 0x017B 10380 R
RDCM_DEV2_TAG12 RDCM - Device 2 – Data Tag 12 0x017C 10381 R
RDCM_DEV3_TAG01 RDCM - Device 3 – Data Tag 1 0x017D 10382 R
RDCM_DEV3_TAG02 RDCM - Device 3 – Data Tag 2 0x017E 10383 R
RDCM_DEV3_TAG03 RDCM - Device 3 – Data Tag 3 0x017F 10384 R
RDCM_DEV3_TAG04 RDCM - Device 3 – Data Tag 4 0x0180 10385 R
RDCM_DEV3_TAG05 RDCM - Device 3 – Data Tag 5 0x0181 10386 R
RDCM_DEV3_TAG06 RDCM - Device 3 – Data Tag 6 0x0182 10387 R
RDCM_DEV3_TAG07 RDCM - Device 3 – Data Tag 7 0x0183 10388 R
RDCM_DEV3_TAG08 RDCM - Device 3 – Data Tag 8 0x0184 10389 R
RDCM_DEV3_TAG09 RDCM - Device 3 – Data Tag 9 0x0185 10390 R
RDCM_DEV3_TAG10 RDCM - Device 3 – Data Tag 10 0x0186 10391 R
RDCM_DEV3_TAG11 RDCM - Device 3 – Data Tag 11 0x0187 10392 R
RDCM_DEV3_TAG12 RDCM - Device 3 – Data Tag 12 0x0188 10393 R
GDICOMM_FAILURE, Graphics Display Communication Failure 0x0189 10394
FIRST_AUX_IO_COMM_FAILURE Expansion I/O 1 Communication Failure 0x018A 10395 M
SECOND_AUX_IO_COMM_FAILURE Expansion I/O 2 Communication Failure 0x018B 10396 M
THIRD_AUX_IO_COMM_FAILURE Expansion I/O 3 Communication Failure 0x018C 10397 M
RDCM_COMM_FAILURE RDCM Communication Failure 0x018D 10398 R
CSU_COMM_FAILURE Centinel Communication Failure 0x018E 10399 C
XCVR_COMM_FAIL Centinel Gauge Communication Failure 0x018F 10400 C
RDCM_DEV1_COMM_FAIL RDCM Device 1 Communication Failure 0x0190 10401 R
RDCM_DEV2_COMM_FAIL RDCM Device 2 Communication Failure 0x0191 10402 R
RDCM_DEV3_COMM_FAIL RDCM Device 3 Communication Failure 0x0192 10403 R
DATA_LOGGING_ENABLED Data Logging Enabled 0x0193 10404
SERIAL_COMM_SDSTATE Serial Communication Shutdown State 0x0194 10405
RCB_BOARD_COUNT_FAULT Remote Converter Board Count Fault 0x0195 10406 E
PCM_INITIATED_ESTOP_FAULT PCM Initiated Estop Fault 0x0196 10407 E
RDCM_DEV1_COMM_FAIL_SDSTATE RDCM Device 1 Com Fail Shutdown State 0x0197 10408 R
RDCM_COMM_FAIL_SDSTATE RDCM Communication Fail Shutdown State 0x0198 10409 R
INPUT STATUS
(READ INPUT STATUS = FUNCTION CODE 02)
(V =Vortex, E =Electrospeed, M =Expansion Module, R =RDCM, C =Centinel)
PCM_PWM_FILTER_ATTACHED PCM PWM Filter Attached 0x0199 10410 E
FIRST_START First Start 0x019A 10411
FIRST_AUX_IO_COMM_FAIL_SDSTATE Expansion I/O 1 Comm Fail Shutdown State 0x019B 10412 M
SECOND_AUX_IO_COMM_FAIL_SDSTA Expansion I/O 2 Comm Fail Shutdown State 0x019C 10413 M
THIRD_AUX_IO_COMM_FAIL_SDSTAT Expansion I/O 3 Comm Fail Shutdown State 0x019D 10414 M
DRIVE_PARAMETERS_IN_RPM Drive Parameters in RPM 0x019E 10415 E
0= no, 1= yes
RDCM_DEV2_COMM_FAIL_SDSTATE RDCM Device 2 Comm Fail Shutdown State 0x019F 10416 R
RDCM_DEV3_COMM_FAIL_SDSTATE RDCM Device 3 Comm Fail Shutdown State 0x01A0 10417 R
UAB1_THLD_XCEED User Alarm Block 1 Threshold Exceeded 0x01A1 10418
UAB2_THLD_XCEED User Alarm Block 2 Threshold Exceeded 0x01A2 10419
UAB3_THLD_XCEED User Alarm Block 3 Threshold Exceeded 0x01A3 10420
UAB4_THLD_XCEED User Alarm Block 4 Threshold Exceeded 0x01A4 10421
UAB5_THLD_XCEED User Alarm Block 5 Threshold Exceeded 0x01A5 10422
UAB6_THLD_XCEED User Alarm Block 6 Threshold Exceeded 0x01A6 10423
UAB7_THLD_XCEED User Alarm Block 7 Threshold Exceeded 0x01A7 10424
UAB8_THLD_XCEED User Alarm Block 8 Threshold Exceeded 0x01A8 10425
UAB1_THLD_ALARM User Alarm Block 1 Threshold Alarm 0x01A9 10426
UAB2_THLD_ALARM User Alarm Block 2 Threshold Alarm 0x01AA 10427
UAB3_THLD_ALARM User Alarm Block 3 Threshold Alarm 0x01AB 10428
UAB4_THLD_ALARM User Alarm Block 4 Threshold Alarm 0x01AC 10429
UAB5_THLD_ALARM User Alarm Block 5 Threshold Alarm 0x01AD 10430
UAB6_THLD_ALARM User Alarm Block 6 Threshold Alarm 0x01AE 10431
UAB7_THLD_ALARM User Alarm Block 7 Threshold Alarm 0x01AF 10432
UAB8_THLD_ALARM User Alarm Block 8 Threshold Alarm 0x01B0 10433
CONTACTOR_FAILURE_ALARM Contactor Failure Alarm 0x01B2 10435 V
DRIVE_READY_TO_RUN Drive Ready to Run 0x01B3 10436
0= no, 1= yes
Table 2: Output Status Registers
ANALOG1_HI_THLD_SD_ALARM 45 50 48
ANALOG1_LO_THLD_SD_ALARM 45 61 59
ANALOG2_HI_THLD_SD_ALARM 69 74 72
ANALOG2_LO_THLD_SD_ALARM 69 84 82
CENTRAL_SHUTDOWN_REQUEST 92
MOTOR_STATE_SYNC_ERROR 859
DESCRIPTION ACTIVE ALARM ID SHUTDOWN ID LOCKOUT ID
RCB_BOARD_COUNT_FAULT 775
PCM_FAULT_ALARM 193 193 195
GDICOMM_FAILURE 482 482
RTCLOCK_INVALID_ALARM 647 647
The GCS Electrospeed drive can be configured to incorporate several remote converter circuit boards to
increase the output current range and/or minimize input harmonic content. When such a drive is configured, it
can generate the following faults / shutdowns.
MAIN
VARIABLE SPEED DRIVE SCB RCB1 RCB2 RCB3
POINT DESCRIPTION ENGLISH DESCRIPTION FAULT FAULT FAULT FAULT
PHASEA_NEGATIVE_IOT Phase A neg IOT 200 4296 8392 16584
PHASEB_POSITIVE_IOT Phase B pos IOT 203 4299 8395 16587
PHASEC_NEGATIVE_IOT Phase C neg IOT 204 4300 8396 16588
PHASEA_POSITIVE_IOT Phase A pos IOT 201 4297 8393 16585
PHASEB_NEGATIVE_IOT Phase B neg IOT 202 4298 8394 16586
PHASEC_POSITIVE_IOT Phase C pos IOT 205 4301 8397 16589
ZERO_XING_FAULT zero crossing fault 208 4304 8400 16592
SYSTEM_ERROR system error 207 4303 8399 16591
CONVERTER_FAULT converter watchdog fault 344 4440 8536 16728
INVERTER_FAULT inverter watchdog fault 345 4441 8537 16729
RCB_COM_ERR RCB communications fault 885 4981 9077 17269
PCM_CITIBUS_ERROR CITIBus communications error 342 4438 8534 16726
OVER_CURRENT_A A phase inverter peak current trip 1293 5389 9485 17677
OVER_CURRENT_B B phase inverter peak current trip 1294 5390 9486 17678
OVER_CURRENT_C C phase inverter peak current trip 1295 5391 9487 17679
BUS_OVER_VOLTAGE DC bus overvoltage fault 1296 5392 9488 17680
PCM_INITIATED_ESTOP PCM initiated an emergency stop 799 4895 8991 17183
MOTOR_FAILED_TO_START PCM could NOT turn the motor 1360 5456 9552 17744
TABLE 6: EVENT NUMERICS
When a recordable event occurs on a GCS controller, the event identification returned via MODBUS will be
simply a number. The following Table lists the descriptor associated with each number.
NULL_EVENT 0
ALARM_CFN 1
ALARM_RTN 2
SETPOINT_CHANGE 3
SHUTDOWN_EVENT 4
STARTUP_EVENT 5
CITIBUS_NODE_LOSS 6
CITIBUS_NODE_RECOVERY 7
SYSTEM_CONTROLLER_IPL 8
FACTORY_DEFAULT_CHANGE 9
MINIMUM_CHANGE 10
MAXIMUM_CHANGE 11
BITFIELD_CHANGE 12
EXPONENT_CHANGE 13
UNITS_CHANGE 14
STAGE_CHANGE 15
PRIMARY_POWER_FAILURE 16
UNKNOWN_PCM_FAULT_CODE 17
REAL_TIME_CLOCK_CHANGE 18
SETPOINTS_RELOADED 19
CALLOUT_EVENT 20
REMOTE_WORMHOLE_CLOSED 21
FREQ_AVOID_TABLE_CHANGED 22
PID_CONTROLLER_TABLE_CHANGED 23
USER_PLC_BLOCK_CHANGED 24
USER_DATABASE_POINT_CHANGED 25
HARDWARE_RESET 26
GCS support of Modbus User Function Code 65
Modicon’s modbus protocol states that Modbus function codes 65 through 72 inclusive will be reserved for user
functions and will not be used by any Modicon products. GCS system controllers use function code 65 to
enable the transfer of:
When retrieving information from a GCS unit using function code 65, the query will always adhere to the
following form:
Where:
rtuAddress is the modbus address of the GCS unit being queried
functionCode is always 65 (41 HEX)
startingAddress is:
pointCount is 0 if the packet marks the first packet of an exchange and is 1 if the packet is the
continuation of the exchange.
The first four bytes of the GCS’s response will always be the RTU address, the function code and a block count.
The block count will be positive as long there is un-transferred data within the GCS unit. To signal the last
packet, the block count (signed short integer) goes negative. The negative number is to be interpreted as ( –1 *
(the number of records within the packet)). For example, if the block count was returned as FFEC hex, convert
that value into the decimal equivalent as follows:
FFEC = 65,516 ------ 0x10000= 65,536 ------ 65,516 – 65536 = -20 ------ -20 * -1 = 20 records
The following describes the data dependant responses by the GCS controller to Modbus 65 packets.
SHUTDOWN HISTORY
Shutdown history data is transferred in a packet formatted as:
typedef struct
{
unsigned char rtuAddress;
unsigned char functionCode;
signed short blockCount;
shutDownHistory data[HISTORY_RECORDS_PER_PACKET];
unsigned short crc;
}aHistoryResponse;
where, HISTORY_RECORDS_PER_PACKET is 10 .
where,
ampsA, ampsB and ampsC are the three phase current at the time of the decision to shutdown.
VoltAB, voltBC and voltCA are the phase to phase voltage at the time of the decision to shutdown.
AnalogIn1 and analogIn2 are the value at the analog inputs of the GCS system controller.
CauseOfShutdown is a number indicating why the shutdown happened.
Lockout is a number indicating if the motor start was locked out because of the shutdown.
The timeStamp is a signed 32bit integer that holds the number of seconds since January 1, 1970 and can be
de-coded using the library routines supplied with most C compilers.
Cause of shutdown Amps Phase c (high) RTU Address
01H
00H
01H
AFH
RTU
(point-id--low)
Function Code Query:
Cause of lockout
41H
ADDRESS
amps Phase c (low)
00H
50H
(point-id--high)
Block Count
41H
00H
Cause of lockout Voltage phase Ab (high)
CODE
ADH
01H
(point-id low) (high)
Block Count
FUNCTION
0AH
Start of Shutdown Voltage phase Ab (Low)
E1H
History record #2 (low)
00H
Start of Shutdown
Shutdown History Voltage phase bc History record #1
START
3EH
01H
(time STamp) (high)
Shutdown History
ADDR HIGH
3EH
Shutdown History Voltage phase bc (time STamp)
E4H
2FH
(time STamp) (low)
Response: (only part of the response is shown)
00H
Shutdown History
A6H
(time STamp)
START
01H
(high)
DDH
(time STamp)
ADDR LOW
E3H
74H
(time STamp)
00H
HIGH
Shutdown History
Example - Function Code 65 (Read Shutdown History Records)
2DH
04H
00H
(high)
Amps Phase A
00H
POINT COUNT
…
Etcetera…
7EH
Amps Phase A
00H
4FH
LOW
01H
amps Phase b
00H
amps Phase b
4EH
(point-id--high)
CRC
3DH C5H
Convert the hexadecimal values into decimal notation and history record #1 in the above example yields the
following information:
Shutdown occurred on April 23, 2003 at the time of 10:04:29. (Time integer value: 3E A6 65 2D hex.)
The three phase volts were: Phase AB = 481 volts AC (01E1 hex)
Phase BC = 484 volts AC (01E4 hex)
Phase CA = 483 volts AC (01E3 hex)
typedef struct
{
unsigned char rtuAddress;
unsigned char functionCode;
signed short blockCount;
highSpeedTrend data[TREND_RECORDS_PER_PACKET];
unsigned short crc;
}aStartupWaveformResponse;
where TREND_RECORDS_PER_PACKET is 20
where,
ampsA, ampsB and ampsC are the instantaneous values of the three phase currents and VoltAB,
voltBC and voltCA are the phase to phase voltage at the time of the sample.
To fetch the time at which the motor was started, build a request packet with its startingAddress field set to 1
and its pointCount set to –1. The GCS units will return a packet formatted as
typedef struct
{
unsigned char rtuAddress;
unsigned char functionCode;
signed short blockCount;
time_t timeStamp;
unsigned short crc;
}aStartupTimestampResponse;
Example - Function Code 65 (Startup Waveform Records)
First, send a message with a point count of -1 (FFFE hex), to retrieve the “start time” of the last motor start.
Query:
(time STamp)
(time STamp)
(time STamp)
(time STamp)
start attempt
Block Count
Block Count
(high)
(high)
(Low)
(low)
CRC
CRC
01H 41H 00H 01H 3EH 64H BEH 86H 51H 36H
Query: Next, retrieve the first 20 of 1200 samples by using function code 65.
Voltage Phase AB
Voltage Phase AB
Current Phase A
Current Phase A
Current Phase B
Current Phase B
Current Phase C
Current Phase C
Trend packet #1
Function Code
RTU Address
Block Count
Block Count
(high)
(high)
(high)
(high)
(high)
(Low)
(low)
(low)
(low)
(low)
01H 41H 00H 14H 00H 08H 00H 10H FFH EBH 01H 15H
Start of High Speed
Voltage Phase BC
Voltage Phase BC
Voltage Phase CA
Voltage Phase CA
Voltage Phase AB
Voltage Phase AB
Current Phase A
Current Phase A
Current Phase B
Current Phase B
Current Phase C
Current Phase C
Trend packet #2
(high)
(high)
(high)
(high)
(high)
(high)
(low)
(low)
(low)
(low)
(low)
(low)
FEH CDH 00H 1EH 00H 00H FFH F0H 00H 10H 00H 69H
Start of High Speed
Voltage Phase BC
Voltage Phase BC
Voltage Phase CA
Voltage Phase CA
Current Phase A
Current Phase A
Trend packet #3
Etcetera…
(high)
(high)
(high)
(low)
(low)
(low)
Query: Now retrieve the remaining data by setting the point count to 0001 and repeat the request for data until
the block count value in the response switches to a negative number as shown below.
Voltage Phase AB
Voltage Phase AB
Current Phase A
Current Phase A
Current Phase B
Current Phase B
Current Phase C
Current Phase C
Function Code
RTU Address
Trend packet
Block Count
Block Count
Etcetera…
(high)
(high)
(high)
(high)
(high)
(Low)
(low)
(low)
(low)
(low)
01H 41H FFH ECH 00H 73H FFH 59H 00H 35H FFH B9H …
As illustrated in the example above, the GCS responded with a block count of FFEC hex or -19 decimal. This
indicates that there are no more un-retrieved waveforms packets and that this message contains the normal 20
records
The instantaneous values of the current and voltage can be graphed by using common PC software such as
MS Excel spreadsheet.
EVENTS
Event data is transferred in a packet formatted as:
typedef struct
{
unsigned char rtuAddress;
unsigned char functionCode;
signed short blockCount;
anEventRecord eventRecord[EVENT_RECORDS_PER_PACKET];
unsigned short crc;
}anEventRecordResponse;
where, EVENT_RECORDS_PER_PACKET is 20
typedef struct
{
time_t timeStamp;
unsigned char EventType;
unsigned char Exponent;
PointId PointIdent;
PValue ValueBeforeEvent;
PValue ValueAfterEvent;
}anEventRecord;
Query: Retrieve the first packet of event history by setting the point count to 0000H.
Event Occurrence
Event Occurrence
Event Occurrence
Event Occurrence
Start of Event #1
Start of Event #2
Value after event
Function Code
Point ID (high)
(time STamp)
(time STamp)
(time STamp)
Point ID (low)
RTU Address
(time STamp)
(time STamp)
Event Type
Exponent
01H 41H 00H 14H 3EH A6H 7AH 4FH 02H 00H 00H A7H 0H 0H ……
The time integer “3EA67A4F” converts to April 23, 2003 at 11:34:39 am.
The Event type is reported as a “02” which is defined as an “Alarm return to normal” or Alarm_RTN
The exponent is reported as a “00” which means there is no decimal point in the value.
The Event Point Identifier is reported as 00A7 or 167 decimal. Table 5 lists Point ID 167 as being Overload
Alarm. Since this event had no data values associated with it, the before and after values are left at zero.
Query: Continue to retrieve the next 20 event records by setting the point count to 0001H, until the block count
in the reply turns negative as shown in the example below.
Response: (Last packet of event history, only part of the reply is shown)
Block Count (high)
Event Occurrence
Event Occurrence
Event Occurrence
Start of Event #1
Start of Event #2
Value after event
Function Code
Point ID (high)
(time STamp)
(time STamp)
(time STamp)
Point ID (low)
RTU Address
(time STamp)
Event Type
Exponent
01H 41H FFH F1H 3EH A6H 63H 9EH 03H 00H 00H 5BH 00H 02H
The reply illustrated above shows a block count of FFF1H (-15 decimal). That means there are no more event
records to be retrieved and that this packet does contain 15 event records.
AMPCHARTING
The GCS motor controllers record the motor current present on Phase B of the power system. This current data
is sampled at high speeds and converted to RMS values. The high speed values are averaged over a four
minute period and the minimum and maximum values are recorded in each 1 minute portion of the four minute
period. There are two tables of amp chart data that are available via the function code 65. The first, accessed
with a starting address of 3 in the function code 65 query is comprised of four minute packets containing the
minimum, maximum and average current during each time period. The second table, accessed with a starting
address of 6, is comprised of a single four minute average and four one minute minimum and maximum values.
The second table contains more data and is correspondingly longer. The following will describe the two
methods separately.
The ampchart data consisting of four minute averages and minimum / maximum values is accessed using a
starting address of 3, within a Function Code 65 query.
typedef struct
{
unsigned char rtuAddress;
unsigned char functionCode;
signed short blockCount;
aFourMinuteAmpchartRecord data[FOUR_MINUTE_AC_RECORDS_PER_PACKET];
unsigned short crc;
}anAmpchartRecordResponse;
typedef struct
{
time_t timeStamp;
PValue average;
PValue minimum;
PValue maximum;
}aFourMinuteAmpchartRecord;
Start of Record #1
Maximum (High)
Minimum (High)
Maximum (Low)
Function Code
Minimum (low)
Average (high)
Average (Low)
(time STamp)
RTU Address
(time STamp)
(time STamp)
(time STamp)
01H 41H 00H 18H 3EH A6H 9FH ACH 00H 16H 00H 15H 00H 17H
Amp Chart recorded
Start of Record #3
Maximum (High)
Minimum (High)
Maximum (Low)
Minimum (low)
Average (high)
Average (Low)
(Time Stamp)
(Time Stamp)
(Time Stamp)
(Time Stamp)
(Time Stamp)
(Time Stamp)
(Time Stamp)
3EH A6H A0H 9CH 00H 18H 00H 17H 00H 19H 3EH A6H ……
The block count 0018H indicates that 24 ampchart records are contained in this packet.
The ampchart data consisting of a four minute average and four, one minute minimum / maximum values is
accessed using a starting address of 6, within a Function Code 65 query.
typedef struct
{
unsigned char rtuAddress;
unsigned char functionCode;
signed short blockCount;
aOneMinuteAmpchartRecord data[ONE_MINUTE_AC_RECORDS_PER_PACKET];
unsigned short crc;
}anAmpchartRecordResponse;
where, ONE_MINUTE_READINGS_PER_RECORD is 4
timeStamp is the time of the most recent reading. This field is updated every minute.
Average is the average of the current over a four minute period.
typedef struct
{
PValue minimum;
PValue maximum;
}anAmpChartReadingRecord;
where minumum and maximum are the extremes of phase B current in amps measured during the one minute
period.
Query: The first message requesting ampchart data must have a point count value of zero, as shown below.
Ampchart recorded
Ampchart recorded
Ampchart recorded
Block Count (high)
Minimum1st minute
Start of Ampchart
Function Code
Average (high)
Average (low)
RTU Address
(Time Stamp)
(Time Stamp)
(Time Stamp)
(Time Stamp)
record #1
(high)
(high)
(low)
(low)
01H 41H 00H 0BH 3EH A6H 9FH ACH 00H 16H 00H 15H 00H 17H
minute
Ampchart recorded
Start of Ampchart
(Time Stamp)
nd
nd
Maximum 2
Maximum 2
record #2
(high)
(high)
(high)
(high)
(high)
(high)
(low)
(low)
(low)
(low)
(low)
(low)
00H 15H 00H 17H 00H 15H 00H 17H 00H 15H 00H 17H ….
The block count 000BH indicates that 11 ampchart records are contained in this packet.
After using a point count of 0000H to initiate the transfer of the ampchart records, use a point count of 0001 for
all subsequent queries until the block count value is returned as a negative value. As in all function code 65
transfers, a negative block count indicates that the response contains the final records to be transferred and the
negative value multiplied by negative 1 represents the number of records in this message. An example is shown
below:
Query: The point count is set to one to continue the transfer of ampchart records.
Ampchart recorded
Ampchart recorded
Ampchart recorded
Block Count (high)
Minimum1st minute
Start of Ampchart
Function Code
Average (high)
Average (low)
RTU Address
(Time Stamp)
(Time Stamp)
(Time Stamp)
(Time Stamp)
record #1
(high)
(high)
(low)
(low)
01H 41H FFH FEH 3EH A9H 5DH A3H 00H 06H 00H 06H 00H 06H
minute
Ampchart recorded
Start of Ampchart
(Time Stamp)
nd
nd
Maximum 2
Maximum 2
record #2
(high)
(high)
(high)
(high)
(high)
(high)
(low)
(low)
(low)
(low)
(low)
(low)
00H 06H 00H 06H 00H 06H 00H 06H 00H 06H 00H 06H ….
The block count FFFEH indicates that this response contains the last un-transferred records of the
ampchart and that a total of 2 records are contained in this packet. (10000H – FFFEH) = 2
Percentage of full scale = (Present Value of input / full scale value of input) * 100
Next the GCS drive's High Speed clamp and Low Speed clamp settings are determined. The Low Speed clamp
is designated as 0 % speed, while the High Speed Clamp is designated as 100% speed. The controller then
calculates the actual frequency value that corresponds to the percentage of full scale and uses that value as the
desired output frequency. Additionally, the drive can be set to react in forward or reverse. In forward acting, as
the analog setpoint signal is increased, the drive frequency increases. In reverse acting, as the analog setpoint
is increased, the drive frequency decreases.
The GCS drives provide support for Modbus RTU protocol. Using this communication capability, the user can
modify the variables using the following modbus address registers.
For example: to set the frequency to 59.5 Hz, write the value of 595 to address 40784
to set the frequency to 22.9 Hz, write the value of 229 to address 40784
ANALOG FOLLOWER MODE
If Analog Follower Mode is selected, (Modbus Address 40811 = 2), the user can configure which analog input is
used as the setpoint and whether the controller is forward or reverse acting.
Setpoint input for Analog Follower mode is located at Modbus address 40761 (0x02F8). This setpoint can
accept the following decimal values:
Expansion I/O Module 1, Analog Input #1: 1213 (Modbus address 40761 = 1213 decimal)
Expansion I/O Module 1, Analog Input #2: 1214 (Modbus address 40761 = 1214 decimal)
Expansion I/O Module 2, Analog Input #1: 1215 (Modbus address 40761 = 1215 decimal)
Expansion I/O Module 2, Analog Input #2: 1216 (Modbus address 40761 = 1216 decimal)
Expansion I/O Module 3, Analog Input #1: 1217 (Modbus address 40761 = 1217 decimal)
Expansion I/O Module 3, Analog Input #2: 1218 (Modbus address 40761 = 1218 decimal)
Example: Using Analog Follower mode via a Setpoint Input from SCADA
We will utilize a user programmable ‘variable’ called a ‘user point’ to allow the SCADA system to write a value
for the analog follower level. The GCS system has 256 of these programmable elements ranging from 0 to 255.
Caution: If the GCS Electrospeed has a custom programmed function or ‘user PLC function’, you may need to
select a different User Point than the following example.
We will use ‘user point 00’, whose present value field has a modbus address of 41958. See pg 38 of the GCS
Modbus Protocol support document for the full list of Modbus address for each User Point.
The user points are access via the ‘Prog Logic Funct’ option from the GCS Main menu. Select the ‘Edit User
Point’ option from the “Prog Funct Setup’ menu.
When the ‘edit user point’ menu first opens, you should see the setup screen for
‘Point ID 0’. To change to an alternate User Point, place the cursor on the Point
ID line and edit the ID # or use the right & left arrow keys to scroll to the next User
Point. As explained in step 1, we will select user Point ID 0 for this example.
We can configure the user point range in many ways. For this example, we will
set the minimum to 0, the maximum to 1000, an exponent of -1 (100.0) and the
units of 13 (%). This will allow us to write a value between 0 and 1000 that
represents a percentage from 0 to 100.0 % with one decimal of accuracy.
3. Configure Analog Follower mode & Setpoint Input
The next step is to setup the Analog follower mode. The output frequency control menu option appears on the
Prog Funct Setup menu (see above).
The system can be tested by running the drive and adjusting the Present value of User Point 00 from the Edit
User Point menu (see above) Alternately, use CentriMATION to write a value (0-1000 = 0-> 100.0 %) to
Modbus address 41958. You should see the value written appear in the present value field of User Point 00.
The drive output frequency should change from low speed clamp to high speed clamp as a percentage.
Setpoint input for PID Control mode is located at Modbus address 40762 (0x02F9). This setpoint can accept the
following decimal values:
Expansion I/O Module 1, Analog Input #1: 1213 (Modbus address 40762 = 1213 decimal)
Expansion I/O Module 1, Analog Input #2: 1214 (Modbus address 40762 = 1214 decimal)
Expansion I/O Module 2, Analog Input #1: 1215 (Modbus address 40762 = 1215 decimal)
Expansion I/O Module 2, Analog Input #2: 1216 (Modbus address 40762 = 1216 decimal)
Expansion I/O Module 3, Analog Input #1: 1217 (Modbus address 40762 = 1217 decimal)
Expansion I/O Module 3, Analog Input #2: 1218 (Modbus address 40762 = 1218 decimal)
Note: Take care that both the setpoint and feedback inputs do not contain the same value.
If the Manual Setpoint Value is selected, then the actual setpoint value is written to Modbus address 40662
(0x0295). For example, if the manual setpoint value of 1595(decimal) is desired, write to Modbus address
40662 = 1595
Value of Manual Setpoint == Modbus address 40662 (0x295)
Feedback input for PID Control mode is located at Modbus address 40763 (0x02FA). This setpoint can accept
the following decimal values:
Expansion I/O Module 1, Analog Input #1: 1213 (Modbus address 40763 = 1213 decimal)
Expansion I/O Module 1, Analog Input #2: 1214 (Modbus address 40763 = 1214 decimal)
Expansion I/O Module 2, Analog Input #1: 1215 (Modbus address 40763 = 1215 decimal)
Expansion I/O Module 2, Analog Input #2: 1216 (Modbus address 40763 = 1216 decimal)
Expansion I/O Module 3, Analog Input #1: 1217 (Modbus address 40763 = 1217 decimal)
Expansion I/O Module 3, Analog Input #2: 1218 (Modbus address 40763 = 1218 decimal)
Note: Take care that both the setpoint and feedback inputs do not contain the same value.
GCS RS-232 Port Pinout
123456
1 3 5
2 4 6
RJ-12 Component
Front
Opening
Jack Side View
PCB Pinout
NOTE: Colors
are relative to
1
2
3
4
5
6
123456
pins on
green
blue
orange
white w/blue
white w/green
white w/orange
sample cable.
Wire colors
may vary
depending
upon cable
manufacturer