Beckhoff TwinCAT: E/A-Simulation

Beiträge
9.189
Reaktionspunkte
2.934
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
was für Möglichkeiten gibt es eigentlich bei TwinCAT Ein- und Ausgangssignale zu simulieren, um ein SPS-Programm auch ohne Hardware zumindest grob durchzutesten?

Bei Step7 gibt es dazu mehrere Möglichkeiten:
1) Man schreibt eine Simulation im SPS-Programm, welche die Eingangssignale am Anfang des zyklischen Tasks (OB1) mit den Simulationswerten überschreibt. Funktioniert aber nur bei Adressen im Prozessabbild. Der Test kann dann entweder auf der realen SPS-Hardware oder in Plcsim laufen

2) Man verwendet Plcsim, und kann über ein externes (Simulations-) Programm die Ausgangssignale einlesen und auf Eingangssignale schreiben. Das SPS-Programm muss dazu nicht angepasst werden.

Gibt es ähnliche oder bessere Möglichkeiten mit TwinCAT?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst in deinem Steuerungsporgramm einen Simulationsbaustein schreiben, der über Pointer auf deine E/A-Signale zugreift und so tut als ob er die Maschine ist. Das würde ich aber nur bis zu einem begrenztem Komplexitätsgrad machen, weil die Simulation schnell mal mehr Code beinhalten kann als die eigentliche Steuerung.....

Ansonsten halt ein externes Simulationstool verwenden.
 
Bei Step7 gibt es dazu mehrere Möglichkeiten:
1) Man schreibt eine Simulation im SPS-Programm, welche die Eingangssignale am Anfang des zyklischen Tasks (OB1) mit den Simulationswerten überschreibt. Funktioniert aber nur bei Adressen im Prozessabbild. Der Test kann dann entweder auf der realen SPS-Hardware oder in Plcsim laufen

Gibt es ähnliche oder bessere Möglichkeiten mit TwinCAT?
Genau so würde ich es machen. Du schreibst einfach ein SPS-Programm mit korrespondierenden Ein- und Ausgängen deines eines echten Programms, verknüfts beide Seiten, und lässt beide Programme dann gegeneinander laufen.
Für die reale Maschine wird dann einfach nicht zum zweiten SPS-Programm, sondern zur physikalischen Hardware verknüpft.
 
Gibt es eine Möglichkeit von extern die E/A-Signale zu modifizieren, z.B. über ADS?
Wenn das Überschreiben generell schonmal funktioniert - müsste man wenn es über ADS nicht möglich ist - einen Baustein schreiben der einen über ADS zugreifbaren Speicherbereich auf das Eingangsabbild überschreibt.

Ich wollte das ganz gerne mit einem externen Programm machen (Scilab/Xcos, bzw. eine 3D-Programm Blender oder der Unreal Engine). Das habe ich mit Plcsim schon laufen, aber wollte es universell auf andere Steuerungen einsetzbar machen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
was für Möglichkeiten gibt es eigentlich bei TwinCAT Ein- und Ausgangssignale zu simulieren, um ein SPS-Programm auch ohne Hardware zumindest grob durchzutesten?

Bei Step7 gibt es dazu mehrere Möglichkeiten:
1) Man schreibt eine Simulation im SPS-Programm, welche die Eingangssignale am Anfang des zyklischen Tasks (OB1) mit den Simulationswerten überschreibt. Funktioniert aber nur bei Adressen im Prozessabbild. Der Test kann dann entweder auf der realen SPS-Hardware oder in Plcsim laufen

2) Man verwendet Plcsim, und kann über ein externes (Simulations-) Programm die Ausgangssignale einlesen und auf Eingangssignale schreiben. Das SPS-Programm muss dazu nicht angepasst werden.

Gibt es ähnliche oder bessere Möglichkeiten mit TwinCAT?

Die gibt es :)

Es gibt z.B. das TE1111 TwinCAT3 EtherCAT Simulation: Du hast eine Konfiguration inklusive Bussystem .. dann kannst du die Konfiguration exportieren. Auf einem anderen PC, welcher ebenfalls eine Intel-Netzwerkkarte haben sollte, legst du ein Device "EtherCAT Simulation" an. Dort kannst du die Konfiguration importieren. Du erhältst dort dann ein gespiegeltes Prozessabbild, was du entsprechend mit Werten belegen kannst. SOE, COE werden an die SPS durchgeschleift. Auch Distrubuted Clocks kann man mit simulieren. Der Task auf dem "Simulations"-PC der den EtherCAT dort treibt, muss doppelt so schnell laufen (Abtasttheorem). Großer Vorteil dieses Verfahrens ist, dass der Original PC nicht mitbekommt, dass er gegen eine Simulation läuft. Man muss also das Original-Projekt NICHT ändern. Einfach EtherCAT-Kabel von der realen Anlage abziehen .. an den Simulations- PC stecken, fertig. Falls man sowieso ein Modell der Strecke hat (z.B. in Maltab) kann man so sehr schnell eine Simulationsumgebung aufbauen. Anderenfalls muss man den Gegenpart halt in der SPS oder mittels C++ ausprogrammieren ( so genau wie man das Verhalten eben haben will).
 
