Klimaanlage über Modbus anbinden

Hallo Gemeinde

Da nun die Feiertage vor der Tür stehen, möchte ich versuchen meine neu eingebaute Duo-Split Klimaanlage von Mitsibishi Heavy mit IPS zu verbinden.

Die Verkabelung des Steuerungsbusses ist erledigt, und das Comptrol Interface von Stulz läuft. Über den Webserver des Moduls kann ich bereits alles steuern.
Das Comptrol unterstützt eine Steuerung per Modbus TCP womit eine Einbindung in IPS ja möglich sein müsste. Ich würde gerne die Solltemperatur für die Räume über die schon vorhandenen Raumthermostate (HM) an die Geräte senden, und diese per Wochenplan schalten.
Leider fehlt mich der Durchblick in Sachen Modbus… An diese Stelle benötige ich etwas Starthilfe.

Bisher habe ich schon den einen client-socket mit den Comptrol verbunden, sowie ein Modbus-Device für jeden Raum angelegt. Soweit scheint es auch zu laufen.
Nun stellt sich die Frage wie ich über diese Modbus-Devices die entsprechenden Kommandos an die Geräte sende.

Beim Comptrol war folgende Tabelle dabei:


MODBUS
Modbus ist ein Kommunikationsprotokoll. Es ist als Master/Slave-System aufgebaut, bei dem ein Master (GLT/SPS) mit mehreren Slaves (CompTrol Interface 4Web) verbunden werden kann.
Die von der CompTrol Interface 4Web unterstützte Betriebsart ist Modbus TCP, dieses läuft in einem LAN über den Port 502. Es werden 16-Bit Variablen (short, binary) übertragen.
Folgende Modbus-Funktionen werden von der CompTrol Interface 4Web unterstützt:
• 03 Read Holding Registers
• 06 Write Single Register
• 16 Write Multiple Registers
• 23 Read/Write Multiple Registers
Weitere Details zur Modbus-Spezifikation finden Sie unter www.modbus.org.
Achtung! Es sind immer folgende Mindestzeiten für das Polling einzuhalten: 1 Gerät = 4200ms, 2 Geräte = 4800 ms, 3 Geräte = 5400 ms, ab 4 = n*600 ms
6.1. Adressierung
6.1.1. Registerberechnung
Jedes Gerät / jeder Datenpunkt im Modbus-Protokoll muss über ein eindeutiges Register verfügen. Dazu zählen auch sämtliche Klimageräte an der CompTrol Interface 4Web. Sie können dieses Register mit unserem HTML-Tool zur Registerberechnung leicht bestimmen.
Sie finden das Tool auf der CD, die der CompTrol Interface 4Web beiliegt, oder im e-Stulz Bereich unter
www.stulz.de/e-stulz
Gehen Sie zur Adressberechnung wie folgt vor:
1. . Öffnen Sie das Tool mit einem Browser.
2. Geben Sie im Feld Bus an, an welchem der vier Fernbedienungsbus-Anschlüsse an der CompTrol Interface 4Web das Gerät angeschlossen ist. (0, 1, 2, 3)
3. Sehen Sie nach, welche Innengeräteadresse Ihr Gerät hat.
Sie finden diese am Drehschalter auf der Innengeräteplatine oder auf der Adapterplatine SC-BIKN-E.
4. . Sehen Sie in der Adress-Zuordnungstabelle nach, welcher Fernbedienungsbus-Adresse diese Innengeräteadresse entspricht. Sie finden die Tabelle unter „6.1.2. Adress-Zuordnungstabelle“ auf Seite 25 oder auf der CD, die der CompTrol Interface 4Web beiliegt.
5. Geben Sie im Feld Gerät die Fernbedienungsbus-Adresse an.
6. Geben Sie das anzusprechende Register (Funktion) an. Sie finden dieses unter „6.1.3. Datenpunktliste“ auf Seite 26 oder auf der CD, die der CompTrol Interface 4Web beiliegt.
7. . Klicken Sie auf Adresse berechnen.
Es wird jetzt die GLT-Adresse angezeigt, unter der Sie die Funktion über Modbus ansprechen können.


Evtl. Kann mir jemand etwas unter die Arme greifen, um das hinzubekommen.

Vielen Dank und frohe Ostern :smiley:

Oliver

Hier findest Du eigentlich alles, was Du brauchst:

Modbus RTU/TCP — IP-Symcon :: Automatisierungssoftware

Danke für den link :wink:

Das habe ich schon gefunden, hat mich aber ehrlichgesagt mehr verwirrt als das es geholfen hätte. :banghead:

Habe ClientSocket --> ModbusGateway --> ModbusDevice angelegt und konfiguriert. Was muss ich aber nun im Device konfigurieren . ??

In der Beschreibung steht:

Die von der CompTrol Interface 4Web unterstützte Betriebsart ist Modbus TCP, dieses läuft in einem LAN über den Port 502. Es werden 16-Bit Variablen (short, binary) übertragen.
Folgende Modbus-Funktionen werden von der CompTrol Interface 4Web unterstützt:
• 03 Read Holding Registers
• 06 Write Single Register
• 16 Write Multiple Registers
• 23 Read/Write Multiple Registers

als 16bit kann ich aber nur " Word" oder „SmallInt“ auswählen. :confused:

Mir fehlt an der stelle einfach etwas „Hintergrundwissen“ sorry

Danke

Oliver

Probiere folgendes: Im Device stellst Du 03 Read Holding Registers ein. Als Leseadresse eine aus der Tabelle oben. Also auf Leseadresse 2 müsste die Lüfterstufe kommen. Als Schreibadresse fang erstmal mit „Keine“ an, bist Du herausgefunden hast, was Du oben einstellen musst. SmallInt hört sich aber schon gut an.

Grüße,
Christoph

Danke für Deine Antwort.

habe das jetzt mal versucht, aber klappt nicht.
Das Problem ist wohl die Tatsache das ich 2 Innengeräte habe. Diese müssen Adressiert werden. Habe da mal bei Stulz nachgelesen, und das gefunden.:


Gehen Sie zur Adressberechnung wie folgt vor:
1. . Öffnen Sie das Tool mit einem Browser.
2. Geben Sie im Feld Bus an, an welchem der vier Fernbedienungsbus-Anschlüsse an der CompTrol Interface 4Web das Gerät angeschlossen ist. (0, 1, 2, 3)
3. Sehen Sie nach, welche Innengeräteadresse Ihr Gerät hat.
Sie finden diese am Drehschalter auf der Innengeräteplatine oder auf der Adapterplatine SC-BIKN-E.
4. . Sehen Sie in der Adress-Zuordnungstabelle nach, welcher Fernbedienungsbus-Adresse diese Innengeräteadresse entspricht. Sie finden die Tabelle unter „6.1.2. Adress-Zuordnungstabelle“ auf Seite 25 oder auf der CD, die der CompTrol Interface 4Web beiliegt.
5. Geben Sie im Feld Gerät die Fernbedienungsbus-Adresse an.
6. Geben Sie das anzusprechende Register (Funktion) an. Sie finden dieses unter „6.1.3. Datenpunktliste“ auf Seite 26 oder auf der CD, die der CompTrol Interface 4Web beiliegt.
7. . Klicken Sie auf Adresse berechnen.
Es wird jetzt die GLT-Adresse angezeigt, unter der Sie die Funktion über Modbus ansprechen können.


Mit dem HTML Tool kann ich die GLT-Adresse berechnen. Erhalte dann für das eine Innengerät / Lüfterstufe „32770“ . Wenn ich diese dann als Leseadresse eingebe kommt „-32768“ zurück . Ich glaube ich steh total auf dem Schlauch…:eek:
Bin halt was Modbus angeht völliger Neuling.

Die Geräte ID stellst Du im Modbus Gateway ein. Die, die Du am Gerät einstellst, stellst Du auch dort ein. Bei Leseadresse kommen die Register rein, die Du in der Tabelle in Deinem ersten Beitrag gepostet hast.

Das ist der Html code für die Adressberechnung.


<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><title>Adressen Berechnen</title>
<script type="text/javascript">
	function calc(){
		var slot = parseInt(document.getElementById("slot").value);
		var unit = parseInt(document.getElementById("unit").value);
		var register = parseInt(document.getElementById("register").value);
		
		var adr = slot<<14|(unit&0xff)<<6|register;
		document.getElementById("adr").value=adr;
	}
</script>
</head>
<body>
	
	Bus:<input value="0" id="slot" type="text"><br>
	Gerät:<input value="1" id="unit" type="text"><br>
	Register:<input value="1" id="register" type="text"><br>
	<input onclick="calc()" value="Adresse berechnen" type="button"><br>
	GLT-Adresse:<input value="65" id="adr" type="text"><br>
	

</body></html>


