Diskussion: SCL Compiler Einschränkungen, Erweiterungen

Zuviel Werbung?
-> Hier kostenlos registrieren
Gut ... dann spiele ich mal noch ein bißchen mit ...

Da fällt mir dann noch etwas ein :
In AWL kann ich z.B. einem FC einen Datenbaustein als IN-Parameter vom Typ BLOCK_DB übergeben. In dem FC kann ich dann einen FB aufrufen und diesem den genannten DB als Instanz übergeben (das ich hier aufpassen muß, dass die zusammen passen ist klar).
SCL (und auch Siemens, an die ich dass schon mal angefragt habe) wehrt sich wehement dagegen, das in SCL machen zu können.
Jedenfalls ... diese Funktion könnte ich häufiger gebrauchen ...

Gruß
Larry

könnte ich dazu ein AWL-Beispiel bekommen, wie das genau aussehen sollte? dann kann ich mir Gedanken machen, ob und wie man das in SCL realisieren könnte
 
aktuelles

um den Thread etwas wiederzubeleben, kann ich zu dem Entwicklungsthema etwas neues berichten!
da ich häufig gefragt wurde, ob es sich um ein echtes Projekt handelt, hier die Auflösung:
Die Firma MHJ hat die neue Version V5 ihrer Programmiersoftware WinSPS-S7 auf der SPS-Messe vorgestellt. In dieser Entwicklungsumgebung ist auch der diskutierte SCL-Compiler enthalten.
Weitere Informationen findet Ihr unter diesem Link:
http://www.mhj-online.de/de/shop_content.php?coID=27
 
gibt es mehr Details?

Du also für die MHJ-Leuten einen kompletten SCL Kompiler gebaut - sehr schön
auf der Seite sieht man aber leider nicht so viel - gibts mehr Details zu deinem Projektteil?

nur so als Frage nebendrann:
die genannte Spracherkennung ist wirklich sinnvoll einsetzbar?, hat MHJ Anfragen diesbezüglich gehabt - oder ist das ein Versuch ob Bedarf da ist

MfG LowLevelMahn
 
Du also für die MHJ-Leuten einen kompletten SCL Kompiler gebaut - sehr schön

naja, Compilerbau ist ja nicht wirklich anspruchsvoll...eigentlich ist es mehr Fleißarbeit ;-) außerdem habe ich schon Erfahrung in dem Bereich. Mein allererstes Projekt im Rahmen meiner Diplomarbeit war die Mitarbeit an einem C-Compiler für die S5!!! (wen's interessiert, ich hab mal ein PDF angehängt) Das Projekt war zwar wirtschaftlich ein Reinfall, für mich war es aber der Einstieg in die Siemens S5/S7 kompatible Welt . Daraus sind ja dann schließlich ein paar S5/S7 kompatible CPUs entstanden.

auf der Seite sieht man aber leider nicht so viel - gibts mehr Details zu deinem Projektteil?
dazu gibt es noch nicht soviel Show-Material. Die Einbindung in die IDE ist aber recht komfortabel gelungen, da wurden auch einige Vorschläge aus diesem Thread berücksichtigt. Zum SCL Sprachumfang ist zu sagen: Im Moment ist der "Standard"-Sprachumfang vorgesehen, den der Siemens-Compiler unterstützt. Sinnvolle Erweiterungen sind zwar jederzeit möglich, sind bisher aber noch nicht beauftragt worden...

nur so als Frage nebendrann:
die genannte Spracherkennung ist wirklich sinnvoll einsetzbar?, hat MHJ Anfragen diesbezüglich gehabt - oder ist das ein Versuch ob Bedarf da ist
ich hab es selbst noch nicht ausprobiert...wäre natürlich schon interessant, wenn es zuverlässig funktioniert!
 

Anhänge

  • s5c_2.jpg
    s5c_2.jpg
    438,4 KB · Aufrufe: 66
naja, Compilerbau ist ja nicht wirklich anspruchsvoll...eigentlich ist es mehr Fleißarbeit ;-) außerdem habe ich schon Erfahrung in dem Bereich.

Naja, für einen Informatiker vielleicht nicht anspruchsvoll ;-)
Als Elektrotechniker muss man erstmal lernen wie das mit den formalen Sprachen überhaupt funktioniert, wenn man davor nur entfernt etwas gehört hat (das war vielleicht der Grund warum ich beim ersten Lesen von Gödel, Escher, Bach nicht viel verstanden habe...).
Ich habe mal angefangen so etwas mittels flex/bison umzusetzen (aber nicht weit gekommen), und da muss man ja wenigstens die Grundbegriffe kennen.
Mich würde mal interessieren ob bei MHJ auch auf diese Tools gesetzt wurde, oder ob alles selber ausprogrammiert wurde. Wird dort auch der Zwischenschritt über AWL gemacht, oder direkt MC7-Code generiert?

Mein allererstes Projekt im Rahmen meiner Diplomarbeit war die Mitarbeit an einem C-Compiler für die S5!!! (wen's interessiert, ich hab mal ein PDF angehängt) Das Projekt war zwar wirtschaftlich ein Reinfall, für mich war es aber der Einstieg in die Siemens S5/S7 kompatible Welt . Daraus sind ja dann schließlich ein paar S5/S7 kompatible CPUs entstanden.
Ich habe immer nach Dokumentationen zu diesem S5 C-Compiler gesucht, aber nie gefunden. Auf der Siemens Seite sind keine Handbücher mehr zu finden. Hast du da noch mehr Informationen zu? Vielleicht ein paar Code-Beispiele? Mich interessiert vor allem wie die Parameterübergabe, Rückgabewerte usw. umgesetzt wurde.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wird dort auch der Zwischenschritt über AWL gemacht, oder direkt MC7-Code generiert?

AWL kann man doch in dieser hinsicht nicht wirklich als zwischenschritt bezeichnen, der AWL code entspricht ja direkt dem Maschinencode, nur anderst dargestellt (ok ausser bei den calls) oder seh ich das fallsch?
 
SCL Wünsche

1. Die Deklaration von Konstanten, sollte mit dem Einbinden einer externen Datei möglich sein (ähnlich eine Headerdatei in C).
2. Der Siemens Compiler müsste im RAM arbeiten und nicht auf der Festplatte. Jetzt übersetzt der Compiler in einer VM um den Faktor 10 schneller als im XP SP3.
3. Man sollte Namen im gesamten Projekt suchen können.
4. Man sollte seinen eigenen Editor verwenden können.
5. Die Größe der definierten Arrays kann jetzt nur mit Konstanten deklariert werden. Das sollte verbessert werden.
6. Bei Datenkonvertierungen auf kleinere Typen wie z.B. Word auf Byte sollten Warnungen ausgegeben werden (sollte schaltbar gemacht werden).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe mal angefangen so etwas mittels flex/bison umzusetzen (aber nicht weit gekommen), und da muss man ja wenigstens die Grundbegriffe kennen.
Mich würde mal interessieren ob bei MHJ auch auf diese Tools gesetzt wurde, oder ob alles selber ausprogrammiert wurde. Wird dort auch der Zwischenschritt über AWL gemacht, oder direkt MC7-Code generiert?
also, flex und bison nehmen einen viel arbeit ab. Auf diese Tools kann man auf jeden fall setzen; allerdings muß man die Theorie dahinter verstehen (lexikalische, syntaktische Analyse)...trotzdem muß man darüber hinaus noch viel programmieren, bis mal ein Compiler-Output rauskommt. Der ist im übrigen wirklich AWL!

Ich habe immer nach Dokumentationen zu diesem S5 C-Compiler gesucht, aber nie gefunden. Auf der Siemens Seite sind keine Handbücher mehr zu finden. Hast du da noch mehr Informationen zu? Vielleicht ein paar Code-Beispiele? Mich interessiert vor allem wie die Parameterübergabe, Rückgabewerte usw. umgesetzt wurde.
es gibt wirklich jemanden, der diesen S5_C Compiler kennt? Wow, das hätte ich nicht gedacht! Der läuft ja schon fast unter "modernem antiquariat" *lach* aber leider habe ich dazu außer ein paar Flyer gar nichts mehr dazu! Zu der Parameterübergabe weiß ich noch, daß wir das über LIR/TIR gemacht haben. Bei den größeren S5-CPUs (AG155) konnte man ja auf alle Systemspeicher und auch auf den Code selbst zugreifen. Interessant war auch der Trick, einen Source-Level Breakpoint zu setzen: Es wurde ein ungültiger Opcode an die Breakpointstelle gesetzt, dadurch wurde dann ein Fehler-OB aufgerufen (war's OB13 oder OB19). Dieser musste dann den alle Statusinformationen wegspeichern und im Falle eines Einzelschrittes musste dann der Original-Befehl noch irgendwie ausgeführt werden.
 
es gibt wirklich jemanden, der diesen S5_C Compiler kennt? Wow, das hätte ich nicht gedacht! Der läuft ja schon fast unter "modernem antiquariat" *lach* aber leider habe ich dazu außer ein paar Flyer gar nichts mehr dazu! Zu der Parameterübergabe weiß ich noch, daß wir das über LIR/TIR gemacht haben. Bei den größeren S5-CPUs (AG155) konnte man ja auf alle Systemspeicher und auch auf den Code selbst zugreifen.

Es gab hier im Forum ja mal Bestrebungen einen eigenen C-Compiler für S7 zu erstellen. Zu der Zeit war ich hier im Forum aber noch nicht so aktiv. Die Diskussionen zu diesem Thema sind aber recht interessant.
Letztendlich war imho die fehlende Debugging-Möglichkeit der ausschlaggebende Grund in dieser Richtung nicht weiter zu entwickeln. Denn was bringt es wenn ich in C-Code schreiben kann, aber nicht in der SPS-üblichen "Brille-Aufsetz"-Manier beobachten zu können? Denn das ist das was alle wollen, und auch im SPS-Umfeld zwingend notwendig ist.

Zumindest kam damals auch die Idee auf, den GCC als Frontend zu verwenden und nur das Backend neu zu schreiben.
Nun ist aber eine Siemens SPS von der Architektur her grundsätzlich zu den "normalen" CPUs/Controllern verschieden. Denn in der S7 kann ich keinen Stack aufbauen, habe keine Register, der Speicher ist über die Datenbausteine extrem fragmentiert usw. Selbst bei dem AVR-8 Bit Controller der ja mehr oder weniger offiziell unterstützt wird entstehen da einige Probleme, weil der GCC vorranging auf x86 ausgelegt ist.
Darum könnte ich mir vorstellen, dass sich vom GCC nicht viel mehr als die lexikalische und syntaktische Analyse für eine S7 verwenden lässt.
 
dieses C-Compiler Thema ist ein bisschen Off-Topic;man könnte es ja wieder in einem eigenen Thread aufleben lassen.
ich weiß nicht, wieviele Programmierer eine SPS in C programmieren möchten. wahrscheinlich ist der Markt zu klein, um daraus ein kommerzielles Projekt zu machen. aber vielleicht finden sich ja ein paar Leute, die gemeinsam ein OpenSource Projekt starten wollen. Ich denke, ich könnte einiges dazu beitragen.
Und MHJ würde sich bestimmt freuen, den C-Compiler in ihr Programmierpacket zu integrieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
dieses C-Compiler Thema ist ein bisschen Off-Topic;man könnte es ja wieder in einem eigenen Thread aufleben lassen.
ich weiß nicht, wieviele Programmierer eine SPS in C programmieren möchten. wahrscheinlich ist der Markt zu klein, um daraus ein kommerzielles Projekt zu machen.

Zu S5-Zeiten war der Wunsch nach einer Hochsprache verständlich. Bei der S7 hab ich SCL. Wo sollen die Vorteile von C sein?
Ich wäre eher für eine Weiterendwicklung / Ergänzung von SCL.

Gruß
Dieter
 
Zu S5-Zeiten war der Wunsch nach einer Hochsprache verständlich. Bei der S7 hab ich SCL. Wo sollen die Vorteile von C sein?
Ich wäre eher für eine Weiterendwicklung / Ergänzung von SCL.

Gruß
Dieter

das ist eigentlich richtig...aber ich hatte immer wieder mal mit Kunden zu tun, die ihre bestehenden C-Programme auf der S7 laufen lassen wollten.
das war meist dann der Fall, wenn beim Maschinenbauer irgendeine Sonderelektronik Spezialaufgaben hatte und die Aufgabe dank der Weiterentwicklung in der SPS-Technik locker von der SPS mit übernommen werden kann. Der Kunde hätte sich dann vorgestellt, er könnte seine teure Spezialelektronik einsparen und sein Programm mit relativ wenig Aufwand auf die SPS portieren.
 
Ist ja schon ein bisschen Zeit vergangen - und wie ich festgestellt habe hat zur Zeit keine Step7 alternative einen funktionierenden SCL Support - oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist ja schon ein bisschen Zeit vergangen - und wie ich festgestellt habe hat zur Zeit keine Step7 alternative einen funktionierenden SCL Support - oder?

Also du meinst, ob man bei einem anderen Automatisationsanbieter SCL programmieren kann?
Codesys hat einen IMHO wirklich guten SCL/ST Editor.

mfG René
 
SCL ist nur eine andere Name für IEC 61131-3 Structured text.
ST gibt es bei fast allen heutigen SPSen.

Zur Thema C-Compiler, dann wäre es vielleicht besser mit ein C-nach-ST Konverter.
Das musste fast 1-zu-1 möglich sein, solange das es nicht Pointer umfassen soll.
Und dann hat man Code das man in sein Programmierumgebung bearbeiten und testen kann.
 
Zurück
Oben