Configuring PCS 7 V8.2 Boolean Tag Event Texts in CFC

David Krause17 min read
SCADA ConfigurationSiemensTutorial / How-to
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Operating PCS 7 V8.2 with default Boolean tag messaging produces generic "Coming" (C) and "Going" (G) status indicators in WinCC Alarm Control. Plant operators need domain-specific status text such as "Normal" and "Failure" for digital channels. This guide shows how to configure custom event texts for Boolean tag status changes using MonDiS, Pcs7Din, and Alarm_8P blocks entirely from the Continuous Function Chart (CFC) and the OS text library, without manually editing each WinCC graphic. The procedure applies to SIMATIC PCS 7 V8.2 with the Advanced Process Library (APL) installed and follows the official configuration model described in the Siemens Industry Online Support documentation set for PCS 7 process automation and the PCS 7 APL library manual.

1. PCS 7 V8.2 Boolean Messaging Architecture

Every Boolean tag in a PCS 7 plant follows a fixed signal chain from the I/O card to the operator alarm log. Understanding the path clarifies where custom text must be inserted.

Stage Block Library Function
1 ET 200 / S7-400 DI SIMATIC hardware Reads 24 V input from the field device
2 CH_DI / Pcs7Din PCS 7 APL driver Channel diagnostics and signal normalization
3 MonDiS PCS 7 APL Operator Control & Monitoring; exposes TEXT_0, TEXT_1 and a simulation toggle
4 Alarm_8P PCS 7 APL Packs up to 8 binary signals into one message with state, text, and ACK logic
5 WinCC Alarm Control WinCC Runtime Renders messages with Coming/Going indicator to the operator

The default behavior of Alarm_8P raises an event whenever a SIG input transitions. If SIG=1 the message moves to the "Coming" state (C indicator). If SIG=0 the message moves to the "Going" state (G indicator). The text that the operator sees inside the descriptive column is hard-coded as "Coming"/"Going" unless an external OS text reference is supplied through the TEXT_n parameter on MonDiS.

For a 24 V DC supply monitor, the operator needs "Normal" or "Failure", not "C"/"G". The configuration below replaces the status indicator text with custom strings while preserving the alarm acknowledgment logic and allowing the engineer to suppress unwanted events at the alarm view.

1.1 Why the Default C/G Indicator Is Problematic

The "C" and "G" indicators are generated by the WinCC alarm view from the message state bits. Operators in continuous process plants rely on compact two-word descriptions such as Normal / Failure, Open / Closed, or Run / Stop. Replacing the literal characters with plant terminology speeds up triage, especially when several hundred alarms appear simultaneously on a fault train.

2. Prerequisites

The following items must be available on the engineering station before starting the configuration.

Prerequisite Required Component Notes
Engineering System SIMATIC PCS 7 V8.2 (any current Service Pack) Verifiable through the "About SIMATIC Manager" dialog on the ES
Advanced Process Library APL V8.2 release at the matching SP level Provides MonDiS (FB 187) and Alarm_8P (FB 192)
CFC Editor Included with PCS 7 Engineering Station Used to edit chart interconnections
WinCC Explorer V7.4 SP1 or V7.5 in the V8.2 setup Provides alarm configuration dialogs
SIMATIC Manager PCS 7 ES Option For batch operations outside the TIA Portal
OS Text Library Project scope or library scope Allocated at OS compile time
Operator rights "Engineer" or higher on the ES Required to edit OS text tables
Library Consistency: All APL blocks referenced in this guide must originate from the same library version as the OS target. Mixing APL V8.1 instances with an OS built from APL V8.2 will cause MonDiS faceplate text references to resolve to the wrong translation at runtime. Verify this under "Options" → "Libraries" → "PCS 7 Library Status" in the SIMATIC Manager.

3. Configuring TEXT_0 and TEXT_1 References in MonDiS

The first configuration pass sets the text references associated with the MonDiS block. Each MonDiS instance carries up to 24 TEXT_n parameters. TEXT_0 and TEXT_1 are the two values referenced by binary states in the runtime.

3.1 Locate the TEXT_0 and TEXT_1 I/O

  1. Open the CFC chart that contains the MonDiS block.
  2. Right-click the block and select "Open Object".
  3. Switch the I/O view to "Inputs" and scroll to the TEXT_0 and TEXT_1 parameter rows.
  4. Inspect the default values. PCS 7 V8.2 typically initialises the fields with library placeholders such as OS_TEXT_10025 and OS_TEXT_10026. The values are symbolic references; the runtime resolves them through the OS Text Library.

3.2 Populate the OS Text Library

The OS Text Library is the master dictionary the WinCC runtime consults to resolve user-defined text. Add the same number of entries as the number of distinct TEXT_n parameters across the project.

  1. In WinCC Explorer open "Text Library" → "OS Texts".
  2. Allocate one free row per MonDiS instance. The OS index is generated automatically; the engineering value is the symbolic name.
  3. Assign the engineering strings, for example:
Line    Index    Symbol           EN (English)    DE (German)
 1      10025    DY_Supply_Norm   Normal          Normal
 2      10026    DY_Supply_Fail   Failure         Störung
 3      10101    DY_Pump_Run      Running         Laufend
 4      10102    DY_Pump_Stop     Stopped         Steht
 5      10103    DY_Valve_Open    Open            Offen
 6      10104    DY_Valve_Cls     Closed          Geschlossen
  1. Compile the OS via "WinCC Explorer" → "OS Project Editor" → "Text Library Compile". The editor is documented in the Siemens Industry Online Support portal under "PCS 7 V8.2 OS Configuration".

3.3 Assign the Indices to MonDiS

Once the entries exist in the OS Text Library, return to the CFC chart and place the matching indices into the TEXT_0 and TEXT_1 inputs of the MonDiS block.

Block:  MonDiS (FB 187) - DY_Supply
  TEXT_0 := "OS_TEXT_10025"   // value resolved at OS compile = "Normal"
  TEXT_1 := "OS_TEXT_10026"   // value resolved at OS compile = "Failure"
  ACK    := I0.0_ack           // operator acknowledgment from WinCC
  SIG_1  := Ib0_inverted       // see Section 4 for the inversion pattern
  SIG_2  := Ib0_direct         // optional second alarm path
  EN_MSG := TRUE
  SIM_ON := FALSE

After the next OS compile, the WinCC alarm logging view shows the operator text "Normal" or "Failure" inside the descriptive column of @alarmnew.pdl instead of the default "Coming"/"Going". The internal message state bits are unchanged, only the user-visible text is replaced.

4. Inverting the Signal for Normal/Failure Display

Two patterns cover virtually every plant requirement. The preferred pattern reuses the binary signal directly by mapping the asserted state ("1") to "Failure" and the released state ("0") to "Normal". This pattern also removes the need for a special "Going" event because the value 0/1 itself communicates the status.

4.1 Pattern A: Inversion Inline at the Channel Driver

If the only consumer of I0.0 is the alarm path, invert the signal at the channel driver using the inversion capability provided by Pcs7Din V8.2 (block family V8.x):

  1. Open the Pcs7Din block instance in the CFC chart.
  2. On the "Parameters" tab, locate the "Value inversion" toggle and enable it.
  3. Wire the output directly to MonDiS.SIG_1 without an additional NOT block.

4.2 Pattern B: Insert a Logical NOT Block

For projects that already use Pcs7Din elsewhere with the native polarity (e.g. for interlock logic), insert a NOT element from the PCS 7 libraries between the channel driver and the message block:

  [Pcs7Din] Ib0 --+--> [NOT] --> [MonDiS.SIG_1]   (alarm trigger follows inverted value)
                  |
                  +-------> (other consumers, e.g. interlock/control logic)

The inversion guarantees SIG_1 == 1 corresponds to the failure condition (24 V absent equals "1" when using a normally closed contact). With this in place:

  • TEXT_0 displays when the value is 0 → message reads "Normal".
  • TEXT_1 displays when the value is 1 → message reads "Failure".

4.3 Choosing the Polarity

Field Wiring Convention Raw Bit in Pcs7Din Inverted Bit to MonDiS TEXT_0 Result TEXT_1 Result
Normally-open contact (NO) closes on fault 0 normal / 1 fault 1 normal / 0 fault Failure (when fed directly) Normal (when fed directly)
Normally-closed contact (NC) opens on fault 1 normal / 0 fault 0 normal / 1 fault Normal Failure
Isolated 24 V supply monitoring 1 healthy / 0 missing 0 healthy / 1 missing Healthy Missing
Choose one convention project-wide: Mixing normally-open and normally-closed signals with the same MonDiS text indices will produce inverted text. Document the chosen polarity in the project's "PCS 7 Engineering Guidelines" so that maintenance staff can interpret the alarm texts correctly during turnarounds.

5. Driving Messages from the MonDiS Output to Support Simulation

The second complication reported in the field is that MonDiS supports a faceplate simulation toggle. When operators click "Sim on" inside the faceplate, the simulated value must drive the alarm trigger as well. If the alarm trigger is wired to Pcs7Din directly (instead of the MonDiS output), the simulated status will not raise an event because the process channel does not see the simulated value.

5.1 Where to Tap the Trigger Signal

The cleanest fix is to source the trigger from the MonDiS output Q or the public value output VALUE rather than from the channel driver:

  [Pcs7Din] Ib0 -----+--> [MonDiS.VALUE]
                      |
                      +--> (other consumers, e.g. control logic)

  [MonDiS.Q]   ------+--> [Alarm_8P.SIG_1]   // SIG follows simulation state
                     |
                     +--> [Pcs7Din2_VALUE]   // optional secondary path

5.2 How Simulation Routes Through Q

Inside MonDiS the SIM_ON input selects between the field value (taken from VALUE) and SIM_VAL. The block output Q reflects the SIG_1 evaluation on the selected stream. Wiring the alarm trigger to Q means every state change in either the field or the simulated value raises exactly one event. The Q output is wired through MonDiS's simulation logic so it follows whatever state the operator has chosen.

5.3 Faceplate Configuration

  1. Open the MonDiS faceplate object properties.
  2. Confirm Operator Control Enabled is TRUE for the SIM_ON and SIM_VAL switches.
  3. Set the operator authorization level to "Process Operator" or higher. Engineers typically require level 3 or higher, per the "Authorization Levels" chapter in the PCS 7 V8.2 manual.

Once the trigger signal flows through MonDiS.Q, toggling "Sim on" in the faceplate changes Q and Alarm_8P raises the appropriate "Normal"/"Failure" event.

6. Using Sig4 and Sig5 for Enhanced Messaging

Several MonDiS variants (notably the OCM-enabled release) expose external message inputs SIG_4 and SIG_5 wired straight into the alarm block. Each SIG has its own TEXT_n pair. Designers can use SIG_4 and SIG_5 for supplementary labels when the binary signal conveys more than two states, e.g. "Manual / Auto / Remote".

SIG Input on MonDiS Typical TEXT_0 Typical TEXT_1 Use Case
SIG_1 Normal Failure Primary Boolean fault
SIG_2 OK Override Operator override flag
SIG_3 Local Remote Control source
SIG_4 Auto Manual Mode flag
SIG_5 Open Closed Valve position
Memory cost: Each SIG used by MonDiS doubles the number of alarm events raised on every transition. In V8.2 each SIG can introduce up to one event per second when toggled rapidly. Only enable SIG_4 / SIG_5 when the additional text is operationally required; otherwise, leave them unconnected so they do not generate extra noise in the alarm log.

7. Avoiding Duplicate Events Across Multiple MonDiS Instances

A common architecture mistake is to wire both the direct and the inverted channel values into two separate MonDiS blocks for "completeness". Each state transition then triggers two events:

  [Pcs7Din]  --> [MonDiS_Direct.SIG_1]    // "Coming" with TEXT_0 of direct
            --> [MonDiS_Inverted.SIG_1]  // "Coming" with TEXT_0 of inverted

The operator receives two simultaneous entries, one labelled "DC Supply Normal Coming" and one labelled "DC Supply Failure Coming". The duplicate message confuses operators and clutters the alarm log.

7.1 Recommended: Single MonDiS with Inversion

Collapse the design to one MonDiS instance. Use the inversion pattern from Section 4 and keep TEXT_0 / TEXT_1 on the single instance. Result: a single event per transition, with the right text.

7.2 Alternative: Hide One Event on the Alarm View

