통신
통신 항목은 컨트롤러가 외부 장비나 서버와 주고받을 연결을 미리 등록하는 곳입니다. 등록한 연결은 같은 이름의 동작에서 선택하여 사용합니다.
MQTT 클라이언트
호스트와 포트를 입력합니다. 기본 포트는 암호화를 사용하지 않을 때 1883, SSL/TLS 를 사용할 때 8883 입니다. 연결 타임아웃(기본값 3초)은 브로커 연결을 기다리는 최대 시간이며, 이 시간을 넘기면 연결에 실패한 것으로 간주합니다. 클라이언트 ID 는 브로커 안에서 고유해야 하며, 비워 두면 자동으로 생성됩니다. 브로커가 인증을 요구하면 사용자 인증을 켜고 아이디와 패스워드를 입력하고, SSL/TLS 암호화를 켜면 클라이언트 인증서, 클라이언트 개인키, CA 인증서 파일을 업로드하여 등록합니다. 암호화를 켜면 브로커와 주고받는 모든 메시지가 암호화됩니다.
Will 메시지는 연결이 비정상적으로 끊겼을 때 브로커가 대신 발행할 메시지입니다. 토픽(예: clients/device1/status)과 메시지, QoS, 메시지 보존 여부를 설정합니다. QoS 는 0이 응답을 확인하지 않고, 1이 응답이 올 때까지 재전송하며(중복 가능), 2가 정확히 한 번의 전달을 보장합니다(기본값 QoS 1). 숫자가 커질수록 신뢰성이 높아지지만 네트워크 사용량도 늘어납니다. 메시지 보존을 켜면 Will 메시지가 브로커에 보존(retain)되어, 연결이 끊긴 뒤에 새로 접속한 구독자도 그 메시지를 즉시 받습니다. 예를 들어 “offline” 메시지를 보존해 두면 이후 접속하는 모든 구독자가 이 클라이언트의 상태를 알 수 있습니다.
모드버스
타입에서 RTU Master, RTU Slave, TCP Master, TCP Slave 중 하나를 선택합니다(기본값 RTU Master). RTU 는 시리얼 포트와 Baud rate, Parity bit, Stop bit, Data bits 를, TCP 는 IP 주소와 포트(기본 502)를 입력합니다. TCP Slave 는 동시 접속할 Master 의 최대 연결 갯수(기본 16)를 설정합니다.
| 항목 | 표시 타입 | 설명 |
|---|---|---|
| 시리얼 포트 | RTU Master · RTU Slave | 장치가 연결된 시리얼 포트를 검색 버튼으로 찾거나 직접 입력합니다(예: Windows 는 COM3, Linux 는 /dev/ttyACM0). |
| Baud rate (bps) · Parity bit · Stop bit · Data bits | RTU Master · RTU Slave | 시리얼 통신 조건이며 통신하는 상대 장비의 설정과 같아야 합니다. Baud rate 는 1200~921600(기본값 9600), Parity bit 는 None(기본값)·Odd·Even, Stop bit 는 1(기본값)·2, Data bits 는 5~9(기본값 8)입니다. |
| Unit ID | RTU Slave | 이 Slave 의 고유 번호(1~247, 기본값 1)입니다. Slave ID 또는 주소라고도 하며, 같은 회선에 Slave 가 여럿일 때 Master 가 이 번호로 상대를 지정합니다. |
| IP 주소 | TCP Master | 접속할 TCP Slave 의 IP 주소입니다(예: 192.168.0.50). 끝에 :포트(192.168.0.50:502)를 붙여도 자동으로 처리됩니다. |
| 연결 타임아웃 | TCP Master | TCP Slave 연결을 기다리는 최대 시간(기본값 3초)이며, 이 시간을 넘기면 연결에 실패한 것으로 간주합니다. |
| 최대 연결 갯수 | TCP Slave | 동시에 접속할 수 있는 Master 의 수(1~255, 기본값 16)입니다. |
| Register 크기 · Bit 크기 | RTU Slave · TCP Slave | Slave 메모리의 Register 영역과 Bit 영역 크기(각 1~256, 기본값 8)입니다. |
| Register Mapping · Bit Mapping | RTU Slave · TCP Slave | Register 영역의 주소에는 숫자 타입 변수를, Bit 영역의 주소에는 디지털 타입 변수를 매핑합니다. |
Master 로 동작할 때 통신할 상대 Slave 의 Unit ID 는 설정이 아니라 모드버스 통신 동작에서 요청마다 지정합니다.
Slave 로 동작할 때는 Register 크기와 Bit 크기를 정하고 각 주소에 변수를 매핑합니다. Grablo 의 Slave 메모리는 입력과 출력을 구분하지 않고 Register 영역과 Bit 영역으로만 구성됩니다. Coils 와 Discrete Inputs 는 Bit 영역을, Holding Registers 와 Input Registers 는 Register 영역을 사용하며 주소는 0부터 시작합니다.
OPC UA 클라이언트
호스트와 포트(기본 4840), 응답 타임아웃(기본값 10초)을 입력합니다. 응답 타임아웃은 클라이언트의 요청에 서버가 응답하기를 기다리는 최대 시간이며, 이 시간을 넘기면 접속이 끊긴 것으로 간주합니다. 서버가 인증을 요구하면 사용자 인증을 켜고 아이디와 패스워드를 입력합니다. SSL/TLS 암호화를 켜면 인증서 파일과 개인키 파일, 암호화 방법, 보안 모드를 설정합니다. 인증서와 개인키는 Grablo 가 기본 파일(cert.der, key.der)을 제공하여 미리 채워져 있으므로 그 파일을 서버에 등록하여 사용할 수 있으며, 다른 파일을 사용하려면 업로드하여 교체합니다.
| 항목 | 값 | 설명 |
|---|---|---|
| 암호화 방법 | Basic256Sha256 | 기본값. 256비트 AES 대칭 암호화를 사용하고 SHA-256 해시로 무결성을 확인하는 강력한 방식입니다. |
| Aes128_Sha256_RsaOaep | 128비트 AES 와 SHA-256 을 사용하고 RSA-OAEP 키 교환을 채택하여 성능과 보안의 균형을 맞춘 방식입니다. | |
| Aes256_Sha256_RsaPss | 256비트 AES 와 SHA-256 에 RSA-PSS 서명을 더해 높은 보안 요구에 적합한 방식입니다. | |
| 보안 모드 | 서명만 | 메시지를 개인키로 서명만 하고 암호화하지 않습니다. 신뢰할 수 있는 네트워크에서 사용합니다. |
| 서명 및 암호화 | 기본값. 개인키로 서명하고 수신자의 공개키로 암호화합니다. 보안이 필요한 네트워크에서 사용합니다. |
사용자 정의 통신
시리얼 통신, TCP 클라이언트와 서버, UDP 클라이언트와 서버, 공유 메모리, 웹소켓 클라이언트, 블루투스 클라이언트와 서버 아홉 가지를 지원합니다. 시리얼은 포트와 통신 조건을, TCP·UDP· 웹소켓은 호스트와 포트를, 공유 메모리는 이름과 크기를, 블루투스는 로컬 HCI 인덱스를 입력하며, 블루투스 클라이언트는 접속할 서버의 리모트 MAC 주소를 함께 입력합니다.
| 항목 | 표시 타입 | 설명 |
|---|---|---|
| 시리얼 포트 | 시리얼 통신 | 장치가 연결된 시리얼 포트를 검색 버튼으로 찾거나 직접 입력합니다(예: Windows 는 COM3, Linux 는 /dev/ttyACM0). |
| Baud rate (bps) · Parity bit · Stop bit · Data bits | 시리얼 통신 | 통신하는 상대 장비의 설정과 같아야 합니다. 선택 값과 기본값은 모드버스와 같습니다(9600, None, 1, 8). |
| 호스트 | TCP 클라이언트 · UDP 클라이언트 · 웹소켓 클라이언트 | 접속할 서버의 IP 주소 또는 호스트명입니다(예: 192.168.0.10, myserver.local). |
| 포트 | TCP·UDP 클라이언트와 서버, 웹소켓 클라이언트 | 접속하거나 대기할 포트 번호입니다(기본값 3000). |
| 연결 타임아웃 | TCP 클라이언트 · 웹소켓 클라이언트 | 서버 연결을 기다리는 최대 시간(기본값 3초)이며, 이 시간을 넘기면 연결에 실패한 것으로 간주합니다. |
| 공유 메모리 이름 · 공유 메모리 크기 (bytes) | 공유 메모리 | 이름은 상대 프로그램과 같아야 하며(예: grablo_shm1), 크기는 1~65535바이트(기본값 256)입니다. |
| 로컬 HCI 인덱스 | 블루투스 클라이언트 · 블루투스 서버 | 컨트롤러에 연결된 블루투스 어댑터의 번호입니다. 스캔 버튼으로 어댑터를 검색하며, 어댑터가 하나이면 기본값(hci0)을 사용합니다. |
| 리모트 MAC 주소 | 블루투스 클라이언트 | 접속할 블루투스 서버의 MAC 주소입니다. AA:BB:CC:DD:EE:FF, AA-BB-CC-DD-EE-FF, AABBCCDDEEFF 어느 형식으로 입력해도 됩니다. |
| 수신 타임아웃 | UDP 와 공유 메모리를 제외한 타입 | 기본값 10밀리초입니다. 아래 설명을 참고합니다. |
수신 타임아웃은 마지막 바이트를 받은 뒤 다음 바이트를 기다리는 최대 시간입니다. 이 시간을 넘기면 더 이상 받을 데이터가 없다고 판단하므로, 프레임 단위로 데이터를 주고받을 때 이 값이 수신 성패를 가릅니다. 공유 메모리는 이름이 상대와 같아야 하며, 같은 이름의 공유 메모리가 이미 있으면 그것을 사용하고 없으면 새로 만듭니다.
Linux 컨트롤러에서는 터미널 또는 SSH 에서 hciconfig 명령으로 블루투스 어댑터의
HCI 인덱스(hci0, hci1)와 MAC 주소(BD Address)를 확인할 수 있습니다.