Wow, hier gehts ja rund. Ich sehe schon, war viel zu lange nicht mehr im Forum -> spannende Diskussion.
Vielleicht hilfts wenn ich unsere Story ein wenig erzähle...
(Achtung: heißt nicht das ist der einzig richtige oder wahre weg, es war halt ein Weg...)
Also wir kommen von der Steuerungsprogrammierung mit Linux und Echtzeitunterbau, Programmierung in C (Antriebe Sercos). Hochsprache mit allen Feinheiten und Raffinessen, extrem viel Performance aber leider auch hoher administrativer Aufwand in der Basisentwicklung (Treiber, OS-Umstieg, Entwicklungssystem, CrossCompile). Wir wollten dann auf einen Systemanbieter (2012) wechseln weil wir uns diesen "Aufwand" sparen wollten und es ist dann der große Rote geworden, der zu dieser Zeit mit Twincat 3.
0 ein extrem innovatives Produkt gebracht hat. Objektorientierung, Multitasking, 64Bit usw...
Wir haben uns dann Anfangs voll drauf gestürzt und die komplette Welt der Objektorientierung ausgenutzt. Es wurde eine Art Vorlage entwickelt wie man Maschinen programmiert damit alle gleich arbeiten, es gibt einen Satz an Basisbibliotheken, welche die wesentlichen Funktionen abdeckt (Achsen, IOs, Aktuatoren, ...) und so entstand mal eine erste Version. Die Performance war eher Mau und teils war es auch viel zu kompliziert gemacht, vor allem in Hinblick auf Wiederverwendbarkeit. Es war zwar schön durchdesignt aber mit den falschen Randbedingungen. Wir dachten einfach so eine SoftSPS ist ein wahres Rechenwunder, ab einer gewissen Zykluszeit und größe der Maschine wirds halt auch für eine SoftSPS eng.
In Version zwei sind wir einige dieser Punkte angegangen und haben das ganze nochmal gründlich überarbeitet, größtenteils wurden auch ältere Projekte noch portiert. Es wurden die Performance-Engpass-Verursacher gesucht und entfernt, der Aufbau etwas entwirrt und auch gewisse Dinge noch stärker standardisiert. Leider haben wir es dann aber auch gerade beim Thema Initialisierung und Abstraktion wieder übertrieben und kamen auch hier nach ein paar Sondermaschinen drauf: das geht noch besser.
Ein paar kleine Änderungen wurden dann noch eingearbeitet, sozusagen eine V2.1 und dies verwenden wir jetzt für alle neue Projekte innerhalb unserer Firma. Was sind nun solche Projekte: Im Wesentlichen Sondermaschinen für die interne Produktion. Dabei gehts um ganz kleine Maschinen mit 1-5 Achsen und ein paar hundert IO-Punkten bis rauf zu großen Maschinen 170 Achsen und ein paar Tausend IO-Punkten. Alles mit dem selben Framework und eben auch Aufbau.
Der Vorteil hier ist, durch den klar dokumentierten Aufbau kann man die Mitarbeiter sehr flexibel für Erweiterungen und Verbesserungen (extrem wichtig bei Sondermaschinen da dies meist Prototypen sind) einsetzen. Sie finden sich schnell zurecht und finden die jeweiligen Stellen wo programmiertechnisch angesetzt werden muss, falls es mal Probleme gibt oder man was neues braucht.
Was ich hier sagen will, die Objektorientierung ermöglicht und vereinfacht vieles (Wiederverwendung, Struktur und was nicht zu vernachlässigen ist die Akzeptanz unter den jüngeren Entwicklern/Bewerbern), aber man muss extrem aufpassen dass man sich nicht verhaspelt. Im wesentlichen arbeitet man mit einem hochverfügbaren System das Echtzeit beherrschen soll und da darf man gewisse Dinge einfach nicht tun. Das war schon unter der Linux Steuerung so und ist auch bei
Codesys V3 Systemen so. Man darf und kann PLC-Programmierung nicht mit einer "normalen" IT Applikation vergleichen. Ich muss auch sagen, das wissen aus der "C-Welt", also wie das ganze auch dann im Speicher und auf der CPU abläuft, hilft hier natürlich auch stark.
Die Version 3 dieses Frameworks wird jetzt von einer externen Firma nochmals komplett neu entwickelt und die wirds bald inkl. der Libs Online als OpenSource System geben.
Zum Thema KI hab ich lachen müssen. Viele reden von KI und haben ein paar Whitepaper von Herstellern durchgelesen. Auch wir hatten solche Firmen da und haben auch einiges umsetzen können, richtig was gebracht hats nur in wenigen Fällen. Meiner Meinung nach fängt das Problem ja schon bei der Datenaufzeichnung, Haltung und Qualität an. Wie schnell wird aufgezeichnet, wie deterministisch, wie werden die Daten abgespeichert, wo werden sie abgespeichert und wie generisch sind sie gespeichert. Im Sondermaschinenbau natürlich möglich, aber ohne starke Standardisierung nur sehr schwer!
Insgesamt muss ich sagen sind wir doch sehr froh, dass wir komplett auf die Objektorientierung gesetzt haben, da wir dadurch die benötigte Komplexität der Maschinen und auch der Prozesse übersichtlicher und einfacher abbilden konnten. Die Wiederverwendbarkeit ist hiermit auch viel einfacher und besser möglich. Weiters haben einige jüngere Mitarbeiter das Feedback gegeben, dass klassische PLC-Programmierung mit AWL, FUP und KOP oder auch ohne moderne Paradigmen der OOP sie eher zum Jobwechsel gebracht hätten als zum Job halten. Die Learnings die wir mit OOP und dem Codesys System hatten möchte ich eh nochmal niederschreiben, vll teil ich das dann mal hier mit euch...
Sg
M.