Adressierung(Deklaration) Ein/Ausgänge über Visu(Variabeln)

IECChris

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

möchte die Ein+Augänge meiner CodeSys (2.3.9) Steuerung über die Visualisierung adressieren(deklarieren).
Habe bisher nur die Möglichkeit der AT-Deklaration in der Dokumentation finden können...

Beispiel:
Out1 AT %QX4.0:BOOL; (möchte die Adressierung über die Visu ändern)

I hoffe mein Problem ist verständlich
Da ich mich erst seit kurzem mit CodeSys beschäftige habe leider nicht die nötigen Kenntnisse um das Problem zu lösen...

Vielen Dank für Eure Hilfe
 
Wenn ich das richtig verstehe, möchtest du zur Laufzeit die Adresse der IO-Variablen ändern?

Das wird nicht gehen, die Adressen werden beim kompilieren berechnet, diese zur Laufzeit zu ändern ist meines Wissens nicht möglich.

Was anderes ist es, wenn du eine Variable zwischen zwei Adressen hin und her wechseln lassen willst, dafür baust du dir am besten eine Zwischenschicht, mit der du in der Visu arbeiten kannst. Die eigentlichen IO-Variablen lässt du in Ruhe und zeigst mit der Zwischenschicht einfach das an was du haben willst.

Aber Adressen sind nach dem kompilieren fix und nicht veränderbar.

Wie genau so eine Zwischenschicht aussehen kann, ist in erster Linie von deinen Anforderungen an Flexibilität abhängig. Ich hab in CoDeSys so was schon mal gemacht, kann aber die Pest werden, wenn es falsch konfiguriert wird.

Ich rate Dir eher dazu, deine unterschiedlichen Fälle in denen die IO-Variablen verschiedene Bedeutungen haben im einzelnen auszuprogrammieren, dann fällt das Lesen auch nach Jahren leichter als mit einer Zwischenschicht die dann eh keiner mehr versteht.

cheers :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die schnelle Antwort


Da ich gerade an einem Standartprogramm arbeite welches ich für verschiedene Hardware-Konfigurationen verwenden will, wollte ich die Adressierung über die Visu anpassen können...

Vielleicht hat jemand eine Idee wie man das umsetzen kann?
 
Hallo,

jetzt ist zuerst mal wichtig zu wissen mit welcher Hardware du arbeitest. TwinCAT, wobei hier der System Manager bereits Dein Problem löst, oder mit CoDeSys, in dem die Adressierung absolut im Projekt gemacht ist.

Ich nehm jetzt mal an, dass Du NICHT mit TwinCAT arbeitest, sonst würde sich der Aufwand den du betreiben willst schon gar nicht lohnen.

Also zuerst mal grob beschrieben:

Du hast eine Anzahl Aus und Eingänge, die einzeln adressiert sind. Dazu machst du dir ein Abbild, welches aber nicht Adressiert wird.
In etwa so :
dwInput at %I1.0 : DWORD;
bInput_01 : BOOL;

bInput_01 := dwInput.0;

Jetzt kannst du einen Eingang(Bit) von dwInput entweder auf bInput_01 legen oder auf ein anderes Bit, und das kannst du dann auch in der VISU machen.
Am ehesten wirst du dann mit Indexen, die in der VISU angelegt sind arbeiten können.

Mal so als Vorschlag

byIndexVisu01 - Variable, die du in der Visu beschreibst

dann könnte die Zuweisung in deinem Code so aussehen:

bInput_01 := EXTRACT(dwInput, byIndexVisu01);


Ist mal so grob das was ich meinte.

Aber solltest du mit TwinCAT arbeiten, legst du lieber in deinen IO-Strukturen alles an, verknüpft wird das eh im System Manager und deine verschiedenen Typen wären eben verschiedene System Manager Dateien.

hoffe das hilft dir erst mal weiter.

cheers :)
 
Hallo,

ich verwende das XV-102 von EATON mit SmartWire-DT Master womit ich die verschiedene Hardware einlese.
Bei der SmartWire-Technology werden die Adressen der Hardware mit der Position im Bus bestimmt... Da sich auch die Anzahl der Ein/Ausgänge von Anlage zu Anlage ändert und die digital Ein/Ausgänge in "Byte" bzw die Anlogen in "Word" geschrieben werden, änderen sich auch die jeweiligen Adressen dafür

Leider kann ich die Binär-Ein/Ausgänge nur in Bit oder Byte und die Analogen nur Bit oder Word deklarieren...

I denke das Probleme werde ich mit dieser Funktion nicht in den Griff bekommen...

Danke trotzdem
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ah mit EATON,

ist es da nicht sehr ähnlich wie in TwinCAT, dass du im Code nur Platzhalter (z.B. wInput at %I* : WORD) definierst und dann im die Symbole auf die Hardware verknüpfst?

bei SmartWire muss ich leider passen.

cheers :)
 
Zuletzt bearbeitet:
Es gibt einen IOassistant bin aber mit der Funktionsweise nicht vertraut...

Ich glaube dieser ist für SmartWire nicht geeignet

:sad:
 
Zurück
Oben