CEMAT Check Tool Faults 65 and 68: Resolving OB1 Runtime Sequence

David Krause12 min read
Other TopicSiemensTroubleshooting
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

CEMAT Check Tool Faults 65 and 68: Resolving OB1 Runtime Sequence in PCS 7 V8.2

The Siemens CEMAT (CE MATerials handling) library is the standard process control building block set for cement, mining, and bulk-material plants running on SIMATIC PCS 7. When you validate a project with the CEMAT Check Tool, two specific diagnostic messages – Fault 65 and Fault 68 – relate to the runtime sequence (German: Laufzeitsystem) inside OB1 of the AS (Automation Station). Both faults indicate the same root cause: CEMAT application blocks are not strictly enclosed between the OB1_START and OB1_END runtime groups generated by the CEMAT system chart. This article consolidates field-proven remediation steps, the underlying OB1 architecture, and the verification procedure that the CEMAT V8.2 Engineering Manual requires before sign-off.

Applies to: CEMAT V8.2 with PCS 7 V8.2 (including SP1), STEP 7 V5.5 + SPx, CFC V8.2. OB1-related run-time grouping rules are identical for S7-300, S7-400, and AS 410 controllers used in CEMAT deployments. Cyclic OB1 behavior is documented in the STEP 7 / TIA Portal programming reference: Cyclic program (OB 1) (S7-300, S7-400) – STEP 7.

1. Problem Description and Symptom Table

When the CEMAT Check Tool is executed from the SIMATIC Manager (CEMAT menu → Check Tool) or the dedicated engineering station, the following two diagnostic messages can appear in the result window:

Fault ID Severity Verbatim Text (CEMAT Check Tool, EN) Typical Cause
65 Error CEMAT function blocks installed in the runtime sequence in OB1 after the last CEMAT system function block. Application CFC charts placed after OB1_END or after a system function block such as the message-archive / OS-server handover block.
68 Error All CEMAT blocks are not called in the same cycle (=OB). This does NOT include blocks from the CEMAT system chart. Please check your runtime sequence. CEMAT application blocks split across multiple OBs (e.g., OB35, OB100, OB1) instead of consolidated in OB1.

Both messages block the official CEMAT V8.2 Check Tool certificate of release. They cannot be downgraded to warnings, and the Check_Log.txt must be clean (or contain only documented, accepted findings) before a customer-acceptance test is passed.

2. Root Cause Analysis: Why OB1 Is Mandatory for CEMAT

CEMAT is engineered around a strict single-cycle execution model. Every user-defined drive, interlock, and annunciator block is intended to be evaluated in the same free-cyclic OB (OB1) so that:

  1. State consistency is maintained. A motor start command and its interlock must see the same process image within the same tick; otherwise race conditions appear during fast start/stop sequences.
  2. Message generation is deterministic. The CEMAT message blocks (MSG_CEM / ALARM_8P derivatives) timestamp and queue events on a single OB1 pass.
  3. Operator & Authorization feedback (HMI tags from the OS) is updated once per cycle, guaranteeing that the operator display and the AS do not drift.
  4. Driver blocks (CEMAT system chart) – such as CTRL_PID, MOT_SPEED, VALVE_ANA, ANNUN8, DOSING – must call the CEMAT main FB first, then the application blocks, in that exact order, so that internal mode-manager states propagate correctly.

The CEMAT Engineering Manual, Chapter 7 ("Runtime sequence / OB1"), states that the CFC compiler inserts two sentinel runtime groups – OB1_START and OB1_END – into OB1. Every CEMAT application chart (the FBs you copy from the CEMAT template project) must be positioned between these two sentinels. The reference manual is available at CEMAT V8.2 Engineering Manual (PDF).

Fault 65 is raised when a user chart appears after the last system chart FB in OB1, breaking the contract that the CEMAT kernel is the last process-aware block executed in the free cycle.

Fault 68 is raised when a user chart is installed in a different OB (OB32, OB35, OB82, OB100, OB121, OB122, etc.). The runtime editor is then unable to prove the "all-in-one-cycle" invariant.

3. Prerequisites for the Repair Procedure

  • Engineering Station with SIMATIC PCS 7 V8.2 + SPx installed (SP1 minimum; SP2 recommended).
  • STEP 7 V5.5 with the matching CFC/SFC version (CFC V8.2).
  • The S7 program on the ES matches the program on the AS (re-compile from ES before you change the run-time sequence).
  • WinCC Explorer / OS server is closed or the project is in deactivated state. Runtime changes during active OS license are not recommended.
  • User privilege: Engineer or Project Editor on the S7 program.
  • Read access to the CEMAT V8.2 Engineering Manual: CEMAT V8.2 Engineering Manual (PDF, Siemens Support).
Backup first. Before editing the runtime sequence, archive the S7 program (File → Archive) so you can roll back if an additional fault is introduced during repositioning of the runtime groups.

4. Step-by-Step Resolution Procedure

