Zitat von Uwe!
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
In der Tiefe: Validierungskonzept
Einklappen
X
-
offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
Enertex Produkte kaufen
-
Zitat von anlo007 Beitrag anzeigenMakki, zieh mal aufs Land, bei den dortigen Internet-Verhältnissen bist du am Ende froh, wenn die Uhr auf eine Minute genau geht..........
Aber das ist ein anderes Thema...
Kommentar
-
Zitat von anlo007 Beitrag anzeigenMan kann ja auch als letztes einen Temperaturwert abfragen .....
Von dem unwahrscheinlichen Fall, dass es zum Abfragezeitpunkt gerade 0,00° hat mal abgesehen, aber das wäre auch lösbar.....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!
Kommentar
-
Zitat von enertegus Beitrag anzeigenWarum? Wenn ich Reads auf ne GA mache, dann weiss ich doch, das diese z.B. in 30 Sekunden alle da sind.
Ich hatte z. B. lange ein Problem mit dem InfoTerminalTouch. Das ließt zu beginn ja auch alle so definierten GA erst mal ein um einen aktuellen Stand zu haben. Bei den Ventilstellungen haben regelmäßig Werte gefehlt. Lösugn war dann letztlich die Geschwindigkeit zu drosseln, weil der Heizungsaktor nciht schnell genug genatwortet hat.
Gut, die grundsätzliche Abfragegeschwindigkeit kann ich natürlich im EibStudio auch definieren, aber es gibt eben erst mal keinerlei Garantie, das auf ein Read auch ein Answer-Telegramm folgt.....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!
Kommentar
-
Zitat von Uwe! Beitrag anzeigenwobei auch eine perfekte RTC im EibPC nur eines der vielen Probleme beim Startup lösen würde.
Zitat von enertegus Beitrag anzeigenDas Problem mit den Uhrneustart stellt sich für 99% der Anwender nicht
Schade...
Zitat von salixer Beitrag anzeigenNe perfekte RTC gibt's nicht. Die laufen alle mehr oder weniger krumAber das bringt alles nichts: Der EibPC hat keine RTC und braucht eben beim Start eine Internetverbindung zum Uhrenabgleich oder ein KNX-Gerät zum Abfragen.
Zitat von Uwe! Beitrag anzeigenfehlt uns vielleicht noch so was wie "answer(GA)" mit dem man abfragen kann, ob zu einer bestimmten GA seit dem letzten read() ein Antworttelegramm eingetroffen ist?
Zitat von Uwe! Beitrag anzeigenEben! Drum meinte ich auch, dass sich die Diskussion darüber nicht lohnt. Denn selbt wenn er eine perfekte hätte, würde das da eigentliche Problem nicht lösen.
Sind alle Deine Uhren (auch die am Arm oder in der Tasche) entweder mit dem Internet verbunden oder GPS/DCF-synchronisiert? Super, 100 Punkte. Aber viele Menschen haben noch ganz "normale" Quarz- oder gar mechanische Uhren am Handgelenk, und die müssen auch gelegentlich korrigiert werden. Das deshalb jemand diese Uhren für überflüssig und nutzlos hält und nur deshalb auf sie verzichten will ist mir noch nicht zu Ohren gekommen.
Zitat von enertegus Beitrag anzeigenWarum? Wenn ich Reads auf ne GA mache, dann weiss ich doch, das diese z.B. in 30 Sekunden alle da sind. (plus minus 3 Sekunden) und kann mich danach richten...
Zitat von salixer Beitrag anzeigenAlles ab ISDN reicht völlig aus um über NTP auf 50 ms genau zu synchronisieren. Falls du natürlich kein Internet für NTP hast, dann wirst du mit einer RTC allein auch nicht glücklich werden. Die Genauigkeit der üblichen Uhrenquarze, die auf Mainboards verwendet werden ist da einfach jenseits von gut und böse. Da hilft dann nur Synchronisation über DCF oder GPS.
Aber das ist ein anderes Thema...
Klar ist eine automatische Korrektur eine Erleichterung - aber deshalb verteufeln wir ja wohl nicht alle Uhren ohne eine solche?
Zitat von Uwe! Beitrag anzeigenJa? Woher?
Ich hatte z. B. lange ein Problem mit dem InfoTerminalTouch. Das ließt zu beginn ja auch alle so definierten GA erst mal ein um einen aktuellen Stand zu haben. Bei den Ventilstellungen haben regelmäßig Werte gefehlt. Lösugn war dann letztlich die Geschwindigkeit zu drosseln, weil der Heizungsaktor nciht schnell genug genatwortet hat.
Gut, die grundsätzliche Abfragegeschwindigkeit kann ich natürlich im EibStudio auch definieren, aber es gibt eben erst mal keinerlei Garantie, das auf ein Read auch ein Answer-Telegramm folgt.
Auf jeden Fall flexibler als nur warten. Klar, egal wie kompliziert wir jetzt auch denken, es wird immer ein Szenario geben, das auch durch die komplexeste Lösung nicht abgedeckt wird, aber deswegen gleich nur die primitivste und eingeschränkteste Lösung favorisieren?Tessi
Kommentar
-
Zitat von Tessi Beitrag anzeigenUmkehrschluß: Wer keinen hat oder zumindest dem EPC keinen geben kann oder will sollte das Gerät gar nicht erst verwenden?
Zitat von Tessi Beitrag anzeigenIm Prinzip ja, aber auch hier kannst Du ja ein eigenes Flag anlegen, beim Start auf 0 setzen und beim Empfang der GA auf 1 setzen.
Und es belint halt das Problem mit de "Vorbelegung". Einfach auf 0 setzen passt halt oft nicht! Was machst Du, wenn Du den Zustand eines Schaltaktors abfragen willst? Da kannst Du dann anfangen ein Flag auf "2" zu setzen und das Ergebnis der GA über convert() dann mit dem Flag vergleichen. Weil weder das setzen des Flags auf 0 noch auf 1 zu eindeutigen Ergebnissen führt. Es muss ja imnmer was sein, was nciht als echtes Ergebnsi zurück kommen kann!
Zitat von Tessi Beitrag anzeigenWelches? Das die Zeit etwas driftet und Du alle paar Wochen vielleich mal nachstellen mußt?
Zitat von Tessi Beitrag anzeigenSind alle Deine Uhren (auch die am Arm oder in der Tasche) entweder mit dem Internet verbunden oder GPS/DCF-synchronisiert? Super, 100 Punkte.
Zitat von Tessi Beitrag anzeigenRichtig, ist auch meine Erfahrung, siehe oben. Und das Problem löst kein schnödes Warten, da ist mehr gefordert. Daher wohl auch die Anfragen nach einer Möglichkeit, dies von einer logischen Bedingung abhängig zu machen - die dann ja auch eine Wartezeit sein könnte - oder eben auch etwas anderes.....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!
Kommentar
-
Wow, hat sich ja einiges getan seit gestern Abend.
Mal sehen ob ich das jetzt alles auf die Reihe bekomme. Die Diskussion ist ein wenig konfus geworden.
Ich frag mich:
Was muss beim Systemstart gemacht werden? Wofür ist er da?
Beim Systemstart muss ich das Schaltbild der Anlage einlesen, ein wenig die Visu aufbereiten und ein paar (oder ein paar mehr) grundlegende Stati setzen.
Genau dafür ist der Systemstart da, nicht mehr, aber auch nicht weniger.
Zitat von bmxWarum wollt ihr nicht systemstart() nutzen? ...
Das führt mich zu der Frage, ob es nicht sinnvoll ist eine Funktion valid( GA ) zu erstellen die dann EIN zurückgibt, sobald diese GA erstmalig vom Bus geliefert wurde. Natürlich müßte das Validierungsschema erweitert werden, das der Code der im then { ... } endif steht immer ausgeführt wird.
Das Validierungsschema zu ändern finde ich eine schlechte Idee. Warum auch. Es ist genial und verhält sich wie der BUS.
Ist wie mit den "hörenden" GAs. Dauert etwas bis man es verstanden hat, aber dann passt´s.
Wenn es geändert werden würde, muss ich meine Eventgesteuerte Denke komplett umstellen.
Ich will keine SPS haben.
Kätzerisch könnte ich jetzt sagen: Wer das verhalten einer SPS will, der soll sich eine kaufen.
(Ist natürlich nicht ganz ernst gemeint).
Zitat von Uwefehlt uns vielleicht noch so was wie "answer(GA)" mit dem man abfragen kann, ob zu einer bestimmten GA seit dem letzten read() ein Antworttelegramm eingetroffen ist?
if event() geht auch.
Zitat von enertegusWas mir nicht gefällt, ist der eigene Bereich. Das gibt wieder Fragen...
Ich fände besser, alles per Funktion gemacht wird:
Daher mal noch ein Vorschlag: Will man unbedingt eine eigene []-Sektion, reicht es aus
Per Funktion finde ich zu kompliziert.
Wie oben geschrieben, der Bereich ist nur dazu da generelle Stati zu setzen und GAs zu lesen.
[HIGHLIGHT=EPC]
if startup() then {
read1
read2
read3 } endif
if startup() and GA=EIN then...
[/HIGHLIGHT]
Das ist Handling irgendwie auch nicht so viel besser wie mit systemstart().
Die Erklärung ist auch nicht sonderlich elegant.
Am Anfang wird nur alles mit startup() verarbeitet bis die Zeit vorbei ist...?
Eine eigene Sektion mit Maximallaufzeit und Endebedingung wäre das Optimum, das gerne auf Etaben realisiert werden darf.
In etwas so
[HIGHLIGHT=EPC]
[STARTUP=50000u64]
if startup {
read1
read2... } endif
...
if event(GA1) Or event(GA2) OR... event(GA15) then {
icount=icount+1 }endif
if icount=15 then startup=AUS endif
[EIBPC]
...
[/HIGHLIGHT]
Erklärung ist ganz einfach.
Beim Reboot wird zunächst STARTUP verarbeitet. Nach 5 Minuten oder wenn startup=AUS ist wird [EIBPC] verarbeitet.
[STARTUP] kann dann für den rest des Jahres ignoriert werden.Gruß
Volker
Wer will schon Homematic?
Kommentar
-
Zitat von SnowMaKeR Beitrag anzeigenBeim Reboot wird zunächst STARTUP verarbeitet. Nach 5 Minuten oder wenn startup=AUS ist wird [EIBPC] verarbeitet.
nächste Stufe (...wünsch Dir was...): es gibt eine Funktion init(GA), die intern erst ein read(GA) auslöst und sobald eine Antwort (oder "normales" Telegramm) auf diese GA kommt auf 1 springt. Dann wäre Dein Beispiel noch einfacher:
[HIGHLIGHT=EPC]
[STARTUP=50000u64]
if (init(GA1) + init(GA2) + ......+ init(GA15))==15 then startup=AUS endif
[EIBPC]
...
[/HIGHLIGHT]
noch mal zumEine eigene Funktion ist natürlich elegant, muss aber nicht sein. if event() geht auch.
Für das Thema Systemstart sollte es aber eigentlich egal sein, warum was auf der GA geschickt wird, da geb ich Dir schon recht.
/Leicht OT/: Wäre es evtl. generell sinnvoll ein answer(GA) zu haben? Könnte man damit prüfen, ob bestimmte Komponenten noch reagieren? Auf ein read(GA) sollte ja immer nur ein bekanntes, definiertes Gerät antworten. Wenn also auf ein Read() ein Answer() kommt, weiß ich dass diese Gerät noch "lebt". Braucht man so was???....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!
Kommentar
-
Zitat von enertegus Beitrag anzeigenDaher mal noch ein Vorschlag: Will man unbedingt eine eigene []-Sektion, reicht es aus
[ReadStartup]
GA1
GA2
zu definieren und der EibPC führt diese Reads aus, wartet eine parametrierbare Zeit aufs Eintreffen und legt dann las.
Danach sieht man auf Debug-Seite Scan-Fehler (im HS-Sprech, beim EibPC eher im Log) und weiss warum die Logik nicht so anlief wie man dachte.. Und das - im HS-sprech - auch noch 10 Minten früher
Zitat von anlo007 Beitrag anzeigenMakki, zieh mal aufs Land, bei den dortigen Internet-Verhältnissen bist du am Ende froh, wenn die Uhr auf eine Minute genau geht..........(für Münchner wenigstens..)
Ich hatte da bestimmt schon 1-2x darüber referiert aber gerne nochmal, diesmal vielleicht weniger technisch:
Gegeben:
- eine RTC mit Batterie (sonst Problem nach Power-cycle)
- ein ntpd der mal ein paar Tage/Stunden an pool.ntp.org war
Was passiert:
- die RTC geht per se eher nach dem Mars, ist so, eine einstellige handvoll Sekunden/Tag sind normal, dem ist auch mit vertretbarem Aufwand HW-seitig nicht beizukommen.
Die Abweichung des Quarzes ist individuell, gegeben, aber normalerweise "stabil" und innerhalb gewisser Zeitspannen deterministisch.
- der ntpd macht nun folgendes: er "lernt" ständig die tageslaune der RTC und baut dynamisch eine sog. "drift" ein, mit der er einfach forthin die RTC geradezieht. Die Timer der xhundert MHz-CPU ist nämlich umso präziser..
d.h.: einmal "gelernt und in sync", sofern nicht wochenlang ausgeschaltet, kann der ntpd auch die besch*** RTC ggfs. ohne Verbindung Wochen oder sogar Monatelang auf wenige ms "in der Spur" halten. Weil er seinen Pappenheimer nunmal kennt..
Außerdem kommt es dort auch nicht auf 5 Minuten an.
MakkiEIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
-> Bitte KEINE PNs!
Kommentar
-
Zitat von makki Beitrag anzeigen- der ntpd macht nun folgendes: er "lernt" ständig die tageslaune der RTC und baut dynamisch eine sog. "drift" ein, mit der er einfach forthin die RTC geradezieht. Die Timer der xhundert MHz-CPU ist nämlich umso präziser..
Dass der "drift" die Gangungenauigkeit der Systemzeit speichert stimmt natürlich.
Zitat von makki Beitrag anzeigend.h.: einmal "gelernt und in sync", sofern nicht wochenlang ausgeschaltet, kann der ntpd auch die besch*** RTC ggfs. ohne Verbindung Wochen oder sogar Monatelang auf wenige ms "in der Spur" halten. Weil er seinen Pappenheimer nunmal kennt..
Die billigste Möglichkeit für einen brauchbare "Unruh" im Computer ist wohl ein Ofenquarz mit per ntp generiertem drift. Man kann sich natürlich auch eine Cäsium-Frequenznormale hinstellen, dann braucht man sich keine Gedanken mehr zu machen
Kommentar
-
Zitat von makki Beitrag anzeigenNein. Nein. Nein. Ich wohne aufm Land(für Münchner wenigstens..)
Makki
An manchen Tagen braucht mein Internet bis zu 2 Minuten, um hier diese Seite aufzubauen. (Deshalb bin ich auch nur wärend der Woche hier im Forum unterwegs!)
Zitat von makki Beitrag anzeigenIch glaube nicht das z.B. die Loganalyse auf zwei Geräten mit deftig & unnötig abweichenden Uhrzeiten auf dem Land lustiger als in der Stadt ist
Makki
Zitat von makki Beitrag anzeigen
Gegeben:
- eine RTC mit Batterie (sonst Problem nach Power-cycle)
Makki
Aber dadurch werden alle Befehle. die z.B. mit !sun verbunden sind auch Nachmittags ausgeführt, da die Zeit mit 00.00 startet.Der schöne Niederrhein läßt Grüssen
Andreas
Alter Hof mit neuer Technik
Kommentar
-
Zitat von anlo007 Beitrag anzeigenHier ist dein Fehlschluß: Der EibPC "vergißt" jegliche Zeiteinstellung, wenn das Programm neu übertragen wird. Sonst hätte ich ja kein Problem, wenn er nur etwas falsch gehen würde.
EDIT: Ungetestet, IIRC:
[highlight=epc]
[EibPC]
if systemstart() then {
read ("Zeit-0/1/1");
gettime("Zeit-0/1/1")
} endif
[/highlight]
Funktioniert so nicht. Stattdessen müsste es so lauten:
[highlight=epc]
[EibPC]
if systemstart() then read ("Zeit-0/1/1") endif
if after(systemstart(),10000u64) then gettime("Zeit-0/1/1") endif
[/highlight]
Kommentar
-
Mein Internet funktionierte auch schon mal etwas besser, da hab ich mich nicht um die Zeit kümmern müssen. Wird auch hoffendlich bald besser, da ich gerade den Anbieter wechsel, die 2 Jahre Vertragslaufzeit ist gerade abgelaufen.
Als ich jetzt die Probleme bekam, hab ich die Abfragezeilen aus dem Handbuch kopiert und frage zur Zeit die Uhrzeit aus dem wiregate ab. Ohne Telegrammraten-Begrenzung wurde dies dann 4-5 mal übertragen; mit Begrenzung nur noch 1-2 mal. Das funktioniert jetzt. Nur oft werden schon andere Befehle ausgeführt, bevor die Uhrzeit angekommen ist, deshalb der Wunsch nach der Verzögerung des Starts der Logikverknüpfungen.Der schöne Niederrhein läßt Grüssen
Andreas
Alter Hof mit neuer Technik
Kommentar
-
Zitat von anlo007 Beitrag anzeigenAls ich jetzt die Probleme bekam, hab ich die Abfragezeilen aus dem Handbuch kopiert und frage zur Zeit die Uhrzeit aus dem wiregate ab.
Ich bin kein Freund des periodischen Uhrzeit setzens. Dabei treten "Zeitsprünge" auf, d.h. es ist möglich das Uhrzeiten an einem Tag garnicht oder aber auch doppelt vorkommen. Nicht gerade optimal, wenn man Ereignisse an bestimmte Uhrzeiten bindet.
Kommentar
-
Völlig richtig, Uhrzeit "setzen" ist immer suboptimal..
@anlo: Beinahe wollte ich jetzt schreiben: Trag einfach das WireGate als NTP-Server ein, aber das (NTP-Server konfigurieren) kann man ja AFAIR nicht
Jetzt hätten wir einen Grund, warum man das können sollte
Früher, mit Dialup und Minutenticker und so, hat man das ja nicht anders gemacht: einen oder zwei lokale NTP (kann ja auch der eigene Rechner sein, der regelmässig an ist, wenn der EibPC neu gestartet wird, ntpd gibts auch für Windows - meinberg.de)
MakkiEIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
-> Bitte KEINE PNs!
Kommentar
Kommentar