자동화

컴파일사 온도 컨트롤러(ML-THRT1)의 모드버스(Modbus) 통신

시스템 박사 2022. 12. 2. 14:44
728x90
반응형

컴파일사 온도 컨트롤러(ML-THRT1)에서 모드버스를 통하여 온도 데이터를 가져오도록 하겠다.

 

먼저 ML-THTR1은 5V의 DC 전원을 사용하고 있고, RTD PT100옴의 온도센서를 사용한다.

USB to 485와 +, -, GND 3가지 결선을 하여 준다.

USB to 485 와 ML-THRT1 과의 연결

 

USB to 485는 Coms 사의 제품을 사용하였는데, 사용해본것 중에 제일 안정적인거 같다.

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)을 보면

ML-THRT1 모드버스 프로토콜

 

위의 프로토콜을 기반으로 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문 처리해 줄 필요가 있다.

------------------------------이상 끝

728x90