Resolving Siemens WinCC Flexible Error 190011, 190012, and 190001 on OP 277 with Tag DB11DW22
This technical reference documents the root-cause analysis and corrective actions for the cluster of WinCC flexible 2008 system alarms 190001, 190011, 190012, 230000, 230005, 270006, 70018, 70022, and 110001 generated on a SIMATIC OP 277 6" / 10" panel when a connected S7 PLC rejects writes to tag DB11.DBW22. The alarm cluster is recurring on the runtime display even though the plant has not been modified, which is the strongest indicator that the underlying issue is a stale tag limit, a buffer restoration mismatch, or a connection state transition that has been re-armed after a password-list reload.
1. Environment and Component Identification
Before investigating the alarms, confirm the engineering environment. The runtime signals in the source correspond to a SIMATIC HMI panel that is configured with WinCC flexible 2008 SP3 (or later) and is communicating with an S7 PLC over MPI / PROFIBUS / Ethernet. The classic OP 277 6" (6AV6 642-0DC01-1AX1) and OP 277 10" (6AV6 642-0DC01-1AX2) ship with WinCC flexible 2008 as their default engineering environment. Identify the components below before any fault analysis is attempted.
| Component | Catalog Number | Role |
|---|---|---|
| OP 277 6" | 6AV6 642-0DC01-1AX1 | HMI panel, 256 colors, MPI/PROFIBUS or PN |
| OP 277 10" | 6AV6 642-0DC01-1AX2 | HMI panel, 256 colors, PN |
| WinCC flexible 2008 SP3 | 6AV6 618-1AK07-2AA0 | Engineering software |
| S7-300 / S7-400 | Various (CPU 314, 315, 317, 416, …) | PLC hosting DB11 |
| PC Adapter USB | 6ES7 972-0CB20-0XA0 | Online MPI/PROFIBUS service |
Reference: SIMATIC HMI WinCC flexible 2008 Communication Part 1 (Edition 2008).
2. Alarm Cluster Decoded
WinCC flexible logs system alarms in the alarm buffer with a numeric event ID, the associated tag (if any), the text from the runtime catalog, the date, and the time. The cluster from the incident is shown below with the canonical Siemens text and the engineering meaning of each alarm.
| Alarm ID | Tag | WinCC flexible Text | Engineering Meaning |
|---|---|---|---|
| 110001 | — | Change to operating mode 'Online' | Runtime entered online state after a connection re-established. |
| 150001 | — | Connection to interface COM1/IF1 B is restored | Physical / logical link on COM1 / IF1 B recovered from outage. |
| 70022 | — | Password list import started | User administration file loaded from the operator panel. |
| 70018 | — | Password list imported successfully | User administration file accepted. |
| 270006 | — | Project modified: Alarms cannot be restored from the persistent buffer | Persistent alarm buffer is inconsistent with the reloaded project; alarms are discarded. |
| 230000 | — | Invalid entry | Operator input did not satisfy the configured validation rules. |
| 230005 | — | Range exceeded. Valid range [0 – 999] | Input exceeded the configured limit range of the input field on the tag. |
| 190012 | DB11.DBW22 | Conversion error | Runtime could not convert the operator value into the PLC tag data type. |
| 190011 | DB11.DBW22 | Value could not be written to PLC | PLC rejected the write to the tag — return code from S7 was not 0. |
| 190001 | DB11.DBW22 | Error status ended | The error condition cleared; alarm is acknowledged implicitly. |
3. Anatomy of the Tag DB11.DBW22
The address DB11.DBW22 is an absolute S7 data word (16-bit integer) inside data block 11, byte offset 22. The syntax is interpreted as:
- DB11 – instance / shared data block number 11.
- DW22 – data word starting at byte 22 (covers bytes 22 and 23, MOTOROLA / big-endian byte order by default in WinCC flexible).
If the runtime is configured with the symbol name rather than the absolute address, the configuration can still resolve to DB11.DBW22. Confirm the symbol table in STEP 7 (or TIA Portal) and verify that the corresponding data block is not optimized/block-optimized (S7-1500 only); on S7-300/400 this is not an issue because only absolute addressing is supported.
DB11.DBW22 works only when the block is non-optimized (i.e., "Standard" block access). If the data block was created with optimized access in TIA Portal V13 or later, the runtime cannot write to byte 22 directly — it must use the symbolic name. This is a frequent root cause of 190011 on modern controllers that have been retrofitted with the legacy WinCC flexible 2008 project.4. Why the Alarms Recur After a Project Reload
The incident timeline shows a strict ordering of events: 110001 → 150001 → 70022 → 70018 → 270006 → 230000 → 230005 → 190012 → 190011 → 190001. Each event has a deterministic relationship to the one before it, which makes diagnosis straightforward.
- 110001 / 150001: After the OP 277 was re-commissioned with the January 2016 backup, the panel booted and re-established its MPI/PROFIBUS connection. The connection restoral event is recorded before the password list is processed because the user administration file is read after the runtime stack initializes the driver.
- 70022 → 70018: The password list import started and completed successfully. This is informational; it does not normally correlate with tag write failures.
- 270006: The project on the OP 277 does not match the persistent alarm buffer of the panel that was retained across the re-commissioning (or across a battery-backed reboot). WinCC flexible detects the CRC / version mismatch and discards the persistent alarm buffer. This is the single most important event in the cluster because it indicates that the alarms currently visible on the screen cannot be acknowledged via the buffer and must be cleared by re-acknowledging them in the active runtime.
- 230000 / 230005: After the project reloaded, the configured input field for the tag re-armed its validation limits. The limits shown in the alarm text — "[0 – 999]" — are the values stored inside the WinCC flexible project, not the values from the PLC. The input was rejected because it exceeded 999, which is the configured upper limit.
-
190012: The runtime attempted to convert the operator value (likely a real / floating-point string from an I/O field) into the
INTtype used by the tagDB11.DBW22on the PLC side. The conversion failed (string not numeric, or out of INT range -32768..32767). -
190011: Because the conversion failed, no valid S7 write request was generated; the driver reports that the value could not be written to the PLC. On some panels, a partial request still goes out and is rejected by the CPU with S7 error code
0x0A(Object does not exist) or0x05(Address out of range). - 190001: Once the operator dismissed the dialog or the field regained a valid value, the error status ended. The fact that 190001 is also recurring strongly implies the field is being driven again (by a script, by a scheduled job, or by an automatic re-arming of an animation).
Reference: SIMATIC HMI WinCC flexible 2008 Communication Part 1 (Edition 2008), Appendix 9.1 "System Alarms".
5. Confirming the Root Cause
The likely root cause is a combination of two factors:
-
Range limit mismatch: The I/O field for tag
DB11.DBW22is configured with limits "0 – 999" in the WinCC flexible project. When an external system (PLC, script, or operator) attempts to write a value outside that range, the runtime first emits 230005, then 190012 if the value is not representable in the tag type, then 190011 when the write is dropped, then 190001 when the field recovers. - Persistent alarm buffer mismatch: The 270006 event indicates that the persistent buffer does not match the current project; this is a one-time event that should not be repeated unless the project CRC changes again (e.g., a recompile, a transfer of a new .pwl, or a firmware update on the panel).
A third, less common cause is block / DB protection: if data block 11 has been configured with know-how protection in STEP 7, the runtime may receive a return code that translates to "value could not be written" because the panel does not have the password for the block. Verify by reading DB11.DBW22 in STEP 7 online; if the variable cannot be monitored from the PC either, the block is protected.
6. Diagnostic Procedure
Run the procedure below in the order given. Each step produces a binary result (pass / fail) that points to the next step.
6.1 Check the live tag value in STEP 7
- Connect the engineering station to the PLC with a PC Adapter (MPI/PROFIBUS) or directly over Ethernet.
- Open the project in STEP 7 (or TIA Portal) and go online with the CPU.
- Open the variable table VAT for DB11 and monitor
DB11.DBW22. - Try to write a known value (for example 100) into the tag from STEP 7. If STEP 7 reports "Object access error", the issue is in the PLC (block protection, address out of range, or DB not loaded).
- Run
STATUS DB11from the PG to confirm the data block exists and is not blocked by the security level.
6.2 Check the tag configuration in WinCC flexible
- Open the project in WinCC flexible 2008.
- Navigate to Project → HMI Tags → DB11_DBW22.
- Confirm the following parameters:
| Parameter | Required Value for INT tag |
|---|---|
| Name | DB11_DBW22 (or symbolic name) |
| PLC | Connection configured, online status "Connected" |
| Address | DB 11, Word 22 |
| Acquisition cycle | 1 s (default) — must be greater than the PLC update cycle |
| Length | 2 bytes |
| Data type | INT (16-bit signed integer) |
| Update / Write authorization | Both, or write enabled |
6.3 Check the I/O field limits
- Open the screen that contains the field bound to DB11.DBW22.
- Select the I/O field and read the Properties → Limits tab.
- Confirm the configured lower / upper limits match the operational range. If the upper limit is set to 999 and the PLC needs values up to, for example, 1500, the runtime will reject values between 1000 and 1500 with 230005.
- If the value must be unbounded, configure the field as Limits = None in WinCC flexible. The runtime will then accept any value representable in INT (-32768 to 32767).
6.4 Check scripts that write the tag
- In WinCC flexible, open Project → Scripts → Global Script and search for any
SmartTags("DB11_DBW22")orHMIRuntime.Tags("DB11_DBW22")reference. - Confirm that the script does not assign a non-numeric string to the tag before the conversion step.
- If the script reads from another tag and forwards the value, check the data types of both tags. A mismatch between a
STRINGsource and anINTtarget is a frequent source of 190012.
6.5 Check the connection and bus profile
- Verify that the PLC rack / slot of the CPU matches the configured connection in WinCC flexible.
- Check the bus terminators on PROFIBUS segments — incorrect termination is the most common cause of intermittent 150001 (connection restoral) events that precede 190011.
- On an OP 277 6" with MPI, confirm that the OP address differs from the CPU address (CPU = 2, OP = 1 / 3 are typical).
- Capture an MPI / PROFIBUS trace with a diagnostic repeater if 150001 recurs more than once per shift.
7. Solutions
7.1 Adjust the I/O field range
If the runtime limit (0 – 999) is too restrictive, change it in WinCC flexible and re-transfer the project. Example for an I/O field bound to an INT tag:
- In the I/O field properties, set Limits → Minimum = -32768, Maximum = 32767, or Limits = None.
- Compile the project (Project → Compiler → All).
- Transfer to the OP 277 over Ethernet (PN) or MPI.
- Verify on the panel: open the screen, enter 1234, confirm it appears in the field and that the PLC VAT shows 1234 at DB11.DBW22.
7.2 Recompile and re-transfer to clear the persistent buffer mismatch
The 270006 event is cleared by transferring a fresh project to the panel that matches the runtime CRC stored in the panel. Procedure:
- Open the WinCC flexible project that was last transferred successfully.
- Project → Transfer → Transfer Settings: confirm the panel type and the connection mode (MPI address / PN IP address).
- From the engineering station, select Project → Transfer → Transfer to Device.
- Confirm the transfer dialog and wait for the panel to restart.
- After restart, the 270006 alarm should not reappear unless the project is recompiled or replaced.
7.3 Address S7 protection or address errors
If STEP 7 reports an access error on DB11.DBW22:
- Remove know-how protection from DB11 in STEP 7 (LAD/FBD/ST → Options → Know-How Protection → Remove).
- Confirm the data block length is at least 24 bytes (so that DW22 fits): use STEP 7 → DB11 → Properties → Address View and check the maximum byte offset.
- If the data block is shorter than 24 bytes, extend it in STEP 7 and re-download to the CPU. Do not extend a DB that has instance references without first running a consistency check.
7.4 Validate scripts
For each script that writes to DB11.DBW22, ensure that the source variable is converted to INT before the assignment. Example VBScript for WinCC flexible:
Dim sValue
sValue = SmartTags("SourceString")
If IsNumeric(sValue) Then
Dim iValue
iValue = CInt(sValue)
If iValue >= -32768 And iValue <= 32767 Then
SmartTags("DB11_DBW22") = iValue
Else
' Out of INT range — do not write
End If
Else
' Source is not numeric — do not write
End If
The CInt call performs the same conversion as the runtime, but inside a try-style guard so that 190012 is not generated when the value is non-numeric.
8. Verification Checklist
After applying the corrections, perform the checks below to confirm the alarm cluster does not return.
| Check | Expected Result |
|---|---|
| Operator enters 1234 in the I/O field | No 230000, 230005, 190012, 190011, or 190001 alarm appears; STEP 7 shows DB11.DBW22 = 1234. |
| Operator enters 1500 in the I/O field | No alarm if the limit was raised to 32767; otherwise one 230005 / 190012 / 190011 / 190001 cycle. |
| Operator enters "ABC" in the I/O field | Runtime rejects the input at the I/O field level; no 190012 generated. |
| PLC is stopped | No write errors; instead a connection-status change (150000 "Connection lost" or 150001 "Connection restored" when PLC resumes). |
| Project recompiled and re-transferred | 270006 appears once at startup, then clears; no recurrence. |
| Alarm buffer opened on the panel | All alarms acknowledgeable; no entries left in red / unack state. |
9. Preventive Measures
The recurrence of the alarm cluster — especially 270006 — indicates that the project was modified and re-transferred while alarms were still pending in the persistent buffer. Apply the preventive measures below to avoid the same cluster in the future.
- Align limits with the PLC range: keep the I/O field limits consistent with the actual operational range of the tag, or set limits to "None" for read-only or scripted tags.
- Centralize scripts: put all writes to DB11.DBW22 into a single function library that performs the conversion guard shown in section 7.4. This guarantees a single point of validation.
- Acknowledge alarms before recompile: clear the alarm buffer from the panel control panel before recompiling and re-transferring the project. This avoids the mismatch that triggers 270006.
- Version the project: keep a copy of every .hmi project, .pwl (password list), and runtime CRC together in the engineering backup. The OP 277 stores the CRC of the last successful transfer; if it does not match the project on the engineering station, 270006 will fire.
- Document the password list lifecycle: 70018 / 70022 are normal events but should be referenced in the operator log. A typical pattern is to import the password list once after a project transfer and never again until the next project update.
- Audit block access: do not enable know-how protection on DB11 unless it is required; the protection triggers a write reject that the panel translates into 190011.
10. Migration Path to TIA Portal
WinCC flexible 2008 has been superseded by WinCC in TIA Portal since V11. If the OP 277 is replaced by a Comfort Panel (TP700 / TP900 / TP1200) or a Unified Panel (MTP700 / MTP1000), the equivalent system alarms in the TIA Portal runtime use the same numeric IDs but the catalog is expanded. The migration steps are:
- Open the project in TIA Portal (V16 or later recommended for the OP 277 migration tool).
- Run Tools → Migrate Project; the tool translates DB11.DBW22 from absolute to symbolic addressing automatically if a matching symbol exists in the S7-300/400 project.
- Recompile the HMI project and download to the new panel.
- Validate the same checks from section 8.
Reference: SIMATIC WinCC in TIA Portal — System Alarms (Entry ID 109746495) (Siemens Industry Online Support).
11. Related System Alarms
The same family of alarms is documented in the WinCC flexible Communication manual. The most common siblings are listed below for cross-reference.
| Alarm ID | Meaning | Action |
|---|---|---|
| 190000 | Tag limit value violated | Check limits in tag properties. |
| 190002 | Status / control error on tag | Verify PLC connection. |
| 190010 | Value could not be read from PLC | Check the PLC rack / slot configuration. |
| 190020 | Tag signing error | Check the data block consistency. |
| 140000 | Connection lost | Check cable / connector. |
| 150000 | Connection lost | Same as 140000 in older catalog. |
| 150001 | Connection restored | Informational. |
| 270000 | Persistent buffer restored | Informational; complements 270006. |
| 70019 | Password list export started | Informational. |
| 70020 | Password list exported successfully | Informational. |
12. Quick Reference — Number Range to Source Mapping
| Alarm ID Range | Source |
|---|---|
| 110000 – 119999 | Operating mode / lifecycle |
| 140000 – 159999 | Connection status |
| 190000 – 199999 | Tag / value status |
| 230000 – 239999 | Operator input validation |
| 270000 – 279999 | Persistent buffer / project consistency |
| 70000 – 70999 | User administration |
Reference: SIMATIC HMI WinCC flexible 2008 Communication Part 1 (Edition 2008), Section 9.1.
FAQ
What does WinCC flexible system alarm 190011 "Value could not be written to PLC" actually mean?
It means the runtime attempted to write a value to the connected PLC tag (here DB11.DBW22) and the PLC returned a non-zero error code, or the runtime never generated a valid write request because the conversion / range check failed. The corresponding error state is reported by alarm 190001 when it clears.
Why does alarm 270006 "Project modified: Alarms cannot be restored from the persistent buffer" appear after a project reload?
WinCC flexible stores a CRC of the project in the panel's persistent flash. When the project is recompiled and re-transferred, the runtime detects a CRC mismatch between the new project and the persistent alarm buffer, and discards the buffer so that no inconsistent alarm entries remain visible.
How do I clear the 190011 / 190012 alarm cluster on the OP 277?
Open the alarm buffer on the panel and acknowledge each entry. If the cluster returns, raise the I/O field range limits in the WinCC flexible project (or set Limits = None), recompile the project, re-transfer to the panel, and verify the conversion path in any script that writes the tag.
What is the default valid range for an INT tag in WinCC flexible?
An INT tag has a 16-bit signed range of -32768 to 32767. The I/O field limits shown in alarm 230005 (here 0 – 999) are configured per field and are independent of the INT type range; raise the configured limits if the operational range exceeds 999.
Is tag DB11.DBW22 on an S7-1500 affected by optimized block access?
Yes. On S7-1200 V4+ and S7-1500, a data block with optimized access cannot be addressed by absolute offset. If DB11 is optimized, the runtime write to byte 22 will be rejected with 190011; either switch DB11 to standard access or use the symbolic tag name in the WinCC flexible project.