# Modbus TCP/IP Bit Verarbeitung



## AW123 (13 April 2022)

Hallo,

ich habe mal ne Frage zu Modbus. 
Ich habe ein ISO Gerät, wo ich gerne einen Alarm verarbeiten möchte. Der Modbusbereich 
dieses Alarms liegt laut Datenblatt auf dieser Adresse.
	

		
			
		

		
	




Zu mir hatte man gesagt, dass bei Wago die Kommunikation mit Modbus ab Registeradresse 12288 anfängt. (12288 = MX0.0)
Wie kann ich nun dieses Bit verarbeiten / auslesen zum dies in meinem Programm zu verwenden.

Gruß AW


----------



## .:WAGO::0105790:. (14 April 2022)

Hallo AW,

mit dem Register 12288 liegst du erstmal gar nicht so verkehrt. Diese Adresse ist allerdings nur dann interessant, wenn du eine WAGO Steuerung als Modbus Slave verwendest. In diesem Fall wird das erste Merkerregister auf die Adresse 12288 gemappt.

So wie ich das verstehe möchtest du allerdings mit einer WAGO Steuerung als Modbus Master ein anderes Gerät abfragen, welches hier als Slave fungiert. In diesem Fall spielt das keine Rolle, du kannst einfach das Register 0x2102 abfragen und dir daraus das entsprechende Bit holen.


----------



## AW123 (19 April 2022)

Ja genau. Und wie mache ich das wenn ich das Bit 1 haben möchte? Sorry für die dumme Frage aber ich bin noch blutiger Anfänger auf dem Gebiet.
Gibt es hierfür einen Baustein oder kann man das direkt schreiben in SCL?


----------



## Oberchefe (19 April 2022)

Wenn nur das ganze Word abgefragt werden kann:
Wordvariable.1


----------



## AW123 (19 April 2022)

Ok das verstehe ich.
Ich lege z.b. FehlerExtern:Word; als globale variable an.
Dann kann ich mit FehlerExtern.1 auf dieses bit zugreifen. Soweit so gut.
Nur wie kann ich dem Namen FehlerExtern die Modbus Adresse 0x2102 zuweisen.
Das verstehe ich nicht. 
FehlerExtern  AT%0x2102    :Word   ; 
Da mekert er am %. Wie deklariere ich sozusagen FehlerExtern sodass diese Variable auf der Modbusadresse
0x2102 liegt.


----------



## Tobsucht (19 April 2022)

Du kannst die Modbusadresse der Speicheradresse nicht vorgeben. Diese sind fest zugeordnet (Handbuch).

Du scheinst ja einen fremden Slave (ISO Gerät) ansprechen zu wollen. Da muss die Wago Steuerung der Master sein.
Oder willst Du ein bestehenden Slave mit einer Wago Steuerung ersetzen?


----------



## AW123 (19 April 2022)

Ja genau das iso Gerät ist ein Fremdgerät und von diesem möchte ich gerne das Fehlerbit auslesen wenn dieses Gerät eine Störung aufweist. Ok wenn ich das richtig verstehe muss ich nun im Handbuch schauen welche Adresse dies ist und diese dann verwenden. Werde ich morgen Mal nachschauen.
Danke


----------



## Tobsucht (19 April 2022)

Nein, der Merkerbereich wird nur genutzt, wenn die Wago Steuerung als Slave agiert.
Du brauchst einen Master. Also entweder den Modbus Master Konfigurator aus der Steuerungskonfiguration oder die Bibliothek WagoLibModbus_IP_01.


----------



## AW123 (20 April 2022)

Ah ok. Ich habe hier was gefuden in Forum und entsprechend geändert.
So könnte ich ja dann wenn ich es richtig verstehe dies verarbeiten:
VAR
    ISO_685    :ETHERNET_MODBUSMASTER_TCP;

    xCONNECT            : BOOL            :=TRUE            ;
    xIS_CONNECTED    : BOOL                                ;
    ISO_IP                    : STRING         := '192.168.2.15'    ;
    typISO                    : ISO_Alarm                        ;

    xSend                    : BOOL                                ;
    tWait                    : TIME             := t#100ms        ;
    TimerTON                : TON                                ;

    wError                    : WORD                            ;
    Response_Unit_ID    : BYTE                                ;
END_VAR



TYPE ISO_Alarm :
STRUCT

    wISO_CommonAlarmWORD;

END_STRUCT
END_TYPE

und wenn ich dann den Alarm auswerten möchte:

IF wISO_CommonAlarm.1 then 
alarm:=true;
end_if


----------



## Oberchefe (20 April 2022)

ptReadData muss aber mit ADR(wISO_CommonAlarm) beschalten werden, wREAD_ADDRESS mit der 8450 usw.


----------



## AW123 (20 April 2022)

wohl wahr.... brauch ich eig den xsend überhaupt? weil ich lese ja nur und sende nix?

gibt es eig. eine hilfe wie bei siemens um zu sehen was der baustein macht und wie man ihn beschalten sollte?
Wenn ich f1 drücke bekommt man nix angezeigt in codesys.


----------

