Skip to content

Verified: Coming from TIA Portal

Each claim the Coming from TIA Portal page makes, with the tests that prove it in the last green CI run: 8 of 16 verified. The claims live in docs/claims/tia-portal.yaml.

Last green CI run 16 Oct 2026, 14:48 UTC on c7618d3 · all runtime claims

CTIA-001 verified

Manifest tags (the PLC tag table) are in scope in every program without a declaration, `VAR_EXTERNAL` stays legal, and a function block reaches a tag only through its own `VAR_EXTERNAL`.

where the docs say so

CTIA-002 verified

A tag's `type:` is any elementary type, a UDT or an `ARRAY`, and its `init:` must agree with it.

where the docs say so

CTIA-003 verified

`init:` seeds a TIME member from `T#2s`, `2s` or milliseconds, and an array member from a list.

where the docs say so

CTIA-004 verified

An error in one block is reported once, on its own line; the blocks that use it are not marked.

where the docs say so

  • pass TestCheckGoldenLibraryErrorOnce in cmd/naut
  • pass TestCheckLibraryErrorAttributedWhenLibraryNotChecked in cmd/naut

CTIA-005 partly verified

A library is files in `lib/`, composed ahead of every task.

where the docs say so · A lib/ fixture's blocks are shown usable from the project's one task (check and acceptance suite pass); composition ahead of every task in a multi-task project is not asserted.

CTIA-006 partly verified

`CASE` labels that are named constants (`VAR CONSTANT`, a project constant or an enumeration member) end their clause, and two labels with one value are an error naming both.

where the docs say so · `VAR CONSTANT` and enumeration-member labels, and the duplicate-value error, are asserted; a project constant (`VAR_GLOBAL CONSTANT`) as a CASE label is not exercised.

CTIA-007 partly verified

Identifiers are case-insensitive: any casing names the one declaration, in ST, ladder, FBD and SFC; diagnostics, live values and the API show it as declared.

where the docs say so · Resolution is covered in all four languages; the "shown as declared" part is only checked for FBD call spelling, not in live values or the API.

  • pass TestConformance/st-case-insensitive in lang/conformance (3 of 3 passed)
  • pass TestLowerCaseInsensitiveIdentifiers in lang/st
  • pass TestCaseInsensitiveCallsKeepSpelling in lang/fbd

CTIA-008 verified

The SCL `#name` prefix is rejected everywhere with "the # prefix is Siemens SCL syntax; write the name without it".

where the docs say so

  • pass TestHashPrefixRejectedEverywhere in lang/st
  • pass TestHashPrefixDiagnosed in lang/conformance (3 of 3 passed)

CTIA-009 verified

`VAR_TEMP` starts every call (and every scan of a program) at its initial value, while `VAR` keeps its value.

where the docs say so

CTIA-010 partly verified

`REGION ... END_REGION` groups statements and opens no scope; it folds in the editor and shows in the Outline.

where the docs say so · Runtime effect is tested; folding in the editor and the Outline entry are editor behaviour with no runtime test.

CTIA-011 verified

User constants are declared with `VAR CONSTANT` in a block, or with `VAR_GLOBAL CONSTANT` in a `lib/` file for the whole project.

where the docs say so

CTIA-012 partly verified

`Word.%X3` bit access and `%B`/`%W`/`%D` partial access work, with Logix's `Word.3` as an alternative spelling, and writing a bit leaves the word's other bits alone.

where the docs say so · %X and %B are exercised; %W and %D are not, and "bounded by the declared type" has no negative test.

CTIA-013 verified

Standard timers carry the IEC pins: `t(IN := Run, PT := T#5S); Done := t.Q;` times PT and raises `Q`.

where the docs say so

CTIA-014 partly verified

Any block takes `EN` (TRUE when unbound) and gives `ENO`.

where the docs say so · Reworded after the page changed (#293): it used to say standard blocks have no EN/ENO. fbd-en-eno asserts EN FALSE skipping a call and ENO for LIMIT, CTU and DIV in ST and FBD; every call there binds EN, so "TRUE when unbound" is asserted only implicitly (calls that leave EN off run), and "any block" rests on those three.

CTIA-015 partly verified

Execution follows source order by network, with a block evaluated before its readers.

where the docs say so · Tested for FBD networks; ladder rungs run in source order but that is not separately asserted.

  • pass TestNetworksRunInOrder in lang/fbd

CTIA-016 partly verified

An unconnected input of a block call must be bound or dropped from the call.

where the docs say so · The test asserts that an FBD call with defaulted inputs dropped compiles; that an input left open (`_`) is refused (#205) has no test.

  • pass TestPickerLeavesDefaultedInputsUnbound in lang/fbd