Wago 750-315/300-000 als Modbus Slave an 750-8101

Sebi87

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

ich habe einen 750-315/300-000 Koppler per Modbus an einen 750-8101 gehängt. Zur Kommunikation nutze ich die WagoAppPlcModbus und aus dieser den FbMbMasterSerial.
Das funktioniert schonmal insofern, dass ich entweder mit FC4 Register aus dem 315er lesen kann und mit FC16 Register schreiben. Wenn ich aber FC23 nutzen will um beides zu machen, streikt das ganze.
Ich hänge mal einen Screenshot von meinem Gebastel an.
Hat jemand sowas schonmal gemacht ?
 

Anhänge

  • Screenshot_Modbus.jpg
    Screenshot_Modbus.jpg
    180,8 KB · Aufrufe: 34
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Tobsucht,

Das hat mir der Telefonsupport von Wago auch schon erzählt, aaaaaber ...

https://www.wago.com/de/io-systeme/feldbuskoppler-modbus/p/750-315_300-000

In dem Handbuch das man dort runterladen kann, steht aber in der Tabelle auf Seite 94 dass der Koppler FC23 kann ... ab Seite 104 steht auch der Request beschrieben ...

Wago ist hier im Forum ja auch vertreten, vielleicht kann sich da mal jemand äusern wieso das im Handbuch steht wenn der Koppler es angeblich gar nicht kann. Oder kann er es eben doch ...

Andere Frage: Hat mir dann jemand ein Beispiel, wie ich den abwechselnd lesend und schreibend anspreche ? Ich habe das nach dem Telefonat mit Wago versucht aber bekomm es nicht auf die Reihe.
 

Anhänge

  • Seite_94.JPG
    Seite_94.JPG
    171,5 KB · Aufrufe: 20
Zuletzt bearbeitet:
Das im Handbuch beschriebene Protokoll ist auch nicht Modbus RTU.
Fragst Du jetzt auch warum der Koppler keine Ethernet Schnittstelle hat?
 
Nein das frage ich nicht, das ist mir schon klar.

Aber ich frage mich wieso über der Tabelle drüber steht "... Auflistung der IN DEM FELDBUSKOPPLER REALISIERTEN Modbus Funktionen" wenn er das angeblich nicht kann. Und dann frage ich nochmal, wieso stehen in Handbuch das ZU DIESEM ARTIKEL gehört Sachen die er angeblich nicht kann ... das macht doch keinen Sinn ....

Edit: Wenn es nicht RTU ist, was dann ? TCP oder UDP ja wohl nicht. Ich habs auf der Seite mal gelb markiert.
 

Anhänge

  • Seite_94_2.JPG
    Seite_94_2.JPG
    134,8 KB · Aufrufe: 10
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Dann scroll doch mal weiter runter zur Beschreibung der Funktionscodes.
Dort wird das Modbus TCP /Modbus UDP Protokoll beschrieben.

Scheinbar wurde die Dokumentation von einem Ethernet Koppler kopiert.
 
Großes Kino ... naja wie auch immer.

Hast du eine Idee wie ich das dann hinbekomme dass ich lesen und schreiben kann ? Also irgendwie FC4 und FC16 abwechselnd ...
Oder gibt es einen RTU Koppler, der FC23 kann ? Dem Handbuch kann man da ja scheinbar nicht trauen ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Daran ist generell mal nichts falsch ... ich hab nur keine Ahnung wie ich das löse. Ich hab schon probiert, den Modbus Mater einmal mit FC4 und einmal mit FC16 aufzurufen, aber das haut irgendwie auch nicht hin. Daher war ja die Frage ob mir jemand sagen kann wie ich das löse. Dem Wago Support habe ich mal gemailt, aber da kam nur zurück dass das mit FC23 nicht geht. Irgendwie waren die früher mit mehr Begeisterung dabei ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So, nun habe ich mich zwischenzeitlich selbst noch weiter nach einer Lösung umgeschaut und habe diesen Beitrag hier gefunden:

Wago "Modbus TCP"-Kommunikation mit 750-8100 (Master) und 852 (Slave) unter e!Cockpit

Der Vorschlag von Thruser lässt sich auf meine Situation Adaptieren.

Sieht dann so aus:

PROGRAM Modbus_ST
VAR_INPUT
Jobliste: ARRAY [0..1] OF typMbQuery := [
( //JOB 0, Eingänge lesen (Registerzugriff, inklusive digitale Eingänge)
bUnitId:= 2,
bFunctionCode:= 4,
uiReadAddress:= 0,
uiReadQuantity:= 13,
uiWriteAddress:= 0,
uiWriteQuantity:= 1,
awWriteData:= [125(0)]
),
( //JOB 1, Ausgänge schreiben (Registerzugriff)
bUnitId:= 2,
bFunctionCode:= 16,
uiReadAddress:= 0,
uiReadQuantity:= 0,
uiWriteAddress:= 0,
uiWriteQuantity:= 1,
awWriteData:= [125(0)]
)];
END_VAR
VAR
iJobCounter:INT:=0;
xTrigger:BOOL:=TRUE;
FB_F_Trig:F_Trig;

Responseliste:ARRAY [0..1] OF typMbResponse;

FB_ModbusMaster:FbMbMasterSerial;
END_VAR

//Modbus Master Aufrufen
FB_ModbusMaster (xConnect:=TRUE,
I_Port := COM1,
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#2S,
utQuery:=Jobliste[iJobCounter],
xTrigger:=xTrigger,
utResponse:=Responseliste[iJobCounter]);

//Auf Jobende warten
FB_F_Trig (clk:=xTrigger);

//Jobende erfolgt, nächsten Job starten
IF FB_F_Trig.Q THEN
xTrigger :=TRUE;
iJobCounter := (iJobCounter+1) MOD 2;
END_IF

Modbus_Eingangsarray:=Responseliste[0].awData;
Jobliste[1].awWriteData:=Modbus_Ausgangsarray;


GVL:

VAR_GLOBAL

Modbus_Ausgangsarray:ARRAY [0..124] OF WORD;
Modbus_Eingangsarray:ARRAY[0..124]OF WORD;

END_VAR
 
Zurück
Oben