Wago /SPS über Modbus(TCP/IP) in FHEM steuern

Begonnen von lechez, 05 Mai 2013, 10:50:13

Vorheriges Thema - Nächstes Thema

@MosWare

Ich ignoriere Dich nicht.
Sorry, wenn ich was übersehen oder missverstanden habe.
Für Deine Antworten bin ich dankbar.
Habe es ausprobiert und keine Fehlermeldung mehr! Aber das Bit wird nicht gesetzt.

Kann leider Morgen erst weitertesten (habe Frühschicht)

Beste Grüße und vielen Dank
@MosWare



lechez

Hallo,

ich habe schon festgestellt, dass der erste Befehl verschluckt wird nach einem Reststart von Wago oder fhem.

Ich gebe zu das die Implementierung sehr quick and dirty ist.

Vielleicht komme ich ja irgendwann dazu es ordentlich zu machen.

Du kannst den Fehler einkreisen, indem du mit einen Modbus TCP/IP TOOL (Freeware oder 30 Tage Testversion einfach mal googeln) an die Adresse einen Schreibbefehl absetzt. Mit der Wago auf die Adressen schauen, ob diese gesetzt werden.
Wenn das schon nicht geht liegt es nicht an fhem.

Wenn das geht mal Wireshark auf das Protokoll schauen, ob fhem was raussendet.
So habe ich mich auch herangetastet.

Gruß

lechez

@MosWare

Hallo zusammen,

wie gesagt habe ich das Beispiel von bytebold getestet und keine Fehlermeldung mehr beim Speichern.
Das Bit wird aber nicht ins Merkerwort geschrieben. (12288 in fhem.cfg angeasst)
Habe dann einen Port-Sniffer (SmartSniff) gestartet und festgestellt, dass der Modbusport 502 von Fhem garnicht geöffnet wird.
99_modbus.pm und den MBclient.pm habe ich zuvor nach /opt/fhem/FHEM kopiert, die IPs angepasst und fhem neu gestartet.

Es scheint nur noch eine Kleinigkeit nicht zu stimmen. kann aber nicht sagen warum der Port nicht geöffnet wird.

Hat da vielleicht noch jemand eine Idee?
Mein Einsteigerwissen ist da völlig am Ende!

Grüße
@MosWare

@MosWare

Hallo lechez,

ups, hast ja zwischenzitlich geantwortet.
Auf die Wago kann ich ja mit CoDeSys zugreifen und mir den Merker anschauen.
Aber wie gesagt; der Port wird erst garnicht geöffnet.
Werde mal mit einem VC++ ModBusTestTool von Wago testen.

Gruß
@MosWare

bytebold

Ich habe zwischenzeitlich Probleme mit meiner 7270 Fritzbox gehabt, Fhem wurde stetig langsamer.
Nach Restart ging's eine zeitlang, aber die Bedienung wurde immer langsamer, Probleme gab's auch
mit eingehenden Telefongesprächen. Also......Umzug auf die Synology Diskstation 112+.....
und was soll ich sagen, das ist wie ein Unterschied zwischen Tag und Nacht, läuft bis jetzt super flüssig
und sauschnell. Mal schaun, wie das weiter geht.

Gruß, bytebold
fhem auf Synology DS112+
HM-Lan Konfigurationsadapter
2x Wago 750-881 Feldbuscontroller
Fernbedienung RC-19

leibi

Hallo,

ich habes es auch mal probiert, es kommt bei mir dieses im Logfile:
act_Garten_Steckdose41 return value: Too many arguments for main::write_modbus at (eval 32) line 1, near "0)"
Too many arguments for main::write_modbus at (eval 32) line 1, near "1)"

Was bedeutet da?
Wie kann ich die die ModBus-Funktionen (siehe MBclient z.b. write Single coil "funktion5")nutzen, wahrscheinlich in die 99 eintragen.

Währe nett, wenn mir jemand helfen könnte.

Gruß
Markus

bytebold

Hallo,

kannst Du bitte mal die Deklarationen für modbus in der fhem.cfg posten ?
Vielen Dank.

Gruß, bytebold
fhem auf Synology DS112+
HM-Lan Konfigurationsadapter
2x Wago 750-881 Feldbuscontroller
Fernbedienung RC-19

leibi

Hallo,

hier noch meine fehm.cfg

define Garten_Steckdose41 dummy
attr Garten_Steckdose41 fp_Grundriss 351,305,2,
attr Garten_Steckdose41 icon black_Steckdose.on
attr Garten_Steckdose41 room Garten
attr Garten_Steckdose41 setList On Off
attr Garten_Steckdose41 webCmd On:Offdefine act_Garten_Steckdose41 notify Garten_Steckdose41 { if (Value("Garten_Steckdose41") eq "Off") {write_modbus(0,0)} else {write_modbus(0,1)}}

Habe schon einiges probiert, es kommt aber, die obige Fehlermeldung.

Gruß
Markus

lechez

Hi leibi,

In den runden Klammern kommt als erstes die Modbusadresse. Ist es richtig das die Adresse 0 ist? Die Adresse sollte mit der von der Wago identisch sein.

Gruß
Lechez

bytebold

Hallo,

zum Testen würd ich Dir vorschlagen, folgende globale Variablen in der Wago anzulegen:

(* Modbus Adresse 12292 *)
Dummy4_0 AT %MX4.0: BOOL;
Dummy4_1 AT %MX4.1: BOOL;
Dummy4_2 AT %MX4.2: BOOL;
Dummy4_3 AT %MX4.3: BOOL;
Dummy4_4 AT %MX4.4: BOOL;
Dummy4_5 AT %MX4.5: BOOL;
Dummy4_6 AT %MX4.6: BOOL;
Dummy4_7 AT %MX4.7: BOOL;
Dummy4_8 AT %MX4.8: BOOL;


Dann schreibst Du den Wert mit:

define act_Garten_Steckdose41 notify Garten_Steckdose41 { if (Value("Garten_Steckdose41") eq "Off") {write_modbus(12292,0)} else {write_modbus(12292,1)}}


Gruß, bytebold
fhem auf Synology DS112+
HM-Lan Konfigurationsadapter
2x Wago 750-881 Feldbuscontroller
Fernbedienung RC-19

leibi

Hallo,

die Adresse 0 ist schon richtig,(ich verwende keine Wago, sondern eine B&R Sps).
Die Adressen sind von der SPS sowie von der Modbusfunktion(3,4,5,15,16,23) abhängig, ist auch bei Wago so.

Mein Problem ist ja die Fehlermeldung von fhem.

MFG
Marklus

bytebold

Hi,

in MBclient.pm wird die Routine

## Modbus function WRITE_SINGLE_REGISTER (0x06).
##   write_single_register(reg_addr, reg_value)
##   return 1 if write success
##          or undef if error


aufgerufen.

Du solltest mal prüfen, ob Du auf Adresse 0 mit FC6 schreiben kannst.

Gruß, bytebold
fhem auf Synology DS112+
HM-Lan Konfigurationsadapter
2x Wago 750-881 Feldbuscontroller
Fernbedienung RC-19

leibi

Hallo,

hab bei mir sogar alles frisch installiert(rasperry+fhem), wieder der gleiche Fehler, funktioniert bei mir nicht.
Mit dem Program Modbus-Poll, geht es.

MFG

lechez

Hallo,
überprüfe bitte in 99_Modbus.pm, ob die IP und Port gleich ist mit der in Mobus Poll?
Wie hast du die Register beschrieben 0x05, 0x06 etc...
Gruß
Lechez

leibi

Hallo,

egal was ich mache, ich bekomme immer folgende Meldung:
act_Garten_Steckdose41 return value: Too many arguments for main::write_modbus at (eval 16) line 1, near "0)"

Ich denke da fehlt mir was, in der Fhem installation.

Gruß
Markus