Modbus RTU mit 750-8212, 750-652 und Codesys 3.5

c0nr3f

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich möchte eine Modbus RTU Verbindung mit meiner 750-8212, 750-652 und einem Modbus-Slave aufbauen (in dem Fall das Programm Modbus Slave). Der Aufbau ist folgender:

8212 + 652 (Ausgänge 1&2 und 5&6 gebrückt) und einem CH340 RS485 auf USB Adapter sowie die Modbus Slave Software.

Ich habe alle Verbindungen unabhängig voneinander geprüft, A und B schon gedreht, mit und ohne 120Ohm Widerstand probiert, die Adressen geändert, die Funktion geändert (FC3, FC4) und auch andere RS485 Teilnehmer auf dem Bus gehabt. Es muss meiner Meinung nach also an der Karte oder meinem Programm liegen.

Ich verwende eigentlich die einfachste Variante von WagoAppPlcModbus, aber irgendwie bekomme ich es nicht hin, Daten auszulesen. Als Fehler bekomme ich immer einen Timeout in osStatus. Bei der Klemme blinkt alle 2 s die Tx LED, die Recieve habe ich noch nie blinken sehen.

PROGRAM PLC_PRG_Mb_Master
VAR
(*Interface parameters*)
FbMbMasterSerial_1: FbMbMasterSerial:=( xConnect := TRUE,
udiBaudrate := 9600,
usiDataBits := 8,
eParity := WagoTypesCom.eTTYParity.None,
eStopBits := WagoTypesCom.eTTYStopBits.One,
eHandshake := WagoTypesCom.eTTYHandshake.None,
ePhysical := WagoTypescom.eTTYPhysicalLayer.RS485_HalfDuplex,
eFrameType := eMbFrameType.RTU,
tTimeOut := T#2000MS);
//-------------------------------------------------------------------------------------------------
utQuery: typMbQuery:=( bUnitId := 1, // Slaveaddress
bFunctionCode := 16#04, // read input registers
uiReadAddress := 16#7531, // Startaddress
//uiReadAddress := 16#0000, // Startaddress
uiReadQuantity := 16#0009, // Quantity of wanted registers
uiWriteAddress := 0, // nicht benötigt für FC3
uiWriteQuantity := 0, // nicht benötigt für FC3
awWriteData := [124(0)] // nicht benötigt für FC3
);
xTxTrigger: BOOL;

utResponse: typMbResponse;

tonDelay: TON := (PT := T#20MS);

END_VAR
------------------------------------------------------------------------------------------------------------------------------
tonDelay( IN := (NOT tonDelay.Q) AND (NOT xTxTrigger));
xTxTrigger S= tonDelay.Q;

FbMbMasterSerial_1( I_Port := RS485, //serial port
utQuery := utQuery,
xTrigger := xTxTrigger,
utResponse := utResponse);


Hat jemand eine Idee, was ich falsch mache?
 

Anhänge

  • Programm.PNG
    Programm.PNG
    62,1 KB · Aufrufe: 16
  • Slave.PNG
    Slave.PNG
    313,9 KB · Aufrufe: 16
  • Verbindungseinstellungen.PNG
    Verbindungseinstellungen.PNG
    169,7 KB · Aufrufe: 12
  • IOCheck.PNG
    IOCheck.PNG
    40,3 KB · Aufrufe: 17
Zuletzt bearbeitet:
Hatte auch einmal Probleme, zwar mit einer PFC100 und e!cockpit aber vielleicht liegt es ja an der Hardware


Zumindest läuft es mit einer 8212, jedoch noch auf FW22 und e!cockpit
 
Zurück
Oben