Resolving SIMOTION F360:B180 Technological Alarm Buffer Overflow

David Krause10 min read
Motion ControlSiemensTroubleshooting
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

Resolving SIMOTION F360:B180 Technological Alarm Buffer Overflow on SIMOTION D

SIMOTION motion controllers (SCOUT / TIA-based engineering) emit a specific diagnostic event, 16# F360:B180, when the runtime can no longer queue technological alarms and warnings. The diagnostic buffer saturates because alarms are being created and acknowledged faster than the runtime can drain them, and the controller responds by transitioning to STOP. This reference walks through the exact decode of the event, the underlying anti-pattern that generates it, and the corrective engineering pattern required on a SINAMICS DCM drive system connected over PROFIBUS.

1. Problem Definition

Field Value
Event ID 16# F360:B180
Event Name Message buffer overflow with technological alarms
Event Class Incoming event (technology / drive alarm)
Reaction SIMOTION CPU transitions to STOP
Additional Info 1 (Z1) 16# 0004 0000
Additional Info 2 16# 0000
Additional Info 3 16# 0000
Additional Info 4 16# 0000
Additional Info 5 16# 0000
Typical Trigger Fast alarm acknowledge/raise loop in TecFault task or synchronous PROFIBUS faults from DCM drives

The diagnostic buffer is the SIMOTION equivalent of the S7-1500 diagnostic event queue referenced in the SIMATIC ET 200AL equipment manual: when a new diagnostic event cannot be queued because the buffer is full, the runtime escalates and may shut down the controller.

2. Decoding Z1 / Additional Information

SIMOTION uses the German term Zusatzinformation (additional information), abbreviated Z1 through Z5 in the help system and trace dumps. They appear in:

  • SCOUT diagnostic buffer (online → Target system → Diagnostic buffer)
  • The diagnostic.xml file generated by the SIMOTION device trace
  • The online help for the event ID (F1 on the entry)
  • System event logs exported with Save service data

For 16# F360:B180, the relevant Z field is Z1 (Additional Information 1). Reading it as a 32-bit word gives:

Z1 = 16# 0004 0000
         ^^^^
         <--- relevant byte-pair  (Bits 16-31)

The upper half-word contains the qualitative reason code. The values currently documented for the F360:B180 Z1 field are:

Z1 Code Meaning Typical Cause
16# 0001 Reserved / internal n/a
16# 0002 Too many alarms in the technological alarm buffer Fault storm from a single axis / drive
16# 0004 Alarms are created and acknowledged too fast Acknowledgment loop in TecFault task; alarm returned immediately
16# 0008 Alarm buffer full while alarms are pending Acknowledgment stopped but pending alarms not cleared

A Z1 of 0004 is the smoking gun: the user program is creating and clearing technological alarms in a tight cycle inside the TecFault task.

3. Root Cause Analysis

SIMOTION organizes execution into a hierarchy of tasks. The two tasks relevant to alarm handling are:

Task Priority / Cycle Allowed Operations Forbidden Operations
MotionTask (BackgroundTask / IPOSynchronousTask) Low to high, deterministic Acknowledge technological alarms, call _mc_reset, motion commands Long blocking calls
TecFault Task Triggered only on a technological fault Evaluate alarm state, read diagnostic data Acknowledging the alarm that triggered the task
Synchronous Task (IPO / IPO2) IPO cycle (e.g., 4 ms) Position / velocity setpoint processing Acknowledging alarms
TimeFault Task Triggered on time faults Diagnostics only Fault reset

Acknowledging the very alarm that triggered the TecFault task creates a re-entrant fault cycle:

  1. DCM drive raises alarm (e.g., 20005 Torque/Force Limit Exceeded) over PROFIBUS.
  2. SIMOTION runtime queues the alarm in the technological alarm buffer.
  3. TecFault task fires; user program executes _mc_reset / acknowledgeAlarm.
  4. Acknowledgment empties the alarm buffer slot and immediately re-queues the same alarm (because the underlying drive state has not changed — OFF3 was just commanded).
  5. Within the same TecFault execution the alarm is queued again, then acknowledged again, repeatedly, faster than the buffer can drain.
  6. Buffer overflow event F360:B180 is raised with Z1=0004.
  7. Runtime enforces the configured STOP reaction and brings the CPU down.

4. The TecFault Acknowledge Anti-Pattern

The common code that produces this failure looks like the example below. It is structurally identical to the pattern documented as invalid in the SIMOTION SCOUT programming manual:

// TecFaultTask - INVALID PATTERN
IF (alarmIsPending(20005)) THEN
    _mc_reset(axis := DCM_Axis_1);   // WRONG: in TecFault context
    _mc_power(axis := DCM_Axis_1, enable := TRUE);
END_IF;
IF (alarmIsPending(20005)) THEN
    _mc_reset(axis := DCM_Axis_2);   // WRONG: re-entrant
    _mc_power(axis := DCM_Axis_2, enable := TRUE);
END_IF;
// ... repeated for 3 more axes

