Nachhilfe / Unterstützung in CODESYS (gerne gegen Bezahlung)

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, also dein Screenshot schaut danach aus als würdest du irgendwelche Schrittketten in einer AS Sprache versuchen zu erstellen. Und offensichtlich sind Variablen nicht deklariert.
Wenn du vernünftig Programmieren willst, dann vergiss das alles was du da tust.
Erstens, nimm ST. KOP ist kompletter Mist, FUP nur unwesentlich besser, aber in manchen Situationen möglicherweise geeignet. Die meisten größeren Firmen haben Vorgaben, dass KOP und FUP nicht verwendet werden darf, ausschließlich ST. Und so schreibt man auch Progamme und nicht in irgenwelchen Bildchen Sprachen. AS ist tatsächlich eine ganz gut verwendbare Sprache um Ablaufschrittketten zu basteln, geht allerdings auch mit ST und CASE Anweisungen.
Da muss ich Dir komplett widersprechen.
Zum Beispiel für logische Verschaltungen von komplexeren Bausteinen, die dann in ST erstellt wurden, kommt FUP und teilweise auch KOP sehr häufig bei meinen Kunden zum Einsatz und ist kein kompletter oder teilweiser Mist, sondern sehr gut geeignet.
 
Das machen "ältere" Programmierer (das ist keine Anfeindung, lediglich eine Feststellung aus meiner beruflichen Bubble) gerne mit dem Verweis, dass der Instanthalter oder Elektriker dann auch da mal "schnell reinschauen" könnte.
Jede gut geschriebene logische Verknüpfung ist jedoch in ST übersichtlicher als in KOP oder FUP. Der Verknüpfungen in FUP werden sehr schnell unwahrscheinlich groß und sind beonders bei hintereinander geschalteten Blöcken sehr schnell absolut unübersichtlich.
Bei 90% der Firmen für die ich tätig bin oder war, welche einen guten bis sehr guten Code-Standard pflegen, steht in der CodingConvention KEIN KOP ODER FUP!. Ausschließlich ST, AS für Automatikschritten oder dergleichen ist hin und wieder erlaubt.

Natürlich kann man mit KOP oder FUP etwas erstellen was auch funktioniert und übersichtlich und gut kommentiert ist, klar. Aber wenn man gleich von Anfang an vernünftig ST lernt, läuft man schon nicht Gefahr irgendwelche wilden Seitenlangen Block Diagramme zu erstellen, die niemand lesen geschweige denn durchscrollen will. Und KOP ist in meinen Augen tatsächlich ziemlicher Mist, war ja ursprünglich eher für die Elektrofachkraft gedacht, die dann aus ihrer Schaltplanerfahrung ins Programmieren überführt werden kann.

Und zu guter Letzt: Heute verwendet jede Firma Codeverwaltungstools wie GIT. ST ist mit den meisten Tools vergleich- und mergebar. KOP und FUP nicht oder zumindest nur auf eine sehr unschöne Art und Weise. Deswegen in allen meinen Projekten strengstens Verboten :D

Grüße,
Parallax
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das machen "ältere" Programmierer
Die "Älteren" ( die jüngeren sicherlich auch ) benutzen für jede Aufgabe das passende Werkzeug und sind nicht beschränkt auf "Meine Methode ist für jede Aufgabe die beste Methode".

Und zu guter Letzt: Heute verwendet jede Firma Codeverwaltungstools wie GIT
Ach ja, wirklich ausnahmslos jede Firma?

PS:
AWL, Kop, Fup, ST Glaubenskrieg Themen gibt es genug, bringt den Themenstarter aber auch nicht weiter.
 
Zuletzt bearbeitet:
Hier sieht man wieder herrlich: Fünf SPS-Programmierer, sechs Meinungen zum Thema Stil. ^^

