컴파일사 온도 컨트롤러(ML-THRT1)의 모드버스(Modbus) 통신
컴파일사 온도 컨트롤러(ML-THRT1)에서 모드버스를 통하여 온도 데이터를 가져오도록 하겠다.
먼저 ML-THTR1은 5V의 DC 전원을 사용하고 있고, RTD PT100옴의 온도센서를 사용한다.
USB to 485와 +, -, GND 3가지 결선을 하여 준다.
USB to 485는 Coms 사의 제품을 사용하였는데, 사용해본것 중에 제일 안정적인거 같다.
https://comsmart.co.kr/cmart/shop/item.php?it_id=5175
Coms USB to 485 컨버터 - USB에서 RS422/ RS485로 변환 > 네트워크/공유기/허브 | 컴스마트
반품/환불 - 상품의 하자가 있는 경우 ( 훼손, 불량, 표시사항 미기재 등 ) * 제품의 품질향상 및 개선을 위해 변경된 경우 제외 됩니다. - 배송지로 운반하는 도중 배송사의 잘못으로 상품이 손
comsmart.co.kr
ML-THRT1과의 모드버스(modbus) 485 통신을 위하여 사용한 PC 프로그램은 cf-terms를 사용하였다.
https://www.comfile.co.kr/shop/board/view.php?id=program&no=4
COMFILE Technology home page
COMFILE Technology
www.comfile.co.kr
먼저 ML-THRT1의 프로토콜(protocol)을 보면
위의 프로토콜을 기반으로 PC와 ML-THRT1과의 모드버스 통신을 cf-terms로 해보자
먼저 baud rate는 57600으로 셋팅해 주어야 한다.
ML-THRT는 0x30(Word Read)을 사용하고, Address는 프로토콜에 나와 있는대로 '0x0190'로 적어주고
국번은 2번으로 세팅하였다.
위에서 되돌아 오는 값인 RX를 보면 '01 1A' 2바이트를 계산하면 282로 28.2도의 온도가 나옴을 확인하였다.
그리고 영하의 온도인 경우는
Ex) [ Data,value: unsigned Int형, fValue: float형 ]
If(0x8000 & Data ) { // -온도 값 처리 0x8000 = 32,768
symbol = ’-’;
value = Data – 0x8000;
} // 만약 ‘-’일 때는 데이터에 0x8000을 뺀 데이터를 사용한다.
Else { // +온도 값 처리
symbol = ’+’;
value = Data;
}
fValue = (float)value;
위의 해설처럼 0x8000, 비트로는 1000 0000 처럼 앞의 상위 비트에 1비트가 생성되므로
음수인 경우를 if문 처리해 줄 필요가 있다.
------------------------------이상 끝