PLC Test Harness
TDD voor Industriële Automatisering
Definieer testscenario's, voer ze uit tegen PLCSim Advanced en krijg direct PASS/FAIL oordelen. Unit-testing voor PLC-logica — op dezelfde manier waarop software-engineers hun code testen.
PLC-testen is nog steeds handmatig
Elke codewijziging is een gok zonder geautomatiseerde tests
Geen Regressietesten
Je wijzigt een function block en bidt dat er niets anders kapot gaat. Zonder geautomatiseerde tests riskeert elke wijziging het introduceren van stille bugs die pas op de fabrieksvloer naar boven komen.
Handmatige Verificatie
Testen betekent handmatig inputs forceren op de PLC of PLCSim, kijken hoe outputs veranderen en waarden met de hand controleren. Saai, foutgevoelig en onmogelijk om consequent te herhalen.
Geen Testdocumentatie
Hoe bewijs je dat je programma correct werkt? Testprocedures bestaan in Word-documenten of in het hoofd van een engineer. Geen gestandaardiseerde, uitvoerbare test-specs die met het project meereizen.
AI kan zijn eigen code niet verifiëren
AI genereert PLC-code, maar hoe weet je of het werkt? Zonder geautomatiseerd testen gaat door AI gegenereerde code ongetest de productie in. De Test Harness sluit de cirkel.
Hoe PLC Test Harness werkt
Een gestructureerd testframework voor PLC-logica, toegankelijk via MCP, Copilot en REST API
Definieer Testscenario's
Elke test is een reeks stappen: stel inputs in, wacht tot de PLC reageert en verifieer dan of de outputs overeenkomen met de verwachtingen. Tests worden opgeslagen als .test.json bestanden naast je TIA Portal project.
4 Soorten Assertions
Exacte overeenkomst voor booleans en integers. Tolerantie voor floating-point waarden (±0.1). Bereik voor min/max controles. Niet-gelijk om te verifiëren of een waarde is veranderd. Dekt elk PLC datatype.
Setup & Teardown
Elke test begint met een setup-fase (initialiseer tags naar een bekende staat) en eindigt met teardown (reset tags naar nul), zelfs als de test faalt. Schone staat gegarandeerd.
Voer er één uit of voer ze allemaal uit
Voer een enkele test uit op naam, geef er een inline door, of gebruik wildcard (*) om de hele testsuite uit te voeren. Resultaten worden opgeslagen in last-results.json voor beoordeling.
Volledig Auditspoor
Elke testrun produceert een gedetailleerd rapport: welke stappen zijn geslaagd, welke zijn mislukt, verwachte vs. werkelijke waarden en tijdstempels van uitvoering. Exporteer of bevraag resultaten op elk moment.
AI-gestuurde TDD-cyclus
Een verbonden LLM kan code schrijven, tests maken, compileren, downloaden naar PLCSim, tests uitvoeren en fouten herstellen — allemaal autonoom. Red → Green → Refactor, voor PLC.
De TDD-cyclus voor PLC
Van testdefinitie naar gevalideerde PLC-logica
1. Schrijf de Test
Definieer verwacht gedrag: wanneer Start_Button wordt ingedrukt, moet Motor_Running binnen 500ms true zijn. Maak de test met plc_test_create.
2. Uitvoeren tegen PLCSim
Voer de test uit met plc_test_run. T-IA Connect schrijft inputs naar PLCSim, wacht de opgegeven vertraging af, leest en controleert vervolgens de outputs. Oordeel: PASS of FAIL.
3. Herstellen & Itereren
Als een stap faalt, zie je precies wat er misging: verwacht Motor_Running = true, kreeg false. Herstel het PLC-programma, recompileer, download en voer de test opnieuw uit.
4. Bouw je Testsuite
Verzamel tests terwijl je ontwikkelt. Voer de volledige suite uit na elke wijziging om regressies op te vangen. Tests reizen mee met het project in .tia-connect/tests/.
Assertiesoorten in Detail
Dekt elk PLC datatype met de juiste vergelijking
Exacte Overeenkomst
Voor booleans en integers. Motor_Running moet exact true zijn. Teller moet exact 5 zijn. Geen marge voor fouten.
Tolerantie (±)
Voor REAL en LREAL waarden. Snelheid moet 50.0 ± 0.1 zijn. Houdt rekening met floating-point precisie en analoge meetruis.
Bereik (min/max)
Waarde moet binnen een gedefinieerd bereik vallen. Temperatuur tussen 10.0 en 100.0. Perfect voor analoge ingangen en proceswaarden.
Niet Gelijk
Verifieer dat een waarde is veranderd ten opzichte van de initiële staat. Teller mag niet gelijk zijn aan 0 — bevestigt dat de tellogica daadwerkelijk is uitgevoerd.
5 Tools over 3 Kanalen
Beschikbaar via MCP, Copilot (ingebouwde assistent) en REST API
plc_test_create
Sla een testcase-definitie op met setup, stappen (inputs → vertraging → assertions) en teardown. Opgeslagen als een .test.json bestand in .tia-connect/tests/.
plc_test_run
Voer een test uit op naam, geef er een inline door, of gebruik * om alle tests uit te voeren. Asynchroon via REST (geeft een jobId terug). Resultaten opgeslagen in last-results.json.
plc_test_list
Toon alle opgeslagen testcases met hun namen en beschrijvingen. Snel overzicht van de testdekking van je project.
plc_test_delete
Verwijder een testcase op naam. Ruim verouderde tests op naarmate je project evolueert.
plc_test_get_results
Haal de resultaten van de laatste testrun op: PASS/FAIL status per stap, verwachte vs. werkelijke waarden, uitvoeringstijd en algemeen oordeel.
Veelgestelde Vragen
Is hiervoor PLCSim Advanced vereist?
Ja. De Test Harness schrijft inputs en leest outputs via de simulatie-interface van PLCSim Advanced. Het werkt niet met echte PLC's (dat zou gevaarlijk zijn voor geautomatiseerd testen). PLCSim Advanced biedt een veilige, herhaalbare omgeving.
Kan een AI autonoom tests maken en uitvoeren?
Absoluut. Een verbonden LLM (via MCP of Copilot) kan PLC-code schrijven, een test maken met plc_test_create, compileren en downloaden naar PLCSim, de test uitvoeren, resultaten controleren en de code herstellen als deze faalt. Volledige TDD-cyclus zonder menselijke tussenkomst.
Waar worden de tests opgeslagen?
In de map .tia-connect/tests/ naast je TIA Portal project. Elke test is een .test.json bestand. Resultaten staan in last-results.json. Tests reizen mee met het project — archiveer het project, archiveer de tests.
Hoe lang duurt een testrun?
Dit hangt af van de vertragingen die je definieert in je teststappen (de tijd die je de PLC geeft om te reageren). Een typische test met 3-5 stappen en 200-500ms vertragingen duurt 1-3 seconden. Het uitvoeren van een volledige suite van 20 tests duurt doorgaans minder dan een minuut.