PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS232 Schhnittstelle zweimal verwenden?



bocomtex
05.02.2005, 16:07
Hallo
Ich habe eine Photovoltaikanlage an der ich auch einen Datenlogger angeschlossen habe.
Dieser Datenlogger hat einen RS232 Ausgang, der mir ASCII Daten aufgibt die von der Photovoltaikanlage eingehen.
Diese Daten verarbeitet ein Softwareprogramm zu Statistischen zwecken.
An dieser RS232 Schnittstelle kann auch ein Großdisplay angeschlossen werden um die Momentanen Werte evt. im Wohnraum anzuzeigen.
Aber beides ist nicht möglich.
Gibt es einen RS232 Doppestecker, oder so was ähnliches, damit ich die Daten zweimal verwenden kann.? Einmal für den PC und einmal für das Display?
Danke für eine Antowrt.
Gruss
Günter

mcs
06.02.2005, 15:10
wenn du einen sender und zwei empfänger hast kannst du die leitungen einfach zusammen schliessen. mir ist allerdings noch nicht ganz klar wie das alles ist. könntest ja mal ein bild malen.

mfg mcs

vish
06.02.2005, 16:03
Hi!

Also, ich denke du meinst soetwas wie einen VGA Multiplier, der das Signal der Grafikkarte eben auf mehrere Ausgänge verteilt. (Man sieht auf allen Monitoren das gleiche).
Genauso müsstest du das hier auch machen. Einfach eine kleine Schaltung basteln, die die Pins von der Sub-D-9 Leiste doppelt.
Ich mache gleich einen Schaltplan, uno momento.

Grüße,
Jonas

Edit: Habe es jetzt noch einmal als .jpg gepostet, mit .tif hat das nicht so funktioniert.

bocomtex
07.02.2005, 08:37
Hallo vish

Danke für die Mühe mit der Zeichnung
Werde es mal so versuchen zu löten.
Ein kleines Problem habe ich noch dabei, der PC wird von Photovoltaik mit 19200 Baud angesteuert, und das Display mit 2400 oder 9600 Baud
Der Ausgang von der Photovoltaik merkt das automatisch.
Kann man in dem Strang zum Dispaly evt. die Baudrate herunter setzen?

Gruss
und noch mal Danke für die Mühe

Günter

vish
07.02.2005, 09:13
Hallo Günter,

wird der PC von der Photovoltaikanlage pauschal mit 19200 Baud angesteuert oder hängt das von der Baudrate ab die du am PC eingestellt hast?
Wenn das davon abhängt, dann stellst du die Baudrate einfach auf 9600 und hast keine Probleme mehr. :)
Ansonsten müsstest du vielleicht einen kleinen µC bemühen.

Grüße,
Jonas

bocomtex
07.02.2005, 12:57
Hallo Vish
Also die Phhotovoltaik lieferet 19200 Baud
So müßte ich doch ein Bauteil einlöten in dem Strang der zum Display geht und auf 9600 oder 2400 herunteredrosselt.
Sonst geht alles. Nur auf dem Display stehen alle möglichen ASCII Zeichen.

Gruss
Günter

vish
07.02.2005, 14:05
Hi!

Also, ich würde einen kleinen µC nehmen (ATmega8?) und dann mit Software UART den Ausgang der Photovoltaik einlesen und mit dem Hardware UART bei 2400 / 9600 Baud ausgeben.
Programmieren würde ich in Bascom (Da ist das recht einfach zu machen).
Ich schreib gleich mal ein Programmbeispiel, wie ich das meine.

Grüße,
Jonas

bocomtex
07.02.2005, 14:20
Danke vish für Deine Mühen.

Nach Deinem Layout was Du gemalt hast brauche ich auf den Ausgang 2 zum Display die 2400 oder 9600 Baud.
Da ich blutiger Anfänger bin kenne ich den Baustein garnicht den Du vorschlägst.
Aber irgendwie schaffe ich das schon.
Danke
Günter

vish
07.02.2005, 14:38
Kein Problem, dazu ist man ja da.
Also, der ATmega8 ist ein kleiner Mikrocontroller der Firma Atmel.
Um ihn betreiben zu können, musst du wieder ein wenig löten und zwar so, wie hier angegeben:
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=12
Den I²C Bus brauchst du wohl nicht, wohl aber die MAX232 Schaltung, die aus deiner 5V Logik 12V Computerspannung macht.
Diese baust du so auf:
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=13
Den Wannenstecker wirst du auch brauchen, da du den Controller damit programmierst. (Ein passendes Programierkabel für den LPT Port deines Computers bekommst du zum Beispiel bei www.robotikhardware.de)
Programmieren kannst du ihn in Assembler, C oder Bascom, wobei ich Bascom bevorzuge (einfacher, aber auch langsamer).
Hier wäre mein Programmansatz:



