Adaptador de protocolo Modbus-RTU - AWS IoT Greengrass

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Adaptador de protocolo Modbus-RTU

El componente adaptador de protocolo Modbus-RTU (aws.greengrass.Modbus) recopila información de los dispositivos Modbus RTU locales.

Para solicitar información a un dispositivo Modbus RTU local con este componente, publique un mensaje en el tema al que está suscrito este componente. En el mensaje, especifique la solicitud de Modbus RTU que se va a enviar a un dispositivo. A continuación, este componente publica una respuesta que contiene el resultado de la solicitud de Modbus RTU.

nota

Este componente proporciona una funcionalidad similar a la del conector adaptador del protocolo Modbus RTU de la V1. AWS IoT Greengrass Para obtener más información, consulte el conector adaptador del protocolo Modbus RTU en la Guía para desarrolladores de la AWS IoT Greengrass V1.

Versiones

Este componente tiene las siguientes versiones:

  • 2.1.x

  • 2.0.x

Tipo

Este componente es un componente Lambda () aws.greengrass.lambda. El núcleo de Greengrass ejecuta la función Lambda de este componente mediante el componente Lambda launcher.

Para obtener más información, consulte Tipos de componentes.

Sistema operativo

Este componente solo se puede instalar en los dispositivos principales de Linux.

Requisitos

Este componente tiene los siguientes requisitos:

  • El dispositivo principal debe cumplir los requisitos para ejecutar las funciones de Lambda. Si desea que el dispositivo principal ejecute funciones Lambda en contenedores, el dispositivo debe cumplir los requisitos para hacerlo. Para obtener más información, consulte Requisitos de la función de Lambda.

  • Versión 3.7 de Python instalada en el dispositivo principal y añadida a la variable de entorno PATH.

  • Una conexión física entre el dispositivo AWS IoT Greengrass principal y los dispositivos Modbus. El dispositivo principal debe estar conectado físicamente a la red Modbus RTU a través de un puerto serie, como un puerto USB.

  • Para recibir los datos de salida de este componente, debe combinar la siguiente actualización de configuración para el componente del router de suscripción antiguo (aws.greengrass.LegacySubscriptionRouter) al implementar este componente. Esta configuración especifica el tema en el que este componente publica las respuestas.

    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" } } }
    • Sustituya la región por la Región de AWS que utilice.

    • Sustituya la versión por la versión de la función Lambda que ejecuta este componente. Para encontrar la versión de la función Lambda, debe ver la receta de la versión de este componente que desee implementar. Abra la página de detalles de este componente en la AWS IoT Greengrass consola y busque el par clave-valor de la función Lambda. Este par clave-valor contiene el nombre y la versión de la función Lambda.

    importante

    Debe actualizar la versión de la función Lambda en el router de suscripción anterior cada vez que implemente este componente. Esto garantiza que utilice la versión correcta de la función Lambda para la versión del componente que implemente.

    Para obtener más información, consulte Crear implementaciones.

  • Se admite la ejecución del adaptador de protocolo Modbus-RTU en una VPC.

Dependencias

Al implementar un componente, AWS IoT Greengrass también despliega versiones compatibles de sus dependencias. Esto significa que debe cumplir los requisitos del componente y de todas sus dependencias para poder implementarlo correctamente. En esta sección se enumeran las dependencias de las versiones publicadas de este componente y las restricciones de las versiones semánticas que definen las versiones de los componentes para cada dependencia. También puede ver las dependencias de cada versión del componente en la consola. AWS IoT Greengrass En la página de detalles del componente, busque la lista de dependencias.

2.1.8

La siguiente tabla muestra las dependencias de la versión 2.1.8 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.0.0 <2.13.0 Rígido
Lanzador Lambda ^2.0.0 Rígido
Tiempos de ejecución de Lambda ^2.0.0 Flexible
Servicio de intercambio de fichas ^2.0.0 Rígido
2.1.7

La siguiente tabla muestra las dependencias de la versión 2.1.7 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.0.0 <2.12.0 Rígido
Lanzador Lambda ^2.0.0 Rígido
Tiempos de ejecución de Lambda ^2.0.0 Flexible
Servicio de intercambio de fichas ^2.0.0 Rígido
2.1.6