Ich vermute aber, dem Themenersteller ist der Stil gerade egal – hauptsache das Uni-Beispiel läuft irgendwie. Gleich vorweg: Lehrbeispiele sind selten guter Code. Die Ersteller sind oft tief in der Theorie, haben aber wenig Praxisbezug. Da geht es um Grundlagen, nicht um 'Clean Code'. Bei mir wurde früher z.B. viel Wert auf riesige Kommentarblöcke gelegt – heute würde ich das eher kritisch sehen (Code Smell). Also: Nicht wundern, wenn der Code der Lehrverantwortlichen seltsam aussieht.

Zu den Fehlermeldung:
Dass BAUTEIL und Co. unbekannt sind, deutet darauf hin, dass hier globale Variablen fehlen oder ein Namespace beim Aufruf erwartet wird. Hast du mal global nach BAUTEIL gesucht? Denkbar wäre auch, dass die Deklaration im FB gelöscht wurde. Letzteres liegt definitiv nicht an deiner Codesys-Version, da fehlt einfach die Deklaration im Projekt.

Auch die doppelten Schrittnamen und Syntaxfehler sind einfach Fehler in der Vorlage. Wenn du die nicht korrigieren sollst, ist das Beispielprogramm scheinbar ziemlicher Murks.

Für Grundlagen kann ich das Buch von @oliver.tonn empfehlen. Ansonsten gibt es Tutorials auf YouTube oder Kurse wie spsonlinekurs.de (habe ich aber selbst nicht getestet).
 
Ach ja, wirklich ausnahmslos jede Firma?
Ich korrigiere mich, jede Firma, die komplexeren und qualitativ hochwertigen Code herstellt.
Tatsächlich ist das auch kein Gaubenskrieg, sondern einfach eine Frage von guter Arbeitsweise.
Wer im Jahr 2026 Code schreiben möchte, welcher zukünftig am Markt bestehen soll und dies für große Anlagen tut, und nicht für ne Gartenbewässerung oder eine Kantbank, der muss qualitativ gut arbeiten. Und dazu gehört definitiv eine Versionskontrolle. Wer seinen Code noch auf "Tauschlaufwerken" oder USB Sticks vergräbt, hat eigentlich schon verloren, weiß es nur noch nicht.

Meine Antwort bezieht sich auch hauptsächlich auf die Aussage "Mir ist wichtig, die Dinge wirklich zu verstehen und nicht nur „irgendwie lauffähig“ zu bekommen." vom Thread Ersteller. Für sein Projekt ist das evtl. weniger hilfreich, aber wenn er Dinge verstehen will, sollte er sich zuerst damit beschäftigen wie man sauber und gut entwickelt und nicht irgendwelche "Quick&Dirty" Sachen wurstelt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jede gut geschriebene logische Verknüpfung ist jedoch in ST übersichtlicher als in KOP oder FUP. Der Verknüpfungen in FUP werden sehr schnell unwahrscheinlich groß und sind beonders bei hintereinander geschalteten Blöcken sehr schnell absolut unübersichtlich.
Bei 90% der Firmen für die ich tätig bin oder war, welche einen guten bis sehr guten Code-Standard pflegen, steht in der CodingConvention KEIN KOP ODER FUP!. Ausschließlich ST, AS für Automatikschritten oder dergleichen ist hin und wieder erlaubt.
Hier würde ich auch widersprechen. Komplexe (!) logische Verknüpfungen sind in FUP/KOP immer übersichtlicher als in ST.

Nichtsdestotrotz programmieren wir in TwinCAT auch nur in ST, weil der FUP/KOP Editor in TwinCAT einfach murks ist. Im TIA Portal ist das komplett anders. Der SCL-Editor ist nur "geht so" gut. Aber die FUP/KOP Editoren sind im TIA wirklich gut. Auch die Funktion einzelner SCL-Netzwerken ist ein echter Gamechanger in TIA. Die ST-Codeblöcke in FUP/KOP in Codesys/TwinCAT sind im Vergleich deutlich schlechter.

Auch bei der Variablenbenennung nutzen wir keinen Datentyp-Präfix, außer für Pointer, Referenzen und Schnittstellen.
 
