Forum: FPGA, VHDL & Co. FPGA ähnlichkeiten mit S7 Siemens?


von Johnny S. (sgt_johnny)


Lesenswert?

Das ist keine Frage zu irgendeinem Projekt oder so, nur rein aus 
intresse.

Ich habe rein aus langeweile und zufall einen Artikel über FPGA 
Microcontroller gelesen.

Dabei habe ich dann auch Bilder vom Code gesehen, z.b. sowas:

http://sine.ni.com/cms/images/casestudies/image917368718485822167.png

http://www.ni.com/cms/images/devzone/tut/Code_MatrixVector_20140810022410.png


Das einzige was ich über FPGA gehört habe, das es scheinbar "unglaublich 
schwer" sein soll, und vielen geraten wird, die Finger davon zu lassen, 
da man lange zum erfolg braucht usw usw.

Wenn ich das aber so von weitem anschau, vorallem den Code, sieht mir 
das irgendwie verwand aus mit Siemens S7 SPS-Codes:

https://www.dmcinfo.com/Portals/0/Blog%20Pictures/Siemens%20Function%20Block%20Call.JPG

Dort werden ja auch Funktionen in Blöcke gepackt und dann die Blöcke als 
"Schaltzeichen" benutzt.


Kann mir jemand sagen, ob hier tatsächlich zwischen SPS S7 und FPGA 
einige Ähnlichkeiten bestehen?

Falls ja, würde es mich dann doch mal reizen ein Evaluation Board zu 
kaufen, den ich finde S7 eigentlich super-simpel und habe auch einige 
Jahre beruflich S7 an Produktionszellen eingesetzt, und wenn fpga 
ähnlich wäre, hätt ich bestimmt keine grosse mühe mich darin 
einzuarbeiten.

: Verschoben durch Moderator
von Falk B. (falk)


Lesenswert?

@ Johnny SGT (sgt_johnny)

>Kann mir jemand sagen, ob hier tatsächlich zwischen SPS S7 und FPGA
>einige Ähnlichkeiten bestehen?

Ja, die gibt es. Beide verarbeiten Logikschaltungen bzw. 
Statemachines. Der Unterschied ist aber, daß FPGAs um Faktor 1000++ 
schneller sind bzw. sein können, wenn man weiß was man tut.

>Falls ja, würde es mich dann doch mal reizen ein Evaluation Board zu
>kaufen, den ich finde S7 eigentlich super-simpel und habe auch einige
>Jahre beruflich S7 an Produktionszellen eingesetzt, und wenn fpga
>ähnlich wäre, hätt ich bestimmt keine grosse mühe mich darin
>einzuarbeiten.

Jain. Da aber FPGA-Boards heute recht preiswert zu haben sind, probiers 
einfach aus.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Johnny S. schrieb:
> Das einzige was ich über FPGA gehört habe, das es scheinbar "unglaublich
> schwer" sein soll, und vielen geraten wird, die Finger davon zu lassen,
> da man lange zum erfolg braucht usw usw.
Das sagen die, die mit ihrem C-Wissen FPGAs "programmieren" wollen. Das 
geht schief, die kommen so nie auf einen grünen Zweig.

> Funktionen in Blöcke gepackt und dann die Blöcke als
> "Schaltzeichen" benutzt.
Mit einem Schaltplan, der wie VHDL ja auch eine "Hardwarebeschreibung" 
ist, wird das selbe gemacht: Funktionsblöcke und Hierarchien aufgebaut 
und verdrahtet.

> ich finde S7 eigentlich super-simpel ... und wenn fpga ähnlich wäre
Auch dieser Ansatz ist falsch, auch wenn du sowas wie "Zustandsautomat" 
(=Merkerkette) schon von der SPS her kennst.

VHDL ist eine Hardware-BESCHREIBUNGS-Sprache. Du musst dir also erst mal 
ein Bild von deiner Hardware machen (im Kopf oder auf einem Blatt 
Papier). Anstatt daraus nun einen Schaltplan zu malen, beschreibst du 
dieses "Bild" mit den Syntaxelementen von VHDL. Und siehst dir im 
RTL-Schaltplan ab&zu mal an, ob der Synthesizer deine Beschreibung 
verstanden hast.

