Hallo, Ich habe mir aus einigen uCs ein auf RS485 basierendes Sensornetz gebastelt. Ein ebenfalls vernetzer PC soll nun diese Sensoren abfragen. Um das Problem Multimaster zu umgehen, möchte ich ausschließlich den PC als Master einsetzen. Die Frage ist nun wie: Gehen wir z. B. von einem Sensor aus der nur zwei Zustände kennt. Wechselt der Zustand nun schneller als der PC pollt, dann würde ein zustandswechsel verloren gehen. Gibt es für dieses Problem eine Lösung? (Mal abgesehen vom aktiven benachrichtigen des Masters?)
Der Mülleimer ist offen. Gibt es eine Möglichkeit ihn zu schließen? (mal abgesehen davon, den Deckel zuzuklappen?)
Mike schrieb: > Gibt es für dieses Problem eine Lösung? (Mal abgesehen vom aktiven > benachrichtigen des Masters?) Jeder Sensor erhöht bei Zustandswechsel seinen internen Zähler und sendet Zählerstand mit. Master merkt sich Sensorzähler, wenn Sensor eine Meldung überspringt, wird diese von Master extra angefördert.
Mike schrieb: > Wechselt der Zustand nun schneller als der PC pollt, dann würde ein > zustandswechsel verloren gehen. > > Gibt es für dieses Problem eine Lösung? Ein Fifo am Sensor. Das funktioniert natürlich auch nur, wenn der PC im Mittel schnell genug ist um alle Sensoren zu bedienen. Die Länge des Fifos (bei seriellen Schnittstellen sind z.B. 3..6Bytes üblich) richtet sich danach wie schnell die Werte anfallen und wie lange der PC sich nicht um das Abholen kümmert.
Die Frage ist doch, ob es überhaupt sinnvoll ist, Sensoren mit einem Takt zu pollen, der viel zu langsam für mögliche Ereignisse auf der Sensorseite ist. Wer pollt, muss damit leben, dass er nur die Zustände im Zeitraster des Poll-Zyklus erfassen kann! Man könnte einen Zwischenspeicher im Sensor haben, der dann bei jeder Abfrage alle seit der letzten Abfrage gesammelten Zustandswechsel ausgibt. Aber - wie willst du das auf PC-Seite in den zeitlichen Ablauf der Meldungen von allen anderen Sensoren einfügen? - Da wird wahrscheinlich nur Unsinn bei herauskommen. Die einzige sinnvolle Überlegung wäre: Ist es bei einem Sensor wichtig, auch kurze Ausnahmezustände zu erfassen, sollte er bei einer Abfrage nicht den aktuellen, sondern den seit der letzten Abfrage aufgetretenen Ausnahmezustand melden. - Das muss dem Sensor einprogrammiert werden. - Und dem Auswerte-Programm im PC "bewusst" sein.
Mike schrieb: > Gehen wir z. B. von einem Sensor aus der nur zwei Zustände kennt. > Wechselt der Zustand nun schneller als der PC pollt, dann würde ein > zustandswechsel verloren gehen. > > Gibt es für dieses Problem eine Lösung? (Mal abgesehen vom aktiven > benachrichtigen des Masters?) Lass den Sensor Integralwerte an den Master übertragen. Dann schadet es nichts, wenn man eine Zustandsänderung nicht mitbekommt. Beim Bankkonto weiss man auch immer, wieviel Geld drauf ist, auch wenn man nicht jeden einzelnen Kontoauszug mitplottet.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.