# ST Parser ?



## RobiHerb (3 Dezember 2011)

Hat jemand hier im Forum schon einmal einen Parser für ST geschrieben?

Hintergrund ist die Überlegung, einen Arduino zur SPS zu machen.

http://de.wikipedia.org/wiki/Arduino-Plattform


----------



## gravieren (3 Dezember 2011)

Hi


RobiHerb schrieb:


> Hat jemand hier im Forum schon einmal einen Parser für ST geschrieben?
> 
> Hintergrund ist die Überlegung, einen Arduino zur SPS zu machen.
> 
> http://de.wikipedia.org/wiki/Arduino-Plattform


Unterstützung gibt es z.b. durch CoDeSys.
Die Umgebung, für ein "Target" liegt bei etwa 10.000 Euro.


Ich denke NICHT, das man das selbst machen kann.  
(Außer du ziehst mal so ein Team wie die OSCAT hoch.
Nach einigen Jahren könnte da schon was werden.

Gruß Karl


----------



## MasterOhh (3 Dezember 2011)

Nur aus reiner Neugier: warum sollte man soetwas tun wollen?
Arduinos lassen sich so schon recht simpel programmieren.


----------



## RobiHerb (5 Dezember 2011)

MasterOhh schrieb:


> Nur aus reiner Neugier: warum sollte man soetwas tun wollen?
> Arduinos lassen sich so schon recht simpel programmieren.



Das ist klar, die Sprache der Arduinos ist C. Aber der Arduino ist eine fast perfekte Billig SPS für den Hausgebrauch und Pascal ist eine recht simple Sprache, von der ST direkt abgeleitet wurde, da würde es sich doch fast anbieten, mal die Basis zu verbreitern.

Mit dem Aufkommen von C und Pascal gab es sogenannte Transpiler, die zwischen den beiden Sprachen umsetzen konnten, wenn man den Source von so einem Tool hätte ...

Ich habe mir auch mal LEX und YACC angesehen, aber das sind Geschosse, die man nicht nach Feierabend lernen möchte.

Frage also noch einmal hat das jemand schon mal so etwas gemacht?


----------



## LowLevelMahn (5 Dezember 2011)

*Kleiner Parser-Tip*

Der Gold Parser (http://www.goldparser.org/) ist nett für Grammar-Entwicklung

Da gibt es auch ein Pascal-Grammar (http://www.goldparser.org/grammars/index.htm) das du abwandeln könntest


----------



## Blockmove (5 Dezember 2011)

Hättest du geschrieben KOP oder FUP .... Das hätte ich verstanden.
Aber ST und C sind eigentlich sehr nach beieinander.

Bau mal die SPS-Grundfunktionen (Eingänge lesen, Programm abarbeiten, Ausgänge schreiben) mit dem Arduino nach.
Wenn du dabei vernünftige Variablennamen und entsprechende Defines nutzt, dann sieht dein C-Programm schon fast aus wie ein "richtiges" SPS-Programm.

Ich hab sowas mal vor zig Jahren für ein RTOS gemacht und es war eine nette Sache. 

Gruß
Dieter


----------



## Oberchefe (5 Dezember 2011)

> eine fast perfekte Billig SPS für den Hausgebrauch



"Standard" bei einer SPS ist meiner Meinung nach eine Online-Programmiermöglichkeit oder alternativ die Möglichkeit Teiles des Programms bei laufender SPS zu laden. Desweiteren muss ich Variablen/Bits online beobachten können. Nur wenn beides möglich ist ist das als SPS zu gebrauchen, alles andere ist Spielzeug, da kann ich dann auch mal eine andere Programmiersprache verschmerzen.



> Pascal ist eine  recht simple Sprache, von der ST direkt abgeleitet wurde





> Mit dem Aufkommen von C und Pascal gab es sogenannte Transpiler



Dann würde ich mal den Transpiler für "Pascal nach C" probieren, gegebenenfalls ist noch Handarbeit erforderlich.


----------



## RobiHerb (6 Dezember 2011)

Blockmove schrieb:


> Hättest du geschrieben KOP oder FUP .... Das hätte ich verstanden.
> Aber ST und C sind eigentlich sehr nach beieinander.
> 
> Bau mal die SPS-Grundfunktionen (Eingänge lesen, Programm abarbeiten, Ausgänge schreiben) mit dem Arduino nach.
> ...



Genau so sehe ich das auch, die Unterschiede sind mehr optisch und auf Online Change etc. kann ich verzichten bei 28 Euro Hardware.


----------



## Werner29 (12 Dezember 2011)

Hallo,

Klar habe ich schon mal einen Parser für ST geschrieben (für CoDeSys). Die Frage ist, was einem das bringt. Einen Parser für ST zu schreiben ist relativ simpel, wenn man
Programmiererfahrung hat und nicht besonders viel Wert auf Performance legt. Richtig schwierig ist es, gute Fehlermeldungen auszugeben.
Literatur zum Compilerbau gibt es en masse, und du wirst nicht drumrumkommen dich da einzulesen. Ich würde LEX und YACC empfehlen, auch wenn wir das für uns nicht nutzen.

Aber das Problem ist vielmehr was man mit dem Ergebnis des Parser macht: vermutlich einen Crosscompiler nach C.
Dann brauchst du also doch noch einen C-Compiler. Alles was über reine Syntaxfehler rausgeht (Variable nicht definiert, Kann long nicht nach int konvertieren, etc) wirst du
in deinem C-Generat suchen müssen, dann in ST beheben, dann nochmal zwei Compiler anwerfen, dann ärgern wegen eines Tippfehlers, dann...

..kurz gesagt: schreib deine Applikationen in C. 

Bernhard


----------



## ich988 (29 Dezember 2011)

Um es hier auch noch festzuhalten.
Lösung: http://www.sps-forum.de/showthread.php?50282-Einfacher-Formelparser-in-SCL


----------



## Oberchefe (29 Dezember 2011)

Das ist keine Lösung für obiges Problem, in diesem Thread war SCL->C gefragt, nicht andersrum.


----------

