Cross-Controller AS-to-AS Data Communication with SEND_BO-REC_BO and BSEND-BRCV in PCS 7

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

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) and REC_BO (FB97):

  • Specifically designed for high-density boolean exchange between controllers.
  • Encapsulates BSEND and BRCV internally.
  • 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) and R_ID (unique communication pairing identifier).

Step-by-Step Implementation Procedure

Step-by-Step Procedure to Implement SEND_BO and REC_BO in PCS 7:

  1. 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#0001 or W#16#1).
    - Save, compile, and download network connections to both AS1 and AS2.
  2. Instantiate SEND_BO in AS2 (Sender):
    - Open the CFC chart in AS2 where interlocks are generated.
    - Insert SEND_BO (FB96) from the PCS 7 Standard Library -> Communication blocks.
    - Set input parameter ID to the NetPro S7 connection ID (e.g. 16#1).
    - Set input parameter R_ID to a unique 32-bit identifier shared exclusively with the receiver block (e.g. DW#16#101).
    - Connect your 26 boolean signals to inputs BO_01 through BO_26.
    - Set input SAMPLE_T matching the cyclic OB execution time (e.g. 0.1 for OB35).
  3. Instantiate REC_BO in AS1 (Receiver):
    - Open the destination CFC chart in AS1.
    - Insert REC_BO (FB97) into the chart.
    - Set input parameter ID to the corresponding NetPro S7 connection ID on AS1.
    - Set input parameter R_ID to the exact matching identifier (DW#16#101).
    - Connect outputs QBO_01 through QBO_26 to your destination logic, interlock blocks, or DB pins.
  4. 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

Related Articles

Related Tags

  • AS-to-AS Communication
  • SEND_BO
  • REC_BO
  • BSEND-BRCV
  • S7 Connection
20 respuestas