PLC Test Harness
TDD per l'automazione industriale
Definisci scenari di test, eseguili su PLCSim Advanced e ottieni verdetti PASS/FAIL istantanei. Unit testing per la logica PLC — nello stesso modo in cui gli ingegneri software testano il loro codice.
Il testing dei PLC è ancora manuale
Ogni modifica al codice è una scommessa senza test automatici
Nessun test di regressione
Modifichi un function block e speri che nient'altro si rompa. Senza test automatici, ogni modifica rischia di introdurre bug silenziosi che emergono solo in fabbrica.
Verifica manuale
Testare significa forzare manualmente gli input sul PLC o PLCSim, osservare i cambiamenti degli output e controllare i valori a mano. Tedioso, soggetto a errori e impossibile da ripetere in modo coerente.
Nessuna documentazione dei test
Come dimostri che il tuo programma funziona correttamente? Le procedure di test esistono in documenti Word o nella testa di un ingegnere. Nessuna specifica di test standardizzata ed eseguibile che segua il progetto.
L'IA non può verificare il proprio codice
L'IA genera codice PLC, ma come sai se funziona? Senza test automatici, il codice generato dall'IA va in produzione non testato. Il Test Harness chiude il cerchio.
Come funziona PLC Test Harness
Un framework di test strutturato per la logica PLC, accessibile tramite MCP, Copilot e REST API
Definisci scenari di test
Ogni test è una sequenza di passaggi: imposta gli input, attendi la reazione del PLC, quindi verifica che gli output corrispondano alle aspettative. I test sono memorizzati come file .test.json insieme al tuo progetto TIA Portal.
4 tipi di asserzione
Corrispondenza esatta per booleani e interi. Tolleranza per i valori in virgola mobile (±0.1). Intervallo per i controlli min/max. Non-uguale per verificare che un valore sia cambiato. Copre ogni tipo di dato PLC.
Setup & Teardown
Ogni test inizia con una fase di setup (inizializzazione dei tag a uno stato noto) e termina con il teardown (ripristino dei tag a zero), anche se il test fallisce. Stato pulito garantito.
Esegui uno o esegui tutto
Esegui un singolo test per nome, passa un test inline o usa il carattere jolly (*) per eseguire l'intera suite di test. I risultati sono memorizzati in last-results.json per la revisione.
Audit trail completo
Ogni esecuzione di test produce un report dettagliato: quali passaggi sono passati, quali falliti, valori attesi vs effettivi e timestamp di esecuzione. Esporta o interroga i risultati in qualsiasi momento.
Ciclo TDD guidato dall'IA
Un LLM connesso può scrivere codice, creare test, compilare, scaricare su PLCSim, eseguire test e correggere errori — tutto autonomamente. Red → Green → Refactor, per il PLC.
Il ciclo TDD per il PLC
Dalla definizione del test alla logica PLC convalidata
1. Scrivi il test
Definisci il comportamento atteso: quando Start_Button viene premuto, Motor_Running deve essere true entro 500ms. Crea il test con plc_test_create.
2. Esegui su PLCSim
Esegui il test con plc_test_run. T-IA Connect scrive gli input su PLCSim, attende il ritardo specificato, quindi legge e controlla gli output. Verdetto: PASS o FAIL.
3. Correggi & itera
Se un passaggio fallisce, vedi esattamente cosa è andato storto: Motor_Running atteso = true, ottenuto false. Correggi il programma PLC, ricompila, scarica ed esegui nuovamente il test.
4. Costruisci la tua suite di test
Accumula test man mano che sviluppi. Esegui la suite completa dopo ogni modifica per rilevare regressioni. I test seguono il progetto in .tia-connect/tests/.
Tipi di asserzione in dettaglio
Copre ogni tipo di dato PLC con il confronto corretto
Corrispondenza esatta
Per booleani e interi. Motor_Running deve essere esattamente true. Il contatore deve essere esattamente 5. Nessun margine di errore.
Tolleranza (±)
Per valori REAL e LREAL. La velocità deve essere 50.0 ± 0.1. Tiene conto della precisione in virgola mobile e del rumore delle misure analogiche.
Intervallo (min/max)
Il valore deve rientrare in un intervallo definito. Temperatura tra 10.0 e 100.0. Perfetto per ingressi analogici e valori di processo.
Non uguale
Verifica che un valore sia cambiato rispetto al suo stato iniziale. Il contatore non deve essere uguale a 0 — confermando che la logica di conteggio è stata effettivamente eseguita.
5 strumenti su 3 canali
Disponibili tramite MCP, Copilot (assistente integrato) e REST API
plc_test_create
Salva la definizione di un caso di test con setup, passaggi (input → ritardo → asserzioni) e teardown. Memorizzato come file .test.json in .tia-connect/tests/.
plc_test_run
Esegui un test per nome, passane uno inline o usa * per eseguire tutti i test. Asincrono tramite REST (restituisce un jobId). Risultati salvati in last-results.json.
plc_test_list
Elenca tutti i casi di test salvati con i loro nomi e descrizioni. Panoramica rapida della copertura dei test del tuo progetto.
plc_test_delete
Rimuovi un caso di test per nome. Elimina i test obsoleti man mano che il tuo progetto si evolve.
plc_test_get_results
Recupera i risultati dell'ultima esecuzione del test: stato PASS/FAIL per passaggio, valori attesi vs effettivi, tempo di esecuzione e verdetto finale.
Domande frequenti
Richiede PLCSim Advanced?
Sì. Il Test Harness scrive gli input e legge gli output tramite l'interfaccia di simulazione di PLCSim Advanced. Non funziona con i PLC reali (sarebbe pericoloso per i test automatici). PLCSim Advanced fornisce un ambiente sicuro e ripetibile.
Un'IA può creare ed eseguire test autonomamente?
Assolutamente. Un LLM connesso (tramite MCP o Copilot) può scrivere codice PLC, creare un test con plc_test_create, compilare e scaricare su PLCSim, eseguire il test, controllare i risultati e correggere il codice se fallisce. Ciclo TDD completo senza intervento umano.
Dove sono memorizzati i test?
Nella cartella .tia-connect/tests/ accanto al tuo progetto TIA Portal. Ogni test è un file .test.json. I risultati sono in last-results.json. I test seguono il progetto — archivia il progetto, archivia i test.
Quanto tempo richiede l'esecuzione di un test?
Dipende dai ritardi definiti nei passaggi del test (il tempo che dai al PLC per reagire). Un test tipico con 3-5 passaggi e ritardi di 200-500ms viene eseguito in 1-3 secondi. L'esecuzione di una suite completa di 20 test richiede solitamente meno di un minuto.