ich schicke per KNX Stromwerte in mA (DPT 7.012) zu IPS. In den IPS Profilen kann ich aber nur Ampere auswählen. Da ich aber Werte in keinen mA Bereich habe sehe ich nur Werte im Nachkommabereich. Wie kann ich mir ein Profil für mA erstellen? Wie kann ich generell Messwerte um Faktor 10, 100 oder 1000 mir in IPS anzeigen lassen?
Noch schöner wäre es diese Werte gleich in Watt oder Kilowatt umrechnen zu lassen;)
Dann baust Du unterhalb der Variable ein Script, welches mit GetValue und SetValue den Ursprungswert entsprechend umrechnet und in die neue Variable schreibt. Dann noch ein Event unter das Script, welches auf Variablenänderung der ursprünglichen Variable getriggert ist.
Alternativ kannst Du auch das Script weglassen und direkt ein Event erstellen. Hier kannst Du dann im Code-Fenster des Events die Berechnung und das Setzen des Variablenwertes vornehmen.
Hat dein Aktor nur Strommessung oder zusätzlich auch ein KO zur Wirkleistungsmessung?
Wenn du die Leistung aus Strom x 230V ausrechnest, dann ergibt das die Scheinleistung (korrekte Einheit wären VA). Dieser Wert ist für die meisten Verbraucher höher als die Wirkleistung, die dein E-Versorger am Zähler abrechnet. Beispiel Entstörkondensator, da fliesst zwar ein Strom (Scheinleistung > 0) aber Wirkleistung = 0 und damit kein „gezählter“ Verbrauch. Der Unterschied ist bei Geräten im Standby teilweise deutlich.
Nur bei ohm’schen Verbrauchern wie Glühlampen oder elektrischen Heizungen sind Strom und Spannung genau in Phase und Wirkleistung = Scheinleistung.
der Aktor hat ein zusätzliches KO für Wirkleistung, leider nur im KW Bereich der für kleine Verbraucher sicher nicht so genau ist und ebenfalls auf Watt umgerechnet werden müsste. Ob Wirk- oder Scheinleistung angezeigt wird ist erst mal sekundär. Wichtig ist mir nur dass ich es überhaupt hinbekomme mit IPS was umrechnen zu lassen. Mit Skripten kenne ich mich noch überhaupt nicht aus:(
Das Umrechen-Modul hört sich interessant an, leider verstehe ich nur Bahnhof was da drin steht.
Dachte das würde recht einfach über das Profil gehen.
Was müsste ich denn machen wenn ich z.B. folgenden mA Wert in Leistung umrechnen möchte:
EIB_Value(52226, 0);
Denke wenn ich erst mal einen Wert richtig umgerechnet bekomme dann ist der Rest nicht mehr so schwer. Einen KNX Dimmer in IPS einzubinden war auch nicht gerade selbsterklären, hat man dank des Forums aber auch hinbekommen:)
Dann fangen wir nochmal bei dem KO für die Strommessung an. Mit DPT 7.012 hatte ich auch Probleme. Bei meinem MDT-Aktor nutze ich dafür DPT 9.021, also einen Fließkommawert.
Ein Aktor schickt per Datentyp 7.007 die Betriebszeit eines Kanals in Stunden. Auf dem KNX Bus sind es in diesen Beispiel 145 Stunden. IPS zeigt aber 1,45 Stunden an, was ja nicht passt. Wenn ich im Profil Manager die Nachkommastellen weg nehme dann wird nur 1 Stunde angezeigt. Was mache ich da falsch?
Ich vermute, daß es das gleiche Problem ist wie oben: ein Vermischen von KNX Float und Integer-Datentypen. In dem Fall weicht der Zahlenwert um einige Zehnerpotenzen ab.
DPT7 ist ein 2-byte Integer ohne Vorzeichen (0-65535)
Gemäß EIB/KNX — IP-Symcon :: Automatisierungssoftware wäre das in IPS der Datentyp EIS 10. Du hast vermutlich EIS5 (Float) eingestellt, was hier nicht passt.
IPS liest anstelle der .knxproj Projektdatei immer noch das alte OPC-Exportformat (.esf), das mit EIS anstatt DPT arbeitet. Insoweit sind die EIS konsequent, weil alles auf alten Formaten basiert. Bei einer Modernisierung des KNX-Import könnte man das konsequent umstellen.
@paresy: Kurzfristig wäre mein Vorschlag, die DPT ergänzend in der Dropdownliste hinzuzufügen, also EIS wie bisher sowie zusätzlich die entsprechende DPT-Kategorie (wie DPT 9.x) als ergänzende Info. Das würde die manuelle Zuordnung vereinfachen.
Die diversen SELF und VALUE und TARGET und SENDER usw. waren mit bisher auch unklar, weil in der Hilfe zwar Syntaxbeispiele zu finden sind, aber keine Anwendungsbeispiele. Nun habe ich deine Frage zum Anlass genommen, mich endlich mal damit zu beschäftigen. Das Ergebnis scheint jedenfalls zu funktionieren.
~~
Also starten wir von einem KNX „Gerät“, das den Strom in mA liefert, im Screenshot ID27034.
Unterhalb dieses „Gerätes“ habe ich händisch eine weitere Variable angelegt vom Typ Float, die den Leistungswert aufnehmen soll, ID 13888.
Nun habe ich mit Objekt hinzufügen > Ereignis hinzufügen ein Ereignis erzeugt, das immer bei Aktualisierung des Stromwertes (ID 27034) aktiv wird.
Das Ereignis soll den Stromwert berechnen und die Variable setzen. Bisher hatte an der Stelle einfach mit den IDs gearbeitet, aber nun versuchen wir’s mit TARGET und VALUE.
TARGET hier die Variable, die wir ändern wollen und die im Dialogfeld als „Ziel“ ausgewählt wurde.
VALUE ist der auslösenden Wert, den wir auf Änderung abgeprüft hatten, also unser Strom in mA.
Der Code lautet also:
SetValue($_IPS[‚TARGET‘], $_IPS[‚VALUE‘]*230/1000);
Strom ist in mA, also umrechnen nach Ampere (geteilt durch 1000) und mit 230 multiplizieren, dann haben wir die Leistung. Die Einheit (W) beschriften kann man wie üblich per Profil.
Ich denke, es liegt nicht an deinen Grundkenntnissen, sondern die Beschreibung ist irreführend. Die Bezeichnung „Variable ändern“ und entsprechende Dialogbezeichnungen führen in die falsche Richtung. Wir wollen (jedenfalls für unsere Aufgabenstellung) nicht eine Variable ändern, sondern den Wert einer neuen zweiten Variablen aus dem Eingangswert berechnen.
Paresy schreibt in seinem Beitrag „… auf den neuen Wert ($_IPS[‚VALUE‘])“ und das finde ich eher verwirrend als hilfreich. VALUE ist doch der Wert der auslösenden Variable und nicht der zu berechnende Wert der neuen Variable? Oder ist das Beispiel von paresy so gedacht, daß man den neuen Wert wirklich auf dieselbe Variable zurückschreibt? :eek:
Na dann wäre die Beschreibung eben irreführend, denn VALUE liefert mir den auslösenden Wert, den ich als Berechnungsbasis brauche. Und nicht den neuen Wert, den ich mit dem Rechenergebnis beschrieben möchte.
Ach Michael … meine Firma macht seit 20 Jahren Software (Designautomation), die von Kunden wie Intel, Philips oder SpaceX verwendet wird. Etwas Ahnung zum Thema verständliche Softwaredoku darfst du mir also zutrauen.
Vielleicht sollte man „neu“ hier vermeiden, weil es offensichtlich missverständlich ist (neuer Wert auf Eingangsvariable vs. Wert der neuen Variable).