@@ -270,6 +270,40 @@ opened and compiled successfully in OpenPLC. Its runtime behavior also passed
270270the immediate-on, five-second delayed-off, and cancellation checks without
271271manual changes, validating the complete TwinForge generation path.
272272
273+ ### Retentive timer and reset evidence
274+
275+ OpenPLC does not provide Rockwell's Ladder-only ` RTO ` and ` RES ` instructions
276+ as native IEC blocks. TwinForge therefore lowers the evidenced source group to
277+ a target-specific ` TF_RTO ` Structured Text function block. Its interface maps
278+ Rockwell timer members without adding target behavior to the neutral model:
279+
280+ | Rockwell | ` TF_RTO ` |
281+ | --- | --- |
282+ | ` .EN ` | ` Enabled ` |
283+ | ` .TT ` | ` TT ` |
284+ | ` .DN ` | ` Q ` |
285+ | ` .ACC ` | ` ET ` |
286+ | ` .PRE ` | ` PT ` |
287+ | ` RES(timer) ` | ` RESET ` |
288+
289+ The reference and independently generated projects compiled successfully.
290+ Runtime tests confirmed partial accumulation, retention while disabled,
291+ resumption from the retained value, latched completion, ` Enabled ` and ` TT `
292+ state, and clearing of elapsed time and status through reset.
293+
294+ The initial lowering deliberately requires adjacent canonical source rungs:
295+
296+ ``` text
297+ XIC(enable)RTO(timer,?,?);
298+ XIC(timer.DN)OTE(output);
299+ XIC(reset)RES(timer);
300+ ```
301+
302+ Other ordering or shared-reset arrangements are rejected rather than guessed.
303+ The source still contains genuine Rockwell ` RTO ` and ` RES ` instructions; the
304+ generated ` TF_RTO ` block is an explicitly identified compatibility mapping,
305+ not a claim that OpenPLC implements those Rockwell instructions natively.
306+
273307The native project's PLCopen XML export should also be retained as comparison
274308evidence. It can reveal semantic differences between TwinForge's generic XML
275309and OpenPLC's serialization, even though it cannot currently be loaded through
0 commit comments