If business reasons require both direct and inverted paths (e.g. for separate acknowledgment of "rising" and "falling" alarms), remove the "Went Out" indicator on the operator view:

  1. Open @alarmoneline.pdl via the WinCC Graphics Designer.
  2. Right-click the alarm view and open "Configuration Dialog" → "Message Display".
  3. Uncheck Went Out (German: "Gegangen") to suppress the Going indicator for this view.
  4. Repeat on the New Alarm view (@alarmnew.pdl) if relevant.
  5. Compile and activate the OS.

7.3 Identifying Duplication via Diagnostics

Open WinCC Alarm Logging on the operator station and filter by tag name. If the Event List shows two rows with the same timestamp but different status, the duplication is at the CFC side, not the view. Fix it as in Section 7.1 rather than hiding it.

8. WinCC Alarm Control Display Configuration

Even after the CFC side is wired correctly, the operator view must be configured to honour the new texts. The default @alarmoneline.pdl includes a Status column whose cells map directly to the Alarm_8P state machine.

8.1 Confirm Status Column Mapping

The Status column in the Alarm Control reads "C", "G", "A" (acknowledged) from the message state bits. The text values are read from the OS Text Library; if a TEXT_n index is invalid or empty, the column falls back to the literal "C" / "G".

8.2 Confirm the Status Column is Active

  1. Open the Alarm Control properties dialog in the Graphics Designer.
  2. On the "Columns" tab, ensure the Status column is selected and the column width is wide enough for the new text (e.g. 80 px instead of the default 40 px).
  3. If "C" / "G" is still displayed, open the project language settings and retranslate the OS Text Library with the entire base set. PCS 7 typically carries a copy of the default OS_TEXT_BASE that must be overridden by importing your OS_TEXT_PROJECT entries.

8.3 Audit Alarms in WinCC Alarm Logging

Open the alarm log on a process operator station and verify the following for each Boolean tag:

  • Source: tag name such as "DY_Supply"
  • State: "Came In" / "Went Out" with the appropriate "C" / "G" bit
  • Text: "Normal" / "Failure" rather than "Coming" / "Going"

Any row still showing "Coming" / "Going" indicates an empty OS Text Library entry. Re-add the missing TEXT_n index and recompile the OS.

9. Commissioning and Verification

After the wiring and library work, verify the change end-to-end before placing the system into production. The sequence below reproduces the most common verification tests for a single Boolean tag.

  1. Stop the OS Runtime on the affected server before recompiling to avoid resource conflicts.
  2. CFC download the chart: "CFC" → "Compile and Download Objects" in the SIMATIC Manager.
  3. OS Compile via WinCC Explorer → "OS Project Editor" → "Compile OS".
  4. OS Activate the server.
  5. Force the input in the PLC using the Variable Table (VAT). For a discrete I0.0, force the value to 0 then 1 with at least 2 seconds between actions to ensure each transition is captured.
  6. Observe the Alarm Line on the WinCC operator client. Confirm the message text reads "Normal" or "Failure", and that the status column shows "C" / "G" (the state machine is unchanged).
  7. Activate simulation via the MonDiS faceplate. Toggle the simulated value and confirm a new alarm entry is raised. If no event is raised, the wiring in Section 5 has been skipped.
  8. Acknowledge the alarm from the operator client. Confirm the "A" (acknowledged) indicator updates.
  9. Go offline from the OS runtime, then back online, to verify the texts persist across OS restarts.
  10. Check audit logs for any "OS_TEXT_x not found" warnings. PCS 7 surfaces these in the WinCC diagnostics window and in the WinCC system log under the Alarm Logging service.

10. Troubleshooting Matrix

The matrix below maps the most common field symptoms to their root cause and remediation step. Capture the symptom in the maintenance logs and consult the matrix before editing the chart.

