View a markdown version of this page

Modbus-RTU Protokolladapter - AWS IoT Greengrass

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Modbus-RTU Protokolladapter

Die Modbus-RTU Protokolladapterkomponente (aws.greengrass.Modbus) fragt Informationen von lokalen Modbus RTU-Geräten ab.

Um Informationen von einem lokalen Modbus-RTU-Gerät mit dieser Komponente anzufordern, veröffentlichen Sie eine Nachricht zu dem Thema, bei dem sich diese Komponente angemeldet hat. Geben Sie in der Nachricht die Modbus RTU-Anfrage an, die an ein Gerät gesendet werden soll. Anschließend veröffentlicht diese Komponente eine Antwort, die das Ergebnis der Modbus RTU-Anforderung enthält.

Anmerkung

Diese Komponente bietet ähnliche Funktionen wie der Modbus RTU-Protokolladapteranschluss in V1. AWS IoT Greengrass Weitere Informationen finden Sie im V1-Entwicklerhandbuch unter Modbus RTU-Protokolladapteranschluss. AWS IoT Greengrass

Versionen

Diese Komponente hat die folgenden Versionen:

  • 2.1.x

  • 2.0.x

Typ

Diese Komponente ist eine Lambda-Komponente ()aws.greengrass.lambda. Der Greengrass-Nukleus führt die Lambda-Funktion dieser Komponente mithilfe der Lambda-Launcher-Komponente aus.

Weitere Informationen finden Sie unter Komponententypen.

Betriebssystem

Diese Komponente kann nur auf Linux-Core-Geräten installiert werden.

Voraussetzungen

Für diese Komponente gelten die folgenden Anforderungen:

  • Ihr Kerngerät muss die Anforderungen erfüllen, um Lambda-Funktionen ausführen zu können. Wenn Sie möchten, dass das Kerngerät containerisierte Lambda-Funktionen ausführt, muss das Gerät die entsprechenden Anforderungen erfüllen. Weitere Informationen finden Sie unter Anforderungen an die Lambda-Funktion.

  • https://www.python.org/Python-Version 3.7 wurde auf dem Kerngerät installiert und der PATH-Umgebungsvariablen hinzugefügt.

  • Eine physische Verbindung zwischen dem AWS IoT Greengrass Kerngerät und den Modbus-Geräten. Das Kerngerät muss über eine serielle Schnittstelle, z. B. einen USB-Anschluss, physisch mit dem Modbus RTU-Netzwerk verbunden sein.

  • Um Ausgabedaten von dieser Komponente zu empfangen, müssen Sie das folgende Konfigurationsupdate für die ältere Abonnement-Router-Komponente (aws.greengrass.LegacySubscriptionRouter) zusammenführen, wenn Sie diese Komponente bereitstellen. Diese Konfiguration gibt das Thema an, zu dem diese Komponente Antworten veröffentlicht.

    Legacy subscription router v2.1.x
    { "subscriptions": { "aws-greengrass-modbus": { "id": "aws-greengrass-modbus", "source": "component:aws.greengrass.Modbus", "subject": "modbus/adapter/response", "target": "cloud" } } }
    Legacy subscription router v2.0.x
    { "subscriptions": { "aws-greengrass-modbus": { "id": "aws-greengrass-modbus", "source": "arn:aws:lambda:region:aws:function:aws-greengrass-modbus:version", "subject": "modbus/adapter/response", "target": "cloud" } } }
    • regionErsetzen Sie durch das AWS-Region , was Sie verwenden.

    • versionErsetzen Sie durch die Version der Lambda-Funktion, die diese Komponente ausführt. Um die Version der Lambda-Funktion zu finden, müssen Sie sich das Rezept für die Version dieser Komponente ansehen, die Sie bereitstellen möchten. Öffnen Sie die Detailseite dieser Komponente in der AWS IoT Greengrass Konsole und suchen Sie nach dem Schlüssel-Wert-Paar der Lambda-Funktion. Dieses Schlüssel-Wert-Paar enthält den Namen und die Version der Lambda-Funktion.

    Wichtig

    Sie müssen die Lambda-Funktionsversion auf dem älteren Abonnement-Router jedes Mal aktualisieren, wenn Sie diese Komponente bereitstellen. Dadurch wird sichergestellt, dass Sie die richtige Lambda-Funktionsversion für die Komponentenversion verwenden, die Sie bereitstellen.

    Weitere Informationen finden Sie unter Erstellen von Bereitstellungen.

  • Der Modbus-RTU Protokolladapter wird für die Ausführung in einer VPC unterstützt.

