RS485 Kommunikation mit Frequenzumrichter

Hallo,

ich bin gerade dabei einen FU (Frequenzumrichter von Hitachi Typ WJ200)
http://www.hitachi-da.com/information/downloads/frequenzumrichter-pdfs.html
mit einem Arduino Mega 2560 per RS485 zu steuern.
Das funktioniert einwandfrei.
Ich gehe nach dieser Anleitung vor:
https://arduino-info.wikispaces.com/SoftwareSerialRS485Example
Allerdings brauche ich auch die Rückmeldung vom Umrichter, ob alles ok ist.
Dazu brauche ich den "Enable-Pin" (RE/DE). Dieser wird aber vom Umrichter, bzw. dem RS485 Modul auf 3 V hoch gezogen, daß der Arduino einfriert.
Ein "Schutzwiderstand" ist keine Lösung; wenn zu hoch, dann Läuft der Arduino aber der FU reagiert nicht mehr.
Mit zwei Arduinos ist das kinderleicht.
Aber irgendwas ist an dem Umrichter Modbus anders.
Auch das Zuschalten der Abschlußwiderstände hat keine Auswirkung.
Ich weiß bald nicht mehr weiter...
Wer hat einen Rat?

Ich vermute mal dass der Arduino nicht "einfriert" sondern auf Daten vom FU wartet. Ohne dein Programm zukennen und die Konfiguration des FU wird dir kaum jemand helfen können.

Gruß

Hallo,

den Enable Pin am Umrichter mußt du irgendwie umschalten.
Entweder baust du dort einen µC dazwischen der das macht. Er ist ständig in Empfangsbereitschaft und wartet angesprochen zu werden und sendet auf Anfrage die gewünschten Daten. Wenn er gesendet hat, schaltet er sofort wieder in Empfangsmodus. Oder. Du baust die RS485 Verbindung auf Full-Duplex um.

Wir kennen dein Code nicht, ich denke aber aktuell auch, mangels Sendedaten wartet dein Arduino in einer Endlosschleife oder ähnliches. Da könnte eine zeitliche Abbruchbedingung rein.

Hmm, hab mich da falsch ausgedrückt. Er "stellt die Funktion des Enable-Pin's ein" trifft's wohl eher. Das war wohl ein Temperaturproblem. Das habe ich gelöst.
Hier arbeiten 4 Arduinos mit etlichen Sensoren im Verbund mit I2C, SPI, One-Wire, RS232, RS485 und zwei FU's.

@ Doc Arduino: das mit dem enable Pin wird doch im Code gelöst (?).

Hier sind Auszüge aus dem Quellcode:

#
define SSerialTxControl 9   //RS485 Direction control
#define SSerialTX        10  //Serial Transmit pin
#define SSerialRX        11  //Serial Receive pin

#define RS485Transmit    HIGH
#define RS485Receive     LOW
SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX

     pinMode(SSerialTxControl, OUTPUT);    
     digitalWrite(SSerialTxControl, RS485Receive);  // Init Transceiver   
  
      RS485Serial.begin(9600);   // set the data rate 
      RS485Serial.setTimeout(8);  // warten, bis unbekannte Anzahl Bytes angebommen ist

 void ModBusSenden(){
  ModBusControl=0;  // keine Modbusantwort
       //digitalWrite(sendPin, HIGH); // an MAX485 senden
       digitalWrite(SSerialTxControl, RS485Transmit);  // Enable RS485 Transmit
        RS485Serial.write(lowByte);
        RS485Serial.write(highByte);
        ....

      digitalWrite(SSerialTxControl, RS485Receive);  // Disable RS485 Transmit  
 
delay(1); // Umrichter antwortet nach 5 ms 
 //  Antwort auslesen
     
if(RS485Serial.available()>0) {   Serial.print("GetModbus: "); } // kommt nur 5 V mit Rauschen

Wer stellt hier was da? Was für ein Temperaturproblem hast du gelöst? Funktionierts jetzt oder nicht?
Ich verstehe nix mehr...

Na, der Enable Pin ist wieder ok. Habe von Serial2 mittels SoftwareSerial.h die Kommunikation auf Pin 9 (Enable), TX (10) und RX(11) umgestellt. Evtl. war ein Pin wegen der vielen Spielerei zerstört. Auch noch einige Timingprobleme gelöst.
Bekomme jetzt vom Umrichter auf RX nur 5V Rauschen unterbrochen von einer Antwort! Kurz nach dem Senden! Zweikanal-Oszi sei Dank! Allerdings sehr schwach. High ist auf 5 V, Low auf 4,2 V. Möglicherweise könnte das die Antwort sein. Ich glaube diese chineschischen RS485 Wandler sind gut für die Arduinos, aber nicht so gut für industrielle Anwendungen wie Umrichter (?).

Die 4,2V werden auch als HIGH erkannt. Vielleicht soll das LOW sein und es fehlt ein Pulldown-Widerstand? Häng doch mal zum Test ein 10KOhm Widerstand dran.

Möglicherweise ist das SoftwareSerial das größte Ärgernis. Hast Du schon mal AltSoftSerial versucht?

Mit "Low auf 4,2V" kann ich nicht viel anfangen, das klingt eher nach fehlendem Gnd. Aber bei RS-485 kommt es auf die Differenzspannung auf den Leitungen an, nicht auf irgendwelche High/Low Pegel. Beim Messen gegen Masse sieht man dann oft nur Rauschen statt der Signale, da sitzt dann das Problem vor der Tastatur :-]

