Coming from Codesys
Codesys and its many vendor builds are close to the IEC standard, so nautilus will read like a smaller version of what you know. The rows below say what carries over, what is pursued, and what is declined. Planned means pursued in the parity batch and not available yet.
Project and data
Section titled “Project and data”| Codesys | nautilus | Status |
|---|---|---|
POU (PROGRAM, FUNCTION_BLOCK, FUNCTION) | the same, in .st, .ld, .fbd or .sfc | Today |
Case-insensitive identifiers (MyVar = MYVAR) | the same: any casing names the one declaration, shown as declared | Today, #197 |
| Task configuration | tasks: in nautilus.yaml | Today |
| GVL (global variable list) | tags in nautilus.yaml or tags/*.yaml, in scope in every program without a declaration (VAR_EXTERNAL stays legal); a function block names the ones it uses in its own VAR_EXTERNAL | Today, #177 |
A GVL file of only VAR_GLOBAL | the same: a gvl.st with a file-level VAR_GLOBAL block declares globals for every program; one the manifest does not declare is a state tag starting at zero. An initial value goes in the manifest’s init: | Today, #175 |
VAR_GLOBAL CONSTANT shared by the project | the same, in a lib/ file: every POU sees the constants, folded at compile time; they are not tags | Today, #176 |
Enumerations (TYPE E : (A, B, C), (A := 1, …)) | the same: E#A or plain A, CASE labels, comparisons, TO_INT / TO_E; live values show the member name | Today, #238 |
VAR_TEMP | the same: reset on every call | Today, #203 |
CASE on named constants | the same | Today, #196 |
STRUCT, arrays, FUNCTION_BLOCK instances | the same | Today |
VAR_IN_OUT | the same | Today |
Library manager, .library files | not available. A project’s reusable blocks live in lib/; share them between projects by copying files or vendoring with git | Declined for now, #193 |
| Online force | no force table in the IDE yet | Planned, #192 |
nautilus SFC is the IEC textual form (STEP, TRANSITION, ACTION), and
the editor draws it as a chart.
| Codesys SFC | nautilus | Status |
|---|---|---|
Step.X, Step.T | Step.X, Step.T, an elapsed TIME: ChargeA.T >= T#5M | Today |
Qualifiers N, S, R, P | the same, plus P1 and P0 | Today |
Qualifiers L, D, SD, DS, SL | the same, as timed associations: D XV201A_Cmd(T#3S);. Each association has its own timer; see timed qualifiers | Today |
The IEC textual association Detergent(D, T#3S); | read as the same association as D Detergent(T#3S); | Today |
SFCError and step supervision (maximum step time) | STEP Fill (MAXTIME := T#60S, ERROR := FillOverrun): sets a retained Fill.ERR flag when the step stays active longer than the limit. It raises no alarm by itself; a transition or ACTION reads the flag. See step supervision | Today |
| Alternative branch priority | declaration order, first highest. Reordering gestures are planned | Today; gestures #181 |
| Numeric transition priority | not supported; declaration order is the only rule | Declined |
| Transition conditions in LD, FBD or IL | not supported; a transition is an ST expression | Declined |
| Action bodies in LD, FBD or IL | not supported; action bodies are ST | Declined |
| Force a step or transition online | no | Planned, #192 |
| Step names in the editor, new action, new POU | gestures to create an ACTION (#182) and a new empty POU (#179) | Planned |
See the SFC page for the semantics: one transition per scan from a snapshot, divergence and convergence, and how associations and action bodies interact.