gibts bei dem Beckhoff auch eine "Steuerungskonfiguration" wie bei all den anderen Codesys 2 Steuerungen?
Hallo zusammen,
in meiner Haussteuerung habe ich jetzt eine neue DALI-Klemme eingebaut und im System Manager konfiguriert (Beckhoff TC2.11.2303).
In den globalen Variablen des SPS-Programms sind auch diese Strukturen entsprechend aufgenommen. Jedoch scheinen die Werte nicht wirklich zu korrespondieren. Aufgefallen ist mir das beim markierten "Status" Datenelement.
07-04-_2021_15-35-56.jpg
Im SPS-Programm hat dies einen ganz anderen Wert:
07-04-_2021_15-38-46.png
Die Darstellung im System Manager ist ohne Anzeige-Skalierung.
Dadurch schlagen natürlich auch alle Folge-Funktionen, wie die Initialisierung mit dem entsprechenden Baustein fehl.
Was ich bereits versucht habe:
Boot-Projekt komplett löschen und neu anlegen, Variablen-Zuordnung prüfen / erzeugen. Steuerung (CX1020) neu gestartet (inkl. Bus-Strom ausschalten).
Variable gelöscht und neu zugeordnet.
Irgendwie wird aber auch hierzu nichts in der automatisch erzeugten TwinCAT_Configuration (VAR_CONFIG) gespeichert, wenn ich dies einmal mit anderen Variablen vergleiche.
Für andere Variablen steht dort die Referenz als Kommentar. Auffällig war auch, das ich im System Manager, jeden einzelnen Ein/Ausgang einzeln auf die Member der Strukturen mappen musste. Dies scheint aber hier überhaupt nicht reflektiert zu sein. Wo ist das also zu finden?
07-04-_2021_15-46-32.png
Habe durch Werte in System Manager "Forcen" herausgefunden, dass die Datenleitungen durchaus richtig gemappt sind. Aber leider der Status Wert nicht.
Bin für jede Hilfe dankbar!
Last edited by cpalm; 11.04.2021 at 17:10. Reason: Ursprüngliches Problem gelöst
gibts bei dem Beckhoff auch eine "Steuerungskonfiguration" wie bei all den anderen Codesys 2 Steuerungen?
Ja, gibt es. Ist aber so weit schon richtig eingestellt und daher nicht weiter hilfreich.
07-04-_2021_22-58-02.png
Der große Rest funktioniert ja auch schließlich.
ich dachte dabei eher an eine Konfiguration, wo auch die einzelnen Klemmen eingetragen werden.
Aber irgendwie passen deine Screenshots für mich nicht wirklich zusammen. Im ersten Bild könnte man meinen, dass der Status auf der Eingangsadresse 105 liegt und der Ausgang bei 617 beginnt, im dritten Bild In auf 404 und Out auf 288
Bei den sonstigen Codesys 2 Systemen wird in der Steuerungskonfiguration die Adresse angezeigt, aber da hat dann Beckhoff wohl etwas mehr "verbogen"
Stimmt. Genau das macht dieser Beckhoff TwinCAT System Manager. Ich habe diesen "Missing Link" - wie das also zwischen Compiler und Zuordnung alles wirklich zusammenhängt auch noch nicht genau verstanden und habe solche technischen Hinweise leider auch noch nicht im Beckhoff Infosystem entdeckt.
Moin,
ich dachte immer, dass man bei den "großen" Steuerungen, wo ich über den System Manager eine Hardware-Konfiguration erzeuge und die via Variablen-Verknüpfungen mit der Softwareseite verbinde, im SPS Programm keine absoluten Adressen angibt, sondern alles mit %I* bzw %Q* deklariert. Der System Manager kümmert sich dann um die richtige Adressierung. Und irgendwo war auch mal was mit einem Byte-Alignment, dass gewisse Variablen immer auf einer geraden Adresse starten. Ich bekomm das aber nicht mehr ganz auf die Reihe, aber in diese Richtung würde ich mal suchen...
So wie das aussieht hast Du in der globalen Variablenliste selber Einträge hinzugefügt, das darf man nicht. Diese Liste wird vom Systemmanager erstellt und gepflegt, darum steht ja auch oben in der Liste der Hinweis "read only". Die Adressen in der Liste sind auch keine Hardwareadressen, sondern sozusagen Softwareadressen. Andere Codesys basierte SPSen kennen das %I* oder %Q* Konstrukt nicht, da muss man statt dem * eine Adresse angeben was TwinCAT für einen übernimmt.
Du musst im Deklarationsteil Deines Programms eine Variable mit AT %Q* für Ausgänge und %I* für Eingänge anlegen vom Typ ST_KL6821... anlegen, dann das Ganze übersetzen und dann kannst Du im Systemmanager die Variablen verknüpfen.
Last edited by oliver.tonn; 08.04.2021 at 08:50.
Von irgendwas mit Internetzugang gesendet.
@NieZuSpaet und @oliver.tonn: Genau so habe ich es gemacht. In den globalen Variablen ist bei mir nur definiert:
Den Read-Only Teil der VAR_CONFIG habe ich natürlich nicht verändert, und nur für Fehleranalyse-Zwecke hier gepostet, da ich dachte, dass das hilfreich sein könnte. Mittlerweile stelle ich die Diskrepanz jedoch schon im System-Manager selbst fest.Code:stDaliInData AT %I* : ST_KL6821InData; stDaliOutData AT %Q* : ST_KL6821OutData;
Hier ein paar Screenshots, von der Feldbus-Ebene, die zeigen, wie der Status Wert gerade steht und innerhalb des gleichen Projekts im System Manager die Variablen des Prozessabbildes. Schon hier sind die angezeigten Online-Werte unterschiedlich. Mir fällt nur auf, dass die Klemme als Datentyp UINT hat und die Variable in der Struktur aus der Original-Beckhoff Dali Library WORD ist. Die sind aber ja zu 100% identisch. Also 2 Byte lang und nicht vorzeichenbehaftet. Also woher kommt die 8 in der 0x82?
Auch ändert ein Schreiben, auf der einen Ebene nicht unbedingt den Wert in der anderen. Dabei sind die doch verknüpft! Das SPS-Programm habe ich zum Testen auch gestoppt um Seiteneffekte auszuschließen.
Klemme:
08-04-_2021_13-04-16.png
08-04-_2021_13-04-40.png
Prozess (siehe auch zueinader passende Referenzen, jedoch unterschiedliche Werte):
08-04-_2021_13-06-12.png
08-04-_2021_13-06-35.png
Nochmal, in der Liste darfst Du gar nichts machen egal wo.
Von irgendwas mit Internetzugang gesendet.
Bookmarks