고급 개발자로 가는 길

키오스크 모드 웹 어플리케이션

WiFi 기반의 Modbus TCP, RTU 통신 구축하기(Repeater, Converter)

다크엔지니어 2020. 12. 9. 21:13
반응형

https://darkengineer.tistory.com/38?category=889290

통신 구축 관련 내용은 시스템 모니터링 인터페이스 SMI 와 관련되어 통신을 구축하기 위해 진행한 내용이다.(위 링크 참고)

 

기존에 사용중인 로봇의 Motion Board 의 통신 Port 지원은 아래와 같다.

  • 로봇 Type1 (Modbus TCP)    <->   SMI(Modbus TCP)
  • 로봇 Type2 (Modbus TCP)    <->   SMI(Modbus TCP)
  • 로봇 Type3 (Modbus RTU)    <->   SMI(Modbus TCP)
  • 로봇 Type4 (Modbus ASCII)    <->   SMI(Modbus TCP)

여기서는 WiFi 통신인 무선 통신망 구축을 위한 포스팅을 하겠다.

 

Modbus TCP <-> Modbus TCP

우선 로봇과 SMI 모두 동일한 Modbus TCP 통신을 하는 경우이다.

WiFi 를 통해 무선으로 SMI Raspberry Pi 에 통신을 해야한다.

그러기 위해선 서로 고유의 MAC 존재해야 한다. 그러나 각 로봇의 Motion Board 는 동일단 MAC 을 가지고있다.

그러므로 로봇 Motion Board별 서로 상이한 MAC 을 부여할 수 있는 무언가가 필요하다.

그 역할을 할 수 있는것이 WiFi Repeater 이다. WiFi Repeater 를 로봇 Motion Board 에 연동하게 되는데

WiFi Repeater 가 붙기 위한 Wifi 무선 공유기가 필요하고 결국, SMI 에 무선 공유기를 구축해야 한다.

WiFi Repeater 는 알리에서 중국 Vonets 사의 제품을 사용하였다.

WiFi Repeater 에 MAC 이 설정되고, WiFi 를 연동과 ip 를 DHCP 로 설정해야 Motion Board 에서 SMI WiFi 무선 공유기

대역에 알맞게 마음대로 설정 할 수 있다. 

이렇게 Modbus TCP 간 WiFi 무선 통신이 구축 되었고, 확인을 위해 SMI Node JS 기반의 JavaScript 에서 Modbus TCP 

통신으로 고유의 MAC 으로 설정된 ip로 통신이 가능해 진다.

 

 

Modbus RTU <-> Modbus TCP

이번엔 서로 다른 통신인 RS232 와 TCP 통신의 경우이다.

로봇 Type3 의 Board 경우 TCP 를 지원하지 않으며, RS232 를 지원한다.

그렇기 때문에, RTU 를 TCP Converter 해주어야 하며, 제품은 Kisan System 의 KG31 제품을 사용하였다.

Power Supply 에서 24V 와 GND 를 주어 RS232 는 IP 가 없기 때문에 로컬 PC 에서 IP, WIFI 를 셋팅해야 한다.

그리고 실제 Board 에 연결하여 Modbus Poll 을 통해 해당 로봇의 메모리맵 Register Adress 에 접근하여 Read Coil 로 

읽어와 실제 Rx Tx 통신이 제대로 되는지 확인한다.

Modbus Poll 로 정상 Connection 한 후, Disconnection and Reconnection 하게 되면, KG31 에 붙질 못한다.

하지만 Disconnection 하지 않고 KG31 만 재부팅하면 계속 Rx Tx 를 주고 받을 수 있다.

 

원인은, Kisan 의 KG31 제품이 Server 가 되고 Modbus Poll 가 Client 가 되는데 Server 에서 Connection 수가 1개 인것. 

거기에 SMI 즉 Node Red (JavaScript) 로 붙으려고 했으니... 안되지

그리고 KG31 매뉴얼을 보면 Rx Tx Connect Pin Map 이 실제 매뉴얼과 일치하지 않은것을 확인했다..;;;

Rx Tx, Rx Tx 크로스 로 연결하게 되어있지만, 실제론 Rx Rx, Tx Tx 로 연결해야 통신이 된다..;; 후 Kisan 당사 기술자도 잘

모르고 있었고... 무튼 Connection 수가 1개 로 만들었다는게  충격이였다.;; 18만원 가량 주고 구매를 했지만, 성능이 좋

지못한게 느껴진다.

Connection 1개만 SMI 즉 Node Red (JavaScript) 로 통신한 결과 정상적으로 통신 되는것을 확인하였다.

이제 로봇 Type3 의 메모리맵에 맞게 라운드 로빈 방식의 소스를 수정하면 된다.

뭐 여기까지 Modbus RTU <-> Modbus TCP 기반의 Repeater 와 Converter 를 사용한 무선 통신망을 구축해 보았다.

반응형