MW adressieren?

McNugget

Level-1
Beiträge
220
Reaktionspunkte
10
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin allerseits.

Ich habe da mal wieder ne Frage:

Kann ich in Codesys 2.3 bereits in der Deklaration einen INT Wert einem Merkerwort zuweisen?

Oder wie macht man das in der Praxis?




Wie übergebe ich möglichst speichereffizient ca. 30 INT-Werte? Muss ich unbedingt für jeden INT-Wert ein Merkerwort verschiessen?

Liesse sich das irgendwie performanenter machen?

Bei "nur" 256 MW auf einem Wago 750-841er könnte ich damit ja relativ schnell an die Grenzen kommen, oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...
Kann ich in Codesys 2.3 bereits in der Deklaration einen INT Wert einem Merkerwort zuweisen...

Hallo,

bin zwar kein CoDeSys Kenner aber das mit der deklaration geht so:

wVar AT%MW0 : INT := 10;

das andere geht über ein Array, einfach mal in der Onlinehilfe suchen.

Gruss Daniel
 
Danke Daniel.

Das hilft mir schon weiter.

Wo sollte ich denn in der Hilfe suchen???

Kannst Du mir mal ein Schlüsselwort nennen???

array??

adressierung??

Modbus???

Register???
 
Hallo,

warum willst du eigtl. direkt auf Merker rangieren?
Codesys macht das idr. von allein, darüber brauchst du dir keine Gedanken mehr machen.
wenn du aber über die Merker, z.B. via Modbus zugreifen willst, musst du sie in einen Bestimmten Merkerbereich legen.

Das mehr asl 256MW nicht gehen sollten zweifel ich mal an, allein daher das der Modbusbereich über 1000 liegt ;)

MfG

Marcel
 
iVAR AT%MW0 : ARRAY[1..10] OF INT := 10, 20, 30, 40, 50, 60, 70, 80, 90, 100;

in iVAR[1] steht 10
in iVAR[2] steht 20
usw...

Gruss Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Beschreibt das Array dann nur das EINE MW0 oder so viele folgende Worte, wie das Array hat?

Normalerweise soviel, wie das Array hat, weil ein Array den Speicherbereich lückenlos weiterfüllt.

Aber noch mal ein dezenter Hinweis:

Wenn Du nicht aus irgendwelchen Gründen gezwungen wirst, dieses Array auf eine bestimmte Adresse zu legen (mittels AT), lass das einfach sein.

Die Merkergeschichten sind (im allgemeinen) eigentlich unter Codesys überflüssig, was Variablendeklarationen angeht.
 
Guten Morgen,

vielen Dank für die guten und konstruktiven Hinweise.

@Grubba:
Was ich bisher noch nicht erwähnt hatte...
Es geht hier aber um Modbuskommunikation. Und da ich meines Wissen nicht direkt in den Controller greifen kann, möchte ich meine Werte auf dei Merkerworte "spiegeln", um hierauf zugreifen zu können.

So kann ich dann ab Adresse 12288 in den 750-841er Controller "schauen".

Ist doch wohl so richtig, oder geht´s besser?
 
Mach dir auf jeden Fall nen Plan welche Adressen du belegst und achte bei Arrays darauf das sie ganze Adressbereiche belegen. Der Compiler sollte eigentlich prüfen ob Speicherbereiche evtl. doppelt belegt sind, aber man kann ja nie wissen .....
 
Danke. Genau so hatte ich es vor.

Das hatte mich nämlich auch interessiert: dass man bei dem ganzen Programmieren immer noch einen expliziten Plan der zu übergebeneden Modbus-Bereiche erstellen muss.
 
Zurück
Oben