Abhängigkeiten

Wenn Sie eine Komponente bereitstellen, werden AWS IoT Greengrass auch kompatible Versionen ihrer Abhängigkeiten bereitgestellt. Das bedeutet, dass Sie die Anforderungen für die Komponente und alle ihre Abhängigkeiten erfüllen müssen, um die Komponente erfolgreich bereitzustellen. In diesem Abschnitt werden die Abhängigkeiten für die veröffentlichten Versionen dieser Komponente sowie die semantischen Versionseinschränkungen aufgeführt, die die Komponentenversionen für jede Abhängigkeit definieren. Sie können die Abhängigkeiten für jede Version der Komponente auch in der AWS IoT Greengrass Konsole anzeigen. Suchen Sie auf der Seite mit den Komponentendetails nach der Liste der Abhängigkeiten.

2.1.11

In der folgenden Tabelle sind die Abhängigkeiten für Version 2.1.11 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,16,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.1.10

In der folgenden Tabelle sind die Abhängigkeiten für Version 2.1.10 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,15,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.1.9

In der folgenden Tabelle sind die Abhängigkeiten für Version 2.1.9 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,14,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.1.8

In der folgenden Tabelle sind die Abhängigkeiten für Version 2.1.8 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,13,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.1.7

In der folgenden Tabelle sind die Abhängigkeiten für Version 2.1.7 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,12,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.1.6

In der folgenden Tabelle sind die Abhängigkeiten für Version 2.1.6 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,11,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.1.4 and 2.1.5

In der folgenden Tabelle sind die Abhängigkeiten für die Versionen 2.1.4 und 2.1.5 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,1,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.1.3

In der folgenden Tabelle sind die Abhängigkeiten für Version 2.1.3 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,9,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.1.2

In der folgenden Tabelle sind die Abhängigkeiten für Version 2.1.2 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,8,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.1.1

In der folgenden Tabelle sind die Abhängigkeiten für Version 2.1.1 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,7,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.0.8 and 2.1.0

In der folgenden Tabelle sind die Abhängigkeiten für die Versionen 2.0.8 und 2.1.0 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,6,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.0.7

In der folgenden Tabelle sind die Abhängigkeiten für Version 2.0.7 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,5,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.0.6

In der folgenden Tabelle sind die Abhängigkeiten für Version 2.0.6 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,4,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.0.5

In der folgenden Tabelle sind die Abhängigkeiten für Version 2.0.5 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,3,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.0.4

In der folgenden Tabelle sind die Abhängigkeiten für Version 2.0.4 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,0 <2,2,0 Hart
Lambda-Launcher ^2.0.0 Hart
Lambda-Laufzeiten ^2,0.0 Weich
Token-Austauschdienst ^2.0.0 Hart
2.0.3

In der folgenden Tabelle sind die Abhängigkeiten für Version 2.0.3 dieser Komponente aufgeführt.

-Abhängigkeit Kompatible Versionen Typ der Abhängigkeit
Nukleus von Greengrass > =2,0,3 <2,10 Hart
Lambda-Launcher > =1,,0 Hart
Lambda-Laufzeiten > =1,,0 Weich
Token-Austauschdienst > =1,,0 Hart

Weitere Informationen zu Komponentenabhängigkeiten finden Sie in der Komponentenrezeptreferenz.

Konfiguration

Diese Komponente stellt die folgenden Konfigurationsparameter bereit, die Sie bei der Bereitstellung der Komponente anpassen können.

Anmerkung

Die Standardkonfiguration dieser Komponente umfasst Lambda-Funktionsparameter. Wir empfehlen, dass Sie nur die folgenden Parameter bearbeiten, um diese Komponente auf Ihren Geräten zu konfigurieren.

v2.1.x
lambdaParams

Ein Objekt, das die Parameter für die Lambda-Funktion dieser Komponente enthält. Dieses Objekt enthält die folgenden Informationen:

EnvironmentVariables

Ein Objekt, das die Parameter der Lambda-Funktion enthält. Dieses Objekt enthält die folgenden Informationen:

ModbusLocalPort

Der absolute Pfad zur physischen seriellen Modbus-Schnittstelle auf dem Kerngerät, z. B. /dev/ttyS2