Why this fails:

  • The TecFault task runs once per pending technological alarm; acknowledging the same alarm inside it triggers another TecFault firing for the same axis.
  • Resetting and re-powering inside TecFault does not give the DCM time to clear the underlying PROFIdrive state word bits (e.g., bit 3 Fault present, bit 7 Warning present).
  • The OFF3 (fast stop) you commanded through the drive direct word is racing with the SIMOTION enabling block, generating repeated 20005 entries.
Safety note: Acknowledging a drive-side fault inside the TecFault task on the same controller that raised it bypasses the normal motion abort handshake. On machines with safety-integrated SIMOTION D (F-CPU option), this anti-pattern can mask a real safety-relevant fault. Always route fault reset through a deterministic MotionTask or BackgroundTask.

5. The Correct Acknowledge Pattern

Move the acknowledgment out of TecFault and into a MotionTask (preferred) or BackgroundTask. The TecFault task should only observe and set flags.

// TecFaultTask - VALID PATTERN
IF (alarmIsPending(20005, DCM_Axis_1)) THEN
    gDcmAxis1ResetRequest := TRUE;
END_IF;
IF (alarmIsPending(20005, DCM_Axis_2)) THEN
    gDcmAxis2ResetRequest := TRUE;
END_IF;
// (continue for axes 3 and 4)

// BackgroundTask - VALID PATTERN
IF (gDcmAxis1ResetRequest) THEN
    gDcmAxis1ResetRequest := FALSE;
    _mc_reset(axis := DCM_Axis_1);
    _mc_power(axis := DCM_Axis_1, enable := TRUE);
END_IF;
IF (gDcmAxis2ResetRequest) THEN
    gDcmAxis2ResetRequest := FALSE;
    _mc_reset(axis := DCM_Axis_2);
    _mc_power(axis := DCM_Axis_2, enable := TRUE);
END_IF;
// (continue for axes 3 and 4)

Why this works:

  • The TecFault task fires once, raises the flag, and returns — the runtime can drain the alarm buffer.
  • The BackgroundTask runs at its configured cycle (e.g., 10 ms), giving the DCM drive a full PROFIBUS cycle to actually clear the fault bit before reset is re-attempted.
  • Each axis gets one reset attempt per BackgroundTask pass, eliminating the create-acknowledge loop.

6. Resolving the OFF3 / Enabling Block Conflict on DCM Drives

Driving OFF3 directly into the SINAMICS DCM control word while the SIMOTION _mc_power enabling block still holds the axis in Operation Enable produces a continuous 20005 (Torque/Force Limit Exceeded) storm. Both sources are commanding motion behavior:

Source Action Result on DCM
SIMOTION _mc_power Holds enable; velocity setpoint from SIMOTION Drive in Operation Enable, following setpoint
Direct OFF3 (STW1 bit 2) Fast stop ramp via drive internal profile Drive brakes itself; setpoint still demanded
Combined Drive decelerates; SIMOTION keeps pushing setpoint Torque limit exceeded → alarm 20005

Correct approaches (pick exactly one, never combine):

  1. Drive OFF3 through the SIMOTION axis object: use the standard _mc_stop with stopMode = EMERGENCY_STOP. SIMOTION sets OFF3, ramps the setpoint, and clears the enabling in a coordinated handshake.
  2. Drive OFF3 from the safety circuit only: route OFF3 via PROFIsafe or hardwired F-DI to the drive terminals; ensure the SIMOTION _mc_power enable is dropped simultaneously through a separate _mc_power(enable := FALSE) in the safety-related task.
  3. Avoid direct OFF3 over PROFIBUS to a SIMOTION-controlled axis: this is the failure pattern in the source. SIMOTION expects to be the master of the enable state machine.

Recommended MCC / ST snippet for a SIMOTION-driven DCM axis fast stop:

// FastStop input from HMI or safety circuit
IF (gFastStopRequest) AND (NOT gFastStopActive) THEN
    gFastStopActive := TRUE;
    // Disable power first so SIMOTION stops demanding torque
    _mc_power(axis := DCM_Axis_1, enable := FALSE);
    // Then command drive-side fast stop ramp
    _mc_stop(axis := DCM_Axis_1, 
             deceleration := 5000.0, 
             jerk := 10000.0);
END_IF;

IF (axisState = STANDSTILL) AND (gFastStopActive) THEN
    gFastStopActive := FALSE;
END_IF;

7. Alarm Masking Strategy for 20005 and Similar

Alarm 20005 (Torque/Force Limit Exceeded) cannot be globally masked off in SIMOTION because it carries diagnostic information that the runtime uses to enforce the axis state machine. What can be done:

Action Where Effect
Alarm masking (filter level) Axis configuration → Alarms tab Suppress display in HMI; alarm still buffered
Alarm priority reduction Alarm configuration in SCOUT Downgrade from FAULT to WARNING
Event suppression (TecFault task ignore) Program the TecFault task to skip the alarm Alarm stays in buffer; TecFault task does not act
Reaction change Alarm properties → Reaction From STOP to NONE / DECODE_STOP / FOLLOWING_STOP
Changing the reaction of 20005 from STOP to NONE is acceptable on non-safety axes if the underlying drive limit has its own reaction. On safety-related axes keep STOP and fix the upstream cause instead.

