# MW adressieren?



## McNugget (11 Januar 2010)

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?


----------



## McNugget (11 Januar 2010)

Weiss das keiner?


----------



## dalbi (11 Januar 2010)

McNugget schrieb:


> ...
> 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


----------



## McNugget (11 Januar 2010)

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???


----------



## Matze001 (11 Januar 2010)

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


----------



## dalbi (11 Januar 2010)

ARRAY 

Gruss Daniel


----------



## dalbi (11 Januar 2010)

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


----------



## McNugget (12 Januar 2010)

Beschreibt das Array dann nur das EINE MW0 oder so viele folgende Worte, wie das Array hat?

Gruss

McNugget


----------



## Grubba (12 Januar 2010)

> 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.


----------



## McNugget (12 Januar 2010)

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?


----------



## Grubba (12 Januar 2010)

> Ist doch wohl so richtig, oder geht´s besser?


 
Besser gehts nicht...


----------



## McNugget (12 Januar 2010)

Beruhigend.. ;-)


----------



## MasterOhh (12 Januar 2010)

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 .....


----------



## McNugget (12 Januar 2010)

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.


----------