$regfile = "m8def.dat" ' Definitionsdatei
$crystal = 8000000 ' Quarzfrequenz
$baud = 19200 ' Eingangsbaudrate

Dim Eingang As Byte

Do

Eingang = Inkey() ' Lesen eines Zeichens (Byte) per Hardware UART
Serout Eingang , 1 , B , 0 , 9600 , 0 , 8 , 1 ' Senden des Zeichens (Byte) per Sofware UART bei 9600 Baud auf PinB.0

Loop

End


Laut Syntaxcheck von Bascom müsste das ganze funktionieren, ich konnte es aber noch nicht testen (mach ich wenn ich wieder Draht hab :D ).

Ich zeichne gleich noch den kompletten Schaltplan, also alle Teile und Kabel auf einem Papier.

Grüße,
Jonas


Edit:

So Schaltplan ist gezeichnet und müsste stimmen, aber wie gesagt, konnte ihn noch nicht testen, deswegen weiß ich nicht 100%ig ob das funktionieren kann.

bocomtex
07.02.2005, 16:23
Danke noch mal für die Mühen.
Will mal versuchen ob ich das hin bekomme.
Aber eines verstehe ich nicht, warum ich mit einer Leitung 12V zum LCD Display komme und darüber alles ASCII Zeichen senden kann.?
Wo kann ich mir die Teile am besten besorgen?

Gruss
Günter

vish
07.02.2005, 19:07
Ich bestelle meine Bauteile immer bei Reichelt (meiner Meinung nach günstiger). Aber Conrad wird wohl auch gehen.
Ich habe jetzt nochmal eine neue Version des Schaltplanes angehängt, weil im "alten" waren noch ein paar Unklarheiten und Fehler.
Zu der Frage, warum es nur ein "Datenkabel" gibt:
Die Bits werden hintereinander übertragen. Also immer schön der Reihe nach.
Startbit - Datenbits (5-8) - Paritybit (optional) - Stopbits (1-2)
Eigentlich müsste es noch ein Kabel geben, aber da du ja vermutlich nichts aus deinem Display auslesen willst, reicht ein Kabel.

Grüße,
Jonas

bocomtex
08.02.2005, 07:20
Hallo Vish

Werde dann mal die Teile bestellen und nochmals Danke.
Mal sehen wie lange ich brauche.
Melde mich dann wieder.
Gruss
Günter

bocomtex
08.02.2005, 09:54
Hallo Vish
Kleines Problem habe ich noch.
Das Programmiertool Bascom muß ich ja kaufen. Da ich aber dieses wohl nur zu diesem Zweck benötige, lohnt das für mich nicht.
Gibt es eine andere Möglichkeit.
Vorschlag: Du besorgst die Teile und Programmierst und ich löte nur noch an Photoviltaik und Display.? Kosten?

Gruss
Günter

vish
08.02.2005, 15:00
Hallo Günter!

Du brauchst na nicht gleich kaufen. Für deine Zwecke reicht die Demo völlig aus. Sie kann fast alles, was die Vollversion auch kann nur, dass du auf 4 Kilobytes beschränkt bist. Ich selbst habe auch "nur" die Demo.
Aber wenn du mit Löten und Programmieren überhaupt nichts am Hut hast kann ich das zur Not auch machen. :)

Grüße,
Jonas

P.S.: Wenn du es selbst aufbauen möchtest, dann warte erst noch ein bisschen, da ich das erst noch testen würde. Nicht, dass du 20€ oder noch mehr verpulverst. :)

bocomtex
08.02.2005, 16:25
Hallo Vish

Ich zieh das jetzt durch und habe die Teile bei Conrad bestellt.
Das Programierkabel habe ich auch bestellt.
Wenn ich dann nicht klar komme, dann kann ich immer noch fragen, oder Dir die Teile zusdenen:)
o.k.?

Gruss
Günter

vish
08.02.2005, 16:30
Hallo Günter!

Klar darfst Du fragen und wenn es gar nicht hinauen sollte dann kannst Du mir die Teile auch zusenden.
Wünsche Dir auf jeden Fall viel Erfolg!
Achja, was hat das denn insgesamt (inkl. Versand) bei Conrad gekostet?

Grüße,
Jonas

bocomtex
08.02.2005, 16:33
Hallo vish
Der Gesamtpreis liegt bei 14 Euro.
Heut ist bei Conrad Versandkostenfrei.

