Hallo
Bin neu in der Codesys Welt jedoch sehr begeistert. Hätte eine frage da ich von der Siemens Seite komme kenne ich dort immer die OBS (zB. OB 35) der immer in gewissen Zeitabständen aufgerufen wird und zwar unabhängig vom Hauptprogramm. Gibt es das auch in Codesys ? Habe diese immer die für die Zeitmessungen/Takte benutzt da es unabhängig von der Zykluszeit der CPU ist. Wie löst ihr dies in Codesys ?
Gruss Mario
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
nun, Du kannst in CODESYS beliebig viele Programmbausteine als PRG definieren und die von (nahezu) beliebig vielen Tasks aufrufen.
Konkret (ohne das Konzept der OBs wirklich zu kennen): Wenn Du ein PLC_PRG von einer MainTask ausführst und daraus alles weitere aufrufst, kannst Du Dir einer zweite Task, z. B. TimerTask im TaskManager anlegen. Zusätzlich legst Du Dir einen weiteren Programmbaustein an, z. B. Timer (PRG) und führst da Deine Zeitmessungen unabhängig von der MainTask durch. Dazu solltest Du die TimerTask natürlich mit der entsprechenden Zykluszeit aufrufen lassen und bei den Prioritäten darauf achten, welche Task Vorrang vor der anderen hat (niedrige Prio-Zahl = höhere Priorität).
Ansonsten kannst Du natürlich mit den Timern direkt in den Bausteinen auch beliebige Messungen durchführen. So liefern die Funktionen TIME() und LTIME() Dir eine Zeitinformation (in ms bzw. us), die Du dann später auswerten kannst.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo
Bin neu in der Codesys Welt jedoch sehr begeistert. Hätte eine frage da ich von der Siemens Seite komme kenne ich dort immer die OBS (zB. OB 35) der immer in gewissen Zeitabständen aufgerufen wird und zwar unabhängig vom Hauptprogramm. Gibt es das auch in Codesys ? Habe diese immer die für die Zeitmessungen/Takte benutzt da es unabhängig von der Zykluszeit der CPU ist. Wie löst ihr dies in Codesys ?
Gruss Mario
Hallo Mario,
nun, Du kannst in CODESYS beliebig viele Programmbausteine als PRG definieren und die von (nahezu) beliebig vielen Tasks aufrufen.
Konkret (ohne das Konzept der OBs wirklich zu kennen): Wenn Du ein PLC_PRG von einer MainTask ausführst und daraus alles weitere aufrufst, kannst Du Dir einer zweite Task, z. B. TimerTask im TaskManager anlegen. Zusätzlich legst Du Dir einen weiteren Programmbaustein an, z. B. Timer (PRG) und führst da Deine Zeitmessungen unabhängig von der MainTask durch. Dazu solltest Du die TimerTask natürlich mit der entsprechenden Zykluszeit aufrufen lassen und bei den Prioritäten darauf achten, welche Task Vorrang vor der anderen hat (niedrige Prio-Zahl = höhere Priorität).
Ansonsten kannst Du natürlich mit den Timern direkt in den Bausteinen auch beliebige Messungen durchführen. So liefern die Funktionen TIME() und LTIME() Dir eine Zeitinformation (in ms bzw. us), die Du dann später auswerten kannst.
Ok vielen Dank Roland für die Info das hilft mir weiter. Werde das so mal ausprobieren
Gruss Mario