Modbus

Modbus ist ein Protokoll, welches zur Daten�bertragung genutzt wird. Es gibt unterschiedliche Kommunikationswege. Wir verwenden bei horstFX Modbus-TCP. Dabei werden die Daten �ber das TCP-Protokoll gesendet. Bei Modbus gilt ein Master-Slave Konzept.

1. Einleitung

Die Daten werden auf 4 verschiedenen Register aufgeteilt (Coil (Bit Read/Write)Discrete Input (Readonly Bit)Holding Register (Read/Write Word)Input Register (Readonly Word)).

Ein Coil oder Discrete Input Register besteht aus einem Bit, kann also den Wert 0 oder 1 annehmen.

Holding oder Input Register bestehen aus einem Word (16-Bit). In unserer Implementierung werden oft 2 Register genutzt um ein 32-Bit Datentyp darzustellen.

1.1 Vorteile

  • Sehr einfaches Protokoll
  • Modbus Clients (Master) Implementierungen gibt es so gut wie in jeder Programmiersprache. Ebenfalls auf den g�ngigen Speicherprogrammierbare Steuerungen (SPS).
  • Asynchrone Daten�bertragung (keine dauerhafte Verbindung notwendig)
  • Keine extra Hardware notwendig (da die Kommunikation �ber TCP l�uft).
  • Vorhandene Netzwerkinstallation (auch WLAN) l�sst sich zur Daten�bertragung nutzen.

1.2 Nachteile

  • Roboter Status muss aktiv abgefragt werden.
  • 1 Register ist auf 16 Bit beschr�nkt (meistens haben Variablen einen Platzbedarf von 32 Bit).

Info

Zum Abspeichern von 32-Bit Datentypen werden zwei Register benutzt.

1.3 Vorteile gegen�ber XML-RPC

  • Lauff�hig auf SPS

1.4 Nachteile gegen�ber XML-RPC

  • Keine direkten R�ckgabewerte auf eine auszuf�hrende Funktion.
  • Client Programmierung ist oft deutlich aufw�ndiger.

1.5 Vorteile gegen�ber Profinet

  • Keine zus�tzliche Hardware.

1.6 Nachteile gegen�ber Profinet

  • Nicht echtzeitf�hig.
  • Programmierung der SPS deutlich aufw�ndiger.

2. CONTROL konfigurieren

Der Roboter HORST besitzt in seiner Steuerungssoftware horstFX eine Modbus-TCP Schnittstelle. Nachfolgend wird erkl�rt wie diese Schnittstelle aktiviert werden kann.

Mindestvoraussetzungen:

2.1 Einstellungen "Control"

Um die Modbus Schnittelle zu aktivieren, bedarf es einer Konfiguration innerhalb der CONTROL Steuereinheit des Roboters. Um die Konfiguration durchf�hren zu k�nnen, ben�tigen Sie eine an der CONTROL Steuereinheit angeschlossene Tastatur. 

Hier ist eine Schritt f�r Schritt Anleitung zum Aktivieren der Schnittstelle. Bitte stellen Sie sicher, dass alle folgenden Schritte in der korrekten Reihenfolge abgearbeitet werden.

  1. Den Roboter �ber CONTROL starten.
  2. Software horstFX beenden (CONTROL nicht herunterfahren)
  3. Konfiguration anpassen:
    In der Datei /home/fruitcore/fruitcore/config/config.properties muss der Eintrag modbus.configuration.isEnabled=true hinzugef�gt, bzw. dessen Wert auf true gesetzt werden, falls der Eintrag schon vorhanden ist.
    Dies geht beispielsweise folgenderma�en:
    1. Tastenkombination ALT+F3 dr�cken
    2. Mousepad in das Suchfeld eintragen und starten
    3. Tastenkombination CTRL+O (STRG + O) und anschlie�end CTRL+L (STRG + L)  dr�cken. In die bereits vorselektierte Adressleiste /home/fruitcore/fruitcore/config/config.properties eintragen und mit Enter (Eingabe) best�tigen.

    4. Am Ende eine Zeile mit dem Inhalt modbus.configuration.isEnabled=true erg�nzen

  4. Mit einem Klick auf Robot-UI horstFX erneut starten

