View a markdown version of this page

Modbus-RTU adattatore di protocollo - AWS IoT Greengrass

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Modbus-RTU adattatore di protocollo

Il componente dell'adattatore di Modbus-RTU protocollo (aws.greengrass.Modbus) raccoglie le informazioni dai dispositivi Modbus RTU locali.

Per richiedere informazioni a un dispositivo Modbus RTU locale con questo componente, pubblica un messaggio nell'argomento a cui questo componente è abbonato. Nel messaggio, specifica la richiesta Modbus RTU da inviare a un dispositivo. Quindi, questo componente pubblica una risposta che contiene il risultato della richiesta Modbus RTU.

Nota

Questo componente offre funzionalità simili al connettore dell'adattatore di protocollo Modbus RTU in V1. AWS IoT Greengrass Per ulteriori informazioni, vedere il connettore dell'adattatore di protocollo Modbus RTU nella V1 Developer Guide. AWS IoT Greengrass

Versioni

Questo componente ha le seguenti versioni:

  • 2.1.x

  • 2.0.x

Tipo

Questo componente è un componente Lambda (aws.greengrass.lambda). Il nucleo di Greengrass esegue la funzione Lambda di questo componente utilizzando il componente di avvio Lambda.

Per ulteriori informazioni, consulta Tipi di componenti.

Sistema operativo

Questo componente può essere installato solo su dispositivi Linux core.

Requisiti

Questo componente ha i seguenti requisiti:

  • Il dispositivo principale deve soddisfare i requisiti per eseguire le funzioni Lambda. Se desideri che il dispositivo principale esegua funzioni Lambda containerizzate, il dispositivo deve soddisfare i requisiti per farlo. Per ulteriori informazioni, consulta Requisiti della funzione Lambda.

  • La versione 3.7 di Python è stata installata sul dispositivo principale e aggiunta alla variabile di ambiente PATH.

  • Una connessione fisica tra il dispositivo AWS IoT Greengrass principale e i dispositivi Modbus. Il dispositivo principale deve essere connesso fisicamente alla rete Modbus RTU tramite una porta seriale, ad esempio una porta USB.

  • Per ricevere i dati di output da questo componente, è necessario unire il seguente aggiornamento di configurazione per il vecchio componente router in abbonamento (aws.greengrass.LegacySubscriptionRouter) quando si distribuisce questo componente. Questa configurazione specifica l'argomento in cui questo componente pubblica le risposte.

    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" } } }
    • Sostituisci region con quello Regione AWS che usi.

    • Sostituisci version con la versione della funzione Lambda eseguita da questo componente. Per trovare la versione della funzione Lambda, è necessario visualizzare la ricetta per la versione di questo componente che si desidera distribuire. Apri la pagina dei dettagli di questo componente nella AWS IoT Greengrass console e cerca la coppia chiave-valore della funzione Lambda. Questa coppia chiave-valore contiene il nome e la versione della funzione Lambda.

    Importante

    È necessario aggiornare la versione della funzione Lambda sul router di abbonamento precedente ogni volta che si distribuisce questo componente. Ciò garantisce l'utilizzo della versione della funzione Lambda corretta per la versione del componente da distribuire.

    Per ulteriori informazioni, consulta Creare distribuzione.

  • L'adattatore di Modbus-RTU protocollo è supportato per l'esecuzione in un VPC.

Dipendenze

Quando si distribuisce un componente, vengono distribuite AWS IoT Greengrass anche versioni compatibili delle relative dipendenze. Ciò significa che è necessario soddisfare i requisiti del componente e tutte le sue dipendenze per distribuire correttamente il componente. Questa sezione elenca le dipendenze per le versioni rilasciate di questo componente e i vincoli semantici della versione che definiscono le versioni dei componenti per ciascuna dipendenza. È inoltre possibile visualizzare le dipendenze per ciascuna versione del componente nella console. AWS IoT Greengrass Nella pagina dei dettagli del componente, cerca l'elenco delle dipendenze.

2.1.11

La tabella seguente elenca le dipendenze per la versione 2.1.11 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.16.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.1.10