Wer im Jahr 2026 Code schreiben möchte, welcher zukünftig am Markt bestehen soll und dies für große Anlagen tut... der muss qualitativ gut arbeiten.
Und 1970, 1980, 1990, in den 2000'ern usw musste man das nicht 🤔

Ich korrigiere mich, jede Firma, die komplexeren und qualitativ hochwertigen Code herstellt.
Das ist aber schon ein sehr eingeschränktes Blickfeld.
 
Zuletzt bearbeitet:
Ich korrigiere mich, jede Firma, die komplexeren und qualitativ hochwertigen Code herstellt.
Tatsächlich ist das auch kein Gaubenskrieg, sondern einfach eine Frage von guter Arbeitsweise.
jop in TwinCAT haben wir auch alles in GitLab und wir lieben es. Die Git-Implementierung im TIA Portal ist aber einfach Mist. Entweder nutzt man dann Versiondog oder bleibt bei der klassischen "Versionierung" mit zip-Dateien. Wir beißen bei TIA Projekten auch in den sauren, aber kostenlosen, Apfel. Es geht halt noch nicht anders. Als ich das letzte mal hingeschaut habe, haben aber auch sehr namhafte Maschinen- und Anlagenbauer sehr komplexe Maschinen mit dem TIA Portal erstellt. Funktioniert also auch irgendwie....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das machen "ältere" Programmierer (das ist keine Anfeindung, lediglich eine Feststellung aus meiner beruflichen Bubble) gerne mit dem Verweis, dass der Instanthalter oder Elektriker dann auch da mal "schnell reinschauen" könnte.
Jede gut geschriebene logische Verknüpfung ist jedoch in ST übersichtlicher als in KOP oder FUP. Der Verknüpfungen in FUP werden sehr schnell unwahrscheinlich groß und sind beonders bei hintereinander geschalteten Blöcken sehr schnell absolut unübersichtlich.
Bei 90% der Firmen für die ich tätig bin oder war, welche einen guten bis sehr guten Code-Standard pflegen, steht in der CodingConvention KEIN KOP ODER FUP!. Ausschließlich ST, AS für Automatikschritten oder dergleichen ist hin und wieder erlaubt.
Da habe ich in den letzten 17 Jahren andere Erfahrungen gemacht.
Bei einem Kunden zum Beispiel wurde ein Framework erstellt und in dem Zusammenhang auch Vorschriften verfasst, die festlegen, wie programmiert werden soll, die Verantwortlichen waren fast alle jünger (<30). Komplexere Funktionen wurden in ST erstellt und logisch dann in FUP verschaltet.
Bei Anderen war es ähnlich, was die Aufteilung bei der Nutzung von ST und FUP geht.
Es gab aber auch Kunden wo praktisch nur ST genutzt wurde.
Und zu guter Letzt: Heute verwendet jede Firma Codeverwaltungstools wie GIT. ST ist mit den meisten Tools vergleich- und mergebar. KOP und FUP nicht oder zumindest nur auf eine sehr unschöne Art und Weise. Deswegen in allen meinen Projekten strengstens Verboten :D
Viele vielleicht, aber bei weitem nicht alle, wie ich es bei diversen Projekten erlebt habe.
Das das Mergen bei ST einfacher als bei FUP oder KOP ist stimmt allerdings.
 
Wenn du vernünftig Programmieren willst, dann vergiss das alles was du da tust.
Erstens, nimm ST. KOP ist kompletter Mist, FUP nur unwesentlich besser, aber in manchen Situationen möglicherweise geeignet. Die meisten größeren Firmen haben Vorgaben, dass KOP und FUP nicht verwendet werden darf, ausschließlich ST. Und so schreibt man auch Progamme und nicht in irgenwelchen Bildchen Sprachen. AS ist tatsächlich eine ganz gut verwendbare Sprache um Ablaufschrittketten zu basteln, geht allerdings auch mit ST und CASE Anweisungen.

