es geht um probleme bei mehreren 1-wire sensoren an einem bus:
mit der Arduino 1-Wire library (kann man auf der arduino seite downloaden) kann man
den bus nach sensoren 'absuchen'.
wie das mit .NET funktioniert kann ich leider nicht sagen, aber scheinbar gibt es viel mehr bibliotheken für c (wird halt länger unterstützt).
dabei werden alle sensoren entsprechend ihrer seriennummer(aufsteigend) gefunden.
das stellt leider ein problem dar, denn 'entsprechend ihrer seriennummer' hat nichts mit der tatsächlichen reihenfolge der anschlüsse auf dem bus zu tun.
beispiel:
3 heizungspuffer, ein bus mit 9 sensoren.
reihenfolge der anschlüsse: P1Oben, P2Oben, P3Oben,
P1Mitte, P2Mitte, P3Mitte,
P1Unten, P2Unten, P3Unten
reihenfolge der sensoren-seriennummern enstprechend der anschlüsse:
3, 2, 5,
4, 6, 9,
7, 8, 1
erkannt werden die sensoren aber eigentlich so 1,2,3,4,5,6,7,8,9.
besser wäre ein funktion, die sensoren entsprechend ihres anschlusses auf dem bus findet, aber das funktioniert leider garnicht.
warum? auf der folgenden info seite sieht man, das es unterschiedliche möglichkeiten gibt, einen bus aufzubauen ...
http://shop.wiregate.de/1-wire-bus
wie soll man das also lösen?
zum beispiel so:
bei der montage schliesst man die sensoren der reihe nach an und speichert die seriennummer - dann hat man die richtige reihenfolge mit der passenden seriennummer.
dafür braucht man natürlich eine funktion, die den bus absucht, während man alles montiert - nicht weiter schwierig, wenn man sich die beispiele anschaut.
alternativ ermittelt man vorher die seriennummern und beschriftet die sensoren - gernerell eine gute idee.
dann kann man sich einen anschluss plan erstellen und den vor oder während der montage ausfüllen - auch hilfreich, wenn nach 2 jahren ein sensor gewechselt werden muss und man nicht gleich weiss wo der denn nun verbaut ist.
will man nun die sensoren abfragen, spricht man jeden sensor (entsprechende funktion aufrufen) via seriennummer gezielt an.
abgefragt wird z.B. nach folgender reihenfolge 3,2,5,4,5,9,7,8,1.
das alles führt aber zu weiteren problemen:
fällt ein sensor aus reicht es leider nicht, einfach den sensor durch einen neuen zu ersetzen, man muss ebenfalls die änderung dem programm 'mitteilen'.
beispiel:
oben war die situation folgende
reihenfolge der sensor-seriennummer: 3, 2, 5,
4, 6, 9,
7, 8, 1
erkannt werden die sensoren aber 1,2,3,4,5,6,7,8,9.
tauscht man nun den sensor mit der nummer 5 gegen einen mit seriennummer 34 ändert sich das beispiel folgendermassen
reihenfolge der sensor-seriennummer enstprechend der anschlüsse:
3, 2, 34,
4, 6, 9,
7, 8, 1
erkannt werden die sensoren aber 1,2,3,4,6,7,8,9,34
die seriennummer ist weltweit einmalig für jeden sensor!
tip: hat man die seriennummern auf SD-Karte gespeichert und liest die seriennummern bei arduino-aktivierung ein, kann man die daten in der datei ändern und braucht nur neu zu starten.
der arbeitsspeicher des arduino ist relativ stark begrenzt - hat man viele sensoren angeschlossen und möchte deren werte protokollieren KANN es passieren, das der speicher zu klein wird, vor allem wenn man die seriennummern im speicher hält und nur die werte speichert bzw noch andere berechnungen damit anstellt.
liest man dagegen die seriennummern jedesmal auf's neue ein, macht das die sache insgesamt nicht schneller.
man muss also abwägen, wieviel sensoren an einem bus nötig sind bzw. wie schnell das alles laufen soll und damit rechnen, dass wenn man ein problem gelöst hat, ein neues auftreten KANN - aber es lohnt sich.
tip: ich werde für mein projekt mehrere arduino benutzen und diese per netzwerk ( http://www.komputer.de/zen/ind…o&cPath=22&products_id=76 ) von einem pandaboard aus steuern.
weil das pandaboard einem 'pc' schon sehr nahe kommt, kann ich dort entweder fertige produkte installieren(windows, linux, android) oder in der von mir bevorzugten programmiersprache (c, c++, .NET, php, java usw.) eigene lösungen entwickeln(lassen) und arbeitsspeicher ist auch genug vorhanden.
weiterer vorteil - ich kann im gegensatz zum arduino für die datenverarbeitung eine datenbank installieren, die ist schneller als die SD-Karten lösung und lässt sich leichter per eingabemaske(weiterer programmteil) editieren.
gruss
mattes