Adattatore di protocollo Modbus-RTU - 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à.

Adattatore di protocollo Modbus-RTU

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

Per richiedere informazioni da un dispositivo Modbus RTU locale con questo componente, pubblica un messaggio sull'argomento a cui questo componente è abbonato. Nel messaggio, specificate 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, consulta 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,0x

Type

Questo componente è un componente Lambda () aws.greengrass.lambda. Il nucleo 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 sui dispositivi principali di Linux.

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.

  • Python versione 3.7 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 collegato 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 componente legacy del router di 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 la regione con quella Regione AWS che usi.

    • Sostituisci la versione 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 legacy ogni volta che si distribuisce questo componente. Ciò garantisce l'utilizzo della versione corretta della funzione Lambda per la versione del componente che si distribuisce.

    Per ulteriori informazioni, consulta Creare distribuzione.

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

Dipendenze

Quando si distribuisce un componente, distribuisce AWS IoT Greengrass anche versioni compatibili delle relative dipendenze. Ciò significa che è necessario soddisfare i requisiti per il 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 di versione semantica che definiscono le versioni dei componenti per ogni dipendenza. È inoltre possibile visualizzare le dipendenze per ogni versione del componente nella console. AWS IoT Greengrass Nella pagina dei dettagli del componente, cerca l'elenco delle dipendenze.

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
Lanciatore 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
Lanciatore 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
Lanciatore 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
Lanciatore 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
Lanciatore 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
Lanciatore 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
Lanciatore 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
Lanciatore 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
Lanciatore 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
Lanciatore 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
Lanciatore 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
Lanciatore 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
Lanciatore 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, vedere il riferimento alla ricetta 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 verso la 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 accesso in lettura/scrittura 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. Scegliete5,6, o 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 parità uniforme.

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

  • N— Non verificate 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 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 si specifica 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 configurato nella variabile di ModbusLocalPort ambiente.

Questo oggetto contiene le seguenti informazioni:

0— Si tratta di 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. Deve avere lo stesso valore del valore per cui è stato configuratoModbusLocalPort.

permission

(Facoltativo) L'autorizzazione ad accedere al dispositivo di sistema dal contenitore. Questo valore deve essererw, che specifica che il componente ha accesso in lettura/scrittura 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 gli argomenti MQTT AWS IoT Core o gli argomenti di pubblicazione/sottoscrizione locali.

Questo oggetto contiene le seguenti informazioni:

0— Si tratta di un indice di matrice sotto forma di stringa.

Un oggetto che contiene le seguenti informazioni:

type

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

  • PUB_SUB: iscriviti ai messaggi di pubblicazione/sottoscrizione locali. Se scegli questa opzione, l'argomento non può contenere caratteri jolly MQTT. Per ulteriori informazioni su come inviare messaggi dal componente personalizzato quando si specifica questa opzione, vedere. Pubblicare/sottoscrivere messaggi locali

  • IOT_CORE— Abbonarsi 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. AWS IoT Core Pubblicare/sottoscrivere messaggi MQTT

Impostazione predefinita: PUB_SUB

topic

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

Esempio: aggiornamento basato sull'unione della configurazione (modalità contenitore)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "GreengrassContainer", "containerParams": { "devices": { "0": { "path": "/dev/ttyS2", "permission": "rw", "addGroupOwner": true } } } }
Esempio: aggiornamento tramite fusione della configurazione (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 verso la 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 accesso in lettura/scrittura 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 si specifica 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 configurato nella variabile di ModbusLocalPort ambiente.

Questo oggetto contiene le seguenti informazioni:

0— Si tratta di 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. Deve avere lo stesso valore del valore per cui è stato configuratoModbusLocalPort.

permission

(Facoltativo) L'autorizzazione ad accedere al dispositivo di sistema dal contenitore. Questo valore deve essererw, che specifica che il componente ha accesso in lettura/scrittura 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 gli argomenti MQTT AWS IoT Core o gli argomenti di pubblicazione/sottoscrizione locali.

Questo oggetto contiene le seguenti informazioni:

0— Si tratta di un indice di matrice sotto forma di stringa.

Un oggetto che contiene le seguenti informazioni:

type

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

  • PUB_SUB: iscriviti ai messaggi di pubblicazione/sottoscrizione locali. Se scegli questa opzione, l'argomento non può contenere caratteri jolly MQTT. Per ulteriori informazioni su come inviare messaggi dal componente personalizzato quando si specifica questa opzione, vedere. Pubblicare/sottoscrivere messaggi locali

  • IOT_CORE— Abbonarsi 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. AWS IoT Core Pubblicare/sottoscrivere messaggi MQTT

Impostazione predefinita: PUB_SUB

topic

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

Esempio: aggiornamento basato sull'unione della configurazione (modalità contenitore)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "GreengrassContainer", "containerParams": { "devices": { "0": { "path": "/dev/ttyS2", "permission": "rw", "addGroupOwner": true } } } }
Esempio: aggiornamento tramite fusione della configurazione (nessuna modalità contenitore)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "NoContainer" }

Dati di input

Questo componente accetta i parametri di richiesta Modbus RTU sul seguente argomento e invia la richiesta Modbus RTU al dispositivo. Per impostazione predefinita, questo componente sottoscrive i messaggi di pubblicazione/sottoscrizione locali. Per ulteriori informazioni su come pubblicare messaggi su questo componente dai componenti personalizzati, consulta. Pubblicare/sottoscrivere messaggi locali

Argomento predefinito (pubblicazione/sottoscrizione locale): modbus/adapter/request

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

request

I parametri per la richiesta Modbus RTU da inviare.

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, specificate 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 ciclico (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 specificate questa proprietà, il componente imposta la id proprietà nell'oggetto di risposta su questo valore.

Tipo: string

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 contenuto subject nella configurazione del componente legacy del router di abbonamento. Per ulteriori informazioni su come sottoscrivere i messaggi relativi a questo argomento nei componenti personalizzati, consultaAWS IoT Core Pubblicare/sottoscrivere messaggi MQTT.

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

La forma del messaggio di risposta dipende dall'operazione di 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 inviarla alla rete Modbus RTU. Per ulteriori informazioni, consulta Stato risposta: nessuna risposta.

operation

Operazione richiesta dal componente.

device

Il dispositivo a 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 è possibile 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 di scrittura 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 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 detenzione

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 bobina singola

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" }
Scrivi 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, scrittura, registro

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. Sostituisci /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 i seguenti software/licenze di terze parti:

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

Changelog

La tabella seguente descrive le modifiche apportate a ciascuna versione del componente.

Versione

Modifiche

2.1.8

Versione aggiornata per Greengrass nucleus versione 2.12.0.

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 con l'ReadDiscreteInputoperazione.

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 Greengrass nucleus versione 2.7.0.

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 Greengrass nucleus versione 2.3.0.

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.