Das Simulationssystem sieht ja prinzipiell nicht schlecht aus. Aber 3. Quartal 2014 heißt bei Beckhoff ja leider, vielleicht kommts dann in 2015...oder auch überhaupt nicht :(
Auf einem Standard-PC wird das mit Ethercat wohl auch nicht laufen.

Mir würde es eigentlich reichen, wenn ich von extern aus wie auch immer die Ausgangssignale lesen und auf Eingangssignale schreiben kann. Am besten natürlich ohne das SPS-Programm anfassen zu müssen.
 
Auf einem PC kann man mehrere Runtimes für Testzwecke laufen lassen. Die EA Signale der einzelnen Programm-/ Runtimeteile kann man untereinander verknüpfen.
So kann man in einer Runtime das orginal SPS Programm laufen lassen und testen und später unangetastet verwenden, in einer 2. Runtime das Simulationsprogramm betreiben.
So hat es Beckhoff auch in dem für Twincat 3 erstellten Beispielprojekt gemacht. Nach ein bisschen recherche in dem Beispielprojekt hat man das sschnell begriffen welche Handgriffe in einem Projekt nötig sind. Dies geht auch bei Twincat 2. Jedoch habe ich hierfür keine Anleitungen/ Erfahrungen oder ähnliches gefunden. Ich weis hier nur dass dies machbar ist und manche so in der Proaxis machen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Simulationssystem sieht ja prinzipiell nicht schlecht aus. Aber 3. Quartal 2014 heißt bei Beckhoff ja leider, vielleicht kommts dann in 2015...oder auch überhaupt nicht :(
Auf einem Standard-PC wird das mit Ethercat wohl auch nicht laufen.

Mir würde es eigentlich reichen, wenn ich von extern aus wie auch immer die Ausgangssignale lesen und auf Eingangssignale schreiben kann. Am besten natürlich ohne das SPS-Programm anfassen zu müssen.

Die Functionalität ist fertig, nur die Doku fehlt noch. Es ist aber bereits in den TwinCAT 3.1 >= 4014 Builds drinnen und kann im Demo-Mode getestet werden.
 
Auf einem PC kann man mehrere Runtimes für Testzwecke laufen lassen. Die EA Signale der einzelnen Programm-/ Runtimeteile kann man untereinander verknüpfen.
So kann man in einer Runtime das orginal SPS Programm laufen lassen und testen und später unangetastet verwenden, in einer 2. Runtime das Simulationsprogramm betreiben.
So hat es Beckhoff auch in dem für Twincat 3 erstellten Beispielprojekt gemacht. Nach ein bisschen recherche in dem Beispielprojekt hat man das sschnell begriffen welche Handgriffe in einem Projekt nötig sind. Dies geht auch bei Twincat 2. Jedoch habe ich hierfür keine Anleitungen/ Erfahrungen oder ähnliches gefunden. Ich weis hier nur dass dies machbar ist und manche so in der Proaxis machen.

Du hast Recht, so kann man es auch machen, hat aber den großen Nachteil, dass man das "original"-projekt und damit das Gesamtverhalten ändert. Wenn Du Wissen willst, in wie weiß deine gewählte Hardware ausgelastet ist, bekommst du diese Aussage nicht in dem du auf dem Steuerungsrechner selber auch noch die Simulation fährst. Ist halt immer eine Frage was genau man machen möchte und wie detailiert eine Simulation sein muss :)
 
Für Einfache E/A Simulation aber schon ausreichend.
Anderst habe ich meine Anwendungen noch nieh gestestet.
Bei Siemens kann man halt die Eingänge im selben Programm einfach zuweisen für Simulationszwecke.
Aus einem Codesys Forum habe ich mal gelesen dass man im orginal Programm über Pointer auch die Eingänge beschreiben kann. Dies war allerdings ein Fragesteller zur Hardware von Wago. Hast du dies schon probiert oder irgendwelche anderen Erfahrungen?
Ich habe verschiedene Vorschläge dazu bei Twincat probiert, jedoch hat der Compiler immer gemeckert:sad:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Für Einfache E/A Simulation aber schon ausreichend.
Anderst habe ich meine Anwendungen noch nieh gestestet.
Bei Siemens kann man halt die Eingänge im selben Programm einfach zuweisen für Simulationszwecke.
Aus einem Codesys Forum habe ich mal gelesen dass man im orginal Programm über Pointer auch die Eingänge beschreiben kann. Dies war allerdings ein Fragesteller zur Hardware von Wago. Hast du dies schon probiert oder irgendwelche anderen Erfahrungen?
Ich habe verschiedene Vorschläge dazu bei Twincat probiert, jedoch hat der Compiler immer gemeckert:sad:

Die Eingänge direkt überschreiben geht nicht, da sie in jedem Zyklus wieder erneut überschrieben würden. Du könntest dir aber noch eine Abstraktionsschicht dazwischen ziehen, so das du quasi umschalten kannst, ob die Eingänge die vom Bus kommen verwendet werden oder deine die du von "außen" vorgibst.
 
Zurück
Oben