4.1 Open the CFC Runtime Editor

  1. In SIMATIC Manager, navigate to the AS station (e.g., AS01) and open the S7 Program container.
  2. Open the Charts folder and double-click any *.cfc chart to launch the CFC Editor.
  3. From the CFC menu bar, choose Edit → Open Run Sequence (shortcut: Ctrl+F11). The Runtime Editor window appears with a tree view of all OBs and their assigned runtime groups.

4.2 Inspect the OB1 Tree

The left-hand pane lists every OB with its Task (cyclic, time-of-day, error, startup). Expand OB1 — Cyclic. The expected structure is:

OB1 (Cyclic)
 ├── OB1_START           ← CEMAT system chart task 1
 ├── <CEMAT System FB>  (e.g., CEMAT_MAIN, MEAS_MON, MOT_SPED)
 ├── <User CFC #1>
 ├── <User CFC #2>
 ├── ...
 ├── <User CFC #N>
 └── OB1_END             ← CEMAT system chart task 2

Every chart inside the OB1 sequence is identified by a name (the CFC chart name) and a runtime group. Drag-and-drop is the only supported way to reorder them inside the runtime editor – do not edit *.db sequence lists manually.

4.3 Identify the Misplaced Charts

  1. Click on each chart. The Properties pane in the lower half shows the chart's OB, Task, Run-time group and Install position.
  2. Flag any chart whose OB is not OB1. These violate Fault 68.
  3. Inside OB1, flag any chart whose install position index is greater than the index of OB1_END. These violate Fault 65.
  4. Right-click → Go to chart to open the offending CFC and verify it is genuinely a CEMAT application block (e.g., MOTOR_3PH, VALVE_MOT, CONVEYOR, DOSING).