8. Buffer Sizing and Configuration Changes

The technological alarm buffer is sized by the alarm queue depth in the SIMOTION device configuration:

Parameter Path Default Recommended for DCM-heavy systems
Alarm queue depth (alarm buffer) Device configuration → Settings → Alarm handling 64 entries 256 entries minimum
TecFault task priority Task configuration → TecFault Higher than IPO Highest synchronous task priority
BackgroundTask cycle Task configuration → BackgroundTask 10 ms Match PROFIBUS DP cycle (typically 4-8 ms)
IPO cycle Task configuration → IPO 4 ms Match DCM PROFIdrive servo cycle

If you must keep the default buffer size, ensure the acknowledged-alarm rate stays below queue depth / PROFIBUS cycle — e.g., 64 entries / 4 ms = 16,000 acknowledgments per second maximum sustained, which a re-entrant TecFault loop easily exceeds.

9. Verification Procedure

  1. Connect SCOUT online to the SIMOTION D controller.
  2. Open Target system → Diagnostic buffer and clear it.
  3. Trigger the previously failing scenario (OFF3 with enabling active).
  4. Confirm F360:B180 does not appear in the diagnostic buffer within 60 s.
  5. Open Task trace and confirm TecFault fires only once per drive alarm, not in a continuous loop.
  6. Open Alarm history and confirm 20005 appears once per actual drive-side event, not in a tight burst.
  7. Confirm SIMOTION remains in RUN after the test scenario.
  8. Force a stop / start cycle, repeat the scenario five times, confirm zero F360:B180 entries.

10. Troubleshooting Matrix

Symptom Z1 Code Likely Cause First Action
Buffer overflow at startup only 0002 DCM drive returns all stored faults on PROFIBUS connection Clear DCM fault memory before each online connection
Buffer overflow during steady-state 0004 Acknowledge loop in TecFault task Move _mc_reset out of TecFault into BackgroundTask
Buffer overflow when OFF3 commanded 0004 OFF3 racing with _mc_power enabling Route fast stop through _mc_stop; do not drive OFF3 directly to STW1 while SIMOTION is enabled
Buffer overflow on emergency stop 0008 Acknowledgment stopped but pending alarms not cleared Use resetAllAlarms in BackgroundTask after stop completion
20005 floods diagnostic buffer n/a Torque limit exceeded by racing enables Coordinate _mc_power with drive-side enable; check DCM torque limits (p1520, p1521)
F360:B180 after firmware upgrade variable Default alarm buffer smaller in new firmware Increase alarm queue depth; review release notes

11. Related Event IDs to Watch

Event ID Meaning Action
16# F360:B180 Message buffer overflow with technological alarms This article
16# F360:B181 Message buffer overflow with technological warnings Same fix pattern; warnings usually harmless but can flood
16# F360:B182 Message buffer overflow on system side Check BackgroundTask; reduce logging
16# F360:0001 TecFault task entered (informational) Normal during a drive-side fault
16# 20005 Torque/Force limit reached (DCM via PROFIdrive) Coordinate enables; check torque limits
16# 20003 Following error (position lag) Tune Kv / check mechanical load

What is Z1 in a SIMOTION diagnostic event?

Z1 is short for the German Zusatzinformation 1, the first additional information field of a SIMOTION event. It is a 32-bit word found in the SCOUT diagnostic buffer, the diagnostic.xml export, and the online help (F1) for the event ID. For F360:B180, Z1 = 16#0004 0000 means "alarms are created and acknowledged too fast".

Why does my SIMOTION CPU go to STOP after technological alarms?

The runtime raises F360:B180 when the technological alarm buffer overflows. The configured alarm reaction (default STOP on the CPU itself) is then executed, bringing the controller down. This is a protective measure — the runtime cannot trust the state of any axis when the alarm history is lost.

Can I acknowledge an alarm inside the TecFault task?

No. Acknowledging the same alarm that triggered the TecFault task creates a re-entrant fault loop and overflows the buffer with Z1 = 16#0004. Set a flag in TecFault and acknowledge the alarm from a BackgroundTask or MotionTask instead.

How do I implement a fast stop on a SIMOTION-controlled SINAMICS DCM?

Use _mc_stop with EMERGENCY_STOP mode and let SIMOTION coordinate the enable state machine. Do not write OFF3 (STW1 bit 2) directly to the DCM control word while _mc_power is still enabled — the two will race and produce a 20005 storm.

Can I mask alarm 20005 to stop the buffer overflow?

Not entirely — 20005 carries state-machine information. You can change its reaction from STOP to NONE, lower its priority, or filter it from the TecFault task, but on safety-related axes the correct fix is to eliminate the upstream racing-enable condition. Adjusting DCM torque limits (p1520, p1521) is often the most durable fix.

Back to blog