Resolving TIA Portal V15.1 to V15 PLC and HMI Tag Import Failure
When exporting PLC and HMI tags from a TIA Portal V15.1 project and attempting to re-import them into a TIA Portal V15 project, the import wizard rejects the file and writes a diagnostic log. The failure is not a defect in either version, but a schema incompatibility introduced when V15.1 added the Software Units feature for S7-1500 CPUs. This article documents the exact root cause, the CSV structure difference, the supported remediation paths, and a verification procedure so the import succeeds without rebuilding the tag list manually.
1. Problem Description
The following symptoms appear when the import is attempted:
- Right-click a
PLC tagsorHMI tagsnode → Export in a V15.1 project produces a.xlsx(or CSV) file. Opening the file in Microsoft Excel shows one row per tag, with header columns such asName,Path,Data Type,Address,Comment, and — in V15.1 only —BelongsToUnit. - Opening the same export inside a TIA Portal V15 project triggers the Import wizard, which immediately fails with a log file reference and a generic "Import failed" or "File could not be read" message.
- The generated log file (
.log) reports a column mismatch, an unknown attribute, or a parser error on the first row of the V15.1 export. - HMI tag imports fail with the same behavior because the HMI tag table exporter uses the same CSV template starting in V15.1.
The export/import workflow is documented in the Siemens TIA Portal Openness: Export/Import of PLC tags reference. The same CAx import/export mechanism that drives the Openness API is used by the interactive Export/Import button on the tag table toolbar.
2. Technical Background: Software Units
Software Units were introduced in TIA Portal V15.1 (released March 2018) to allow logical partitioning of an S7-1500 CPU into named execution units. The feature requires an S7-1500 CPU with firmware V2.0 or later and is used to:
- Group program blocks, data blocks, and tags into independent, named software compartments.
- Enable partial download of unit-scoped changes to a running CPU without stopping unrelated automation sections.
- Provide a clean engineering boundary for modular machine libraries.
When a project contains at least one software unit, the tag table exporter adds a new column to the CSV output:
| Column Name | Added In | Type | Description |
|---|---|---|---|
Name |
V13+ | String | Symbolic name of the tag |
Path |
V13+ | String | Group/folder hierarchy |
Data Type |
V13+ | String | Bool, Int, Real, etc. |
Address |
V13+ | String | Symbolic or absolute I/O address |
Comment |
V13+ | String | Multi-line comment text |
BelongsToUnit |
V15.1+ | String | Software unit assignment (empty for unassigned) |
Because TIA Portal V15 was released before the Software Units feature existed, the V15 importer has no schema entry for the BelongsToUnit column. It treats the column as a malformed row, aborts the parse, and writes a log file. V15 has no upgrade path for this column because the feature itself is missing.
3. Root Cause Analysis
The root cause is a forward-version export, backward-version import mismatch. Three structural differences compound the failure:
-
Extra schema column. The V15.1 CSV header contains
BelongsToUnit, which V15's schema dictionary does not recognize. - String quoting change. V15.1 wraps fields containing commas or semicolons in double quotes per RFC 4180. V15 used a simpler separator-based parser and chokes on quoted strings that contain the configured separator character.
-
Encoding marker. V15.1 prepends a UTF-8 BOM to the CSV; V15's parser, depending on regional settings, can fail to strip the BOM and interprets the first three bytes (
0xEF 0xBB 0xBF) as part of the header name.
When the V15 importer encounters the BelongsToUnit header, it reports Error 0x8023XXXX / "Unknown column" in the log and aborts before any tag is created. This is fail-fast behavior — the importer will not skip unknown columns.
4. Diagnostic Procedure
Before applying any fix, capture the exact state of the failing export. Use this five-step diagnostic flow:
-
Reproduce the export. In TIA V15.1, right-click the
PLC tagsnode → Export. Save the file with the default name (typicallyPlcTagTableExport.xlsxor a CSV variant) into a known directory. -
Open in Excel. Launch Microsoft Excel, not LibreOffice or Notepad, and open the export. Confirm the
BelongsToUnitcolumn is present and populated. Note any tags that have a non-empty unit assignment. -
Check the import log. The import wizard in V15 writes a
.logfile in the project directory under\Logs\. Open it in Notepad. The firstERRORline typically cites the offending column index. - Compare versions. Open Help → About in both TIA Portal installations. Confirm source is V15.1 Update x (x = 1..9) and target is V15.0 or V15.1 baseline.
- Verify CPU firmware. In the V15.1 project, open the device configuration of the S7-1500 CPU and read the firmware version. If the firmware is V2.0 or later, the project supports software units and the export will contain the extra column.
5. Solution A — Remove the BelongsToUnit Column
This is the fastest remediation and is the approach confirmed working in the source engineering case. It preserves the tags and only edits the export file.
5.1 Prerequisites
- Microsoft Excel 2013 or later (or LibreOffice Calc 6.x).
- Read/write access to the export directory.
- A second blank CSV exported from the V15 project to use as a template (optional but recommended).
5.2 Step-by-Step Procedure
- Open the V15.1 export in Excel. The header row is row 1. Locate the
BelongsToUnitcolumn (typically the last column). - Select the entire column header cell and the data cells beneath it. Press Delete to clear the contents and the column.
- Right-click the column letter → Delete to remove the column entirely. The CSV must not have an empty header where the column used to be.
- Save the file using File → Save As → CSV UTF-8 (Comma delimited) (*.csv). Confirm the encoding prompt.
- Open the resulting CSV in Notepad. Verify the first three bytes are not a UTF-8 BOM (
0xEF 0xBB 0xBF). Excel typically writes the BOM; if present, save the file from Notepad with Encoding: UTF-8 and no BOM, or use Notepad++ → Encoding → UTF-8-BOM toggle off → Save. - In TIA Portal V15, right-click
PLC tags→ Import and select the cleaned CSV. The import should now succeed.
5.3 Template-Paste Variant
An even safer variant uses a fresh V15 export as a template:
- Create a tiny throwaway project in V15 with one tag. Export it to CSV.
- Open both the V15 template CSV and the V15.1 source CSV in Excel.
- Select all data rows (rows 2 onward) of the V15.1 source, then Copy.
- Switch to the V15 template, click cell A2, and Paste. The V15 template's header row stays intact and is already known to the V15 importer.
- Save as CSV (UTF-8, no BOM) and import into the V15 target project.
BelongsToUnit values are discarded by this method. If the source project relied on software unit partitioning, the imported tags will land in the default (unassigned) unit. Reassign units after the V15 project is migrated to V15.1 or later.
6. Solution B — Up-Version the Target Project
When Software Units must be preserved, the proper fix is to upgrade the target project rather than downgrade the export. TIA Portal supports forward-migration of the project archive:
- In TIA Portal V15, perform Project → Archive to produce a
.zap15archive. - Open TIA Portal V15.1 (or any later version: V16, V17, V18, V19, V20).
- Use Project → Retrieve and select the V15 archive. The portal will run a migration wizard. Confirm any prompt about CPU firmware compatibility.
- Once the project is open in V15.1, perform the tag export and re-import in the same V15.1 environment. The
BelongsToUnitcolumn is now understood and round-trips cleanly.
Up-versioning is the only path that retains software unit assignments, partial-download capability, and the unit-scoped compile/download distinction. All Siemens S7-1500 CPUs from firmware V2.0 onward support the V15.1 software units feature; later TIA Portal versions (V16+) extend but do not break the model.
7. Solution C — Openness API Round-Trip
For projects with hundreds of tag tables, manual CSV editing is fragile. Use the TIA Portal Openness API exposed in V15.1 and later to script the conversion. The relevant interface is the IEngineeringService → ExportPlcTagTable and ImportPlcTagTable methods documented in the Siemens Openness API reference.
A minimal C# snippet (TIA Openness V15.1, .NET 4.7.2):
// Open the source V15.1 project
var srcProject = tiaPortal.Projects.Open(new FileInfo(@"C:\Projects\SourceV15_1.ap15_1"));
// Export the default tag table to a temp CSV
string csvPath = Path.Combine(Path.GetTempPath(), "tags_v15_1.csv");
srcProject.PlcSoftware.TagTables[0].Export(
new FileInfo(csvPath),
ExportOptions.WithDefaults);
// Pre-process: strip "BelongsToUnit" column and UTF-8 BOM
StripColumn(csvPath, "BelongsToUnit");
StripBom(csvPath);
// Open the target V15 project
var dstProject = tiaPortal.Projects.Open(new FileInfo(@"C:\Projects\TargetV15.ap15"));
// Import the cleaned CSV
dstProject.PlcSoftware.TagTables[0].Import(
new FileInfo(csvPath),
ImportOptions.WithDefaults);
// Commit changes
tiaPortal.Projects.SaveAll();
Helper methods StripColumn and StripBom can use CsvHelper (NuGet 30.x) and a binary read/write of the first three bytes. This approach is repeatable and version-control friendly.
8. HMI Tag Import — Same Issue, Same Fix
The HMI tag table exporter in TIA Portal V15.1 uses the same CSV template as the PLC tag table exporter. The HMI Import wizard in V15 fails with the identical BelongsToUnit column error. Apply Solution A or B unchanged:
-
PLC tags node:
Project tree → PLC_x → PLC tags → right-click → Export. -
HMI tags node:
Project tree → HMI_x → HMI tags → right-click → Export. -
WinCC tag import:
Project tree → HMI_x → Connections → Tags → right-click → Import.
For WinCC Professional / Unified PC RT, the tag export uses a slightly different schema, but the V15.1 → V15 downgrade still fails on the BelongsToUnit field for any tag that participates in a software unit on the connected S7-1500.
9. Verification
After applying the fix, perform this verification sequence to confirm the import succeeded and the program is consistent.
-
Tag count check. Compare the number of tags imported (visible in the
PLC tagstable row count) with the source count. They must match exactly. -
Data type check. Spot-check five tags at random. Verify the
Data Typecolumn matches the source. A common failure isRealround-tripping asLRealif the V15.1 export used the extended type set. -
Address check. Open the tag table and confirm the
Addresscolumn (e.g.,%I0.0,%MW100) is intact. The V15 importer may silently drop malformed addresses — check the log forWARNentries. -
Compile. Right-click the
PLC_xdevice → Compile → Software (rebuild all). The compile must finish with zero errors. Any cross-reference to an imported tag that fails to resolve indicates a partial import. - Cross-reference. Use Tools → Cross-references on the imported tags. Verify the references match the source project. This catches the case where the import succeeded but renamed a tag silently.
- HMI compile. For HMI imports, run Compile → Software (rebuild all) on the HMI device. Check the output for tag resolution warnings.
10. Compatibility Matrix
| Source TIA | Target TIA | S7-1500 Firmware | Software Units in Source | Direct Import Result | Recommended Action |
|---|---|---|---|---|---|
| V15.0 | V15.0 | Any | No | OK | None |
| V15.1 | V15.1 | ≥ V2.0 | Yes / No | OK | None |
| V15.1 | V15.0 | ≥ V2.0 | Yes | FAIL | Solution A or B |
| V15.1 | V15.0 | < V2.0 | No (not available) | OK | None |
| V16 / V17 / V18 | V15.1 | ≥ V2.0 | Yes | FAIL (extra columns) | Solution B (up-version target) |
| V16+ | V16+ | ≥ V2.0 | Yes / No | OK | None |
11. Preventive Measures
- Standardize the team on one TIA Portal version. Mixing V15 and V15.1 in a multi-engineer project is the single largest source of this class of import failure. Siemens recommends keeping the engineering environment on the latest installed update (currently V20 with V15.1 being the legacy minimum).
-
Archive before migrating. Always run Project → Archive in the source version before opening the project in a newer version. A
.zaparchive is the only guaranteed-recoverable artifact. - Document software unit assignments. Before any V15 → V15.1 → V15 round trip, export a separate CSV listing each tag's unit assignment. This list is the recovery path if Solution A is used and the unit information is discarded.
- Test with a sandbox project. Before exporting 5,000 tags from a production V15.1 project and importing into V15, perform the workflow on a two-tag sandbox project. This takes five minutes and prevents multi-hour rework.
12. Frequently Asked Questions
What is the BelongsToUnit column in a TIA Portal V15.1 tag export?
It is a CSV column added in TIA Portal V15.1 that records the Software Unit assignment of each tag. Software Units are an S7-1500 partitioning feature introduced in V15.1 that requires CPU firmware V2.0 or later. TIA Portal V15 does not recognize this column and aborts the import.
Can I import V15.1 tags into V15 without losing data?
Yes, but only the data recognized by V15. Open the V15.1 export in Excel, delete the BelongsToUnit column, save as CSV UTF-8 without a BOM, and import. The tag names, data types, addresses, and comments are preserved. Software Unit assignments are lost and must be re-applied if the target project is later upgraded to V15.1 or later.
Why does the import create a .log file in the project directory?
The TIA Portal CAx import/export pipeline (the same pipeline used by the TIA Portal Openness API) writes a diagnostic log whenever an import is rejected. The log contains the parser error, the offending line number, and the column that caused the failure. Open the log in Notepad and read the first ERROR line to identify the issue. Full API documentation is at the Siemens TIA Portal Openness documentation portal.
Does this issue affect S7-1200 projects?
No. Software Units are an S7-1500-only feature. S7-1200 tag exports in V15.1 do not contain the BelongsToUnit column, and a V15.1 → V15 round trip works normally for S7-1200 tag tables. The failure is exclusive to projects that contain at least one S7-1500 CPU with firmware V2.0 or later.
Is it faster to upgrade the target V15 project to V15.1 instead of editing the CSV?
For projects that must preserve software unit assignments, yes. The upgrade path uses Project → Archive in V15 followed by Project → Retrieve in V15.1, which runs the Siemens migration wizard. This preserves all tag data including unit assignments, at the cost of moving the target project off V15. For pure PLC tag re-imports with no software unit dependency, the CSV column-removal approach (Solution A) is faster and does not change the target project's TIA version.