Problem: Technology Object (TO) Error Strings Are Not Editable in the WinCC Flexible Alarm Editor
A SIMOTION controller emits runtime errors from its Technology Objects (TOs) — axes, external encoders, cams, synchronous operations, paths, and following objects. These TO alarms are visible on a WinCC Flexible panel as soon as the SIMOTION connection is configured and the Alarm view is bound to the SIMOTION alarm buffer, but the alarm text itself cannot be edited from the WinCC Flexible alarm editor. The HMI shows the standard German or English default text shipped with SCOUT, and the engineer looking for an entry in the WinCC Flexible "Alarm Management" editor finds nothing because those TO messages are not stored as WinCC Flexible bit-message or analog-message records. They are owned by the SIMOTION project.
The solution is to translate the SIMOTION-side language text from inside SCOUT (or the SIMOTION Scout TIA Portal successor), not from the HMI. SCOUT stores every TO alarm, configuration message, and user text as a language-dependent resource. The resource can be exported as a flat text file using the SCOUT project menu, translated with any text editor that preserves UTF-8, and re-imported. The procedure below walks through every step, including the verification checks that confirm the translated string has actually reached the runtime panel.
How SIMOTION TO Alarms Differ from Standard PLC Alarms
SIMOTION separates alarm generation into two layers:
-
AlarmS (technological alarms) — User-defined or system alarms raised by MCC (Motion Control Chart), LAD/FBD, or DCC (Drive Control Chart) source code via the
_alarmS()command. These alarms are created in SCOUT and live as AlarmS configuration records in the project tree. They can be edited in the SCOUT alarm editor and translated directly. - Technology Object alarms (TO alarms) — System messages raised automatically by the TO kernel when an axis, encoder, or cam object enters a fault state. The trigger (the alarm number, e.g. 20005 "Drive error") is fixed by the SIMOTION firmware; only the human-readable text can be localized. The text is stored in the project's language file, not in any visible editor table.
When WinCC Flexible shows a TO alarm, the panel receives the alarm number and the current-language text from the SIMOTION runtime over the S7/MPI/Profibus/Profinet connection. The HMI never "owns" the text — it just renders what SIMOTION sends. Therefore the translation point is SCOUT, not the panel configuration.
Architecture: Where TO Alarm Text Lives in SCOUT
The SIMOTION project tree holds language resources in two layers that are easy to confuse:
| Resource | Location in SCOUT | Editable through |
|---|---|---|
| Project language texts (user-defined) | Project > Languages > Language texts | SCOUT language editor or text export |
| Library / system texts (TO alarms, configuration messages) | Embedded in SCOUT installation; bound to project on first compile | External text export via "Language Text" menu |
| AlarmS configuration records | TO / program node > AlarmS | Alarm editor (direct) |
| HMI-side alarm records (bit/analog) | WinCC Flexible project | WinCC Flexible alarm editor (does not affect TO alarms) |
TO system messages live in the second row. They are not visible in the SCOUT language editor and not in the AlarmS editor — they are only reachable through the dedicated export/import utility described below. This is the source of the recurring confusion in field reports: "I exported the AlarmS records and nothing useful is in there." The AlarmS export is empty for TO messages because the messages are not AlarmS records.
Prerequisites
- SCOUT V4.4 or later (V5.x recommended) or SIMOTION Scout TIA Portal. The SCOUT language export feature exists in all V4.x maintenance releases and all V5.x releases. Refer to the SIMOTION documentation overview for the manual bundle applicable to your firmware.
- SIMOTION runtime firmware V4.4 or higher on the controller. Older firmware versions (V4.0, V4.1, V4.2) do not support multilingual TO alarm text and will display only the master-language string.
- WinCC Flexible 2008 SP2 / SP3 or WinCC Comfort/Advanced V11 or later on the engineering station.
- An HMI connection from the panel to the SIMOTION controller that is configured as an "SIMOTION" connection (not a generic S7 connection), so the alarm view reads the SIMOTION buffer.
- Read/write permission on the SCOUT project directory. The language export writes a sidecar file.
- A UTF-8 capable text editor (Notepad++, VS Code, or UltraEdit). Windows Notepad saves in ANSI by default and will mangle non-ASCII characters.
Step-by-Step: Exporting TO Alarm Text from SCOUT
- Open the SCOUT project that contains the affected TO.
- Confirm the project has at least two languages active. Open Project > Languages. If only one language is listed, add a target language (for example, "English (USA)" or "Italian") before continuing. SCOUT will not produce a translation skeleton for languages that do not exist in the project.
- From the menu bar, click Project > Language Text > Export.... (In older V4.x versions the menu entry reads Project > Export Language Texts.)
- Select the target language(s) to translate. Selecting all active languages at once is the standard workflow — each language appears as a separate column in the export file.
- Choose an output path on a local drive (network shares may corrupt line endings on some versions of SCOUT). The export produces a
.txtfile with a tab-separated column per language and a comment header listing the SCOUT build number and project GUID. - Click Export. SCOUT writes the file and reports the count of strings exported in the message window at the bottom of the IDE. The line "Exported N language texts" should be non-zero — a value of 0 means the active languages overlap the master language 1:1 and the import file will not contain TO system messages either.
Translating the Exported Text File
Open the exported file in a UTF-8 capable editor. The structure is:
// SIMOTION Language Text Export
// Project: MY_PROJECT
// Languages: de-DE; en-US
// Source: Master
ID\tde-DE\ten-US
20005\tAntriebsfehler\tDrive error
20006\tAchse nicht referenziert\tAxis not homed
…
Translate only the right-hand column (target language). Do not modify the numeric ID column or the master-language column — SCOUT keys all alarms by the numeric ID and will fail to match on import if the ID column is altered. Save the file in UTF-8 (no BOM) to keep SIMOTION consistent with its internal encoding. The maximum line length accepted by the SCOUT importer is 1024 characters; longer translations are silently truncated on import.
Special tokens that must be preserved verbatim:
-
{0}, {1}, {2}— placeholders for runtime parameter values inserted by the TO kernel (setpoint, actual, position). Translate only the surrounding text. -
\n— explicit line break. Used in long axis-fault messages. Keep the break in roughly the same position in the translation so the alarm view does not wrap unexpectedly. -
$ON/$OFF— boolean state tokens. Do not translate.
Re-Importing Translated Text and Binding to the Project
- Save the edited
.txtfile. - In SCOUT, choose Project > Language Text > Import.... Select the edited file.
- SCOUT compares every line against the master text. Mismatched IDs are reported in the message window; fix any reported IDs before continuing.
- Click OK. SCOUT writes the translated strings into the project's language resource and recompiles the affected TO. Compilation time depends on the number of TOs; a project with 50 axes typically takes 30–90 seconds.
- Download the project to the SIMOTION controller (target system download, including the language resource). A regular online configuration download is not sufficient — the language resource is part of the project data set and requires a full download or a targeted language-resource download.
Displaying Translated TO Alarms in WinCC Flexible
To make WinCC Flexible render the new language, three things must be true:
- The WinCC Flexible project must have the same target language active in Project > Languages. If the project only has German and English, an Italian translation of the TO text will not appear; the HMI will fall back to the SIMOTION master language.
- The Alarm view on the panel must be configured to honor the project's current runtime language. Open the Alarm view properties and verify that Use project language is enabled and that no per-alarm language override is set.
- The HMI connection must be of type "SIMOTION" with the alarm buffer pointer configured. Confirm in WinCC Flexible under Connections > [SIMOTION connection] > Alarm Settings that the alarm number range starts at the value expected by your SIMOTION project (default 1).
Configuring Runtime Language Switching
SIMOTION and WinCC Flexible switch languages in two coordinated steps. The HMI is the master; it signals a language change to the controller over the connection.
- In WinCC Flexible, place a language-selector button on the start screen. Map the button to the system function
SetLanguagewith the appropriate language ID (e.g., 0x0409 for English-US, 0x040C for French). - On the SIMOTION side, no additional configuration is required when the runtime language follows the HMI language. The SIMOTION runtime tracks the language ID communicated by the panel and selects the matching column from its internal language resource.
- If the application drives language switching from the controller instead of the HMI (rare, but supported), set the language ID with the SIMOTION system function
_setLanguage(). The HMI will follow because WinCC Flexible re-queries the SIMOTION alarm buffer on every language change.
Verification: Confirming the Translated String Reaches the HMI
- Force a known TO alarm. The fastest method is to command an axis into a fault by issuing an
MC_Powerwith an invalid enable signal, or by triggering a homing command without the drive being enabled. Note the alarm number reported in the SCOUT message window. - On the HMI, switch the language to the target language. The Alarm view should refresh within 1–2 seconds (the SIMOTION alarm buffer is polled cyclically, default 1 s).
- Confirm that the alarm text now matches the translated string. If the HMI still shows the master-language text, the SIMOTION runtime was not reloaded with the new language resource — repeat the download step in SCOUT.
- Check the SCOUT diagnostic buffer (Target system > Diagnostics buffer) for entries with severity "Information" labeled
Language resource loaded: <language ID>. A missing entry means the download did not include the language resource.
Troubleshooting Matrix
| Symptom | Likely Cause | Action |
|---|---|---|
| Export file is empty (0 lines) | Active project languages identical to master | Add a new target language in Project > Languages and re-export |
| Export contains AlarmS records but no TO alarms | Wrong menu used (Export AlarmS instead of Language Text) | Use Project > Language Text > Export instead |
| Import reports "ID not found" for every line | Header row edited or column separator changed from tab to semicolon | Restore the tab separator; do not touch the ID column |
| Translated text shows question marks (?) on the HMI | Editor saved the file in ANSI/Windows-1252 instead of UTF-8 | Re-save the file in UTF-8 (no BOM) and re-import into SCOUT |
| HMI shows the master language even after language change | WinCC Flexible project missing the target language | Add the language in WinCC Flexible Project > Languages and recompile the HMI image |
| HMI shows the new language for AlarmS but not for TO alarms | SIMOTION runtime was not reloaded with the language resource | Perform a full project download (not online-only) and verify the diagnostic buffer entry |
| Truncation of long translations on the HMI | Source string > 1024 characters | Shorten the translation; the SCOUT importer truncates silently |
| Placeholders {0}/{1} replaced by literal text on the HMI | Placeholder token accidentally translated (e.g., "{0}" -> "{zero}") | Restore the original placeholder tokens and re-import |
Edge Cases and Field-Proven Caveats
DCC-generated TO messages. When DCC (Drive Control Chart) blocks raise messages, those messages go through the AlarmS path, not the TO system message path. They appear in the AlarmS editor and can be translated there directly. Do not expect to find them in the language export.
Project consistency across multiple engineering stations. The language resource is stored in the SCOUT project file. If two engineers edit the project in parallel using source control (SCC), the language resource must be merged carefully. Conflicts in the language file typically present as duplicate ID rows. Resolve by keeping the union of IDs and the most recent translation column.
Upgrade from SIMOTION V4.2 to V4.4+. Older projects do not contain a multilingual TO alarm resource. After upgrading, perform the language export once even if no translation is planned — this creates the resource file in the project. Without this initial export, switching the HMI language will not affect TO messages.
Compact HMI panels (KTP400, TP177B). These panels only support a subset of WinCC Flexible languages. If the target language is not supported by the panel firmware, the HMI silently falls back to the master language regardless of SIMOTION configuration. Verify the language list in the panel type's datasheet.
Connection redundancy (Profibus + Profinet). If the SIMOTION controller is reachable via two connections and the HMI is configured to use the secondary connection, the alarm buffer pointer must be set on the secondary connection as well. Symptom: language switch takes effect on AlarmS messages but not on TO alarms.
Why are TO alarms not editable from WinCC Flexible?
TO alarms are owned by the SIMOTION runtime, not by the HMI project. WinCC Flexible only renders the text that SIMOTION sends; the translation must be performed in SCOUT via the Language Text export, not in the WinCC Flexible alarm editor.
Which SCOUT menu exports the TO system messages?
Use Project > Language Text > Export.... The Project > Export AlarmS menu only writes user-defined AlarmS records and will be empty for TO system messages.
Do I need to download the SIMOTION project again after translation?
Yes. The language resource is part of the project data set. An online-only configuration change does not reload the language resource. A targeted download of the language resource or a full project download is required, and the diagnostic buffer should show a "Language resource loaded" entry.
How do I keep runtime placeholders like {0} intact in the translation?
Translate only the surrounding prose and leave the placeholder tokens ({0}, {1}, {2}) verbatim. These tokens are replaced at runtime by the SIMOTION kernel with the actual axis, position, or setpoint value.
What encoding must the exported text file use?
UTF-8 without BOM. Editors that default to ANSI (legacy Windows Notepad) will replace non-ASCII characters with question marks on the HMI. Use Notepad++, VS Code, or UltraEdit and verify the encoding before re-importing.
Can a single translation file hold multiple target languages?
Yes. The SCOUT export produces one column per active language. Translate each non-master column in place and re-import the same file; SCOUT updates every target language in a single operation.