PLC 통신 프로토콜은 무엇입니까?
통신 프로토콜은 데이터 통신을 위한 규칙 집합입니다.
즉, 통신 프로토콜은 둘 이상의 통신 장치 간의 합의 역할을 하며 말 그대로 두 장치를 연결하고 통신하는 데 사용됩니다. 통신 프로토콜이 없으면 장치는 연결만 가능하고 통신은 불가능합니다.
전송 속도
전송 속도를 통신 속도라고 합니다.
네트워크에서 데이터 전송 속도를 전송 속도라고 하며 전송 속도의 단위는 비트/초(b/s)입니다.→ 간단히 말해서 “초당 전송된 데이터 수”로 계산됩니다.
모드버스란?
Modbus는 PLC와 함께 사용하도록 게시된 데이터 통신 프로토콜입니다.
처음에는 직렬 통신(RS-232, RS-485)을 기반으로 했으며 현재는 TCP와 UDP에서도 구현할 수 있도록 확장되었습니다.
마스터-슬레이브 구조로 다양한 주변기기의 상태 정보를 모니터링 할 수 있습니다. 네트워크에 연결된 모든 장치가 요청을 수신하지만 지정된 장치만 응답합니다. (RTU 지원 (Remote Terminal Unit, TCP 통신, 각 형식 상이)
메시지에서 최대 크기~이다 260바이트로 제한됩니다.
1979년에 출시된 프로토콜로 구조가 단순하고 개발 및 관리가 간단하나 기기에 연결되는 기기의 수가 제한(1~247개)하고 보안기능이 없으며 다음과 같은 편의성도 있다. 데이터 유형이 좋지 않습니다.
빅 엔디안 형식입니다.
주인과 노예
주인
마스터는 Modbus 프로토콜에 지정된 형식에 따라 요청 패킷을 슬레이브 장치의 주소로 전송합니다.
펑션 코드 정의에 따라 요청 데이터와 오류 검사 코드를 전송합니다.
노예
슬레이브 장치의 응답도 Modbus 프로토콜을 사용하여 구성됩니다. 작업이 수행되었는지 확인하는 기능을 수행하며 요청된 결과에 따른 데이터와 오류 검사 코드를 포함합니다. 메시지 수신 중 오류가 발생하거나 슬레이브 장치가 요청에 해당하는 작업을 수행할 수 없는 경우 응답에 오류 메시지가 구성됩니다.
모드버스 구조
PDU(프로토콜 데이터 단위)
데이터와 직접적으로 관련된 타입으로 읽기/쓰기 명령인 함수 코드와 실제로 읽고 쓰는 데이터 구조로 구성된다.
Modbus의 핵심이라 할 수 있는… PDU는 통신 방식에 상관없이 고정되어 있습니다.
- 각 PLC는 서로 다른 메모리 구조를 가지고 있는데 어떤 PLC는 모든 데이터를 한 공간에 가지고 있고 다른 PLC는 세부적인 영역을 가지고 있습니다. 따라서 모드버스에서의 비트/워드 데이터 저장은 슬레이브 측 명령에 따른 저장 설정에 따라 달라집니다.
- 이를 매핑이라고 합니다.
ADU(애플리케이션 데이터 유닛)
PDU를 비롯한 헤더 등의 기능이 추가된 구조입니다. 의사 소통의 형태에 따라 다릅니다.
(RTU 구조)

Modbus RTU 프로토콜은 RS-485 또는 RS-232와 같은 직렬 통신 환경에서 작동하도록 설계된 일종의 Modbus 프로토콜입니다.
장치 ID로 각 장치를 식별하고 CRC를 사용하여 오류를 확인합니다. 직렬 통신은 하나의 채널을 통한 다중 액세스를 허용하지 않습니다. (좋은 보안)
참조
문서를 검색할 때 시작과 끝(각각 28비트)이 추가되는 경우가 있는데, 이는 메시지 사이에 28비트의 여백이 전송됨을 의미합니다.
일반적으로 9600baud는 초당 9600비트를 전송하는 데 사용됩니다. 즉, 메시지가 전송되고… 전송되고… 전송되는 간격은 28/9600 = 0.003초입니다.
(TCP/IP 구조)

Modbus RTU 프로토콜과 유사하지만 TCP/IP 계층에서 보다 효과적으로 작동하도록 향상되었습니다.
TCP/IP의 핵심 기능은 모든 패킷이 완전한 주소와 경로로 올바르게 수신되도록 하는 것입니다.요청과 응답의 순서가 일치하지 않을 수 있습니다. 패킷 사이의 간격도 필요하지 않습니다(실제로 필요함).
TCP 프로토콜에서도 작동하기 때문에 다중 액세스도 가능합니다.
모드버스 패킷 구조
1) 모드버스 RTU 패킷 구조

- 슬레이브 ID
- 1바이트
- 하드웨어 식별 주소
- 스테이션 번호라고도 하는 장치 주소.
- 기능 코드
- 1바이트
- 미리 정의된 함수의 수를 표시합니다.

- 주소
- 2바이트
- 데이터의 시작 주소를 지정합니다.
- 날짜 수
- 2바이트
- 전달할 데이터의 양
- 데이터 크기
- 1바이트
- 데이터의 실제 크기
- 단위는 바이트
- 데이터
- n바이트
- 모든 데이터는 2바이트로 표현
- CRC
- 2바이트
- 오류 감지 시 사용
Modbus RTU 패킷의 예
1) 마스터가 슬레이브에게 0x0번지부터 3개의 데이터를 읽어달라고 요청하는 예
- 마스터 → 슬레이브
| 슬레이브 ID | 기능 | 주소 | 날짜 수 | CRC |
| 01 | 03 | 00 00 | 00 03 | 05CB |
- 노예 → 주인
| 슬레이브 ID | 기능 | 데이터 크기(바이트) | 날짜 수 | CRC |
| 01 | 03 | 06 | 00 01 00 02 00 03 | FD-74 |
2) 마스터가 슬레이브에게 0x0번지부터 3개의 데이터 쓰기를 요청하는 예
여러 개의 데이터가 변경되므로 펑션 코드 0x16을 사용하십시오.
- 마스터 → 슬레이브
| 슬레이브 ID | 기능 | 주소 | 날짜 수 | 데이터 크기(바이트 | 데이터 | CRC |
| 01 | 10 | 00 00 | 00 03 | 06 | 00 04 00 05 00 06 | 05CB |
- 노예 → 마스터
| 슬레이브 ID | 기능 | 주소 | 날짜 수 | CRC |
| 01 | 03 | 00 00 | 00 03 | 80 08 |
2) 모드버스 TCP/IP 패킷 구조
오류 검증은 TCP/IP 계층에서 이루어지기 때문에 별도의 CRC 코드를 사용할 필요가 없습니다.

- 트랜잭션 ID
트랜잭션은 한 번에 수행되는 작업 단위입니다.
0부터 시작하여 마스터의 요청과 슬레이브의 응답이 쌍으로 카운트됩니다.예를 들어 마스터가 처음으로 슬레이브 요청을 보낸 경우 트랜잭션 ID는 0이고 마스터 응답도 슬레이브가 보낸 경우 트랜잭션 ID는 0입니다.
다음 마스터에서 슬레이브 요청을 보낼 때 트랜잭션 ID는 1입니다. 또한 응답할 때 트랜잭션 ID는 1입니다.
응답이 어떤 요청에서 왔는지 구분할 수 있도록 숫자를 표시한 것 같습니다(지속적인 요청에 대한 응답과 구별).
- 프로토콜 ID
- 항상 0 사용
- 길이
- 장치 ID(슬레이브 ID)에서 데이터 끝까지의 비트 수를 의미합니다.
Modbus TCP/IP 패킷의 예
1에서 10까지 데이터를 전달하는 Modbus TCP/IP 패킷
- Tx: 10개의 데이터 읽기 요청

- 리셉션

- 이것은 16진수입니다.
![[리눅스] MySQL [리눅스] MySQL](https://cu.egegg.kr/wp-content/plugins/contextual-related-posts/default.png)