Irgendwie bist du der alte Programmierer mit einem deinem steinzeitlichen Weltbild, dass nur ST Sinn macht. 🤪 :ROFLMAO:

Warum werden SPS-Steuerungen nicht schon eh und je in einer Hochsprache programmiert?
Alle textbasierten Sprachen sind älter als KOP / FUP-Programmierung.
Stattdessen haben die Hersteller Unsummen von Kapital in die Entwicklung von grafischen Sprachen wie KOP, FUP, AS, CFC, ST, CEM, ... gesteckt.
Was ist mit der ganzen aktuellen Entwicklung rund um LowCode / NoCode?
Warum erfolgt das Datenbank-Design mit grafischen Tools?
Warum gibt es grafische Tools für Klassen?

Unterhalte dich mal mit Fachleuten zum Thema Ergonomie und UI-Design.
Die werden dir erzählen, dass der Mensch aus seiner Entwicklung heraus grafisch orientiert ist. Er kann grafische Inhalte schneller und besser verarbeiten als reine Textinformationen.
Aus diesem Grund nutzt man übrigens auch Blöcke / Einrückungen bei textbasierten Programmiersprachen.
Ohne diese Mittel zur Strukturierung ist Text-Code für Menschen schwer verständlich.
KOP und FUP gehen da einfach nur einen Schritt weiter und bieten dir mehr Möglichkeiten Code übersichtlich zu gestalten.

Ansonsten gilt einfach der uralte Spruch: Für jede Aufgabe das richtige Werkzeuge nehmen.
 
Hier würde ich auch widersprechen. Komplexe (!) logische Verknüpfungen sind in FUP/KOP immer übersichtlicher als in ST.
Da würde ich wiederum widersprechen :D Allein schon der kompaktere Aufbau macht das ganze in ST wesentlich übersichtlicher. Und riesige FUP Netzwerke mit duzendem AND und OR und sonst was Blöcken sind eh schon schlechter Stil, das sollte man vorher ein vernünftige Einzelflags umpacken, am Ende weiß sonst außer Gott und dem Ersteller selbst niemand mehr für was welches OR oder AND gedacht war, zumal der Wald- und Wiesenentwickler Kommentare ja meidet wie der Teufel das Weihwasser.

Und 1970, 1980, 1990, in den 2000'ern usw musste man das nicht
Offensichtlich nicht so stark. Früher ging es oftmals rein um Automatisierung und Steuerung. Ich werde sehr häufig geholt um bei der Entwicklung von Standards und Bilbiotheken, StateMachines und dergleichen zu Unterstützen. Früher war das Programm eher kleiner, man hat lediglich die Maschine gesteuert. Heute führt eine SPS viel mehr Prüfungen durch, holt sich Daten aus Leitrechnern, Datenbanken, Files und anderen Schnittstellen. Die Programme werden größer, müssen dabei schneller arbeiten und mehr Aufgaben übernehmen. Die Struktur des Programms muss wesentlich durchdachter sein. Ich war erst neulich wieder an einer Maschine, da gab es keinen einzigen Standardbaustein, jeder einzelne Sensor und Aktor wurde ausprogrammiert, und das auch noch von unterschiedlichen Entwicklern in verschiedenen Arten und Weisen. Das wäre als würde mir der Handwerker 30 verschiedene Fenster ins Haus bauen und diese auch noch unterscheidlich streichen, teilweise auch mal gar nicht. Furchtbar!

Da habe ich in den letzten 17 Jahren andere Erfahrungen gemacht.
Bei einem Kunden zum Beispiel wurde ein Framework erstellt und in dem Zusammenhang auch Vorschriften verfasst, die festlegen, wie programmiert werden soll, die Verantwortlichen waren fast alle jünger (<30). Komplexere Funktionen wurden in ST erstellt und logisch dann in FUP verschaltet.
Bei Anderen war es ähnlich, was die Aufteilung bei der Nutzung von ST und FUP geht.
Es gab aber auch Kunden wo praktisch nur ST genutzt wurde.

