Overview
The SIWAREX WP321 is a single-channel weighing module (Technology Module, TM) in the SIMATIC ET 200SP distributed I/O system. It acquires the mV/V signal from one or more load cells and exposes weight, status, tare, zero, and diagnostic data to the ET 200SP backplane bus for evaluation in the CPU (S7-1200 or S7-1500). When the module reports a non-zero w_ErrorCode in the standard block WP321S (delivered in the "Ready-for-use" project), the value is sourced from the module's own data/command error register and is the first place an engineer must look.
This reference documents the meaning of w_ErrorCode, its companion variable s_IO_DATA.ERROR_CODE, the relationship to data records DR3 and DR32, and the complete data/command error range 5000-8999. It also documents the load-cell and ADC technology errors 1104 and 1106 that appear in SIWATOOL V7 when physical cells are disconnected.
WORD, so the value must be read in hexadecimal (e.g., 16#1132) or decimal (e.g., 4402). Most legacy documentation uses decimal; TIA Portal HMI tags may show either depending on the configured display format.
SIWAREX WP321 Module Identification and Integration
The WP321 occupies one slot in an ET 200SP baseUnit (BU type A0). The relevant identification data is summarised below.
| Attribute | Value |
|---|---|
| Article number (MLFB) | 7MH4138-6BA00-0CU0 (WP321 standard) |
| Firmware (as published in A5E33715669A-02) | ≥ V1.0.x; current revision tracked in the Siemens support entry 109770838 |
| Backplane interface | ET 200SP (PROFINET head + IM) |
| Configuration tool | TIA Portal ≥ V15.1, HSP for TM WP321 |
| Service / commissioning tool | SIWATOOL V7 (USB service port on the front of the module) |
| Block library delivered | WP321S (single-channel, Ready-for-use project) |
| Number of load cells | 1 to 4 (parallel), 4-wire or 6-wire |
| Resolution | ± 1,000,000 d (internal) |
| Update rate / integration time | 10 ms / 20 ms / 40 ms / 100 ms / configurable |
Refer to the operating instructions SIWAREX WP321 Equipment Manual (A5E33715669A-02) for the full device specification and slot rules.
Locating w_ErrorCode in the WP321S Block
The standard block WP321S (used in the "Ready-for-use" example project) exposes the error variable on its instance DB:
-
Tag:
<WP321S_DB>.w_ErrorCode -
Type:
WORD(data/command error code) -
Source: Mirrored from the module's DR 3 / DR 32 return payload or the cyclic
w_QVerror word - Range: 0 (no error) or 5000-8999 (data/command errors)
For technology errors (load cell, ADC, calibration, etc.) the engineer should NOT use w_ErrorCode but the operating-mode status structure:
-
Tag:
<WP321S_DB>.s_IO_DATA.SCALE_STATUS.ERROR— Boolean, set when any technology error is pending -
Tag:
<WP321S_DB>.s_IO_DATA.ERROR_CODE— additional error word provided by the block (referenced by the Siemens support response in the originating thread)
w_ErrorCode returns data/command errors (e.g. command rejected because Service mode is off). Technology errors (load cell wire break, ADC undervoltage) appear in s_IO_DATA.ERROR_CODE or in the dedicated technology-error data record and are visible in SIWATOOL V7.
Data Records DR3 and DR32
Configuration and process data on the WP321 are exchanged through data records. The two that matter for the present problem are DR3 and DR32.
| DR | Direction | Purpose | Used by w_ErrorCode? |
|---|---|---|---|
| DR 3 | CPU → Module (write) | Command interface: tare, zero, calibrate, service mode on/off, factory reset | Yes — module returns data/command error if the command is invalid in the current state |
| DR 32 | Module → CPU (read) | Technology-error and operating-state status, error counters | Indirectly — DR 32 carries the technology error list separate from w_ErrorCode
|
| DR 30 | CPU → Module (write) | Process / control word | No |
| DR 31 | Module → CPU (read) | Process / status word + weight | No |
When the WP321S block (small variant) does not read DR 32, the user will see no entries in OPERATION_ERRORS or DR32.TECHNOLOGICAL_ERRORS even though a technology error is active. This is a documented limitation of the small block, not a module fault. To access the technology-error list, the engineer must either:
- Use SIWATOOL V7 over the service port, OR
- Read DR 32 explicitly using
WRREC / RDREC(S7-1500) orRDREC(S7-1200), OR - Use the full WP321S block variant that polls DR 32 each scan.
Data and Command Error Codes 5000-8999
Data/command errors are returned whenever the module rejects a write to DR 3 (e.g. tare command while in running mode, or service-mode command without the correct privilege). The general list is reproduced from the SIWAREX WP321 Equipment Manual and the TIA Portal cloud documentation entry for the module's message list.
| Code (dec) | Code (hex) | Description / Remedy |
|---|---|---|
| 5000 | 0x1388 |
Group error — at least one data/command error bit is set in the data record; look at the next data records or at the w_ErrorCode lower bits for the actual cause. |
| 5001 | 0x1389 | Unknown command in DR 3 |
| 5002 | 0x138A | Command not allowed in current operating mode (e.g. calibration during production without Service mode) |
| 5003 | 0x138B | Invalid command parameter (out of range / wrong type) |
| 5004 | 0x138C | Command denied — Service mode is OFF (this is the error most commonly observed when sending a DR 3 command such as adjustment or factory reset while the module is in production). |
| 5010 | 0x1392 | Incorrect password / access level |
| 5020 | 0x139C | Parameter assignment error — the data record is not applied (not saved) by the module and a data/operator error is raised. See Equipment Manual chapter 9.5.3. |
| 5100-5199 | 0x13EC-0x1457 | Range errors in individual parameters (e.g. calibration weight out of permissible value range) |
| 5200-5299 | 0x1450-0x14BB | State-machine errors (illegal transition, e.g. zero command with no stable weight) |
| 5500-5599 | 0x157C-0x15E7 | Adjustment/calibration sequence errors |
| 6000-6999 | 0x1770-0x1B57 | Data record format / length errors (PROFIsafe / PROFINET framing) |
| 7000-7999 | 0x1B58-0x1F3F | DR 30 / DR 31 process data errors |
| 8000-8999 | 0x1F40-0x2327 | Vendor-specific / FW-dependent |
The codes above are the canonical Siemens numbering; the WP321S block passes them straight through to w_ErrorCode. If you observe w_ErrorCode = 0 while a hardware fault is present, the error is a technology error, not a data/command error, and you must check the sources listed in the next section.
Technology Errors: Load Cell and ADC (1104, 1106, ...)
Technology errors are signalled through DR 32 and through s_IO_DATA.ERROR_CODE; they are NOT shown in w_ErrorCode. The most common field codes are:
| Code (dec) | Code (hex) | Description / Remedy |
|---|---|---|
| 1104 | 0x0450 | ADC sens voltage too low — the bridge excitation or sense wires are open or shorted. Check the 4-wire/6-wire connection at the cell, the sense jumpers at the load cell junction box, and the shield termination. |
| 1105 | 0x0451 | ADC reference voltage out of range — hardware fault, replace module. |
| 1106 | 0x0452 | Load cell underload — measured weight below the lower limit (e.g. cells disconnected, sense wires swapped, or load cell failed). Test with a known cell or with the calibration resistor to localise the fault to wiring vs. cell. |
| 1107 | 0x0453 | Load cell overload — weight above configured maximum; check scale design. |
| 1108 | 0x0454 | Wire break sense line |
| 1109 | 0x0455 | Wire bridge signal line |
| 1110 | 0x0456 | Calibration invalid / inconsistent with calibration weights |
| 1111 | 0x0457 | Tare value out of range |
| 1200-1299 | 0x04B0-0x0513 | Calibration / zero-set sequence errors |
| 1300-1399 | 0x0514-0x0577 | Limit value / tolerance errors |
| 1400-1499 | 0x0578-0x05DB | Filter / integration-time errors |
When you physically disconnect a load cell, two effects occur simultaneously: the bridge becomes unbalanced (1104 ADC sens voltage too low) and the resulting force measurement falls below the lower limit (1106 Load cell underload). Both codes are visible in SIWATOOL V7 but neither is reflected in w_ErrorCode.
Status Structure s_IO_DATA and SCALE_STATUS
The full s_IO_DATA UDT carries the diagnostic and process status. The relevant members are:
| Tag | Type | Meaning |
|---|---|---|
s_IO_DATA.WEIGHT |
REAL | Net weight in configured unit |
s_IO_DATA.GROSS |
REAL | Gross weight |
s_IO_DATA.TARE |
REAL | Active tare |
s_IO_DATA.SCALE_STATUS.STABLE |
BOOL | Weight stable (motion check) |
s_IO_DATA.SCALE_STATUS.ERROR |
BOOL | At least one technology error is active. Use this bit as a fast check before reading the technology-error list. |
s_IO_DATA.SCALE_STATUS.SERVICE_MODE |
BOOL | Service mode active — calibration / factory reset only permitted while TRUE |
s_IO_DATA.SCALE_STATUS.WEIGHT_BELOW_MIN |
BOOL | Trigger for 1106 |
s_IO_DATA.SCALE_STATUS.WEIGHT_ABOVE_MAX |
BOOL | Trigger for 1107 |
s_IO_DATA.ERROR_CODE |
WORD | Additional error word — see notes in source thread |
The Siemens support recommendation in the originating thread is explicit: "When you disconnect the cells, you have to check the bit s_IO_DATA => SCALE_STATUS => ERROR." This bit latches until the error condition is removed and the operator acknowledges the error using DR 3 command 0x0200 Acknowledge error.
Diagnostic Procedure Step-by-Step
Use the following sequence when the field device reports a non-zero w_ErrorCode or a lit SCALE_STATUS.ERROR:
- Verify power and grounding. Measure 24 V at the BU type A0 base unit; verify the PE/functional-earth connection at the load cell junction box.
-
Check the ET 200SP station diagnostic buffer. Open TIA Portal → Online & Diagnostics → Diagnostic buffer. The module slot will identify PROFINET, channel, or module-level faults that do not surface in
w_ErrorCode. -
Inspect
w_ErrorCode. If 5000 ≤ w_ErrorCode ≤ 8999, this is a data/command error — jump to the table above and resolve from the DR 3 command that triggered the error. -
Inspect
s_IO_DATA.SCALE_STATUS.ERROR. If TRUE, read the technology-error list. With the small WP321S block that does not poll DR 32, launch SIWATOOL V7 to see the codes (e.g. 1104, 1106). - Localise the cell fault. Disconnect each cell in turn. If removing a single cell clears the 1104/1106, the fault is in the cell or its wiring harness. If the error remains with all cells removed, swap the load-cell cable for a known-good one. If the error remains with a calibration resistor across the WP321 terminals, the module is the fault.
-
Verify Service mode is ON before any DR 3 calibration command. Send DR 3 command
0x0102(Service on) and confirmSCALE_STATUS.SERVICE_MODE= TRUE. - Recalibrate. Perform zero set and span adjustment with calibrated test weights. Monitor the technology-error list — it should remain empty.
-
Acknowledge and clear. Send DR 3 command
0x0200to clear the latched errors. ConfirmSCALE_STATUS.ERROR= FALSE andw_ErrorCode= 0.
TIA Portal Configuration Reference
For the data/command errors to propagate to w_ErrorCode, the WP321S block must be configured with:
- Hardware identifier of the WP321 module (set in the module's properties → "Module parameters")
- Input / output addresses consistent with the PROFINET configuration
- Command output enabled (DR 3 write allowed)
- DR 32 read explicitly enabled if you want technology errors to appear in the block's diagnostic structure; otherwise they will be visible only in SIWATOOL V7
The standard block supports both S7-1200 and S7-1500 CPUs. Note that on the S7-1200, RDREC/WRREC must be called from an organisation block that is not OB1 if the slot is on a high-speed PROFINET network; the WP321S block handles this internally.
SIWATOOL V7 Error Display
SIWATOOL V7 connects to the WP321 over the front-panel USB service port and exposes the full technology-error and operating-error lists regardless of whether the small WP321S block is being used. This makes SIWATOOL V7 the single best diagnostic tool when the block is silent.
Procedure:
- Connect a USB cable between the PC and the WP321.
- Launch SIWATOOL V7, choose COM port, and connect.
- Navigate to Diagnostics → Error list. The active technology errors (e.g. 1104, 1106) and the operating-mode errors are both shown.
- Use Service → Acknowledge errors to clear latched errors after the physical cause is fixed.
Error Code Mapping and Troubleshooting Matrix
The following matrix maps the most frequent field conditions to the variable you should read first and the typical code you should expect.
| Field condition | w_ErrorCode | SCALE_STATUS.ERROR | DR 32 / s_IO_DATA.ERROR_CODE | First action |
|---|---|---|---|---|
| Cells physically disconnected | 0 | TRUE | 1104 + 1106 | Check load cell wiring / jumpers |
| Wrong cell type (mV/V out of range) | 0 | TRUE | 1106 | Verify cell rated output vs. configured span |
| Calibration attempted without Service mode | 5004 | FALSE | 0 | Set Service mode on (DR 3 = 0x0102) and retry |
| Invalid calibration weight in DR 3 | 5100-5199 | FALSE | 0 | Re-enter calibration weight in valid range |
| Password-protected DR 3 with wrong password | 5010 | FALSE | 0 | Re-enter password or unlock in SIWATOOL V7 |
| Module in production mode rejects zero command | 5002 | FALSE | 0 | Place scale in maintenance / Service mode |
| Wire break sense line only | 0 | TRUE | 1108 | Inspect 6-wire sense path |
| Wire break signal line only | 0 | TRUE | 1109 | Inspect 4-wire signal path |
| Hardware failure inside module | 0 | TRUE | 1105 | Replace WP321 module |
Commissioning and Verification Checklist
- [ ] Module firmware on the device matches the HSP in TIA Portal (no Firmware-update required / Firmware-update required warning).
- [ ] Slot, baseUnit (BU type A0), and shield contact carrier are mechanically correct.
- [ ] Load cells wired per the manual (4-wire or 6-wire) and the sense jumpers in the junction box are installed.
- [ ] Service mode toggled ON before any DR 3 calibration command.
- [ ]
w_ErrorCode= 0 after every successful DR 3 write. - ]
s_IO_DATA.SCALE_STATUS.ERROR= FALSE after the acknowledge command. - [ ] DR 32 read returns 0 in the technology-error list after the acknowledge command.
- [ ] SIWATOOL V7 error list is empty after a full warm-up with the process load applied.
- [ ] Test weight verification: 0%, 25%, 50%, 75%, 100% of nominal load all within tolerance.
Field-Proven Caveats
- The small WP321S block from the "Ready-for-use" project deliberately does not read DR 32. If you depend on technology-error propagation to the PLC, switch to the full WP321S block variant or add an explicit
RDRECon DR 32. - Codes 5004 (Service mode required) and 5020 (parameter assignment error — data record not applied) are the two most common reasons for an apparently "stuck" calibration. They are not hardware faults.
- Codes 1104 and 1106 appear together whenever a cell is disconnected. Use them as a single diagnostic signature, not as two independent faults.
- On multi-cell installations, use a calibration resistor across the WP321 input terminals to confirm that the module itself is healthy. If the technology-error list clears with the calibration resistor in place, the module is good and the fault is in the cell, wiring, or junction box.
- The block's
ERROR_CODEand the module'sw_ErrorCodeare different variables; the module'sw_ErrorCodereports only data/command errors, while the block'sERROR_CODEcan carry additional internal status.
FAQ
What does w_ErrorCode mean on the SIWAREX WP321?
w_ErrorCode is the data/command error code returned by the module in response to a write to data record DR 3 (commands such as tare, zero, calibration, or Service mode). A non-zero value means the command was rejected; valid range is 5000-8999, documented in the SIWAREX WP321 Equipment Manual chapter 9.5.3.
Why is w_ErrorCode = 0 even when a load cell is disconnected?
w_ErrorCode reports only data/command errors. A disconnected cell produces a technology error (codes 1104 ADC sens voltage too low and 1106 Load cell underload) that is signalled through DR 32 and through s_IO_DATA.SCALE_STATUS.ERROR, not through w_ErrorCode. Use SIWATOOL V7 to read the technology-error list when the block does not poll DR 32.
What is the difference between s_IO_DATA.ERROR_CODE and s_IO_DATA.SCALE_STATUS.ERROR?
SCALE_STATUS.ERROR is a Boolean summary bit that is TRUE whenever any technology error is active. s_IO_DATA.ERROR_CODE is a WORD that holds the additional error code as defined by the block; it complements SCALE_STATUS.ERROR with a numeric identifier and is intended for use in the PLC program.
How do I clear a latched technology error such as 1104 or 1106?
Fix the physical cause first (wiring, sense jumpers, or load cell), then send the DR 3 acknowledge-error command 0x0200 while Service mode is active, and verify that SCALE_STATUS.ERROR returns to FALSE and DR 32 no longer reports the code.
Why is my DR 3 calibration command rejected with code 5004?
Code 5004 means Service mode is OFF. Toggle Service mode ON by writing command 0x0102 to DR 3, wait one PROFINET cycle, confirm s_IO_DATA.SCALE_STATUS.SERVICE_MODE is TRUE, and re-issue the calibration command.