- SF800 Solar Speicher Tutorial    Werbung      
Ergebnis 1 bis 10 von 55

Thema: RS 485 Master - Slave in Bascom???

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    08.05.2012
    Beiträge
    13
    Guten Morgen,

    Ich weiß, dieses Thema ist schon bischen älter, aber ich hoffe, ich bekomme Trotzdem vielleicht eine Antwort. Ich habe mir paar Infoblätter durchgelesen und dort ergaben sich noch so die ein oder andere Frage. Folgende wären das:

    Als Slave spricht dort was gegen den ATTiny2313? In meinem Fall sollen die Slaves nur auf Anfrage Daten aus einem Sensor holen, Verarbeiten und auf Kommando an den Master Schicken.

    Als Master würde ich den ATmega644p nehmen, der hat 2 Uarts den er soll mit Bus UND dem PC Kommunizieren und mit dem PC per RS232 (Kabellänge von 50m +- etwas machbar?)

    Als System dachte ich an die 4-Draht Lösung, weil dort reagieren, wenn ichs richtig verstanden habe, die Slaves nur auf Master-Anfragen und nicht auf die Slave Sendungen.

    Was für ein Treiber müsste ich den für das 4-Draht System nehmen?

    Beim 2 Draht System wollte ich den "sn75176" nehmen, ich weiß nicht der Sparsamste aber bei insgesamt max 15 Units denk ich ist er okay.

    Für die Adressierung werde ich mich vermutlich für Dip Schalter entscheiden, aber das ist ja Geschmackssache oder?


    Vom Protokoll her wollte ich es wie folgt machen:

    1. Master sendet im vorgegeben Zyklus an 00 (ist ja Adresse für Alle, wenn ich das richtig verstanden habe) den Befehl, Daten aus dem Sensor holen.
    2. Master Spricht nun alle Slaves seperat an und holt die Daten
    3. Slaves Antworten
    4. Master bereitet Daten für Ausgabe auf und los gehts.

    Michael



    PS: Ich hoffe man hört was von Euch und bitte berichtigt mich, wenn ich irgendwo Falsch liege.

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    31.05.2009
    Beiträge
    270
    Zitat Zitat von lwl Beitrag anzeigen
    Als Slave spricht dort was gegen den ATTiny2313? In meinem Fall sollen die Slaves nur auf Anfrage Daten aus einem Sensor holen, Verarbeiten und auf Kommando an den Master Schicken.
    Wenn Dein Programm da reinpasst, spricht da nichts dagegen.

    Zitat Zitat von lwl Beitrag anzeigen
    Als Master würde ich den ATmega644p nehmen, der hat 2 Uarts den er soll mit Bus UND dem PC Kommunizieren und mit dem PC per RS232 (Kabellänge von 50m +- etwas machbar?)
    50m ??? Eher nicht (ohne weiteres). Warum nicht auch RS485 ? Oder Master näher am PC plazieren.

    Zitat Zitat von lwl Beitrag anzeigen
    Als System dachte ich an die 4-Draht Lösung, weil dort reagieren, wenn ichs richtig verstanden habe, die Slaves nur auf Master-Anfragen und nicht auf die Slave Sendungen.
    Da bringst Du was durcheinander. 4-Draht Lösung bedeutet Full-Duplex, also gleichzeitiges Senden und Empfangen.
    Bei 2-Draht RS485 (Half-Duplex) wird der Reihe nach Gesendet und danach Empfangen.

    Zitat Zitat von lwl Beitrag anzeigen
    Was für ein Treiber müsste ich den für das 4-Draht System nehmen?
    Da gibt es sehr viele...............
    z.B. MAX485/MAX488/MAX491/u.s.w.

    Zitat Zitat von lwl Beitrag anzeigen
    Beim 2 Draht System wollte ich den "sn75176" nehmen, ich weiß nicht der Sparsamste aber bei insgesamt max 15 Units denk ich ist er okay.
    Geht auch mit 4-Draht Bus.



    Zitat Zitat von lwl Beitrag anzeigen
    Für die Adressierung werde ich mich vermutlich für Dip Schalter entscheiden, aber das ist ja Geschmackssache oder?
    Richtig.
    Ich nehme allerdings feste Adressen im Programm. Warum sollte ich die Adressen ändern ?

    Zitat Zitat von lwl Beitrag anzeigen
    Vom Protokoll her wollte ich es wie folgt machen:

    1. Master sendet im vorgegeben Zyklus an 00 (ist ja Adresse für Alle, wenn ich das richtig verstanden habe) den Befehl, Daten aus dem Sensor holen.
    2. Master Spricht nun alle Slaves seperat an und holt die Daten
    3. Slaves Antworten
    4. Master bereitet Daten für Ausgabe auf und los gehts.
    Wozu Schritt 1 ?


    Mein Protokoll habe ich mit MPCM (9Bit Übertragung) aufgebaut (im Datenblatt nachschauen).
    Die Slaves (der Master auch) schauen in der ISR auf gesetztes 9.Bit (Adresse wird übertragen) und machen dort nur weiter wenn sie adressiert sind (darauf folgendes Frame) > Telegramm holen und entsprechend reagieren / wenn nein > weiter in der Hauptschleife.
    Man muß nur das MPCM-Bit sinnvoll auf "1" und "0" schalten..............

    (der µC wird nur bei gesetztem 9.Bit in die ISR geschickt wenn der MPCM-Modus aktiv ist)

    Slaves :
    Die Hauptschleife bearbeitet den Sensor und der µC wird ab und zu in die ISR geschickt.

    Master:
    Die Slaves der Reihe nach adressieren, Daten abholen (auch in der ISR) und weiterverarbeiten..........
    mfG
    Willi

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    08.05.2012
    Beiträge
    13
    Kann den Bascom das überhaupt? Also mit dem 9.Bit? Habe irgendwo gelesen, dass Bascom dafür nicht optimal ist. Von daher müsste ich mir was überlegen.

    Und vom Bus her denke ich, ich bleib beim 2-Wire-Bus. Habe so noch ein wenig Reservem im Cat.5 Kabel.

    Und an sich sollen die Slaves ja nur Daten ermitteln und weiterleiten. Und gut, dann müsste ich mir was für die Kommunikation mit dem PC überlegen. Der PC soll aber nur mit dem Master Kommunizieren. Von daher dachte ich an RS232. Und man kann doch auch die Signale Verstärken mit passenden Treibern oder? Vorallem soll der PC nicht ständig drin hängen, sondern nur bei Bedarf. Er soll die Uhr Stellen und die Daten auch erhalten können bei Abruf.

    Was ich vll noch nicht sagte ist, der Master bekommt ein RTC Chip.

    Mit den Slaves hat er nix zu tun.

    Und für die Dip Schalter Lösung entschied ich mich, weil ich so alle Slaves gleich bauen kann und die gleiche Software drauf spielen kann. Also so an sich Identisch. Jede Unit bekommt auch Abschlußwiderstände, die Per Jumper Aktiviert bzw. Deaktiviert werden können. Hat den Grund, so kann ich den Bus verlängern ohne großen Aufwand. Einfach Jumper bei letzten Unit raus, neue Unit hinter packen, Jumper dort rein, richtig Adressieren und fertig.

    Gut ich muss dem Master sagen, dass eine weitere Unit zu gekommen ist, aber dafür kann man sich ja noch was überlegen, also ein art "Automatisches Setup". Bei diesem läuft er einfach alle Adressen durch, die möglich sind und wenn keine Antwort kommt weiß er, er ist durch.

    Alternativ kann man auch sagen er läuft die Gesamten Adressen durch und Speichert alle die eine Antwort geben in einem Array ab, der nach abschluß des Setups im EEprom gepackt wird. Also Variante B wäre für den fall, dass man "unsauber" adressiert.


    Michael
    Geändert von lwl (04.08.2012 um 22:08 Uhr)

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    31.05.2009
    Beiträge
    270
    Zitat Zitat von lwl Beitrag anzeigen
    Kann den Bascom das überhaupt? Also mit dem 9.Bit? Habe irgendwo gelesen, dass Bascom dafür nicht optimal ist.
    ........... Bascom kann ! Auch Bits schreiben und lesen !

    Zitat Zitat von lwl Beitrag anzeigen
    Und man kann doch auch die Signale Verstärken mit passenden Treibern oder?
    Kann man.
    RS485 Treiber hast Du aber in Händen.


    Zitat Zitat von lwl Beitrag anzeigen
    Und für die Dip Schalter Lösung entschied ich mich, weil ich so alle Slaves gleich bauen kann und die gleiche Software drauf spielen kann. Also so an sich Identisch. Jede Unit bekommt auch Abschlußwiderstände, die Per Jumper Aktiviert bzw. Deaktiviert werden können. Hat den Grund, so kann ich den Bus verlängern ohne großen Aufwand. Einfach Jumper bei letzten Unit raus, neue Unit hinter packen, Jumper dort rein, richtig Adressieren und fertig.

    Gut ich muss dem Master sagen, dass eine weitere Unit zu gekommen ist, aber dafür kann man sich ja noch was überlegen, also ein art "Automatisches Setup". Bei diesem läuft er einfach alle Adressen durch, die möglich sind und wenn keine Antwort kommt weiß er, er ist durch.

    Alternativ kann man auch sagen er läuft die Gesamten Adressen durch und Speichert alle die eine Antwort geben in einem Array ab, der nach abschluß des Setups im EEprom gepackt wird. Also Variante B wäre für den fall, dass man "unsauber" adressiert.
    Warum nicht. Dann man los........
    Viel Erfolg !
    mfG
    Willi

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    08.05.2012
    Beiträge
    13
    ja gut, dann würd ich aber ein zweiten Bus aufbauen. wie gesagt pc und Master sollen nur kommunizieren. wie bekomm ich den dann am besten den PC in den bus? Weil bei RS232 ist das ganz einfach. Vorallem am PC müsste ich dann noch eine passende Anwendung haben. Weil ich kam endlich dahinter, wie ich mit RS232 kommunizieren kann also vom PC her. Von daher würd ich gern bei RS232 bleiben.

    Ach was ich vergessen habe, ich weiß nicht ob das den Unterschied bringt, aber zwischen dem UART vom µC und der Seriellen Schnittstelle ist noch ein Max232 eingesetzt.

    Und wegen der Kommunikation wollte ich eh ein "Paket" schnüren, welches übermittelt wird. Dann also bestehend aus Empfänger Adresse, Sender Adresse und Daten. Also so war es geplant. Muss beim Slave dann ja nur das "Paket" zerlegen und er reagiert dann.

    Michael
    Geändert von lwl (04.08.2012 um 22:57 Uhr)

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    31.05.2009
    Beiträge
    270
    Zitat Zitat von lwl Beitrag anzeigen
    ja gut, dann würd ich aber ein zweiten Bus aufbauen. wie gesagt pc und Master sollen nur kommunizieren. wie bekomm ich den dann am besten den PC in den bus? Weil bei RS232 ist das ganz einfach. Vorallem am PC müsste ich dann noch eine passende Anwendung haben. Weil ich kam endlich dahinter, wie ich mit RS232 kommunizieren kann also vom PC her. Von daher würd ich gern bei RS232 bleiben.
    Ist die Verbindung vom Master zum PC(RS232) KEIN zweiter Bus ???
    nochmal............

    ...mein Vorschlag:
    PC -> (USB-RS485-Adapter)..............................50m......... ...........................RS485 (z.B.MAX485) -> MASTER-µC
    Zu überlegen wäre, ob Halb- oder VollDuplex (2/4-Draht).

    ...deine Variante:
    PC RS232 /(USB-RS232)-> RS232-Repeater....................................50m... ....................................RS232-Repeater ->RS232 ->MASTER-µC

    Softwaretechnisch ist es egal ob RS232 oder RS485 (oder....) solange kein (Hardware-)Handshake gefordert ist.

    Zitat Zitat von lwl Beitrag anzeigen
    Ach was ich vergessen habe, ich weiß nicht ob das den Unterschied bringt, aber zwischen dem UART vom µC und der Seriellen Schnittstelle ist noch ein Max232 eingesetzt.
    Sicher !
    Dann raus damit !


    Zitat Zitat von lwl Beitrag anzeigen
    Und wegen der Kommunikation wollte ich eh ein "Paket" schnüren, welches übermittelt wird. Dann also bestehend aus Empfänger Adresse, Sender Adresse und Daten. Also so war es geplant. Muss beim Slave dann ja nur das "Paket" zerlegen und er reagiert dann.
    Das kannst Du machen wie Du willst.
    Deine SLAVEs haben sowieso nichts zu tun...................
    mfG
    Willi

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    08.05.2012
    Beiträge
    13
    Ja gut,

    kennst den ein vernünftigen RS232 Repeater? Weil ich möchte beim Seriellen Anschluß bleiben nicht den USB Anschluß verwenden. Also ist reine geschmackssache von mir.

    Und zur Kommunikation kam mir eine doch gute Idee, da testen ich dann aber erstmal, ob es klappt. Aber wenns Interessiert, was ich vor habe:

    1. Master sendet die Adresse des Slaves
    2. Slaves hören per Inkey ab und reagieren nur, wenn ihre Adresse genannt wurde, arbeiten sonst weiter.
    3. Master sendet Befehl und Prüfsumme und da die anderen Arbeiten ja weiter also bekommts nur der gewünschte Slave. Gut die bekommen was in den Inkey Bus, aber die sollen den einfach wieder löschen, wenn es nicht eine Adresse ist.
    4. Slave sendet an Master die gewünschten Daten.

    Ich denke, so könnte es zumindest fürn Anfang gut machbar sein. Gut ich machs doch anders als geplant wegen dem Paket, aber naja.


    Michael

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

    Werbung      Solar Speicher und Akkus Tests