Avtomatizirano PLC testiranje

PLC Test Harness
TDD za industrijsko avtomatizacijo

Definirajte testne scenarije, izvedite jih v PLCSim Advanced in pridobite takojšnje PASS/FAIL razsodbe. Unit testing za PLC logiko — na enak način, kot programsko opremo testirajo inženirji.

PLC testiranje je še vedno ročno

Vsaka sprememba kode je tveganje brez avtomatiziranih testov

Brez regresijskega testiranja

Spremenite funkcijski blok in upate, da se ni nič drugega pokvarilo. Brez avtomatiziranih testov vsaka sprememba tvega uvedbo tihih hroščev, ki se pojavijo šele v proizvodnji.

Ročno preverjanje

Testiranje pomeni ročno forsiranje vhodov na PLC ali PLCSim, opazovanje sprememb izhodov in ročno preverjanje vrednosti. Zamudno, podvrženo napakam in nemogoče za dosledno ponavljanje.

Brez testne dokumentacije

Kako dokažete, da vaš program deluje pravilno? Testni postopki obstajajo v Word dokumentih ali v glavi inženirja. Ni standardiziranih, izvedljivih testnih specifikacij, ki bi spremljale projekt.

AI ne more preveriti lastne kode

AI generira PLC kodo, toda kako veste, da deluje? Brez avtomatiziranega testiranja gre AI-generirana koda nepreverjena v produkcijo. Test Harness sklene krog.

Kako deluje PLC Test Harness

Strukturirano testno ogrodje za PLC logiko, dostopno prek MCP, Copilot in REST API

Definirajte testne scenarije

Vsak test je zaporedje korakov: nastavitev vhodov, čakanje na odziv PLC-ja, nato preverjanje, ali se izhodi ujemajo s pričakovanji. Testi so shranjeni kot .test.json datoteke poleg vašega TIA Portal projekta.

4 tipi Assertionov

Natančno ujemanje za boolove vrednosti in cela števila. Toleranca za vrednosti s plavajočo vejico (±0.1). Razpon za min/max preverjanja. Ni enako za preverjanje, ali se je vrednost spremenila. Pokriva vsak PLC podatkovni tip.

Setup & Teardown

Vsak test se začne s fazo setup (inicializacija tagov v znano stanje) in konča s teardown (ponastavitev tagov na nič), tudi če test ne uspe. Zagotovljeno čisto stanje.

Zaženi enega ali vse

Izvedite posamezen test po imenu, podajte test neposredno (inline) ali uporabite nadomestni znak (*) za zagon celotnega nabora testov. Rezultati se shranijo v last-results.json za pregled.

Celotna revizijska sled

Vsak zagon testa ustvari podrobno poročilo: kateri koraki so bili PASS, kateri FAIL, pričakovane proti dejanskim vrednostim in časovni žigi izvedbe. Izvozite ali poizvedujte rezultate kadarkoli.

TDD cikel voden z AI

Povezan LLM lahko piše kodo, ustvarja teste, prevaja, nalaga v PLCSim, izvaja teste in odpravlja napake — vse avtonomno. Red → Green → Refactor, za PLC.

TDD cikel za PLC

Od definicije testa do potrjene PLC logike

1

1. Napišite test

Definirajte pričakovano vedenje: ko je Start_Button pritisnjen, mora biti Motor_Running true v 500ms. Ustvarite test s plc_test_create.

2

2. Zaženite v PLCSim

Izvedite test s plc_test_run. T-IA Connect zapiše vhode v PLCSim, počaka določeno zakasnitev, nato prebere in preveri izhode. Razsodba: PASS ali FAIL.

3

3. Popravite in ponovite

Če korak spodleti, vidite natančno, kaj je šlo narobe: pričakovano Motor_Running = true, dobljeno false. Popravite PLC program, ponovno prevedite, naložite in znova zaženite test.

4

4. Izgradite svoj nabor testov

Zbirajte teste med razvojem. Zaženite celoten nabor po vsaki spremembi, da ujamete regresije. Testi potujejo s projektom v .tia-connect/tests/.

Tipi Assertionov podrobno

Pokrivanje vsakega PLC podatkovnega tipa s pravo primerjavo

Natančno ujemanje

Za boolove vrednosti in cela števila. Motor_Running mora biti natančno true. Števec mora biti natančno 5. Brez odstopanja.

Toleranca (±)

Za REAL in LREAL vrednosti. Hitrost mora biti 50.0 ± 0.1. Upošteva natančnost plavajoče vejice in šum analognih meritev.

Razpon (min/max)

Vrednost mora pasti v definiran razpon. Temperatura med 10.0 in 100.0. Popolno za analogne vhode in procesne vrednosti.

Ni enako

Preverite, ali se je vrednost spremenila iz začetnega stanja. Števec ne sme biti enak 0 — potrditev, da se je logika številčenja dejansko izvedla.

5 orodij skozi 3 kanale

Na voljo prek MCP, Copilot (vgrajen asistent) in REST API

plc_test_create

Shranite definicijo testnega primera s setupom, koraki (vhodi → zakasnitev → assertioni) in teardownom. Shranjeno kot .test.json datoteka v .tia-connect/tests/.

plc_test_run

Izvedite test po imenu, podajte ga neposredno ali uporabite * za zagon vseh testov. Asinhrono prek REST (vrne jobId). Rezultati shranjeni v last-results.json.

plc_test_list

Seznam vseh shranjenih testnih primerov z njihovimi imeni in opisi. Hiter pregled pokritosti vašega projekta s testi.

plc_test_delete

Odstranite testni primer po imenu. Počistite zastarele teste, ko se vaš projekt razvija.

plc_test_get_results

Pridobite rezultate zadnjega zagona testa: PASS/FAIL status po korakih, pričakovane proti dejanskim vrednostim, čas izvedbe in splošna razsodba.

Pogosta vprašanja

Ali to zahteva PLCSim Advanced?

Da. Test Harness zapisuje vhode in bere izhode prek simulacijskega vmesnika PLCSim Advanced. Ne deluje s pravimi PLC-ji (to bi bilo nevarno za avtomatizirano testiranje). PLCSim Advanced zagotavlja varno, ponovljivo okolje.

Ali lahko AI samostojno ustvarja in izvaja teste?

Vsekakor. Povezan LLM (prek MCP ali Copilot) lahko piše PLC kodo, ustvari test s plc_test_create, prevede in naloži v PLCSim, izvede test, preveri rezultate in popravi kodo, če test spodleti. Celoten TDD cikel brez človeškega posega.

Kje so shranjeni testi?

V mapi .tia-connect/tests/ poleg vašega TIA Portal projekta. Vsak test je .test.json datoteka. Rezultati so v last-results.json. Testi potujejo s projektom — arhivirajte projekt, arhivirajte teste.

Koliko časa traja zagon testa?

Odvisno od zakasnitev, ki jih definirate v testnih korakih (čas, ki ga namenite PLC-ju za odziv). Tipičen test s 3-5 koraki in 200-500ms zakasnitvami traja 1-3 sekunde. Zagon celotnega nabora 20 testov običajno traja manj kot minuto.

Testirajte svojo PLC kodo kot programsko opremo

Avtomatizirano testiranje, zaznavanje regresij in TDD — vse, kar razvijalci programske opreme smatrajo za samoumevno, zdaj za TIA Portal PLC programe.