Knowledge Base /
Technical Notes
PLC IO Interface Support for B846 Analog Mux Extended Connection v.2.14
By Geoff Nash
Product: PLC IO Interface

This application note describes the configuration required to support the Modicon B846 module with the PLC IO Interface


The B846 module is used to multiplex input values through 1 register on an input card (B873 or B875). The module functions by writing the channel number desired into the single output register in the module. The module then switches the specified input channel to its single output channel. This output is tied to an input channel on the selected input module. There is no status as to whether the input is selected, or when the input is ready. All changes must be assumed by timing.

Current S908 PIO implementation of the B846 module entails the reading of the current input, then the writing of the selection value. The DeltaV system must wait an interval based on the response from the card. The B846 modules have a response time (from receipt of channel selection to a stable signal on the output line) of 3 ms. The update time of the input module is variable based on the type of module selected as show below:

Module Update Time

B873-001 400 ms (4 channels)

B873-011 400 ms (4 channels)

B875-002 710 ms (8 channels)

B875-012 710 ms (8 channels)

B875-102 2.4 ms (4 channels)

3.0 ms (8 channels)

B875-111 10 ms (8 channels)

20 ms (16 channels)

B875-200 4 ms (4 channels)

The updates from DeltaV to the B846 module are processed as several asynchronous steps. DeltaV IO modules are scanned at 100, 500, or 1000 ms intervals. On each scan, any changes are updated to the IO database. The values in the database are asynchronously read/written to the Programmable serial card or VIM. The programmable serial card or VIM will asynchronously read/write the values to the PIO module. Finally, the S908 RIO bus messages are also asynchronous. These steps produce a variation in IO udpate time than must be accounted for in the writes (channel selection) to the B846 module.

The new S908 PIO flash includes two extended B846 modules (B846EX and B846EX2). These module interact with the RIO in the same manner as the original module, however they enable the channel selection and data capture to be moved to the PIO module, allow a synchronous data capture. The B846EX module requires the input module to be in the same drop as the associated input module while the B846EX2 may be used in a separate drop from the input module. This document describes the B846EX2.

The new module allows selection of a channel range and/or specific channels to be processed (data captured). The results are returned in a register array the does not change based on channels captured.

This requires configuation of the module in PLC Explorer, export of a new DeltaV landing module, and new DeltaV register assignments. However the new method also allows the configuation of the channel data captured to be edited in the DeltaV controller and the reading of IO data from a register array.

PLC Explorer Configuation

In PLC Explorer, select the controller, card, drop, and rack. Right click on the rack as select “Add Module to Slot”. This opens a dialog allow selection of specific modules. From the list select the “B846EX2 ANALOGMUX” module.

Select the slot of the B846 module. When the module has been selected, the “Configuration” button is enbled. Select this to open the modules properties. Initially no input module drop, rack, slot, or channel is selected. The user must enter these, and these must match the location of the input signal assigned to the B846 module.

There are two methods to select the multiplexed channels. In the lower right of the dialog, the “Update Selection” allows selection by interval (time specified in 10 ms units) or by channel (similarly to the previous method where the channel is selected by the module in DeltaV.

If timed selection is specified, the actual channels to be read are selected either by specifing a range (IO Channel Range low and high channels), or by disabling specific channels. Both methods may be used together to obtain any pattern of IO updates. Changing the range will gray out the channels in the “Disabled Channel” section that are not available.

All these parameters are initial defaults in the exported module, but may be modified by DeltaV logic as necessary for changes in the IO capture process.

If a timed interval is selected, the value may be any value from 0 to 255, for channel value may be from 0 to 31 (16 to 31 causes the B846 update to be set to off state. Any values out of range cause the update selection to fail with a message, with value set into valid range.

Download of module to PIO module, and export of the FHX file are the same as for previous verisons.

DeltaV landing module

PLC Explorer generates a landing module for the IO of the B846Ex2 module. This includes four output configuration registers and seven input status registers as well as a sixteen input register array to hold the possible values from the B846 module. The complete module is shown to the right. The details of this are described in the sections below.


Each of the 16-bit outputs register consists of two 8-bit values. The inputs are entered using input parameters, eight of these are then merged into 4 - 16-bit values using the calc block PROCESS.









The fourth output register (OUT_DISABLES) is generated using a Boolean fan in from 16 Boolean input parameters. All the input parameters are given default values in PLC Explorer, but these may be modified as necessary for the on-going processing by other DeltaV modules.

Finally, the PROCESS calc block moves the values into the output registers whenever they change, or ar forced by setting the FORCE_UPDATE input parameter to true.


Inputs are divided into three sections, feedback of the process, PIO/drop status, and IO channel array. There are eight feed-back registers, these are the first registers assigned to the module.

These registers contain either two 8-bit values, bit array, or 16-bit values. The 8-bit values are broken out using a calc block (STATUS_BLK). The first five registers are feed-backs of the configuration values written to the PIO. The first holds the input module drop and rack, the second the slot and channel. The third is the IO channel range, and the fourth is a bit array specifying the enabled channels. The fifth register holds both the update time (if set) and the current channel being updated. Finally, the next two registers hold the number of scans of the IO channels (incremented on each complete scan) and the time the last scan took (in ms) to process all configured input channels in the MUX module.

The last status register assigned to the module holds the status bits of the PIO module and the drop and B486EX2 module (from drop status registers). These values are split out into the input parameters to the right of the module display, and are used to toggle the state of the IO input parameter values.

Finally, the sixteen registers following the initial status registers hold a array that is updated with the captured IO channel values. These are transferred to the input parameters values (I_0 to I_15) along with the IO status.