13 Stimmen

Ein besserer / effizienterer PLC-Programmierer sein

Das Unternehmen, in dem ich mein Praktikum absolviere, beschäftigt sich hauptsächlich mit SPS-Programmierung mit Siemens-Modulen. Das kommt daher, dass die meisten Mitarbeiter aus der Elektrobranche kommen und zum Maschinenbau gewechselt haben.

Mein Problem als Neuling ist, dass ich nicht wirklich effizient und schnell sein kann, wenn ich PLC-Software programmiere.

Auch wenn ich sehr effizient bin, wenn ich C# oder Java in VS/Eclipse programmiere

Es stört mich wirklich, dass ich mit PLC im Gegensatz zu den "echten" Programmiersprachen nicht wirklich produktiv sein kann.

  • Liegt es an der fehlenden Code-Vervollständigung?
  • Liegt es an der mangelnden Gesamtkenntnis im Bereich der Automatisierung?
  • Ist es der Mangel an Innovation in PLC im Gegensatz zu VS (LINQ, Dynamics, Lambda)

Habt ihr gute Erfahrungen mit PLC gemacht? Und wie habt ihr es geschafft, damit produktiv zu werden?

Hinweis: Es ist mein letztes Jahr im Unternehmen, deshalb möchte ich auch sehr produktiv sein.

Ich freue mich auf viele tolle Antworten!

27voto

Ira Baxter Punkte 91118

Die SPS-Programmierung unterscheidet sich in mehrfacher Hinsicht von der herkömmlichen prozeduralen Programmierung:

1) Die Relais-Kontaktplan-Logik ist eine recht primitive Sprache. Es ist schwer, so produktiv zu sein. Die meisten SPS-Programmierer verwenden keine Unterprogramme; es ist fast so, als ob die SPS-Welt eine, die die Zeit und die Softwaretechnik vergessen haben. Sie können gut arbeiten, wenn Sie einfachen Software-Engineering-Methoden, z. B. durch die Definition von Schnittstellen zwischen Codeblöcken, wenn auch nur abstrakt.

2) Ein Großteil der SPS-Programmierung hat mit booleschen Gleichungen zu tun. Wenn Sie gut sein wollen in der SPS-Programmierung sein willst, arbeite hart im Umgang mit boolescher Logik: Lernen Sie boolesche Algebra, insbesondere Dinge wie De Morgans Theorem zur Verteilung von NOT auf AND und OR (da PLCs typischerweise keine NOT-Operatoren anbieten, braucht man das viel öfter als man erwarten würde)

3) Verstehen Sie, dass es bei der SPS-Programmierung um Steuerung und Rückmeldung in Echtzeit geht. Die meisten Standardprogrammiersprachen (z. B. Java) berücksichtigen dies nur unzureichend oder gar nicht. Denken Sie sorgfältig darüber nach, dass der SPS-Code eine Logik ist, die Ausgänge steuert, und dass die mechanischen Systeme, die angetrieben werden, in Wirklichkeit "Logik" sind, die PLC-Eingänge steuert . Ich habe oft ein mechanisches System mit einer anderen SPS modelliert SPS, um mein SPS-Programm zu debuggen, ohne dass ich eine echte Fabrikmaschine steuern muss. steuern. Auf diese Weise lassen sich auch Fehler simulieren (siehe Punkt 6).

4) Ein Großteil der SPS-Programmierung besteht abstrakt aus dem Übergang von Zuständen zu Zuständen, wobei ein Zustand repräsentiert, was die SPS über die externe Welt weiß, und Übergänge Übergänge treten auf, wenn die SPS einen externen Eingang liest und feststellt, dass sich der Zustand der Welt etwas geändert hat. Lernen Sie so viel wie möglich über endliche Zustandsautomaten und die übergeordnete Steuerung diskreter Systeme. Es wird sich für Sie lohnen.