Gruss
Günter

bocomtex
11.02.2005, 06:26
Hallo Vish

Werde heut wohl mit dem Verlöten anfangen.
Hab noch ne Frage.
Die 5V+ kommen auf dem Layout öfter vor.
Am Wannenstecker, am Atmega, am Max232, muß ich dort jedesmal 5 Volt einspeisen?

Unter dem Max232 hast Du +5V--------- 15 IC2 ----------|15 eingezeichnet wofür ist das.?

Gruss
Günter

vish
11.02.2005, 12:25
Hallo Günter!

Ja, die 5V solltest du dort überall anlegen.
Zu diesem "Etwas" unter dem MAX232: Das sind die Versorgungsleitungen für den MAX232. Wenn man genau hinguckt, dann stehen über- und unterhalb von IC2 die Zahlen 15 und 16, damit du weißt wo was angeschlossen werden muss (Pin 15 und 16).

Grüße,
Jonas

engineer
15.02.2005, 04:53
Ich will euch nicht dazwischenfunken, aber eine alleiniges Kabel geht sicher nicht. Der Empfänger muss ja die Daten per Handshake oder einem anderen Protokoll abwickeln - da arbeiten dann zwei Empfänger auf dieselbe Leitung! Einfach hardwaremaessig parallelschalten , wie in der Zeichnung angedeutet, sollte wohl versagen.

@BOCOMTEX: Ich hatte das so verstanden, daß PC und Grossdisplay gleichzeitig anzeigen sollen und es um einen Softwaresplit der Daten geht. Ich denke, Du willst nun einen AVR dazwischenhängen und die Daten abzweigen, oder?

Dein AVR-System brächte dann 3 serielle Schnittstellen: Eine zur Komminukation mit dem Logger, zwei am Ausgang zur Kommunikation mit PC und Display. Alle drei serielle Schnittstellen müssen softwaremässig ein korrektes Protokoll abwickeln.

Ich habe eine solche Software für ein ARM7-System. Es lauft auf dem Devicemaster von Comtrol -> http://home.arcor.de/devicemaster

Oder soll kein Protokoll benutzt werden und die Empfänger einfach nur mitlesen ?

vish
15.02.2005, 17:28
Hallo!

Also das "alleinige" Kabel zum Display geht lt. Buch auf jeden Fall ("Programmieren der AVR RISC Mikriocontroller mit BASCOM-AVR").
Und das zum PC müsste doch eigentlich auch funktionieren! Schließlich benutze ich selbst auch nur zwei Kabel zur Kommunikation zwischen Serieller Schnittstelle und meinem ATmega16.
Oder liegt ein grundlegender Denkfehler bei mir vor?

Grüße,
Jonas

bocomtex
18.02.2005, 10:59
Hallo Engineer

Es ist so das ich einen Datenlogger habe der die Daten der Phtovoltaikanlage mit schreibt und auch über 365 Tage speichern kann.
An diesem Datenlogger ist ein RS 232 Ausgang an dem der PC hängt.
Der PC verwertet die Daten mit einer Software um diese dann ins Web zu stellen(www.bocomsun.de).
Außerdem kann man die Schnittstelle auch für ein Dispslay verwenden, welches ASCII Zeichen lesen kann.
Nun ist es so das die Daten zum PC mit 19200 Baud gesendet werden.
Die ASCII Zeichen aber zum Dsiplay nur mit 2400 Baud gesendet werden.

Laut der Firma vom Datenlogger ist es nicht möglich PC und Display zusammen laufen zu lassen.

Wäre schön wenn ich denen eines besseren belehren könnte.

Hallo vish

Bin noch nicht zum Aufbau der Platine gekommen.
Aber wenn ich die Meinung vom Ingeneer lese warte ich lieber noch, oder ?

Gruss
Günter

engineer
18.02.2005, 12:17
Also mein Gedanke war, das nur ein Kabel alleine mit dem hardware splitting aus obiger Zeichung nicht laufen kann, und zwar deshalb, weil ja ein Protokoll abgewickelt werden muss: Datenempfang wird ja quitiert!

Man könnte natürlich alle Rückmeldeleitungen der Empfänger unterbrechen und diese nur "hören" lassen - dann allerdings ohne jegliches Protokoll / Handshake. Dies klappt aber bei Dir nicht, wegen der unterschiedlichen speeds!

Ergo: Mit einem AVR-System drei virtuelle Schnittstellen bauen und - wie oben von mir beschrieben - einen Softwarerouter programmieren.

