Modbus mit CCU2 via TCL
Moderator: Co-Administratoren
Modbus mit CCU2 via TCL
Hallo an die Experten,
ich suche schon lange eine Möglichkeit via Modbus auf meine SPS zu schreiben...
Mit einigen Hochsprachen bekomme ich dies hin (Bsp.: PHP)
Nun würde ich gerne einige Stati via Modbus zu der SPS senden.
Nach einigen Recherchen bin ich auf TCL und TCP Sendekommandos gekommen.
Ich möchte ja nicht das ganze Modbusprotokoll haben, sondern nur einen Sendstring einer speziellen Funktion:
"Write Single oder Multiple Holding Register"
Dazu müsste man nur den exakten Telegrammaufbau, ca. 10-20 Bytes wissen, zusammenschrauben und via Port 502 an die SPS senden.
Nun die Profis:
Kann mann das mit der CCU2 machen ?
Wenn ich kann, helfe ich gerne...
Ich scheitere z.Zt. daran, mir mal mein Protokoll meines PC zur SPS mitzuschneiden wenn ich mit dem Testprogramm MODPOLL erfolgreich sende...
Habt ihr da eine Idee ?
LG
Shrimps
ich suche schon lange eine Möglichkeit via Modbus auf meine SPS zu schreiben...
Mit einigen Hochsprachen bekomme ich dies hin (Bsp.: PHP)
Nun würde ich gerne einige Stati via Modbus zu der SPS senden.
Nach einigen Recherchen bin ich auf TCL und TCP Sendekommandos gekommen.
Ich möchte ja nicht das ganze Modbusprotokoll haben, sondern nur einen Sendstring einer speziellen Funktion:
"Write Single oder Multiple Holding Register"
Dazu müsste man nur den exakten Telegrammaufbau, ca. 10-20 Bytes wissen, zusammenschrauben und via Port 502 an die SPS senden.
Nun die Profis:
Kann mann das mit der CCU2 machen ?
Wenn ich kann, helfe ich gerne...
Ich scheitere z.Zt. daran, mir mal mein Protokoll meines PC zur SPS mitzuschneiden wenn ich mit dem Testprogramm MODPOLL erfolgreich sende...
Habt ihr da eine Idee ?
LG
Shrimps
Re: Modbus mit CCU2 via TCL
ich kann dir leider nicht sehr viel weiterhelfen bzgl der Möglichkeiten auf der CCU,
aber der Aufbau einer Modbus-Nachricht ist hier ganz gut beschrieben:
http://www.simplymodbus.ca/TCP.htm
damit solltest du rausbekommen, welche "Bytes" die Modbus-Relevanten
Teile der TCP/IP Telegramme sind.
Falls du planen solltest IOBroker einzusetzen, da gibt es einen
fertigen, funktionsfähigen Modbus Adapter für ModbusTCP
aber der Aufbau einer Modbus-Nachricht ist hier ganz gut beschrieben:
http://www.simplymodbus.ca/TCP.htm
damit solltest du rausbekommen, welche "Bytes" die Modbus-Relevanten
Teile der TCP/IP Telegramme sind.
Falls du planen solltest IOBroker einzusetzen, da gibt es einen
fertigen, funktionsfähigen Modbus Adapter für ModbusTCP
Re: Modbus mit CCU2 via TCL
Hallo tschombe,
besten Dank für den Link.
Habe zwar etliche andere wie die "original.org" gelesen, aber da sthet doch einiges vereinfachter drin...
Nun muss ich nur noch bei mir unter win7 lernen wie ich so eine Kommunikation hinbekomme...
Dann noch lernen wie auf der CCU2 sich das gleiche abspielt, wie ich z.Bsp. an eine systemvariable, welche ich selber gesetzt habe, drankomme...
Wird alles wohl etwas dauern, aber es wird ja kälter draussen
Bis demnächst
Shrimps
besten Dank für den Link.
Habe zwar etliche andere wie die "original.org" gelesen, aber da sthet doch einiges vereinfachter drin...
Nun muss ich nur noch bei mir unter win7 lernen wie ich so eine Kommunikation hinbekomme...
Dann noch lernen wie auf der CCU2 sich das gleiche abspielt, wie ich z.Bsp. an eine systemvariable, welche ich selber gesetzt habe, drankomme...
Wird alles wohl etwas dauern, aber es wird ja kälter draussen
Bis demnächst
Shrimps
Re: Modbus mit CCU2 via TCL
Hallo an weitere SPS-Modbusfreunde...
Ich versuche mich gerade in TCL einzuarbeiten...
Ich habe bereits diverse Testscripte um das Protokoll rudimentär nachzubilden...
Ich teste das z.Zt. von meinem Win7 zu einer echten SPS.
Wenn ich es dort geschafft habe, einen Wert in die SPS zu schreiben will ich es auf der CCU2 versuchen.
Nun meine Bitte/Frage:
Wer hat Lust sich hier zu beteiligen ?
Ich weiss z.bsp. nicht, wie die CCU2 in Bezug auf Systemvaribalen etc tickt.
Nun ja, es geht langsam weiter...
Ich halte euch am laufenden.
LG
Shrimps
Ich versuche mich gerade in TCL einzuarbeiten...
Ich habe bereits diverse Testscripte um das Protokoll rudimentär nachzubilden...
Ich teste das z.Zt. von meinem Win7 zu einer echten SPS.
Wenn ich es dort geschafft habe, einen Wert in die SPS zu schreiben will ich es auf der CCU2 versuchen.
Nun meine Bitte/Frage:
Wer hat Lust sich hier zu beteiligen ?
Ich weiss z.bsp. nicht, wie die CCU2 in Bezug auf Systemvaribalen etc tickt.
Nun ja, es geht langsam weiter...
Ich halte euch am laufenden.
LG
Shrimps
Re: Modbus mit CCU2 via TCL
Hurra,
seit gerade habe ich einen eigenen Wert erfolgreich in meinen BC9000 in das MW0 geschrieben !!!
Dann den Wert in der SPS geändert und zurückgelesen, ebenfalls korrekt.
Benutzt habe ich die Modbusfunktionen 16 / 03.
Alles in reinem TCL.
Morgen / nachher
werde ich mal versuchen, ob ich auf die CCU2 komme und dort das script laufen lassen kann...
Spannung steigt.
Falls jemand mitliest
LG Shrimps
seit gerade habe ich einen eigenen Wert erfolgreich in meinen BC9000 in das MW0 geschrieben !!!
Dann den Wert in der SPS geändert und zurückgelesen, ebenfalls korrekt.
Benutzt habe ich die Modbusfunktionen 16 / 03.
Alles in reinem TCL.
Morgen / nachher
werde ich mal versuchen, ob ich auf die CCU2 komme und dort das script laufen lassen kann...
Spannung steigt.
Falls jemand mitliest
LG Shrimps
Re: Modbus mit CCU2 via TCL
Ojee,
Nun benötige ich die Hilfe der TCL-Profis...
Unter win7 läuft mein script einwandfrei und unter tclsh auf der ccu2 bekomme ich folgenden fehler:
# /bin/tclsh read_write_v1.tcl
extra characters after close-brace
while compiling
"lassign [::modbus::cmd${fun}_pack {*"
(compiling body of proc "::modbus::cmd", line 4)
invoked from within
"::modbus::cmd 16 0x00 0x4000 32767"
etc.
Codeausschnitt:
Wo muss ggf. welches Space hin oder liege ich ganz falsch ?
Danke für die Mühen.
PS: Ich hoffe, das ich hier im richtigen Forenbereich bin ?
Nun benötige ich die Hilfe der TCL-Profis...
Unter win7 läuft mein script einwandfrei und unter tclsh auf der ccu2 bekomme ich folgenden fehler:
# /bin/tclsh read_write_v1.tcl
extra characters after close-brace
while compiling
"lassign [::modbus::cmd${fun}_pack {*"
(compiling body of proc "::modbus::cmd", line 4)
invoked from within
"::modbus::cmd 16 0x00 0x4000 32767"
etc.
Codeausschnitt:
Code: Alles auswählen
lassign [::modbus::cmd${fun}_pack {*}$args] reqCmd rspLen
Danke für die Mühen.
PS: Ich hoffe, das ich hier im richtigen Forenbereich bin ?
Re: Modbus mit CCU2 via TCL
Hallöchen
Kein TCL Profi hier ?
Muss an Syntax liegen...
Hoffnungsvoll wartend
Shrimps
Kein TCL Profi hier ?
Muss an Syntax liegen...
Hoffnungsvoll wartend
Shrimps
-
- Beiträge: 494
- Registriert: 29.04.2014, 18:38
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 9 Mal
Re: Modbus mit CCU2 via TCL
Hallo
alle Angaben ohne Gewähr da ich kein Profi bin.
Ich würde mal behaupt lassign gib es in dieser TCL Version nicht.
alle Angaben ohne Gewähr da ich kein Profi bin.
Ich würde mal behaupt lassign gib es in dieser TCL Version nicht.
Code: Alles auswählen
# uname -a
Linux homematic-bulli 3.4.11.ccu2 #1 PREEMPT Fri Oct 16 10:43:35 CEST 2015 armv5tejl GNU/Linux
# /bin/tclsh
% lassign
invalid command name "lassign"
% foreach
wrong # args: should be "foreach varList list ?varList list ...? command"
% foreach {a b c} {1 2 3} {break}
% ^C
#
Modbus mit CCU2 via TCL
Hmm
Kann leider nicht sein...
Wenn ich diverse Spaces einfüge macht der Compiler weiter jedoch stimmen dann die Ausdrücke nicht mehr !?
Kann leider nicht sein...
Wenn ich diverse Spaces einfüge macht der Compiler weiter jedoch stimmen dann die Ausdrücke nicht mehr !?
Zuletzt geändert von shrimps am 13.12.2015, 20:19, insgesamt 1-mal geändert.