Wago "Modbus TCP"-Kommunikation mit 750-8100 (Master) und 852 (Slave) unter e!Cockpit
Hallo zusammen,
ich versuche gerade eine Modbus TCP Verbindung zwischen dem 750-8100 und dem 750-352 einzubinden, allerdings möchte ich das nicht über den Modbus-Konfigurator (siehe Handbuch) umsetzen, sondern über die Bibliothek "FbMbMasterTcp". Leider stehe ich gerade ein bisschen auf dem Schlauch, wie ich das genau umsetzen muss.
Was habe ich bisher gemacht?
- Funktionsbaustein "WagoAppPlcModbus.FbMbMasterTcp" in PLC_PRG (mit FUP) eingefügt.
- Variablen deklariert (Master-Adresse: 192.168.1.100 / Slave-Adresse: 192.168.1.101)
- Auslesen des PT100
-> Nicht klar, wie ich das umsetzen soll bzw. in welches Register der Wert geschrieben wird und wie man diesen dann ausliest.
// Konfigurierung Modbus Master
ModbusMaster01: WagoAppPlcModbus.FbMbMasterTcp;
// Input ModbusMaster
xConnect: BOOL := 1;
sHost: STRING := '192.168.1.101'; --> sHost ist die Slave-Adresse?
wPort: WORD := 502;
utKeepAlive: typKeepAlive;
eFrameType: eMbFrameType := ETHERNET;
tTimeOut: TIME := t#5s;
utQuery : typMbQuery := ( bUnitId := 1, // Slaveaddress
bFunctionCode := 16#17, // multiple read/write registers
uiReadAddress := 0, // Startaddress
uiReadQuantity := 10, // Quantity of wanted registers
uiWriteAddress := 512,
uiWriteQuantity := 0,
awWriteData := [124(0)]
)
utResponse: typMbResponse;
xTrigger: BOOL;
// Output ModbusMaster
xIsOpen: BOOL;
xError: BOOL;
oStatus: FbResult;
END_VAR
Ziel:
Auslesen der Temperatur eines PT100 (von 750-352) und Übertragung der Werte auf den Feldbuscontroller (750-8100). Übersteigt die Temperatur einen gewissen Wert, soll ein DO gesetzt werden.Das möchte ich mir gerne erstmal als simples Beispiel aufbauen, um die Kommunikation via Modbus und das Einbinden der Bibliotheken / Schreiben der Register zu verstehen.
Fragen:
- Wie lese ich die Daten vom Feldbuskoppler via Modbus auf dem Controller aus? Die Geschichte mit den Registern ist mir noch nicht so ganz klar.In welches Register werden die Eingangswerte der PT100 geschrieben? (Aufbau Slave "750-452": (1) 750-400, (2) 750-461, (3) 750-492, (4) 750-600)
- Die Variable sHost ist die Slave- oder die Master-Zieladresse? Was ist, wenn ich zwei Master und zwei Slaves habe. Wie kann ich festlegen, welcher Master mit welchem Slave verknüpft ist?Das interessiert mich, weil ich in der Zukunft gerne mehrere dieser Master-Slave Topologien in ein Gesamtnetzwerk aufbauen möchte.
- Gibt es detailliertere Tutorials oder Beispielprojekte für e!Cockpit, mit denen man sich die Einarbeitung erleichtern kann?
Auf YouTube findet man häufig nur sehr oberflächliche Tutorials oder Tutorials mit CodeSys 2.3.
Vielen Dank im Voraus.
Hallo zusammen,
ich versuche gerade eine Modbus TCP Verbindung zwischen dem 750-8100 und dem 750-352 einzubinden, allerdings möchte ich das nicht über den Modbus-Konfigurator (siehe Handbuch) umsetzen, sondern über die Bibliothek "FbMbMasterTcp". Leider stehe ich gerade ein bisschen auf dem Schlauch, wie ich das genau umsetzen muss.
Was habe ich bisher gemacht?
- Funktionsbaustein "WagoAppPlcModbus.FbMbMasterTcp" in PLC_PRG (mit FUP) eingefügt.
- Variablen deklariert (Master-Adresse: 192.168.1.100 / Slave-Adresse: 192.168.1.101)
- Auslesen des PT100
-> Nicht klar, wie ich das umsetzen soll bzw. in welches Register der Wert geschrieben wird und wie man diesen dann ausliest.
// Konfigurierung Modbus Master
ModbusMaster01: WagoAppPlcModbus.FbMbMasterTcp;
// Input ModbusMaster
xConnect: BOOL := 1;
sHost: STRING := '192.168.1.101'; --> sHost ist die Slave-Adresse?
wPort: WORD := 502;
utKeepAlive: typKeepAlive;
eFrameType: eMbFrameType := ETHERNET;
tTimeOut: TIME := t#5s;
utQuery : typMbQuery := ( bUnitId := 1, // Slaveaddress
bFunctionCode := 16#17, // multiple read/write registers
uiReadAddress := 0, // Startaddress
uiReadQuantity := 10, // Quantity of wanted registers
uiWriteAddress := 512,
uiWriteQuantity := 0,
awWriteData := [124(0)]
)
utResponse: typMbResponse;
xTrigger: BOOL;
// Output ModbusMaster
xIsOpen: BOOL;
xError: BOOL;
oStatus: FbResult;
END_VAR
Ziel:
Auslesen der Temperatur eines PT100 (von 750-352) und Übertragung der Werte auf den Feldbuscontroller (750-8100). Übersteigt die Temperatur einen gewissen Wert, soll ein DO gesetzt werden.Das möchte ich mir gerne erstmal als simples Beispiel aufbauen, um die Kommunikation via Modbus und das Einbinden der Bibliotheken / Schreiben der Register zu verstehen.
Fragen:
- Wie lese ich die Daten vom Feldbuskoppler via Modbus auf dem Controller aus? Die Geschichte mit den Registern ist mir noch nicht so ganz klar.In welches Register werden die Eingangswerte der PT100 geschrieben? (Aufbau Slave "750-452": (1) 750-400, (2) 750-461, (3) 750-492, (4) 750-600)
- Die Variable sHost ist die Slave- oder die Master-Zieladresse? Was ist, wenn ich zwei Master und zwei Slaves habe. Wie kann ich festlegen, welcher Master mit welchem Slave verknüpft ist?Das interessiert mich, weil ich in der Zukunft gerne mehrere dieser Master-Slave Topologien in ein Gesamtnetzwerk aufbauen möchte.
- Gibt es detailliertere Tutorials oder Beispielprojekte für e!Cockpit, mit denen man sich die Einarbeitung erleichtern kann?
Auf YouTube findet man häufig nur sehr oberflächliche Tutorials oder Tutorials mit CodeSys 2.3.
Vielen Dank im Voraus.
Zuletzt bearbeitet: