Konfiguration der IP-Adresse eines Modbus Slaves zur Laufzeit in CODESYS

In einem meiner letzten Beiträge, hat ein Leser mich im Kommentarbereich gefragt, wie ich denn die IP-Adresse des Elements „Modbus_TCP_Slave“ dynamisch ändern kann. Damit dann ein konfigurieren der IP-Adresse eines Modbus Slaves zur Laufzeit in CODESYS möglich ist. Als Ausgangspunkt werde ich mein CODESYS Projekt aus dem Artikel „Modbus-Kommunikation in CODESYS“ weiterentwickeln und die notwendigen Komponenten hinzufügen. Zum Beispiel werde ich eine WebVisu als Eingabemaske erstellen.

Das Gesamte Projekt stelle ich euch hier zum Download zur Verfügung:

CODESYS-Blog-ModbusMaster-Example

CAA Device Diagnosis

Um die Kommunikations-Einstellungen unseren Modbus Slave bearbeiten zu können benötigen wir die .ENABLE Funktionalität aus der CAA Device Diagnosis Bibliothek. Dadurch können wir das Gerät deaktivieren ⇒ Update durchführen ⇒ anschließend Gerät neustarten. Damit Ihr die Diagnose Funktionen in eurem CODESYS Projekt nutzen könnt, müsst Ihr folgenden Punkt in eurer SPS aktivieren ⇒ „Diagnose für Geräte aktivieren“

CAA Device Diagnosis
CAA Device Diagnosis aktivieren

Kommunikationseinstellungen updaten

Den Modbus-Slave realisiert die CODESYS Entwicklungsumgebung, im Gerätebaum, durch einen Funktionsbaustein. Dadurch können wir über den Identifier „Modbus_TCP_Slave“ Statusinformationen (wie z.B. einen Fehler) abrufen oder Parameter bearbeiten. Wir nutzen die Methode „UpdateCommunicationSettings“ um die IP-Adresse des Parametrierten Slaves zu bearbeiten. Hier muss allerdings beachtet werden, dass die Kommunikationsparameter nur aktualisiert werden, wenn der Slave auf „Stopp“ steht. Dazu benötigen wir das Anfangs schon erwähnte ENABLE Property aus der Gerätediagnose.

Parameter UpdateCommunicationSettings():

Name Datentyp Beschreibung
ipAdress ARRAY [0..3] OF BYTE IP-Adresse
uiPort UNIT Port

Variablen Deklaration in CODESYS

gbyModbusSlave_IP : ARRAY[0..3] OF BYTE:= [192,168,178,48];   	// IP Adress of Modbus Slave on Raspberry
guiModbusSlave_Port : UINT:= 502;				// Default Port

Vorausgesetzt, dass der Modbus-Slave deaktiviert ist, können wir mit folgendem Code-Snippet die Kommunikationsparameter ändern. Wenn der Status des Slaves noch auf „ModbusTCPComState.CONNECTED“ steht wird zunächst das ENABLE Property auf FALSE gesetzt.

//Update Communication Settings if Modbus Slave is disabled otherwise disable slave 
IF bUpdateCommunicationSettings THEN
	IF Modbus_TCP_Slave.ComState = ModbusTCPComState.OFF THEN
		Modbus_TCP_Slave.UpdateCommunicationSettings(gbyModbusSlave_IP,guiModbusSlave_Port);
		bUpdateCommunicationSettings:=FALSE;
	ELSE
		Modbus_TCP_Slave.Enable:=FALSE;
	END_IF
END_IF

//Restart Modbus Slave (connection can by checked by Modbus_TCP_Slave.ComState = ModbusTCPComState.CONNECTED)
IF bRestartCommunication THEN
	bRestartCommunication:=FALSE;
	Modbus_TCP_Slave.Enable:=TRUE;
END_IF

WebVisu um die IP-Adresse eines Modbus Slaves zur Laufzeit in CODESYS anzupassen

Damit das ganze Beispiel nicht zu langweilig ist, dachte ich mir, dass wir noch eine kleine WebVisu hinzufügen, um die Einstellungen vorzunehmen und den Kommunikationsstatus anzuzeigen.

WebVisu als Eingabemaske für parametrierung der UpdateCommunicationSettings funktion
WebVisu als Eingabemaske

Für all diejenigen, die bisher noch keine Visualisierung Elemente verwendet haben, möchte ich die notwendigen Schritte nun aufzeigen.

Kontextmenü Applikation öffnen (1) ⇒ Objekt hinzufügen (2) ⇒ Visualisierung.

Notwendige Schitte in CODESYS um eine Visualisierug im Prjekt zu integrieren
Visualisierung hinzufügen

Bei der ersten Visualisierung, die Ihr zu einem CODESYS Projekt hinzufügt, wird automatisch der Visualisierungsmanager eingebunden. Dabei öffnet sich folgendes Dialogfenster (hier bitte Auswahl selektieren ⇒ Hinzufügen)

Symbolbibliotheken einbinden
Symbolbibliotheken einbinden

Innerhalb des Visualisierungseditors habt Ihr nun eine Vielzahl von Widgets, mit denen Ihr euch eure eigene Visualisierung gestalten könnt. Dazu müsst Ihr die Toolbox „Werkzeuge“ (1) öffnen. Ich wähle hier zudem die Kategorie „Allgemeine Steuerelemente“ und füge dann z.B. eine Schaltfläche als Button zu meiner WebVisu hinzu.

Steuerelement zur CODESYS WebVisu hinzufügen
Button hinzufügen

Diese werden wir dann so parametrieren, dass die Methode zum Updaten der Kommunikationseinstellungen aufgerufen wird. Ich habe hierzu eine boolesche Variable „bUpdateCommunicationSettings“ in meinem PLC_PRG angelegt. Diese werden wir nun in der Toolbox Eigenschaften mit dem Button verbinden. Dazu Schaltfläche selektieren (1) ⇒ Eigenschaften (2) ⇒ Umschalten.Variable ⇒ „PLC_PRG.bUpdateCommunicationSettings“

Schaltfläche parametrieren
Schaltfläche parametrieren

Damit habt Ihr das erste Visualisierungselement eingefügt und parametriert. Die restlichen Elemente werden ähnlich bearbeitet. Ich persönlich finde das ganze Thema Visualisierungselemente und Bedieninterface ziemlich interessant, wenn auch sehr umfangreich. Hierzu plane ich gerade eine Artikelserie, welche die Grundlagen und verschiedene Problemstellungen bearbeitet.

Funktionscheck

Schlussendlich folgt noch die live Demonstration der Anwendung:

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website benutzt Cookies und Google Analytics. Wenn du die Website weiter nutzt, gehen wir von deinem Einverständnis aus Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen