S7-1215C Analog Output Crash: Resolving Error 0x80001121

David Krause14 min read
S7-1200SiemensTroubleshooting
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

S7-1215C Analog Output Crash: Resolving Internal System Error 0x80001121

The CPU 1215C (catalog number 6ES7215-1AG40-0XB0, DC/DC/DC variant) drops the online connection and restarts in STOP with a blinking red ERROR LED whenever a value written from an HMI tag reaches the SCALE_X instruction driving analog output AQ0 or AQ1. TIA Portal reports Internal system error (error code: 0x800011210000008d), the diagnostics buffer logs IO fault events 6 and 7, and the only way to get the output to update is to enter a literal integer into the SCALE_X input and re-download the project with the CPU stopped. Power cycling temporarily clears the fault, but the next online write from the HMI repeats the crash. This article documents the three root causes that produce this signature, the correct hardware configuration, the correct SCALE_X parameterization, the burden-resistor math, and the firmware path that eliminates the bug.

Affected hardware and firmware: CPU 1215C DC/DC/DC (6ES7215-1AG40-0XB0) on firmware V3.0.0, V3.0.1, or V3.0.2 with TIA Portal V11 SP2 Update 5 / V12 SP1. Equivalent behavior has been observed on 6ES7215-1BG40-0XB0 (AC/DC/Rly) and on S7-1214C, S7-1215C V2.x variants configured with the same analog output settings.

Problem Signature

Document the failure mode before changing anything in the project. Capture the exact symptom so you can verify the fix later:

  • CPU enters STOP after a runtime write to the analog output from an HMI tag, an OPC UA client, or another PLC tag.
  • ERROR LED blinks red at ~2 Hz; RUN LED is off; MAINT LED may blink yellow on V3.0.x firmware.
  • TIA Portal online diagnostics show Internal system error (error code: 0x80001121...) with a trailing module-specific code (commonly 008d, 0091, or 00a5).
  • Diagnostics buffer events 6 and 7 are logged immediately before the STOP transition, both pointing at the same HW identifier (typically HW ID 271 for AQ0 or HW ID 272 for AQ1 on CPU 1215C).
  • A literal integer typed into the SCALE_X input and downloaded with the CPU in STOP works correctly until the next online tag write.
  • Power cycling the CPU clears the fault temporarily; the next online write to AQ0/AQ1 reproduces the STOP.

Root Cause Analysis

Three independent root causes converge to produce the crash. All three must be addressed; fixing only one leaves the failure mode intermittent.

Cause 1: Output configured as voltage instead of current

The on-board analog outputs of the S7-1215C are current-only. TIA Portal hardware catalog entries for the 1215C list only "Current" as the output type. When the project was originally created or migrated from a 1214C or from an older TIA Portal version, the analog output may be set to "Voltage" (or "Off") with a 0 to 10 V range. The PLC accepts the download because the configuration parser is permissive, but when the output driver tries to source voltage into a 500 Ω burden while the firmware expects a current loop, the driver detects an out-of-compliance condition, asserts the analog module fault line, and the CPU watchdog escalates the IO fault to a fatal internal error in the 0x80001121 family.

Cause 2: SCALE_X parameter set uses the bipolar integer range

The SCALE_X instruction maps a REAL input to the analog output's raw integer representation. For an S7-1215C current output, the raw integer range is unipolar: 0 = 0 mA, 27648 = 20 mA. Passing 13824 as the SCALE_X MAX value (or as the nominal target) corresponds to the midpoint of the bipolar range -27648 to +27648 used by the -10 V to +10 V analog inputs. The output therefore clips at 10 mA. With a 500 Ω burden, 10 mA yields 5 V, which is the symptom reported in 0-10 V dimmer applications where a 4-20 mA to 0-10 V converter only reaches 5 V on the dimmer's input.

Cause 3: Firmware V3.0.x analog output online-update defect

S7-1200 firmware V3.0.0, V3.0.1, and V3.0.2 contain a defect in the analog output update task that corrupts the IO update word when the source tag is written while the CPU is in RUN. The defect is triggered specifically by online writes (HMI, OPC, or PLC tag change) and is masked when the value is part of the initial download. The internal error code 0x80001121...008d is the firmware's watchdog response when it detects the corrupted IO shadow. Siemens fixed this defect in firmware V4.0 and later releases; the relevant release notes are documented in the S7-1200 firmware V4.0 release entry on the Siemens support portal.

S7-1215C Analog Output Hardware Specifications

The DC/DC/DC variant of the CPU 1215C has two on-board analog outputs (AQ0, AQ1) with the following published specifications. These numbers are taken from the SIMATIC S7-1200 Programmable Controller system manual and apply to all firmware versions.

Parameter Value
Output type Current, single-ended
Output range 0 to 20 mA
Full-scale raw integer 0 to 27648
Maximum burden (load) 500 Ω
Resolution 12 bits
LSB weight 4.74 µA typical (20 mA / 4096)
Accuracy at 25 °C ±0.5 % of full scale
Temperature drift ±0.01 %/°C
Cable length, shielded 100 m maximum
Diagnostic support Wire break (at > 0 mA setpoint), overflow, underflow
The analog outputs of the 1215C are not short-circuit-proof to ground in the same way as a voltage output. Connecting a 0-10 V dimmer input directly across AQ+ and AQ- without a current-limiting burden damages the output stage and can produce the same crash signature.

Correct Hardware Configuration in TIA Portal

Configure both on-board analog outputs as current outputs before downloading the project. This must match the physical wiring and the SCALE_X block.

  1. Open the project in TIA Portal and expand Device configuration > CPU 1215C > Properties > Analog outputs.
  2. For output AQ0, set Output type = Current (the only option shown for 1215C).
  3. Confirm Range = 0 to 20 mA. Do not select 4-20 mA unless the field device requires the live-zero offset.
  4. Set Diagnostics = Wire break if the load is < 500 Ω and the wiring can be physically disconnected for service.
  5. Repeat for AQ1.
  6. Compile the hardware configuration (Project tree > right-click CPU > Compile > Hardware configuration).
  7. Download the configuration to the CPU in STOP mode.

SCALE_X Parameter Mapping

SCALE_X maps a REAL input range to the raw integer representation of an analog I/O. The MAX parameter must match the nominal full scale of the analog output (27648 for the S7-1215C 0-20 mA output), not a sub-range midpoint.

SCALE_X parameter Tag Data type Correct value Incorrect value (root cause)
MIN "HMI_percent_min" REAL 0.0 0.0
MAX "HMI_percent_max" REAL 100.0 13824.0 (incorrect - this is bipolar midpoint)
VALUE "percentage_real" REAL 0.0 - 100.0 —
OUT (RET_VAL) "AQ_raw" INT 0 - 27648 0 - 13824 (clips at 10 mA)

The conversion chain from the HMI integer to the raw analog output word should be:

// HMI integer 0..100 (percent)
"hmi_percent_int" : INT  := 0;          // HMI tag
// CONV to REAL
"hmi_percent_real" : REAL := REAL("hmi_percent_int");
// SCALE_X to raw 0..27648
"AQ_raw" : INT;
SCALE_X(MIN := 0.0,
        MAX := 100.0,
        VALUE := "hmi_percent_real",
        RET_VAL => "AQ_raw");

Map the SCALE_X output (AQ_raw) to the analog output peripheral word using the %QW address assigned by the hardware configuration. For the on-board AQ0 of the CPU 1215C, this is typically %QW80; for AQ1 it is %QW82. The actual addresses are visible under Device view > Analog outputs > I/O addresses.

Wiring a Current Output for a 0-10 V Field Device

Because the S7-1215C outputs current, you must convert to voltage at the field device or via an external burden. Choose the burden R based on the field device's required voltage and the maximum current you intend to source:

V = I × R   →   R = V_full_scale / I_full_scale

Target voltage Source current (full scale) Burden R Power dissipation at full scale
0 - 5 V 0 - 20 mA 250 Ω 0.10 W (use 0.25 W resistor)
0 - 10 V 0 - 20 mA 500 Ω 0.20 W (use 0.5 W resistor)
0 - 10 V 4 - 20 mA 625 Ω 0.20 W (use 0.5 W resistor)
The maximum burden allowed by the S7-1215C is 500 Ω at 20 mA. A 625 Ω burden is only valid if the field device limits the loop current to less than 16 mA. For a true 0-10 V signal from a current output, either use the on-board 500 Ω burden at full 20 mA or install a dedicated 4-20 mA-to-0-10 V signal conditioner such as a Phoenix Contact MINI MCR or a WAGO 857 series converter. See the SIMATIC S7-1200 system manual, chapter on analog wiring.

If the field device is a 0-10 V dimmer with an input impedance greater than 10 kΩ, connect a precision 500 Ω, 0.1 % burden between AQ+ and AQ- at the PLC terminals, then run the resulting 0-10 V signal to the dimmer's + and - input. This is the configuration that the original incident used.

Diagnostics Buffer Event IDs 6 and 7

The S7-1200 diagnostics buffer uses standardized event IDs for IO faults. On a 1215C with the analog output fault, the two events that appear immediately before the STOP transition are:

Event ID Meaning Cause on AQ0/AQ1 Action
6 IO access error - fault during read/write of the I/O Hardware ID 271 (AQ0) or 272 (AQ1) returned an error status; output driver detected out-of-compliance Check output type configuration (must be Current), check burden value, check wiring for short or open
7 IO fault - module-level error, fault LED on the affected IO is set Analog output driver entered fault state; CPU watchdog records the fault and escalates Power cycle, correct wiring, re-download hardware configuration

Open the diagnostics buffer in TIA Portal via Online > Diagnostics > Diagnostics buffer. Filter on Event ID 6 and Event ID 7 to confirm that the fault is anchored at the analog output HW ID and not at a remote module on the right-side SM bus.

Firmware Considerations and Recovery Procedure

Firmware V3.0.0 through V3.0.2 of the CPU 1215C are the most affected. The following procedure recovers a unit in the field without re-flashing in place, then documents the upgrade path for a permanent fix.

Field recovery (no firmware change)

  1. Power down the CPU 1215C (remove 24 V for at least 10 s).
  2. Power up; the CPU returns to RUN if the project is valid and the analog output fault is no longer present.
  3. Open TIA Portal online, force the analog output to a known-good value via the watch table, and verify the diagnostics buffer no longer logs events 6 and 7.
  4. If the fault re-occurs on the next online write, proceed to firmware upgrade.

Permanent fix via firmware upgrade

  1. Open TIA Portal and select the CPU in the project tree.
  2. Choose Online > Accessible nodes and read the current firmware version.
  3. Download the latest S7-1200 firmware from the Siemens support portal entry for the CPU 1215C. The current production line for the 1215C is firmware V4.6.x; V4.5 and V4.6 both contain the analog output online-write fix.
  4. Perform the firmware update online (CPU in RUN-P) or offline (CPU in STOP). The CPU retains the project during a firmware update.
  5. After the update, power cycle once and download the hardware configuration to clear any cached IO shadow.
  6. Repeat the online write test; the 0x80001121 fault must no longer occur.
Project compatibility: TIA Portal V11 SP2 Update 5 cannot load projects created in TIA Portal V13 or later. If you need to upgrade the project to support firmware V4.x, first migrate the project to TIA Portal V13 SP1 or V14 SP1 using the project migration wizard. The PLC program and HMI tags are preserved; only the hardware catalog entry changes.

Step-by-Step Resolution Procedure

Apply the following sequence to resolve the crash on a CPU 1215C reporting error 0x80001121:

  1. Capture the diagnostics buffer. TIA Portal > Online > Diagnostics > Diagnostics buffer. Export the buffer as a CSV and confirm events 6 and 7 point at HW ID 271 (AQ0) or 272 (AQ1).
  2. Verify hardware configuration. Device view > CPU 1215C > Analog outputs > AQ0 and AQ1. Output type must be Current, range 0 to 20 mA. If "Voltage" or "Off" is shown, change to Current and compile.
  3. Verify SCALE_X parameters. Open the SCALE_X instance. MIN must be 0.0, MAX must be 100.0 (or whatever full-scale REAL corresponds to the raw 27648), and the OUT (RET_VAL) tag must be INT.
  4. Verify the HMI tag type. The HMI tag connected to the percentage input must be INT (0-100), not REAL and not WORD. A type mismatch forces an implicit conversion that can land on an out-of-range REAL.
  5. Verify the burden resistor. Measure resistance between AQ+ and AQ- with the PLC powered down. For a 0-10 V output at 20 mA full scale, R must be 500 Ω ± 1 %.
  6. Verify wiring. AQ+ and AQ- must be connected only to the burden and from there to the field device input. No shield ground, no chassis ground on the AQ- terminal.
  7. Stop the CPU, download the corrected configuration. Use the TIA Portal "Download to device" with the CPU in STOP.
  8. Start the CPU in RUN.
  9. Test online write. Use a watch table to write 50.0 to the SCALE_X VALUE input. The output should read 10 mA (5 V across the 500 Ω burden) and the diagnostics buffer must not log events 6 or 7.
  10. Test HMI write. From the HMI, change the percentage tag. Repeat five times. The output must follow without a STOP transition.
  11. Upgrade firmware. Repeat step 9 and 10 after the firmware upgrade to V4.5 or later to confirm the firmware defect is also removed.

Verification and Validation

After applying the fix, run the following validation checks. All must pass before returning the system to production.

Check Expected result Method
Diagnostics buffer after 10 online writes No event 6 or 7 at HW ID 271/272 TIA Portal > Diagnostics buffer > filter on event 6 and 7
Output at SCALE_X VALUE = 0.0 0 mA, 0.000 V across burden DMM on burden, mA in series
Output at SCALE_X VALUE = 50.0 10.000 mA, 5.000 V ± 0.025 V DMM on burden, mA in series
Output at SCALE_X VALUE = 100.0 20.000 mA, 10.000 V ± 0.050 V DMM on burden, mA in series
ERROR LED after 100 HMI-driven changes Off (steady green RUN) Visual inspection or read LED status via GETIO
Analog output driver status word Bit 0 (good) = 1, all fault bits = 0 Read %QW status word in watch table

Troubleshooting Matrix

Symptom Likely cause Fix
Output reads 0-5 V instead of 0-10 V at full scale SCALE_X MAX = 13824 (bipolar midpoint) Change MAX to 100.0 and verify RET_VAL range 0-27648
Output never updates from online writes; literal values work Firmware V3.0.x online-write defect Upgrade firmware to V4.5 or later
CPU STOPs immediately on first write to AQ0 Output configured as Voltage, burden pulls compliance Set output type to Current, 0-20 mA, recompile, download
Diagnostics buffer shows event 7 at HW ID 271 with "wire break" Burden open or field device disconnected at > 0 mA setpoint Check wiring, enable wire-break diagnostics only if required by maintenance
Output drifts > 0.5 % at 25 °C Burden tolerance > 1 %, or shared ground loop Use 0.1 % burden, separate AQ- from chassis ground
HMI shows value but PLC AQ_raw stays 0 HMI tag is WORD, CONV to REAL drops upper byte Change HMI tag to INT, refresh HMI compilation
Official references: SIMATIC S7-1200 Programmable Controller System Manual (Siemens support entry 109751826), S7-1200 firmware V4.0 release notes (entry 109760181), SCALE_X / NORM_X function block documentation in the S7-1200 programming manual (entry 109751826 chapter on conversion operations), and the CPU 1215C product page (entry 6ES7215-1AG40-0XB0).

FAQ

Why does my S7-1215C analog output only reach 5 V when I want 0-10 V?

The 1215C outputs 0-20 mA, not voltage. If SCALE_X is set with MAX = 13824 (the bipolar midpoint) the output clips at 10 mA, and a 500 Ω burden then yields only 5 V. Change SCALE_X MAX to 100.0 (or whatever REAL corresponds to raw 27648) so the output reaches 20 mA and the burden yields the full 10 V.

Is the S7-1215C analog output current or voltage?

The on-board AQ0 and AQ1 of the 1215C DC/DC/DC (6ES7215-1AG40-0XB0) are 0-20 mA current outputs only. They cannot be configured as voltage outputs. To produce 0-10 V, install a 500 Ω burden resistor across the output or use an external 4-20 mA to 0-10 V signal conditioner.

What does internal error 0x80001121 on the S7-1200 mean?

0x80001121 is the firmware's escalation code when the CPU watchdog detects a corrupted analog IO shadow or an IO driver fault. The trailing sub-code (008d, 0091, 00a5) identifies the specific IO and the failure mode. On the 1215C it almost always points at AQ0 (HW ID 271) or AQ1 (HW ID 272), and is fixed by correcting the hardware configuration (output type = Current) and upgrading firmware to V4.5 or later.

How do I clear the 0x80001121 fault without re-flashing?

Power cycle the CPU for at least 10 s, correct the hardware configuration to declare AQ0/AQ1 as 0-20 mA current, recompile, and download with the CPU in STOP. The fault clears immediately if the wiring and configuration match. For a permanent fix, upgrade firmware to V4.5 or later, which removes the V3.0.x online-write defect.

Can I use a 4-20 mA configuration on the 1215C instead of 0-20 mA?

Yes, if the field device requires a live-zero. Select output type = Current, range = 4-20 mA in the device configuration, and adjust SCALE_X so that 0 % maps to raw 0 (which the firmware remaps to 4 mA) and 100 % maps to raw 27648 (which the firmware remaps to 20 mA). For a 0-10 V field device from a 4-20 mA output, the burden becomes R = V / (I_max - 4 mA) for the live-zero portion; in practice use a 625 Ω burden with a 16 mA full-scale current to stay within the 500 Ω hardware limit.

Back to blog