Um diese Komponente in einem Container auszuführen, müssen Sie diesen Pfad als Systemgerät (incontainerParams.devices) definieren, auf das die Komponente zugreifen kann. Diese Komponente wird standardmäßig in einem Container ausgeführt.

Anmerkung

Diese Komponente muss read/write Zugriff auf das Gerät haben.

ModbusBaudRate

(Optional) Ein Zeichenfolgenwert, der die Baudrate für die serielle Kommunikation mit lokalen Modbus-TCP-Geräten angibt.

Standard: 9600

ModbusByteSize

(Optional) Ein Zeichenfolgenwert, der die Größe eines Bytes bei der seriellen Kommunikation mit lokalen Modbus-TCP-Geräten angibt. Wählen Sie5, 67, oder 8 Bits.

Standard: 8

ModbusParity

(Optional) Der Paritätsmodus, der zur Überprüfung der Datenintegrität bei der seriellen Kommunikation mit lokalen Modbus-TCP-Geräten verwendet werden soll.

  • E— Überprüfen Sie die Datenintegrität mit gleichmäßiger Parität.

  • O— Überprüfen Sie die Datenintegrität mit ungerader Parität.

  • N— Überprüfen Sie nicht die Datenintegrität.

Standard: N

ModbusStopBits

(Optional) Ein Zeichenfolgenwert, der die Anzahl der Bits angibt, die das Ende eines Bytes bei der seriellen Kommunikation mit lokalen Modbus-TCP-Geräten angeben.

Standard: 1

containerMode

(Optional) Der Containerisierungsmodus für diese Komponente. Wählen Sie aus den folgenden Optionen aus:

  • GreengrassContainer— Die Komponente wird in einer isolierten Laufzeitumgebung innerhalb des AWS IoT Greengrass Containers ausgeführt.

    Wenn Sie diese Option angeben, müssen Sie ein Systemgerät (incontainerParams.devices) angeben, um dem Container Zugriff auf das Modbus-Gerät zu gewähren.

  • NoContainer— Die Komponente läuft nicht in einer isolierten Laufzeitumgebung.

Standard: GreengrassContainer

containerParams

(Optional) Ein Objekt, das die Containerparameter für diese Komponente enthält. Die Komponente verwendet diese Parameter, wenn Sie GreengrassContainer für angebencontainerMode.

Dieses Objekt enthält die folgenden Informationen:

memorySize

(Optional) Die Speichermenge (in Kilobyte), die der Komponente zugewiesen werden soll.

Der Standardwert ist 512 MB (525.312 KB).

devices

(Optional) Ein Objekt, das die Systemgeräte in einem Container angibt, auf die die Komponente zugreifen kann.

Wichtig

Um diese Komponente in einem Container auszuführen, müssen Sie das Systemgerät, das Sie konfigurieren, in der ModbusLocalPort Umgebungsvariablen angeben.

Dieses Objekt enthält die folgenden Informationen:

0— Dies ist ein Array-Index als Zeichenfolge.

Ein Objekt, das die folgenden Informationen enthält:

path

Der Pfad zum Systemgerät auf dem Kerngerät. Dieser muss den gleichen Wert wie der Wert haben, für den Sie die Konfiguration vornehmenModbusLocalPort.

permission

(Optional) Die Berechtigung, vom Container aus auf das Systemgerät zuzugreifen. Dieser Wert muss dem Wert rw entsprechen, der angibt, dass die Komponente read/write Zugriff auf das Systemgerät hat.

Standard: rw

addGroupOwner

(Optional) Ob die Systemgruppe, auf der die Komponente ausgeführt wird, als Besitzer des Systemgeräts hinzugefügt werden soll oder nicht.

Standard: true

pubsubTopics

(Optional) Ein Objekt, das die Themen enthält, zu denen die Komponente den Empfang von Nachrichten abonniert. Sie können jedes Thema angeben und angeben, ob die Komponente MQTT-Themen von AWS IoT Core oder lokalen Themen abonniert. publish/subscribe

Dieses Objekt enthält die folgenden Informationen:

0— Dies ist ein Array-Index als Zeichenfolge.

Ein Objekt, das die folgenden Informationen enthält:

type

