Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] 2 M units verninden
Hi ich hab ne frage und zwar kann man 2 C-Control m units (wie im Bild) Ohne Max232 Chip verbinden ode dass etwas durchbrennt?
Matthias
20.02.2004, 11:49
Ja ( super antwort, ne. Funktioniert aber wirklich. wenn man 1+1-1 rechnet kommt auch 1 raus...)
Matthias
Und Würde es so auch gehen wenn man die linke als master und die rechten als Slavers verwendet?
jein,
du dürftest halt mit den rechten nicht senden....
MfG Kjion
Matthias
20.02.2004, 17:39
Mit ner veränderung ja.
Man könnte aber auch nen Ringbus aufbauen, ist dann aber kein Master/Slave mehr.
Matthias
Problem ist dabei, aber das man ein Protokoll braucht, da die Controller sonst nicht wissen wann sie die Daten weiterschicken müssen und wann nicht. Ohne Protokoll gäb das nach zwei verschickten Bytes ein Chaos bzw. Überläufe ...
@quest
Du könntest RS485 Full Duplex Treiber verwenden. Damit kannst du das dann im Prinip genauso aufbauen. Es wäre halt nur noch die Treiber dazwischen...
MfG Kjion
Matthias
20.02.2004, 18:17
Ein protokoll zu programmieren ist aber nicht besonders schwer.
1. Funktionsprinzip:
Jedem Slave muss ne Adresse gegeben werden. Diese Wird als erstes gesendet; am besten ein paar mal und in ner einfachen rechnung, z.B. das zweite mal *2 das dritte mal *3. So ist das zufällige anwählen beim Datenfluss sehr unwahrscheinlich. Danach können die Daten verschickt bzw. empfangen werden, da immer nur die Unit, die vorhin angewählt wurde sendet, bzw empfängt. Dann mus man ihr z.B. noch einmal die Adresse senden, um sie wieder abzuwählen.
2. Funktionsprinzip:
Bei geringeren datenmengen ist das abwählen zu umständlich, also hängt man die adresse immer vor jedes byte.
Matthias
gibt es sonst noch eine möglichkeit mehrere m-units miteinander zu verbinden ich brauche eigentlich nur dass jede zu jeder unit senden kann und das mit maximal 255 veschiedenen befehlen
Matthias
22.02.2004, 10:36
Ja, du kannst einen Ringbus aufbauen. Bei dem sind die Units wie in einem ring zusammengehängt, also immer TX an RX der nächsten Unit. Wenn du dann daten von irgendeiner unit sendest, eintscheidet die nächste, ob das gesendete für sie ist und gibt es weiter an die nächste Unit, bei der geschieht wieder das selbe usw. Ein protokoll hierfür zu schreiben, ist nicht schwer. Wenn du nicht so fit bist, in basic, kann ich#s auch für dich schreiben, musst du nur sagen.
Matthias
Matthias
kannst du mir ds schreiben?
vielleicht mit erklärung ds wäre sehr nett
Matthias
22.02.2004, 15:21
Hier ein kurzes programm. Du kannst den "sicherheitsgrad" erhöhen, indem du witere Adressen und Startbefehle einbaust. Wenn du was senden willst, einfach in 'Daten' reinschreiben und nach 'ausgabe' gosuben...
define daten byte 'Datenbyte
define adresse byte 'Adressbyte
'Ring-Bus Routinen
#loop
get adresse
put adresse
if adresse<>255 then goto loop 'Startbefehl
get adresse
put adresse
if adresse<>30 then goto loop '30 ist die adresse und muss individuell angepasst werden
get daten
put daten
gosub auswertung
#ausgabe 'daten senden
put 255
put adresse
put daten
return
'hier musst du deine Routinen einfügen wie z.B.
#auswertung
if daten=77 then beep 400,25,0
return
Danke für die schnelle und gute hilfe
Versuch es doch einfach mal mit nem Nullmodemkabel, das sind die Leitungen schon gekreuzt!
RCO
Matthias
09.06.2004, 19:53
Was sollte das jetzt bedeuten?
Das mit dem kabel ist schon klar.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.