Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 6 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 58

Thema: RS485 Modbus Topologie ?

  1. #11
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.276
    Danke
    50
    Erhielt 127 Danke für 121 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Welche Adressen hast du vergeben? Wie ist die Geschwindigkeit? Parität, Datenbits?
    A und B nicht vertauscht?
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  2. #12
    Registriert seit
    13.03.2007
    Ort
    Nürnberg
    Beiträge
    478
    Danke
    49
    Erhielt 42 Danke für 38 Beiträge

    Standard

    Ist A + B Twisted Pairs, also verdrillt ?
    Ich habe A+B angeschlossen, sowie GND auch !
    Ob das mit GND mit der Verdratung mit den Widerständen gut ist, kann ich aber nicht sagen.
    Habe das ohne den Rs.

    Bei DMX (Lichtsteuerung), die ebenfalls RS485 ist, haben wir Ethernetleitungen genommen und die RJ45 Stecker abgeschnitten.
    Ethernetleitungen haben Twisted Pairs und sind abgeschirmt.
    Geht mit 250 kBaud und 50m, + 120 Ohm Anschuss, alles als Strang.
    Kabelsalat ist Gesund
    (vom CCC abgekupfert)

    Prognosen sind schwierig,
    besonders wenn sie die Zukunft betreffen.
    (Ursprung nicht wirklich bekannt)



  3. #13
    Kayle ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.10.2014
    Beiträge
    161
    Danke
    34
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo zusammen,

    - Kabel ist YSTY 4x2x0,8
    - Adernpaare sind verdrillt
    - GND ist angeschlossen
    - Schnittstellenparameter = 9600, 8, N, 1
    - Adressen an den Slaves 1 und 2
    - Protokoll ist Modbus RTU

    Habe mehrfach die Leitungen durchgeklingelt um ein vertauschen auszuschließen. Da es ja mit nur einem Slave jeweils funktioniert sollte A+B nicht vertauscht sein. Ohne Abschlusswiderstand funktioniert es garnicht. Habe zum testen auch mal einen RS485 zu USB Adapter angeschlossen. Hier ist das Problem das gleiche. Schließe also ein Problem mit der Wago hinsichtlich Anschluss auch aus.

    Die Adern in den Kabeln sind verdrillt. Im Schaltschrank und an den Slaves sind die Kabel auf ca. 20 cm nicht mehr verdrillt. Sollte das das Problem sein ? Vielleicht teste ich mal mit verschiedenen Geschwindigkeiten um herauszufinden an was es liegt. Meine Vermutung -> je höher die Geschwindigkeit desto größer die Reflexionen ?

    Danke und Gruß
    Kay

  4. #14
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.276
    Danke
    50
    Erhielt 127 Danke für 121 Beiträge

    Standard

    Also bei mir läuft der Modbus standardmäßig mit 19200, 8E1. Die freien Adern sind auch nicht verdrillt (im Kabel natürlich schon) und GND hab ich nicht angeschlossen.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  5. #15
    Kayle ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.10.2014
    Beiträge
    161
    Danke
    34
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Welches Kabel nutzt du? Wie werden die slaves gespeist ?

    Gesendet von meinem Elephone P8000 mit Tapatalk

  6. #16
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.276
    Danke
    50
    Erhielt 127 Danke für 121 Beiträge

    Standard

    LiYCY-0 4x0,25 paarweise verdrillt und im Ganzen geschirmt. Die Slaves werden mit 24V versorgt.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  7. #17
    Kayle ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.10.2014
    Beiträge
    161
    Danke
    34
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Nabend,

    ok ich konnte das Problem eingrenzen. Problem sind die Slaves. Diese sind selbst gebaut mit diesen Modulen:

    http://www.dx.com/p/ttl-to-rs485-mod...9#.V6eJEaKzzA0

    Habe zum testen die Slaves auf einem Tisch aufgebaut mit ca. 20cm Kabeln dazwischen. Hier habe ich das gleiche Problem wie in meiner Installation. Nur der Slave mit Widerstand wird erkannt und ausgelesen.

    Muss weiter forschen. Melde mich wenn ich weiter gekommen bin.

    Gruß Kay

  8. #18
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.276
    Danke
    50
    Erhielt 127 Danke für 121 Beiträge

    Standard

    Immer dieses "speziell für Arduino". Das ist ein stinknormaler RS485-Treiber.

    Für meine Modbus-Slaves nutze ich freemodbus in C. Die sind auch selbstentwickelt (Schaltung und Layout).

    Wenn du willst, kannst du mir mal deinen Code schicken, dann kann ich mal drüberschauen.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  9. #19
    Kayle ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.10.2014
    Beiträge
    161
    Danke
    34
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Ich weiß ... es ist ein MAX485 verbaut. Ist halt günstig gewesen

    Hier der Code:

    Code:
    /*
     * Raumthermostat RS485 Modbus
     * 4 Holding Register
     * Version 0.1 für HW Version 0.0.0.1
     * 
     * Register 0 = Temperatur * 10
     * Register 1 = Luftfeuchte * 10
     * Register 2 = Update Interval SHT31
     * Register 3 = LED ein / aus 
     * 
     */
    
    
    //Includes & Defines
    #include <Adafruit_SHT31.h>
    #include <Wire.h>
    #include <SimpleModbusSlave.h>
    #define  ledPin  12 
    
    //Sensor deklarieren
    Adafruit_SHT31 sht31 = Adafruit_SHT31();
    
    //Deklarationen
    boolean value = LOW;                  // Startwert der LED
    unsigned long previousMillis = 0; // speichert wie viele Sekunden seit derletzten Änderung vergangen sind
    unsigned long interval = 10000;    // Interval zwischen zwei Änderungen
    
    
    //Register deklarieren
    enum 
    {     
      temp,
      humidity,
      timer_interval,
      led,
      TOTAL_ERRORS,
      // leave this one
      TOTAL_REGS_SIZE 
      // total number of registers for function 3 and 16 share the same register array
    };
    
    unsigned int holdingRegs[TOTAL_REGS_SIZE]; // function 3 and 16 register array
    
    //Setup
    void setup()
    {
      
      modbus_configure(9600, 1, 4, TOTAL_REGS_SIZE, 0);
      pinMode(ledPin, OUTPUT);
      sht31.begin(0x44);
      
    }
    
    //Hauptprogramm
    void loop()
    {
      holdingRegs[TOTAL_ERRORS] = modbus_update(holdingRegs);
      //holdingRegs[TOTAL_REGS_SIZE] = TOTAL_REGS_SIZE;
      //Abfrage ob Interval Wert über Modbus eingestellt wurde. Minimaler Interval ist 10s
      if (holdingRegs[2] < 10000)
      {
        holdingRegs[2]=10000;
        interval = 10000;
      }
        else
      {
        interval = holdingRegs[2];
      }
    
      //Interval für Abfrage von SHT31 Sensor
      if (millis() - previousMillis > interval) 
      {
        previousMillis = millis();   // aktuelle Zeit abspeichern
    
        // LED Zustand wecheln.
        value = !value;
    
        // Wert auf den Ausgang schreiben
        digitalWrite(ledPin, value);
      
        holdingRegs[0] = sht31.readTemperature()*10;
        holdingRegs[1] = sht31.readHumidity()*10;
    
        }
    
      //Regsiter 4 für LED einschalten
       if (holdingRegs[3]==0)
       {
        digitalWrite(13,LOW);
       }
       else
       {
        digitalWrite(13,HIGH);
       }
    
    
      
    }
    Das ganze läuft auf einem Arduino Pro Mini. Habe an einem der RS485 Module den 120 Ohm R7 entfernt.

    Hier ein Bild vom Board:
    Front_Sensor.png

    Schaltplan:
    schematic.jpg

    Layout:
    board.jpg

    Gruß Kay
    Geändert von Kayle (07.08.2016 um 22:33 Uhr) Grund: Bild hinzugefügt

  10. #20
    Registriert seit
    13.03.2007
    Ort
    Nürnberg
    Beiträge
    478
    Danke
    49
    Erhielt 42 Danke für 38 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Dann mal eine LED mit Vorwiderstand an den Sender_Enable_Pin löten.
    Ich kann mir vorstellen, dass der "Sender" nicht (mehr) abgeschaltet wird.
    Sollte also mind. 3 Leitungen zum RS485 Treiber gehen:
    RxD, TxD und die RE,DE zum Sender und Empfänger (meist parallel).

    Mobi kann das auch am Code erkennen.

    @Mobi:
    > Immer dieses "speziell für Arduino"
    so funktioniert das "Marketing".
    (Ich benutze den SN75176 auch wenn der ca. 50mA braucht, der Max so um 1mA.)
    Kabelsalat ist Gesund
    (vom CCC abgekupfert)

    Prognosen sind schwierig,
    besonders wenn sie die Zukunft betreffen.
    (Ursprung nicht wirklich bekannt)



Ähnliche Themen

  1. Nochmal KL6021 Modbus RS485
    Von cas im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 02.02.2013, 00:43
  2. Modbus RS485 Ascii
    Von vollmi im Forum Feldbusse
    Antworten: 3
    Letzter Beitrag: 02.11.2011, 11:08
  3. Profibus/DP vs. Modbus/RS485
    Von senmeis im Forum Feldbusse
    Antworten: 6
    Letzter Beitrag: 18.08.2011, 00:05
  4. Abschlusswiderstaende fuer Modbus (RS485)
    Von senmeis im Forum Feldbusse
    Antworten: 9
    Letzter Beitrag: 05.06.2011, 00:26
  5. Modbus RS485 Master
    Von bastian c im Forum Feldbusse
    Antworten: 4
    Letzter Beitrag: 23.04.2011, 13:30

Lesezeichen

Berechtigungen

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