The controller contains three MPs. Each MP controls a separate channel and runs in parallel with the other two MPs. The dedicated I/O control processor on each MP manages the data exchanged between the MP and/O modules. The triple/O bus located on the backplane uses I/O bus cables to extend from one row of/O modules to another row of I/O modules. When polling each input module, the corresponding channel of the/O bus transmits new input data to its MP. The input data is assembled into tables in MP and stored in memory for use during the voting process. The individual input table in each MP is transmitted to its adjacent MP through TriBus. After this transfer, voting will take place. TriBus uses programmable devices with direct memory access to synchronize, transmit, and compare data between three MPs. If there is a disagreement, the signal values in two of the three tables shall prevail, and the third table shall be corrected accordingly. Distinguish secondary differences caused by changes in sample timing from patterns of different data. Each MP maintains data related to necessary corrections in local memory. Any differences will be marked and used by the built-in fault analyzer routine at the end of the scan to determine if a fault exists on a specific module. MP sends the corrected data to the application. 32-bit MP executes the application program in parallel with adjacent MPs, and generates an output value table based on the input value table according to user-defined rules. The/O control processor on each MP manages the transmission of output data to the output module through the/O bus.