La tabella seguente elenca le dipendenze per la versione 2.1.10 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.15.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.1.9

La tabella seguente elenca le dipendenze per la versione 2.1.9 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.14.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.1.8

La tabella seguente elenca le dipendenze per la versione 2.1.8 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.13.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.1.7

La tabella seguente elenca le dipendenze per la versione 2.1.7 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.12.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.1.6

La tabella seguente elenca le dipendenze per la versione 2.1.6 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.11.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.1.4 and 2.1.5

La tabella seguente elenca le dipendenze per le versioni 2.1.4 e 2.1.5 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.10.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.1.3

La tabella seguente elenca le dipendenze per la versione 2.1.3 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.9.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.1.2

La tabella seguente elenca le dipendenze per la versione 2.1.2 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.8.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.1.1

La tabella seguente elenca le dipendenze per la versione 2.1.1 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.7.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.0.8 and 2.1.0

La tabella seguente elenca le dipendenze per le versioni 2.0.8 e 2.1.0 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.6.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.0.7

La tabella seguente elenca le dipendenze per la versione 2.0.7 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.5.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.0.6

La tabella seguente elenca le dipendenze per la versione 2.0.6 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.4.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.0.5

La tabella seguente elenca le dipendenze per la versione 2.0.5 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.3.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.0.4

La tabella seguente elenca le dipendenze per la versione 2.0.4 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.0 <2.2.0 Rigidi
Launcher Lambda ^2.0.0 Rigidi
Runtime Lambda ^2.0.0 Flessibili
Servizio di scambio di token ^2.0.0 Rigidi
2.0.3

La tabella seguente elenca le dipendenze per la versione 2.0.3 di questo componente.

Dipendenza Versioni compatibili Tipo di dipendenza
Nucleo Greengrass > =2.0.3 <2.1.0 Rigidi
Launcher Lambda > = 1.0.0 Rigidi
Runtime Lambda >=1.0.0 Flessibili
Servizio di scambio di token > = 1.0.0 Rigidi

Per ulteriori informazioni sulle dipendenze dei componenti, consultate il riferimento alla composizione dei componenti.

Configurazione

Questo componente fornisce i seguenti parametri di configurazione che è possibile personalizzare durante la distribuzione del componente.

Nota

La configurazione predefinita di questo componente include i parametri della funzione Lambda. Ti consigliamo di modificare solo i seguenti parametri per configurare questo componente sui tuoi dispositivi.

v2.1.x
lambdaParams

Un oggetto che contiene i parametri per la funzione Lambda di questo componente. Questo oggetto contiene le seguenti informazioni:

EnvironmentVariables

Un oggetto che contiene i parametri della funzione Lambda. Questo oggetto contiene le seguenti informazioni:

ModbusLocalPort

Il percorso assoluto della porta seriale Modbus fisica sul dispositivo principale, ad esempio/dev/ttyS2.

Per eseguire questo componente in un contenitore, è necessario definire questo percorso come dispositivo di sistema (incontainerParams.devices) a cui il componente può accedere. Per impostazione predefinita, questo componente viene eseguito in un contenitore.

Nota

Questo componente deve avere read/write accesso al dispositivo.

ModbusBaudRate

(Facoltativo) Un valore di stringa che specifica la velocità di trasmissione per la comunicazione seriale con i dispositivi Modbus TCP locali.

Impostazione predefinita: 9600

ModbusByteSize

(Facoltativo) Un valore di stringa che specifica la dimensione di un byte nella comunicazione seriale con dispositivi Modbus TCP locali. Scegli5,, o 6 bit7. 8

Impostazione predefinita: 8

ModbusParity

(Facoltativo) La modalità di parità da utilizzare per verificare l'integrità dei dati nella comunicazione seriale con dispositivi Modbus TCP locali.

  • E— Verifica l'integrità dei dati con una parità uniforme.

  • O— Verifica l'integrità dei dati con una parità dispari.

  • N— Non verificare l'integrità dei dati.

Impostazione predefinita: N

ModbusStopBits

(Facoltativo) Un valore di stringa che specifica il numero di bit che indicano la fine di un byte nella comunicazione seriale con i dispositivi Modbus TCP locali.

Impostazione predefinita: 1

containerMode

(Facoltativo) La modalità di containerizzazione per questo componente. Seleziona una delle opzioni seguenti:

  • GreengrassContainer— Il componente viene eseguito in un ambiente di runtime isolato all'interno del AWS IoT Greengrass contenitore.

    Se si specifica questa opzione, è necessario specificare un dispositivo di sistema (incontainerParams.devices) per consentire al contenitore di accedere al dispositivo Modbus.

  • NoContainer— Il componente non viene eseguito in un ambiente di runtime isolato.

Impostazione predefinita: GreengrassContainer

containerParams

(Facoltativo) Un oggetto che contiene i parametri del contenitore per questo componente. Il componente utilizza questi parametri se specificate GreengrassContainer percontainerMode.

Questo oggetto contiene le seguenti informazioni:

memorySize

(Facoltativo) La quantità di memoria (in kilobyte) da allocare al componente.

Il valore predefinito è 512 MB (525.312 KB).

devices

(Facoltativo) Un oggetto che specifica i dispositivi di sistema a cui il componente può accedere in un contenitore.

Importante

Per eseguire questo componente in un contenitore, è necessario specificare il dispositivo di sistema che si configura nella variabile di ModbusLocalPort ambiente.

Questo oggetto contiene le seguenti informazioni:

0— Questo è un indice di matrice sotto forma di stringa.

Un oggetto che contiene le seguenti informazioni:

path

Il percorso del dispositivo di sistema sul dispositivo principale. Questo deve avere lo stesso valore per il quale si configuraModbusLocalPort.

permission

(Facoltativo) L'autorizzazione per accedere al dispositivo di sistema dal contenitore. Questo valore deve essererw, il che specifica che il componente ha read/write accesso al dispositivo di sistema.

Impostazione predefinita: rw

addGroupOwner

(Facoltativo) Se aggiungere o meno il gruppo di sistema che esegue il componente come proprietario del dispositivo di sistema.

Impostazione predefinita: true

pubsubTopics

(Facoltativo) Un oggetto che contiene gli argomenti a cui il componente si iscrive per ricevere messaggi. È possibile specificare ogni argomento e se il componente sottoscrive argomenti MQTT provenienti da AWS IoT Core o argomenti locali. publish/subscribe

Questo oggetto contiene le seguenti informazioni:

0— Questo è un indice di matrice sotto forma di stringa.

Un oggetto che contiene le seguenti informazioni:

type

(Facoltativo) Il tipo di publish/subscribe messaggistica utilizzato da questo componente per sottoscrivere i messaggi. Seleziona una delle opzioni seguenti:

  • PUB_SUB— Sottoscrivi ai publish/subscribe messaggi locali. Se scegli questa opzione, l'argomento non può contenere caratteri jolly MQTT. Per ulteriori informazioni su come inviare messaggi da un componente personalizzato quando si specifica questa opzione, vedere. Pubblicare/sottoscrivere messaggi locali

  • IOT_CORE— Iscriviti ai messaggi AWS IoT Core MQTT. Se scegli questa opzione, l'argomento può contenere caratteri jolly MQTT. Per ulteriori informazioni su come inviare messaggi da componenti personalizzati quando si specifica questa opzione, vedere. Publish/subscribe AWS IoT Core Messaggi MQTT

Impostazione predefinita: PUB_SUB

topic

(Facoltativo) L'argomento a cui il componente si iscrive per ricevere messaggi. Se si specifica IotCore pertype, è possibile utilizzare i caratteri jolly MQTT (+e#) in questo argomento.

Esempio Esempio: aggiornamento dell'unione delle configurazioni (modalità contenitore)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "GreengrassContainer", "containerParams": { "devices": { "0": { "path": "/dev/ttyS2", "permission": "rw", "addGroupOwner": true } } } }
Esempio Esempio: aggiornamento dell'unione delle configurazioni (nessuna modalità contenitore)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "NoContainer" }
v2.0.x
lambdaParams

Un oggetto che contiene i parametri per la funzione Lambda di questo componente. Questo oggetto contiene le seguenti informazioni:

EnvironmentVariables

Un oggetto che contiene i parametri della funzione Lambda. Questo oggetto contiene le seguenti informazioni:

ModbusLocalPort

Il percorso assoluto della porta seriale Modbus fisica sul dispositivo principale, ad esempio/dev/ttyS2.

Per eseguire questo componente in un contenitore, è necessario definire questo percorso come dispositivo di sistema (incontainerParams.devices) a cui il componente può accedere. Per impostazione predefinita, questo componente viene eseguito in un contenitore.

Nota

Questo componente deve avere read/write accesso al dispositivo.

containerMode

(Facoltativo) La modalità di containerizzazione per questo componente. Seleziona una delle opzioni seguenti:

  • GreengrassContainer— Il componente viene eseguito in un ambiente di runtime isolato all'interno del AWS IoT Greengrass contenitore.

    Se si specifica questa opzione, è necessario specificare un dispositivo di sistema (incontainerParams.devices) per consentire al contenitore di accedere al dispositivo Modbus.

  • NoContainer— Il componente non viene eseguito in un ambiente di runtime isolato.

Impostazione predefinita: GreengrassContainer

containerParams

(Facoltativo) Un oggetto che contiene i parametri del contenitore per questo componente. Il componente utilizza questi parametri se specificate GreengrassContainer percontainerMode.

Questo oggetto contiene le seguenti informazioni:

memorySize

(Facoltativo) La quantità di memoria (in kilobyte) da allocare al componente.

Il valore predefinito è 512 MB (525.312 KB).

devices

(Facoltativo) Un oggetto che specifica i dispositivi di sistema a cui il componente può accedere in un contenitore.

Importante

Per eseguire questo componente in un contenitore, è necessario specificare il dispositivo di sistema che si configura nella variabile di ModbusLocalPort ambiente.

Questo oggetto contiene le seguenti informazioni:

0— Questo è un indice di matrice sotto forma di stringa.

Un oggetto che contiene le seguenti informazioni:

path

Il percorso del dispositivo di sistema sul dispositivo principale. Questo deve avere lo stesso valore per il quale si configuraModbusLocalPort.

permission

(Facoltativo) L'autorizzazione per accedere al dispositivo di sistema dal contenitore. Questo valore deve essererw, il che specifica che il componente ha read/write accesso al dispositivo di sistema.

Impostazione predefinita: rw

addGroupOwner

(Facoltativo) Se aggiungere o meno il gruppo di sistema che esegue il componente come proprietario del dispositivo di sistema.

Impostazione predefinita: true

pubsubTopics

(Facoltativo) Un oggetto che contiene gli argomenti a cui il componente si iscrive per ricevere messaggi. È possibile specificare ogni argomento e se il componente sottoscrive argomenti MQTT provenienti da AWS IoT Core o argomenti locali. publish/subscribe

Questo oggetto contiene le seguenti informazioni:

0— Questo è un indice di matrice sotto forma di stringa.

Un oggetto che contiene le seguenti informazioni:

type

(Facoltativo) Il tipo di publish/subscribe messaggistica utilizzato da questo componente per sottoscrivere i messaggi. Seleziona una delle opzioni seguenti:

  • PUB_SUB— Sottoscrivi ai publish/subscribe messaggi locali. Se scegli questa opzione, l'argomento non può contenere caratteri jolly MQTT. Per ulteriori informazioni su come inviare messaggi da un componente personalizzato quando si specifica questa opzione, vedere. Pubblicare/sottoscrivere messaggi locali

  • IOT_CORE— Iscriviti ai messaggi AWS IoT Core MQTT. Se scegli questa opzione, l'argomento può contenere caratteri jolly MQTT. Per ulteriori informazioni su come inviare messaggi da componenti personalizzati quando si specifica questa opzione, vedere. Publish/subscribe AWS IoT Core Messaggi MQTT