Nee, schon probiert. Mit einem Pulldown zieh ich ja auch High runter. Und der Arduino zieht kräftig hoch. Ich habe jetzt Pin RX umgestellt auf Pin 10. Der zieht alles dermaßen runter, daß selbst void loop() hängt (eingefroren?).

Dann hab ich mit einem nagelneuen Arduino auf Serial2 umgestellt. Jetzt bekomme ich Daten vom Umrichter, aber erstens nur wirres Zeug, und zweitens schaltet der den Modbus nach einiger Zeit von selbst ab!!!

Ich geb's für heute auf und werde morgen mit Hitachi telefonieren. Wahrscheinlich soll das wirre Zeug ein Timecode oder sowas sein...

Das mit dem Low auf 4,2 V ist schon das Level am Arduino. Nicht an der Modbusleitung. Der Pin 10 und 11 machte sowas. Mit dem RX2 geht da einwandfrei. Warum weiß ich jetzt auch nicht.

Ich probiere das mit dem AltSoftSerial mal aus...

Hallo,

du scheinst wild rumzuprobieren. Das bringt nichts. Halte dich an die richtige Beschaltung des RS485 Busses und der MAX485 ICs. Und halte dich an den Bsp. Code. Und teste das erstmal mit 2 Arduinos alleine.

@ DocArduino: Das scheint nur so. Wie schon beschrieben funktioniert das längst mit den Arduinos. Es geht hier um die Kommunikation mit einem industriellen Umrichter. Dabei gibt's Timingprobleme, Entstörprobleme und besonders: nicht an das Hitachi Handbuch halten. Das enthält einige Fehler! Es läuft jetzt!

Danke an Alle!

Hallo,

hmm, ohne dich ärgern zu wollen, dann war das ein Fall von absolut unklarer Problembeschreibung.
Aber schön das es funktioniert. Die Lösung oder was man beim Hitachi beachten mußt behälste für dich?

Wäre schön wenn du hier die Lösung einstellen könntest bzw was eigentlich das Problem war. Evtl. hilft das bei anderen Modbus/RS485 Problemen auch weiter.
Danke
Gruß
DerDani

Das Hauptproblem scheint die Zusammenarbeit zwischen der billigen RS485 Schnittstelle und dem Hitachi Umrichter zu sein. Die können nur unter unkonventionellen Bedingungen 330 Ohm Pullup's n -downs und OHNE Abschlußwiderstand!
Weiterhin ist das deutsche Handbuch von Hitachi grottig. Das bessere ist in englisch (> 400 Seiten), das deutlich bessere ist ein internes, original Handbuch (> 600 pages). Es geht auch nur wirklich gut bei 19,2 Baud oder niedriger. Usw..

(Also das mit dem wild Herumprobieren ist nicht sooo falsch, systematisch führt es aber auch zum Ziel!)

Hey, hätte sowas ähnliches vor nur mit Regelung auf nen Sensor. Hat irgendwer von euch sowas schon mal gemacht die RS485 Kommunikation mit nem FU. Wäre über Code Beispiele ganz dankbar. Mir is z.b. das senden der steuerworter nicht ganz klar. :frowning:

Das Steuerwort ist vom FU abhängig, ohne Infos keine Infos....

Welche/r
FU?
RS485 Umsetzter?
Arduino?
Sketch?

Gruß
DerDani

Wie gesagt. Ohne Infos....