Skip to content
Snippets Groups Projects

Modbus-Profibus

Dieses Repositorium enthält Konfigurationsdateien, Dokumenationen und Weiteres zu Profibus-Geräten und zum Zugriff auf sie über Modbus-TCP, insbesondere unter Verwendung des Modbus-Profibus-Gateways »NT 100-RE-DP« (Hilscher Gesellschaft für Systemautomation mbH, Hattersheim) und CDG-Messköpfen (Inficon).

Modbus-Profibus-Gateway »NT 100-RE-DP«

Konfiguration

Die Konfiguration des »NT 100-RE-DP« geschieht mit Hilfe des Windows-Programms (»Windows XP« oder neuer) »SYCON.net« (»Systemkonfigurator«), welches von der dem Gateway beiliegenden CD oder von dieser Adresse erhältlich ist. Dort sind auch nützliche Dokumentationen zu finden.

Über eine USB-Leitung wird das Gateway mit dem PC verbunden. Nach Start von »SYCON.net« kann eine vorher gespeicherte Konfiguration (z.B. »SE3-Inficon-CDGs«) an das Gateway übertragen werden. Für jede Art von anzusprechendem Profibus-Gerät muss zur Konfiguration eine Gerätebeschreibungsdatei vorhanden sein. Sie muss dem Geräte-Katalog von »SYCON.net« zugefügt werden. Im Fall der CDG-Messköpfe von Inficon ist es die Datei CDGX0B7E.GSD (Quelle: http://products.inficon.com/de-de/Product/Detail/Cube-copy-of-CDG045D). Aus den dort definierten »Modulen« wurde »ExS,PVF,ChS,TpS« ausgewählt.

Unter dem Namen »SE3-Inficon-CDGs« existiert eine Gateway-Konfiguration, bei der 12 CDGs ansprechbar sind. Ihnen sind fortlaufende Profibus-Adressen von 1 bis 12 zugewiesen. Entsprechend müssen auch alle Adressschalters an den Messköpfen eingestellt werden. Diese Abbildung zeigt die eingestellte Adresse 2. (Vorsicht! Man neigt leicht dazu, die andere Seite des Einstellschlitzes als »Pfeilspitze« zu deuten.)

Die Gateway-Konfiguration ist zusätzlich auch noch auf einer SD-Speicherkarte gesichert. Sie kann bei Bedarf direkt vom Gateway gelesen werden.

Datenabfrage per Modbus-TCP

Aufgrund dessen, dass die Profibus-Adressen fortlaufend gewählt wurden, enthält ein durch Zugriff per Modbus-TCP (Funktion »ReadInputRegisters«) ausgelesener 96 Bytes langer Speicherbereich (12 * 8 Bytes) die Messwerte aller 12 CDGs. Maximal können mit einem einzelnen Modbus-TCP-Zugriff 250 Bytes (125 16-Bit-Zahlen) erfragt werden, was die mögliche einfache Auslesung von 31 CDGs bedeutet.

Es sei angenommen, dass zwei CDGs angeschlossen und ihnen die Profibus-Adressen »1« und »2« zugeordnet sind. Die Auslesung der ersten 16 Bytes (8 16-Bit-Werte) ergibt dann beispielsweise:

68,128,8,125,0,6,0,0,68,128,16,125,0,6,0,0
|=== 1  ===| E       |===  2  ===| E

Erklärung:

  • Bereich 1: Vier Bytes, die eine Float-Zahl (einfache Genauigkeit) repäsentieren, wobei das letzte Byte das höchstwertige ist (»big endian«). Gewandelt erhält man hier 1024,17 mbar (z.B. mit der nodejs-Buffer-Funktion »readFloatBE«).
  • Bereich 2: Wie oben, aber 1024,33 mbar.
  • E: »Exception Status«. Wenn es sich um gültige Messwerte handelt, muss dieses Byte jeweils 0 sein. Gesetzte Bits bezeichnen eine bestimmte Art von Fehler.

Mit Anfrage an »relayServer« kann die Auslesung des Speicherbereichs folgendermaßen erfolgen:

cat <<EOF | curl -T - -X PUT http://localhost:55555
{"Action":"MODBUS","Host":"e75451","Address":0,"Quantity":48,
"FunctionCode":"ReadInputRegisters", "OutMode":"Buffer"}
EOF

("Quantity" bezeichnet die Anzahl von 16-Bit-Werten.) Die gezielte Abfrage des zweiten CDGs mit gleichzeitiger Wandlung der relevanten vier Bytes:

$ cat <<EOF | curl -T - -X PUT http://localhost:55555
{"Action":"MODBUS","Host":"e75451","Address":0,"Quantity":48,
"FunctionCode":"ReadInputRegisters", "OutMode":"Buffer",
"PostProcessing":"Result=_x.readFloatBE(8);"}
EOF

(Der Datenbereich des zweiten Profibus-Gerätes beginnt an der Stelle des achten Bytes.) Unter Verwendung einer speziellen Auswertefunktion kann der Zugriff auf eine oder mehrere Messwerte vereinfacht werden:

cat <<EOF | curl -T - -X PUT http://localhost:55555
{"Action":"MODBUS","Host":"e75451","Address":0,"Quantity":48,
"FunctionCode":"ReadInputRegisters", "OutMode":"Buffer",
"PostProcessing":"Result=_.readPBusCDG(_x,1,2);"}
EOF

Ergibt z.B.:

{"t_start":1463732948959,"t_stop":1463732948985,
  "Result":[1031.92138671875,1024.0777587890625]}

Erklärung zu readPBusCDG(_x,1,2): Beginnend mit Messkopf 1 werden aus dem übergebenen 96 Byte langen Buffer die Messwerte der beiden ersten Messköpfe geliefert. Im Falle eines Fehlers (Exception-Status-Byte > 0) wird für den betreffenden Messkopf null angezeigt. Die Anheizphase wird als fehlerhafter Zustand ausgewiesen.

Verkabelung

CDG: D-Sub-9-Anschluss (Profibus)

        .------------------------o------------------.          
        |       .----------------|o-----------------|-------.   
   ___  |  ___  |  ___           ||            ___  |  ___  |  ___      
.-|___|-o-|___|-o-|___|-.        ||         .-|___|-o-|___|-o-|___|-.   
|  390  |  220  |  390  |        ||         |  390  |  220  |  390  |   
|       '--..---'       |        ||         |       '--..---'       |   
'-------.  ||  .--------'        ||         '-------.  ||  .--------'   
   DGND | A||B | VP             A||B           DGND | A||B | VP         
        |  ||  |      A=grün     ||                 |  ||  |            
       5| 8||3 |6     B=rot     8||3               5| 8||3 |6           
      __|__||__|___         _____||______         __|__||__|___         
      \ o o|o o|o /         \ o o|o o o /         \ o o|o o|o /         
       \ o o o o / Lötseite  \ o o o o /           \ o o o o /  
        ---------             ---------             ---------           
    Profibus-Master        Erster Messkopf       Letzter Messkopf         

Die hier gezeigte Verkabelung wird durch Verwendung von D-Sub-9-Stecker, die speziell für Profibus-Geräte vorgesehen sind, stark erleichtert. Es ist nur darauf zu achten, dass die ankommende Busleitung immer an die Klemmanschlüsse 1A/1B und die weiterführende an 2A/2B angeschlossen wird. Am ersten Gerät (Profibus-Master) und am letzten Gerät muss der von außen zugängliche Schalter auf »On« stehen (Aktivierung der Abschlusswiderstände), in allen anderen Fällen auf »Off«.

CDG: D-Sub-15-Anschluss

         V-                     V-                     V-                       
     o----o--------o========o----o--------o========o----o--------o=====o +24V   
          |  V+                  |  V+                  |  V+                   
     o----|---o----o========o----|---o----o========o----|---o----o=====o   0V   
S-        |   |        S-        |   |        S-        |   |                   
o--------.|   |  GND   o--------.|   |  GND   o--------.|   |  GND              
o---.    ||   |.---o   o---.    ||   |.---o   o---.    ||   |.---o              
S+  |    ||   ||       S+  |    ||   ||       S+  |    ||   ||                  
   2|  12||5 7||15        2|  12||5 7||15        2|  12||5 7||15                
____|____||___||___    ____|____||___||___    ____|____||___||___               
\ o o o o|o o o|o /    \ o o o o|o o o|o /    \ o o o o|o o o|o /               
 \ o o o o o o o /      \ o o o o o o o /      \ o o o o o o o /  Lötseite     
  ---------------        ---------------        ---------------                 
  Erster Messkopf        Zweiter Messkopf       Letzter Messkopf                

Erklärung:

  • »S+/S-«: Analoges Messsignal an geschirmter 2-poliger Leitung. Die Abschirmung ist einseitig mit GNG (15) zu verbinden.
  • »V+/V-«: Betriebsspannung (14...30V). In der Anheizphase ist mit einem Strom von ca. 750mA pro Messkopf zu rechnen. Später sinkt er auf ca. 200mA.