Das ist wie früher, als man jemandem einen Weg beschreiben musste: "fahr 
gerade aus bis zum blauen Haus, dort rechts und dann die dritte hoch bis 
zur Tankstelle...". Wenn derjenige diese Beschreibung nicht verstanden 
hat, fand er auch nicht zum Ziel, das du beschrieben hattest.


> ob hier tatsächlich zwischen SPS S7 und FPGA einige Ähnlichkeiten
> bestehen?
Im Beitrag "Mit Logiflash Programme für FPGA erstellen. Geht das?" wollte auch einer sowas 
machen...

> Falls ja, würde es mich dann doch mal reizen ein Evaluation Board zu
> kaufen,
Mach doch. Das ist gar nicht so teuer, und wenns nichts wird, kannst du 
es ohne großen Wertverlust weiterverticken...

Noch was zum Thema "Schaltplan und FPGA":
Beitrag "kruder Fehler bei FPGA-Programmierung (ISE WEBpack-Schematic)"

: Bearbeitet durch Moderator
von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Falk B. schrieb:
> Beide verarbeiten Logikschaltungen
und beide sind eckig. Das ist die größte Gemeinsamkeit. Eigentlich auch 
so ziemlich die Einzige. Im Ernst, heute sind die Spassvögl unterwegs. 
Einen Zusammenhang zwischen dem Code von S7 und FPGAs zu sehen. Einfach 
Spitze.

von Vancouver (Gast)


Lesenswert?

Johnny S. schrieb:
> Das einzige was ich über FPGA gehört habe, das es scheinbar "unglaublich
> schwer" sein soll, und vielen geraten wird, die Finger davon zu lassen,
> da man lange zum erfolg braucht usw usw.

Keine Ahnung, welche Literaturquellen Du da zur Rate gezogen hast. FPGA 
sind nicht "unglaublich schwer", sondern sie sind "anders".  Man muss 
sich von der streng sequenziellen Denkweise der Softwareentwicklung 
lösen, weil im FPGA die Dinge gleichzeitig geschehen. Das ist für 
Anfänger das größte Problem. Zudem muss man ein gewisses Verständnis 
für digitale Schaltungen haben. Die Begriffe Register, kombinatorische 
Logik, State-machine, Zähler, Pipeline, Fan-out, Setup/Hold-Zeit  etc 
müssen einem geläufig sein, und es ist nicht verkehrt, wenn man weiß, 
auf welche Weise man digital mit Zahlen rechnet (Stichwort 
Addiererstrukturen). Bei FPGA programmierst Du keinen Algorithmus, 
sondern eine Struktur, und Du musst Dich massiv um einen Faktor kümmern, 
der bei Software keine Rolle spielt: Zeit.

Wenn man unbedingt will, kann man gewisse Ähnlichkeiten zwischen SPS und 
FPGA finden. Bei beiden beschreibt man das Verhalten als eine Logische 
Verknüpfung zwischen Eingängen und Ausgängen. Aber in einer SPS sitzt 
ein stinknormaler Microcontroller, der diese Verknüpfungen schnell genug 
sequenziell auswertet. Auf einem FPGA wird hingegen eine echte 
Schaltungsstruktur erzeugt, so als würdest Du das ganze mit Logikgattern 
nachbauen.

von Lars R. (lrs)


Lesenswert?

Johnny S. schrieb:
> Kann mir jemand sagen, ob hier tatsächlich zwischen SPS S7 und FPGA
> einige Ähnlichkeiten bestehen?

Ja. Der Unterschied ist, dass für die graphisch spezifizierte Schaltung 
die Verzögerung vom Eingang zum Ausgang beim FPGA nur wenige Takte 
beträgt und dass das FPGA mit jedem Takt (oder mit jedem x-ten) eine 
neue Eingabe akzeptiert. Die SPS auf Basis von CPUs rechnet für eine 
gegebene Eingabe die graphische Schaltung von vorn bis hinten 
sequentiell durch und akzeptiert in dieser Zeit keine neuen Eingaben.