Impostazione predefinita: PUB_SUB

topic

(Facoltativo) L'argomento a cui il componente si iscrive per ricevere messaggi. Se si specifica IotCore pertype, è possibile utilizzare i caratteri jolly MQTT (+e#) in questo argomento.

Esempio Esempio: aggiornamento dell'unione delle configurazioni (modalità contenitore)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "GreengrassContainer", "containerParams": { "devices": { "0": { "path": "/dev/ttyS2", "permission": "rw", "addGroupOwner": true } } } }
Esempio Esempio: aggiornamento dell'unione delle configurazioni (nessuna modalità contenitore)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "NoContainer" }

Dati di input

Questo componente accetta i parametri di richiesta Modbus RTU sull'argomento seguente e invia la richiesta Modbus RTU al dispositivo. Per impostazione predefinita, questo componente si iscrive ai messaggi locali. publish/subscribe Per ulteriori informazioni su come pubblicare messaggi su questo componente dai componenti personalizzati, vederePubblicare/sottoscrivere messaggi locali.

Argomento predefinito (locale publish/subscribe): modbus/adapter/request

Il messaggio accetta le seguenti proprietà. I messaggi di input devono essere in formato JSON.

request

I parametri per l'invio della richiesta Modbus RTU.

La forma del messaggio di richiesta dipende dal tipo di richiesta Modbus RTU che rappresenta. Le seguenti proprietà sono obbligatorie per tutte le richieste.

Tipo: object che contiene le seguenti informazioni:

operation

Il nome dell'operazione da eseguire. Ad esempio, specifica ReadCoilsRequest di leggere le bobine su un dispositivo Modbus RTU. Per ulteriori informazioni sulle operazioni supportate, vedere. Richieste e risposte RTU Modbus

Tipo: string

device

Il dispositivo di destinazione della richiesta.

Questo valore deve essere un numero intero compreso tra 0 e247.

Tipo: integer

Gli altri parametri di includere nella richiesta variano a seconda dell'operazione. Questo componente gestisce il controllo di ridondanza ciclica (CRC) per verificare le richieste di dati per te.

Nota

Se la richiesta include una address proprietà, è necessario specificarne il valore come numero intero. Ad esempio, "address": 1.

id

Un ID arbitrario della richiesta. Utilizzate questa proprietà per mappare una richiesta di input a una risposta di output. Quando si specifica questa proprietà, il componente imposta la id proprietà nell'oggetto di risposta su questo valore.

Tipo: string

Esempio Esempio di input: richiesta lettura nastri
{ "request": { "operation": "ReadCoilsRequest", "device": 1, "address": 1, "count": 1 }, "id": "MyRequest" }

Dati di output

Per impostazione predefinita, questo componente pubblica le risposte come dati di output sul seguente argomento MQTT. È necessario specificare questo argomento come subject nella configurazione per il componente router in abbonamento legacy. Per ulteriori informazioni su come sottoscrivere i messaggi su questo argomento nei componenti personalizzati, vederePublish/subscribe AWS IoT Core Messaggi MQTT.

Argomento predefinito (AWS IoT Core MQTT): modbus/adapter/response

La forma del messaggio di risposta dipende dall'operazione della richiesta e dallo stato della risposta. Per alcuni esempi, consulta Richieste e risposte di esempio.

Ogni risposta include le seguenti proprietà:

response

La risposta del dispositivo Modbus RTU.

Tipo: object che contiene le seguenti informazioni:

status

Stato della richiesta. Lo stato può avere uno dei seguenti valori:

  • Success— La richiesta era valida, il componente ha inviato la richiesta alla rete Modbus RTU e la rete Modbus RTU ha restituito una risposta.

  • Exception— La richiesta era valida, il componente ha inviato la richiesta alla rete Modbus RTU e la rete Modbus RTU ha restituito un'eccezione. Per ulteriori informazioni, consulta Stato risposta: eccezione.

  • No Response— La richiesta non era valida e il componente ha rilevato l'errore prima di inviare la richiesta alla rete Modbus RTU. Per ulteriori informazioni, consulta Stato risposta: nessuna risposta.

operation

L'operazione richiesta dal componente.

device

Il dispositivo in cui il componente ha inviato la richiesta.

payload

La risposta del dispositivo Modbus RTU. Se status èNo Response, questo oggetto contiene solo una error proprietà con la descrizione dell'errore (ad esempio,[Input/Output] No Response received from the remote unit).

id

L'ID della richiesta, che puoi utilizzare per identificare quale risposta corrisponde a quale richiesta.

Nota

Una risposta a un'operazione di scrittura è semplicemente un eco della richiesta. Sebbene le risposte scritte non includano informazioni significative, è buona norma controllare lo stato della risposta per vedere se la richiesta ha esito positivo o negativo.

Esempio Output di esempio: Operazione riuscita
{ "response" : { "status" : "success", "device": 1, "operation": "ReadCoilsRequest", "payload": { "function_code": 1, "bits": [1] } }, "id" : "MyRequest" }
Esempio Esempio di output: Errore
{ "response" : { "status" : "fail", "error_message": "Internal Error", "error": "Exception", "device": 1, "operation": "ReadCoilsRequest", "payload": { "function_code": 129, "exception_code": 2 } }, "id" : "MyRequest" }

Per ulteriori esempi, consulta Richieste e risposte di esempio.

Richieste e risposte RTU Modbus

Questo connettore accetta i parametri della richiesta RTU Modbus come dati di input e pubblica le risposte come dati di output.

Sono supportate le seguenti operazioni comuni.

Nome dell'operazione nella richiesta Codice della funzione in risposta
ReadCoilsRequest 01
ReadDiscreteInputsRequest 02
ReadHoldingRegistersRequest 03
ReadInputRegistersRequest 04
WriteSingleCoilRequest 05
WriteSingleRegisterRequest 06
WriteMultipleCoilsRequest 15
WriteMultipleRegistersRequest 16
MaskWriteRegisterRequest 22
ReadWriteMultipleRegistersRequest 23

Di seguito sono riportate alcune richieste e risposte di esempio per le operazioni supportate.

Leggi le bobine

Esempio di richiesta:

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

Esempio di risposta:

{ "response": { "status": "success", "device": 1, "operation": "ReadCoilsRequest", "payload": { "function_code": 1, "bits": [1] } }, "id" : "TestRequest" }
Leggi gli ingressi discreti

Esempio di richiesta:

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

Esempio di risposta:

{ "response": { "status": "success", "device": 1, "operation": "ReadDiscreteInputsRequest", "payload": { "function_code": 2, "bits": [1] } }, "id" : "TestRequest" }
Leggi i registri di attesa

Esempio di richiesta:

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

Esempio di risposta:

{ "response": { "status": "success", "device": 1, "operation": "ReadHoldingRegistersRequest", "payload": { "function_code": 3, "registers": [20,30] } }, "id" : "TestRequest" }
Leggi i registri di input

Esempio di richiesta:

{ "request": { "operation": "ReadInputRegistersRequest", "device": 1, "address": 1, "count": 1 }, "id": "TestRequest" }
Scrivi una bobina

Esempio di richiesta:

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

Esempio di risposta:

{ "response": { "status": "success", "device": 1, "operation": "WriteSingleCoilRequest", "payload": { "function_code": 5, "address": 1, "value": true } }, "id" : "TestRequest" }
Scrivi un registro singolo

Esempio di richiesta:

{ "request": { "operation": "WriteSingleRegisterRequest", "device": 1, "address": 1, "value": 1 }, "id": "TestRequest" }
Scrivi più bobine

Esempio di richiesta:

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

Esempio di risposta:

{ "response": { "status": "success", "device": 1, "operation": "WriteMultipleCoilsRequest", "payload": { "function_code": 15, "address": 1, "count": 4 } }, "id" : "TestRequest" }
Scrivere più registri

Esempio di richiesta:

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

Esempio di risposta:

{ "response": { "status": "success", "device": 1, "operation": "WriteMultipleRegistersRequest", "payload": { "function_code": 23, "address": 1, "count": 3 } }, "id" : "TestRequest" }
Maschera: registro di scrittura

Esempio di richiesta:

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

Esempio di risposta:

{ "response": { "status": "success", "device": 1, "operation": "MaskWriteRegisterRequest", "payload": { "function_code": 22, "and_mask": 0, "or_mask": 8 } }, "id" : "TestRequest" }
Leggi e scrivi più registri

Esempio di richiesta:

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

Esempio di risposta:

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

La risposta include i registri letti dal componente.

Le eccezioni possono verificarsi se il formato della richiesta è valido, ma la richiesta non è stata completata. In questo caso, la risposta contiene le seguenti informazioni:

  • Il status è impostato su Exception.

  • function_code è pari al codice della funzione della richiesta + 128.

  • exception_code contiene il codice dell'eccezione. Per ulteriori informazioni sull'eccezione , consulta Codici delle eccezioni Modbus.

Esempio:

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

Questo connettore esegue controlli di convalida sulla richiesta Modbus. Ad esempio, verifica l'eventuale presenza di formati non validi e campi non compilati. Se la convalida ha esito negativo, il connettore non invia la richiesta. Al contrario, restituirà una risposta contenente le seguenti informazioni:

  • Il status è impostato su No Response.

  • error contiene il motivo dell'errore.

  • error_message contiene il messaggio dell'errore.

Esempi:

{ "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" }

Se la richiesta è destinata a un dispositivo inesistente o se la rete RTU Modbus non funziona, potrebbe venire restituito ModbusIOException, che utilizza il formato Nessuna risposta.

{ "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" }

File di registro locale

Questo componente utilizza il seguente file di registro.

/greengrass/v2/logs/aws.greengrass.Modbus.log
Per visualizzare i log di questo componente
  • Esegui il seguente comando sul dispositivo principale per visualizzare il file di registro di questo componente in tempo reale. Sostituiscilo /greengrass/v2 con il percorso della cartella AWS IoT Greengrass principale.

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

Licenze

Questo componente include le seguenti terze parti software/licensing:

Questo componente è rilasciato in base al contratto di licenza software Greengrass Core.

Changelog

La tabella seguente descrive le modifiche in ciascuna versione del componente.

Versione

Modifiche

2.1.11

Versione aggiornata per la versione 2.15.0 di Greengrass nucleus.

2.1.10

Versione aggiornata per la versione 2.14.0 di Greengrass nucleus.

2.1.9

Versione aggiornata per la versione 2.13.0 di Greengrass nucleus.

2.1.8

Versione aggiornata per la versione 2.12.0 di Greengrass nucleus.

2.1.7

Versione aggiornata per la versione 2.11.0 di Greengrass nucleus.

2.1.6

Versione aggiornata per la versione 2.10.0 di Greengrass nucleus.

2.1.5

Correzioni di bug e miglioramenti
  • Risolve un problema relativo all'operazione. ReadDiscreteInput

2.1.4

Versione aggiornata per la versione 2.9.0 di Greengrass nucleus.

2.1.3

Versione aggiornata per la versione 2.8.0 di Greengrass nucleus.

2.1.2

Versione aggiornata per la versione 2.7.0 di Greengrass nucleus.

2.1.1

Versione aggiornata per la versione 2.6.0 di Greengrass nucleus.

2.1.0

Nuove funzionalità
  • Aggiunge le ModbusStopBits opzioniModbusBaudRate, ModbusByteSizeModbusParity, e che è possibile specificare per configurare la comunicazione seriale con i dispositivi Modbus RTU.

2.0.8

Versione aggiornata per la versione 2.5.0 di Greengrass nucleus.

2.0.7

Versione aggiornata per la versione 2.4.0 di Greengrass nucleus.

2.0.6

Versione aggiornata per la versione 2.3.0 di Greengrass nucleus.

2.0.5

Versione aggiornata per la versione 2.2.0 di Greengrass nucleus.

2.0.4

Versione aggiornata per la versione 2.1.0 di Greengrass nucleus.

2.0.3

Versione iniziale.