Ist eigenlich ganz einfach: Man muss nur auf dem einen Ausgangskanal die Daten durchreichen und auf dem anderen die Daten seltener senden, sodaß die Speed passt. Natürlich muessen auch die Schnittstellen selber unterschiedlich laufen -> zwei Timer / interrupts

Ein Protokoll muss man nicht unbedngt benutzen, es reichen 2 Leitungen je Kanal mit gfs 3 der MAX 232.

Dein AVR kommuniziert also mit der Anlage akls Empfänger und ist für die beiden anderen ein Sender. Die sehen nur den AVR - es gibt keine Kabelprobleme.

klar ?

bocomtex
18.02.2005, 13:49
Hallo engineer

Da ich so ziemlich Anfänger bin ist mir das nicht so klar.
Ich kann wohl verstehen das wenn ich über eine Leitung mit 19200 Baud den Pc bedienen will und ich dann auch noch eine Anzeige mit ASCII Zeichen und 2400 Baud versorgen will, dieses nicht ohne Probleme möglich ist.
Deshalb war mir der Schaltplan von vish(der sich viel Mühe gibt) schon logisch. Habe mir die Teile auch schon gekauft.
Aber was nun gemacht werden muß, keine Ahnung..
Danke auch schon mal für die Mühe.
Gruss
Günter

vish
18.02.2005, 14:24
Hallo Günter,

ich glaube Du solltest wirklich noch mit dem Aufbau warten.
Mir ist da nämlich gerade noch ein weiterer Gedanke (leider kein so ganz positiver) gekommen, nämlich, dass die Anlage wenn sie Daten zum Rechner schickt, vermutlich andere Daten schickt, als wie wenn sie zum Display Daten schicken würde.
Das heißt, dass der Mikrocontroller die Daten, die an den Rechner gesandt werden, erst interpretieren muss um dann das Display anzusteuern. Das dürfte natürlich sehr viel schwieriger sein.
Kannst du den Datenlogger auslesen, sodass du gucken kannst, was da ankommt? Dann könnte man nämlich sehen, ob das wirklich nur die Displaydaten sind, die dann der Rechner interpretiert oder Daten, die das Display nicht verstehen würde.

Grüße,
Jonas

engineer
19.02.2005, 00:07
Das obige ist in der Tat kritisch!

Kannst Du das am Hyperterminal verfolgen, was da ruaskommt ?

Muss man die Solaranalage umschalten von Display auf Logger ?

Du solltest mit einem Terminal wie WTERM von www.iftools.com den output der Analge amangen und ansehen.

Dann per Hand modifieren um zu lernen und den Endgeräten schicken. Diese müssen das dann ja anzeigen.

Wenn das hinhaut, hast Du die Sache im Griff und kannst bauen.

bocomtex
21.02.2005, 13:39
Hallo Engineer
Es ist, das der Datenlogger merkt ob ein PC oder ein Display an seinem RS232 Port hängt.
Wenn der PC abgeklemmt wird, dauert es ca. 10 sec. dann werden auf dem Terminalprgramm die ASCII Daten angezeigt die sonst das Display liefern würde.
Wenn der PC dranhängt wird nichts angezeigt,(bis jetzt) bin noch am probieren.

Gruss
Günter

bocomtex
21.02.2005, 17:38
Nochmal Hallo Engineer

Habe nun am Datenlogger den PC
und
wxterm am Notebook angeschlossen.

Die Software am PC läuft wie immer.
Der Datenlogger läuft wie immer.
Wxterm zeichnet mit 19200 Baud in Hex Einstellung Daten auf.
Wie könnte ich diese verwerten und dann mit 2400 Baud weitergeben?

Gruss
Günter

engineer
21.02.2005, 22:55
Du musst die Aufzeichnungsfunktion benutzen und speichern. Dann man etwas manipulieren und an das Endgerät senden. Dann solltest du das Protokoll im Griff haben.

bocomtex
22.02.2005, 16:30
Hallo Engineer und vish

Also ich habe das Protokoll mitlaufen lassen, wenn der Pc angeschlossen ist. Dann stehen dort wirre Zeichen drin die man nicht entschlüsseln kann.
Wenn der nur WXterminal läuft dann werden sauber die ASCII ausgegeben und ins Protokoll geschrieben wie sie auch auf dem Display zu sehen sind.
Wenn der PC angeschlosssen und Wxterminal auf dem Notebook läuft sind wieder nur wirre Zeichen zu sehen.

Habt Ihr noch ne Idee?
Laut Hersteller des Datenloggers kann man immer nur ein Gerät verwenden.

Gruss und Danke für die Mühen

Günter