Modbus Master TCP Mapping

MW22

Member
Beiträge
12
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
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
 

Anhänge

  • 1652355557601.png
    1652355557601.png
    32,1 KB · Aufrufe: 11

ccore

Well-known member
Beiträge
148
Punkte Reaktionen
30
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ß
 
Zuletzt bearbeitet:
OP
M

MW22

Member
Beiträge
12
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
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

Well-known member
Beiträge
148
Punkte Reaktionen
30
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.
 
OP
M

MW22

Member
Beiträge
12
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Alles klar des funktioniert soweit.
Leider bekomme ich immer noch keine Daten angezeigt wenn im am Baustein eine wert vorgebe.

Deklaration vom Baustein Online

1652359432884.png


1652359445116.png

Globale Variablen

1652359460155.png

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