Symptom Likely Root Cause Remediation
Alarm line shows "Coming" / "Going" instead of "Normal" / "Failure" TEXT_n points to an empty OS Text Library row Populate the OS Text Library and recompile the OS
Alarm line shows "C" / "G" without any descriptive word TEXT_n is empty and no fallback text is configured in Alarm_8P Supply a TEXT_n index or set a default text in Alarm_8P
No event raised when the simulation toggle is activated Alarm trigger wired to Pcs7Din directly, not MonDiS.Q Route the trigger through MonDiS.Q (see Section 5)
Two events raised on a single state transition Two MonDiS instances on direct + inverted channels Consolidate to one MonDiS instance (Section 7.1)
"Going" indicator still visible after hiding via alarm view config Alarm_8P ACK behavior is FALSE for SIG_1 Enable the ACK behavior or accept the Going indicator
Custom text appears in one language but not another OS_TEXT entries were only added for the EN locale Translate each entry to all configured OS languages
Offline project text differs from runtime text OS compile has not propagated to the runtime Run "OS Project Editor" → "Compile" / "Activate"
OS Text Library compile raises "duplicate index" Two blocks share a TEXT_n index Rename one index and recompile the OS
Operator override flag does not appear in the alarm line SIG_4 / SIG_5 are not wired Add physical connections to SIG_4 / SIG_5 and define TEXT_4 / TEXT_5
Acknowledgment fails ("A" indicator does not appear) Operator authorization level too low Raise the operator account level on the WinCC user administrator
Texts appear correctly on the engineering station but not on the server OS server compile is desynchronised from the ES Re-download the OS server and restart runtime

11. PCS 7 V8.2 Compatibility and Migration Notes

PCS 7 V8.2 reflects the last generation before the TIA Portal integration push. Configuration patterns described above carry forward to PCS 7 V9.0 and V9.1 with the following adjustments. Use these notes when migrating an existing project.

Item V8.2 Behavior V9.0+ Behavior Migration Action
APL block family V8.2 release of FB 187 / FB 192 Updated block families, renamed I/O (e.g. SIG becomes ACKx) Re-import the libraries and re-map I/O via the PCS 7 migration tool
OS Text Library format Flat index table per language Same table, plus Unicode support Retest translations on the new OS
Simulation flag SIM_ON binary input SIM_ON retained, plus SIM_FLG_xx structured tags Update any external VB scripts reading SIM_ON
Alarm_8P ACK behavior Single ACK state per SIG Acknowledgment can be per-instance Verify ACK semantics after migration
Status indicator text translation Manual override via OS_TEXT_PROJECT Same flow with TIA Portal diagnostics Re-translate STATUS column entries
Documentation point of contact: The official PCS 7 V8.2 manual set (shipped on the PCS 7 DVD under "\Manuals\English\V82") and its service packs describe each block faceplate signature in detail. When in doubt, anchor changes against the manual chapter rather than offline migration notes.

12. Frequently Asked Questions

Can I change the C/G character on the Alarm Line to a custom character?

The C and G indicator comes from the WinCC Alarm Control status column, which reads the message state machine. The status character itself is fixed; the descriptive long-text column is what you replace. Configure TEXT_0 and TEXT_1 on MonDiS so the long-text column displays "Normal" or "Failure" instead of "Coming" / "Going". The C / G indicator remains for state-based filtering and acknowledgment logic.

Why does my custom text appear in the offline project but not in the runtime?

The runtime OS resolves TEXT_n via the OS Text Library at compile time. After editing any TEXT_n or OS_Text entry you must run "OS Project Editor" → "Compile OS" and "Activate OS". A simple chart download from the ES does not propagate the OS text changes; the OS server holds its own copy of the dictionary.

How do I keep the simulation value driving the alarm trigger?

Tap the Alarm_8P.SIG_1 input from MonDiS.Q rather than from Pcs7Din output. MonDiS routes the simulated value into Q when SIM_ON is high, so toggling the simulation from the faceplate raises the appropriate event.

Do I need a separate MonDiS for the inverted value?

No. Use a single MonDiS and insert a logical NOT block between Pcs7Din output and MonDiS.SIG_1. With TEXT_0="Normal" and TEXT_1="Failure", only one event is raised per transition.

Which entry of the OS Text Library gets priority at runtime?

The search order is project OS_TEXT table first, library OS_TEXT_BASE table second. The project table overrides the library base. Keep the project table small and translate every entry for every configured OS language.

Why am I getting two events per transition in V8.2?

Two MonDiS instances wired to both the direct and the inverted channels. Remove one instance and rely on inversion on a single instance so only one event is raised per transition. Alternatively, hide the redundant indicator on the @alarmoneline.pdl view.

Does changing TEXT_n impact other consumer charts?

Yes. OS_TEXT indices are project-wide symbols. Renaming or removing a TEXT_n index inside one chart can orphan references in other charts. Audit "Cross References" (in the SIMATIC Manager menu "Options") before renaming shared indices to avoid OS compile errors.

Back to blog