WAGO 750-8212 COM Schnittstelle RTU Modbus

Kuzzam

Level-1
Beiträge
5
Reaktionspunkte
0
Hallo Alle!

Ich bin neu zum SPS und für ein Projekt muss ich eine Kommunikation zwischen PFC200 (750-8212) und einem Frequenzumrichter herstellen. Die Verbindung soll über die Kommunikationsschnittstelle X3 erfolgen, da das FU nur eine RS-485 Schnittstelle hat. So sieht mein Programm aus:

PROGRAM Modbus
VAR
masterModbus_1: WagoAppPlcModbus.FbMbMasterSerial;
utQuery: typMbQuery;
utResponse: typMbResponse;
T1: Ton;
myData : ARRAY [0..124] OF WORD;
xTxTrigger:Bool;
END_VAR
utQuery.bUnitID:= 5;
utQuery.uiReadAddress:= 1;
utQuery.uiReadQuantity:= 1;
utQuery.uiWriteAddress:= 0;
utQuery.uiWriteQuantity:= 0;
utQuery.bFunctionCode:= 3;



masterModbus_1 (
xConnect := TRUE,
udiBaudrate := 19200,
usiDataBits := 8,
eParity := WagoTypesCom.eTTYParity.None,
eStopBits := WagoTypesCom.eTTYStopBits.One,
eHandshake := WagoTypesCom.eTTYHandshake.None,
ePhysical := WagoTypesCom.eTTYPhysicalLayer.RS485_HalfDuplex,
eFrameType := eMbFrameType.RTU,
tTimeOut := T#200MS,
utQuery := utQuery,
utResponse := utResponse,
xTrigger := xTxTrigger

);

myData := utResponse.awData;

T1( IN := NOT xTxTrigger, PT := T#200MS);
IF T1.Q THEN
xTxTrigger:=TRUE;
END_IF

Der Aufruf erfolgt zyklisch (jedes 300ms). Der FU ist selber programmierbar und die Einstellungen stimmen miteinander überein. Ich habe eine Verbindungsbrücke mit passenden Widerständen aufgebaut. Ich habe versucht, das Programm zu exekutieren aber kam keine Antwort zu meiner Query. Ich habe den Spannungsunterschied zwischen A und B im Betrieb gemessen. Es lag bei 0.32 V ohne Änderung. Ich weiß nicht genau woran liegt's das Problem. Bin dankbar für Ihre Hilfe
 
Hi,
Das Problem hatte ich auch auf einmal hat bei mir die in meinem-Fall Pracht Lade Station werte gegeben ohne dass ich wusste warum aufeinmal.
Aber versuch du mal deinen tTimeOut größer zu machen.
Stimmt denn auch die Baudrate mit der des Slaves überein?
 
Was ratest du für ein tTimeOut Größe?
Ja alle Einstellungen stimmen überein(Ich probiere jetzt mit nur einem Slave(FU) und das Gerät ist manuell programmierbar)
 
Ich habe es mit 5000ms probiert aber es funktioniert nicht
 
Bevor Du noch jemanden exekutierst schau Dir das Programm noch mal am.

Scheinbar ist der Eingang I_Port nicht belegt.
I_Port := IoConfig_Globals.COM1,

Sonst kannst Du noch in den oStatus schauen was dort ausgegeben wird:
sInfo := masterModbus_1.oStatus.GetDescription();
 
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…