> Falls ja, würde es mich dann doch mal reizen ein Evaluation Board zu
> kaufen, den ich finde S7 eigentlich super-simpel und habe auch einige
> Jahre beruflich S7 an Produktionszellen eingesetzt, und wenn fpga
> ähnlich wäre, hätt ich bestimmt keine grosse mühe mich darin
> einzuarbeiten.

Bei NI/Labview? und co. kannst Du vereinfacht/prinzipiell eine 
Funktionalität graphisch spezifizieren und dann entscheiden, wie dies 
realisiert werden soll (CPU, DSP, FPGA). Auch abstrahierte textuelle 
Beschreibungen für Funktionsblöcke sind möglich.
Auf dieser Ebene arbeitest Du Dich nicht in FPGA ein, sondern in ein 
Produkt, das FPGAs benutzt und das hoffentlich so funktioniert, wie Du 
es möchtest.
Die CPU in der SPS verarbeitet auch nicht die graphischen Bildchen. 
Genauso, wie Du weißt, wie man diese CPU benutzt, weißt Du, wie man 
FPGAs benutzt. Dh, je nach Sichtweise gar nicht oder eben ausreichend. 
CPU und FPGA haben Unterschiede, die manchmal Vorteil und manchmal 
Nachteil sind. Einen Unterschied habe ich weiter oben aufgeführt. Andere 
haben bereits einige erwähnt. Letztlich ist es immer das Selbe: Kosten 
vs. Performanz in Abhängigkeit von den Anforderungen.

Edit: Es ist schwieriger und aufwändiger, mit FPGAs zum Ziel zu kommen. 
Diesen Zusatz0Aufwand leistet Du oder das Tool oder Ihr beide; und zwar 
fehlerfrei, sonst funktioniert es nicht. Dh, man kann mehr Fehler machen 
und die Methode auf Basis von FPGAs ist noch nicht so lang in Nutzung 
wie diejenige auf Basis von CPUs. Ihr beide (Du und das Tool) dürft Euch 
nicht missverstehen, sonst funktioniert es auch nicht.

: Bearbeitet durch User
von Praktiker (Gast)


Lesenswert?

Johnny S. schrieb:
> Kann mir jemand sagen, ob hier tatsächlich zwischen SPS S7 und FPGA
> einige Ähnlichkeiten bestehen?

Ja, beide funktionieren mit Strom...


Vancouver schrieb:
> Wenn man unbedingt will, kann man gewisse Ähnlichkeiten zwischen SPS und
> FPGA finden. Bei beiden beschreibt man das Verhalten als eine Logische
> Verknüpfung zwischen Eingängen und Ausgängen.

Bei einer SPS wird gar nichts beschrieben. Bei einer SPS wird ein ganz 
normales Programm geschrieben.

Ob Du in C schreibst:

1
ventil = taster && !leckage;

Oder ob Du in ST (SPS) schreibst:

1
ventil := taster AND NOT leckage;

Oder ob Du das in AWL zusammenhackst oder das mit lustigen Bildchen 
malst, macht keinen Unterschied.

Der springenden Punkt ist, das ist alles nur ein sequentielles Programm. 
Auch wenn TIA oder andere SPS-Programmierumgebungen Dir mit den Kästchen 
suggerieren, da würden irgendwelche Signale geroutet oder eine 
(Hardware-)Struktur beschrieben; am Ende ist das alles nur ein ganz 
stinknormales, sequentielles Programm, das oben anfängt und unten 
aufhört.

Beim einem FPGA werden dagegen tatsächlich Strukturen beschrieben und 
Signale geroutet. Da passiert überhaupt nichts sequentiell, sondern 
alles parallel.

Das witzige daran ist eigentlich, dass beim FPGA die 
Entwicklungsleistung (zu einem gewissen Teil) darauf verwendet wird, mit 
den nicht-sequentiellen Hardware-Resourcen ein gewisses sequentielles 
Verhalten zu erreichen, und bei der SPS-Programmierung ein großer Teil 
der Entwicklungsleistung darauf verwendet wird, mit einem sequentiellen 
Programm, ein gewisses paralleles Verhalten zu erreichen.

