필드버스
필드버스 : PLC나 PC기반에서 사용되는 산업용 컴퓨터 네트워크 프로토콜
ex > PROFIBUS, Modbus, Foundation Fieldbus, DeviceNet, CAN
이들중 제어 현장에서 많이 쓰이는 modbus에 대해 알아보자
Modbus
- modbus 통신의 장점 : 산업용 어플리케이션에 적합, 개발 및 관리가 쉬움 , 비트/워드 단위로 정보 전달,
- Modbus 의 특징
- Master- Slave 구조로 여러 주변장비의 상태 점검 가능
- RTU, ASCII, TCP 통신을 지원하며 형식이 다름
- 빅에디안 사용
- modbus TCP
Modbus TCP 통신은 TCP/IP 네트워크 위에서 사용하는 통신 방식을 이용해 장거리 통신이 가능하고 기존의 RTU나 ASCII방식의 직렬 통신과의 호환성을 유지한다.
modbus RTU
Modbus RTU 통신은 시리얼 기반 통신으로 PC와 PLC사이 통신을 하고 타 장비들과도 통신이 가능하다. RTU 통신에는 RS-232, RS-422, RS-485 등이 있으며 RS-232는 초창기 개발된 방법으로 기본적인 통신 기능을 갖추고 있다. RS-422도 마찬가지로 RS-232보다 조금 발전한 모델이다. RS-485는 modbus 시리얼 통신에서 가장 많이 쓰이는 표준 인터페이스로 멀티 드롭기능을 지원하고 반이중 방식, 1:N통신이 가능하다. RS-485는 현장에서도 잘 쓰이는 프로토콜이다.
- modbus RTU 패킷(master)
1. Slave ID(1byte) : 슬레이브 번호로 Master가 Slave로 데이터를 보낼때의 주소값이다. 1~247의 값을 가짐
2. Function(1byte) : Function code로 어떤 동작을 수행할지에 따라 번호가 달라진다.
3.Start Address(2byte) 0~65535 : 몇 번지부터 검색할 것인지에 대한 정보
4.Data(2byte) : 몇개의 데이터를 요청할 것인지에 대한 정보 or 어떤 정보에 대한 data
5. CRC (n byte): Erorr 검출용으로 사용되는 데이터. modbus에는 CRC 공식이 1개이고 라이브러리고 계산이 가능하다. TCP에서는 사용하지 않음.
★ Modbus는 빅에디안으로 데이터를 주고 받지만 CRC만 리틀에디안으로 계산해야 함
6. Start, End (각각28bit)는 메세지와 메시지 사이에 28비트의 간격을 두고 전송하라는 뜻
- modbus RTU 패킷(Slave)
A : slave ID
F : Function Code
L : Data 길이
1~10 : 각번지에 저장정보
example)
- 마스터
03 10 00 00 00 03 06 0 04 00 05 00 09 95 15
해석 : 03번 슬레이브에게 Function code 10 을 00 00번치부터 3개(04 05 09) 의 데이터를 쓰겠다.
01 04 00 00 00 0A 70 0D
해석 : 01번 슬레이브에게 Function code 4 를 0부터 A까지 데이터 개수 요청
- 슬레이브
07 10 00 00 00 03 80 48
해석 : 07 번 슬레이브에게 Function code 10 0000번지부터 3개
- modbus Memory Map
Modbus 메모리 맵을 보면 번호 구역에 따라 coil과 resister로 구성되어있는데 이는 modbus가 plc를 대상으로 만들어졌기 때문이다. 코일은 1bit의 값과 같고, 레지스터는 2byte의 word값으로 생각할 수 있다. 즉 코일은 ON/OFF, 레지스터는 16bit의 입출력값이다.
MODBUS는 구역을 확실히 나누고 구역별로 특성을 지키기 위해 함수 번호를 만듬. 예를 들어 3,6,16번 함수는 40001~49999까지 정해져있기 때문에 40001번 레지스터 값을 읽는다고 3번함수에 40001번 주소로 지정하는것이 아니라 3번 함수의 0번 주소로 지정한다.
※ 주의 - 코일과 레지스터 번호의 시작이 0번일수도 1번 일수도 있으니 반드시 메뉴얼 참고
'제어 > modbus 통신' 카테고리의 다른 글
Modbus(4) Modbus 통신을 이용하여 python으로 입력하기 (0) | 2023.08.16 |
---|---|
Modbus(3) Modbus통신을 이용하여 python으로 데이터 받아오기 (0) | 2023.08.15 |
Modbus(2) Modbus RTU 통신 사용 (1) | 2023.08.13 |