Vielen Dank an die Hilfestellungen.
Trotzdem bekomme ich das einfach nicht zum laufen. Habe jetzt alle Möglichen Einstellungen versucht.
Was ich vor allem nicht verstehe ist das mit den GTL-Adressen welche ich erzeugen soll.
Ich vermute das Interface kann die Innengeräte nicht ansprechen da diese (2) an je einem X/Y Bus angeschlossen sind (BUS1 und 2 oder 0/1 --> hier ist die Dokumentation des Interfaces leider inkonsistent. Auf dem Interface sind die Eingänge mit 1-4 beschriftet , in der Doku steht 0,1,2,3 .

evtl. hat jemand noch eine Idee dazu .

Danke

Oliver

Wenn Du schon was als Antwort bekommst bist Du auf dem richtigen Weg.

Die 4 Adern sind der Fernbedienungsbus auf dem Du drauf geklemmt hast? Da hast Du Bedenken?

Muß irgendwie richtig sein, sonst würdest Du keine Daten bekommen

Ich würde mal fortlaufende Modbus Instanzen erstellen und schauen was da kommt, besonders bei Adressen wo 0 oder 1 kommen könnte
Gruß Helmut
EDit
Wenn Du Deinen Wert als Integerwert mit Vorzeichen siehst ist 32768 = 1000000000000000 und daraus könnte man Lüfterstufe 0 interpretieren

Hallo Helmut

Danke für deine Antwort

Ich habe folgende Situation:

Das Comptrol (Master) Interface hat insgesamt 4 Fernbedienungsbus Eingange welche mit 1-4 beschriftet sind ( In der Doku steht 0-3).
An den Eingängen 1 und 2 ist je ein Innengerät sowie eine Kabelfernbedienung(Slave) (über SC-BIKN-E Modul) angeschlossen. Die Kabelfernbedienung ist laut Installationsanleitung nötig.
Über den Webserver des Interface kann ich auch alle bedienen, somit scheint die Grundfunktionalität gegeben zu sein.

In IPS habe ich ein Modbus Device über Modbus Gateway sowie ClientSocket angelegt (wird automatisch angelegt). CLientsocket mit IP Adresse sowie Port 502 eingestell --> Verbing steht
im Modbus Gateway ID des Innengerätes ( 0) eingestellt.
Im Device folgendes:

Als Wert bekomme ich immer 32768 zurück .

Im Debug des ClientSockets kommen auch Daten an :

Es gibt eine Tabelle für die Zuordnung der Geräteadressen zu den Fernsteurungsbusadressen. Aber irgendwie ist die nicht besonders einleuchtend (oder ist bin zu dämlich :confused:)

Vielen Dank für die Hilfe

Oliver

Wenn Du bitte mal die Hexwerte zeigst, sieht normal aus.

Würde mich mal reizen die anderen Adressen zu sehen

Ich würde mal testweise eine 1 schreiben, stört es? ist die Anlage aus oder an?

Habe die Hexwerte mal als Txt angehängt
dump.txt (103 KB)

Die Anlage ist an, die Innengeräte sind aus. Kann ich aber anschalten stört nicht .
Wie würdest Du eine 1 schreiben ?

So :

ModBus_WriteRegisterInteger(10270 ,1);

Wenn ich das in das Register „0“ schreibe müsste sich das Innengerät einschalten !?!

Müsste ich ja im Device noch ein Schreibregister einstellen.

Oliver

Nee, Du müßtest ModBus_WriteRegisterWord schreiben, wenn in der Instanz Word steht

Erstelle auch mal die restlichen Adressen, nur um zu sehe was da kommt

So habe mal die restlichen Garäte angelegt.

das Ergebnis ist aber immer das Gleiche :banghead:

Wenn ich nun eine 1 auf das Register 0 schreibe schaltet sich das Innengerät tatsächlich an, allerdings reagiert immer das Gerät mit ID „1“, egal welche ID ich im Gateway einstelle.
Zumindest mal ein kleiner Fortschritt :wink:

Danke schon mal

Oliver

Das schreiben auf die anderen Register klappt auch.
Nur halt eben auf das Gerät 1 !

Oliver

Das muß was mit diesen FB Anschlüssen zu tun haben, ev ist diese HTML Geschichte dafür wichtig um die richtige ADresse zu finden.
Da kann ich nicht so helfen, schätze ich… aber wenn Du schon mal was probieren kannst, das hilft :wink:

Ich glaube auch das es mit den FB Anschlüssen zusammenhängt. Da immer nur das Gerät an Anschluss 1 angesprochen wird.

Frage mich ob man die beiden Innengeräte auch über einen FB Anschluss betreiben kann. Die Doku schweigt dazu leider.

Vielen Dank auf jeden fall für deine Zeit und Hilfe

Oliver

Also ich hätte es mal testweise installiert, das ging ohne Probleme . Lüftersteuerung, Modus und und und. Bin im Moment noch im Urlaub , müsste mal chauen wie ich das gemacht habe.

Hallo Uwe

Hast Du 1 und mehrere Innengeräte angeschlossen ??

LG

Oliver

P.S: schönen Urlaub noch :wink:

Hatte zum test nur 1 Innengerät angeschlossen. Ist aber normalerweise kein Problem mit mehrere Inneneinheiten. Glaube aber Max 4 Stck. Ich glaube da gab es mal ein Berechnungsprogramm von Stulz um die Modbusadressen auszulesen.

PS. Ich rede hier über die CompTrol® Interface 4Web