Historisch war der Fokus (und bei einigen Herstellern ist er noch immer) 
bei SPS auf eine Verwendbarkeit durch "Laien". D,h, ein Elektriker oder 
E-Konstrukteur der ein paar Schütze zusammenschalten konnte, soll das 
mit einer SPS machen können. Daher kommen die lustigen Bildchen in der 
SPS-Welt.

Das ist aber definitiv am aussterben, da heutige Maschinen und Anlagen 
immer mehr aus "echter" Software bestehen die von Softwerkern erstellt 
wird, da immer mehr Daten verwaltet und mit externen Systemen 
kommuniziert wird, immer mehr Mechanik durch Software ersetzt wird, und 
das Know-How immer mehr in Prozessen und Algorithmen liegt anstatt in 
der Konstruktion.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Ich stimme zwar größtenteils den Ausführungen der Vorredner zu. 
Allerdings sind einige Formulierungen doch etwas zu weitreichend. Es 
gibt keinen Gegensatz zwischen FPGAs und SPS. Es sind auch FPGA-basierte 
SPS auf dem Markt erhältlich, ebenso auch FPGA-Zusatzmodule mit den in 
der industriellen Automatisierung üblichen Bauformen und 
Signalstandards.

Das, was man bei SPS nicht aus den Augen lassen sollte, ist die 
Entstörung der Eingangssignale. Jede bessere SPS unterdrückt Glitches, 
entprellt Eingänge usw.; vielfach lassen sich die entsprechenden 
Totzeiten und/oder Filterbandbreiten in der SPS auch konfigurieren. 
Schließt man hingegen ein Eingangssignal ganz unbedacht über einfache 
Pegelwandler direkt an ein FPGA an, dürfte man hier sein blaues Wunder 
erleben. Allerdings kann man in einer Hardwarebeschreibung auch ganz 
wunderbar exakt auf den konkreten Anwendungsfall zugeschnittene Blöcke 
zum Einsynchronisieren und Filtern der Eingänge implementieren, sogar 
viel passgenauer als bei Standard-SPS.

Die o.a. FPGA-Zusatzmodule sind z.B. auch für Siemens S7 erhältlich und 
bieten sich insbesondere dann an, wenn man sehr schnelle kombinatorische 
Logik benötigt, z.B. zum präzisen Stopppen von Antrieben durch 
Positionsmarken.

Eine wissenschaftlich angehauchte, natürlich auch unter dem 
Gesichtspunkt der Werbung zu betrachtende, Publikation zu den 
FPGA-basierten SPS von Zander findet man hier:
https://www.zander-aachen.de/files/Zander/Fachartikel/zx20_fachbeitrag.pdf

Dort werden die Unterschiede zwischen klassischer SPS und FPGA-basierter 
durchaus brauchbar herausgearbeitet. Der letzte Schritt, nämlich dass 
sich eine normale Beschreibung in ST (ähnlich SCL bzw. Pascal) 
schmerzfrei in VHDL übersetzen ließe, dürfte jedoch nicht ganz so 
einfach sein. Es gibt ja auch schon viele andere Ansätze, normale 
"Software-Hochsprachen-Quelltexte" blind in 
Hardwarebeschreibungssprachen umzusetzen, was natürlich entweder auf 
Grund der inhärenten Nebenläufigkeit der generierten 
Hardwarebeschreibung zu Problemen führt oder letztendlich auf die 
Synthetisierung eines sequentiell arbeitenden Softcore hinausläuft.

Man könnte zwar meinen, es ließe sich ohne Modifikationen eine 
Nebenläufigkeit z.B. auf OB-Ebene realisieren. Dabei muss man aber schon 
ganz genau hinschauen, wie verschiedene Ablaufstränge dann z.B. über 
Datenbausteine bzw. globale Variable miteinander kommunizieren. Und 
nein: globale Variable sind bei SPS nicht abgrundtief böse, wenn sie 
z.B. in Form von Bitfeldern oder Zustandswerten zur Kommunikation 
zwischen Zustandsautomaten verwendet werden.

