Auf folgender Seite wird die Kommunikation zwischen einem Modbus TCP Feldbuskoppler und horstFX beschrieben.
Als Feldbuskoppler dient in diesem Beispiel der Wago 750-362 mit gesteckten Input- sowie Output-Karten. Dieses Beispiel ist jedoch sehr einfach auch auf andere Feldbuskoppler anderer Hersteller �bertragbar.
Der Roboter agiert hierbei als Client und der Feldbuskoppler als Server.
Der Feldbuskoppler kann unter anderem genutzt werden um die Anzahl der digitalen Ein- sowie Ausg�nge des Roboters zu erh�hen.
Versionshinweis
Ab horstFX Version 2021.04
1. Herstellen der Kommunikation
Damit der Roboter mit dem Feldbuskoppler kommunizieren kann, m�ssen beide Teilnehmer in das gleiche Subnetz gebracht werden. D.h. die vorderen 3 Bereiche der IP-Adresse m�ssen identisch sein, und der letzte Bereich unterschiedlich. Wie die IP-Adresse des Roboters ge�ndert werden kann ist in folgendem Artikel beschrieben: IP-Adresse �ndern
Die IP-Adresse des Feldbuskopplers kann �ber die Weboberfl�che bzw. den Dip-Schaltern eingestellt werden. Weitere Informationen dazu findet man in der Dokumentation des Feldbuskopplers.
Nach erfolgreicher Verbindung zwischen der vorderen RJ45 Buchse des Roboter-Schaltschranks sowie der RJ45 Buchse des Feldbuskopplers, k�nnen beide Teilnehmer nun miteinander kommunizieren.
2. Befehlssatz
Folgende Befehle stehen zur Kommunikation zur Verf�gung.
2.1 Herstellen der Verbindung
Mit folgendem Befehl kann die Verbindung hergestellt werden:
var modbusClient = modbusConnect(addr, port);
2.2 Lesen der Daten
Mit folgenden Befehlen k�nnen Daten des Feldbuskopplers gelesen werden. Informationen zur Adressverwaltung des Feldbuskopplers erh�lt man aus der zugeh�rigen Dokumentation bzw. dem Webinterface.
// Eingangskarten
var InputData = null;
InputData = modbusReadInputsDiscrete(modbusClient, ref, count);
InputData = modbusReadInputDiscrete(modbusClient, ref);
InputData = modbusReadInputRegisters(modbusClient, ref, count);
InputData = modbusReadInputRegister(modbusClient, ref);
// Ausgangskarten
var OutputData = null;
OutputData = modbusReadCoils(modbusClient, ref, count);
OutputData = modbusReadCoil(modbusClient, ref);
OutputData = modbusReadRegisters(modbusClient, ref, count);
OutputData = modbusReadRegister(modbusClient, ref);
2.3 Schreiben der Daten
Mit folgenden Befehlen k�nnen Daten an den Feldbuskoppler gesendet werden. Informationen zur Adressverwaltung des Feldbuskopplers erh�lt man aus der zugeh�rigen Dokumentation bzw. dem Webinterface.
modbusWriteCoils(modbusClient, ref, values);
modbusWriteCoil(modbusClient, ref, value);
modbusWriteRegisters(modbusClient, ref, values);
modbusWriteRegister(modbusClient, ref, value);
3. Programmierbeispiel
In folgendem Beispiel wird die Verbindung zu dem Feldbuskoppler hergestellt sowie Ausg�nge der Outputkarte beschrieben und Eing�nge der Inputkarte gelesen.
var ModbusServerAdrr = "192.168.1.2";
var Port = 502;
var InputData = null;
var modbusClient = modbusConnect(ModbusServerAdrr, Port);
try
{
// Setze dritten Output der Output-Karte
modbusWriteCoil(modbusClient, 2, true);
// Setze Outputs 1-4 der Output-Karte
modbusWriteCoils(modbusClient, 0, [false, false, true, true]);
// Lese Eingang 1-8 der Input-Karte
InputData = modbusReadInputsDiscrete(modbusClient, 0, 8);
showInfo("Eingang 1-8: " + InputData);
// Lese Eingang 1 der Input-Karte
InputData = modbusReadInputDiscrete(modbusClient, 0);
showInfo("Eingang 1: " + InputData);
}
finally
{
modbusClient.closeConnection()
}
Hier k�nnen Sie das Beispielprogramm herunterladen: