PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Möglichkeiten für globale Variablen



CODrix
26.07.2013, 07:33
Hallo Gemeinde,
die Idee wäre eine Stelle an dem die Variablen, z.B. durch einen PC, gespeichert werden.
Die vorhandenen µC's reagieren auf diese Werte.
Eines davon berechnet was und verändert die Werte.
Somit können die µC's mit den neuen Werten arbeiten.

Welche Möglichkeiten hätte ich für sowas?

Grüsse
Tim

redround
26.07.2013, 07:55
spontan würde ich in so einem Fall die Controller per I2C miteinander verbinden und einen als von ihnen als "Master" per RS232 mit dem PC. Der "Master" sammelt die Werte ein und informiert alle andere Controller über entsprechende Änderungen. Falls ein PC online ist (was in diesem Szenario aber gar nicht zwingend wäre), übernimmt er die Werte vom Master bzw. vergibt neue Vorgabe-Werte. Ich habe das so in einer modularen Steuerungs Anlage umgesetzt und es funktioniert eigentlich ganz gut.

CODrix
26.07.2013, 08:26
So ähnliche Gedanken hatte ich auch.

Meinst Du mit informieren dass der Master sagt "Hey Leutz ich hab was neues holt euch was ihr braucht" oder meinst eher "Hier sind die neuen Werte"?
Das Zweite würde ja bedeuten dass alle Slaves ebenfalls die Werte hätten.

- - - Aktualisiert - - -

Hier mal eine Skizze wie ich mir das vorgestellt hab.

26087

PC sendet Daten an Master
Master schreibt die Werte in Speicher
Alle Slaves verarbeiten die Werte im Speicher
Recheneinheit prüft und ändert ggf die Werte
Slaves haben somit auch direkten Zugriff auf geänderte Werte
und steuern einen Servo oder LED oder irgendwas.

redround
26.07.2013, 09:32
möglich sind beide Varianten. In der reinen Lehre würde man wohl hergehen und das sog. Observer Designpattern verwenden (kannst ja mal danach googlen). Ich hatte es für mich aber anders geregelt und die gesammte Kommunikations-Steuerung dem Master überlassen. Er informiert also nacheinander alle Clients über die geänderten Werte bzw. fragt bei ihnen nach aktuellen Werten. Wenn er beim letzten Client durch ist, fängt er einfach vorne wieder an.

Technisch hatte ich das so gelöst, dass ich die einzelnen Module in Hutschienen-Gehäuse gesetzt hatte. Das "Master"-Modul hatte dabei nur die Aufgabe, zum einen die gemeinsame Versorgungsspannung und zum anderen die I2C und RS232 Kommunikation zu übernehmen. Mehr musste das Ding nicht machen. Dann hatte ich spezialisierte Module (Temperatur-Steuerung, CO2-Steuerung usw.) die meistens eigene Sensor-Eingänge hatten und die Steueraufgaben mehr oder weniger eigenständig wahrgenommen haben. An das Temperatur-Modul konnten zum Beispiel PT1000 Sensoren angeschlossen werden und abhängig von der gemessenen Temperatur wurde eine Heizung oder Kühlung angeschaltet (im Modul per Relais, die außerhalb des Moduls andere Relais / Schütze für die Last geschalten haben). Die Vorgabe der Zieltemperatur kam dabei vom Master, da die sich ändern kann und von anderen Parametern abhängt. Davon müssen die Clients selbst aber gar keine Ahnung haben. Sie bekommen gesagt, welche Temperatur sie zu halten haben.