# Kanal Modbus RTU  Master-Slave eCockpit



## Serrk (10 Januar 2021)

Ich wünsche allen einen schönen Tag.
  Zum ersten Mal in meinem Leben habe ich PFR 200_2eth_rs_3g in meinen Händen.
Ich habe. Eingangsmodul (Slave) mit Adresse 1, Einstellungen 115200 8.1, Nr. Was gut auf den SPS-Master reagiert, habe ich in CodeSys programmiert. Jetzt versuche ich, die Slave-Register mit 200_2eth_rs_3g und eCockpit zu lesen.


PROGRAM ModBus_st
VAR
FbMV_110: FbMbMasterSerial;
afbFrequenzumrichter: ARRAY[0..49] OF FbMbMasterSerial;
xConnect, xIsConnected, xError, xTrigger: BOOL;
tTimeOut: TIME := T#2S;
utQuery: typMbQuery;
utResponse: typMbResponse;
xMessage: BOOL;
sMessage: STRING;
timBlink: ton;
END_VAR

-------------------------------------------------------------------------------





utQuery.bUnitId := 1;
utQuery.bFunctionCode := 3;
utQuery.uiReadAddress := 0;
utQuery.uiReadQuantity := 10;




FbMV_110(
xConnect := xConnect,
I_Port := COM1,
udiBaudrate := 115200,
usiDataBits := 8,
eParity := eTTYParity.None,
eStopBits := eTTYStopBits.One,
eHandshake := eTTYHandshake.None,
ePhysical := eTTYPhysicalLayer.RS485_HalfDuplex,
xIsConnected => xIsConnected,
xError => xError,
oStatus => ,
eFrameType := eMbFrameType.RTU,
tTimeOut := tTimeOut,
utQuery := utQuery,
xTrigger := xTrigger,
utResponse := utResponse);




timBlink(IN := NOT xTrigger, PT := T#500MS); // TON


IF timBlink.Q THEN
xTrigger :=TRUE;
END_IF



Infolgedessen nur Nullen.
Frage.
1 Gibt es ein funktionierendes Beispiel?  Master- Slave 
2 Gibt es schwerwiegende Fehler in meinem Code?


Danke an alle.Entschuldigung für mein Deutsch.


----------



## Mavorkit (11 Januar 2021)

Hi,

Der Modbus Master Baustein darf pro Schnittstelle nur ein einziges Mal verwendet werden. Die unterschiedlichen Geräte werden dann über die Anfrageliste (query) definiert und die Ergebnisse landen dann in der Response.

Ein Beispiel findest du in der Bibliothek bei dem master Baustein.

Gruß

Mavorkit

Gesendet von meinem SM-G950F mit Tapatalk


----------



## Serrk (11 Januar 2021)

Aber in meinem Code FbMV_110: FbMbMasterSerial; Wird verwendet, um mit nur einem Slave zu kommunizieren. Kann jemand überprüfen, ob dies bei mir einfach nicht funktioniert oder ob das Programm fehlerhaft ist?


----------



## Tobsucht (11 Januar 2021)

Hallo Serrk,

1 Gibt es ein funktionierendes Beispiel? Master- Slave
ja, schau mal im Bibliotheksverwalter. So gut wie jeder Master / Slave Funktionsbaustein hat im Reiter Dokumentation einen Beispielcode.

2 Gibt es schwerwiegende Fehler in meinem Code?
Das kannst Du ganz einfach prüfen indem Du dein Projekt einmal übersetzt. Der Compiler wird Dir dann alle syntaktischen Fehler melden.

Wenn Du einen PFC200 hast, soll sich dieser selbst abfragen? Der Modbus RTU Master fragt jetzt auf der X3 Schnittstelle einen Slave an.
Gibt es dort denn einen zweiten PFC? Ist denn dort der Slave überhaubt eingerichtet?


Grüße


----------



## Serrk (13 Januar 2021)

Der Compiler zeigt keine Fehler an.Der Code wird normal in die SPS geladen.Ich habe + (A) ModBus-Bus an Pin 3 X3 angeschlossen, verbunden - (B) ModBus-Bus an Pin 8 X3. 
Slave ist ein Eingangsmodul, konfiguriert 115200, 8, nicht.Ich habe es auf einer anderen SPS getestet. Das Lesen der Register durch die Funktionscodes 03 und 04 ist erfolgreich.Und von 750-8207 gibt es keine Lesung.Was mache ich falsch? 
In den Dokumenten der Beispielbibliothek für FbMbMasterSeria, Master-Slav, habe ich die Funktionscodes 03 und 04 nicht gefunden.


----------



## Tobsucht (13 Januar 2021)

Im Beispielcode werden zehn Register mit dem Funktionscode 4 gelesen.

Du kannst zusätzlich noch auf den Fehler schauen.
mySerialMaster.oStatus.ShowResult(
sDescreption => sMasterInfo );

Wenn die serielle Schnittstelle initialisiert werden konnte wird mySerialMaster.xIsConnected auf TRUE gesetzt.
Zum Senden einer Modbus Anfrage wird xTrigger gesetzt. Wenn xTrigger vom Funktionsbaustein auf FALSE gesetzt wurde kannst du den oStatus prüfen.


Grüße


----------



## Serrk (26 Januar 2021)

Dies ist die Portausgabe meines nicht funktionierenden Controllers.




Dies ist die Ausgabe des funktionierenden Controller-Ports.
Frage? Ist das ein Hardwarefehler? Oder können Sie auf WAGO-Controllern den Slave nicht direkt mit dem X3-Anschluss verbinden?


----------