4.4 Reorder the Runtime Groups

  1. Select all charts that belong in OB1. Use Shift+Click for contiguous blocks, Ctrl+Click for individual additions.
  2. Drag the selection to the position between OB1_START (top) and OB1_END (bottom). The runtime editor will display a blue insertion bar.
  3. Drop the selection. The new install position is recorded in the chart header (comment field // Position N).
  4. For charts currently installed in another OB (e.g., OB35), cut them with Ctrl+X, switch to the OB1 task in the tree, and paste at the correct location.
  5. Repeat until the entire OB1 subtree is ordered as: OB1_START → CEMAT system FBs → User FBs → OB1_END.

4.5 Compile and Download the S7 Program

  1. Close the Runtime Editor. CFC will prompt to save the run sequence – choose Yes.
  2. In SIMATIC Manager, right-click the S7 ProgramCompile and Download Objects (or Compile first, then Download). Select:
    • Charts: All (complete re-compile)
    • Target file: AS01 → AS
    • Mode: Stop CPU (mandatory because you are modifying the OB1 time stamp)
  3. After the download, perform a CPU → Cold Restart (or Restart if the plant cannot tolerate a full re-initialization of the drives).
OB1 task period: in CEMAT V8.2 the OB1 is left at the default 100 ms. If you must use a faster cycle, install the time-driven parts into OB32/OB35 and verify with the Check Tool – Fault 68 will still appear because the system contract requires all CEMAT blocks in OB1. Use OB1 alone for CEMAT; reserve OB32/OB35 for non-CEMAT, deterministic, time-stamped tasks such as closed-loop control.

5. Verification Procedure

  1. Open the CEMAT Check Tool from the SIMATIC Manager (Options → CEMAT → Check Tool).
  2. Click Check All. The result pane lists every fault and warning. Confirm that rows 65 and 68 are no longer present.
  3. Save the log: File → Save As → Check_Log_YYYYMMDD.txt. Archive this file in the project documentation folder – Siemens auditors and customer-acceptance reviewers expect the log to be empty or annotated.
  4. Run an AS-OS connection test: in WinCC Explorer, right-click the OS server → Connection Status. All variables should be updated (green) within 2 seconds.
  5. On the HMI, force one motor start command and confirm the message time stamp and the interlock bit refresh every ~100 ms (i.e., once per OB1 cycle). Use the Trend view or the Online CFC block statistics.
  6. Check CPU diagnostic buffer for OB1 execution time. It should be < 60 % of the OB1 period (default 100 ms → < 60 ms). If the runtime is too high, redistribute non-CEMAT logic to OB35 or split OB1 into additional tasks.

6. Field-Proven Tips and Edge Cases

Edge Case Symptom Remedy
OB1_END accidentally deleted Fault 65 + warning "OB1_END not found" Re-import the CEMAT system chart from the CEMAT template project (cem_v82_template). The sentinels are regenerated on the next CFC compile.
Drive block installed in OB35 for "faster response" Fault 68 + intermittent latching faults on the HMI Move the chart back to OB1. If the application truly needs a faster loop, change the OB1 period (CPU properties → Cyclic interrupts) or duplicate the CEMAT block as a non-CEMAT auxiliary in OB35, but accept the Fault 68 override and document it.
Charts from multiple AS stations compiled into the same OB1 Fault 68 + AS connection loss CEMAT only supports single-AS-per-OB1. Distribute the FBs to their respective AS, or use S7 routes / PROFINET IO to communicate between ASes.
User chart is read-only (locked by another engineer) Drag-and-drop silently rejected Right-click the chart → Release in the CFC and re-try. Always log out from the multi-user server first.
Fault 65 reappears after every download The runtime editor is saving the new order, but the AS retains the old image Perform CPU memory reset (MRES) and a full download, then cold restart. This is required once when the OB1 install positions are renumbered.

7. Related CEMAT Check Tool Faults Worth Knowing

Fault # Topic Relation to Faults 65 / 68
60 CEMAT license missing Independent; must be cleared first.
61 CEMAT template chart not in master data library Independent; install CEMAT V8.2 from the supplied DVD.
66 Time stamping not configured for OB1 Often appears together with Fault 65; set "Time stamp" = OB1 in CPU properties.
67 OS server reference mismatch Address through WinCC Explorer after the OB1 fix.
69 CEMAT system chart not compiled in OB1 Companion of Fault 65 – the system chart must sit before OB1_END.

8. Architectural Constraints and Why the Rule Exists

The OB1 task is the only free cyclic organization block guaranteed by the S7-300/400 firmware to be re-armed automatically without an explicit OB1_BEGIN / OB1_END bracket (in STEP 7 Classic, the brackets are user-defined runtime groups). For S7-300/400 documentation, see Cyclic program (OB 1) (S7-300, S7-400) – STEP 7 Reference. CEMAT V8.2 leverages this single-cycle guarantee so that:

  • Authorization tags are sampled once per tick.
  • Motor run-time accumulators (a critical regulatory value in cement mills) are incremented monotonically without cross-OB jitter.
  • The CEMAT_ACK acknowledgement block always sees the same instance DBs as the originating MSG_CEM.
  • Maintenance personnel can reason about cause-and-effect without needing a multi-rate timing diagram.

Splitting CEMAT blocks across OB1 and OB35 – even with identical 100 ms periods – breaks the monotonic guarantee because the OB35 interrupt is not phase-locked to OB1; OB1 will be preempted by OB35, and the interlock evaluation order inside the same logical "cycle" becomes non-deterministic.

9. Best-Practice Checklist for CEMAT Project Sign-Off

  1. Run the CEMAT Check Tool as the last step before customer acceptance. Save the log with a hash (e.g., SHA-256) in the project archive.
  2. Document every accepted fault in the Residual Risk Register, with operator and customer signature.
  3. Lock the CFC chart naming convention (e.g., AREA_UNIT_FUNCTION). Do not rename a chart after it has been added to the runtime sequence – the runtime editor uses the chart name as the install handle.
  4. Reserve the next engineering release for re-checking the runtime sequence: every new chart added to OB1 has the potential to push an existing chart past OB1_END and silently resurrect Fault 65.
  5. Train the I&C team on the difference between runtime groups and tasks. A runtime group is the install bucket inside a task; the Check Tool inspects the task.

10. Frequently Asked Questions

What exactly triggers CEMAT Check Tool Fault 65?

Fault 65 is raised when a user-defined CEMAT CFC chart is installed in OB1 at an install position index greater than that of OB1_END or after the last CEMAT system function block. Open the runtime sequence (CFC → Edit → Open Run Sequence, Ctrl+F11) and drag every CEMAT application chart into the slot between OB1_START and OB1_END, then re-compile and re-download the S7 program.

What is the difference between Fault 65 and Fault 68 in CEMAT?

Fault 65 is a positioning error within OB1 (the chart exists in the correct OB but in the wrong slot), whereas Fault 68 is an OB-membership error (the chart is installed in a different OB such as OB35 or OB100). Fault 65 is fixed by reordering; Fault 68 is fixed by moving the chart into OB1 entirely. Both faults are reported by the CEMAT V8.2 Check Tool and must be cleared before sign-off.

Can I run CEMAT blocks in OB35 to get a faster control cycle?

The CEMAT V8.2 contract requires every CEMAT block to be installed in OB1. Placing them in OB35 will trip Fault 68 and introduce deterministic timing problems. If faster control is mandatory, shorten the OB1 scan period (CPU properties → Cyclic interrupts) or place the non-CEMAT portion in OB35, leaving all CEMAT application charts in OB1.

Do I have to MRES the CPU after reordering the runtime sequence?

Yes, after the first OB1 reordering you must perform a memory reset (MRES) and a full download followed by a cold restart. Subsequent reorders can use a normal download + restart as long as the install positions are not renumbered across the OB1_END sentinel. Always verify with the CEMAT Check Tool and inspect the CPU diagnostic buffer for OB1 execution time.

Which Siemens manual documents the OB1_START / OB1_END runtime groups?

The CEMAT V8.2 Engineering Manual, Chapter 7 (Runtime sequence / OB1), is the canonical reference. It is distributed as a PDF on the Siemens Industry Online Support portal: CEMAT V8.2 Engineering Manual (PDF). The general OB1 cyclic behavior of the S7 CPU is documented in Cyclic program (OB 1) (S7-300, S7-400) – STEP 7.

Back to blog