Info

Falls der Eintrag modbus.configuration.isEnabled= schon vorhanden ist, �ndern Sie seinen Wert auf true.

3. Verbindung aufbauen

Zuerst muss die IP-Adresse vergeben werden, hierzu k�nnen Sie folgenden Artikel zur Hilfe nehmen: IP-Adresse �ndern

Der Roboter Schaltschrank Control akzeptiert eine Modbus Verbindung auf dem Modbus-Standardport 502 oder auf dem Port 8502. Verbinden Sie sich mit dem Modbus-Client Ihrer Wahl.

4. Datentypen

16-Bit Ganzzahl

Speicherbedarf : 16Bit

Anzahl Modbus-Register = 1 St�ck (Holding Register oder Input Register)

Wertebereich: -32768 bis 32767

32-Bit Ganzzahl

Speicherbedarf : 32Bit

Anzahl Modbus-Register = 2 St�ck (Holding Register oder Input Register)

Wertebereich: -2147483648 bis 2147483647

Gleitkommazahl

Speicherbedarf : 32Bit

Anzahl Modbus-Register = 2 St�ck (Holding Register oder Input Register)

Raw

Speicherbedarf : 16 Bit

Anzahl Modbus-Register = 1 St�ck (Holding Register oder Input Register)

Wert repr�sentiert keine Zahl. Wird genutzt wenn einzelne Bits zu setzen sind.

Bool

Speicherbedarf : 1Bit

Anzahl Modbus-Register = 1 St�ck (Coil oder Discrete Input)

Wert 0: false

Wert 1: true

String

Ein String besteht aus utf-8 Character Abschlie�end mit dem String-Ende-Zeichen '\0'. Ein Modbus Holding oder Input Register beinhaltet immer zwei Characters.

5. Coil (Bit Read/Write)

5.1 Mapping

Alles nicht definierte ist reserviert.

Jeder Register Eintrag entspricht dem Datentyp Bool.

5.2 Details

Outputs:

Gibt den Wert des Outputs 1-14 zur�ck oder schaltet diese auf den gew�nschten Wert

0 = Low, 1 = High

Initialisieren:

Genauere Details zum Initialisierungsprozess entnehmen Sie bitte: Roboter initialisieren.

Program Calls:

Um die Programm Calls ausf�hren zu k�nnen, muss sich horstFX zwingend im "Programmieren" Men� befinden. Ebenfalls muss der Roboter sich im Automatik-Betriebsmodus befinden.

Aktion wird ausgef�hrt wenn eine 1 in das entsprechende Register geschrieben wird.

Bool Register:

Bool-Register stehen in horstFX zur freien Verf�gung. Standardm��ig sind alle Register mit 0 initialisiert. 

Auf die Register kann lesend oder schreibend von horstFX und �ber jede externe Schnittstelle zugegriffen werden.

Die textuellen horstFX Befehle lauten (genaueres hier Lesen / Schreiben):

  • getBoolRegister(n) | lesen
  • setBoolRegister(n, x) | schreiben

n = Register Index

x = Wert

Info

Der Zugriff auf das Bool-Register aus horstFX, welches hinter der Modbus-Coil Adresse 1000 steht (Bool-Register 0), kann im Textuellen-Programmieren �ber die Methoden getBoolRegister(0), setBoolRegister(0, x) geschehen.

Safety Calls:

Beim setzen einer 1 wird der zugeh�rige Befehl ausgef�hrt

PopUp:

6. Discrete Input (Readonly Bit)

Discrete Inputs k�nnen von einem Client nur gelesen werden. Sie besitzen entweder den Wert 0 (false) oder den Wert 1 (true).

6.1 Mapping

Jeder Register Eintrag entspricht dem Datentyp Bool.

6.2 Inputs

6.3 Initialisierungs-Status 

 Genauere Details zum Initialisierungsprozess entnehmen Sie bitte Roboter initialisieren.

6.4 Programm-Status

Daraus ergeben sich folgende Status:

6.5 Safety-Status