Problem Description
Operators running WinCC V7.0 (and the related service packs V7.0 SP1 through SP4) frequently encounter an unreadable printout when sending the contents of a configured AlarmControl (also referred to as WinCC Alarm Control Classic) to a physical or virtual printer. The runtime picture shows a perfectly arranged alarm table, but the print job emerges with the following symptoms:
- Columns printed at extremely different widths: one column might be ~10 pixels wide while the timestamp column expands to 200+ pixels and pushes other fields off the page.
- Headers wrap onto multiple lines or get truncated.
- The message text column collapses to a single-character gutter, making the actual alarm information impossible to read.
- Numeric fields such as Number, State, or Acknowledgement print at extreme aspect ratios that make the table unusable for compliance auditing.
The defect is purely cosmetic at print time; the runtime AlarmControl still displays correctly. The cause is the interplay between three components: the AlarmControl picture object, the Alarm Logging editor's Message Block configuration, and the Report Designer layout used during the print request.
Root Cause Analysis
WinCC AlarmControl does not store per-column pixel widths internally. Column widths in both the runtime grid and the printed report are derived from the character length of the corresponding Message Block in the Alarm Logging database schema. Each Message Block (Date, Time, Number, State, Class, Text 1…Text 10, Tag, Process Value, Operator, Comment, etc.) carries two configured attributes:
| Attribute | Location | Effect on Width |
|---|---|---|
| Length (characters) | Alarm Logging editor → Message Blocks → Properties → Length | Sets the data column VARCHAR size and the column-rendering width. |
| Position/Alignment | Alarm Logging editor → Message Blocks → Alignment | Determines text alignment within the column (Left/Center/Right). |
| Visible/Hidden | AlarmControl → Configuration → Message Blocks → check box | Controls whether the column appears in the grid and in the printed report. |
When a user adds a new Message Block (for example, Text 7 to capture an operator-supplied comment) but leaves the default Length field untouched, the Alarm Logging editor seeds the new block with a length of 0 or 255 depending on the block type. The AlarmControl then attempts to compute a printable width using the formula:
column_width_px = block_length_chars * char_em_width_factor * DPI_scale + padding
A default length of 200 for a free-format text block versus a length of 10 for the Number block produces the exact 1:20 ratio that operators describe as "tiny columns next to a huge wall of whitespace." The "Apply project settings" check box in the AlarmControl configuration only governs whether the runtime column widths match the design-time column widths — it does not change the underlying block lengths.
Method 1 – Configure Alarm Logging Message Blocks (Fastest Fix)
For most installations, sizing the Message Blocks correctly resolves the print width problem without touching Report Designer at all.
Step 1 — Open the Alarm Logging Editor
- In WinCC Explorer, right-click Alarm Logging and select Open.
- In the navigator tree, expand the project, then select Message Blocks.
Step 2 — Audit Current Block Lengths
The default WinCC V7 block schema is:
| Block Name | Suggested Length (chars) | Rationale |
|---|---|---|
| Date | 10 |
DD.MM.YYYY = 10 chars |
| Time | 8 – 11 |
HH:MM:SS (8) or HH:MM:SS.ms (11) |
| Milliseconds | 3 – 6 | Trailing millisecond digits, optional |
| Number | 8 | Alarm tag number, padded |
| State | 1 – 2 | Single status glyph + color, plus spare |
| Class | 10 | Message class name (Acknowledge, Fault, System, etc.) |
| Text 1 (Message text) | 40 – 60 | Primary operator-facing message |
| Text 2 / Text 3 (Process values) | 30 | Embedded tag values |
| Text 4 (Point of error) | 25 | PLC source address |
| Text 5 (Event) | 15 | Operator action history |
| Text 6 / Text 7 (comment, free fields) | 80 – 120 | Free-format, but cap to prevent runaway width |
Anything larger than these recommended lengths dramatically inflates the printed column width because the character multiplier scales the print width non-linearly with the table's overall font size.
Step 3 — Adjust Each Block
- Right-click the Message Block name (for example, Text 1) and select Properties.
- Change the Length field from the existing value (commonly 0, 200, or 255) to a value matching your largest expected text payload, plus a safety margin of 5–10 characters.
- For boolean blocks (State, Acknowledgement, Single Acknowledgement), keep length at 1 or 2. Expand only if you intend to embed a word label.
- Confirm with OK.
CCAlarmService).Step 4 — Recompile the Project
In WinCC Explorer, select the project root node and click Compile → OS > Server. This regenerates the AlarmControl display files (*.pdl) and forces all client stations to redistribute the alarm schema on next reload.
Method 2 – Build a Custom Print Layout with Report Designer
If the AlarmControl must remain on screen with its current 5–7 columns but the printed copy must obey a different visual layout (legal-size paper, landscape, condensed header), a custom Report Designer layout is required.
Report Designer Architecture in WinCC V7
Report Designer is a separate application embedded in WinCC Explorer, sharing the WinCC Explorer shell but isolating its own document tree. Key terminology:
| Term | File Type | Role |
|---|---|---|
| Layout |
@AlarmLogging.rpl or user-defined .rpl
|
The print template that defines static text, table positioning, page orientation, margins, and column widths. |
| Print Job | Stored under Print Jobs node in WinCC Explorer | Defines which layout to use, which trigger fires the print, and which Alarm Control supplies the data. |
| Report Data Connector | OLE DB provider inside Report Designer | Connects the layout to runtime archive tables such as MS_AlarmView. |
For WinCC V7 the canonical manual is the SIMATIC HMI WinCC V7.0 SP4 — Report Designer Programming Manual published by Siemens Industry Online Support.
Step-by-Step — Custom AlarmControl Print Layout
Prerequisites
- WinCC V7.0 SP3 or later installed on the engineering station.
- Project open in WinCC Explorer; project has at least one working AlarmControl picture.
- Microsoft SQL Server (the WinCC project database) accessible — the layout will use an OLE DB connection.
Procedure
- Open Report Designer. In WinCC Explorer right-click Report Designer → Open. A blank layout document appears with a Page Header, Report Header, Body, Report Footer, and Page Footer band already pre-defined.
- Set the paper geometry. Select Page > Page Setup. Switch to the paper size you require (e.g. A4 landscape) and configure margins (12 mm top/bottom, 10 mm left/right is typical).
- Insert the AlarmControl table object. From the toolbox on the left select the Table control and place it inside the Body band. Right-click the table and select Runtime connection.
-
Select the AlarmOCX data source. In the dialog that opens, choose Alarm Control Classic as the data provider. Confirm the picture name, e.g.
AlarmWindow, and the Alarm Logging database. -
Add columns and define widths. Double-click the table to open the column editor. Add one column per Message Block you wish to print. For each column set the Width (in mm or inches) explicitly. The values you enter here override the Alarm Logging defaults.
+-----+------+--------+--------+----------+
| Date| Time | Number | State | Text 1 |
| 25mm| 22mm | 18mm | 12mm | 90mm |
+-----+------+--------+--------+----------+
total = 167mm < usable_width = 257mm (A4 landscape minus margins) - Test the data binding by pressing F5 (Preview). The preview window shows the last N alarms that were present at the time the print job was last triggered.
-
Save the layout to the project's \<project>\wincc\winccprj\<server>\Reports directory with a meaningful name, e.g.
@AlarmPrint_A4.rpl.
Linking the Layout to a Print Job
- Close Report Designer.
- In WinCC Explorer, right-click Print Jobs → New Print Job.
- Name the job, e.g.
AlarmDailyReport. - In the Print Job properties choose the previously created layout (
@AlarmPrint_A4.rpl). - Under Trigger select User-driven and reference the AlarmControl picture object by name.
- Ensure Print on request only is checked if operators must approve each print.
Adjusting Column Width Manually in Layout Editor
If the column width dialog in Report Designer does not expose a numeric property (a known issue with older V7.0 builds when the so-called Dynamic Wizard is disabled), you can force widths through the XML representation of the layout:
- Close WinCC Explorer to release locks on the
.rplfile. - Open the layout file in a text editor such as Notepad++.
- Locate each
<Column>element and add or modifyWidth="600"(the unit is twips: 600 twips = 1 inch).
<Table>
<Columns>
<Column Name="Date" Width="1500" />
<Column Name="Time" Width="1400" />
<Column Name="Number" Width="1100" />
<Column Name="State" Width="800" />
<Column Name="Text_1" Width="3500" />
</Columns>
</Table>
- Save the file (ensure the encoding remains ANSI; WinCC V7.0 cannot read UTF-8 layouts).
- Re-open the project and immediately re-test by triggering the print job.
Verifying the Output
After either Method 1 or Method 2, validate the result with the following checklist:
- In WinCC Explorer: open AlarmControl, right-click the AlarmControl preview, and verify that the on-screen columns match the configured widths.
- In runtime: activate the project (or run WinCC Runtime) on the engineering station. Trigger the print via the AlarmControl toolbar Print button.
- In the printer queue: locate the spooled PDF or physical page in landscape orientation, count the columns, and verify all pages are present.
- In AlarmControl > Properties > Message Block: confirm that the block lengths match the values documented in the engineering log.
-
In the SMS audit table: open SQL Management Studio against the WinCC project database and verify
SELECT TOP 10 * FROM MS_AlarmViewreturns rows with the new column width attributes.
Common Configuration Pitfalls
| Symptom | Root Cause | Remedy |
|---|---|---|
| Widths revert after every project activate | Block lengths defined in a CSS file but not in Alarm Logging. | Edit the lengths directly in Alarm Logging editor; CSS overrides are only for runtime CSS styling, not for column widths. |
| Print is empty | Print Job references a deactivated AlarmControl picture. | Open the picture in graphics designer and verify the picture name matches the one bound in the Print Job. |
| Columns print rotated 90° | Page Setup still in portrait while table width exceeds page width. | Switch layout to landscape or reduce the number of visible columns. |
| Page break in middle of row | Body band height smaller than row height. | Right-click the table → Properties > Repetition Behavior > Prevent partial rows. |
| Width looks fine on screen but bad on print | Render scaling factor between AlarmControl zoom (default 100%) and printer DPI. | Set Printer scale to Fit on page under Page Setup. |
| Print job triggers but no output at all | Report Designer runtime DLL not registered. | Re-register via regsvr32 "%ProgramFiles(x86)%\Siemens\Automation\WinCC\ReportDesigner\ReportDesigner.dll" as Administrator. |
| Excel export works but print fails | Default printer not set on WinCC server. | Open Windows Devices & Printers on the runtime server and set a default network or local printer. |
Upgrading From WinCC V7.0 to V7.4/V7.5 Behavior Differences
Operators porting fixed V7.0 projects to modern WinCC V7.4 or V7.5 should be aware of three material differences:
- Block length cap. V7.4 SP1 introduces a hard cap of 128 characters per Message Block to prevent accidental runaway widths. Projects migrated from V7.0 with legacy 200/255-char blocks are automatically clamped on first compile.
-
Report Designer now uses Visual Studio-style XML tags. The
.rplfile format is binary-compatible, but the column width property moved fromWidthtoColumnWidthMillimeters. Older manually-edited.rplfiles may need migration using the Report Designer Migration Wizard. - WinCC Audit — Alarm-control printing as evidence. V7.4 added a Print as Evidence mode that adds an SHA-256 signature line to each alarm printout, useful for 21 CFR Part 11 or ISA-95 audit environments.
When rebuilding a legacy AlarmControl printout on a new runtime, prefer building the layout from scratch in the modern Report Designer rather than trying to hand-edit XML.
Hardware Considerations
Because character-to-pixel width conversion depends on the installed printer driver and DPI, two sites running the same project on different printers can see different column widths. Always test on the printer model that will be deployed in production:
- HP LaserJet Pro M404 (203 DPI): widths scale cleanly at 100%.
- Generic Windows PDF Printer (300 DPI): may overshoot by 10% on wide columns.
If you must support multiple printer types per site, deploy a per-printer .rpl and assign it through the Print Job configuration based on the Windows Printer name.
Cross-References to Other WinCC Controls
The same Message Block / Column Width principle applies to other WinCC controls that archive data and offer print jobs:
- WinCC User Archive — table print layout uses the same Report Designer tool with User Archive as the data source.
- WinCC Online Table Control — dimensioning follows tag archive block length definitions.
- WinCC Ruler Control — column widths in the report come from the archive configuration, not the picture editor.
Summary Field Configuration
Always commit Message Block lengths to engineering documentation. A minimal audit table per project is:
Block | Length | Alignment | Visible | Notes
-------------+--------+-----------+---------+----------------------
Date | 10 | Left | Yes | DD.MM.YYYY
Time | 11 | Left | Yes | HH:MM:SS.mmm
Milliseconds | 3 | Left | No | Included via Time
Number | 8 | Right | Yes | Leading zeros
State | 1 | Center | Yes | Glyph only
Class | 10 | Left | Yes |
Text_1 | 60 | Left | Yes | Primary text
Text_2 | 30 | Left | Yes | Tag value
Text_4 | 25 | Left | Yes | PLC address
Text_7 | 80 | Left | No | Free comment, hidden
FAQ
Why does my AlarmControl print job print extra columns with tiny widths when none are visible on screen?
WinCC Hides columns via a runtime flag, but the print layout still requests the underlying table schema including all Message Blocks. Open the layout in Report Designer and uncheck any block you do not want printed, or set its width to zero.
Does the "Apply project settings" option control printed column widths?
No. That option only synchronizes on-screen width changes to all configured columns. Printed column widths are derived from Alarm Logging's Message Block Length attribute. Configure the blocks first, then revisit Apply project settings.
Which Siemens manual covers Report Designer in detail?
The WinCC V7 Report Designer — Programming and Operating Manual published on the Siemens Industry Online Support portal contains the full reference; it is also accessible through the in-product Help under WinCC Explorer → Report Designer → Help. For older V7.0 builds the original WinCC V7.0 SP4 documentation set remains available.
Can I edit a layout's column widths without rebuilding the whole report?
Yes. Either resize columns visually in Report Designer's column header, or close the project, edit the .rpl XML, and adjust each <Column> Width tag (in twips). Save under ANSI encoding, then re-open WinCC Explorer.
Will migrating a V7.0 project to V7.5 preserve my custom widths?
Mostly. The Report Designer auto-converts the .rpl and applies its built-in 128-character block length cap. Verify the printed preview immediately after migration and adjust any blocks that were silently truncated.