Skip to main content

Konfiguration von CODESYS

Dieser Abschnitt beschreibt, wie Sie CODESYS konfigurieren, um mit der angelegten Azure-Ressourcen zu kommunizieren.

Projekt vorbereiten

Als Basis für diese Anweisung wird das Beispiel Verwenden der Bibliothek MQTT Client SL verwendet.

  1. Installieren Sie das Beispiel Verwenden der Bibliothek MQTT Client SL.

  2. Machen Sie das Beispiel lauffähig.

    Für weitere Informationen siehe: CODESYS-Beispielprojekte lauffähig machen

  3. Stellen Sie sicher, dass das Add-On CODESYS Security Agent in Ihrer CODESYS-Installation vorhanden ist.

Fingerabdruck auslesen

Um in Azure einen Fingerabdruck für eine Client-Identität eintragen zu können, muss dieser aus dem Zertifikat einer Steuerung ausgelesen werden

  1. Öffnen Sie dazu den Security Agent und navigieren Sie in die Registerkarte Geräte.

  2. Selektieren Sie Eigene Zertifikate.

  3. Doppelklicken Sie auf das Zertifikat Ihres Geräts.

    Das Zertifikat heißt normalerweise Verschlüsselte Kommunikation und zeichnet sich dadurch aus, dass die Eigenschaften Ausgestellt für und Ausgestellt von beide mit dem Gerätenamen übereinstimmen (→ Selbstsigniertes Zertifikat).

    Ein Windows-Zertifikatseigenschaftsfenster öffnet sich.

  4. Navigieren Sie in die Registerkarte Details des Eigenschaftsfensters.

  5. Finden Sie die Eigenschaft Fingerabdruck (üblicherweise letzter Eintrag der Tabelle) und selektieren Sie ihn.

  6. Aus dem unteren Textfeld des Fensters können Sie jetzt den Fingerabdruck des Zertifikats für später kopieren.

TLS-Kontext konfigurieren

Im Deklarationsbereich des Hauptprogramms PRG finden Sie eine auskommentierte Deklaration für einen TLS-Kontext, der für die Verwendung von Client-Zertifikaten vorgesehen ist. Kommentieren Sie diese Deklaration ein und passen Sie folgende Zuweisungen an:

  1. Öffnen Sie das Hauptprogramm PRG.

  2. Suche Sie eine auskommentierte Deklaration für einen TLS-Kontext, der für die Verwendung von Client-Zertifikaten vorgesehen ist. Kommentieren Sie diese Deklaration ein und passen Sie folgende Zuweisungen an

    Parameter

    Beispielwert

    Beschreibung

    _sCommonName

    Gerätename Ihrer Steuerung

    Der Common Name (CN) des Zertifikats. Für das selbstsignierte Gerätezertifikat Ihrer SPS stimmt er mit dem Gerätenamen überein.

    _sTLSVersion

    1.3

    Das Azure Event Grid unterstützt die TLS-Versionen 1.2 und 1.3.

    Für weitere Informationen siehe: Hilfeseite von Microsoft Azure

    sHostname

    <MQTT Hostname>

    Der MQTT Hostname des Brokers innerhalb des Event Grid Namespaces.

    Sie können Ihren Hostnamen wie in Abschnitt "MTT Hostname" beschrieben auslesen, um ihn hier einzusetzen.

    udiVerificationMode

    1

    1 := No peer verification

    Für weitere Informationen siehe Funktionsbaustein TLSContext

  3. Suchen Sie unter dem vorkonfigurierten, vereinfachten TLS-Kontext die Zeile itfTlsContext : NBS.ITLSContext := tlsContext;.

    Verschieben Sie diese Zeile unter den neu deklarierten TLSContext und passen Sie die Zuweisung zu := _tlsContext an.

    Der Funktionsbaustein MQTTClient verwendet nun Ihren konfigurierten TLS-Kontext statt dem vorkonfigurierten TLS-Kontext im Beispielprojekt.

Timeout für MQTTClient setzen

  1. Öffnen Sie das Hauptprogramm PRG.

  2. Fügen Sie im Deklarationsbereicheine neue Timeout-Variable hinzu.

  3. Verknüpfen Sie die Timeout-Variable im CFC-Editor mit dem Eingang udiTimeOut des Funktionsbausteins MQTTClient, um einen Timeout beim Verbindungsaufbau zu setzen.Alternativ können Sie ein numerisches Literal (beispielsweise 3000000) direkt mit dem Eingang verbinden.

    Wenn Sie den Timeout nicht setzen, wird der Client niemals in einen Fehlerzustand wechseln, wenn die Verbindung nicht hergestellt werden kann

Tipp

Eine Timeout-Dauer für den Funktionsbaustein MQTTClient wird in Mikrosekunden angegeben. Wenn Sie später beim Testen einen Fehler TCP_INIT_ERROR erhalten, überprüfen Sie zuerst den konfigurierten Timeout-Wert und setzen Sie diesen gegebenenfalls auf einen höheren Wert.

Deklarationsbeispiel:

udiTimeout : UDINT := 3000000; // µs -> 3s

Damit ist der CODESYS-Client für eine konkrete Verbindungsparametrisierung vorbereitet.