Codesys globale Adressierung in Merkern

RJ45

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

für eine Kopplung und den Datenaustausch zwischen einem PFC 200 und einer S7-Steuerung habe ich in Codesys eine globale Variablenliste mit ca. 200 Variablen angelegt, die ich in Merkerbereiche aufgeteilt habe und blockweise an die S7 übertrage. Diese Variablen werde ich in der gleichen Struktur in mehreren Projekten einsetzen, mit dem einzigen Unterschied, dass ich je nach Projekt die verwendeten Merkerbereiche anpassen muss. Bisher habe ich jeder Variable einzeln eine Merkeradresse zugeordnet, das sieht in etwa wie folgt aus:

Variable_1 AT %MX6100.0: BOOL;
Variable_2 AT %MX6100.1 : BOOL;
Variable_3 AT %MX6100.2 : BOOL;
Variable_4 AT %MX6100.3: BOOL;
Variable_5 AT %MX6100.4 : BOOL;

Da ich jedoch nicht in jedem Projekt alle Adressen einzeln anpassen möchte, suche ich nach einem komfortableren Weg die Adressierung zu gestallten.

Meine bisherige Überlegung war, dies über ein Array zu lösen. Jedoch sind meine Versuche das so umzusetzen bisher gescheitert, ich bekomme immer wieder die Fehlermeldung "fehlerhafter Initialwert". Meine Deklaration sieht dabei aktuell wie folgt aus:

Array_Send_Byte AT%MB16100 :ARRAY[0..1] OF BYTE;

Variable_90 : BYTE := Array_Send_Byte [0];

Ich stehe hier gerade etwas auf dem Schlauch und wüsste zur Zeit auch nicht, wie ich das bei boolschen Werten umsetzen könnte, zumal für die boolschen Werte dann ein ganzes Byte belegt wird.

Bin ich denn grundsätzlich auf dem richtigen Weg oder hat hier jemand eine Idee, wie man das aufbauen könnte?

Ich verwende aktuell folgende Hard- und Software:

Wago PFC 200 (750-8212/025-002)
Codesys Version 2.3.9.55

Vorab schon vielen Dank für eure Hilfe.

Und beste Grüße aus HH!
 
Hi, ich bin nicht ganz sicher ob ich genau verstehe was du machen möchtest, aber du bist schon auf dem richtigen Weg:

Code:
    Testvar AT %MW0 : ARRAY [0..1] OF WORD := 10,20;

Würde zwei Variablen (Testvar[0] und Testvar[1]) auf dem MW0 und MW1 anlegen und mit den Initialwerten 10 und 20 initialisieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du hast Deklaration Zuweisung des POUs gemischt

das gehört in die Deklaration
Array_Send_Byte AT%MB16100 :ARRAY[0..1] OF BYTE;


das hier in den POU
Variable_90 : BYTE := Array_Send_Byte [0];

aber ohne :BYTE
 
Du hast Deklaration Zuweisung des POUs gemischt

das gehört in die Deklaration
Array_Send_Byte AT%MB16100 :ARRAY[0..1] OF BYTE;


das hier in den POU
Variable_90 : BYTE := Array_Send_Byte [0];

aber ohne :BYTE


Du hast natürlich Recht, da habe ich gestern nicht mehr dran gedacht, mein Fehler.

Aber trotzdem Danke fürs auf die Sprünge helfen!
 
Zurück
Oben