Test von FBs

Pumpernickel

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

möchte gerne wissen wie ihr eure FBs testet. Ich programmiere meist in JAVA und da gibt es eine lib für Unit-Tests. Eine Unit entspricht dabei ganz grob einem FB bei der SPS Programmierung. So ein Unit-Test sieht die zu testende Unit als Black-Box. Man gibt bestimmte Daten rein und drückt eine Erwartungshaltung der Ausgangsdaten aus. Diese Tests kann man automatisch ablaufen lassen. Das macht man nach jeder Iteration um zu sehen, ob die einzelnen Units noch so funktionieren wie geplant. "Abfallprodukt" vom Ganzen ist auch eine Beschreibung der Funktion der zu testenden Unit, man sieht ja in den Tests was reingeht und was rauskommen soll. Gibt es so etwas auch bei der SPS Programmierung? Oder wie testet ihr eure FBs?

Jürgen
 
Ich muss vorab sagen, dass ich diese Unit-Test nur aus Einsehen von fremden Quellcode kenne, bzw. weil ich mal bei der Wireshark Mailingliste angemeldet war, und dadurch mitbekommen habe wenn die zyklischen Testläufe fehlgeschlagen haben.
Prinzipiell finde ich das schon eine gute Sache, aber aus mehreren Gründen ist das bei der SPS-Programmierung aus meiner Sicht schwer umzusetzen.
Ein paar Gründe dafür:

Die Testläufe müssen erst in eine SPS-Umgebung geladen werden. Also entweder in eine echte SPS oder zumindest eine Simulation wie Plcsim bei Siemens.
Aber nicht alle Hersteller bieten so eine Simulationsumgebung an (kostet bei Siemens auch extra).
Diese ganze Umgebung zu starten, das Programm zu laden, Meldungen auszuwerten usw. ist sicher automatisiert möglich, aber sehr aufwändig zu realisieren.

Die meisten Funktionen in einem SPS-Programm sind immer mit der realen Welt gekoppelt.
Darum kann ein einfacher Test der einmaligen Überprüfung Eingangszustand <-> Ausgangszustand nicht unbedingt einen Fehler in einem Baustein anzeigen.
Zumindest die Unit-Tests in den Programmen die ich mir angesehen habe funktionieren alle statisch (Eingangswerte schreiben -> Prüfung der Ausgangswerte auf bestimmte Zustände).
Wenn ich beispielsweise einen PID-Regler testen will, müsste ich einen Prozess simulieren und diesen für eine bestimmte Zeit laufen lassen um festzustellen dass der Regler so funktioniert wie er funktionieren soll.

Für ganz einfache Antriebsbausteine z.B. für Schieber/Ventile kann man sowas bestimmt realisieren, aber solche Bausteine werden (zumindest bei mir) einmal vor Inbetriebnahme erstellt und getestet, ggf. einmalig bei Inbetriebnahme angepasst, und dann funktionieren diese (müssen).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Willkommen in der agilen Softwareentwicklung. Leider unterscheiden sich SPS- und Hochsprachenprogrammierung sehr stark. Der von Dir genannte Unit-Test wird so bald wohl keinen Einzug in die SPS-Welt erhalten. Schade eigentlich, die Idee ist brillant.
 
Hmmm, eure Antworten klingen ja nicht so berauschend, da bin ich von der Hochsprachenprogrammierung wohl doch ziemlich verwöhnt. Das Problem bei uns ist nicht so sehr die Ansteuerung und Abfrage der Hardware denn dafür gibt es ausgereifte und in der Praxis getesteste FBs. Das Problem ist vielmehr das Zusammenspiel dieser Basisfunktionen wie z.B. deren zeitlicher Ablauf und deren Interlocks gegeneinandern. Zeitlicher Ablauf heißt: zuerst die eine Achse bewegen dann warten bis Bewegung fertig ist und dann die nächste Achse starten usw. Interlocks heißt wenn sich die eine Achse gerade bewegt bzw. in einer bestimmten Position befindet darf die andere Achse nicht bewegt werden. Wobei wir für eine Maschineneinheit von ca. 15-20 Achsen sprechen. Wie testet ihr so etwas vorab im Büro?
 
Ich testet sowas eigentlich nur am schaltschrank. da hat man dann die entsprechenden ea's auch unter kontrolle. erspart unheimlich stress bei der IBN. einige kunden wünschen ja auch vorab eine FAT. da ist sowas dann nicht anders zu lösen.
bei der positionierung wirds dann aber schon problematisch. man müsste ja alle motoren an die fu's anschliessen damit man dann auch eine positonsänderung bekommt. bleibt also nur -> ab auf die baustelle.
 
Zurück
Oben