# Modbus RTU



## Seppe (7 Dezember 2019)

Hallo,

hat jemand zufällig schonmal einen Parker AC10 Frequenzumrichter mit Modbus RTU ausgelesen und gesteuert?
Habe mithilfe des Handbuches des AC10 folgendes konfiguriert:



Kann mir irgendjemand einen Tipp geben warum ich keine Daten empfange?

Vielen Dank!


----------



## ClMak (8 Dezember 2019)

Hallo Seppe,

die hast RS485_FullDuplex konfiguriert. Das ist aus meiner Sicht falsch, denn es müsste auf HalfDuplex konfiguriert sein.
Die Modbus Kommunikation läuft doch über zwei Adern A/B - oder?

VG
ClMak


----------



## holgermaik (8 Dezember 2019)

Hallo Seppe
Füge doch erst einmal den Status und Fehlerausgang hinzu,

```
xError            => xFehler,
oStatus            => oZustand
```
und sage uns ob der Baustein fehlerfrei arbeitet.
Den Status kannst du mit "WagoAppPlcModbus.WagoSysErrorBase.FbResult" auflösen
- Duplex prüfen
- Interface der RS485 prüfen

Holger


----------



## Captain Future (9 Dezember 2019)

Der AC 10 von Parker ist auf alle Fälle HalfDuplex (2-Draht A/B)
Mit Siemens habe ich die öfters im Einsatz über RTU.

Eine Besonderheit gibt es die mir sofort einfällt.
Wenn du per Modbus einen Wert sendest zb. Drehzahl 0 Hz und die Min. Drehzahl ist 0,5 Hz (Werkseinstellung)
dann gibt es einen Modbus Fehler. So ist es auf alle Fälle beim MB-Maste Bausein von Siemens.... nur zur Info

Hast du die Parameter im Umrichter alle eingestellt ?


----------



## Captain Future (9 Dezember 2019)

Das sind die Parameter die ich immer am Frequenzumrichter einstelle:

Basisparameter 
F111 - Maximalfrequenz
F112 - Minimalfrequenz 
F113 - Zielfrequenz

Laufsteuerungsparameter
F200 - Quelle des Startbefehls 3: MODBUS
F201 - Quelle des Stoppbefehls 3: MODBUS
F203 - Hauptfrequenzquelle 10: Modbus

Kommunikationsparameter
F900 - Kommunikationsadresse 1 - 255
F901 - Kommunikationsmodus 2= RTU
F902 - Stop Bit 1
F903 - Paritätsprüfung 0: Inaktiv 
F904 - Baudrate 3: 9600 / 4: 19200 / 5: 38400 / 6: 57600 
F905 - Kommunikations-Timeout 0,0 – 3000,0


----------



## Seppe (9 Dezember 2019)

Hallo,

vielen Dank für die ganzen Hinweise. Habe auf Half Duplex umgestellt und die Einstellungen am Frequenzumrichter nochmals überprüft. Diese müssten aber passen. 

Ich bekomme allerdings immer einen Timeout Error...


----------



## Thruser (9 Dezember 2019)

Hallo,

stell mal denn Functioncode auf 03 (Read Holding registers) um. So steht es zumindest in der Anleitung Abschnitt 12.6

Gruß

PS: da steht auch was von weniger als 10 Adressen auf einmal.


----------



## Seppe (9 Dezember 2019)

Hallo Thruser,

danke, habe Funktionscode auf 03 und readQuantity auf 8 gestellt. 
Der Verbindungsaufbau funktioniert:s12:

Wenn ich den Frequenzumrichter auslese solange er nicht läuft bekomme ich einige Werte. Sobald er aber läuft und Frequenz- Spannung- und Stromwert nicht 0 sind tritt die Fehlermeldung 'Error invalid crc' auf...
Eigentlich ist doch die Prüfsumme deaktiviert!?


----------



## Thruser (10 Dezember 2019)

Hallo,

das hört sich ganz nach Störungen an, wenn die Fehler auftreten wenn der FU läuft.

Ist das Kabel geschirmt?
Wie lang ist das Kabel?
Hast Du die Abschlußwiderstände dran?
Hats Du die BIAS Widerstände dran?

Damit würde ich jetzt erst einmal anfangen. Hilfreich wäre auch wenn Du ein USB RS-485 Umsetzer hättest, dann könntest Du auch mal mit dem PC und qmodmaster bzw. realterm versuche Dir die Kommunikation anzusehen.

Gruß


----------



## Seppe (13 Dezember 2019)

Hallo,

hab die Abschlusswiderstände eingebaut und kann nun auch im laufenden Modus den Frequenzumricher auslesen.
Habe aber beim Schreiben noch Probleme...

Den Funktionscode habe ich auf 06 umgestellt,
die Schreibadresse auf 8192.

Der Frequenzumricher zeigt CE (Kommunikationsfehler) an, und ich bekomme im Programm den Fehler 'Error message from slave -> see slave error'. Fehler ID ist 144. Ich kann aber nicht herausfinden, was hinter der ID steckt (auch nicht im Handbuch des AC10)...

Hat jemand eine Idee woran es liegen könnte?

Viele Grüße


----------



## corrado (14 Januar 2020)

Hi Seppe,

wie schon von Thruser in #9 vorgeschlagen, schau mal was wirklich auf der Leitung übertragen wird. Modbus kennt keine Fehler-ID 144. Wenn ich jetzt mal in die Kristallkugel schaue, könnte die 144 als Hexadezimale 90 interpretiert werden und das könnte die Antwort auf eine fehlerhafte Modbus-Funktion 16 (0x10, Preset Multiple Registers) sein. Im nächsten Byte steht dann was der Slave nicht verstanden hat.

Gruss Corrado


----------



## Tobsucht (15 Januar 2020)

Der Wert 144 = 16#90 steht für MB_EXTENDED_SLAVE_ERROR (see the error entry inside modbus response struct)
Also musst Du auch in die Response Struktur schauen. Dort gibt es die Variable Error. Diese enthält den vom Slave zurückgegebenen Fehler.

Grüße


----------