Wie gesagt, es geht, ist bestimmt hier und da ganz sinnvoll und übersichtlich. Leider wird das Konstrukt schnell zum Horror wenn man nicht ordentlich arbeitet. Viele der jungen Kollegen bekommen das so beigebracht und es wird erst mal ganz laut gejammert wenn man Regeln, ST und Objektorientierung einführt. Das Jammern legt sich aber ganz schnell, wenn man es einmal gerafft und hat man erstaut feststellt, das man mit einer guten Convention und einem guten Standard eine Maschine in 2 Wochen erfolgreich in Betrieb nehmen kann, und keine 6 Wochen sich irgendwelches Zeug aus 5 Projekten zusammen kopieren muss.
Ich persönlich habe nicht dagegen wenn man ein paar sinnvolle Dinge in KOP oder FUP macht, das ist okay. Ich rate nur jedem Azubi oder Juniorentwickler, das nicht zu tun. Lerne sauberen Code zu schreiben, dann bist du in ST kurz, bündig, effizient und lesbar. Bei den grafischen Dingen artet das leider äußerst schnell aus. Andere Dinge wie Mergebarkeit haben wir ja da schon angesprochen.

Warum werden SPS-Steuerungen nicht schon eh und je in einer Hochsprache programmiert?
Ich habe mich tatsächlich mit Fachleuten vor Kurzem unterhalten :) Tastächlich gibt es auf einer Universität ein Projekt um C als SPS Sprache zu verwenden. Dafür wurde eine echtzeitfähige Umgebung geschaffen, welche das mit C leisten kann, was eine SPS halt so tut. Ob das nun wirklich so gut ist, weiß ich nicht.
Und ganz so alt bin ich noch nicht, aber nicht mehr der jüngste, das stimmt :)
Ja, der Mensch kann grafische Dinge sehr gut erfassen, allerdings nicht sehr viele Dinge gleichzeitig. Was der Mesch jedoch sehr gut kann, ist lesen, insbesondere dann, wenn der Text ordentlich formatiert ist.
Und das Verständnis eines Codes aus 50 Logikblöcken mit drölftausend NOT und LE und was weiß ich ist mit Sicherheit und nachweislich schlechter lesbar, als eine Seite Text die sauber nacheinander aufgebaut ist, ordentliche Variablennamen und Kommentare enthält.

Wie oben schon erwähnt, ich habe nichts gegen die Nutzung von FUP und KOP wenn es gut gemacht ist. Allerdings empfehle ich jedem der sich neu mit Programmierung beschäftigt seine Programme in ST zu schreiben und ordentlich zu arbeiten. 95% der Hochsprachen nutzen ja auch textuelle Syntax und keine lustigen Bilder....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Noch eine Anmerkung zum Thema Versionskontrolle:
Die meisten Ansätze aus dem reine PLC-Umfeld sind viel zu kurz gedacht und bringen auch nicht mehr als die 5 USB-Sticks aus der Schublade.

Jede Änderung am PLC-Code hat einen Grund. Wenn es reine Änderungen aufgrund von Programmierfehlern sind ok, das kann ich anhand von GIT gut nachvollziehen.
Aber was ist mit den Anlagen-Umbauten? Da ändert sich Mechanik, Hardware, Pneumatik, Hydraulik, Safety, ...
Da hilft mir ein Git-Repository meines PLC-Codes wenig. Da ist eine gut strukturierte Fileablage, in der alle wichtigen Daten zu finden sind, oft der bessere Weg.
Versiondog geht da wenigstens schon einen Schritt weiter und bietet hier auch Möglichkeiten andere Daten zu integrieren.
 
Vielleicht lagert ihr das in einen anderen Thread aus! Ihr verschreckt den TE ja schon, bevor er sich überhaupt richtig mit der Materie auseinandersetzen könnte...

@Parallax Die Ursache von schlechtem Code liegt in den seltensten Fällen an der Wahl der Programmiersprache.
 
