Verified: Coming from Studio 5000
Each claim the Coming from Studio 5000 page makes, with the tests that
prove it in the last green CI run: 8 of 20 verified, 2 with no test yet.
The claims live in docs/claims/studio-5000.yaml.
Last green CI run 16 Oct 2026, 14:48 UTC on c7618d3 · all runtime claims
C5K-001 partly verified
A set coil `( S Tag )` latches the tag and a reset coil `( R Tag )` unlatches it, as `OTL` and `OTU` do; the latch holds after the rung goes false.
- pass
TestConformance/ld-coils/S coil latches, R coil unlatches, R wins a same-scan tieinlang/conformance
C5K-002 verified
A pulse coil `( P Tag )` is TRUE for exactly one scan when the rung condition rises, and `( N Tag )` for exactly one scan when it falls (`OSR`/`OSF` as output instructions).
- pass
TestConformance/ld-coils/P coil is TRUE for exactly one scan on the rising edgeinlang/conformance - pass
TestConformance/ld-coils/N coil is TRUE for exactly one scan on the falling edgeinlang/conformance - pass
TestConformance/ld-coils/first scan with A already TRUE counts as a rising edgeinlang/conformance
C5K-003 partly verified
An edge contact `+Tag` passes power for one scan on the rise and `-Tag` for one scan on the fall, standing in for `ONS` at a position in the rung, with no storage bit to declare.
- pass
TestConformance/ld-coils/+ contact passes one scan on the rise, - contact one scan on the fallinlang/conformance - pass
TestEdgeTrigNamesMatchTheCompilerinlang/ld
C5K-004 partly verified
Branches `[ a | b ]` are parallel legs, nested to any depth.
- pass
TestConformance/ld-coils/nested branch, bare leg passes at onceinlang/conformance - pass
TestConformance/ld-coils/nested branch, FB leg is Q false at PT-1ms, true at PT, drop resetsinlang/conformance
C5K-005 verified
`t:TON(PT := T#5S)` stands in for `TON t PRE 5000`: `t.Q` is the `.DN` bit, TRUE once PT has elapsed, and `t.ET` is the `.ACC`, a `TIME`.
- pass
TestConformance/fb-ton/Q false at PT-1ms, true at PT, ET clamps at PTinlang/conformance
C5K-006 verified
`t:TOF(PT := T#5S)` keeps `Q` TRUE for PT after `IN` drops.
- pass
TestConformance/fb-tof/Q holds for PT after IN falls, drops at PT, ET clamps at PTinlang/conformance
C5K-007 partly verified
`c:CTU(PV := 10, R := ResetC)` counts rising edges of the rung power (a held input counts once), `c.Q` goes TRUE at PV and the `R` pin resets it.
- pass
TestConformance/ld-coils/FB-only rung (no coil) still runs, its outputs read elsewhereinlang/conformance - pass
TestFBCTUCountsAndResetsinlang/st
C5K-008 partly verified
`CTD` is the IEC block: it counts down from `PV` loaded by `LD`, and `Q` means `CV <= 0`; this differs from a Logix CTD.
- pass
TestConformance/fb-ctd/LD loads PV into CV and clears Qinlang/conformance - pass
TestConformance/fb-ctd/before any load CV is 0 and Q is already TRUE (CV <= 0)inlang/conformance - pass
TestConformance/fb-ctd/counts down one per rising CD edge and Q rises when CV reaches 0inlang/conformance
C5K-009 partly verified
With `dialect: logix`, `t:TONR(PT := T#5S, Reset := Clear)` clears `ET` and `Q` while `Reset` is TRUE, the stand-in for `RES` on a timer.
- pass
TestTONRinlogix/writer
C5K-010 partly verified
Compare functions are contacts: `EQ(A, B)` `NE` `GT` `GE` `LT` `LE`, with `/EQ(A, B)` passing power when the comparison is FALSE, and an arithmetic expression is allowed inside the comparison, as in `GE(ADD(Base, Bias), Limit)`.
- pass
TestConformance/ld-coils/negated function contact passes power when the call returns FALSEinlang/conformance - pass
TestFunctionContactExpressionArgsinlang/ld
C5K-011 partly verified
The assignment element `{ Dest := Expr }` assigns while the rung has power at that point and passes power through; it takes any IEC expression evaluated every scan (`MOV`, `CPT`, `ADD`, `SUB`, `MUL`, `DIV`, `MOD`, `NEG`, `ABS`).
- pass
TestAssignmentElementinlang/ld
C5K-012 verified
`Status.3` on an integer tag is a BOOL, readable and assignable, with bit 0 least significant.
- pass
TestConformance/st-partial-access/a bit and a byte of a word read as BOOL and BYTEinlang/conformance - pass
TestBitAccessInLadderinlang/ld - pass
TestBitAccessinlang/st
C5K-013 partly verified
A block called in a rung takes rung power on its input pin and passes it on from its output pin, keeps its own state per instance (two instances of one block share nothing), and its pins are readable anywhere as contacts or operands (`m101.Pin`).
C5K-014 verified
A manifest tag is in scope in every program without a declaration, as a Logix controller-scope tag is in every routine; `VAR_EXTERNAL` stays legal and must agree with the tag's `type:`.
- pass
TestManifestTagsAreImplicitininternal/project - pass
TestProgramsDisagreeingOnAnUntypedTagininternal/project - pass
TestExplicitDeclarationMustAgreeWithTypedTagininternal/project
C5K-015 verified
A function block does not see manifest tags implicitly: like an AOI it takes what it needs as parameters or names a tag in its own `VAR_EXTERNAL`.
- pass
TestFunctionBlocksDoNotSeeTagsImplicitlyininternal/project
C5K-016 verified
A tag's `type:` takes `BOOL`, `DINT`, `REAL`, `TIME`, a UDT or an `ARRAY`.
- pass
TestElementaryTagTypesininternal/project - pass
TestTimeMembersSeedFromInitininternal/project
C5K-017 partly verified
A tag's `alias:` field (with `dialect: logix`) is the rack-point alias and is written as a Logix alias tag.
- pass
TestAliasTagsinlogix/writer - pass
TestDialectAndAliasImportinlogix/importer
C5K-018 no test yet
`JMP`/`LBL` and `MCR` are not supported: they are declined rather than approximated.
C5K-019 no test yet
The MCR replacement works: rungs in a `FUNCTION_BLOCK` with an `Enable` input and `[ Start | Run ] /Stop Enable ( Run )` leave every output dead while `Enable` is FALSE.
C5K-020 verified
A Rockwell `.L5X` export opens as ladder with no Studio 5000 installed.