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

Zuviel Werbung?
-> Hier kostenlos registrieren
Schönen guten Morgen.
Na dann geh ich halt auch noch letzmalig meinen Senf dazu.

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.
Nicht ganz. Also im Repo liegen alle Dateien, die fürs Projekt notwendig sind. SourceCode von Roboter, HMI, PLC und evtl anderen Programmen, natürlich Readmes und auch der EPlan, den braucht man ja quasi immer. Konstruktuionsdateien und sowas liegt da nicht. Evtl noch PDFs oder sowas, in welchen Kommunikation mit anderen Systemen oder ähnliches beschrieben steht.
Das geht auch mit mehreren Nutzern, denn der EPlan wird beispielsweise nur bei der Änderung, zB Umbau, hinzugefügt. Die einzelnen Leute arbeiten dann in ihren Branches und dort ändert sich ja an der Datei nichts mehr, nur noch im PLC Projekt. Ja, bei Datenbanken oder HMI Projekten können Binärdateien auftreten, die würden merge Konflikte erzeugen, die man lösen muss. Ist nicht alles Gold, aber immer noch besser als sich irgendwelche Datein per USB Stick hin und her zu schieben.

Auch hier bin ich anderer Meinung. Was heißt übrigens "gut geschrieben"?
Also ich hab mal kurz ein ganz einfaches Beispiel in ST und FUP erstellt.
FUPvsST.png
Beides ist gleichermaßen übersichtlich und einfach zu verstehen. Hier wäre der FUP durchaus okay, es gibt jedoch keinen Grund, warum man es nicht gleich in ST schreiben sollte.

Und dann habe ich noch das hier in einem Projekt gefunden (was nich nicht mal 15 Jahre alt ist).
Eww.png
Die Variablen habe ich entfernt. Ich musste den Zoom auf 50% stellen, sonst hätte ichs gar nicht auf einen Bildschirm gebracht. Wer sowas fabriziert und behauptet es wäre einfacher zu warten oder eingängiger, der belügt sich einfach selbst.

Und die Aussage FUP wäre einfacher zu warten oder gar schneller zu warten, ist schlichtweg falsch.
Tatsächlich habe ich bei ST mehr Informationen auf einer Seite und muss nicht ständig hoch und runter scrollen.
Versionskontrollsysteme haben auch nichts mit oftmaligen Updates zu tun, sondern einfach nur mit moderner und sauberer Arbeitsweise.

Viele Grüße,
Parallax
 
@Parallax : Glücklicherweise kann das ja jeder für sich selbst entscheiden. Ich tendiere auch eher dazu, reine Binär-Verknüpfungen nicht in ST/SCL zu erstellen. Du mußt bei Allem auch immer an die Leute denken, die ggf. später mit dem Code zu tun haben.
Wenn ich jetzt mal bei deinem ersten Beispiel in dem Beitrag #41 bleibe dann ist es aus meiner Sicht trotzdem in KOP oder FUP leichter zu sehen, ob die Bedingungen der Gesamt-Verknüpfung erfüllt sind.
Dein 2. Beispiel sieht zwar auf dem ersten Blick komplex aus, ist aber in der Praxis gerade für Ausgangs-Zuweisungen recht häfig zu finden. Ob das in der Form schön ist ist vielleicht Ansichtssache - aber auch hier kann man in FUP oder KOP auf dem ersten Blick sehen ob ein Zweig erfüllt oder was meißt mehr interessiert : welche Bedingung gerade fehlt ...

my 2 Cents ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Parallax
Ich kann das riesen FUP-Netzwerk leicht in mehrere Netzwerke aufteilen.
Genauso wie du die gleiche Funktionalität in ein riesiges SCL-Konstrukt packen kannst.
Das ist eine Frage des guten Stils und hat nichts mit KOP / FUP vs. SCL zu tun.

Wenn du nun in den Online-Status gehst, dann hast du in FUP sehr viel schneller den Zustand erfasst als in ST.
Ganz besonders bei Siemens mit der miserablen Statusdarstellung in SCL.
 
Nicht ganz. Also im Repo liegen alle Dateien, die fürs Projekt notwendig sind. SourceCode von Roboter, HMI, PLC und evtl anderen Programmen, natürlich Readmes und auch der EPlan, den braucht man ja quasi immer. Konstruktuionsdateien und sowas liegt da nicht. Evtl noch PDFs oder sowas, in welchen Kommunikation mit anderen Systemen oder ähnliches beschrieben steht.
Wo ist da jetzt der Unterschied zu einem Ablageserver?
Das geht auch mit mehreren Nutzern
Bei einem Ablageserver genauso.
 
Schönen guten Morgen.
Na dann geh ich halt auch noch letzmalig meinen Senf dazu.


Nicht ganz. Also im Repo liegen alle Dateien, die fürs Projekt notwendig sind. SourceCode von Roboter, HMI, PLC und evtl anderen Programmen, natürlich Readmes und auch der EPlan, den braucht man ja quasi immer. Konstruktuionsdateien und sowas liegt da nicht. Evtl noch PDFs oder sowas, in welchen Kommunikation mit anderen Systemen oder ähnliches beschrieben steht.
Das geht auch mit mehreren Nutzern, denn der EPlan wird beispielsweise nur bei der Änderung, zB Umbau, hinzugefügt. Die einzelnen Leute arbeiten dann in ihren Branches und dort ändert sich ja an der Datei nichts mehr, nur noch im PLC Projekt. Ja, bei Datenbanken oder HMI Projekten können Binärdateien auftreten, die würden merge Konflikte erzeugen, die man lösen muss. Ist nicht alles Gold, aber immer noch besser als sich irgendwelche Datein per USB Stick hin und her zu schieben.


Also ich hab mal kurz ein ganz einfaches Beispiel in ST und FUP erstellt.
Anhang anzeigen 93472
Beides ist gleichermaßen übersichtlich und einfach zu verstehen. Hier wäre der FUP durchaus okay, es gibt jedoch keinen Grund, warum man es nicht gleich in ST schreiben sollte.

Und dann habe ich noch das hier in einem Projekt gefunden (was nich nicht mal 15 Jahre alt ist).
Anhang anzeigen 93473
Die Variablen habe ich entfernt. Ich musste den Zoom auf 50% stellen, sonst hätte ichs gar nicht auf einen Bildschirm gebracht. Wer sowas fabriziert und behauptet es wäre einfacher zu warten oder eingängiger, der belügt sich einfach selbst.

Und die Aussage FUP wäre einfacher zu warten oder gar schneller zu warten, ist schlichtweg falsch.
Tatsächlich habe ich bei ST mehr Informationen auf einer Seite und muss nicht ständig hoch und runter scrollen.
Versionskontrollsysteme haben auch nichts mit oftmaligen Updates zu tun, sondern einfach nur mit moderner und sauberer Arbeitsweise.

Viele Grüße,
Parallax
Nur ganz kurz, um die Diskussion nicht weiter ausarten zu lassen: Aber es kommt dabei auch immer stark auf die Entwicklungsumgebung an und ob man das auch mal online beobachten möchte. Ein grafisch illuminierter Pfad durch die FUP-Verknüpfung läßt einen deutlich schneller den aktiven Pfad erfassen, weil in ST wird zwar in den guten Entwicklungsumgebungen die Variable selbst illuminiert, aber nicht hingegen der sich ergebende Klammerausdruck. Somit muß die geneigte Betrachter hier immer mehr mitdenken.
Am Ende, wie es schon mehrfach betont wurde: Jedem Zweck sein Werkzeug - und jedem Tierchen sein Plesierchen. Man findet an allem immer Vor- und Nachteile. Das EINE Totschlagargument für oder gegen eine Art des Programmierens gibt es nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schönen guten Morgen.
Na dann geh ich halt auch noch letzmalig meinen Senf dazu.


Nicht ganz. Also im Repo liegen alle Dateien, die fürs Projekt notwendig sind. SourceCode von Roboter, HMI, PLC und evtl anderen Programmen, natürlich Readmes und auch der EPlan, den braucht man ja quasi immer. Konstruktuionsdateien und sowas liegt da nicht. Evtl noch PDFs oder sowas, in welchen Kommunikation mit anderen Systemen oder ähnliches beschrieben steht.
Das geht auch mit mehreren Nutzern, denn der EPlan wird beispielsweise nur bei der Änderung, zB Umbau, hinzugefügt. Die einzelnen Leute arbeiten dann in ihren Branches und dort ändert sich ja an der Datei nichts mehr, nur noch im PLC Projekt. Ja, bei Datenbanken oder HMI Projekten können Binärdateien auftreten, die würden merge Konflikte erzeugen, die man lösen muss. Ist nicht alles Gold, aber immer noch besser als sich irgendwelche Datein per USB Stick hin und her zu schieben.
Hier bin ich tatsächlich zu 100% bei @Parallax GIT und Co sollen zwar eigentlich zur Verwaltung von Quellcode sein, aber es gibt noch weitere Dinge die dort abgelegt werden könnten.
Ein Beispiel sind Gerätebeschreibungsdateien.
Wie oft habe ich bei Kunden gesessen und geflucht, weil keiner wusste wo diese abgelegt sind. Eine Ablage in GIT hätte mir so manche sinnlos verschwendete Stunde erspart.
 
Guten Morgen,

Wo ist da jetzt der Unterschied zu einem Ablageserver?
Die Frage ist ungefähr die gleiche wie der Unterschied zwischen Excel und einem karierten Schmierblatt. Um nur mal ein paar Schlagwörter zu werfen: Issues, Releases, Branches, Merges, KI-Commit-Auswertung, Nachverfolgbarkeit, und und und

Bei einem Ablageserver genauso.
Kurz: Nein.

Ein Beispiel sind Gerätebeschreibungsdateien.
Jep, es kostet unfassbar Zeit und Nerven, wenn der Entwickler bei der Ankunft beim Kunden sich erstmal irgendwo alle erdenklichen Beschreibungsdateien, Unterlagen, Bilbiotheken, ect. zusammensuchen muss. Alles was für den Entwicker relevant ist und nicht auf offensichtlichenen Wegen im Netz zu bekommen ist, gehört sich da rein. (Insallationspakete von TwinCat oder so Zeug jetzt natürlich aus offensichtlichen Gründen ausgeschlossen.

Aber die eigentliche Frage: Hat @tim_bosch nun schon professionell Programmieren gelernt, oder sitzt er noch an seinem Problem fest oder hat es gar gleich komplett aufgegeben? :D
 
Fehler4001:Aktion Step11-Entry (1):Variable 'Bauteil2'nicht deklariert:
Fehler4001:Aktion Step19-Entry (1):Variable 'Greifer1'nicht deklariert
....
Von diesen Fehlermeldungen gibt es leider sehr viele, und ich verstehe nicht, warum sie auftreten. Der Begriff „Bauteil“kommt in keiner der Projektaufgaben oder Beschreibungen vor, daher weiß ich nicht, wo oder warum ich ihn hinzufügen sollte.

Wenn ich auf die Meldung klicke, erscheint z. B.
bauteil2.nXOffset = -84.

In den Aufgabenbeschreibungen finde ich dazu keinerlei Bezug, daher ist mir unklar, woher dieser Fehler stammt.

Danke im Voraus!
@tim_bosch: Bist Du schon irgendwie weitergekommen?
Zunächst möchte ich nochmals meine Empfehlung wiederholen. Du scheinst vom Programmieren im allgemeinen und von der SPS-Programmierung im Speziellen keine Ahnung zu haben. Aus diesem Grunde solltest Du Dir mal Fachliteratur zum Thema SPS-Programmierung besorgen und diese durcharbeiten. Wichtig ist, dass es Literatur zum Thema SPS-Programmierung ist und nicht zur "normalen" Programmierung. Vieles ist da zwar ähnlich/gleich, aber es gibt Punkte da unterscheidet sich die Vorgehensweise bei der Programmierung deutlich.
Ein Beispiel wo es einen deutlichen Unterschied gibt ist die zyklische Abarbeitung. Ein "normales" Programm wird einmal gestartet und dann abgearbeitet, eventuell werden von dem Programm mehrere Instanzen gestartet. Ein SPS-Programm wird auch gestartet und abgearbeitet, dies erfolgt aber zyklisch, das heißt, wenn es komplett abgearbeitet und beendet wurde wird es automatisch neu gestartet. Bei einer SPS werden zunächst die Eingänge eingelesen, dann das Programm komplett abgearbeitet und in diesem die Eingänge verarbeitet und Variablen gesetzt, die Ausgänge steuern und anschließend die Ausgänge gesetzt. Danach erfolgt die Abarbeitung weiterer Aufgaben, wie allgemeine Netzwerkkommunikation, Daten auf den Datenträger schreiben oder von diesem lesen und weiteres. Danach geht das Ganze wieder von vorne los. Diese Reihenfolge kann von Hersteller zu Hersteller aber variieren.
Im Zusammenhang mit der zyklischen Abarbeitung steht ein weiterer (großer) Unterschied zur "normalen" Programmierung. Dieser Unterschied ist die Art, wie Schleifen eingesetzt werden. In einem "normalen" Programm kann zum Beispiel eine (Endlos) WHILE-Schleife genutzt werden, um auf ein Ereignis, zum Beispiel einen Tastendruck zu warten. Bei einer SPS wäre dies tödlich und würde zu einer Fehlermeldung (Zykluszeitüberschreitung) führen. Bei einem SPS-Programm darf nicht an einer Stelle verharrt werden, um auf etwas zu warten, sondern das Programm muss kontinuierlich abgearbeitet werden. Soll in einem SPS-Programm auf etwas gewartet werden muss dies anders erfolgen. Zum Beispiel über eine Schrittkette. In einem Schritt oder genauer einer Transition wird bei jedem Durchlauf geprüft, ob die Weiterschaltbedingung erfüllt ist. Ist dies der Fall wird der nächste Schritt aktiviert, ist dies nicht der Fall, bleibt der aktuelle Schritt aktiv, das Programm wird aber in beiden Fällen sofort weiter durchlaufen.
Neben Fachliteratur kann Dir aber auch das Codesys Hilfesystem weiterhelfen.
Irgendwie sind Deine Screenshots verschwunden, daher muss ich jetzt aus dem (löchrigen) Gedächtnis antworten.
Ich habe mir gerade mal die Beiträge durchgelesen, dabei ist mir Dein Beitrag #10 aufgefallen. Du schreibst Da von einer PRO-Datei, was auf Codesys 2.3 Projekte schließen lässt. Sollte dies der Fall sein, solltest Du an dieser Stelle erstmal abbrechen und Dir Projekte für Codesys 3.5 besorgen. Codesys 2.3 wird schon länger nicht mehr weiterentwickelt und eignet sich somit nicht als Einstieg. Sobald Du einiges an Wissen aufgebaut hast, kannst Du Dich auch mit der Version 2.3 beschäftigen, damit Du auch ältere Anlagen betreuen kannst.
Jetzt noch zu Deinen Fehlermeldungen. Viele Fehlermeldungen besagten, dass Bauteil2 und Greifer1 nicht deklariert sind, weswegen die Anweisung "bauteil2.nXOffset = -84" scheitert, da die Entwicklungsumgebung nicht weiß, was "Bauteil2" ist. Das Problem ist, ich weiß es auch nicht. Bei dieser Konstellation könnte "Bauteil2" eine Variable vom Typ einer Struktur sein in der ein Element mit dem Namen "nXOffset" existiert, der versucht wird den Wert -84 zu zuweisen. "Bauteil2" könnte aber auch eine Instanz eines Funktionsbausteins sein, von der ein Eingang mit dem Namen "nXOffset" auf den Wert -84 gesetzt werden soll. Des Weiteren könnte es ein Programm sein, bei dem ebenfalls der Eingang mit dem Namen "nXOffset" auf den Wert -84 gesetzt werden soll.
In beiden Fällen muss im Deklarationsteil ein entsprechender Eintrag existieren. Ehe eine Variable genutzt werden kann muss diese deklariert werden.
Damit die Anweisung Bauteil2.nXOffset = -84; nicht mehr zu einer Fehlermeldung führt muss im Baustein, wo die Anweisung steht die Variable deklariert sein oder in einer globalen Variablenliste.
Hier mal ein Beispiel für eine solche Deklaration:
Code:
VAR
    Bauteil2    : ST_Bauteil;
END_VAR
In Deinem Fall erfolgt die Zuweisung in einem Schritt eines Programms/Funktionsbauteins das/der in der Ablaufsprache (AS) erstellt wurde. Hier erfolgt die Deklaration der Variablen dann nicht im Schritt, sondern direkt im Programm/Funktionsbaustein.
Soweit "Baustein2" eine Instanz eines Funktionsbausteins ist, sieht die Anlage der Instanz ähnlich aus. Hier mal ein Beispiel für die Anlage einer Instanz des Funktionsbausteins einer Einschaltverzögerung.
Code:
VAR
    fbTON_Delay    : TON;
END_VAR
Ein weiterer häufig auftretender Fehler ist bei Dir, dass Schritte in dem Programm den gleichen Namen haben. Jeder Schritt in einem AS Programm muss einen eindeutigen Namen haben.
Ist das Projekt vollständig, oder lautet die Aufgabe, dieses zu erweitern/vervollständigen? Vielleicht diente es auch zur Demonstration von Fehlern.
 
Zuletzt bearbeitet:
Zurück
Oben