# Modbus Master TCP Mapping



## MW22 (12 Mai 2022)

Hallo,

ich habe folgendes Problem:

Im Ethernet Modbusmaster habe ich im ptREAD_DATA ein Struct als Eingang deklariert. 

Dieses Struct is folgendermaßen aufgebaut:

TYPE EDS_2 :
STRUCT

    EDS_2    :WORD    ;

END_STRUCT
END_TYPE

Die Variable EDS_2 habe ich global deklariert:

VAR_GLOBAL RETAIN PERSISTENT

    EDS_2:WORD;

END_VAR

Wenn ich nun Online gehe bekomme ich einen Wert am Ethernet Modbusmaster angezeigt dieser wert wird aber nicht auf meine globale Variable gemappt.

An was kann das liegen?

Ich würde nämlich gerne die einzelnen Bits mit EDS_2.0 usw abfragen.

MfG

MW22


----------



## ccore (12 Mai 2022)

Ist EDS_2 nun ein Word oder ein Typ(STRUCT)?

Vielleicht solltest du mal die Namensgebung ein bisschen anpassen.

Wenn du die Variable in deinem Typanlegst, brauchst du sie nicht global anlegen. Wenn du den Teil persistant retain haben willst, solltest du dein Typ dort deklarieren.
Den Namen den du für deine Typ deklaration hast, ist der gleiche wie der Typ.
Wäre dann m.E. wie

Word : WORD;

wundert mich, dass Codesys sich da nicht beschwert hat. 
[EDIT]
Ok, scheinbar geht es doch mit deklarationsname = Typenname
Finde es aber persönlich unschön
[/EDIT]


Gruß


----------



## MW22 (12 Mai 2022)

EDS_2 ist beides bei mir derzeit. Wenn ich die Variable im Struct umbenenne
TYPE EDS_2 :
STRUCT

    Mapping_EDS_2:WORD;

END_STRUCT
END_TYPE

und global die Variable Mapping_EDS_2 deklariere als word kommt auch nix an.

Ist dies komplett falsch?

Leider kenne ich mich mit codesys 2.3 so gut wie gar nicht aus deswegen frage ich so dumm.

gruß MW


----------



## ccore (12 Mai 2022)

Du brauchst die Variable nicht global deklarieren. Die Variable wird im Typ deklariert. 

Wenn du das Persistant haben möchtest wäre der richtige weg, den Typ in der Globalen Variablen Liste zu deklarieren. 

Also das Feld 

EDS_2 : EDS_2; in die GVL schreiben. 

Als Eingang für den ADR Baustein wäre dann auch 

EDS_2.Mapping_EDS_2 einzugeben. 

Habe hier auf dem Rechner leider kein CS2.3 drauf sonst würde ich ein paar Screenshots machen.


----------



## ccore (12 Mai 2022)

Und die GVL Deklaration des einzelnen WORD weglassen.


----------



## MW22 (12 Mai 2022)

Alles klar des funktioniert soweit.
Leider bekomme ich immer noch keine Daten angezeigt wenn im am Baustein eine wert vorgebe.

Deklaration vom Baustein Online








Globale Variablen




was ich vergessen habe zu sagen: Ich simuliere das ganze gerade. Habe keine reelle Steuerung derzeit vor mir liegen.


----------



## ccore (12 Mai 2022)

Lösch mal die deklaration im Baustein raus. Du deklarierst EDS_2 doppelt.


----------



## MW22 (12 Mai 2022)

Oh man...... völlig übersehen Super danke dir


----------

