[8편] LS PLC Cnet으로 RS232와 RS485통신으로 모드버스(MODBUS) RTU 프로토콜로 원격제어하기!(녹칸다의 내맘대로 PLC 시리즈)
https://youtube.com/live/Z4_911tFpMw
[8편] LS PLC Cnet으로 RS232와 RS485통신으로 모드버스(MODBUS) RTU 프로토콜로 원격제어하기!(녹칸다의 내맘대로 PLC 시리즈)
녹칸다의 내맘대로 PLC시리즈이다!
이번 시리즈는 아래 구글 슬라이드에 설명자료를 작성하도록 한다!(모두에게 공유되어있음)
https://docs.google.com/presentation/d/1c5YLf60WR_41MiQoi98iuQQTgTxfjQfBKBZt6dUz8R0/edit#slide=id.g226d9077e04_0_0
녹칸다는 아두이노 코딩하는 유튜버이다!
이번 시리즈는 아래와 같은 주의사항이 있다!
1.녹칸다는 PLC에 대해서 잘 모름(가장 중요)
2.아두이노로 코딩하던 사람이 PLC를 바라보는 관점으로 입문자용 자료를 만듦!
3.그러므로 PLC를 정석으로 하고자 하는 의도는 전혀 없음!
4.녹칸다가 가진 PLC CPU는 레더로직(LD)과 ST언어 2가지로 제어가 가능함!
5.레더로직은 전혀 이해가 안되어서 몇가지 샘플만 구동해보는 것으로 마무리 함!(대충 이렇게 하는구나~ 정도 수준)
6.ST언어는 약간 이해가 되므로 아두이노 코딩하는 전략을 기반으로 해서 다양한 예제를 만들어 보도록 함!
7.그러나 녹칸다가 ST언어로 코딩할 내용이 “실제로 이렇게 해도 되는건가?” 는 보장하지 못함, “결론적으로 작동이 됨”에 초점을 맞추도록 함!
8.진행중 잘못된 설명이 있으면 녹칸다에게 알려주면 감사!
이번편은 LS산전의 PLC인 XEM-DN32H2를 이용해서 원격으로 제어하는 예제를 구현해보도록 한다!
다양한 방식이 있으나 일단 Cnet부터 출발해보도록 하자!
Cnet은 컴퓨터와 유선으로 연결되는 RS232와 RS485통신으로 원격제어하는 것을 말한다!
그리고 프로토콜은 LS자체 프로토콜과 MODBUS가 있는데 8편에서는 MODBUS RTU를 다루도록 한다!
여기서 모드버스 프로토콜에 대한 기본적인 이해가 필요하다!
리고 LS PLC내부의 메모리 구조에 대한 이해도 필요하다!
하여튼 8편에서는 PC와 유선으로 연결된 PLC를 모드버스 프로토콜로 제어하게 될 것이다!
그럼 PC에 제어를 담당할 프로그램을 구현해야하는데 이것은 C#윈폼으로 하도록 한다!
C#에 NMODBUS라는 라이브러리를 설치하면 아주 쉽게 원하는 결과물을 만들어 낼 수 있다!
(다만 앞에서 언급했듯이 모드버스가 뭔지 알아야 쉽다)
RS232와 RS485통신이 둘다 가능하지만 녹칸다가 보유한 통신선이 RS485밖에 없다!
그래서 RS232는 생략하도록 한다!
(선의 모양과 연결하는 부분의 차이가 있을 뿐 제어 방법에는 차이가 전혀 없다)
LS PLC와 PC사이에 RS485통신을 위한 통신선을 연결하고 C#윈폼으로 구현한 모드버스 마스터에서
모드버스 슬레이브로 구동되는 LS PLC를 modbus rtu 프로토콜로 원격제어를 하는 것이 이번편의 목표라고 볼 수 있다!
넘어야 할 산이 생각보다 크므로 차근차근 야금야금 기어 올라가보도록 하자!
(라이브방송에서 구현한 예제)
예제1) LS PLC의 %QX0.0.0접점에 램프를 1개 연결하고 C#윈폼으로 구현한 제어 프로그램으로 on/off하는 가장 간단한 프로그램을 구현하시오!
예제2) LS PLC의 출력접점 16개를 모두다 on/off하고 현재 상태를 읽어오는 기능을 구현하시오!
예제3) LS PLC의 INT에 -12345를 대입하고 UINT에 12345를 대입해서 저장한다음 C#윈폼으로 읽어와서 원래값으로 출력하시오!
예제4) LS PLC의 DINT에 -1234567890를 대입하고 UDINT에 2345678912를 대입해서 저장한다음 C#윈폼으로 읽어와서 원래값으로 출력하시오!
예제5) LS PLC의 DINT에 -1234567890를 대입하고 UDINT에 2345678912를 대입해서 저장한다음 C#윈폼으로 읽어와서 원래값으로 출력하시오!
예제6) PLC의 %MX0이 작업을 on/off하는 가상접점이다! 작업이 시작되면 램프가 1초간격으로 깜빡인다!
예제7) PLC의 %MX0이 작업을 on/off하는 가상접점이다! 작업이 시작되면 램프가 1초간격으로 깜빡인다! 램프가 깜빡인 횟수를 PLC내부 메모리에 저장해서 C#윈폼에 출력하시오!