Da ich den Leveljet ProJET : Produkte zur Füllstandsmessung der Heizöltanks (momentan nur) im Einsatz habe, würde mich die Anbindung an IPS interessieren um damit den Füllstand in Litern zu loggen.
Zum Protokollieren wären für mich interessant, die Literausgaben.
Ich würde das dann gerne graphen mit WIIPS.
Leider habe ich keine Ahnung, wie ich das anstellen soll, bis auf die Einbindung der COM-Schnittstelle… aber wie auslesen und protokolieren?
Desweiteren würde ich gerne für die Ausgaben Distanz, Füllhöhe, Liter, Inhalt, Zustand der Ausgänge, Variablen anlegen, um damit dann weiter arbeiten zu können… Alarmmeldungen etc.
Einfach eine RegisterVariable Instanz an den Com hängen. Dann landen alle Inputs in einer Var. Dann in Bytes zerlegen und voila.
>> Such einfach mal nach „register variable“ im Forum, da gibts schon was dazu…
Zum Loggen:
Dafür brauchst Du doch einfach nur die „Ergebnisse“, welche ja sicherlich wieder in Variablen landen mit wiips aufzeichnen (Graph anlegen)
Das habe ich so gemacht…
Also den COM-Port angelegt (ist auch connected), den Splitter „Register Variable“ angelegt, eine Variable dafür und mit dem COM-Port verbunden.
Es kommt nix an der Variable an
Habe ich etwas vergessen?
Es sollte sekündlich eine Übertragung stattfinden und sich die Variable damit ändern, oder?!
Also wenn sekündlich der Ölstand wechseln würde, hättest Du nen satten Verbrauch :rolleyes:
Mal Spaß beiseite, kommt einfach nur nix in der Variable an oder hat sie einen Inhalt, der sich nicht ändert?
Ich gehe davon aus, dass die Einstellungen (19200,8,N,1) stimmen. Hast Du den COM-Port in der Instanz nach dem Anlegen geöffnet (grün). Schau bitte nochmal in der wiki nach den Einstellungen.
Stimmt alles, dann sieh mal mit dem Debugger auf dem Com und der RV nach, ob überhaupt etwas reinkommt.
Klappt das, stell den Com auf forward, damit alles erstmal weiter geleitet wird.
sollte alles von dir nach bestem wissen und gewissen richtig gemacht worden sein, dann fällt mir bzgl. dem pdf-manual folgendes auf:
a) wie wird der flow-control (hardware, software) gehändelt - das steht nicht im pdf -> testen oder experimentieren)
b) muss ggf. noch dtr oder rts gesetzt werden? (keine angaben dazu im pdf -> also erkundigen). ips hat befehle zum setzen des dtr (COMPort_SetDTR) oder rts (COMPort_SetRTS).
Also sekündlich ändert sich der Füllstand nicht, es findet laut Beschreibung aber jede Sekunde eine Übertragung statt.
Es kommt nur nichts an der Variable an …d.h. die ist „nackig“ …es gibt bisher einfach keinen Wert bzw. Eintrag.
Schnittstellenparameter sind wie vorgegeben eingestellt.
Mit der Flusskontrolle habe ich auch schon experimentiert und durch probiert…
COM steht auf forward…
Mit DTR und RTS habe ich noch nichts unternommen.
ich würde ersteimal Kommunikation über die COM SSt testen mit Hyperterminal. Wenn das geht, dann den nächsten Schritt mit der IPSymcon Software.
Ich benutze für die Zisterne einen Ultraschall-Entfernungsmesser und kann den auch über die COM SST und IPSymcon lesen. Schau mal bei www.icplan.de
Dann wurde ich dir raten die gleiche einstellung vom hyper uber zu nehmen in IPS und per register-variable (oder wie heisst das den wieder) mal das gleiche rein zu bekommen…
¨Wenn ich irgendwo jedesmal probleme gehabt habe in IT ist / sind es COM-probleme… also nicht gleich weich werden.
Trink ne kaffee und uberblicke es nochmal…
Ich habe ja schon alle Möglichkeiten an der COM von IPS ausprobiert.
Ich bekomme in der Variable zu REGISTER VARIABLE einfach nichts rein …keine 1, kein x oder o, oder sonst irgendein Zeichen oder Wert.
Die Schnittstelleneinstellungen (19200,8,N,1) passen.
Beim Hyperterminal habe ich einfach nur die Schnittstelle ausgewählt (COM4), die Parameter angepasst (19200,8,N,1) und auf anrufen geklickt, schon gings los.
Ich möchte dieses Thema wieder aufgreifen.
Nachdem ich das neu Liveupdate http://www.eyep.de/forum/showthread.php?t=2975 eingespielt habe, bekomme ich nun tatsächlich auch etwas an „Register Variable“ und am ComPort angezeigt.
Nur kann ich damit immer noch nichts anfangen.
Man sieht, im angehängten Screenshot des Debuggers, aber gut das wirklich Blöcke mit insgesamt 12 Bytes jede Sekunde neu empfangen werden.
Die angezeigten ASCII-Zeichen ergeben aber keinen Sinn, auch wenn ich diese binär umwandle und daraus einen Wert errechne.
Es handelt sich immer um die Zeichen x (ASCII 120), € (ASCII 128) und ø (ASCII 248).
Daraus ergibt sich kein passender Wert, wenn ich z.B. High u. Low-Byte der Literangabe (Byte 6/7) zusammen nehme in Binär umwandle und einen Dezimalwert errechne.
Ein aktuelles Beispiel:
Der aktuelle Literstand in meinem Heizöltanks liegt bei 4540 Liter.
Am COMport kommt als LowByte „€“ u. Highbyte „x“ an.
Nach ProJET : Produkte kann die Zuleitung vom US-Sensorkopf bis zum Gerät, auf 100m verlängert sein.
Bei der ser. Schnittstelle stellen 30m sicher auch kein Problem dar.
Bei mir beträgt die Länge:
Sensor <-> Anzeige ca. 10m u.
Anzeige <-> PC (RS232) ca. 15m
da der Server auch im Keller untergebracht ist.
Hat noch sonst noch niemand mit COMPORT und Auswertung der übertragenen Daten gearbeitet?
@hbraun:
Kommt darauf an, was Du für eine serielle Schnittstelle benutzt und mit welcher Geschwindigkeit. Bei 9600 sollten 25-30m kein Problem darstellen - entsprechende Leitungsqualität und -verlegung vorausgesetzt.
@nancilla
Die angezeigten Zeichen müssen erst in hex umgewandelt werden. Dann musst Du herausfinden, welcher hex-code zum trennen der einzelnen Datenblöcke benutzt wird. Denn im RegVar werden alle eingehenden Daten mit append einfach „gestapelt“. Wenn es keinen Trenner gibt, musst Du nur auf die Variable triggern und dann am besten noch kurz warten, damit alle Daten erstmal geschrieben werden können.
Die Funktion zum Umwandeln heist ord().
An dem unten stehenden kleinen script kann man die Vorgehensweise erkennen. Die Daten werden in eine Datei geschrieben
Da ich immer noch „PHP-bl*d“ bin, muss ich mal nachhaken…
Also müsste ich jetzt statt „log_var“ den Variablennamen eintragen, den ich für die Registervariable vergeben habe?
Und statt „logfilepath“ den Pfad u. Dateinamen zur Datei in der geschrieben werden soll?
Und wie Kann ich dann die hex-Werte wieder in lesbare Werte, also den ganzen Dezimalwert umwandeln?
Ich möchte die ausgegebenen Werte irgendwann über Torros WIIPS in einem Diagramm ansehen… das ist mein Ziel!