Modbus TCP/IP Bit Verarbeitung

AW123

Level-2
Beiträge
35
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
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.1649840596427.png

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
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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?
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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?
 
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
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
1650439101312.png

TYPE ISO_Alarm :
STRUCT

wISO_CommonAlarm:DWORD;

END_STRUCT
END_TYPE

und wenn ich dann den Alarm auswerten möchte:

IF wISO_CommonAlarm.1 then
alarm:=true;
end_if
 
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.
 
Zurück
Oben