Ejecución básica
python3 runner/run.py
El runner ensambla las fuentes, ejecuta iec2c, compila con GCC, ejecuta el binario y escribe los reportes en build/reports/. Las suites que usan REAL enlazan automáticamente la biblioteca matemática del runtime.
Seleccionar casos
--filter acepta una expresión regular sobre el id, el nombre o los tags. Los casos restantes aparecen como SKIP y no se ejecutan:
python3 runner/run.py --filter 'smoke|ordering' python3 runner/run.py --filter 'dint'
Ejecutar varios scans
Para bloques temporizados o con estado puedes ejecutar varios ciclos con un reloj simulado:
python3 runner/run.py \ --filter 'timer' \ --cycles 20 \ --cycle-time-ms 10
El contexto conserva sus contadores entre scans. Las aserciones normales se evalúan en cada scan; FB_AssertEventually es stateful y cuenta una sola aserción hasta que la condición se cumple o vence TimeoutScans.
| Opción | Por defecto | Función |
|---|---|---|
| --manifest | tests/test_manifest.json | Manifiesto de casos. |
| --report-dir | build/reports | Destino JSON/JUnit. |
| --filter | sin filtro | Selecciona id, nombre o tag. |
| --cycles | 1 | Scans PLC deterministas. |
| --cycle-time-ms | 10 | Tiempo simulado entre scans. |
Código de salida
0 significa que los casos seleccionados no tienen fallos. Un código distinto de cero indica un fallo de aserción, un error de compilación o un problema del protocolo.