Cross-Controller AS-to-AS Data Communication with SEND_BO-REC_BO and BSEND-BRCV in PCS 7
To transfer 26 or more boolean signals between two SIMATIC PCS 7 controllers (e.g. from AS2 to AS1), use the standard PCS 7 communication blocks 'SEND_BO' (FB96) and 'REC_BO' (FB97). These blocks utilize coordinated 'BSEND/BRCV' (SFB12/SFB13) services internally and transmit up to 128 boolean signals across a configured bilateral S7 connection in a single deterministic cycle. Avoid uncoordinated 'PUT/GET' functions, as they lack receiver synchronization and risk inconsistent data reads during cyclic CFC execution.
Table of Contents
- Executive Summary
- Architecture and Fundamental Mechanics
- Step-by-Step Implementation Procedure
- Verification
- Limitations and Operational Precautions
- Engineer FAQ
- Technical References
- Related Articles
- Related Tags
Executive Summary
Inter-controller data exchange (AS-to-AS communication) is an essential requirement in multi-unit process automation plants running SIMATIC PCS 7 (V8.0 through V9.1). When engineers need to exchange interlocking permissives, sequence handshake flags, or equipment status bits across autonomous controllers, standard blocks like SEND_R and REC_R (which are optimized for REAL values) provide an insufficient number of boolean signals. This article details why uncoordinated PUT/GET instructions violate PCS 7 engineering standards, explains the mechanics of coordinated BSEND/BRCV communication, and outlines the implementation of SEND_BO and REC_BO for transmitting up to 128 boolean values.
Architecture and Fundamental Mechanics
Communication Architecture and Protocol Mechanics for AS-to-AS Exchange:
- Coordinated vs Uncoordinated Communication in PCS 7:
- PUT / GET (SFB14 / SFB15):
- Uncoordinated, client-driven one-sided communication.
- The sending CPU writes directly into the memory or DB of the remote CPU without the receiving CPU's operating program being notified.
- Severe Operational Hazard: The receiving CPU may read a partially updated data block in the middle of a cyclic OB execution frame, resulting in data inconsistency, race conditions, or intermittent safety trip glitches.
-
BSEND / BRCV (SFB12 / SFB13 - Block Send / Block Receive):
- Coordinated, confirmed bilateral communication over an S7 Connection.
- The sender packages data and transmits it; the receiver explicitly acknowledges receipt in its own cyclic task before transferring data to the user memory image. Guarantees 100% data consistency across packet boundaries.
-
The Standard PCS 7 Block Pair:
SEND_BO(FB96) andREC_BO(FB97): - Specifically designed for high-density boolean exchange between controllers.
- Encapsulates
BSENDandBRCVinternally. - Transmits up to 128 boolean signals (mapped across 4 DWORDs / 128 individual bit pins) per block instance over a single bilateral S7 connection.
-
Includes built-in communication watchdog monitoring (
QERR, signal status evaluation) and outputs connection health to operator faceplates. -
Connection Requirements in NetPro:
- Requires a configured bilateral S7 Connection between the two controllers in NetPro.
- Both blocks must be parameterized with identical connection reference identifiers:
ID(Hex connection ID from NetPro) andR_ID(unique communication pairing identifier).
Step-by-Step Implementation Procedure
Step-by-Step Procedure to Implement SEND_BO and REC_BO in PCS 7:
- Configure Bilateral S7 Connection in NetPro:
- Open NetPro in SIMATIC Manager.
- Select the CPU in AS2 (the sending controller).
- In the connection table, insert a new connection: Target = AS1 CPU; Type = S7 connection.
- In Connection Properties, note the local ID (e.g.16#0001orW#16#1).
- Save, compile, and download network connections to both AS1 and AS2. - Instantiate
SEND_BOin AS2 (Sender):
- Open the CFC chart in AS2 where interlocks are generated.
- InsertSEND_BO(FB96) from the PCS 7 Standard Library -> Communication blocks.
- Set input parameterIDto the NetPro S7 connection ID (e.g.16#1).
- Set input parameterR_IDto a unique 32-bit identifier shared exclusively with the receiver block (e.g.DW#16#101).
- Connect your 26 boolean signals to inputsBO_01throughBO_26.
- Set inputSAMPLE_Tmatching the cyclic OB execution time (e.g.0.1for OB35). - Instantiate
REC_BOin AS1 (Receiver):
- Open the destination CFC chart in AS1.
- InsertREC_BO(FB97) into the chart.
- Set input parameterIDto the corresponding NetPro S7 connection ID on AS1.
- Set input parameterR_IDto the exact matching identifier (DW#16#101).
- Connect outputsQBO_01throughQBO_26to your destination logic, interlock blocks, or DB pins. - Compile and Download:
- Compile CFC charts for both AS1 and AS2 (Changes Only).
- Download user programs to both controllers.
Verification
Verification Procedure:
1. Online Status Check: In CFC Test Mode, open SEND_BO in AS2 and REC_BO in AS1. Confirm that output QERR = FALSE on both blocks, indicating communication is healthy.
2. Bit Toggle Test: Force input BO_01 on AS2 to TRUE. Verify that output QBO_01 on AS1 switches to TRUE within one cyclic interrupt cycle (e.g. < 100ms).
3. Disconnect / Fault Audit: Disconnect the network cable between controllers. Confirm that REC_BO detects communication loss, asserts QERR = TRUE, and sets output signal quality flags to bad without freezing or generating CPU stop errors.
Limitations and Operational Precautions
Operational Precautions and S7 Connection Boundaries:
- Matching R_ID Uniqueness: Every pair of SEND_BO and REC_BO blocks on the same S7 connection must have a unique R_ID. Reusing R_ID values causes data collisions and communication aborts.
- Execution Levels: Always place SEND_BO and REC_BO in matching cyclic interrupt OBs (e.g. both in OB35 / 100ms) to prevent buffer overflows.
- High-Availability Controllers (S7-400H / CPU 410-5H): In redundant controller configurations, configure a Fault-Tolerant S7 Connection in NetPro to ensure communication survives a CP or cable failure without bumping data.
Engineer FAQ
Which PCS 7 block pair transfers up to 128 boolean signals between controllers?
The standard block pair SEND_BO (FB96) and REC_BO (FB97) transfers up to 128 boolean signals.
Why is PUT/GET not recommended for AS-to-AS communication in PCS 7?
PUT/GET is uncoordinated one-sided communication; the receiving controller has no synchronization, creating a high risk of reading inconsistent, partially written data during execution.
What does the R_ID parameter represent?
R_ID is a unique 32-bit communication reference identifier that binds a specific SEND block to its paired RECEIVE block on an S7 connection.
What communication protocol is used internally by SEND_BO and REC_BO?
They internally execute coordinated BSEND (SFB12) and BRCV (SFB13) system function blocks.
Can SEND_BO and REC_BO communicate across different multiprojects?
Yes, by configuring an 'Unspecified S7 Connection' in NetPro on both controllers with matching IP addresses and TSAP connection parameters.
Technical References
- SIMATIC Process Control System PCS 7 Basis Library Function Manual
- SIMATIC S7-400 Automation System Module Data Manual
- SIMATIC Process Control System PCS 7 High Availability Process Control Systems
Related Articles
- Controller Autonomy and Plant Availability During Complete OS Server Outage in PCS 7
- Implementing Redundant Analog Input Channels with Pcs7AnIn in SIMATIC PCS 7 V9.0
- Managing S7-400 Local Data Stack Allocation and Resolving CFC Compilation Exhaustion
Related Tags
- AS-to-AS Communication
- SEND_BO
- REC_BO
- BSEND-BRCV
- S7 Connection