Problem: Single-Bit Visibility Option Is Missing on the KTP600 Basic
When configuring a symbol animation on a SIMATIC KTP600 Basic Panel, the Visibility dialog in TIA Portal exposes only the Range mode under Appearance > Visibility. The expected Single bit mode that is available on Comfort Panels and WinCC Runtime Advanced / Professional is not present in the drop-down. The trigger is a single Modbus coil coming from a SIMATIC S7-1200 CPU, and the engineer expects a direct boolean mapping from that bit to the symbol visibility.
This is a documented runtime limitation, not a project error. The Basic Panels (KTP400 / KTP600 / KTP700 / KTP900 / KTP1200 Basic) run the WinCC Basic image, which implements visibility evaluation only as a numeric range check, not as a single-bit trigger.
Affected Panels and TIA Portal Versions
| Panel | Order Number (MLFB) | Single-Bit Visibility | Range 1–1 Workaround | Min. TIA Portal |
|---|---|---|---|---|
| KTP400 Basic PN | 6AV2 147-2AS10-0AX0 | No | Yes | V13 SP1 |
| KTP600 Basic DP | 6AV2 147-2AD10-0AX0 | No | Yes | V13 SP1 |
| KTP600 Basic PN | 6AV2 147-2AB10-0AX0 | No | Yes | V13 SP1 |
| KTP700 Basic PN | 6AV2 147-2BA20-0AX0 | No | Yes | V15.1 |
| KTP900 Basic PN | 6AV2 147-2BC20-0AX0 | No | Yes | V15.1 |
| KTP1200 Basic PN | 6AV2 147-2BM20-0AX0 | No | Yes | V15.1 |
| KTP1200 Basic DP | 6AV2 147-2BP20-0AX0 | No | Yes | V15.1 |
| Comfort TP / KTP | 6AV2 124-1… / 6AV2 145-1… | Yes | Yes | V13 SP1 |
Source: TIA Portal V20 manual: S7-1200 device dependency for Basic Panels
Root Cause: WinCC Basic Animation Engine
The Basic Panels use the WinCC Basic runtime image, which is a slimmed-down configuration of WinCC that supports a subset of the animation set found in WinCC Comfort / Advanced / Professional. In the Comfort and above image, the Visibility dialog includes three modes:
- None – no animation
- Range – visibility is TRUE when the tag value lies inside the configured [Min, Max] window
- Single bit – visibility is TRUE when the configured bit of the tag word is set
In the Basic image only the first two modes are compiled into the runtime. The drop-down therefore physically cannot contain Single bit. The dialog does not grey it out or hide it: the option is removed from the resource string table for the device class. This is by design and was kept identical across firmware versions (KTP600 Basic FW < V12 through > V17) for compatibility with existing compiled projects.
When the same TIA Portal project is opened and the HMI device is changed from a KTP600 Basic to, for example, a TP700 Comfort, the dialog immediately exposes the Single bit entry. This confirms the limitation is device-class-bound, not project-bound.
Workaround: Use Range with Minimum = 1 and Maximum = 1
The standard substitute is to configure the visibility as a Range animation whose Minimum and Maximum are both set to 1. The runtime evaluates the trigger tag as an integer and the expression becomes:
Visibility = (TagValue >= 1) AND (TagValue <= 1)
This is logically equivalent to a boolean test for a 16-bit unsigned integer. For a 32-bit tag the same rule applies because the range check uses the full native type width of the configured HMI tag.
Step-by-Step Configuration
Prerequisites
- SIMATIC S7-1200 CPU (any FW >= V4.2 for Modbus TCP / RTU library support)
- KTP600 Basic PN or DP, FW >= V12
- TIA Portal V15.1 or higher (V17 / V18 / V19 / V20 recommended)
- Established HMI connection between the panel and the CPU (Profinet or Profibus DP depending on the panel variant)
- Modbus trigger word defined on the CPU side, mapped to an HMI tag of type
WordorInt
1. Define the Modbus Tag on the S7-1200
For Modbus RTU, instantiate MB_MASTER or MB_CLIENT from the "Modbus (RTU/TCP)" instructions. The standard holding register or coil area is mapped into a data block, e.g.:
DATA_BLOCK "DB_Alarm"
STRUCT
AlarmWord1 : WORD; // Bit 0.0 = alarm 1, Bit 0.1 = alarm 2 ...
AlarmWord2 : WORD;
Spare : ARRAY[0..7] OF WORD;
END_STRUCT;
END_DATA_BLOCK
The MB_CLIENT instruction writes DB_Alarm.AlarmWord1 from the Modbus master. The HMI only reads it.
For Modbus TCP, the same DB structure applies; use MB_CLIENT on the CPU as a Modbus server (server mode, instance DB 1, 2, 3 ...).
Reference: Siemens Support entry 109751654: S7-1200 Modbus TCP / RTU instructions and example projects
2. Create the HMI Tag
- In the TIA Portal project tree, open PLC_1 > HMI tags > Default tag table (or your custom table).
- Add a new tag named
AlarmWord1. - Set Data type to
Word(orIntfor a signed value; the trigger bit is the LSB). - Set Connection to the S7-1200 connection.
- Set PLC tag to
DB_Alarm.AlarmWord1. - Set Acquisition mode to Cyclic continuous with a 1 s cycle for a typical alarm.
Bool tag on the HMI side. The Basic runtime evaluates the visibility only as a numeric range; a bool tag is internally promoted to a byte and the dialog still works, but the LSB-bit-to-LSB-bit semantic of the workaround is clearest with a 16-bit tag.3. Add a Symbolic I/O Field or Symbol on the Screen
- Open the desired screen in the HMI editor.
- Drag a Symbol object (or a graphic I/O field) from the toolbox onto the canvas.
- Configure the static graphic (e.g.,
Alarm_Ack_Required) for the "visible" state and an empty / transparent graphic for the "hidden" state if needed.
4. Configure the Visibility Animation
- Select the symbol, then open Properties > Appearance > Visibility.
- Click the small Dynamic button (lightning bolt) on the right side of the Visibility row.
- In the dialog, choose the Range option (it is the only option besides None).
- Click the value field next to Variable and select
AlarmWord1. - Set Minimum value =
1. - Set Maximum value =
1. - Confirm with OK.
The animation is now equivalent to "show the symbol when bit 0 of AlarmWord1 is set".
5. Mask Other Bits with PLC Logic (Optional)
If several bits are packed into the same word and you only want the symbol to react to bit 0, do the masking on the CPU side, not in the HMI. Example:
// SCL on the S7-1200
"DB_Alarm".AlarmWord1 := "DB_Modbus".CoilWord AND 16#0001;
// Now AlarmWord1 is either 0x0001 or 0x0000 — perfect for the 1–1 range test.
This keeps the HMI configuration compact and avoids the need for bit-level operators that the Basic runtime does not expose.
Verification
Simulation with PLCSIM and the HMI Runtime Simulator
- Start PLCSIM (TIA Portal > Online > Simulation > Start) and load the S7-1200 program into the simulated CPU.
- Start the HMI runtime from TIA Portal: right-click the KTP600 in the project tree > Start Runtime.
- Open the Tag simulator table (Project > Online > Tag simulation) and force
DB_Alarm.AlarmWord1to1(decimal). - The symbol must appear on the screen within one acquisition cycle (1 s by default).
- Force the value to
0; the symbol must disappear. - Force the value to
2,3,256or any other non-zero value — the symbol must not appear, which proves the range check is strict.
Verification on Real Hardware
- Download the HMI project to the KTP600 Basic (Menu > Transfer or via ProSave).
- Confirm the IP / Profibus address of the panel matches the connection configured in TIA Portal.
- From a Modbus master (e.g., a third-party PLC or a PC with Modbus Poll) write the trigger coil / register.
- Observe the symbol on the panel screen.
- Use the panel's Service > Information > Version menu to confirm firmware version and active connection.
Alternative Approaches
| Approach | Effort | Benefit | Drawback |
|---|---|---|---|
| Range 1–1 on the same Word tag | Low | No code change on PLC, just dialog configuration | Entire word is polled even if only bit 0 is used |
| Boolean tag with Range 0–1 | Low | Cleaner semantic: any non-zero value triggers | Both 1 and any stray value also trigger; not strictly a single-bit test |
| PLC pre-mask the word to 0 or 1 | Medium | Guaranteed single-bit evaluation, supports multiple alarms in one word | Additional SCL/ST code on the CPU |
| Switch the HMI to a Comfort Panel | High | Native single-bit visibility, scripting, archives, Sm@rtServer | Hardware replacement, new commissioning, certificate of compatibility needed |
| Use the KTP600 Basic as a "dumb" display with WinCC Runtime on a PC | High | Full WinCC Professional feature set | PC hardware, additional license (WinCC RT Professional) |
For typical alarm visibility (one symbol per alarm bit) the PLC pre-masking approach combined with the Range 1–1 workaround is the cleanest production solution and keeps the HMI configuration trivially portable across the entire Basic Panel family.
Performance and Update Time
The Basic Panels poll the configured HMI tags over the connection on the Acquisition cycle defined per tag (default 1 s). For a single alarm this is negligible. If you scale the same pattern to 50 or 100 alarm bits packed into a DB, prefer the following:
- One HMI
Wordtag per 16 alarm bits, polled at 1 s. - For each visible bit, configure Range 1–1 on the same word tag, but apply the per-bit mask in the SCL logic that builds the trigger word.
- Avoid creating 16 separate
Booltags; each adds its own acquisition cycle and connection overhead.
The 1 s default is appropriate for human-visible alarms. For sub-second updates, drop the acquisition cycle to 250 ms or 500 ms, but verify the S7-1200 connection is not saturated by other tags first.
Troubleshooting Matrix
| Symptom | Likely Cause | Action |
|---|---|---|
| Single-bit option is greyed out or missing | Device class is "Basic Panel" (KTP400 / 600 / 700 / 900 / 1200 Basic) | Apply Range 1–1 workaround or migrate to a Comfort Panel |
| Symbol never appears even with tag forced to 1 | HMI connection not established or wrong PLC tag address | Check Online > Accessible devices; use online monitor on the HMI tag |
| Symbol appears for value 0 as well | Visibility is configured as Range 0–1 instead of 1–1 | Set both Min and Max to 1 |
| Symbol appears for any non-zero value (e.g., 2, 3, 100) | Range 0–1 (0 to 1) is configured | Change to Range 1–1 to restrict to exactly the value 1 |
| Tag shows the right value in online monitor but the symbol does not react | Visibility animation was not added (only "Static" visibility is set) | Click the lightning-bolt icon next to Visibility and re-add the animation |
| Behavior is correct in PLCSIM but wrong on real panel | Compiled project was not re-transferred to the panel | Re-download the HMI project; verify the version in the panel's Service menu |
Frequently Asked Questions
Why does the KTP600 Basic not show the single-bit option for visibility animations?
The KTP600 Basic runs the WinCC Basic runtime image, which exposes only None and Range modes in the visibility dialog. The Single bit mode is compiled only into WinCC Comfort / Advanced / Professional used by Comfort Panels. This behavior is identical across TIA Portal V15.1 through V20 and is documented in the TIA Portal V20 device-dependency documentation.
How do I trigger a symbol from a single Modbus coil on a KTP600 Basic?
Map the Modbus coil to a Word tag on the S7-1200 (use MB_CLIENT or MB_MASTER), expose that word as an HMI tag, and configure the symbol visibility as Range with Minimum = 1 and Maximum = 1. The runtime then evaluates (TagValue >= 1) AND (TagValue <= 1), which is equivalent to a boolean test.
Will the symbol show up when the value is something other than 1?
No, not if the range is configured as 1–1. Only the exact integer value 1 triggers the visibility. For value 0 the symbol is hidden, and for any other value (2, 3, 100, 256 …) the runtime also hides it. If you want the symbol to appear for any non-zero value, use Range 0–1 instead, but be aware that this also makes the symbol appear for stray values such as 2, 3, etc.
Can I use a Bool HMI tag with the Range workaround?
Technically yes, because a Bool tag is internally promoted to a byte and the Range dialog accepts it. However, the cleanest production pattern is to keep a single 16-bit Word tag on the HMI side and pre-mask it on the PLC to either 0 or 1. This guarantees the visibility test is a strict single-bit test and keeps the panel configuration portable across the entire Basic Panel family.
Do I need to upgrade to a Comfort Panel to get proper single-bit animations?
Only if you require more than simple visibility on a single bit, for example if you want to evaluate arbitrary bit positions of a 16-bit word without PLC-side masking, use scripting, archives, or Sm@rtServer. For pure alarm symbol visibility, the Range 1–1 workaround on the KTP600 Basic is functionally equivalent to a single-bit trigger and does not require any hardware change.