PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Modulkommunikation.....Tipps geucht!



Baui
26.09.2005, 18:27
Hallo,
ich arbeite zur Zeit mal wieder an meinem Kettenroboter. Dieser besteht aus mehreren Hardwaremodulen, die über die RS485-Schnittstelle verbunden sind. Jedes Hardwaremodul besitzt einen ATMega8 als Steuereinhiet.
Als Protokoll verwende ich das SNAP Protokoll.
So jetzt meine Frage:

Was ist am sinnvollsten, wenn ich zum Beispiel dem ACTOR-Modul (Steuerung der Aktoren sowie lowLevel-Sensoren [IS471]) sagen möchte, dass erst einmal gerade aus fahren soll (dabei auf hindernisse achten, schritte zählen usw.) und erst anhalten soll wenn hinderniss bzw. SChrittzahl erreicht wurde.
ich habe mir das bis jetzt folgendermaßen überlegt. Ich lege auf jedem Modul ein Array aus 32 Bytes an. In diese werden dann alle wichtigen Informationen (schrittzahl usw. geschrieben). jetzt fragt der Master nur noch die Arrays ab bzw. schreibt ein komplettes Array neu. Das Modul muss dann lediglich die Daten aus dem eigenen RAM lesen und entsprechend umsetzen.
Das 32. Byte ist das sogenannte EventHandlerByte und gibt an, ob ein Ereigniss (Hinderniss erkannt, SChrittzahl erreicht u.ä.) anliegt. Ist dies der Fall, wird entsprechend verfahren. Ist das EHB=0 wird der normale Ablauf beibehalten.

Wie löst ihr das bei euren Robotern? Welche Befehle übergibt man allgemein an Module? Ich arbeite bisher immer mit bytes.

Bin über jede Anregung dankbar

Gruß
BAui

PS. Ich hoffe ich bin im richtigen Forum Abteil gelandet....;-)

PicNick
26.09.2005, 19:48
Für philosophisch-religiöse Fundamentalfragen bist du hier allemal richtig.

Viele Peripheriegeräte arbeiten nach der von dir genannten Methode. Ist ja irgendwie einleuchtend. NUR: Zwei Module müssen genau wissen, was diese 32 Byte im einzelnen zu bedeuten haben. Das ist spätestens dann unangenehm, wenn du ein Modul irgendwie erweitern oder verbessern willst. dann mußt du auch in alle anderen rein und denen das verklickern.
Deswegen empfehle ich, ganz klassenmäßig, jedes Module stellt eine Einheit mit privaten Daten dar, und stellt nach außen eben ihre Methoden zur Verfügung, die sie im Netz durch "Messages" bekommt. Gewissermaßen ein "remote-procedure-call". Wie das Modul die Methode dann intern löst, ist seine Sache und kann unabhängig entwickelt werden.
Es ist dein Geschick, die Art dieser Messages so zu designen, daß sie kombinierbar und nicht zu überkomplex sind, eben so, wie man eine Klasse definieren würde.

Baui
26.09.2005, 20:08
hi picnick,
oke dann werde ich mich mal ran machen
philosophisch-religiöse(n) Fundamentalfragen versuchen zu lösen ;-)

erstmal danke für deine schnelle antowrt. ich dnke ich werde dann mal einzelne aufrufe einführen und wie du beschrieben hast die module als klassen behandeln.


gurß
Baui

PicNick
27.09.2005, 06:49
Vielleicht sollten wir abwarten, bis wer kommt, der dir genau das Gegenteil erzählt :mrgreen: