

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Modbus-RTU 프로토콜 어댑터
<a name="modbus-rtu-protocol-adapter-component"></a>

Modbus-RTU 프로토콜 어댑터 구성 요소(`aws.greengrass.Modbus`)는 로컬 Modbus RTU 디바이스에서 정보를 폴링합니다.

이 구성 요소를 사용하여 로컬 Modbus RTU 디바이스에서 정보를 요청하려면 이 구성 요소가 구독하는 주제에 메시지를 게시합니다. 메시지에서 디바이스에 전송할 Modbus RTU 요청을 지정합니다. 그러면 이 구성 요소는 Modbus RTU 요청에 대한 결과가 포함된 응답을 게시합니다.

**참고**  
이 구성 요소는 AWS IoT Greengrass V1의 Modbus RTU 프로토콜 어댑터 커넥터와 유사한 기능을 제공합니다. 자세한 내용은 *AWS IoT Greengrass V1 개발자 가이드*의 [Modbus RTU 프로토콜 어댑터 커넥터](https://docs.aws.amazon.com/greengrass/latest/developerguide/modbus-protocol-adapter-connector.html)를 참조하세요.

**Topics**
+ [버전](#modbus-rtu-protocol-adapter-component-versions)
+ [유형](#modbus-rtu-protocol-adapter-component-type)
+ [운영 체제](#modbus-rtu-protocol-adapter-component-os-support)
+ [요구 사항](#modbus-rtu-protocol-adapter-component-requirements)
+ [종속성](#modbus-rtu-protocol-adapter-component-dependencies)
+ [구성](#modbus-rtu-protocol-adapter-component-configuration)
+ [입력 데이터](#modbus-rtu-protocol-adapter-component-input-data)
+ [출력 데이터](#modbus-rtu-protocol-adapter-component-output-data)
+ [Modbus RTU 요청 및 응답](#modbus-rtu-protocol-adapter-component-requests-responses)
+ [로컬 로그 파일](#modbus-rtu-protocol-adapter-component-log-file)
+ [라이선스](#modbus-rtu-protocol-adapter-component-licenses)
+ [Changelog](#modbus-rtu-protocol-adapter-component-changelog)

## 버전
<a name="modbus-rtu-protocol-adapter-component-versions"></a>

이 구성 요소에는 다음과 같은 버전이 있습니다.
+ 2.1.x
+ 2.0.x

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

<a name="public-component-type-lambda"></a>이 <a name="public-component-type-lambda-phrase"></a>구성 요소는 Lambda 구성 요소(`aws.greengrass.lambda`)입니다. [Greengrass nucleus](greengrass-nucleus-component.md)에서는 [Lambda 런처 구성 요소](lambda-launcher-component.md)를 사용하여 이 구성 요소의 Lambda 함수를 실행합니다.

<a name="public-component-type-more-information"></a>자세한 내용은 [구성 요소 유형](develop-greengrass-components.md#component-types) 단원을 참조하십시오.

## 운영 체제
<a name="modbus-rtu-protocol-adapter-component-os-support"></a>

이 구성 요소는 Linux 코어 디바이스에만 설치할 수 있습니다.

## 요구 사항
<a name="modbus-rtu-protocol-adapter-component-requirements"></a>

이 구성 요소에는 다음과 같은 요구 사항이 있습니다.
+ <a name="core-device-lambda-function-requirements"></a>Lambda 함수를 실행하려면 코어 디바이스가 요구 사항을 충족해야 합니다. 코어 디바이스에서 컨테이너화된 Lambda 함수를 실행하려면 디바이스가 요구 사항을 충족해야 합니다. 자세한 내용은 [Lambda 함수 요구 사항](setting-up.md#greengrass-v2-lambda-requirements) 단원을 참조하십시오.
+ <a name="public-component-python3-requirement"></a>코어 장치에 설치되고 PATH 환경 변수에 추가된 [Python](https://www.python.org/) 버전 3.7입니다.
+  AWS IoT Greengrass 코어 디바이스와 Modbus 디바이스 간의 물리적 연결입니다. 코어 디바이스는 직렬 포트(예: USB 포트)를 통해 Modbus RTU 네트워크에 물리적으로 연결되어 있어야 합니다.
+ <a name="connector-component-legacy-subscription-router-dependency"></a>이 구성 요소의 출력 데이터를 수신하려면 이 구성 요소를 배포할 때 [레거시 구독 라우터 구성 요소](legacy-subscription-router-component.md)(`aws.greengrass.LegacySubscriptionRouter`)에 대한 다음 구성 업데이트를 병합해야 합니다. 이 구성에서는 이 구성 요소가 응답을 게시하는 주제를 지정합니다.

------
#### [ 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*을 사용하는 AWS 리전 로 바꿉니다.
  + *버전*을 이 구성 요소에서 실행되는 Lambda 함수의 버전으로 바꿉니다. Lambda 함수 버전을 찾으려면 배포하려는 이 구성 요소의 버전에 대한 레시피를 확인해야 합니다. [AWS IoT Greengrass 콘솔](https://console.aws.amazon.com//greengrass)에서 이 구성 요소의 세부 정보 페이지를 열고 **Lambda 함수** 키-값 페어를 찾습니다. 이 키-값 페어에는 Lambda 함수의 이름과 버전이 포함되어 있습니다.

**중요**  <a name="connector-component-legacy-subscription-router-dependency-note"></a>
이 구성 요소를 배포할 때마다 레거시 구독 라우터의 Lambda 함수 버전을 업데이트해야 합니다. 이를 통해 배포하는 구성 요소 버전에 맞는 올바른 Lambda 함수 버전을 사용할 수 있습니다.

------

  <a name="connector-component-create-deployments"></a>자세한 내용은 [배포 만들기](create-deployments.md) 단원을 참조하십시오.
+ Modbus-RTU 프로토콜 어댑터는 VPC에서 실행할 수 있습니다.

## 종속성
<a name="modbus-rtu-protocol-adapter-component-dependencies"></a>

구성 요소를 배포할 때는 호환되는 버전의 종속성 AWS IoT Greengrass 도 배포합니다. 즉, 구성 요소를 성공적으로 배포하려면 구성 요소 및 모든 해당 종속성에 대한 요구 사항을 충족해야 합니다. 이 섹션에는 이 구성 요소의 [릴리스된 버전](#modbus-rtu-protocol-adapter-component-changelog)에 대한 종속성과 각 종속성에 대한 구성 요소 버전을 정의하는 의미 체계 버전 제약 조건이 나열되어 있습니다. [AWS IoT Greengrass 콘솔](https://console.aws.amazon.com//greengrass)에서도 각 구성 요소 버전에 대한 종속성을 볼 수 있습니다. 구성 요소 세부 정보 페이지에서 **종속성** 목록을 찾습니다.

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

다음 표에는 이 구성 요소의 버전 2.1.11에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.16.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.1.10에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.15.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.1.9에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.14.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.1.8에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.13.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.1.7에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.12.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.1.6에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.11.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.1.4 및 2.1.5에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.10.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.1.3에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.9.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.1.2에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.1.1에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.7.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.0.8 및 2.1.0에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.0.7에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.0.6에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.0.5에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.0.4에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.2.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | ^2.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | ^2.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | ^2.0.0  | 하드 | 

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

다음 표에는 이 구성 요소의 버전 2.0.3에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.0.3 <2.1.0  | 하드 | 
| [Lambda 런처](lambda-launcher-component.md) | >=1.0.0  | 하드 | 
| [Lambda 런타임](lambda-runtimes-component.md) | >=1.0.0  | 소프트 | 
| [토큰 교환 서비스](token-exchange-service-component.md) | >=1.0.0  | 하드 | 

------

구성 요소 종속성에 대한 자세한 내용은 [구성 요소 레시피 참조](component-recipe-reference.md#recipe-reference-component-dependencies)를 참조하세요.

## 구성
<a name="modbus-rtu-protocol-adapter-component-configuration"></a>

이 구성 요소는 구성 요소를 배포할 때 사용자 지정할 수 있는 다음 구성 파라미터를 제공합니다.

**참고**  <a name="connector-component-lambda-parameters"></a>
이 구성 요소의 기본 구성에는 Lambda 함수 파라미터가 포함되어 있습니다. 디바이스에서 다음 파라미터만 사용하여 이 구성 요소를 구성하는 것이 좋습니다.

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

`lambdaParams`  
이 구성 요소의 Lambda 함수에 대한 파라미터를 포함하는 객체입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.    
`EnvironmentVariables`  
Lambda 함수의 파라미터를 포함하는 객체입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.    
`ModbusLocalPort`  <a name="modbus-rtu-protocol-adapter-configuration-modbuslocalport"></a>
코어 디바이스에 있는 물리적 Modbus 직렬 포트의 절대 경로입니다(예: `/dev/ttyS2`).  
컨테이너에서 이 구성 요소를 실행하려면 이 경로를 구성 요소가 액세스할 수 있는 시스템 디바이스(`containerParams.devices`에)로 정의해야 합니다. 이 구성 요소는 기본적으로 컨테이너에서 실행됩니다.  
이 구성 요소에는 디바이스에 대한 읽기/쓰기 액세스 권한이 있어야 합니다.  
`ModbusBaudRate`  
(선택 사항) 로컬 Modbus TCP 디바이스와의 직렬 통신을 위한 전송 속도를 지정하는 문자열 값입니다.  
기본값: `9600`  
`ModbusByteSize`  
(선택 사항) 로컬 Modbus TCP 디바이스와의 직렬 통신에서 바이트 크기를 지정하는 문자열 값입니다. `5`, `6`, `7` 또는 `8`비트를 선택합니다.  
기본값: `8`  
`ModbusParity`  
(선택 사항) 로컬 Modbus TCP 디바이스와의 직렬 통신에서 데이터 무결성을 확인하는 데 사용할 패리티 모드입니다.  
+ `E` - 짝수 패리티를 사용하여 데이터 무결성을 확인합니다.
+ `O` – 홀수 패리티를 사용하여 데이터 무결성을 확인합니다.
+ `N` – 데이터 무결성을 확인하지 않습니다.
기본값: `N`  
`ModbusStopBits`  
(선택 사항) 로컬 Modbus TCP 디바이스와의 직렬 통신에서 바이트의 끝을 나타내는 비트 수를 지정하는 문자열 값입니다.  
기본값: `1`

`containerMode`  <a name="modbus-rtu-protocol-adapter-configuration-containermode"></a>
(선택 사항) 이 구성 요소에 대한 컨테이너화 모드입니다. 다음 옵션 중 하나를 선택합니다.  
+ `GreengrassContainer` - 구성 요소는 AWS IoT Greengrass 컨테이너 내의 격리된 런타임 환경에서 실행됩니다.

  이 옵션을 지정하는 경우 컨테이너에 Modbus 디바이스에 대한 액세스 권한을 부여할 시스템 디바이스(`containerParams.devices`에)를 지정해야 합니다.
+ `NoContainer` - 구성 요소가 격리된 런타임 환경에서 실행되지 않습니다.
기본값: `GreengrassContainer`

`containerParams`  <a name="modbus-rtu-protocol-adapter-configuration-containerparams"></a>
<a name="connector-component-container-params-description"></a>(선택 사항) 이 구성 요소에 대한 컨테이너 파라미터를 포함하는 객체입니다. `containerMode`에 `GreengrassContainer`를 지정하면 구성 요소에서 이러한 파라미터를 사용합니다.  
이 객체에는 다음 정보가 포함되어 있어야 합니다.    
`memorySize`  
<a name="connector-component-container-params-memory-size-description"></a>(선택 사항) 구성 요소에 할당되는 메모리 양(킬로바이트)입니다.  
기본값은 512MB(525,312KB)입니다.  
`devices`  
(선택 사항) 구성 요소가 컨테이너에서 액세스할 수 있는 시스템 디바이스를 지정하는 객체입니다.  
컨테이너에서 이 구성 요소를 실행하려면 `ModbusLocalPort` 환경 변수에서 구성하는 시스템 디바이스를 지정해야 합니다.
이 객체에는 다음 정보가 포함되어 있어야 합니다.    
`0` – 문자열 형태의 배열 인덱스입니다.  
다음 정보를 포함하는 객체입니다.    
`path`  
코어 디바이스의 시스템 디바이스 경로입니다. `ModbusLocalPort`에 대해 구성하는 값과 같은 값이어야 합니다.  
`permission`  
(선택 사항) 컨테이너에서 시스템 디바이스에 액세스할 수 있는 권한입니다. 이 값은 구성 요소가 시스템 디바이스에 대한 읽기/쓰기 액세스 권한을 갖도록 지정하는 `rw`여야 합니다.  
기본값: `rw`  
`addGroupOwner`  
(선택 사항) 구성 요소를 실행하는 시스템 그룹을 시스템 디바이스의 소유자로 추가할지 여부입니다.  
기본값: `true`

`pubsubTopics`  <a name="connector-component-pubsub-topics-parameter"></a>
(선택 사항) 구성 요소에서 메시지를 수신하려고 구독하는 주제를 포함하는 객체입니다. 각 주제와 구성 요소가 AWS IoT Core 또는 로컬 게시/구독 주제의 MQTT 주제를 구독하는지 여부를 지정할 수 있습니다.  
이 객체에는 다음 정보가 포함되어 있어야 합니다.    
`0` – 문자열 형태의 배열 인덱스입니다.  
다음 정보를 포함하는 객체입니다.    
`type`  
(선택 사항) 이 구성 요소에서 메시지 구독에 사용하는 게시/구독 메시징의 유형입니다. 다음 옵션 중 하나를 선택합니다.  
+ `PUB_SUB` – 로컬 게시/구독 메시지를 구독합니다. 이 옵션을 선택하면 주제에 MQTT 와일드카드를 포함할 수 없습니다. 이 옵션을 지정할 때 사용자 지정 구성 요소에서 메시지를 보내는 방법에 대한 자세한 내용은 [로컬 메시지 게시/구독](ipc-publish-subscribe.md) 섹션을 참조하세요.
+ `IOT_CORE` - AWS IoT Core MQTT 메시지를 구독합니다. 이 옵션을 선택하면 주제에 MQTT 와일드카드를 포함할 수 없습니다. 이 옵션을 지정할 때 사용자 지정 구성 요소에서 메시지를 보내는 방법에 대한 자세한 내용은 [AWS IoT Core MQTT 메시지 게시/구독](ipc-iot-core-mqtt.md) 섹션을 참조하세요.
기본값: `PUB_SUB`  
`topic`  
(선택 사항) 구성 요소가 메시지를 수신하기 위해 구독하는 주제입니다. `type`에 `IotCore`를 지정하면 이 주제에서 MQTT 와일드카드(`+` 및 `#`)를 사용할 수 있습니다.

**Example 예: 구성 병합 업데이트(컨테이너 모드)**  <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 예: 구성 병합 업데이트(컨테이너 없음 모드)**  <a name="modbus-rtu-protocol-adapter-configuration-example-no-container-mode"></a>

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

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

`lambdaParams`  
이 구성 요소의 Lambda 함수에 대한 파라미터를 포함하는 객체입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.    
`EnvironmentVariables`  
Lambda 함수의 파라미터를 포함하는 객체입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.    
`ModbusLocalPort`  <a name="modbus-rtu-protocol-adapter-configuration-modbuslocalport"></a>
코어 디바이스에 있는 물리적 Modbus 직렬 포트의 절대 경로입니다(예: `/dev/ttyS2`).  
컨테이너에서 이 구성 요소를 실행하려면 이 경로를 구성 요소가 액세스할 수 있는 시스템 디바이스(`containerParams.devices`에)로 정의해야 합니다. 이 구성 요소는 기본적으로 컨테이너에서 실행됩니다.  
이 구성 요소에는 디바이스에 대한 읽기/쓰기 액세스 권한이 있어야 합니다.

`containerMode`  <a name="modbus-rtu-protocol-adapter-configuration-containermode"></a>
(선택 사항) 이 구성 요소에 대한 컨테이너화 모드입니다. 다음 옵션 중 하나를 선택합니다.  
+ `GreengrassContainer` - 구성 요소는 AWS IoT Greengrass 컨테이너 내의 격리된 런타임 환경에서 실행됩니다.

  이 옵션을 지정하는 경우 컨테이너에 Modbus 디바이스에 대한 액세스 권한을 부여할 시스템 디바이스(`containerParams.devices`에)를 지정해야 합니다.
+ `NoContainer` - 구성 요소가 격리된 런타임 환경에서 실행되지 않습니다.
기본값: `GreengrassContainer`

`containerParams`  <a name="modbus-rtu-protocol-adapter-configuration-containerparams"></a>
<a name="connector-component-container-params-description"></a>(선택 사항) 이 구성 요소에 대한 컨테이너 파라미터를 포함하는 객체입니다. `containerMode`에 `GreengrassContainer`를 지정하면 구성 요소에서 이러한 파라미터를 사용합니다.  
이 객체에는 다음 정보가 포함되어 있어야 합니다.    
`memorySize`  
<a name="connector-component-container-params-memory-size-description"></a>(선택 사항) 구성 요소에 할당되는 메모리 양(킬로바이트)입니다.  
기본값은 512MB(525,312KB)입니다.  
`devices`  
(선택 사항) 구성 요소가 컨테이너에서 액세스할 수 있는 시스템 디바이스를 지정하는 객체입니다.  
컨테이너에서 이 구성 요소를 실행하려면 `ModbusLocalPort` 환경 변수에서 구성하는 시스템 디바이스를 지정해야 합니다.
이 객체에는 다음 정보가 포함되어 있어야 합니다.    
`0` – 문자열 형태의 배열 인덱스입니다.  
다음 정보를 포함하는 객체입니다.    
`path`  
코어 디바이스의 시스템 디바이스 경로입니다. `ModbusLocalPort`에 대해 구성하는 값과 같은 값이어야 합니다.  
`permission`  
(선택 사항) 컨테이너에서 시스템 디바이스에 액세스할 수 있는 권한입니다. 이 값은 구성 요소가 시스템 디바이스에 대한 읽기/쓰기 액세스 권한을 갖도록 지정하는 `rw`여야 합니다.  
기본값: `rw`  
`addGroupOwner`  
(선택 사항) 구성 요소를 실행하는 시스템 그룹을 시스템 디바이스의 소유자로 추가할지 여부입니다.  
기본값: `true`

`pubsubTopics`  <a name="connector-component-pubsub-topics-parameter"></a>
(선택 사항) 구성 요소에서 메시지를 수신하려고 구독하는 주제를 포함하는 객체입니다. 각 주제와 구성 요소가 AWS IoT Core 또는 로컬 게시/구독 주제의 MQTT 주제를 구독하는지 여부를 지정할 수 있습니다.  
이 객체에는 다음 정보가 포함되어 있어야 합니다.    
`0` – 문자열 형태의 배열 인덱스입니다.  
다음 정보를 포함하는 객체입니다.    
`type`  
(선택 사항) 이 구성 요소에서 메시지 구독에 사용하는 게시/구독 메시징의 유형입니다. 다음 옵션 중 하나를 선택합니다.  
+ `PUB_SUB` – 로컬 게시/구독 메시지를 구독합니다. 이 옵션을 선택하면 주제에 MQTT 와일드카드를 포함할 수 없습니다. 이 옵션을 지정할 때 사용자 지정 구성 요소에서 메시지를 보내는 방법에 대한 자세한 내용은 [로컬 메시지 게시/구독](ipc-publish-subscribe.md) 섹션을 참조하세요.
+ `IOT_CORE` - AWS IoT Core MQTT 메시지를 구독합니다. 이 옵션을 선택하면 주제에 MQTT 와일드카드를 포함할 수 없습니다. 이 옵션을 지정할 때 사용자 지정 구성 요소에서 메시지를 보내는 방법에 대한 자세한 내용은 [AWS IoT Core MQTT 메시지 게시/구독](ipc-iot-core-mqtt.md) 섹션을 참조하세요.
기본값: `PUB_SUB`  
`topic`  
(선택 사항) 구성 요소가 메시지를 수신하기 위해 구독하는 주제입니다. `type`에 `IotCore`를 지정하면 이 주제에서 MQTT 와일드카드(`+` 및 `#`)를 사용할 수 있습니다.

**Example 예: 구성 병합 업데이트(컨테이너 모드)**  <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 예: 구성 병합 업데이트(컨테이너 없음 모드)**  <a name="modbus-rtu-protocol-adapter-configuration-example-no-container-mode"></a>

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

------

## 입력 데이터
<a name="modbus-rtu-protocol-adapter-component-input-data"></a>

이 구성 요소는 다음 주제에 대한 Modbus RTU 요청 파라미터를 수락하고 Modbus RTU 요청을 디바이스에 전송합니다. <a name="connector-component-local-publish"></a>기본적으로 이 구성 요소는 로컬 게시/구독 메시지를 구독합니다. 사용자 지정 구성 요소에서 이 구성 요소로 메시지를 게시하는 방법에 대한 자세한 내용은 [로컬 메시지 게시/구독](ipc-publish-subscribe.md) 섹션을 참조하세요.

**기본 주제(로컬 게시/구독):** `modbus/adapter/request`

<a name="connector-component-input-properties"></a>메시지는 다음 속성을 수락합니다. 입력 메시지는 JSON 형식이어야 합니다.

`request`  
전송할 Modbus RTU 요청의 파라미터입니다.  
요청 메시지의 셰이프는 메시지가 나타내는 Modbus RTU 요청 유형에 따라 다릅니다. 다음은 모든 요청에 필수적인 속성입니다.  
유형: 다음 정보를 포함하는 `object`입니다.    
`operation`  
실행할 작업의 이름입니다. 예를 들어 Modbus RTU 디바이스에서 코일을 읽으려면 `ReadCoilsRequest`를 지정합니다. 지원되는 작업에 대한 자세한 내용은 [Modbus RTU 요청 및 응답](#modbus-rtu-protocol-adapter-component-requests-responses) 섹션을 참조하세요.  
유형: `string`  
`device`  
요청의 대상 디바이스입니다.  
이 값은 `0`에서 `247` 사이의 정수여야 합니다.  
유형: `integer`
요청에 포함할 다른 파라미터는 작업에 따라 다릅니다. 이 구성 요소는 [순환 중복 검사(CRC)](https://en.wikipedia.org/wiki/Cyclic_redundancy_check)를 처리하여 사용자의 데이터 요청을 확인합니다.  
요청에 `address` 속성이 포함된 경우 해당 값을 정수로 지정해야 합니다. 예를 들어 `"address": 1`입니다.

`id`  <a name="connector-component-input-property-id"></a>
요청에 대한 임의의 ID입니다. 이 속성을 사용하여 입력 요청을 출력 응답에 매핑할 수 있습니다. 이 속성을 지정하면 구성 요소는 응답 객체의 `id` 속성을 해당 값으로 설정합니다.  
유형: `string`

**Example 입력 예: 코일 요청 읽기**  

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

## 출력 데이터
<a name="modbus-rtu-protocol-adapter-component-output-data"></a>

 <a name="connector-component-output-data"></a>이 구성 요소는 기본적으로 다음 MQTT 주제에 대한 출력 데이터로 응답을 게시합니다. [레거시 구독 라우터 구성 요소](legacy-subscription-router-component.md)의 구성에서 이 주제를 `subject`로 지정해야 합니다. 사용자 지정 구성 요소에서 이 주제에 대한 메시지를 구독하는 방법에 대한 자세한 내용은 [AWS IoT Core MQTT 메시지 게시/구독](ipc-iot-core-mqtt.md) 섹션을 참조하세요.

**기본 주제(AWS IoT Core MQTT):** `modbus/adapter/response`

응답 메시지의 셰이프는 요청 작업 및 응답 상태에 따라 달라집니다. 예시는 [예제 요청 및 응답](#modbus-rtu-protocol-adapter-component-examples) 섹션을 참조하세요.

모든 응답에는 다음 속성이 포함됩니다.

`response`  
Modbus RTU 디바이스의 응답입니다.  
유형: 다음 정보를 포함하는 `object`입니다.    
`status`  
요청 상태입니다. 상태는 다음 값 중 하나일 수 있습니다.  
+ `Success` – 요청이 유효하고 구성 요소에서 Modbus RTU 네트워크에 요청을 전송했으며 Modbus RTU 네트워크에서 응답을 반환했습니다.
+ `Exception` - 요청이 유효하고 구성 요소에서 Modbus RTU 네트워크에 요청을 전송했으며 Modbus RTU 네트워크에서 예외를 반환했습니다. 자세한 내용은 [응답 상태: 예외](#modbus-rtu-protocol-adapter-component-response-exception) 단원을 참조하십시오.
+ `No Response` - 요청이 잘못되었고, 구성 요소에서 Modbus RTU 네트워크에 요청을 보내기 전에 오류가 발견되었습니다. 자세한 내용은 [응답 상태: 응답 없음](#modbus-rtu-protocol-adapter-component-response-noresponse) 단원을 참조하십시오.  
`operation`  
구성 요소에서 요청한 작업입니다.  
`device`  
구성 요소에서 요청을 전송한 디바이스입니다.  
`payload`  
Modbus RTU 디바이스의 응답입니다. `status`가 `No Response`인 경우 이 객체에는 오류 설명이 있는 `error` 속성만 포함됩니다(예: `[Input/Output] No Response received from the remote unit`).

`id`  
요청의 ID이며, 요청에 해당하는 응답을 식별하는 데 사용할 수 있습니다.

**참고**  
쓰기 작업에 대한 응답은 단순히 요청의 에코일 뿐입니다. 쓰기 응답에 대해 의미 있는 정보가 없더라도 응답의 상태를 확인하여 요청의 성공 여부를 확인하는 것이 좋습니다.

**Example 출력 예: 성공**  

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

**Example 출력 예: 실패**  

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

더 많은 예시는 [예제 요청 및 응답](#modbus-rtu-protocol-adapter-component-examples)를 참조합니다.

## Modbus RTU 요청 및 응답
<a name="modbus-rtu-protocol-adapter-component-requests-responses"></a>

이 커넥터는 Modbus RTU 요청 파라미터를 [입력 데이터](#modbus-rtu-protocol-adapter-component-input-data)로 수락하고 응답을 [출력 데이터](#modbus-rtu-protocol-adapter-component-output-data)로 게시합니다.

지원되는 일반적인 작업은 다음과 같습니다.


| 요청 시 작업 이름 | 응답의 함수 코드 | 
| --- | --- | 
| ReadCoilsRequest | 01 | 
| ReadDiscreteInputsRequest | 02 | 
| ReadHoldingRegistersRequest | 03 | 
| ReadInputRegistersRequest | 04 | 
| WriteSingleCoilRequest | 05 | 
| WriteSingleRegisterRequest | 06 | 
| WriteMultipleCoilsRequest | 15 | 
| WriteMultipleRegistersRequest | 16 | 
| MaskWriteRegisterRequest | 22 | 
| ReadWriteMultipleRegistersRequest | 23 | 

### 예제 요청 및 응답
<a name="modbus-rtu-protocol-adapter-component-examples"></a>

다음은 지원되는 작업에 대한 예제 요청 및 응답입니다.

코일 읽기  
**요청 예:**  

```
{
  "request": {
    "operation": "ReadCoilsRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "TestRequest"
}
```
**응답 예:**  

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

개별 입력 읽기  
**요청 예:**  

```
{
  "request": {
    "operation": "ReadDiscreteInputsRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "TestRequest"
}
```
**응답 예:**  

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

보류 레지스터 읽기  
**요청 예:**  

```
{
  "request": {
    "operation": "ReadHoldingRegistersRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "TestRequest"
}
```
**응답 예:**  

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

입력 레지스터 읽기  
**요청 예:**  

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

단일 코일 쓰기  
**요청 예:**  

```
{
  "request": {
    "operation": "WriteSingleCoilRequest",
    "device": 1,
    "address": 1,
    "value": 1
  },
  "id": "TestRequest"
}
```
**응답 예:**  

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

단일 레지스터 쓰기  
**요청 예:**  

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

다중 코일 쓰기  
**요청 예:**  

```
{
  "request": {
    "operation": "WriteMultipleCoilsRequest",
    "device": 1,
    "address": 1,
    "values": [1,0,0,1]
  },
  "id": "TestRequest"
}
```
**응답 예:**  

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

다중 레지스터 쓰기  
**요청 예:**  

```
{
  "request": {
    "operation": "WriteMultipleRegistersRequest",
    "device": 1,
    "address": 1,
    "values": [20,30,10]
  },
  "id": "TestRequest"
}
```
**응답 예:**  

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

레지스터 쓰기 마스크  
**요청 예:**  

```
{
  "request": {
    "operation": "MaskWriteRegisterRequest",
    "device": 1,
    "address": 1,
    "and_mask": 175,
    "or_mask": 1
  },
  "id": "TestRequest"
}
```
**응답 예:**  

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

다중 레지스터 쓰기 읽기  
**요청 예:**  

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

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "ReadWriteMultipleRegistersRequest",
    "payload": {
      "function_code": 23,
      "registers": [10,20,10,20]
    }
  },
  "id" : "TestRequest"
}
```
응답에는 구성 요소에서 읽는 레지스터가 포함됩니다.

### 응답 상태: 예외
<a name="modbus-rtu-protocol-adapter-component-response-exception"></a>

요청 형식이 올바르지만 요청이 성공적으로 완료되지 않으면 예외가 발생합니다. 이 경우 응답에는 다음 정보가 포함됩니다.
+ `status`는 `Exception`으로 설정됩니다.
+ `function_code`는 요청의 코드 함수 \$1 128과 같습니다.
+ `exception_code`에는 예외 코드가 포함되어 있습니다. 자세한 내용은 Modbus 예외 코드를 참조하십시오.

**예:**

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

### 응답 상태: 응답 없음
<a name="modbus-rtu-protocol-adapter-component-response-noresponse"></a>

이 커넥터는 Modbus 요청에 대해 확인 점검을 수행합니다. 예를 들어 잘못된 형식과 누락된 필드가 있는지 점검합니다. 확인이 실패하면 커넥터는 요청을 전송하지 않습니다. 그 대신 다음 정보를 포함하는 응답을 반환합니다.
+ `status`는 `No Response`으로 설정됩니다.
+ `error`에는 오류 이유가 포함되어 있습니다.
+ `error_message`에는 오류 메시지가 포함되어 있습니다.

**예**:

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

요청이 존재하지 않는 장치를 대상으로 하거나 Modbus RTU 네트워크가 작동하지 않는 경우 응답 없음 형식을 사용하는 `ModbusIOException`가 발생할 수 있습니다.

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

## 로컬 로그 파일
<a name="modbus-rtu-protocol-adapter-component-log-file"></a>

이 구성 요소는 다음 로그 파일을 사용합니다.

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

**이 구성 요소의 로그를 보려면**
+ 코어 디바이스에서 다음 명령을 실행하여 실시간으로 이 구성 요소의 로그 파일을 봅니다. 를 AWS IoT Greengrass 루트 폴더의 경로`/greengrass/v2`로 바꿉니다.

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

## 라이선스
<a name="modbus-rtu-protocol-adapter-component-licenses"></a>

이 구성 요소에는 다음 타사 소프트웨어/라이선스가 포함되어 있습니다.
+ [pymodbus](https://github.com/riptideio/pymodbus/blob/master/README.rst)/BSD 라이선스
+ [pyserial](https://github.com/pyserial/pyserial)/BSD 라이선스

<a name="component-core-software-license"></a>이 구성 요소는 [Greengrass 코어 소프트웨어 라이선스 계약](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)에 따라 릴리스됩니다.

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

다음 표에는 각 구성 요소 버전의 변경 사항이 설명되어 있습니다.


|  **버전**  |  **변경 사항**  | 
| --- | --- | 
|  2.1.11  | Greengrass nucleus 버전 2.15.0 릴리스용으로 업데이트된 버전입니다. | 
|  2.1.10  | Greengrass nucleus 버전 2.14.0 릴리스용으로 업데이트된 버전입니다. | 
|  2.1.9  | Greengrass nucleus 버전 2.13.0 릴리스용으로 업데이트된 버전입니다. | 
|  2.1.8  | Greengrass nucleus 버전 2.12.0 릴리스용으로 업데이트된 버전입니다. | 
|  2.1.7  | Greengrass nucleus 버전 2.11.0 릴리스용으로 업데이트된 버전입니다. | 
|  2.1.6  | Greengrass nucleus 버전 2.10.0 릴리스용으로 업데이트된 버전입니다. | 
|  2.1.5  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v2/developerguide/modbus-rtu-protocol-adapter-component.html) | 
|  2.1.4  | Greengrass nucleus 버전 2.9.0 릴리스용으로 업데이트된 버전입니다. | 
|  2.1.3  | Greengrass nucleus 버전 2.8.0 릴리스용으로 업데이트된 버전입니다. | 
|  2.1.2  |  Greengrass nucleus 버전 2.7.0 릴리스용으로 업데이트된 버전입니다.  | 
|  2.1.1  |  Greengrass nucleus 버전 2.6.0 릴리스용으로 업데이트된 버전입니다.  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v2/developerguide/modbus-rtu-protocol-adapter-component.html)  | 
|  2.0.8  |  Greengrass nucleus 버전 2.5.0 릴리스용으로 업데이트된 버전입니다.  | 
|  2.0.7  |  Greengrass nucleus 버전 2.4.0 릴리스용으로 업데이트된 버전입니다.  | 
|  2.0.6  |  Greengrass nucleus 버전 2.3.0 릴리스용으로 업데이트된 버전입니다.  | 
|  2.0.5  |  Greengrass nucleus 버전 2.2.0 릴리스용으로 업데이트된 버전입니다.  | 
|  2.0.4  |  Greengrass nucleus 버전 2.1.0 릴리스용으로 업데이트된 버전입니다.  | 
|  2.0.3  |  초기 버전입니다.  | 