Wago 750-652 Modbus Brink KWL

lullnix

Level-1
Beiträge
24
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

möchte die Werte einer Brink KWL (Flair 400) über den Modbus mit einer Wago 750-652 auslesen und steuern.
Wago 750-8100 + e!Cockpit (alles aktuelle Version).
Ich nutze das Demoprogramm ModbusSerialMaster aus der Bibliothek WagoAppPlcModbus. Mit dem Funktionsblock FbMbMasterSerial.

Die Wago 750-652 ist auf Werkseinstellungen zurückgesetzt und ich habe die Einstellungen der KWL entsprechend gesetzt.
Die KWL hat die Modbus-Adresse 20.

Verkabelt ist die Wago 750-652 mit der KWL nach der Wago Anleitung der 750-652 auf Seite 48.

PROGRAM ModbusSerialMaster
VAR
mySerialMaster : FbMbMasterSerial := ( xConnect := FALSE,
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#500MS
);

//--- Identification Object for use of FC43 (in case the slave support it) ------
myBaseIdentification : FbIdentifyBaseObject; // only needed for FC43
//-------------------------------------------------------------------------------
utQuery : typMbQuery := ( bUnitId := 20, // Slaveaddress
bFunctionCode := 16#04, // read input registers
IIdentifyObject := myBaseIdentification, // only needed for FC43
uiReadAddress := 0, // Startaddress
uiReadQuantity := 10, // Quantity of wanted registers
uiWriteAddress := 0, // not needed for FC4
uiWriteQuantity := 0, // not needed for FC4
awWriteData := [124(0)] // not needed for FC4
);

xTxTrigger : BOOL; (* Set this variable once for start a job.
This variable will be automaticly reset by the master
if the job is done.
*)

utResponse : typMbResponse; (* After the job is done you can find at this structure
the result.
*)

tonDelay : TON := (PT := T#20MS); // This is the silence time between two requests
myData : ARRAY [0..124] OF WORD;
strDescription : ARRAY [0..100] OF STRING;
i : INT;
END_VAR

//--- delay between two requests ----------------------
tonDelay( IN := (NOT tonDelay.Q) AND (NOT xTxTrigger));
xTxTrigger S= tonDelay.Q; // trigger the next request

//--- call cyclic the master --------------
mySerialMaster( I_Port := RS485, // my serial port
utQuery := utQuery,
xTrigger := xTxTrigger,
utResponse := utResponse
);

mySerialMaster.xConnect := GVL.b_xConnect;

IF mySerialMaster.oStatus.sDescription <> 'OK' THEN
strDescription := mySerialMaster.oStatus.sDescription;
i:=i+1;
END_IF
IF i = 100 THEN
i:=0;
END_IF

Ich schreibe die letzten 100 Fehler in die Variable strDescription
Ich erhalte folgende Fehler:
- Error while transmission -> transporlayer can not transmit
- Error time out

In einem anderen Beitrag habe ich gelesen, dass das zeitgleiche setzen der xConnect auf true Probleme machen soll.
Zum testen setze ich xConnect manuell über einen Button auf der Visualisierung.

Hat jemand eine Idee und könnte helfen?

Gruß
 
X12 gesteckt oder nicht? Abschlusswiderstände verschaltet oder nicht?

In meiner Anleitung von der 750-652 finde ich auf Seite 48 was ganz anderes, oder anders gesagt, ist es zu viel verlangt einen Screenshot vom relevanten Teil einzustellen (damit nicht jeder, der helfen will, zuerst die passende Version vom Handbuch laden muss) oder noch besser eine Skizze (gerne auch auf Papier gemalt und abfotografiert)? Alternativ wenigstens zu verlinken. Baudrate Werkseinstellung wäre laut Installationsanleitung Flair 19200 und nicht 9600. Modbus Handbuch habe ich auf die Schnelle nicht gefunden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Oberchefe,

danke für Deine schnelle Rückmeldung. Sorry, dass ich vergessen habe noch Infos hinzuzufügen.

Hier die Kabelbelegung (auch im Anhang - ich hoffe ich habe dies richtig verstanden/umgesetzt)
Brink Flair 400 Anschluss X15 (ohne Plus Platine)Wago 750-652 (Belegung im Anhang)
Pin 1 RS485 Ground3 bzw. 7
Pin 2 RS485 A6 gebrückt nach 5
Pin 3 RS485 B2 gebrückt nach 1
Abschlusswiderstand Wago 750-650 zw. 1 und 5
Brink X12 geschlossen
Brink X121 & 122 offen
Siehe Foto im Anhang

Die Kommunikationseinstellungen an der KWL sind wie folgt:
Bus-Verbingung: Modbus
Slave-Adresse: 20
Baudrate: 9600 (habe ich von 19200 heruntergesetzt)
Partität: keine (geändert von gerade)

Anleitung für die Brink Modbus Installation findest Du ebenfalls im Anhang.

...und schon mal vielen Dank für Deine Unterstützung.
 

Anhänge

  • 2022-10-22 10.40.34.jpg
    2022-10-22 10.40.34.jpg
    2,4 MB · Aufrufe: 27
  • 614882-C Flair Modbus Installationsanleitung Englisch.pdf
    1,5 MB · Aufrufe: 17
  • 2000-02000026000392d5000100b6-DE.jpg
    2000-02000026000392d5000100b6-DE.jpg
    29,7 KB · Aufrufe: 27
  • 750-652_Betriebsart_RS-485.pdf
    71,5 KB · Aufrufe: 19
Zuletzt bearbeitet:
Hallo,

danke für den Hinweis. Ich habe geklärt, ob die Brink KWL OK ist. Mit einem Modbus 2 USB Adapter und qModMaster lässt sind die KWL steuern.

Folgende Versionen der Bibliotheken nutze ich:
  • WagoSysModule_75x_65x Version 1.9.5.6
  • WagoTypesCom Version 1.6.2
  • WagoAppPlcModbus Version 1.1.3.5
Muss die WagoTypesCom im Paket WagoSysModule_75x_65x austauschen?

Gruß
 
Zuletzt bearbeitet:
Hallo,

ich habe die Bibliotheken wie folgt getauscht.
  • WagoTypesCom Version 1.6.2 getauscht gegen die Version 1.6.1.3
  • WagoSysModule_75x_65x Version 1.9.5.6 getauscht gegen die Version 1.9.5.2
leider ohne Erfolg.
Darum habe ich die Daten mal mitgeschnitten.

Die 750-652 sendet: DD 5F 7B FD DD 0C (keine Ahnung was das sein soll)

Mittschnitt des RS438 USB Adapters:
TX: 14 04 0F C2 00 01 91 E7​
RX: 14 04 02 04 92 37 9E​
HEX: 04 92 => DEC: 1170 wäre der gewünschte Wert.​
Hat jemand eine Idee, warum die 750-652 nicht den richtigen "Befehl" sendet?

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die 750-652 sendet: DD 5F 7B FD DD 0C (keine Ahnung was das sein soll)
woher weißt du, dass die Wago das sendet? Das wäre völlig unsinning


Jetzt habe ich nur nicht verstanden, was der USB-Adapter mitschneidet, die Kommunikation zwischen der Wago und dem Ding oder was anderes?

TX: 14 04 0F C2 00 01 91 E7
Slaveadresse 20, FunctionCode 4, Adresse 4034, Länge 1, sieht erst mal gut aus
RX: 14 04 02 04 92 37 9E
HEX: 04 92 => DEC: 1170 wäre der gewünschte Wert.
Antwort von Slaveadresse 20, FunctionCode 4, 2 Bytes Date, Wert 1170, sieht ebenfalls gut aus.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Idee des Mitschneidens mit dem USB Adapter kam von Wago. Ich habe einfach die A & B Leitungen zum USB Adapter weiter geführt und sehe einen Empfang am USB Adapter, wenn die Wago sendet. DD 5F 7B FD DD 0C sehe ich im Programm HTerm immer dann, wenn ich den xTrigger aufrufe. Oder messe ich mit dieser Methode dort Mist?
 
Also wenn du die 4034 lesen willst, warum hast du die dann nicht konfiguriert?

utQuery : typMbQuery := ( bUnitId := 20, // Slaveaddress
bFunctionCode := 16#04, // read input registers
IIdentifyObject := myBaseIdentification, // only needed for FC43
uiReadAddress := 0, // Startaddress
uiReadQuantity := 10, // Quantity of wanted registers
uiWriteAddress := 0, // not needed for FC4
uiWriteQuantity := 0, // not needed for FC4
awWriteData := [124(0)] // not needed for FC4

da hätte ich dann erwartet:
utQuery : typMbQuery := ( bUnitId := 20, // Slaveaddress
bFunctionCode := 16#04, // read input registers
IIdentifyObject := myBaseIdentification, // only needed for FC43
uiReadAddress := 4034, // Startaddress
uiReadQuantity := 1, // Quantity of wanted registers
uiWriteAddress := 0, // not needed for FC4
uiWriteQuantity := 0, // not needed for FC4
awWriteData := [124(0)] // not needed for FC4
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

so, läuft, nach dem Tausch der Bibliotheken deuten die hohen Werten DD 5F 7B FD DD 0C darauf hin, dass eine Vertauschung von A & B vorliegt.
A & B (was pos. und was neg. ist, ist wohl nicht genau definiert) an der Wago Klemme sind anscheinend anders als beim USB Adapter.
Vielen Dank noch mal für die Unterstützung und die Hinweise.

Allerding stellt sich gleich die nächste Frage. Die Rückwerte erhalte ich immer als Word (somit dezimal). Gibt es eine Möglichkeit diese als HEX Wert zu wandeln?
 
Ich erhalte die Seriennummer in 3 Registern zurück als folgende Werte

DEC HEX
utResponse.awData[0] 17169 -> 4311
utResponse.awData[1] 2081 -> 821
utResponse.awData[2] 17155 -> 4303

Die Hex Werte als String zusammengesetzt würde dann die richtige Ser. Nummer geben.

Den Wert 17169 habe ich wie folgt umgerechnet:

Byte_to_Hexstring(WORD_TO_BYTE(SHR(utResponse.awData[0],8)))
dann erhalte ich die 43
wie komme ich ans untere Byte?

oder gibt es eine andere Möglichkeit die Darstellung zu ändern?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Byte_to_Hexstring(WORD_TO_BYTE(SHR(utResponse.awData[0],8)))
dann erhalte ich die 43
wie komme ich ans untere Byte?
Überleg einmal warum Du da die SHR Funktion verwendest.

Zu der anderen Frage: Die hast Du falsch formuliert
Ich möchte wie Werte als String im Hex Format anzeigen, wie mache ich das?

Wenn Du das nur in der Oberfläche während Du Online bist anders dargestellt haben möchtest kann man unter Ansicht oder mit rechter maustaste die Darstellung ändern.

Was ich nicht ganz verstehe, kannst Du jetzt mit der Steuerung die Werte auslesen oder nicht? Da Du noch davon sprichst: DD 5F 7B FD DD 0C

Gruß
 
Danke.

mache jetzt die "Umrechnung" wie folgt:

utResponse.awData[0] = 17169
utResponse.awData[1] = 2081
utResponse.awData[2] = 17155

str_SerialNo := Concat6(Byte_to_Hexstring(WORD_TO_BYTE(SHR(utResponse.awData[0],8))),
Byte_to_Hexstring(WORD_TO_BYTE(utResponse.awData[0])),
WORD_TO_STRING(SHR(utResponse.awData[1],8)), // da Ergebnis 8 nicht 08 sein muss
Byte_to_Hexstring(WORD_TO_BYTE(utResponse.awData[1])),
Byte_to_Hexstring(WORD_TO_BYTE(SHR(utResponse.awData[2],8))),
Byte_to_Hexstring(WORD_TO_BYTE(utResponse.awData[2])));[/ICODE]

damit erhalte ich die richtige Seriennummer: 43118214303

die 11 und 03 aus Register 0 und 2 erhalte ich auch ohne AND 16#FF

oder mache ich einen Denkfehler?
 
Zurück
Oben