La siguiente tabla muestra las dependencias de la versión 2.1.6 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.0.0 <2.11.0 Rígido
Lanzador Lambda ^2.0.0 Rígido
Tiempos de ejecución de Lambda ^2.0.0 Flexible
Servicio de intercambio de fichas ^2.0.0 Rígido
2.1.4 and 2.1.5

La siguiente tabla muestra las dependencias de las versiones 2.1.4 y 2.1.5 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.0.0 <2.10.0 Rígido
Lanzador Lambda ^2.0.0 Rígido
Tiempos de ejecución de Lambda ^2.0.0 Flexible
Servicio de intercambio de fichas ^2.0.0 Rígido
2.1.3

La siguiente tabla muestra las dependencias de la versión 2.1.3 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.0.0 <2.9.0 Rígido
Lanzador Lambda ^2.0.0 Rígido
Tiempos de ejecución de Lambda ^2.0.0 Flexible
Servicio de intercambio de fichas ^2.0.0 Rígido
2.1.2

La siguiente tabla muestra las dependencias de la versión 2.1.2 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.0.0 <2.8.0 Rígido
Lanzador Lambda ^2.0.0 Rígido
Tiempos de ejecución de Lambda ^2.0.0 Flexible
Servicio de intercambio de fichas ^2.0.0 Rígido
2.1.1

La siguiente tabla muestra las dependencias de la versión 2.1.1 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.0.0 <2.7.0 Rígido
Lanzador Lambda ^2.0.0 Rígido
Tiempos de ejecución de Lambda ^2.0.0 Flexible
Servicio de intercambio de fichas ^2.0.0 Rígido
2.0.8 and 2.1.0

La siguiente tabla muestra las dependencias de las versiones 2.0.8 y 2.1.0 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.0.0 <2.6.0 Rígido
Lanzador Lambda ^2.0.0 Rígido
Tiempos de ejecución de Lambda ^2.0.0 Flexible
Servicio de intercambio de fichas ^2.0.0 Rígido
2.0.7

La siguiente tabla muestra las dependencias de la versión 2.0.7 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.0.0 <2.5.0 Rígido
Lanzador Lambda ^2.0.0 Rígido
Tiempos de ejecución de Lambda ^2.0.0 Flexible
Servicio de intercambio de fichas ^2.0.0 Rígido
2.0.6

La siguiente tabla muestra las dependencias de la versión 2.0.6 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.0.0 <2.4.0 Rígido
Lanzador Lambda ^2.0.0 Rígido
Tiempos de ejecución de Lambda ^2.0.0 Flexible
Servicio de intercambio de fichas ^2.0.0 Rígido
2.0.5

La siguiente tabla muestra las dependencias de la versión 2.0.5 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.0.0 <2.3.0 Rígido
Lanzador Lambda ^2.0.0 Rígido
Tiempos de ejecución de Lambda ^2.0.0 Flexible
Servicio de intercambio de fichas ^2.0.0 Rígido
2.0.4

La siguiente tabla muestra las dependencias de la versión 2.0.4 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.0.0 <2.2.0 Rígido
Lanzador Lambda ^2.0.0 Rígido
Tiempos de ejecución de Lambda ^2.0.0 Flexible
Servicio de intercambio de fichas ^2.0.0 Rígido
2.0.3

La siguiente tabla muestra las dependencias de la versión 2.0.3 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.0.3 <2.1.0 Rígido
Lanzador Lambda >=1.0.0 Rígido
Tiempos de ejecución de Lambda >=1.0.0 Flexible
Servicio de intercambio de fichas >=1.0.0 Rígido

Para obtener más información sobre las dependencias de los componentes, consulta la referencia de recetas de componentes.

Configuración

Este componente proporciona los siguientes parámetros de configuración que puede personalizar al implementar el componente.

nota

La configuración predeterminada de este componente incluye los parámetros de la función Lambda. Le recomendamos que edite solo los siguientes parámetros para configurar este componente en sus dispositivos.

v2.1.x
lambdaParams

Objeto que contiene los parámetros de la función Lambda de este componente. Este objeto contiene la siguiente información:

EnvironmentVariables

Objeto que contiene los parámetros de la función Lambda. Este objeto contiene la siguiente información:

ModbusLocalPort

La ruta absoluta al puerto serie Modbus físico del dispositivo principal, por ejemplo. /dev/ttyS2

Para ejecutar este componente en un contenedor, debe definir esta ruta como un dispositivo del sistema (encontainerParams.devices) al que pueda acceder el componente. Este componente se ejecuta en un contenedor de forma predeterminada.

nota

Este componente debe tener acceso de lectura/escritura al dispositivo.

ModbusBaudRate

(Opcional) Un valor de cadena que especifica la velocidad en baudios para la comunicación en serie con los dispositivos Modbus TCP locales.

Predeterminado: 9600

ModbusByteSize

(Opcional) Un valor de cadena que especifica el tamaño de un byte en la comunicación en serie con los dispositivos Modbus TCP locales. Elija5, 67, o 8 bits.

Predeterminado: 8

ModbusParity

(Opcional) El modo de paridad que se utilizará para verificar la integridad de los datos en la comunicación en serie con los dispositivos Modbus TCP locales.

  • E— Verifique la integridad de los datos con una paridad uniforme.

  • O— Verificar la integridad de los datos con una paridad impar.

  • N— No verifique la integridad de los datos.

Predeterminado: N

ModbusStopBits

(Opcional) Un valor de cadena que especifica el número de bits que indican el final de un byte en la comunicación en serie con los dispositivos Modbus TCP locales.

Predeterminado: 1

containerMode

(Opcional) El modo de contenedorización de este componente. Puede elegir entre las siguientes opciones:

  • GreengrassContainer— El componente se ejecuta en un entorno de ejecución aislado dentro del AWS IoT Greengrass contenedor.

    Si especifica esta opción, debe especificar un dispositivo del sistema (encontainerParams.devices) para que el contenedor acceda al dispositivo Modbus.

  • NoContainer— El componente no se ejecuta en un entorno de ejecución aislado.

Predeterminado: GreengrassContainer

containerParams

(Opcional) Un objeto que contiene los parámetros del contenedor de este componente. El componente utiliza estos parámetros si se especifica GreengrassContainer paracontainerMode.

Este objeto contiene la siguiente información:

memorySize

(Opcional) La cantidad de memoria (en kilobytes) que se va a asignar al componente.

El valor predeterminado es 512 MB (525.312 KB).

devices

(Opcional) Objeto que especifica los dispositivos del sistema a los que puede acceder el componente en un contenedor.

importante

Para ejecutar este componente en un contenedor, debe especificar el dispositivo del sistema que configura en la variable de ModbusLocalPort entorno.

Este objeto contiene la siguiente información:

0— Se trata de un índice de matriz en forma de cadena.

Objeto que contiene la siguiente información:

path

La ruta al dispositivo del sistema en el dispositivo principal. Debe tener el mismo valor que el valor para el que se configuraModbusLocalPort.

permission

(Opcional) El permiso para acceder al dispositivo del sistema desde el contenedor. Este valor debe ser rw el que especifica que el componente tiene acceso de lectura/escritura al dispositivo del sistema.

Predeterminado: rw

addGroupOwner

(Opcional) Si se debe agregar o no el grupo de sistemas que ejecuta el componente como propietario del dispositivo del sistema.

Predeterminado: true

pubsubTopics

(Opcional) Un objeto que contiene los temas a los que el componente se suscribe para recibir mensajes. Puede especificar cada tema y si el componente se suscribe a los temas de MQTT AWS IoT Core o a los temas de publicación/suscripción locales.

Este objeto contiene la siguiente información:

0— Se trata de un índice matricial en forma de cadena.

Objeto que contiene la siguiente información:

type

(Opcional) El tipo de mensajes de publicación/suscripción que utiliza este componente para suscribirse a los mensajes. Puede elegir entre las siguientes opciones:

  • PUB_SUB — Suscribirse a mensajes locales de publicación/suscripción. Si elige esta opción, el tema no puede contener caracteres comodín de MQTT. Para obtener más información sobre cómo enviar mensajes desde un componente personalizado al especificar esta opción, consulte. Publicar/suscribir mensajes locales

  • IOT_CORE— Suscríbase a los mensajes de AWS IoT Core MQTT. Si elige esta opción, el tema puede contener caracteres comodín de MQTT. Para obtener más información sobre cómo enviar mensajes desde componentes personalizados al especificar esta opción, consulte. Publicar/suscribir mensajes MQTT AWS IoT Core

Predeterminado: PUB_SUB

topic

(Opcional) El tema al que se suscribe el componente para recibir mensajes. Si lo especifica IotCoretype, puede usar los comodines MQTT (+y#) en este tema.

ejemplo Ejemplo: actualización de la combinación de configuraciones (modo contenedor)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "GreengrassContainer", "containerParams": { "devices": { "0": { "path": "/dev/ttyS2", "permission": "rw", "addGroupOwner": true } } } }
ejemplo Ejemplo: actualización de la combinación de configuraciones (sin modo contenedor)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "NoContainer" }
v2.0.x
lambdaParams

Objeto que contiene los parámetros de la función Lambda de este componente. Este objeto contiene la siguiente información:

EnvironmentVariables

Objeto que contiene los parámetros de la función Lambda. Este objeto contiene la siguiente información:

ModbusLocalPort

La ruta absoluta al puerto serie Modbus físico del dispositivo principal, por ejemplo. /dev/ttyS2

Para ejecutar este componente en un contenedor, debe definir esta ruta como un dispositivo del sistema (encontainerParams.devices) al que pueda acceder el componente. Este componente se ejecuta en un contenedor de forma predeterminada.

nota

Este componente debe tener acceso de lectura/escritura al dispositivo.

containerMode

(Opcional) El modo de contenedorización de este componente. Puede elegir entre las siguientes opciones:

  • GreengrassContainer— El componente se ejecuta en un entorno de ejecución aislado dentro del AWS IoT Greengrass contenedor.

    Si especifica esta opción, debe especificar un dispositivo del sistema (encontainerParams.devices) para que el contenedor acceda al dispositivo Modbus.

  • NoContainer— El componente no se ejecuta en un entorno de ejecución aislado.

Predeterminado: GreengrassContainer

containerParams

(Opcional) Un objeto que contiene los parámetros del contenedor de este componente. El componente utiliza estos parámetros si se especifica GreengrassContainer paracontainerMode.

Este objeto contiene la siguiente información:

memorySize

(Opcional) La cantidad de memoria (en kilobytes) que se va a asignar al componente.

El valor predeterminado es 512 MB (525.312 KB).

devices

(Opcional) Objeto que especifica los dispositivos del sistema a los que puede acceder el componente en un contenedor.

importante

Para ejecutar este componente en un contenedor, debe especificar el dispositivo del sistema que configura en la variable de ModbusLocalPort entorno.

Este objeto contiene la siguiente información:

0— Se trata de un índice de matriz en forma de cadena.

Objeto que contiene la siguiente información:

path

La ruta al dispositivo del sistema en el dispositivo principal. Debe tener el mismo valor que el valor para el que se configuraModbusLocalPort.

permission

(Opcional) El permiso para acceder al dispositivo del sistema desde el contenedor. Este valor debe ser rw el que especifica que el componente tiene acceso de lectura/escritura al dispositivo del sistema.

Predeterminado: rw

addGroupOwner

(Opcional) Si se debe agregar o no el grupo de sistemas que ejecuta el componente como propietario del dispositivo del sistema.

Predeterminado: true

pubsubTopics

(Opcional) Un objeto que contiene los temas a los que el componente se suscribe para recibir mensajes. Puede especificar cada tema y si el componente se suscribe a los temas de MQTT AWS IoT Core o a los temas de publicación/suscripción locales.

Este objeto contiene la siguiente información:

0— Se trata de un índice matricial en forma de cadena.

Objeto que contiene la siguiente información:

type

(Opcional) El tipo de mensajes de publicación/suscripción que utiliza este componente para suscribirse a los mensajes. Puede elegir entre las siguientes opciones:

  • PUB_SUB — Suscribirse a mensajes locales de publicación/suscripción. Si elige esta opción, el tema no puede contener caracteres comodín de MQTT. Para obtener más información sobre cómo enviar mensajes desde un componente personalizado al especificar esta opción, consulte. Publicar/suscribir mensajes locales

  • IOT_CORE— Suscríbase a los mensajes de AWS IoT Core MQTT. Si elige esta opción, el tema puede contener caracteres comodín de MQTT. Para obtener más información sobre cómo enviar mensajes desde componentes personalizados al especificar esta opción, consulte. Publicar/suscribir mensajes MQTT AWS IoT Core

Predeterminado: PUB_SUB

topic

(Opcional) El tema al que se suscribe el componente para recibir mensajes. Si lo especifica IotCoretype, puede usar los comodines MQTT (+y#) en este tema.

ejemplo Ejemplo: actualización de la combinación de configuraciones (modo contenedor)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "GreengrassContainer", "containerParams": { "devices": { "0": { "path": "/dev/ttyS2", "permission": "rw", "addGroupOwner": true } } } }
ejemplo Ejemplo: actualización de la combinación de configuraciones (sin modo contenedor)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "NoContainer" }

Datos de entrada

Este componente acepta los parámetros de solicitud de Modbus RTU relacionados con el tema siguiente y envía la solicitud de Modbus RTU al dispositivo. De forma predeterminada, este componente se suscribe a los mensajes de publicación/suscripción locales. Para obtener más información sobre cómo publicar mensajes en este componente desde sus componentes personalizados, consulte. Publicar/suscribir mensajes locales

Tema predeterminado (publicación/suscripción local): modbus/adapter/request

El mensaje acepta las siguientes propiedades. Los mensajes de entrada deben tener un formato JSON válido.

request

Los parámetros de la solicitud de Modbus RTU que se va a enviar.

La forma del mensaje de solicitud depende del tipo de solicitud de Modbus RTU que represente. Las siguientes propiedades son obligatorias para todas las solicitudes.

Tipo: object que contiene la siguiente información:

operation

El nombre de la operación que se va a ejecutar. Por ejemplo, especifique ReadCoilsRequest que se lean las bobinas de un dispositivo Modbus RTU. Para obtener más información sobre las operaciones compatibles, consulte. Solicitudes y respuestas de Modbus RTU

Tipo: string

device

El dispositivo de destino de la solicitud.

Este valor debe ser un número entero comprendido entre 0 y247.

Tipo: integer

El resto de los parámetros que se incluirán en la solicitud dependen de la operación. Este componente gestiona la comprobación de redundancia cíclica (CRC) para comprobar las solicitudes de datos por usted.

nota

Si la solicitud incluye una address propiedad, debe especificar su valor como un número entero. Por ejemplo, "address": 1 .

id

Un ID arbitrario para la solicitud. Utilice esta propiedad para asignar una solicitud de entrada a una respuesta de salida. Al especificar esta propiedad, el componente establece la id propiedad del objeto de respuesta en este valor.

Tipo: string

ejemplo Ejemplo de entrada: Solicitud de lectura de salidas digitales (coils)
{ "request": { "operation": "ReadCoilsRequest", "device": 1, "address": 1, "count": 1 }, "id": "MyRequest" }

Datos de salida

Este componente publica las respuestas como datos de salida sobre el siguiente tema de MQTT de forma predeterminada. Debe especificar este tema como parte de subject la configuración del componente antiguo del router de suscripciones. Para obtener más información sobre cómo suscribirse a los mensajes sobre este tema en sus componentes personalizados, consultePublicar/suscribir mensajes MQTT AWS IoT Core.

Tema predeterminado (AWS IoT Core MQTT): modbus/adapter/response

La forma del mensaje de respuesta depende de la operación de solicitud y del estado de la respuesta. Para ver ejemplos, consulte Solicitudes y respuestas de ejemplo.

Cada respuesta incluye las siguientes propiedades:

response

La respuesta del dispositivo Modbus RTU.

Tipo: object que contiene la siguiente información:

status

El estado de la solicitud. El estado puede ser uno de los siguientes valores:

  • Success— La solicitud era válida, el componente la envió a la red Modbus RTU y la red Modbus RTU devolvió una respuesta.

  • Exception— La solicitud era válida, el componente la envió a la red Modbus RTU y la red Modbus RTU devolvió una excepción. Para obtener más información, consulte Estado de respuesta: excepción.

  • No Response— La solicitud no era válida y el componente detectó el error antes de enviarla a la red Modbus RTU. Para obtener más información, consulte Estado de respuesta: sin respuesta.

operation

La operación que solicitó el componente.

device

El dispositivo al que el componente envió la solicitud.

payload

La respuesta del dispositivo Modbus RTU. Si status es asíNo Response, este objeto contiene solo una error propiedad con la descripción del error (por ejemplo,[Input/Output] No Response received from the remote unit).

id

El identificador de la solicitud, que puede utilizar para identificar qué respuesta corresponde a qué solicitud.

nota

Una respuesta para una operación de escritura es simplemente un eco de la solicitud. Si bien las respuestas escritas no incluyen información significativa, se recomienda comprobar el estado de la respuesta para ver si la solicitud se realiza correctamente o no.

ejemplo Ejemplo de salida: Correcto
{ "response" : { "status" : "success", "device": 1, "operation": "ReadCoilsRequest", "payload": { "function_code": 1, "bits": [1] } }, "id" : "MyRequest" }
ejemplo Ejemplo de salida: Error
{ "response" : { "status" : "fail", "error_message": "Internal Error", "error": "Exception", "device": 1, "operation": "ReadCoilsRequest", "payload": { "function_code": 129, "exception_code": 2 } }, "id" : "MyRequest" }

Para obtener más ejemplos, consulte Solicitudes y respuestas de ejemplo.

Solicitudes y respuestas de Modbus RTU

Este conector acepta los parámetros de solicitud de Modbus RTU como datos de entrada y publica las respuestas como datos de salida.

Se admiten las siguientes operaciones comunes.

Nombre de la operación en la solicitud Código de característica en la respuesta
ReadCoilsRequest 01
ReadDiscreteInputsRequest 02
ReadHoldingRegistersRequest 03
ReadInputRegistersRequest 04
WriteSingleCoilRequest 05
WriteSingleRegisterRequest 06
WriteMultipleCoilsRequest 15
WriteMultipleRegistersRequest 16
MaskWriteRegisterRequest 22
ReadWriteMultipleRegistersRequest 23

A continuación, se muestran ejemplos de solicitudes y respuestas de las operaciones compatibles.

Bobinas de lectura

Ejemplo de solicitud:

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

Ejemplo de respuesta:

{ "response": { "status": "success", "device": 1, "operation": "ReadCoilsRequest", "payload": { "function_code": 1, "bits": [1] } }, "id" : "TestRequest" }
Lea entradas discretas

Ejemplo de solicitud:

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

Ejemplo de respuesta:

{ "response": { "status": "success", "device": 1, "operation": "ReadDiscreteInputsRequest", "payload": { "function_code": 2, "bits": [1] } }, "id" : "TestRequest" }
Lea los registros de retención

Ejemplo de solicitud:

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

Ejemplo de respuesta:

{ "response": { "status": "success", "device": 1, "operation": "ReadHoldingRegistersRequest", "payload": { "function_code": 3, "registers": [20,30] } }, "id" : "TestRequest" }
Lea los registros de entrada

Ejemplo de solicitud:

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

Ejemplo de solicitud:

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

Ejemplo de respuesta:

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

Ejemplo de solicitud:

{ "request": { "operation": "WriteSingleRegisterRequest", "device": 1, "address": 1, "value": 1 }, "id": "TestRequest" }
Escribe varias bobinas

Ejemplo de solicitud:

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

Ejemplo de respuesta:

{ "response": { "status": "success", "device": 1, "operation": "WriteMultipleCoilsRequest", "payload": { "function_code": 15, "address": 1, "count": 4 } }, "id" : "TestRequest" }
Escribe varios registros

Ejemplo de solicitud:

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

Ejemplo de respuesta:

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

Ejemplo de solicitud:

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

Ejemplo de respuesta:

{ "response": { "status": "success", "device": 1, "operation": "MaskWriteRegisterRequest", "payload": { "function_code": 22, "and_mask": 0, "or_mask": 8 } }, "id" : "TestRequest" }
Lectura y escritura de varios registros

Ejemplo de solicitud:

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

Ejemplo de respuesta:

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

La respuesta incluye los registros que lee el componente.

Las excepciones pueden producirse cuando el formato de la solicitud es válido, pero la solicitud no se completó correctamente. En este caso, la respuesta contiene la siguiente información:

  • status se establece en Exception.

  • function_code equivale al código de la característica de la solicitud + 128.

  • exception_code contiene el código de excepción. Para obtener más información, consulte los códigos de excepción de Modbus.

Ejemplo:

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

Este conector realiza las comprobaciones de validación de la solicitud de Modbus. Por ejemplo, comprueba los formatos no válidos y los campos que faltan. Si no se supera la validación, el conector no envía la solicitud. En su lugar, devuelve una respuesta que contiene la siguiente información:

  • status se establece en No Response.

  • error contiene el motivo del error.

  • error_message contiene el mensaje de error.

Ejemplos:

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

Si la solicitud selecciona como destino un dispositivo inexistente o si la red de Modbus RTU no funciona, es posible que aparezca una respuesta ModbusIOException, que utiliza el formato de respuesta No.

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

Archivo de registro local

Este componente utiliza el siguiente archivo de registro.

/greengrass/v2/logs/aws.greengrass.Modbus.log
Para ver los registros de este componente
  • Ejecute el siguiente comando en el dispositivo principal para ver el archivo de registro de este componente en tiempo real. /greengrass/v2Sustitúyalo por la ruta a la carpeta AWS IoT Greengrass raíz.

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

Licencias

Este componente incluye el siguiente software o licencias de terceros:

Este componente se publica en virtud del contrato de licencia de software principal de Greengrass.

Registros de cambios

En la siguiente tabla se describen los cambios en cada versión del componente.

Versión

Cambios

2.1.8

Versión actualizada para la versión 2.12.0 de Greengrass Nucleus.

2.1.7

Versión actualizada para el lanzamiento de la versión 2.11.0 de Greengrass nucleus.

2.1.6

Versión actualizada para el lanzamiento de la versión 2.10.0 de Greengrass nucleus.

2.1.5

Mejoras y correcciones de errores
  • Corrige un problema con la ReadDiscreteInput operación.

2.1.4

Versión actualizada para la versión 2.9.0 de Greengrass Nucleus.

2.1.3

Versión actualizada para el lanzamiento de la versión 2.8.0 de Greengrass nucleus.

2.1.2

Versión actualizada para el lanzamiento de la versión 2.7.0 de Greengrass nucleus.

2.1.1

Versión actualizada para la versión 2.6.0 de Greengrass Nucleus.

2.1.0

Nuevas características
  • Añade las ModbusStopBits opcionesModbusBaudRate, ModbusByteSizeModbusParity, y que se pueden especificar para configurar la comunicación en serie con los dispositivos Modbus RTU.

2.0.8

Versión actualizada para el lanzamiento de la versión 2.5.0 de Greengrass nucleus.

2.0.7

Versión actualizada para la versión 2.4.0 de Greengrass Nucleus.

2.0.6

Versión actualizada para el lanzamiento de la versión 2.3.0 de Greengrass nucleus.

2.0.5

Versión actualizada para el lanzamiento de la versión 2.2.0 de Greengrass nucleus.

2.0.4

Versión actualizada para el lanzamiento de la versión 2.1.0 de Greengrass nucleus.

2.0.3

Versión inicial.