

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Adaptador de protocolo Modbus-RTU
<a name="modbus-rtu-protocol-adapter-component"></a>

O componente adaptador do protocolo Modbus-RTU (`aws.greengrass.Modbus`) recolhe informações de dispositivos Modbus RTU locais.

Para solicitar informações de um dispositivo Modbus RTU local com esse componente, publique uma mensagem no tópico em que esse componente se inscreve. Na mensagem, especifique a solicitação Modbus RTU a ser enviada para um dispositivo. Em seguida, esse componente publica uma resposta que contém o resultado da solicitação do Modbus RTU.

**nota**  
Esse componente fornece funcionalidade semelhante ao conector do adaptador de protocolo Modbus RTU na AWS IoT Greengrass V1. Para mais informações, consulte [Modbus RTU protocol adapter connector](https://docs.aws.amazon.com/greengrass/latest/developerguide/modbus-protocol-adapter-connector.html) no *Guia do desenvolvedor do AWS IoT Greengrass V1*.

**Topics**
+ [Versões](#modbus-rtu-protocol-adapter-component-versions)
+ [Tipo](#modbus-rtu-protocol-adapter-component-type)
+ [Sistema operacional](#modbus-rtu-protocol-adapter-component-os-support)
+ [Requisitos](#modbus-rtu-protocol-adapter-component-requirements)
+ [Dependências](#modbus-rtu-protocol-adapter-component-dependencies)
+ [Configuração](#modbus-rtu-protocol-adapter-component-configuration)
+ [Dados de entrada](#modbus-rtu-protocol-adapter-component-input-data)
+ [Dados de saída](#modbus-rtu-protocol-adapter-component-output-data)
+ [Respostas e solicitações Modbus RTU](#modbus-rtu-protocol-adapter-component-requests-responses)
+ [Arquivo de log local](#modbus-rtu-protocol-adapter-component-log-file)
+ [Licenças](#modbus-rtu-protocol-adapter-component-licenses)
+ [Changelog](#modbus-rtu-protocol-adapter-component-changelog)

## Versões
<a name="modbus-rtu-protocol-adapter-component-versions"></a>

Esse componente tem as seguintes versões:
+ 2.1.x
+ 2.0.x

## Tipo
<a name="modbus-rtu-protocol-adapter-component-type"></a>

<a name="public-component-type-lambda"></a>Esse <a name="public-component-type-lambda-phrase"></a>é um componente do Lambda (`aws.greengrass.lambda`).. O [Greengrass nucleus](greengrass-nucleus-component.md) executa a função do Lambda desse componente usando o [componente inicializador do Lambda](lambda-launcher-component.md).

<a name="public-component-type-more-information"></a>Para obter mais informações, consulte [Tipos de componentes](develop-greengrass-components.md#component-types).

## Sistema operacional
<a name="modbus-rtu-protocol-adapter-component-os-support"></a>

Esse componente pode ser instalado somente nos dispositivos principais do Linux.

## Requisitos
<a name="modbus-rtu-protocol-adapter-component-requirements"></a>

Esse componente tem os seguintes requisitos:
+ <a name="core-device-lambda-function-requirements"></a>O dispositivo principal deve atender aos requisitos para executar as funções do Lambda. Se você deseja que o dispositivo principal execute funções do Lambda em contêiner, o dispositivo deve atender aos requisitos para isso. Para obter mais informações, consulte [Requisitos da função do Lambda](setting-up.md#greengrass-v2-lambda-requirements).
+ <a name="public-component-python3-requirement"></a>[Python](https://www.python.org/) versão 3.7 instalado no dispositivo de núcleo e adicionado à variável de ambiente PATH.
+ Uma conexão física entre o dispositivo AWS IoT Greengrass principal e os dispositivos Modbus. O dispositivo principal deve estar fisicamente conectado à rede Modbus RTU por meio de uma porta serial, como uma porta USB.
+ <a name="connector-component-legacy-subscription-router-dependency"></a>Para receber os dados de saída desse componente, você deve mesclar a seguinte atualização de configuração no [componente legado de roteador de assinatura](legacy-subscription-router-component.md) (`aws.greengrass.LegacySubscriptionRouter`) ao implantar esse componente. Essa configuração especifica o tópico em que esse componente publica as respostas.

------
#### [ 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"
      }
    }
  }
  ```<a name="connector-component-legacy-subscription-router-dependency-replace"></a>
  + *region*Substitua pelo Região da AWS que você usa.
  + *version*Substitua pela versão da função Lambda que esse componente executa. Para encontrar a versão da função do Lambda, é necessário visualizar a fórmula da versão desse componente que deseja implantar. Abra a página de detalhes do componente no [console do AWS IoT Greengrass](https://console.aws.amazon.com//greengrass) e procure o par de chave/valor da **função do Lambda**. Esse par de chave/valor contém o nome e a versão da função do Lambda.

**Importante**  <a name="connector-component-legacy-subscription-router-dependency-note"></a>
É necessário atualizar a versão da função do Lambda no roteador de assinatura legado sempre que implantar esse componente. Isso garante que você use a versão correta da função do Lambda em relação à do componente que é implantado.

------

  <a name="connector-component-create-deployments"></a>Para obter mais informações, consulte [Criar implantações](create-deployments.md).
+ O adaptador de protocolo Modbus-RTU é compatível com a execução em uma VPC.

## Dependências
<a name="modbus-rtu-protocol-adapter-component-dependencies"></a>

Quando você implanta um componente, AWS IoT Greengrass também implanta versões compatíveis de suas dependências. Isso significa que é preciso atender aos requisitos do componente e de todas as dependências dele para implantá-lo com êxito. Nesta seção, há uma lista de todas as dependências das [versões lançadas](#modbus-rtu-protocol-adapter-component-changelog) desse componente e as restrições de versão semântica que definem as versões dos componentes para cada dependência. Também é possível visualizar as dependências de cada versão do componente no [console do AWS IoT Greengrass](https://console.aws.amazon.com//greengrass). Na página de detalhes do componente, procure a lista de **dependências**.

------
#### [ 2.1.11 ]

A seguinte tabela lista as dependências da versão 2.1.11 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.16.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.1.10 ]

A tabela a seguir lista as dependências da versão 2.1.10 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.15.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.1.9 ]

A tabela a seguir lista as dependências da versão 2.1.9 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.14.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.1.8 ]

A tabela a seguir lista as dependências da versão 2.1.8 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.13.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.1.7 ]

A tabela a seguir lista as dependências da versão 2.1.7 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.12.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.1.6 ]

A tabela a seguir lista as dependências da versão 2.1.6 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.11.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.1.4 and 2.1.5 ]

A tabela a seguir lista as dependências das versões 2.1.4 e 2.1.5 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.10.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.1.3 ]

A tabela a seguir lista as dependências da versão 2.1.3 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.9.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.1.2 ]

A tabela a seguir lista as dependências da versão 2.1.2 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.1.1 ]

A tabela a seguir lista as dependências da versão 2.1.1 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.7.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.0.8 and 2.1.0 ]

A tabela a seguir lista as dependências das versões 2.0.8 e 2.1.0 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.0.7 ]

A tabela a seguir lista as dependências da versão 2.0.7 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.0.6 ]

A tabela a seguir lista as dependências da versão 2.0.6 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.0.5 ]

A tabela a seguir lista as dependências da versão 2.0.5 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.0.4 ]

A tabela a seguir lista as dependências da versão 2.0.4 deste componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.2.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | ^2.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | ^2.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | ^2.0.0  | Rígido | 

------
#### [ 2.0.3 ]

A tabela a seguir lista as dependências para a versão 2.0.3 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.3 <2.1.0  | Rígido | 
| [Inicializador do Lambda](lambda-launcher-component.md) | >=1.0.0  | Rígido | 
| [Lambda runtimes](lambda-runtimes-component.md) | >=1.0.0  | Flexível | 
| [Token Exchange Service](token-exchange-service-component.md) | >=1.0.0  | Rígido | 

------

Para obter mais informações sobre as dependências dos componentes, consulte [referência de fórmula do componente](component-recipe-reference.md#recipe-reference-component-dependencies).

## Configuração
<a name="modbus-rtu-protocol-adapter-component-configuration"></a>

Esse componente fornece os parâmetros de configuração a seguir, que podem ser personalizados quando você o implanta.

**nota**  <a name="connector-component-lambda-parameters"></a>
A configuração padrão desse componente inclui parâmetros de função do Lambda. Recomendamos que você edite somente os parâmetros a seguir para configurar esse componente em seus dispositivos.

------
#### [ v2.1.x ]

`lambdaParams`  
Um objeto que contém os parâmetros para a função do Lambda desse componente. Esse objeto contém as informações a seguir:    
`EnvironmentVariables`  
Um objeto que contém os parâmetros da função do Lambda. Esse objeto contém as informações a seguir:    
`ModbusLocalPort`  <a name="modbus-rtu-protocol-adapter-configuration-modbuslocalport"></a>
O caminho absoluto para a porta serial Modbus física no dispositivo principal, como `/dev/ttyS2`.  
Para executar esse componente em um contêiner, você deve definir esse caminho como um dispositivo do sistema (em `containerParams.devices`) que o componente possa acessar. Esse componente é executado em um contêiner por padrão.  
Esse componente deve ter read/write acesso ao dispositivo.  
`ModbusBaudRate`  
(Opcional) Um valor de string que especifica a taxa de transmissão para comunicação serial com dispositivos Modbus TCP locais.  
Padrão: `9600`  
`ModbusByteSize`  
(Opcional) Um valor de string que especifica o tamanho de um byte na comunicação serial com dispositivos Modbus TCP locais. Escolha `5`, `6`, `7` ou `8` bits.  
Padrão: `8`  
`ModbusParity`  
(Opcional) O modo de paridade a ser usado para verificar a integridade dos dados na comunicação serial com dispositivos Modbus TCP locais.  
+ `E`: verificar a integridade dos dados com paridade par.
+ `O`: verificar a integridade dos dados com paridade ímpar.
+ `N`: não verificar a integridade dos dados.
Padrão: `N`  
`ModbusStopBits`  
(Opcional) Um valor de string que especifica o número de bits que indica o final de um byte na comunicação serial com dispositivos Modbus TCP locais.  
Padrão: `1`

`containerMode`  <a name="modbus-rtu-protocol-adapter-configuration-containermode"></a>
(Opcional) O modo de conteinerização desse componente. Escolha uma das seguintes opções:  
+ `GreengrassContainer`— O componente é executado em um ambiente de execução isolado dentro do AWS IoT Greengrass contêiner.

  Se você especificar essa opção, deverá especificar um dispositivo do sistema (no `containerParams.devices`) para dar ao contêiner acesso ao dispositivo Modbus.
+ `NoContainer`; o componente não é executado em um ambiente de runtime isolado.
Padrão: `GreengrassContainer`

`containerParams`  <a name="modbus-rtu-protocol-adapter-configuration-containerparams"></a>
<a name="connector-component-container-params-description"></a>(Opcional) Um objeto que contém os parâmetros de contêiner para esse componente. O componente usará esses parâmetros se você especificar `GreengrassContainer` para `containerMode`.  
Esse objeto contém as informações a seguir:    
`memorySize`  
<a name="connector-component-container-params-memory-size-description"></a>(Opcional) A quantidade de memória (em quilobytes) que será alocada para o componente.  
O padrão é de 512 MB (525.312 KB).  
`devices`  
(Opcional) Um objeto que especifica os dispositivos do sistema que o componente pode acessar em um contêiner.  
Para executar esse componente em um contêiner, você deve especificar o dispositivo do sistema que você configura na variável de ambiente `ModbusLocalPort`.
Esse objeto contém as informações a seguir:    
`0`: este é um índice de matriz como uma string.  
Um objeto que contém as seguintes informações:    
`path`  
O caminho para o dispositivo do sistema no dispositivo principal. Ele deve ter o mesmo valor que você configura para `ModbusLocalPort`.  
`permission`  
(Opcional) A permissão para acessar o dispositivo do sistema a partir do contêiner. Esse valor deve ser`rw`, o que especifica que o componente tem read/write acesso ao dispositivo do sistema.  
Padrão: `rw`  
`addGroupOwner`  
(Opcional) Especifica se o grupo de sistema que executa o componente do deve ou não ser adicionado como proprietário do dispositivo do sistema.  
Padrão: `true`

`pubsubTopics`  <a name="connector-component-pubsub-topics-parameter"></a>
(Opcional) Um objeto que contém os tópicos que o componente assina para receber mensagens. Você pode especificar cada tópico e se o componente se inscreve nos tópicos do MQTT AWS IoT Core ou nos tópicos locais publish/subscribe .  
Esse objeto contém as informações a seguir:    
`0`: este é um índice de matriz como uma string.  
Um objeto que contém as seguintes informações:    
`type`  
(Opcional) O tipo de publish/subscribe mensagem que esse componente usa para assinar mensagens. Escolha uma das seguintes opções:  
+ `PUB_SUB` – Assine mensagens locais de publicar/assinar. Se escolher essa opção, o tópico não poderá conter curingas MQTT. Para obter mais informações sobre como enviar mensagens do componente personalizado quando você especifica essa opção, consulte [Publicar/assinar mensagens locais](ipc-publish-subscribe.md).
+ `IOT_CORE`— Assine as mensagens do AWS IoT Core MQTT. Se você escolher essa opção, o tópico poderá conter curingas do MQTT. Para obter mais informações sobre como enviar mensagens de componentes personalizados quando você especifica essa opção, consulte [Publique/assine mensagens MQTT AWS IoT Core](ipc-iot-core-mqtt.md).
Padrão: `PUB_SUB`  
`topic`  
(Opcional) O tópico que o componente assina para receber mensagens. Se você especificar `IotCore` para `type`, poderá usar curingas MQTT (`+` e `#`) neste tópico.

**Example Exemplo: atualização da mesclagem de configuração (modo de contêiner)**  <a name="modbus-rtu-protocol-adapter-configuration-example-container-mode"></a>

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "ModbusLocalPort": "/dev/ttyS2"
    }
  },
  "containerMode": "GreengrassContainer",
  "containerParams": {
    "devices": {
      "0": {
        "path": "/dev/ttyS2",
        "permission": "rw",
        "addGroupOwner": true
      }
    }
  }
}
```

**Example Exemplo: atualização da mesclagem de configuração (sem modo de contêiner)**  <a name="modbus-rtu-protocol-adapter-configuration-example-no-container-mode"></a>

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "ModbusLocalPort": "/dev/ttyS2"
    }
  },
  "containerMode": "NoContainer"
}
```

------
#### [ v2.0.x ]

`lambdaParams`  
Um objeto que contém os parâmetros para a função do Lambda desse componente. Esse objeto contém as informações a seguir:    
`EnvironmentVariables`  
Um objeto que contém os parâmetros da função do Lambda. Esse objeto contém as informações a seguir:    
`ModbusLocalPort`  <a name="modbus-rtu-protocol-adapter-configuration-modbuslocalport"></a>
O caminho absoluto para a porta serial Modbus física no dispositivo principal, como `/dev/ttyS2`.  
Para executar esse componente em um contêiner, você deve definir esse caminho como um dispositivo do sistema (em `containerParams.devices`) que o componente possa acessar. Esse componente é executado em um contêiner por padrão.  
Esse componente deve ter read/write acesso ao dispositivo.

`containerMode`  <a name="modbus-rtu-protocol-adapter-configuration-containermode"></a>
(Opcional) O modo de conteinerização desse componente. Escolha uma das seguintes opções:  
+ `GreengrassContainer`— O componente é executado em um ambiente de execução isolado dentro do AWS IoT Greengrass contêiner.

  Se você especificar essa opção, deverá especificar um dispositivo do sistema (no `containerParams.devices`) para dar ao contêiner acesso ao dispositivo Modbus.
+ `NoContainer`; o componente não é executado em um ambiente de runtime isolado.
Padrão: `GreengrassContainer`

`containerParams`  <a name="modbus-rtu-protocol-adapter-configuration-containerparams"></a>
<a name="connector-component-container-params-description"></a>(Opcional) Um objeto que contém os parâmetros de contêiner para esse componente. O componente usará esses parâmetros se você especificar `GreengrassContainer` para `containerMode`.  
Esse objeto contém as informações a seguir:    
`memorySize`  
<a name="connector-component-container-params-memory-size-description"></a>(Opcional) A quantidade de memória (em quilobytes) que será alocada para o componente.  
O padrão é de 512 MB (525.312 KB).  
`devices`  
(Opcional) Um objeto que especifica os dispositivos do sistema que o componente pode acessar em um contêiner.  
Para executar esse componente em um contêiner, você deve especificar o dispositivo do sistema que você configura na variável de ambiente `ModbusLocalPort`.
Esse objeto contém as informações a seguir:    
`0`: este é um índice de matriz como uma string.  
Um objeto que contém as seguintes informações:    
`path`  
O caminho para o dispositivo do sistema no dispositivo principal. Ele deve ter o mesmo valor que você configura para `ModbusLocalPort`.  
`permission`  
(Opcional) A permissão para acessar o dispositivo do sistema a partir do contêiner. Esse valor deve ser`rw`, o que especifica que o componente tem read/write acesso ao dispositivo do sistema.  
Padrão: `rw`  
`addGroupOwner`  
(Opcional) Especifica se o grupo de sistema que executa o componente do deve ou não ser adicionado como proprietário do dispositivo do sistema.  
Padrão: `true`

`pubsubTopics`  <a name="connector-component-pubsub-topics-parameter"></a>
(Opcional) Um objeto que contém os tópicos que o componente assina para receber mensagens. Você pode especificar cada tópico e se o componente se inscreve nos tópicos do MQTT AWS IoT Core ou nos tópicos locais publish/subscribe .  
Esse objeto contém as informações a seguir:    
`0`: este é um índice de matriz como uma string.  
Um objeto que contém as seguintes informações:    
`type`  
(Opcional) O tipo de publish/subscribe mensagem que esse componente usa para assinar mensagens. Escolha uma das seguintes opções:  
+ `PUB_SUB` – Assine mensagens locais de publicar/assinar. Se escolher essa opção, o tópico não poderá conter curingas MQTT. Para obter mais informações sobre como enviar mensagens do componente personalizado quando você especifica essa opção, consulte [Publicar/assinar mensagens locais](ipc-publish-subscribe.md).
+ `IOT_CORE`— Assine as mensagens do AWS IoT Core MQTT. Se você escolher essa opção, o tópico poderá conter curingas do MQTT. Para obter mais informações sobre como enviar mensagens de componentes personalizados quando você especifica essa opção, consulte [Publique/assine mensagens MQTT AWS IoT Core](ipc-iot-core-mqtt.md).
Padrão: `PUB_SUB`  
`topic`  
(Opcional) O tópico que o componente assina para receber mensagens. Se você especificar `IotCore` para `type`, poderá usar curingas MQTT (`+` e `#`) neste tópico.

**Example Exemplo: atualização da mesclagem de configuração (modo de contêiner)**  <a name="modbus-rtu-protocol-adapter-configuration-example-container-mode"></a>

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "ModbusLocalPort": "/dev/ttyS2"
    }
  },
  "containerMode": "GreengrassContainer",
  "containerParams": {
    "devices": {
      "0": {
        "path": "/dev/ttyS2",
        "permission": "rw",
        "addGroupOwner": true
      }
    }
  }
}
```

**Example Exemplo: atualização da mesclagem de configuração (sem modo de contêiner)**  <a name="modbus-rtu-protocol-adapter-configuration-example-no-container-mode"></a>

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "ModbusLocalPort": "/dev/ttyS2"
    }
  },
  "containerMode": "NoContainer"
}
```

------

## Dados de entrada
<a name="modbus-rtu-protocol-adapter-component-input-data"></a>

Esse componente aceita os parâmetros de solicitação Modbus RTU no tópico a seguir e envia a solicitação Modbus RTU para o dispositivo. <a name="connector-component-local-publish"></a>Por padrão, esse componente se inscreve em publish/subscribe mensagens locais. Para obter mais informações sobre como publicar mensagens nesse componente a partir de seus componentes personalizados, consulte [Publicar/assinar mensagens locais](ipc-publish-subscribe.md). 

**Tópico padrão (publicação/assinatura local):** `modbus/adapter/request`

<a name="connector-component-input-properties"></a>A mensagem aceita as propriedades a seguir. As mensagens de entrada devem estar no formato JSON.

`request`  
Os parâmetros para o envio da solicitação Modbus RTU.  
A forma da mensagem de solicitação depende do tipo de solicitação Modbus RTU que representa. As propriedades a seguir são necessárias para todas as solicitações.  
Tipo: o `object` que contém as seguintes informações:    
`operation`  
O nome da operação a ser executada. Por exemplo, especifique `ReadCoilsRequest` para ler bobinas em um dispositivo Modbus RTU. Para obter mais informações sobre as operações compatíveis, consulte [Respostas e solicitações Modbus RTU](#modbus-rtu-protocol-adapter-component-requests-responses).  
Tipo: `string`  
`device`  
O dispositivo de destino da solicitação.  
Esse valor deve ser um número inteiro entre `0` e `247`.  
Tipo: `integer`
Os outros parâmetros a ser incluídos na solicitação dependem da operação. Esse componente manipula a [verificação de redundância cíclica (CRC)](https://en.wikipedia.org/wiki/Cyclic_redundancy_check) para verificar as solicitações de dados para você.  
Se sua solicitação incluir uma propriedade `address`, você deverá especificar seu valor como um número inteiro. Por exemplo, .`"address": 1`

`id`  <a name="connector-component-input-property-id"></a>
Um ID arbitrário para a solicitação. Use essa propriedade para mapear uma solicitação de entrada para uma resposta de saída. Quando você especifica essa propriedade, o componente define a propriedade `id` no objeto de resposta com esse valor.  
Tipo: `string`

**Example Exemplo de entrada: solicitação de bobinas de leitura**  

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

## Dados de saída
<a name="modbus-rtu-protocol-adapter-component-output-data"></a>

 <a name="connector-component-output-data"></a>Por padrão, esse componente publica respostas como dados de saída no tópico do MQTT a seguir. Você deve especificar esse tópico como `subject` na configuração do [componente legado de roteador de assinatura](legacy-subscription-router-component.md). Para obter mais informações sobre como assinar mensagens nesse tópico em seus componentes personalizados, consulte [Publique/assine mensagens MQTT AWS IoT Core](ipc-iot-core-mqtt.md). 

**Tópico padrão (AWS IoT Core MQTT):** `modbus/adapter/response`

O formato da mensagem de resposta depende da operação da solicitação e do status da resposta. Para obter exemplos, consulte [Exemplos de solicitações e respostas](#modbus-rtu-protocol-adapter-component-examples).

Cada resposta inclui as seguintes propriedades:

`response`  
A resposta do dispositivo Modbus RTU.  
Tipo: o `object` que contém as seguintes informações:    
`status`  
O status da solicitação. O status pode ser um dos valores a seguir:  
+ `Success`: a solicitação era válida, o componente enviou a solicitação para a rede Modbus RTU, e a rede Modbus RTU retornou uma resposta.
+ `Exception`: a solicitação era válida, o componente enviou a solicitação para a rede Modbus RTU, e a rede Modbus RTU retornou uma exceção. Para obter mais informações, consulte [Status da resposta: Exceção](#modbus-rtu-protocol-adapter-component-response-exception).
+ `No Response`: a solicitação era inválida, e o componente capturou o erro antes que a solicitação fosse enviada por meio da rede Modbus RTU. Para obter mais informações, consulte [Status de resposta: Sem resposta](#modbus-rtu-protocol-adapter-component-response-noresponse).  
`operation`  
A operação solicitada pelo componente.  
`device`  
O dispositivo para o qual o componente enviou a solicitação.  
`payload`  
A resposta do dispositivo Modbus RTU. Se `status` for `No Response`, esse objeto conterá apenas uma propriedade `error` com a descrição do erro (por exemplo, `[Input/Output] No Response received from the remote unit`).

`id`  
O ID da solicitação, que você pode usar para identificar qual resposta corresponde a qual solicitação.

**nota**  
Uma resposta para uma operação de gravação é simplesmente um eco da solicitação. Embora as respostas de escrita não incluam informações significativas, é uma prática recomendada verificar o estado da resposta para ver se a solicitação foi bem-sucedida ou falhou.

**Example Exemplo de resultado: sucesso**  

```
{
  "response" : {
    "status" : "success",
    "device": 1,
    "operation": "ReadCoilsRequest",
    "payload": {
      "function_code": 1,
      "bits": [1]
    }
  },
  "id" : "MyRequest"
}
```

**Example Exemplo de resultado: falha**  

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

Para obter mais exemplos, consulte [Exemplos de solicitações e respostas](#modbus-rtu-protocol-adapter-component-examples).

## Respostas e solicitações Modbus RTU
<a name="modbus-rtu-protocol-adapter-component-requests-responses"></a>

Esse conector aceita parâmetros de solicitação Modbus RTU como [dados de entrada](#modbus-rtu-protocol-adapter-component-input-data) e publica respostas como [dados de saída](#modbus-rtu-protocol-adapter-component-output-data).

As operações comuns a seguir têm suporte.


| Nome da operação na solicitação | Código da função em resposta | 
| --- | --- | 
| ReadCoilsRequest | 01 | 
| ReadDiscreteInputsRequest | 02 | 
| ReadHoldingRegistersRequest | 03 | 
| ReadInputRegistersRequest | 04 | 
| WriteSingleCoilRequest | 05 | 
| WriteSingleRegisterRequest | 06 | 
| WriteMultipleCoilsRequest | 15 | 
| WriteMultipleRegistersRequest | 16 | 
| MaskWriteRegisterRequest | 22 | 
| ReadWriteMultipleRegistersRequest | 23 | 

### Exemplos de solicitações e respostas
<a name="modbus-rtu-protocol-adapter-component-examples"></a>

Veja a seguir exemplos de solicitações e respostas para operações com suporte.

Bobinas de leitura  
**Exemplo de solicitação:**  

```
{
  "request": {
    "operation": "ReadCoilsRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "TestRequest"
}
```
**Exemplo de resposta:**  

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

Ler entradas discretas  
**Exemplo de solicitação:**  

```
{
  "request": {
    "operation": "ReadDiscreteInputsRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "TestRequest"
}
```
**Exemplo de resposta:**  

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

Registros de leitura em espera  
**Exemplo de solicitação:**  

```
{
  "request": {
    "operation": "ReadHoldingRegistersRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "TestRequest"
}
```
**Exemplo de resposta:**  

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

Registros de entrada de leitura  
**Exemplo de solicitação:**  

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

Bobina de gravação única  
**Exemplo de solicitação:**  

```
{
  "request": {
    "operation": "WriteSingleCoilRequest",
    "device": 1,
    "address": 1,
    "value": 1
  },
  "id": "TestRequest"
}
```
**Exemplo de resposta:**  

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

Registro de gravação único  
**Exemplo de solicitação:**  

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

Várias bobinas de gravação  
**Exemplo de solicitação:**  

```
{
  "request": {
    "operation": "WriteMultipleCoilsRequest",
    "device": 1,
    "address": 1,
    "values": [1,0,0,1]
  },
  "id": "TestRequest"
}
```
**Exemplo de resposta:**  

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

Vários registros de gravação  
**Exemplo de solicitação:**  

```
{
  "request": {
    "operation": "WriteMultipleRegistersRequest",
    "device": 1,
    "address": 1,
    "values": [20,30,10]
  },
  "id": "TestRequest"
}
```
**Exemplo de resposta:**  

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

Registro de gravação Mask  
**Exemplo de solicitação:**  

```
{
  "request": {
    "operation": "MaskWriteRegisterRequest",
    "device": 1,
    "address": 1,
    "and_mask": 175,
    "or_mask": 1
  },
  "id": "TestRequest"
}
```
**Exemplo de resposta:**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "MaskWriteRegisterRequest",
    "payload": {
      "function_code": 22,
      "and_mask": 0,
      "or_mask": 8
    }
  },
  "id" : "TestRequest"
}
```

Vários registros de leitura/gravação  
**Exemplo de solicitação:**  

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

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "ReadWriteMultipleRegistersRequest",
    "payload": {
      "function_code": 23,
      "registers": [10,20,10,20]
    }
  },
  "id" : "TestRequest"
}
```
A resposta inclui os registros que o componente lê.

### Status da resposta: Exceção
<a name="modbus-rtu-protocol-adapter-component-response-exception"></a>

As exceções pode ocorrer quando o formato da solicitação é válido, mas a solicitação não é concluída com êxito. Nesse caso, a resposta contém as seguintes informações:
+ A `status` é definida como `Exception`.
+ O código da função `function_code` é igual ao código da função da solicitação \$1 128.
+ O `exception_code` contém o código da exceção. Para obter mais informações, consulte os códigos de exceção Modbus.

**Exemplo:**

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

### Status de resposta: Sem resposta
<a name="modbus-rtu-protocol-adapter-component-response-noresponse"></a>

Esse conector executa verificações de validação na solicitação Modbus. Por exemplo, ele verifica se há formatos inválidos e campos ausentes. Se a validação falhar, o conector não enviará a solicitação. Em vez disso, ele retornará uma resposta com as seguintes informações:
+ A `status` é definida como `No Response`.
+ O `error` contém o motivo do erro.
+ O `error_message` contém a mensagem do erro.

**Exemplos:**

```
{
  "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 a solicitação tem como destino um dispositivo inexistente, ou se a rede Modbus RTU não está funcionando, você pode obter um `ModbusIOException`, que usa o formato Sem resposta.

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

## Arquivo de log local
<a name="modbus-rtu-protocol-adapter-component-log-file"></a>

Esse componente usa o arquivo de log abaixo.

```
/greengrass/v2/logs/aws.greengrass.Modbus.log
```

**Para exibir os logs desse componente**
+ Execute o comando a seguir no dispositivo principal para visualizar o arquivo de log desse componente em tempo real. `/greengrass/v2`Substitua pelo caminho para a pasta AWS IoT Greengrass raiz.

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

## Licenças
<a name="modbus-rtu-protocol-adapter-component-licenses"></a>

Esse componente inclui o seguinte licenciamento/software de terceiros:
+ Licença [pymodbus](https://github.com/riptideio/pymodbus/blob/master/README.rst)/BSD
+ Licença [pyserial](https://github.com/pyserial/pyserial)/BSD

<a name="component-core-software-license"></a>Esse componente é liberado de acordo com o [Contrato de licença de software Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="modbus-rtu-protocol-adapter-component-changelog"></a>

A tabela a seguir descreve as alterações em cada versão do componente.


|  **Versão**  |  **Alterações**  | 
| --- | --- | 
|  2.1.11  | Versão atualizada para o Greengrass nucleus versão 2.15.0. | 
|  2.1.10  | Versão atualizada para o Greengrass nucleus versão 2.14.0. | 
|  2.1.9  | Versão atualizada para o lançamento da versão 2.13.0 do núcleo do Greengrass. | 
|  2.1.8  | Versão atualizada para o núcleo do Greengrass 2.12.0. | 
|  2.1.7  | Versão atualizada para o lançamento da versão 2.11.0 do núcleo do Greengrass. | 
|  2.1.6  | Versão atualizada para o lançamento da versão 2.10.0 do núcleo do Greengrass. | 
|  2.1.5  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/greengrass/v2/developerguide/modbus-rtu-protocol-adapter-component.html) | 
|  2.1.4  | Versão atualizada para o núcleo do Greengrass 2.9.0. | 
|  2.1.3  | Versão atualizada para o núcleo do Greengrass 2.8.0. | 
|  2.1.2  |  Versão atualizada para o lançamento da versão 2.7.0 do núcleo do Greengrass.  | 
|  2.1.1  |  Versão atualizada para o lançamento da versão 2.6.0 do núcleo do Greengrass.  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/greengrass/v2/developerguide/modbus-rtu-protocol-adapter-component.html)  | 
|  2.0.8  |  Versão atualizada para o lançamento da versão 2.5.0 do núcleo do Greengrass.  | 
|  2.0.7  |  Versão atualizada para o lançamento da versão 2.4.0 do núcleo do Greengrass.  | 
|  2.0.6  |  Versão atualizada para o lançamento da versão 2.3.0 do núcleo do Greengrass.  | 
|  2.0.5  |  Versão atualizada para o lançamento do núcleo do Greengrass versão 2.2.0.  | 
|  2.0.4  |  Versão atualizada para o Greengrass nucleus versão 2.1.0.  | 
|  2.0.3  |  Versão inicial.  | 