(Optional) Der publish/subscribe Nachrichtentyp, den diese Komponente zum Abonnieren von Nachrichten verwendet. Wählen Sie aus den folgenden Optionen aus:

  • PUB_SUB— Abonnieren Sie lokale publish/subscribe Nachrichten. Wenn Sie diese Option wählen, darf das Thema keine MQTT-Platzhalter enthalten. Weitere Hinweise zum Senden von Nachrichten aus einer benutzerdefinierten Komponente, wenn Sie diese Option angeben, finden Sie unter. Lokale Nachrichten veröffentlichen/abonnieren

  • IOT_CORE— Abonnieren Sie AWS IoT Core MQTT-Nachrichten. Wenn Sie diese Option wählen, kann das Thema MQTT-Platzhalter enthalten. Weitere Hinweise zum Senden von Nachrichten von benutzerdefinierten Komponenten, wenn Sie diese Option angeben, finden Sie unter. Publish/subscribe AWS IoT Core MQTT-Nachrichten

Standard: PUB_SUB

topic

(Optional) Das Thema, für das die Komponente den Empfang von Nachrichten abonniert. Wenn Sie IotCore für angebentype, können Sie in diesem Thema MQTT-Platzhalter (+und#) verwenden.

Beispiel Beispiel: Aktualisierung der Konfigurationszusammenführung (Containermodus)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "GreengrassContainer", "containerParams": { "devices": { "0": { "path": "/dev/ttyS2", "permission": "rw", "addGroupOwner": true } } } }
Beispiel Beispiel: Aktualisierung der Konfigurationszusammenführung (kein Containermodus)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "NoContainer" }
v2.0.x
lambdaParams

Ein Objekt, das die Parameter für die Lambda-Funktion dieser Komponente enthält. Dieses Objekt enthält die folgenden Informationen:

EnvironmentVariables

Ein Objekt, das die Parameter der Lambda-Funktion enthält. Dieses Objekt enthält die folgenden Informationen:

ModbusLocalPort

Der absolute Pfad zur physischen seriellen Modbus-Schnittstelle auf dem Kerngerät, z. B. /dev/ttyS2

Um diese Komponente in einem Container auszuführen, müssen Sie diesen Pfad als Systemgerät (incontainerParams.devices) definieren, auf das die Komponente zugreifen kann. Diese Komponente wird standardmäßig in einem Container ausgeführt.

Anmerkung

Diese Komponente muss read/write Zugriff auf das Gerät haben.

containerMode

(Optional) Der Containerisierungsmodus für diese Komponente. Wählen Sie aus den folgenden Optionen aus:

  • GreengrassContainer— Die Komponente wird in einer isolierten Laufzeitumgebung innerhalb des AWS IoT Greengrass Containers ausgeführt.

    Wenn Sie diese Option angeben, müssen Sie ein Systemgerät (incontainerParams.devices) angeben, um dem Container Zugriff auf das Modbus-Gerät zu gewähren.

  • NoContainer— Die Komponente läuft nicht in einer isolierten Laufzeitumgebung.

Standard: GreengrassContainer

containerParams

(Optional) Ein Objekt, das die Containerparameter für diese Komponente enthält. Die Komponente verwendet diese Parameter, wenn Sie GreengrassContainer für angebencontainerMode.

Dieses Objekt enthält die folgenden Informationen:

memorySize

(Optional) Die Speichermenge (in Kilobyte), die der Komponente zugewiesen werden soll.

Der Standardwert ist 512 MB (525.312 KB).

devices

(Optional) Ein Objekt, das die Systemgeräte in einem Container angibt, auf die die Komponente zugreifen kann.

Wichtig

Um diese Komponente in einem Container auszuführen, müssen Sie das Systemgerät, das Sie konfigurieren, in der ModbusLocalPort Umgebungsvariablen angeben.

Dieses Objekt enthält die folgenden Informationen:

0— Dies ist ein Array-Index als Zeichenfolge.

Ein Objekt, das die folgenden Informationen enthält:

path

Der Pfad zum Systemgerät auf dem Kerngerät. Dieser muss den gleichen Wert wie der Wert haben, für den Sie die Konfiguration vornehmenModbusLocalPort.

permission

(Optional) Die Berechtigung, vom Container aus auf das Systemgerät zuzugreifen. Dieser Wert muss dem Wert rw entsprechen, der angibt, dass die Komponente read/write Zugriff auf das Systemgerät hat.

Standard: rw

addGroupOwner

(Optional) Ob die Systemgruppe, auf der die Komponente ausgeführt wird, als Besitzer des Systemgeräts hinzugefügt werden soll oder nicht.

Standard: true

pubsubTopics