Ein wesentlicher Punkt, der die Umstellung klassischer SPS-Programme auf 
Hardwarebeschreibungen deutlich erleichtern kann, besteht darin, dass 
"ordentliche" SPS-Programme meist sehr flache Aufrufpfade von Funktionen 
und Funktionsblöcken haben, ganz im Gegensatz zu "üblichen" 
Microcontrollerprogrammen oder gar fetten graphischen (PC-)Programmen.

von Bitwurschtler (Gast)


Lesenswert?

Zur FPGA-"Programmierung" gehört mehr als das Programm. Neben den 
Programmcode musst du
-Timing und sonstige constraints vergeben (ucf xcf files editieren)
-Zuordnung Signal/pin definieren (files wie oben)
-progrmmierfile erzeugen (bitgen Optionen)
-simulieren (testbench schreiben, tcl Syntax, etc)
-debuggen (Logicanalyzer und sonstige debugtools)

wie man das macht ist bspw im constraint guide beschrieben, der hat 
mehrere hundert Seiten. Das kanns du nicht mit Labview machen wie in 
deinen
screenshots gezeugt. Labview setzt auf die FPGA-Hersteller -IDE auf, 
ersetzt sie aber nicht.

und das erlernen der FPGA-Tools und FPGA-interna ist IMHO das 
Hauptproblem. die "VHDL-Programmierung" die man auch mehr schlecht als 
recht mi8t Blockdiagrammen machen kann ist Pillepalle dagegen.

Weltbester FPGA-Pongo schrieb im Beitrag #4661596:
> Im Ernst, heute sind die Spassvögl unterwegs.
> Einen Zusammenhang zwischen dem Code von S7 und FPGAs zu sehen.

Volle Zustimmung. Demnächst kommt noch einer: "Wozu Pilotenschule, wenn 
es doch den MS Flugsimulator gibt." Aber bei aller Häme, Fragen ist 
erlaubt.

von Nase (Gast)


Lesenswert?

S7 (oder ganz normkonform und allgemein AWL) ist im Prinzip nur ein 
verranzter Assembler: Sequentielle Anweisungen, Schritt für Schritt 
abgearbeitet.
Das wird auch mit FUP/KOP nicht besser, denn auch daraus wird nur eine 
Anweisungsliste, die in der SPS dann Schritt für Schritt abgehakt wird. 
Lediglich durch die Arbeitszyklen sieht es von außen dann so aus, als ob 
es sich um eine logische Schaltung handelt. Man muss halt langsam genug 
hingucken, damit man diesen Eindruck gewinnt, weil dann die Zykluszeit 
nicht mehr auffällt.


Ein FPGA ist eher mit Klapperschaltung zu vergleichen, also mit 
Schützen. Außer Signallaufzeiten und mechanischen Verzögerungen 
(Kontakte bewegen sich nunmal) gibts keine Zyklen o.ä.
Im FPGA ist das genauso, im Prinzip gibts nur Signallaufzeiten. Man kann 
(muss aber nicht) damit dann natürlich wieder Schritt-Schaltungen 
aufbauen, die ihrerseits wieder irgendwelche Zyklen abarbeiten. Zum 
Beispiel könnte man eine Schritt-Schaltung aufbauen, die eine 
Anweisungsliste Schritt für Schritt abhakt...

von Nase (Gast)


Lesenswert?

Andreas S. schrieb:
> Ein wesentlicher Punkt, der die Umstellung klassischer SPS-Programme auf
> Hardwarebeschreibungen deutlich erleichtern kann, besteht darin, dass
> "ordentliche" SPS-Programme meist sehr flache Aufrufpfade von Funktionen
> und Funktionsblöcken haben

Aus meinem Blickwinkel könnte ich auch sagen: "ordentliche" 
SPS-Programme sind oft unmodularer (und noch öfter leider unwartbarer) 
Spaghetticode, weil man mit dem festgefahrenen 60er-Jahre-Müll an OB/FB 
einfach nicht sauber und modular programmieren kann...

SCNR

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.