# e!Cockpit Modbus Master RTU mit 750-652 funktioniert nicht.



## berhan (7 Juli 2022)

Ich möchte mit einer 750-8100 mit 750-652 über Modbus RTU eine Verbindung zu einer Pichler LG350 KWL herstellen. Leider bringe ich keine Verbindung zustande und aus der 750-652 kommt keine Spannung (mit Scope gemessen) raus. Habe die Verkabelung für RS485 gemäß Handbuch verwendet, jedoch auch schon A mit B vertauscht, mit und ohne Abschlusswiderstand (R 120). Die Schnittstellen der LG350 haben haben PullUp bzw. PullDown Widerstände verbaut (ca. 4 und 1 Volt), die Schnittstellen der 750-652 dürften Potentialfrei (Tristate) sein. Wenn ich die 750-652 als DMX-Schnittstellenkarte verwende, dann funktioniert sie ganz normal.

Als Code habe ich den Beispielcode aus dem Handbuch für FbMbMasterSerial verwendet.

`PROGRAM ModbusSerialMaster
VAR
    mySerialMaster  : FbMbMasterSerial := ( xConnect    := TRUE,
                                            udiBaudrate := 19200,
                                            usiDataBits := 8,
                                            eParity     := WagoTypesCom.eTTYParity.Even,
                                            eStopBits   := WagoTypesCom.eTTYStopBits.One,
                                            eHandshake  := WagoTypesCom.eTTYHandshake.None,
                                            ePhysical   := WagoTypesCom.eTTYPhysicalLayer.RS485_HalfDuplex,
                                            eFrameType  := eMbFrameType.RTU,
                                            tTimeOut    := T#51MS
                                          );
           

    //--- 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
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      := IoConfig_Globals.COM_485_1,        // my serial port
                utQuery     := utQuery,
                xTrigger    := xTxTrigger,
                utResponse  := utResponse
              );
//-----------------------------------------`

Leider kommt aus der Karte nix raus, auch wenn ich den Slave abhänge. Die Status Leds A und E leuchten und C (Rx) reagiert kurzfristig am Eingang wenn ich ein High anlege. XIsConnected ist beim Debuggen True und xError springt zwischen True und False hin und her. Als sDescription (oStatus) bekomme ich zwei Fehler "Error while transmission -> transportlayer cannot transmit" und "Error time out". Letzterer ist klar, wenn nix gesendet wird, kann der Slave auch nicht antworten.

Im IO-Check passen die Einstellungen auch (RS-485 halbduplex, 19200/8/gerade/1 mit kontinuierlichem Senden und beim Empfangen deaktiviert, 
Prozessdatenlänge 24 Byte). Die Version der 750-652 sind SW 01.02.25(06) / HW 01. S1 steht auf "08" der Rest (Ein- und Ausgang) auf 0. Die Firmware sowie die Library sind in der letzten Version in Verwendung.

Jetzt spiele ich mich schon ein paar Tage und komme leider nicht weiter, ich habe sogar schon auf meine zweite Karte (DMX) gewechselt, mit dem gleichen Ergebnis.

Vielleich hat jemand von euch ein paar Tipps für mich, ich komme leider nicht weiter.

LG Hannes


----------



## bbm1995 (11 Juli 2022)

Setze bitte mal den tTimeOut von FbMbMasterSerial auf 250ms oder höher anstatt 51ms und probier es nochmals aus.

Versuch auch bitte mal für die xConnect eine eigene Variable zu nehmen, bei der du es von Hand ein und ausschalten kannst.
Ich habe ein Verbindungsproblem seit einer grösseren Firmware- und Bibliotheksaktualisierung und konnte es nur beheben wenn xConnect nachträglich in der Steuerung aktiviert wurde.


----------



## Tobsucht (11 Juli 2022)

Hallo,

Prüfe bitte mal die Bibliotheksversionen wie in diesem Thread:





						Wetterstation Eltako MS an das Ecockpit anbinden.
					

Super, Danke Dir mal 👍 😉  Ich habe momentan nur einen 880er und eine RS 652er. Ich sehe mir das nochmal genauer an. Danke Dir für die schnelle Antwort 👍👍 Lg Reinhard




					www.sps-forum.de
				




Der Fehler "Error while transmission -> transportlayer cannot transmit" spricht sehr stark für die Bibliotheken.

Grüße


----------



## bbm1995 (11 Juli 2022)

Tobsucht schrieb:


> Hallo,
> 
> Prüfe bitte mal die Bibliotheksversionen wie in diesem Thread:
> 
> ...


Mindestens seit WagoAppPlcModbus 1.1.3.4 hatte ich mein oben genanntes Problem mit der "xConnect".
Zusätzlich dazu muss ich die Werte aus "awData" anders verwerten als früher, mit Bit auslesen aus dem Array für Coils und Discrete Inputs (awData[0].1 etc.) (Vielleicht auch nicht, es war lange her seit ich wieder an der selben Programmierung arbeiten musste und durch die gesammelte Erfahrung ist die lausige erste Programmierung auch gesäubert).

Bei der Version 1.1.2.21 war das nicht so.
Die Umstellung war ein bisschen mühsam, aber es funktioniert wieder.


----------



## berhan (11 Juli 2022)

Danke bbm1995 und Tobsucht, tTimeout hatte ich eh schon auf 1000 ms gesetzt. Ich werde die Lösung mit dem "xConnect" am Abend Mal versuchen. Hinsichtlich der WagoAppPlcModbus 1.1.3.4  habe ich gestern eh schon einen downgrade mittels "Platzhalter" auf 1.1.3.0 versucht, leider mit selben Ergebnis. War auch mein Gedanke, dass da vielleicht ein Fehler vorhanden ist. Die WagoTypesCom werde ich mir auch noch zu Gemüte führen, wobei ich die gestern auch schon raus geschmissen hatte und über WagoAppPlcModbus 1.1.3.0 nochmals installiert habe (da wird sie mittels Platzhalter fixiert, die Version habe ich leider nicht geprüft).


----------



## Kastele (11 Juli 2022)

Bei dem beschriebenen Fehler klemmen gleich zwei Bibliotheken. 
Die folgenden Bibliotheken mal um eine Version heruntersetzen:
- WagoTypesCom
- WagoSysModule75x-65x
Dann sollte es klappen.


----------



## berhan (11 Juli 2022)

Juhu, es läuft. Ich habe so wie bbm1995 beschrieben den xConnect verzögert gestartet und somit läuft es. Die WagoSysModule_75x_65x (Version 1.9.5.5) und die WagoTypesCom (Version 1.6.2.0) habe ich jetzt nicht ausgetauscht.


----------