5) PLCs müssen sich oft an vergangene Ereignisse erinnern. Folglich ist ein Großteil der SPS-Logik mit dem Setzen/Rücksetzen/Testen von booleschen/numerischen Zustandsvariablen und/oder Zeitgebern zu tun. Während der Code eines SPS-Programms also oft wie reine Logik aussieht, hat er in Wirklichkeit viele Nebeneffekte, was das Nachdenken über das Programm ziemlich schwierig macht. Genauso schwierig wie das Schreiben in einer moderneren Sprache wie C oder Java.

6) Achten Sie auf den Umgang mit mechanischen Fehlern. Die meisten SPS-Programme gehen davon aus Die meisten SPS-Programme gehen davon aus, dass die gesteuerte Anlage so funktioniert, wie sie angekündigt wurde; das ist wirklich eine schlechte Praxis. In der realen Welt funktioniert die gesteuerte System nur so lange wie angekündigt, bis es kaputt geht, was es toujours tut es schließlich. Wenn Sie in Ihre SPS-Programme einen Diagnosecode einbauen, um festzustellen, was mechanisch defekt ist, brauchen Sie zwar länger zu schreiben, aber die Benutzer werden Sie lieben, denn es gibt nichts Schlimmeres als eine Fabrikmaschine, die kaputt ist, aber nicht sagt, wie. Eine stillstehende Fabrik ist ein stillstehender Geldautomat, und Fabrikmanager hassen das.

9voto

TMo Punkte 109

Es ärgert mich, wenn die SPS-Programmierung von so genannten "echten" Programmierern mit Verachtung betrachtet wird. In mehreren Beiträgen hier wurde auf die grundlegende Tatsache hingewiesen, dass die SPS-Programmierung eine eigene Disziplin ist.

"Verstehen Sie, dass es bei der SPS-Programmierung um Steuerung und Rückmeldung in Echtzeit geht. Die meisten Standardprogrammiersprachen (z. B. Java) können dies nur unzureichend oder gar nicht leisten."

"Die Leute fangen also an, Analysewerkzeuge für die Überprüfung von Konsequenzen und logischen Widersprüchen, für die getrennte Modellierung von Zeiten und Zuständen usw. zu entwickeln, was die Dinge nicht wirklich einfacher macht und vom technischen Prinzip der Problemraumreduzierung abweicht."

Die Unterstellung, dass die Kontaktplanlogik die "vergessene Disziplin" ist, bedeutet eine Herabsetzung des Werkzeugs, das seine Funktion erfüllt. Schließlich war Ladder die erste Sprache, die physikalische Geräte in Software darstellte - sie ist die Geburtsstätte der objektorientierten Programmierung als Paradigma.

Außerdem sollten wir nicht vergessen, dass der PC und PC-gestützte Steuerungen völlig unzuverlässig sind. Er stürzt ab; Komponenten veralten und können bestenfalls in ein paar Jahren nicht mehr gekauft werden; er stürzt ab; er wird durch Viren und Leute, die "Donkey Kong" auf ihren Arbeitsstationen spielen, beschädigt; er stürzt ab; gelangweilte Bediener deinstallieren die Software in der dritten Schicht; und habe ich schon erwähnt, dass er abstürzt?

SPS gibt es auch nach so vielen Jahren des so genannten "Fortschritts" in der PC-Welt noch, weil PCs bis heute fehlerbehaftete Wegwerfprodukte sind. Und Ihr millionenschweres Fließband ist es nicht.

Zum Schluss möchte ich noch den Humortest anführen: Ich finde es immer wieder lustig, wenn IT-Leute versuchen, SPS-Code zu schreiben. Die immer wiederkehrende Frage (im wörtlichen und im übertragenen Sinne) lautet: "Warum bekomme ich einen Watchdog-Fehler, wenn ich zum Anfang des Programms zurückspringe?" Oder ein anderer persönlicher Favorit - "Wie schreibe ich eine for-next-Schleife in Kontaktplan?"

Beides zeugt von einem grundlegenden Mangel an Wissen über die Funktionsweise von SPS und verdeutlicht, dass die Programmierung von Automatisierungssystemen eine eigene Disziplin ist, für die eigene Werkzeuge erforderlich sind.

TM

2voto

luc Punkte 39730

Ich stimme Ihnen in den 3 von Ihnen genannten Punkten zu.

Ich habe einige Erfahrung mit CoDeSys und ich denke, dass 2 dieser Probleme mit der Version 3.x verschwunden sind.

* Is it the lack of code completion?
* Is it the lack of innovation in PLC as opposed to VS (LINQ, Dynamics, Lambda)

CoDeSys 3.x verfügt über einen intelligenten und benutzerfreundlichen Editor und bringt die objektorientierte Programmierung in die SPS-Welt, was meiner Meinung nach eine sehr gute Innovation ist.

Ich denke, dass dies zur Verbesserung der Produktivität beiträgt. Ich weiß nicht, ob die Konkurrenten von CoDeSys ähnliche Dinge tun, aber ich denke, dass auf dem Markt der SPS-Programmierung interessante Dinge passieren.

Der Mangel an Wissen ist allen Technologien gemein. IEC-1131 wurde so konzipiert, dass es unabhängig vom Hintergrund des Entwicklers leicht zu verstehen ist (KOP für Elektriker, FUP für Automatisierungsingenieure, ST für C/PASCAL-Programmierer...), daher ist es meiner Meinung nach nicht komplizierter als alles andere. VS hat auch seine Komplexität: Versuchen Sie, Ihren eigenen OPC-Server mit C++ zu erstellen, und Sie werden es zu schätzen wissen, dass diese Funktion in den meisten SoftPLCs sofort einsatzbereit ist. Die Intellisense wird in diesem Fall keine große Hilfe sein.

Sicherlich ist der Markt für die SPS-Programmierung weniger dynamisch als der für herkömmliche Programmierwerkzeuge. Ich denke, das liegt an der industriellen Welt, die eher auf kugelsichere Technologie setzt als auf marketingtechnisch interessante Dinge.

Ich hoffe, es hilft

1voto

Jim C Punkte 5009

Programmiersprachen sind Werkzeuge. Wenn Sie nur eine Sprache beherrschen, haben Sie auch nur ein Werkzeug. Das Werkzeug mag für eine Aufgabe gut sein, für ein paar andere in Ordnung und für alles andere nutzlos. Wenn Sie mehr Werkzeuge kennen, können Sie mehr Aufgaben erledigen.

Was Sie hier sehen, ist nicht nur der Unterschied zwischen "echten" Sprachen wie C# und Java, sondern auch der Unterschied zwischen einer Nicht-Echtzeitanwendung auf einem PC und einer Echtzeit-Maschinensteuerung, die die Hauptanwendung für SPS ist.

Gute Programmierer kennen Sprachen, großartige Programmierer kennen Prozesse. Sie verstehen nicht nur die Sprache, in der sie programmieren, sondern auch den Prozess, den die Programmierung durchführt. Wenn Sie eine Buchhaltungssoftware schreiben wollen, müssen Sie sich mit Buchhaltung auskennen. Wenn Sie einen SPS-Code zur Steuerung einer Maschine schreiben wollen, sollten Sie wissen, was diese Maschine tut und wie sie funktioniert.

0voto

avra Punkte 3716

Werfen Sie einen Blick auf diese beiden Produkte für Siemens Simatic Step7:

  1. SCL (bereits in Step7 Professional, auch ST oder Structured Text genannt)
  2. CFC (separates Produkt)

Einfach gesagt, die erste ist eigentlich ein Pascal, und es kann sehr nützlich sein, um Ihre eigenen Blöcke zu machen. Das zweite ist eine einfach zu navigierende grafische Darstellung und Verknüpfung dieser Blöcke von links nach rechts und eine leistungsstarke Online-Überwachung.

Diese beiden geben Ihnen die gewünschte Effizienz, so dass Sie STL/LAD/FBD völlig vergessen können (außer bei der Analyse des Codes anderer Leute). Kombiniert sind sie ein sehr leistungsfähiges RAD-Tool für die SPS-Programmierung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X