Zuletzt bearbeitet:
Das geht auch mit Git. Im Repo befindet sich der PLC Code, der HMI Code, Datenblätter, EPlan, ReadmeFiles, alles was man halt so braucht, am besten in einer Ordnerstruktur welche bei jedem Projekt gleich ist. Hat man einen Umbau, wird in einen extra Branch gewechselt, jeder Entwickler erzeugt sich seinen eigenen Arbeitsbranch und macht dort seine Änderungen zu seinem Aufgabenbereich. Ist etwas fertig, mergt man es zurück in den Entwicklungszweig. Wenn ich mit 5 Leuten an der Analge arbeite, kann ich sehr gut nachvollziehen wer wann was gemacht hat, wer welche Datei hinzugefügt hat, welche Codezeilen er gelöscht, verändert, hinzugefügt hat. Ist der Umbau abgeschlossen & abgenommen, bekommt das Ding eine Version und wird in den Master Branch verfrachtet.

Vielleicht lagert ihr das in einen anderen Thread aus. Dem TE wird damit zumindest nicht geholfen!
Ich muss jetzt dann eh ins Bett und ich glaube es wurden auch alle Meinungen und Darstellungen kund getan.... :)
Wünsche daher schon mal eine gute Nacht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Tastächlich gibt es auf einer Universität ein Projekt um C als SPS Sprache zu verwenden...Dafür wurde eine echtzeitfähige Umgebung geschaffen, welche das mit C leisten kann
Gab es doch bei Siemens alles schon ( vor > 25 Jahren, M7-300 mit Borland C ). Aber die Welt war noch nicht soweit 😅
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das geht auch mit Git. Im Repo befindet sich der PLC Code, der HMI Code, Datenblätter, EPlan, ReadmeFiles, alles was man halt so braucht, am besten in einer Ordnerstruktur welche bei jedem Projekt gleich ist.
Also nutzt du GIT als Fileablage. Die "richtigten" Git-Möglichkeiten kannst du nur beim PLC-Code, beim Readme und evtl. noch beim Roboter-Code nutzen.
EPlan, mechanisches CAD und viele Visualisierungssysteme sind da aussen vor. Nix mit "mehrere Leute arbeiten zusammen". Da kannst du dann wieder mit den herstellereigenen Lösungen arbeiten und ein Verantwortlicher pflegt es dann ins Repository ein.
 
Jede gut geschriebene logische Verknüpfung ist jedoch in ST übersichtlicher als in KOP oder FUP. Der Verknüpfungen in FUP werden sehr schnell unwahrscheinlich groß und sind beonders bei hintereinander geschalteten Blöcken sehr schnell absolut unübersichtlich.
Auch hier bin ich anderer Meinung. Was heißt übrigens "gut geschrieben"?
Wenn man eine etwas komplexere Logik in ST hat, zum Beispiel mit Klammern, muss man die einzelnen Elemente erstmal auseianderklamüsern. Bei FUP fängt man hinten an und hangelt sich dann nach vorne, aber wo ist bei ST hinten? Hat man zum Beispiel am Ende eine Bedingung bei der am ersten Eingang eine einzelne Variable ist und an den anderen mehrere logische Funktionen ist hinten in ST auf einmal ganz vorne. Außerdem sieht man bei FUP durch die farbliche Kennzeichnung sofort welche Bedingung erfüllt ist und welche nicht, in ST nicht.
 
Die Diskussion pro/kontra KOP/FUP ist müßig für eingefleischte Text-Programmierer und passt nicht hier in diesen Thread.
Vielleicht musste Parallax noch nie unter Zeitdruck suchen, warum eine Produktionsanlage stillsteht oder welcher Variablenname-Tippfehler die ganze schöne Verknüpfung totlegt?
Man könnte auch noch feststellen, dass der Ruf nach unbedingter Verwendung von Versionsverwaltungsprogrammen besonders von den Programmierern ausgeht, deren Software sehr oft Updates braucht ...
 
Zurück
Oben