Problem Overview
A common field failure on Siemens SIMATIC S7-300 CPU 313C stations with the integrated AI5/AO2 analog section (12-bit) is that the analog outputs read ~14.4 V DC on a multimeter even though the project is configured for 4–20 mA current output. The symptom is especially misleading because the value stays constant regardless of the scaled engineering value (0–100, 0–27648, or otherwise), and the same voltage can be measured on the second unused channel. Commissioning engineers familiar with voltage-output cards often conclude that the module is defective, when in fact the reading is the compliance voltage of an open current loop. This article walks through the full diagnostic chain, the FC106 UNSCALE implementation, and the field verification procedure that restores the expected 4–20 mA signal.
Affected Hardware and Order Numbers
The fault pattern applies to the CPUs that expose the integrated analog I/O labelled AI5/AO2. The most common variants and their MLFB (Siemens order) numbers are:
| CPU | Order Number (MLFB) | Analog I/O | Resolution |
|---|---|---|---|
| CPU 313C | 6ES7313-5BE01-0AB0 | AI5 / AO2 | 12 bit |
| CPU 313C-2 DP | 6ES7313-6CE01-0AB0 | AI5 / AO2 | 12 bit |
| CPU 313C-2 PtP | 6ES7313-6BF01-0AB0 | AI5 / AO2 | 12 bit |
| CPU 314C-2 DP | 6ES7314-6CF01-0AB0 | AI5 / AO2 | 12 bit |
| CPU 314C-2 PN/DP | 6ES7314-6EH04-0AB0 | AI5 / AO2 | 12 bit |
The analog behaviour, pinout, and FC106 scaling are identical across the C-CPU family. The troubleshooting procedure below is therefore equally valid for the OutputCPU314C instruction set documented in Easy Motion Control – OutputCPU314C (S7-300/S7-400).
Root Cause Analysis
A 4–20 mA analog output is a current regulator, not a voltage source. The output stage drives whatever voltage is necessary across the load in order to push the programmed current through it. The voltage it can produce is bounded by an internal compliance limit. When the loop is open (no load, or a load disconnected from a powered receiver), the regulator cannot establish the requested current, so the output simply rises to its compliance ceiling and stays there. On S7-300 C-CPU analog outputs that ceiling is approximately 14–16 V; the 14.4 V reading reported in the field is the regulator saturating against its own supply rail.
| Symptom | Most Likely Root Cause | Verification |
|---|---|---|
| Constant ~14.4 V on AO terminals | Open current loop – no load or receiver unpowered | Measure mA in series with a known resistor |
| Same voltage on unused second channel | Module has internal pull to compliance during fault | Disconnect both AO channels and read |
| Voltage tracks setpoint value | Output configured as voltage, not current | Re-check HW Config output type |
| Voltage present with no scaling call | Output defaults to mid-range or last value | Force PQW = 0 and re-measure |
CPU 313C Analog Output Specifications
The integrated AO2 channel block has the following relevant electrical characteristics (taken from the S7-300 Automation System – Module Data manual and the CPU 313C/314C device manuals):
| Parameter | Value |
|---|---|
| Number of channels | 2 (AO 0, AO 1) |
| Output ranges (current) | 0–20 mA, 4–20 mA |
| Output ranges (voltage) | ±10 V, 0–10 V |
| Resolution | 12 bit (incl. sign) |
| Nominal range raw value | 0 to +27648 (unipolar) / –27648 to +27648 (bipolar) |
| Conversion time per channel | 1 ms typical |
| Compliance voltage (current output) | ≥ 14 V typ., ≤ 16 V max |
| Max load at 20 mA | 500 Ω (at 24 V supply) |
| Short-circuit protection | Yes, electronic, thermal recovery |
| 24 V supply for analog section | Pin 31 (+), Pin 40 (–) |
| Galvanic isolation | Yes, to backplane |
The compliance limit is the maximum voltage the output can develop to drive current through the loop. When the loop resistance multiplied by the requested current exceeds this limit (V_load = I × R > V_compliance), the output saturates and the actual current is lower than commanded.
Pinout and Power Supply Wiring
The 40-pin front connector of the CPU 313C carries both the digital I/O and the analog section. The analog-relevant pins are:
| Pin | Signal | Function |
|---|---|---|
| 1 | DI+0 | Digital input 0 (24 V) |
| 2 | DI+1 | Digital input 1 (24 V) |
| … | … | Digital inputs / process images |
| 16 | DI+15 | Last digital input |
| 20 | 1L (sensor supply 24 V) | Internally fed from CPU; used as encoder/sensor 24 V source |
| 31 | ANA + (24 V) | 24 V supply for analog section, must come from external 24 V DC PSU |
| 32 | AI 0+ | Analog input 0, positive |
| 33 | AI 0– | Analog input 0, negative / ground |
| 34 | AI 1+ | Analog input 1, positive |
| 35 | AI 1– | Analog input 1, negative / ground |
| 40 | ANA – (M) | Analog ground reference, common with pin 31 reference |
| 36 | AO 0+ | Analog output 0, positive |
| 37 | AO 0– | Analog output 0, negative / ground |
| 38 | AO 1+ | Analog output 1, positive |
| 39 | AO 1– | Analog output 1, negative / ground |
The analog section is not powered from the internal sensor supply on pin 20. Pins 31 and 40 require an external 24 V DC source (typically the same SITOP that powers the S7-300 rail, but the analog ground must be tied to the receiver's signal ground for a current loop to close). The original report cited pins 31 and 40 as a suspected problem, but measurements of +24 V on those pins would have confirmed the section was energised – the 14.4 V reading was not a power-supply issue.
FC106 UNSCALE Implementation
FC106 (UNSCALE) is the inverse of FC105 (SCALE). It accepts a real-valued engineering quantity and produces a 16-bit integer that can be written directly to the peripheral output word (PQW) of the analog output. For the S7-300 C-CPU the relevant peripheral addresses for the two analog outputs are:
- AO 0 → PQW 752
- AO 1 → PQW 754
Function call signature for FC106:
// FC106 – UNSCALE
// Input parameters
IN : REAL // Engineering value, e.g. 0.0 .. 100.0
HI_LIM : REAL // Engineering value that maps to 27648 (e.g. 100.0)
LO_LIM : REAL // Engineering value that maps to 0 (e.g. 0.0)
BIPOLAR : BOOL // FALSE for 0–20 mA / 4–20 mA
// Output
OUT : INT // 0..27648 (write to PQW 752 / 754)
ST-equivalent call:
// In a cyclic OB (e.g. OB35)
FC106(
IN := SETPOINT_ENG, // REAL, e.g. speed reference 0..100 %
HI_LIM := 100.0,
LO_LIM := 0.0,
BIPOLAR := FALSE,
OUT := PQW752 // direct write to channel 0
);
Validation ladder:
// Force AO 0 to 0% and 100% to verify scaling manually
// Step 1 – output 0%
L 0.0
T MD 100 // SETPOINT_ENG = 0
CALL FC106
IN := MD100
HI_LIM := 100.0
LO_LIM := 0.0
BIPOLAR := FALSE
OUT := PQW 752
// Expected at terminals: 4 mA (configured 4..20 mA)
// Step 2 – output 100%
L 100.0
T MD 100
CALL FC106 … same call …
// Expected at terminals: 20 mA
If OUT shows 0 in step 1 and 27648 in step 2 the FC106 chain is correct. The fault then lies entirely in the physical loop, not the program.
Step-by-Step Diagnostic Procedure
- Confirm hardware configuration. Open SIMATIC Manager → HW Config → double-click the CPU 313C → tab Analog. Verify that channel 0 is set to Output type = Current, Range = 4..20 mA. Save and recompile (Station → Save and Compile). Download HW Config to the CPU (PLC → Download).
- Verify the 24 V analog supply. With the CPU in STOP, measure between pin 31 (+) and pin 40 (–). Expect 24 V DC ±5%. If low or absent, the AO section is unpowered and the output will read 0 mA – not 14.4 V.
- Disconnect the field wiring. Remove both AO wires from pins 36/37 and 38/39. This isolates the loop from the inverter that is currently not energised.
- Force a known output value. In STEP 7, open VAT/Variable Table, set PQW 752 to 0, then 27648. Watch the value update at the CPU. Alternatively use FC106 in OB1 and force the engineering input from the watch table.
- Measure current, not voltage. Set the multimeter to mA DC. Insert the meter in series with a 250 Ω, 0.1 %, 5 W burden resistor between pin 36 (+) and pin 37 (–). Apply 0% → expect 4.00 mA (1.00 V across resistor). Apply 100% → expect 20.00 mA (5.00 V across resistor).
- If 14.4 V still appears with no load attached: the regulator is correctly driving toward compliance because the loop is open – this is expected and proves the AO is functional. Connect the load (inverter setpoint input) and re-measure. Most inverter setpoint inputs present 250 Ω internally and accept 4–20 mA directly.
- Reconnect the field wiring with attention to polarity and shield grounding. For a current output, the polarity is irrelevant at the AO side (current flows both ways), but the inverter setpoint terminal block is usually polarity-marked.
- Confirm scaling end-to-end. From the HMI/SCADA, drive SETPOINT_ENG from 0 to 100 in 10 % steps. Record the mA reading at each step. The transfer function must be linear: I (mA) = 4 + 16 × (engineering / HI_LIM).
Verification Tests
After completing the procedure above, run the following acceptance checks before handing the system back to production:
- Zero check: with engineering input forced to LO_LIM, mA meter reads 4.00 ±0.02 mA. Drift < 0.05 % over 10 minutes.
- Span check: with engineering input forced to HI_LIM, mA meter reads 20.00 ±0.04 mA.
- Linearity check: at 25 %, 50 %, 75 % the readings should be 8.00, 12.00, 16.00 mA ±0.05 mA.
- Loop resistance audit: total loop resistance including wire, burden, and receiver input impedance must be < 500 Ω. Above this, the AO cannot deliver 20 mA and the voltage will saturate.
- SF LED off: no group fault on the CPU front panel. SF usually indicates HW Config mismatch (e.g. plug-in card declared but absent, or wrong output type).
Common Pitfalls and Field-Proven Caveats
- Voltage instead of current measurement. The single most common reason for a "14.4 V on 4–20 mA output" report. Always measure mA in series, never V across an open loop.
- Receiver unpowered. Many variable-frequency drives default the setpoint input to high impedance or open-circuit until the main 400 V / 480 V supply is on. Driving the setpoint with the drive in standby still results in an apparently open loop from the PLC side.
- Loop resistance too high. Long cable runs (hundreds of metres) with small conductor cross-section can push total loop resistance above the 500 Ω compliance limit. Re-spec the cable or add a local loop isolator/booster.
- Wrong HW Config output type. Selecting 0–10 V instead of 4–20 mA makes the output drive a voltage. With the inverter input expecting current, the result is non-linear or undefined behaviour and no SF is raised.
- Using FC105 instead of FC106. FC105 is for inputs (INT → REAL); FC106 is for outputs (REAL → INT). Mixing them up produces a value clamped to 0 in the PQW.
- PGND not tied. The analog section ground (pin 40) must share the same 0 V reference as the receiver input ground. Floating grounds introduce measurement noise and offsets that can be misdiagnosed as linearity errors.
- Unused channel not terminated. A floating unused AO can hold a compliance voltage and read 14.4 V when probed. Leave it at a defined value (e.g. PQW 754 = 0) – the terminal voltage will drop to 4 mA worth (≈ 1 V across a typical input).
- STEP 7 vs TIA Portal scaling. The SCL and ladder calls are identical, but in TIA Portal V13+ the SCALE_X / UNSCALE_X blocks replace FC105/FC106 and require explicit range structure inputs. The troubleshooting above remains valid; only the block instance changes.
Troubleshooting Matrix
| Reading at AO Terminals | Multimeter Mode | Load Status | Diagnosis | Action |
|---|---|---|---|---|
| 14.4 V | VDC | None | Open loop, normal compliance | Connect load, re-measure in mA |
| 0 mA / 0 V | mA DC / VDC | Connected | No output driven – PQW = 0 or supply missing | Check PQW value and pin 31/40 |
| 20.0 mA full scale | mA DC | Connected | PQW = 27648, FC106 OK, scaling maxed out | Inspect HI_LIM and SETPOINT_ENG |
| 0.5–3.5 mA regardless of PQW | mA DC | Connected | BIPOLAR = TRUE on unipolar output, scaling inverted | Set BIPOLAR = FALSE for 4..20 mA |
| Current clipped at ~13 mA | mA DC | Connected | Loop resistance > 500 Ω, compliance exceeded | Reduce cable length or increase wire gauge |
| Reading unstable / noisy | mA DC | Connected | Missing or incorrect shielding, ground loop | Tie pin 40 to receiver GND; use shielded twisted pair |
| SF LED on CPU | n/a | n/a | HW Config mismatch or module diagnostic | Open Module Information (PLC → Module Information) for buffer entries |
Loop Resistance Sizing
When planning the physical wiring, calculate the maximum allowable loop resistance before pulling cable:
R_loop_max = (V_compliance – V_supply_margin) / I_max
For S7-300 AO:
V_compliance ≈ 16 V (worst case)
V_supply_margin = 2 V (recommended safety)
I_max = 20 mA
R_loop_max = (16 – 2) / 0.020 = 700 Ω (theoretical)
Siemens derated value: 500 Ω
Subtract the receiver input impedance (typically 250 Ω for an inverter setpoint, 50 Ω for an indicator) and any burden resistor to obtain the maximum cable resistance:
R_cable_max = R_loop_max – R_receiver – R_burden
Example:
R_cable_max = 500 – 250 – 0 = 250 Ω
For 1000 m of 0.75 mm² copper (≈ 24 Ω/km), the loop is ≈ 48 Ω – well within budget.
Spare-Part Substitution
If after all the above the analog output still does not drive current correctly, the AO section of the CPU 313C is integrated and not field-replaceable. The entire CPU must be replaced. Pre-stage one of each variant:
- 6ES7313-5BE01-0AB0 – CPU 313C
- 6ES7313-6CE01-0AB0 – CPU 313C-2 DP
- 6ES7314-6CF01-0AB0 – CPU 314C-2 DP (higher-spec spare, drop-in for most projects)
Transfer the SIMATIC MMC card (if present) and re-download the project. Verify that the analog configuration, FC106 instance, and PQW addresses are unchanged.
FAQ
Why does the AO terminal show 14.4 V when 4–20 mA is configured?
A 4–20 mA output drives current, not voltage. With no load connected, the regulator saturates against its internal compliance limit (typically 14–16 V on S7-300 C-CPU). This is normal behaviour. Measure current in series with a 250 Ω burden to confirm operation.
Do pins 31 and 40 have to be externally wired for the AO to work?
Yes. The analog section is galvanically isolated and requires its own 24 V DC supply on pin 31 (positive) and pin 40 (ground). Pin 20 (1L) powers digital sensors only and does not feed the analog outputs.
Can I use FC105 (SCALE) on the output instead of FC106 (UNSCALE)?
No. FC105 converts a raw 16-bit input (PIW) into a real engineering value. FC106 is the inverse and is required for converting an engineering real value (e.g. 0–100 %) into the raw 16-bit integer (0–27648) to be written to PQW 752/754.
What is the maximum cable length for a 4–20 mA loop from the CPU 313C?
Total loop resistance (cable + receiver + burden) must stay below 500 Ω. With a typical inverter setpoint of 250 Ω input impedance, up to ~250 Ω of cable is allowed – approximately 5 km of 0.75 mm² copper or 10 km of 1.5 mm² copper. Use shielded twisted pair and ground the shield at the cabinet end only.
Does OutputCPU314C behave the same way?
Yes. The OutputCPU314C instruction set documented for S7-300/S7-400 Easy Motion Control drives the same PQW 752/754 outputs with the same electrical characteristics. Any compliance, scaling, or wiring rules from this article apply unchanged.