(Optional) Ein Objekt, das die Themen enthält, zu denen die Komponente den Empfang von Nachrichten abonniert. Sie können jedes Thema angeben und angeben, ob die Komponente MQTT-Themen von AWS IoT Core oder lokalen Themen abonniert. publish/subscribe

Dieses Objekt enthält die folgenden Informationen:

0— Dies ist ein Array-Index als Zeichenfolge.

Ein Objekt, das die folgenden Informationen enthält:

type

(Optional) Der publish/subscribe Nachrichtentyp, den diese Komponente zum Abonnieren von Nachrichten verwendet. Wählen Sie aus den folgenden Optionen aus:

  • PUB_SUB— Abonnieren Sie lokale publish/subscribe Nachrichten. Wenn Sie diese Option wählen, darf das Thema keine MQTT-Platzhalter enthalten. Weitere Hinweise zum Senden von Nachrichten aus einer benutzerdefinierten Komponente, wenn Sie diese Option angeben, finden Sie unter. Lokale Nachrichten veröffentlichen/abonnieren

  • IOT_CORE— Abonnieren Sie AWS IoT Core MQTT-Nachrichten. Wenn Sie diese Option wählen, kann das Thema MQTT-Platzhalter enthalten. Weitere Hinweise zum Senden von Nachrichten von benutzerdefinierten Komponenten, wenn Sie diese Option angeben, finden Sie unter. Publish/subscribe AWS IoT Core MQTT-Nachrichten

Standard: PUB_SUB

topic

(Optional) Das Thema, für das die Komponente den Empfang von Nachrichten abonniert. Wenn Sie IotCore für angebentype, können Sie in diesem Thema MQTT-Platzhalter (+und#) verwenden.

Beispiel Beispiel: Aktualisierung der Konfigurationszusammenführung (Containermodus)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "GreengrassContainer", "containerParams": { "devices": { "0": { "path": "/dev/ttyS2", "permission": "rw", "addGroupOwner": true } } } }
Beispiel Beispiel: Aktualisierung der Konfigurationszusammenführung (kein Containermodus)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "NoContainer" }

Eingabedaten

Diese Komponente akzeptiert Modbus RTU-Anforderungsparameter zum folgenden Thema und sendet die Modbus RTU-Anforderung an das Gerät. Standardmäßig abonniert diese Komponente lokale Nachrichten. publish/subscribe Weitere Informationen zum Veröffentlichen von Nachrichten aus Ihren benutzerdefinierten Komponenten an diese Komponente finden Sie unterLokale Nachrichten veröffentlichen/abonnieren.

Standardthema (lokal publish/subscribe): modbus/adapter/request

Die Nachricht akzeptiert die folgenden Eigenschaften. Eingabenachrichten müssen im JSON-Format vorliegen.

request

Die Parameter für die zu sendende Modbus RTU-Anfrage.

Die Form der Anforderungsnachricht hängt von der Art der Modbus-RTU-Anforderung ab, die sie darstellt. Die folgenden Eigenschaften sind für alle Anfragen erforderlich.

Typ: object der die folgenden Informationen enthält:

operation

Der Name des auszuführenden Vorgangs. Geben Sie beispielsweise an, ReadCoilsRequest dass Spulen auf einem Modbus-RTU-Gerät gelesen werden sollen. Weitere Hinweise zu unterstützten Vorgängen finden Sie unter. Modbus RTU-Anforderungen und -Antworten

Typ: string

device

Das Zielgerät der Anfrage.

Dieser Wert muss eine Ganzzahl zwischen 0 und sein247.

Typ: integer

Die weiteren Parameter, die in die Anforderung aufgenommen werden sollen, hängen von der Operation ab. Diese Komponente führt die zyklische Redundanzprüfung (CRC) durch, um Datenanforderungen für Sie zu überprüfen.

Anmerkung

Wenn Ihre Anfrage eine address Eigenschaft enthält, müssen Sie ihren Wert als Ganzzahl angeben. Beispiel, "address": 1.

id

Eine willkürliche ID für die Anforderung. Verwenden Sie diese Eigenschaft, um eine Eingabeanforderung einer Ausgabeantwort zuzuordnen. Wenn Sie diese Eigenschaft angeben, setzt die Komponente die id Eigenschaft im Antwortobjekt auf diesen Wert.

Typ: string

Beispiel Beispieleingabe: Lesen Spulenanforderungen
{ "request": { "operation": "ReadCoilsRequest", "device": 1, "address": 1, "count": 1 }, "id": "MyRequest" }

