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:
- horstFX ab Version 2020.10
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.
- Den Roboter �ber CONTROL starten.
- Software horstFX beenden (CONTROL nicht herunterfahren)
- 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:
- Tastenkombination ALT+F3 dr�cken
- Mousepad in das Suchfeld eintragen und starten
-
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.
-
Am Ende eine Zeile mit dem Inhalt modbus.configuration.isEnabled=true erg�nzen
- 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: