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

berhan

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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.
1657527591744.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

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

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

Grüße
 
Hallo,

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

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

Grüße
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.
 
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).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei dem beschriebenen Fehler klemmen gleich zwei Bibliotheken.
Die folgenden Bibliotheken mal um eine Version heruntersetzen:
- WagoTypesCom
- WagoSysModule75x-65x
Dann sollte es klappen.
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
hallo Freund wie geht es dir
Sehen Sie, ich lese ein RTU-Schneider-Messgerät, aber davon gibt es viele, und ich muss mehrere Abfragen durchführen, um sie alle zu lesen. Wie Sie wissen, beträgt das Maximum pro Abfrage 125 Wörter. Ich muss das über die Bibliothek machen, weil ich in der Lage sein muss, die Baudrate und die Laufwerks-ID über eine grafische Oberfläche zu definieren und mehrere Zähler gleichzeitig auszulesen. Ich weiß nicht, wie man diesen Aufruf bei mehreren Abfragen durchführt, und ich habe kein Beispiel gesehen, das erklärt, wie das geht. Wenn Sie es wissen, wäre ich Ihnen sehr dankbar.
 
Hi Duvan, if you are able to write in english, please do so.
About reading the data, you cannot read it simultaneously, either you have to queue your requests if you want to read everything or you can split up your query in different categories and then request them for example every minute.

Code:
// this is just a possible incomplete example, read the documentation for WagoAppPlcModbus
VAR
    myQuery1:    typMbQuery :=(
                    bUnitId := ???,
                    bFunctionCode := ???,
                    uiReadAddress := ???,
                    uiReadQuantity := ???);
    myQuery2:    typMbQuery :=(
                    bUnitId := ???,
                    bFunctionCode := ???,
                    uiReadAddress := ???,
                    uiReadQuantity := ???);
END_VAR

// ------------------------------------------------------
// in your "fbMbQueryRequest" (extended from WagoAppPlcModbus.FbDigitalTwinMbSlaveDevice)
VAR
    fQuery:    FbQuery(THIS^);
END_VAR

    fQuery.bUnitId            := myQuery1.bUnitId;
    fQuery.bFunctionCode    := myQuery1.bFunctionCode;
    // etc..., then send out the query with the following:
    protAttachMbQuery(fQuery);

Do you have some code ready to show us? Mine is a bit fragmented, because I create my own library.
 
1685076480766.png
1685076507115.png1685076532216.png
1685076616117.png
What I have to do is practically, if I want to read a slave with multiple queries. and also make multiple slaves with multiple queries. But nothing I've tried has helped me.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Duvan, if you are able to write in english, please do so.
About reading the data, you cannot read it simultaneously, either you have to queue your requests if you want to read everything or you can split up your query into different categories and then request them for example every minute.

Code:
// this is just a possible incomplete example, read the documentation for WagoAppPlcModbus
VAR
    myQuery1: typMbQuery :=(
                    bUnitId := ???,
                    bFunctionCode := ???,
                    uiReadAddress := ???,
                    uiReadQuantity := ???);
    myQuery2: typMbQuery :=(
                    bUnitId := ???,
                    bFunctionCode := ???,
                    uiReadAddress := ???,
                    uiReadQuantity := ???);
END_VAR

// ------------------------------------------------ ------
// in your "fbMbQueryRequest" (extended from WagoAppPlcModbus.FbDigitalTwinMbSlaveDevice)
VAR
    fQuery: FbQuery(THIS^);
END_VAR

    fQuery.bUnitId := myQuery1.bUnitId;
    fQuery.bFunctionCode := myQuery1.bFunctionCode;
    // etc..., then send out the query with the following:
    protAttachMbQuery(fQuery);

Do you have some code ready to show us? Mine is a bit fragmented, because I create my own library.
Have you maybe seen my answer? I am really struggling with no good news.
 
Zurück
Oben