Ausgabedaten

Diese Komponente veröffentlicht standardmäßig Antworten als Ausgabedaten zum folgenden MQTT-Thema. Sie müssen dieses Thema subject in der Konfiguration für die ältere Abonnement-Router-Komponente als das angeben. Weitere Informationen zum Abonnieren von Nachrichten zu diesem Thema in Ihren benutzerdefinierten Komponenten finden Sie unterPublish/subscribe AWS IoT Core MQTT-Nachrichten.

Standardthema (AWS IoT Core MQTT): modbus/adapter/response

Die Form der Antwortnachricht hängt von der Anforderungsoperation und dem Antwortstatus ab. Beispiele finden Sie unter Beispiel: Anforderungen und Antworten.

Jede Antwort beinhaltet die folgenden Eigenschaften:

response

Die Antwort vom Modbus RTU-Gerät.

Typ: der object die folgenden Informationen enthält:

status

Der Status der Anforderung. Der Status kann einer der folgenden Werte sein:

  • Success— Die Anfrage war gültig, die Komponente hat die Anfrage an das Modbus RTU-Netzwerk gesendet und das Modbus RTU-Netzwerk hat eine Antwort zurückgegeben.

  • Exception— Die Anfrage war gültig, die Komponente hat die Anfrage an das Modbus RTU-Netzwerk gesendet und das Modbus RTU-Netzwerk hat eine Ausnahme zurückgegeben. Weitere Informationen finden Sie unter Antwortstatus: Ausnahme.

  • No Response— Die Anfrage war ungültig und die Komponente hat den Fehler erkannt, bevor sie die Anfrage an das Modbus RTU-Netzwerk gesendet hat. Weitere Informationen finden Sie unter Antwortstatus: Keine Antwort.

operation

Der Vorgang, den die Komponente angefordert hat.

device

Das Gerät, an das die Komponente die Anfrage gesendet hat.

payload

Die Antwort vom Modbus RTU-Gerät. Wenn ja statusNo Response, enthält dieses Objekt nur eine error Eigenschaft mit der Beschreibung des Fehlers (z. B.[Input/Output] No Response received from the remote unit).

id

Die ID der Anfrage, anhand derer Sie identifizieren können, welche Antwort welcher Anfrage entspricht.

Anmerkung

Eine Antwort für einen Schreibvorgang ist lediglich ein Echo der Anforderung. Write-Antworten enthalten zwar keine aussagekräftigen Informationen, es empfiehlt sich jedoch, den Status der Antwort zu überprüfen, um festzustellen, ob die Anfrage erfolgreich ist oder nicht.

Beispiel Beispielausgabe: Erfolg
{ "response" : { "status" : "success", "device": 1, "operation": "ReadCoilsRequest", "payload": { "function_code": 1, "bits": [1] } }, "id" : "MyRequest" }
Beispiel Beispielausgabe: Fehler
{ "response" : { "status" : "fail", "error_message": "Internal Error", "error": "Exception", "device": 1, "operation": "ReadCoilsRequest", "payload": { "function_code": 129, "exception_code": 2 } }, "id" : "MyRequest" }

Weitere Beispiele finden Sie unter Beispiel: Anforderungen und Antworten.

Modbus RTU-Anforderungen und -Antworten

Dieser Konnektor akzeptiert Modbus RTU-Anfrageparameter als Eingabedaten und veröffentlicht Antworten als Ausgabedaten.

Die folgenden allgemeinen Operationen werden unterstützt.

Vorgangsname in Anforderung Funktionscode in Antwort
ReadCoilsRequest 01
ReadDiscreteInputsRequest 02
ReadHoldingRegistersRequest 03
ReadInputRegistersRequest 04
WriteSingleCoilRequest 05
WriteSingleRegisterRequest 06
WriteMultipleCoilsRequest 15
WriteMultipleRegistersRequest 16
MaskWriteRegisterRequest 22
ReadWriteMultipleRegistersRequest 23

Im Folgenden finden Sie Beispiele für Anfragen und Antworten für unterstützte Operationen.

Spulen lesen

Anfragebeispiel:

{ "request": { "operation": "ReadCoilsRequest", "device": 1, "address": 1, "count": 1 }, "id": "TestRequest" }

Antwortbeispiel:

{ "response": { "status": "success", "device": 1, "operation": "ReadCoilsRequest", "payload": { "function_code": 1, "bits": [1] } }, "id" : "TestRequest" }
Lesen Sie diskrete Eingänge

Anfragebeispiel:

{ "request": { "operation": "ReadDiscreteInputsRequest", "device": 1, "address": 1, "count": 1 }, "id": "TestRequest" }

Antwortbeispiel:

{ "response": { "status": "success", "device": 1, "operation": "ReadDiscreteInputsRequest", "payload": { "function_code": 2, "bits": [1] } }, "id" : "TestRequest" }
Halteregister lesen

Anfragebeispiel:

{ "request": { "operation": "ReadHoldingRegistersRequest", "device": 1, "address": 1, "count": 1 }, "id": "TestRequest" }

Antwortbeispiel:

{ "response": { "status": "success", "device": 1, "operation": "ReadHoldingRegistersRequest", "payload": { "function_code": 3, "registers": [20,30] } }, "id" : "TestRequest" }
Eingaberegister lesen

Anfragebeispiel:

{ "request": { "operation": "ReadInputRegistersRequest", "device": 1, "address": 1, "count": 1 }, "id": "TestRequest" }
Schreiben Sie eine einzelne Spule

Anfragebeispiel:

{ "request": { "operation": "WriteSingleCoilRequest", "device": 1, "address": 1, "value": 1 }, "id": "TestRequest" }

Antwortbeispiel:

{ "response": { "status": "success", "device": 1, "operation": "WriteSingleCoilRequest", "payload": { "function_code": 5, "address": 1, "value": true } }, "id" : "TestRequest" }
Schreiben Sie ein einzelnes Register

Anfragebeispiel:

{ "request": { "operation": "WriteSingleRegisterRequest", "device": 1, "address": 1, "value": 1 }, "id": "TestRequest" }
Schreiben Sie mehrere Spulen

Anfragebeispiel:

{ "request": { "operation": "WriteMultipleCoilsRequest", "device": 1, "address": 1, "values": [1,0,0,1] }, "id": "TestRequest" }

Antwortbeispiel:

{ "response": { "status": "success", "device": 1, "operation": "WriteMultipleCoilsRequest", "payload": { "function_code": 15, "address": 1, "count": 4 } }, "id" : "TestRequest" }
Schreiben Sie mehrere Register

Anfragebeispiel:

{ "request": { "operation": "WriteMultipleRegistersRequest", "device": 1, "address": 1, "values": [20,30,10] }, "id": "TestRequest" }

Antwortbeispiel:

{ "response": { "status": "success", "device": 1, "operation": "WriteMultipleRegistersRequest", "payload": { "function_code": 23, "address": 1, "count": 3 } }, "id" : "TestRequest" }
Register maskieren und schreiben

Anfragebeispiel:

{ "request": { "operation": "MaskWriteRegisterRequest", "device": 1, "address": 1, "and_mask": 175, "or_mask": 1 }, "id": "TestRequest" }

Antwortbeispiel:

{ "response": { "status": "success", "device": 1, "operation": "MaskWriteRegisterRequest", "payload": { "function_code": 22, "and_mask": 0, "or_mask": 8 } }, "id" : "TestRequest" }
Lese- und Schreibzugriff auf mehrere Register

Anfragebeispiel:

{ "request": { "operation": "ReadWriteMultipleRegistersRequest", "device": 1, "read_address": 1, "read_count": 2, "write_address": 3, "write_registers": [20,30,40] }, "id": "TestRequest" }

Antwortbeispiel:

{ "response": { "status": "success", "device": 1, "operation": "ReadWriteMultipleRegistersRequest", "payload": { "function_code": 23, "registers": [10,20,10,20] } }, "id" : "TestRequest" }
Anmerkung

Die Antwort beinhaltet die Register, die die Komponente liest.

Ausnahmen können auftreten, wenn das Anfrageformat gültig ist, die Anfrage aber nicht erfolgreich abgeschlossen wurde. In diesem Fall enthält die Antwort die folgenden Informationen:

  • Der status wird auf Exception gesetzt.

  • Der function_code entspricht dem Funktionscode der Anforderung + 128.

  • Der exception_code enthält den Ausnahmecode. Weitere Informationen finden Sie unter Modbus-Ausnahmecodes.

Beispiel:

{ "response": { "status": "fail", "error_message": "Internal Error", "error": "Exception", "device": 1, "operation": "ReadCoilsRequest", "payload": { "function_code": 129, "exception_code": 2 } }, "id": "TestRequest" }

Dieser Konnektor führt Validierungsprüfungen für die Modbus-Anforderung durch. So wird beispielsweise nach ungültigen Formaten und fehlenden Feldern gesucht. Wenn die Validierung fehlschlägt, sendet der Konnektor die Anforderung nicht. Stattdessen gibt er eine Antwort zurück, die die folgenden Informationen enthält:

  • Der status wird auf No Response gesetzt.

  • Der error enthält die Fehlerursache.

  • Die error_message enthält die Fehlermeldung.

Beispiele:

{ "response": { "status": "fail", "error_message": "Invalid address field. Expected <type 'int'>, got <type 'str'>", "error": "No Response", "device": 1, "operation": "ReadCoilsRequest", "payload": { "error": "Invalid address field. Expected Expected <type 'int'>, got <type 'str'>" } }, "id": "TestRequest" }

Wenn die Anforderung auf ein nicht vorhandenes Gerät abzielt oder wenn das Modbus RTU-Netzwerk nicht funktioniert, erhalten Sie möglicherweise eine ModbusIOException, die das No Response-Format verwendet.

{ "response": { "status": "fail", "error_message": "[Input/Output] No Response received from the remote unit", "error": "No Response", "device": 1, "operation": "ReadCoilsRequest", "payload": { "error": "[Input/Output] No Response received from the remote unit" } }, "id": "TestRequest" }

Lokale Protokolldatei

Diese Komponente verwendet die folgende Protokolldatei.

/greengrass/v2/logs/aws.greengrass.Modbus.log
Um die Protokolle dieser Komponente einzusehen
  • Führen Sie den folgenden Befehl auf dem Kerngerät aus, um die Protokolldatei dieser Komponente in Echtzeit anzuzeigen. /greengrass/v2Ersetzen Sie es durch den Pfad zum AWS IoT Greengrass Stammordner.

    sudo tail -f /greengrass/v2/logs/aws.greengrass.Modbus.log

Lizenzen

Diese Komponente umfasst die folgenden Drittanbieter software/licensing:

Diese Komponente wird im Rahmen der Greengrass Core-Softwarelizenzvereinbarung veröffentlicht.

Änderungsprotokoll

In der folgenden Tabelle werden die Änderungen in den einzelnen Versionen der Komponente beschrieben.

Version

Änderungen

2.1.11

Die Version wurde für die Greengrass Nucleus-Version 2.15.0 aktualisiert.

2.1.10

Version für Greengrass Nucleus Version 2.14.0 aktualisiert.

2.1.9

Die Version wurde für die Greengrass Nucleus-Version 2.13.0 aktualisiert.

2.1.8

Die Version wurde für die Greengrass Nucleus-Version 2.12.0 aktualisiert.

2.1.7

Die Version wurde für die Greengrass Nucleus-Version 2.11.0 aktualisiert.

2.1.6

Die Version wurde für die Greengrass Nucleus-Version 2.10.0 aktualisiert.

2.1.5

Fehlerbehebungen und Verbesserungen
  • Behebt ein Problem mit der ReadDiscreteInput Operation.

2.1.4

Die Version wurde für die Greengrass Nucleus-Version 2.9.0 aktualisiert.

2.1.3

Die Version wurde für die Greengrass Nucleus-Version 2.8.0 aktualisiert.

2.1.2

Version für die Greengrass Nucleus-Version 2.7.0 aktualisiert.

2.1.1

Die Version wurde für die Greengrass Nucleus-Version 2.6.0 aktualisiert.

2.1.0

Neue Features
  • Fügt die ModbusStopBits OptionenModbusBaudRate,ModbusByteSize, und hinzuModbusParity, die Sie angeben können, um die serielle Kommunikation mit Modbus RTU-Geräten zu konfigurieren.

2.0.8

Die Version wurde für die Greengrass Nucleus-Version 2.5.0 aktualisiert.

2.0.7

Die Version wurde für die Greengrass Nucleus-Version 2.4.0 aktualisiert.

2.0.6

Die Version wurde für die Greengrass Nucleus-Version 2.3.0 aktualisiert.

2.0.5

Die Version wurde für die Greengrass Nucleus-Version 2.2.0 aktualisiert.

2.0.4

Die Version wurde für die Greengrass Nucleus-Version 2.1.0 aktualisiert.

2.0.3

Erste Version