Knowledge Base /
Integration Guides
DeltaV / GE Redundancy with ModbusTCP VIM connection to GE PIO
By Geoff Nash
Product: IOD-4101 - Modbus TCP/IP Master Driver (General Modbus TCP/IP Communications)


GE Genius IO blocks may use either of two methods for redundancy. The first method will be referred to as 31/30 redundancy, the second as BSM redundancy. In both these redundancy schemas, the redundancy is controlled at the GE block level. This is different than normal DeltaV redundancy which is implemented with two cards (or in the case of VIM’s, with two VIM’s).

ModbusTCP has no specific redundancy implementation. For DeltaV redundant control of GE blocks via ModbusTCP there must be two paths to the GE blocks from DeltaV and both paths must be open continuously to allow the GE block (or blocks) to control the selection. To implement this, DeltaV outputs are duplicated to both IO paths, and inputs are read from both paths. In DeltaV this results in two input tables for each block (one for each VIM/PIO combination), with a selector used to determine which input data is used in the control processes. Output data is written to both output tables. The selection may be made on the “present” bit that is in the first status byte for each block.

The physical GE bus paths for redundancy do not impact the selection of PIO, VIM, and DeltaV configurations, the same configuration is used for 31/30 and BSM setups (Figure 1 and Figure 2).

Figure 1: 31/30 Redundancy

In 31/30 redundancy, the GE bus physically runs in a loop between the PIO modules (even though the blocks are numbered sequentially (30, 31). Each block in the path normally sees both output data from both PIO modules, and broadcasts inputs that both PIO modules will see. If a GE block receives data from both 30 and 31, it will preferentially use the data from 31. If the GE bus is broken, then the blocks that receive data from 31 will continue without interruption. If a block does not receive output data from 31 within its timeout interval (number of bus cycles), then it will automatically us the data from block 30 and will continue until it no longer received the outputs from 30. If it does not receive outputs from either block, it will go to its fault state.

Figure 2: BSM Redundancy

For BSM redundancy, one GE block is configured as a BSM controller (with BSM attached and controlled by one of the blocks output circuits). Only one PIO at a time will communicate the GE blocks, and this is controlled by the GE BSM controller. The advantage of this is that both PIO modules may have the same block address, since only one will be on the GE bus at a time. The GE BSM controller block monitors the PIO outputs, if it does not receive any outputs within the specified number of bus cycles, then it forces a switch to the secondary bus and will continue using that bus until it fails connections. If the BSM bus switchover does not result in the GE block receiving output data, the module will not switch back (to prevent cycling on bus). It is important to note that any GE blocks attached to the BSM controller block follow the BSM switching and the wiring following the BSM is not redundant, these blocks are usually required to be in the same cabinet so the wiring is short and protected.

Block Selection

In DeltaV Inputs are read via two paths (PIO/switch/VIM). The input to be read depends on the status of the read for each path. The status may be determined by reading the first status byte of each block in the VIM IO table. This byte is the global fault status for the block, each bit holds a status parameter and should be examined with respect of the other bytes.

Fault Byte Descriptions (System level Faults)

Bit Value Description
0 Process Thread OK (0=OK, 1=Faulted) Bit 0 represents the process thread in the PIO, if this bit is non-zero then no other bits have meaning and the PIO is faulted, ignore this path.
1 Run Mode (0=run,1=program) Bit 1 specifies the run mode status of the PIO, during program download this bit will be 1, remaining higher numbered bits are not available and should be ignored, do not use this path.
2 RIO Card hardware fault (1) or OK (0) RIO daughter board status bit, if not running there is no communications on the RIO bus, PIO is faulted and this path should not be used
3 Block Present (0) or not (1) This is the main bit for redundancy, if 1 the block is communicating, if 0, the block is not present on this path, use alternate redundant path to read input data.
4 Terminal Assembly EPROM fault (block fault bit 3) Block specific faults, this may vary by block but should present the same data via either redundant path.
5 Electronic assembly EEPROM fault (calibration error) block fault bit 5
6 Internal circuit fault (block fault bit 7)
7 Block Configured This bit is set if the block is configured in the PIO. If not set, then the IO table will not be updated with data.

Table 1: GE Block Status Byte

The order of examining these bits is bit 0, 1,2,7,3. Remaining bits are specific for the Block and should be the same independent of path. In the DeltaV selection module first examine that primary (A) block table for valid data, if status is not valid for any of these bits, and then check the secondary table). If neither table’s PIO status bits are valid, consider the block failed. Once the PIO status and block redundancy bits are tested, then check the selected table fault bits for the block. Then for each circuit, check any circuit status bits, and finally use the input if valid.

Figure 3: Delta Block Data Selector Process