Majestic_1987
Level-1
- Beiträge
- 270
- Reaktionspunkte
- 22
-> Hier kostenlos registrieren
Die Aussage, dass SCL und ST gleich sind ist - bezogen auf die Sprachmittel - korrekt. ABER nicht bezogen auf das, was die Steuerung damit nachher tut.
Warum? Weil eben in S7 aus dem SCL erstmal fleißig AWL erzeugt wird, während bei z.b. CoDeSys aus dem ST direkt ein kompilat erstellt wird. Bei der S7-300 wird dieser AWL-Kram dann in MC7-Code (quasi auch AWL mit ein paar Unterschieden) übersetzt und interpretiert.
Somit hast du hier mehrere Übersetzungsschritte drin, die natürlich alle suboptimal sein können für eine gegebene Aufgabe.
ST auf ner z.B. Beckhoff-, Wago- oder Bosch-Steuerung ist also was anderes, als SCL auf ner S7. Zumindest zur Laufzeit.
Du könntest nun auf der S7 AWL direkt proggen und das gleiche in ST auf der Vergleichssteuerung machen. Da dein AWL aber nicht dem entsprechen wird, was auf Maschinencode-Ebene in der Vergleichssteuerung passieren wird, ist auch das nicht wirklich gleich. Bleibt also nur: Alles in AWL machen. Theoretisch sollten alle Steuerungen sich bei gleichem AWL-Code auch gleich verhalten. Deswegen: AWL.
Es wäre allerdings auch mal eine Interessante Aufgabe, diese Unterschiede wissenschaftlich zu untersuchen. Also: Gegebenes Programm. Einmal in SCL, einmal in AWL. Relativen Laufzeitunterschied ermitteln. Gleiches Spiel auf sagen wir CoDeSys.
Jitter bezeichnet allgemein eine zeitliche Schwankung bei einem theoretisch isochronen Prozess, ums mal einfach zu formulieren.
Bei der Übertragung in einem Echtzeit-Feldbus kann das auftreten, weil du eben nie zu exakt äquidistanten Zeitpunkten senden kannst. Er tritt aber auch bei ner Steuerung auf, weil auch hier der Aufrufzeitpunkt nie exakt im selben Zeitabstand erfolgt.
Die Schwankung der Zykluszeit bei nicht isochronem Bausteinaufruf (man kanns auch "Freilaufende Task" nennen) ist also auch ne Art Jitter. Übrigens geben die Steuerungshersteller i.d.R. für ihre Runtime den max. Jitter der Basiszeit an. Könnte man z.b. auch mal messen und mit dem Datenblatt vergleichen.
Und mit Speicherbereiche kopieren meinte ich sowas wie "512 Byte von a nach b kopieren" oder sowas. Typumwandlungen sind aber auch ne gute Idee. Wie gesagt. Man kann alles mal mit rein bringen. Dadurch wird auch das Programm größer. Kann auch nich schaden ;-)
Warum? Weil eben in S7 aus dem SCL erstmal fleißig AWL erzeugt wird, während bei z.b. CoDeSys aus dem ST direkt ein kompilat erstellt wird. Bei der S7-300 wird dieser AWL-Kram dann in MC7-Code (quasi auch AWL mit ein paar Unterschieden) übersetzt und interpretiert.
Somit hast du hier mehrere Übersetzungsschritte drin, die natürlich alle suboptimal sein können für eine gegebene Aufgabe.
ST auf ner z.B. Beckhoff-, Wago- oder Bosch-Steuerung ist also was anderes, als SCL auf ner S7. Zumindest zur Laufzeit.
Du könntest nun auf der S7 AWL direkt proggen und das gleiche in ST auf der Vergleichssteuerung machen. Da dein AWL aber nicht dem entsprechen wird, was auf Maschinencode-Ebene in der Vergleichssteuerung passieren wird, ist auch das nicht wirklich gleich. Bleibt also nur: Alles in AWL machen. Theoretisch sollten alle Steuerungen sich bei gleichem AWL-Code auch gleich verhalten. Deswegen: AWL.
Es wäre allerdings auch mal eine Interessante Aufgabe, diese Unterschiede wissenschaftlich zu untersuchen. Also: Gegebenes Programm. Einmal in SCL, einmal in AWL. Relativen Laufzeitunterschied ermitteln. Gleiches Spiel auf sagen wir CoDeSys.
Jitter bezeichnet allgemein eine zeitliche Schwankung bei einem theoretisch isochronen Prozess, ums mal einfach zu formulieren.
Bei der Übertragung in einem Echtzeit-Feldbus kann das auftreten, weil du eben nie zu exakt äquidistanten Zeitpunkten senden kannst. Er tritt aber auch bei ner Steuerung auf, weil auch hier der Aufrufzeitpunkt nie exakt im selben Zeitabstand erfolgt.
Die Schwankung der Zykluszeit bei nicht isochronem Bausteinaufruf (man kanns auch "Freilaufende Task" nennen) ist also auch ne Art Jitter. Übrigens geben die Steuerungshersteller i.d.R. für ihre Runtime den max. Jitter der Basiszeit an. Könnte man z.b. auch mal messen und mit dem Datenblatt vergleichen.
Und mit Speicherbereiche kopieren meinte ich sowas wie "512 Byte von a nach b kopieren" oder sowas. Typumwandlungen sind aber auch ne gute Idee. Wie gesagt. Man kann alles mal mit rein bringen. Dadurch wird auch das Programm größer. Kann auch nich schaden ;-)