mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Sensoren überwachen nach Master-Slave-Prinzip


Autor: Marion (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute ich stecke in einem kleinen Dilema.
ich möchte Durch einem Bus meinen Sensoren überwachen.
Es geht um den RS485-bus. Ein Master und mehrere Slave.
Jede Slave hat sein eindeutiger ID. Der Master hat eine Reihenfolge wie 
er die anspricht in einem Register gespeichert, die er jedes mal 
inkrementiert und dem nächten anspricht.

Jeder angesprochene Sensor wird dann aktiv, es wird dann an der stelle 
ein Metal dose hingestellt. Erkennt er diese, sendet er ein ACK an dem 
Master zurück. und der nächste wird dann aktiv und so weiter.

So ist der reale und erwünschte zustand.

Nun möchte ich bei diesem Vorgang Fehler detektieren und entsprechend 
darauf ein Signal am einem Pin-Ausgang senden.

Wenn zum beispiel der Master Slave 1 aktiviert, und wartet auf sein Ack, 
wird statt dessen eine Dose bei der unaktivierte Slave 2 hingestellt.
Diese kann aber keine Verbindung mit der Master herstellen, da der 
Master him nicht angesprochen hat.

Da  steckt nun  der Dilema. wie kann  ich auf dem Bus(in meinem System) 
diese Fehler erkennen und entsprechend  ein Ton oder ein Lämpschen 
leuschten Lassen.


ich bedanke mich für jede Idee


lg
Marion

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Wenn zum beispiel der Master Slave 1 aktiviert, und wartet auf sein Ack,
>wird statt dessen eine Dose bei der unaktivierte Slave 2 hingestellt.
>Diese kann aber keine Verbindung mit der Master herstellen, da der
>Master him nicht angesprochen hat.

Dann sollte der Slave ihm das bei der nächsten Abfrage mitteilen.

MfG Spess

Autor: Marion (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi

spess53 schrieb:
> Hi
>
>
>
>>Wenn zum beispiel der Master Slave 1 aktiviert, und wartet auf sein Ack,
>
>>wird statt dessen eine Dose bei der unaktivierte Slave 2 hingestellt.
>
>>Diese kann aber keine Verbindung mit der Master herstellen, da der
>
>>Master him nicht angesprochen hat.
>
>
>
> Dann sollte der Slave ihm das bei der nächsten Abfrage mitteilen.
>
>
>
> MfG Spess


Die würze in der Sache ist , dass das system den Mitarbeiter führen 
soll, so dass er vor dem richtigen sensor die Dose hinstellt.  Und bei 
falsche handlung das Lämpschen-signal anmachen, bis er auf die richtige 
stelle die Dose hingelegt hat.

Lg
Marion

Autor: Andre I. (dex) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Willst du Affen trainieren? :/

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Die würze in der Sache ist , dass das system den Mitarbeiter führen
>soll, so dass er vor dem richtigen sensor die Dose hinstellt.  Und bei
>falsche handlung das Lämpschen-signal anmachen, bis er auf die richtige
>stelle die Dose hingelegt hat.

Na und. Der µC ist mit Sicherheit 1000mal schneller als dein 
Mitarbeiter.

MfG Spess

Autor: H.Joachim Seifert (crazyhorse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann brauchst du ein Multimastersystem (das geht einfacher mit CAN) oder 
du pollst alle slaves mit einer deutlich höheren Geschwindigkeit. Also 
reirum abfragen, wie der aktuelle Stand ist. Bei deinem Problem ist das 
kein Problem :-)

Autor: Marion (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andre I. schrieb:
> Willst du Affen trainieren? :/

man nennt das Fehlerminimierung.

Bitte auf eine nette Frage freue ich mich auf nette Antworten

danke
Marion

Autor: Andre I. (dex) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na du hast deine Antwort ja schon und bei solchen Anforderungen:

"so dass er vor dem richtigen sensor die Dose hinstellt.  Und bei
falsche handlung das Lämpschen-signal anmachen, bis er auf die richtige
stelle die Dose hingelegt hat."

liegt der Vergleich halt nahe. Fehlt nur noch die Züchtigung durch 
Elektroschock. Nicht gleich alles ernst nehmen ;)

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Wo ist das Problem? Über ein Timeout die Verbindung kappen und alle 
anderen Sensoren abfragen. Wehe wenn da woanders was gemeldet wird.....
Du musst dir nur merken welcher Sensor eigentlich drann ist.

Viel Erfolg, Uwe

Autor: Marion Kirsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Ideen.

Uwe schrieb:
> Hi!
>
> Wo ist das Problem? Über ein Timeout die Verbindung kappen und alle
>
> anderen Sensoren abfragen. Wehe wenn da woanders was gemeldet wird.....
>
> Du musst dir nur merken welcher Sensor eigentlich drann ist.

Da versteht ich nicht so ganz.

>Über ein Timeout die Verbindung kappen

meinst du ein Timer anbauen, die nach der Anfrage an einem Sensor laufen 
soll und nach dem Ablauf des Zeitsinterval ohne eine Rückmeldung vom 
Slave die Lämpchen zum leuchten bringen soll?


> und alle anderen Sensoren abfragen.
welche sensor noch.

ich wollte so implementieren , dass bei jedem Sensor, die kommunikation 
erst startet wenn diesem angesprochen wird.

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
>> und alle anderen Sensoren abfragen.
>welche sensor noch.

>Jeder angesprochene Sensor wird dann aktiv,
ähmm, das sind bei mir mehrere, bei dir nicht?

>es wird dann an der stelle ein Metal dose hingestellt.
>Erkennt er diese, sendet er ein ACK an dem Master zurück.
Und wenn nicht? Warten...... oder eben Timeout
>und der nächste wird dann aktiv und so weiter.

>meinst du ein Timer anbauen, die nach der Anfrage an einem Sensor laufen
>soll und nach dem Ablauf des Zeitsinterval ohne eine Rückmeldung vom
>Slave die Lämpchen zum leuchten bringen soll?
Nicht ganz, Timer ja, aber dann erstmal die anderen Sensoren abfragen.
Das Lämpchen aber erst an wenn auf einem anderen ein ACK kommt.
Du kannst auch ständig den Bus scannen und nachschauen was so bei den 
Sensoren los ist. Tastzeit je Sensor 1ms? Wenn kein ACK ab zum nächsten.
Damit lässt sich zb. "falsches Abstellen" und bummeln erfassen.

>ich wollte so implementieren , dass bei jedem Sensor, die kommunikation
>erst startet wenn diesem angesprochen wird.
Ist doch alles richtig, nur nach zb. 1ms darf er nichts mehr sagen bis 
er erneut gefragt wird.

Viel Erfolg, Uwe

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.