Echtzeitkommunikation zwischen TwinCat und Labview..oder Puffer

SBarber

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich bin neu hier, daher ein paar Worte zu meinem Zugang zum Thema SPS. Ich studiere Elektrotechnik an der TU-Darmstadt. Bisher hatte ich aber keine nennenswerten Berührungspunkte mit SPS und Echtzeitsystemen. In meiner Diplomarbeit soll ich jetzt eine Prüfstandsüberwachung aufbauen und programmieren. Also Schwingungsüberwachung, Riemenspannungsüberwachnung, Datenaufzeichnung Fehlererkennung, Ausschalten.

Die folgenden Hard- und Software Vorgaben existieren:
Beckhoff EtherCat mit Buskoppler EK1100 und Klemmen EL3632, EL3011, EL4132.....
TwinCat I/O V2.11 build 2666
LabView 2011
Das alles auf einem Standart PC mit Pentium 4 Einkernprozessor bei 2,8 GHz
Betriebssystem Windows XP

Das bisherige Vorgehen sah so aus:
Die EtherCat KLemmen werden im TwinCat SystemManager mit Variablen in einem Task verbunden. Diese Variablen werden über die AdsDll mit Labview ausgelesen bzw. geschrieben z.B. "AdsSyncReadReq" . Der Task läuft mit 1ms Zykluszeit. Die EL3632 liefert, da oversampling, 50 Werte pro Zyklus und Eingang, die als array übergeben werden. Bis zu TwinCat läuft das Ganze auch scheinbar deterministisch ab. Zumindest sehen Sinusschwingungen an den Sensoren im TwinCat Scopeview gut aus.
Das Problem ist aber der zyklische Aufruf der Variablen aus Labview. Es ist wohl schlichtweg nicht möglich mit Labview jede Millisekunde eine aufrufende Schleife durchlaufen zu lassen. Die Iterationszeit ist da recht beliebig im Bereich bis zu einigen Millisekunden.

Eine Idee von mir wäre, auf TwinCat-ebene einen Ringpuffer für die Eingänge zu verwenden, den ich nur z.B. alle 3 Sekunden auslese, in dem aber dann bitteschön eine nahtlose Aufzeichnung mit 1kS/s bzw. 50kS/s über eine Sekunde abgelegt sind. Nur wie und ob sich sowas machen lässt konnte ich im Beckhoff Infosys noch nicht herusfinden.

Also meine Fragen:
1. Gibt es solche Puffer /Ringpuffer /Schieberegister bei TwinCat? Wenn ja, wo und wie lege ich die an? ( Ich hoffe ich muss dafür nicht auch noch die SPS Programmierung in PLC lernen :???:)
2. Kennt jemand die "EtherCat Acquisition Library for Labview" von Ackermann Automation? Hilft die mir vielleicht indem sich Labview damit nicht an der 1kHz grenze stört? Wenn Ja, Beispiele?
3. Gehe ich vielleicht ganz falsch an das Problem heran?
 
Das dein LabView nicht in harter Echtzeit arbeitet liegt einfach daran, dass es ein ganz normaler Windows-Prozess ist, der ganz normal vom Scheduler Prozessorzeit zugeteilt bekommt. Ohne Verrenkungen auf tiefster Betriebssytemebene (wie das bei CoDeSys/TwinCat gelöst ist) kommst du da nicht an deterministische Zykluszeiten. Da wird auch eine Data Aquisition Library nicht helfen. Anders sähe das aus, wenn du ein Target von NI nimmst, dass dein LabView-Programm in Echtzeit ausführen kann. Fällt aber wohl flach.

Die Idee mit dem Ringpuffer ist sehr gut. Allerdings solltest du den Speicherbedarf einer solchen Lösung bedenken: 50kS/s * 3s * 32 Bit = 4800000 Bit oder eben 600000 Byte pro Messwert. Unter Umständen kann das wichtig werden.

Es gibt fertige Ringpuffer z.B. in der OSCAT-Bibliothek. Allerdings solltest du dich damit anfreunden, dass du, wenn du eine ordentliche Lösung haben willst, deine SPS schon programmieren musst. Von alleine tut die nix ;-)

Übrigens reicht für eine brauchbare Anzeige von Messwerten auch eine Samplingrate weit unter der von dir genannten. Da du von Überwachung redest, solltest du darüber nachdenken, ob du nötige und relevante Rechnungen nicht lieber in der SPS löst. Die ist nämlich in jedem Fall flotter, als dein Labview.
Dann könntest du nur die Daten übertragen, die du zur Anzeige und so weiter brauchst. Kommt natürlich wieder auf deinen Anwendungsfall und die konkreten Anforderungen an.
 
Zuletzt bearbeitet:
Zurück
Oben