Beckhoff TwinCAT PLC - Zyklus - Programmabarbeitung

mike_roh_soft

Level-1
Beiträge
191
Reaktionspunkte
11
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo TwinCAT Profis :)

Ich habe bereits ein wenig Erfahrung mit TwinCAT-Programmierung in ST.

Meine Frage ist:
Wie arbeitet die Soft-PLC das Anwenderprogramm ab und wie wird die Peripherie aktualisiert?
Ist das mit einer SPS S7 zu vergleichen?

Die Frage kam auf also ich in einer FOR-Schleife einen instanzierten FB aufgerufen habe.
Der FB braucht z.B. 30ms um eine Aufgabe zu erledigen.
Die Zykluszeit liegt bei z.B. 5ms.
D.h. meine FOR-Schleife ist schon beim nächsten Index und ruft den FB nochmals auf befor er fertig ist.

Ist das grundsätzlich die falsche Art zu Programmieren oder nur ein Verständisproblem?

Bin grad verwirrt...

Danke Mike
 
Die PLC arbeitet zyklisch. Am Ende der Bearbeitung der Task werden die Daten auf das Ausgangs-Prozessabbild geschrieben und die Hardware angetriggert. 30ms Ausführungszeit in einer 5ms Task sind zu lang und dann auch noch x-mal in einer Schleife, das wird zu Zykluszeitüberschreitungen führen und zu Kommunikationsausfällen von deterministischen Bussen wie Profibus oder EtherCAT.

Die FOR Schleife ist nicht grundsätzlich falsch aber die gesamte Schleife sollte in dem SPS - Zyklus fertig werden, wenn man die Zykluszeitüberschreitungen vermeiden möchte. Ist die Zielplattform PC-basiert? Dann kann man diesen Programmpart in einer zweiten niederprioren Task aufrufen , die keinen Datenaustausch mit der Hardware durchführt. Dann tun die Zykluszeitüberschreitungen evtl. nicht weh. Die Task braucht dann vielleicht mehrere 100ms, die FOR-Schleife wird aber sauber durchgearbeitet. Die hochpriore 5ms Task unterbricht alle 5ms die langsame Task und darf natürlich nicht die Daten überschreiben, solange die langsame Task rechnet - also die Tasken müssen sich irgendwie synchronisieren.

Gruß,
witkatz
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

also ich habe das Programm geändert... hatte irgendwie Bauchschmerzen damit wenn FBs direkt in der FOR-Schleife aufgerufen werden :)

Jetzt rufe ich meine FBs zyklisch in separaten Aktionen auf und triggere nur die StartBits der FBs in der FOR-Schleife.
Über BusyBits frage ich ab ob die FBs fertig sind und damit bin ich ausm Schneider.

Das Ganze ist nun sauber strukturiert und übersichtlicher!

Danke!
 
Zurück
Oben