본문으로 바로가기

랩뷰로 Modbus 통신하기 (Program)

category Programming/LabVIEW 2024. 5. 30. 18:22
반응형

랩뷰의 I/O Server를 이용해서 다른 디바이스와 Modbus 통신으로 데이터를 주고 받는 과정에 대해 이전 글에서 소개해 드렸습니다. 요약하자면, 랩뷰의 DSC 모듈을 사용해서 통신을 진행했고, 프로젝트에 설정함으로써 공유 변수를 통해 프로그램에서 참조했다는 내용이었습니다. 이전 글에 대한 내용이 궁금하신 분들은 아래의 링크를 통해 내용을 한 번 읽어보시길 바랍니다.

[Programming/LabVIEW] - 랩뷰로 Modbus 통신하기 (with I/O Server)

 

랩뷰로 Modbus 통신하기 (with I/O Server)

다양한 형태로 랩뷰가 활용되겠지만, 제가 주로 일하고 있는 FA 분야에서는 HMI용 어플리케이션의 개발 도구로 랩뷰가 상당히 유용하다고 생각합니다. 물론, InTouch와 같은 범용 SCADA 프로그램들도

sw-eng.tistory.com

 

I/O 서버를 이용해서 상대 기기와 통신을 연결하는 경우에는 시스템이 알아서 일정 주기마다 데이터를 자동으로 업데이트하기 때문에, 한 번만 정확하게 설정해 두기만 하면 통신에 대한 부분은 신경쓰지 않고 프로그램 작성에만 치중할 수 있다는 장점이 있습니다. 하지만, 랩뷰로 프로그램을 작성할 때마다 매번 프로젝트 단위로 작성하는 것도 그렇고, 통신에 대한 데이터 교환 주기가 언제나 동기식이어야만 하는 것은 아니므로, 비동기식 통신... 그러니까 프로그램을 통한 Modbus 통신의 연결 방법도 함께 알아보도록 하겠습니다. (이번 예제에서도 랩뷰가 설치된 PC가 클라이언드, 슈나이더 일렉트릭의 M262 컨트롤러가 서버 역할을 담당합니다.)

우선 본격적인 내용에 들어가기에 앞서, 이 글에서는 Modbus 프로토콜에 대해서는 설명하지 않습니다. 왜냐하면, Modbus 프로토콜만 주제로 하더라도 글이 여러 개가 작성될 정도로 양이 방대하기 때문이구요. 본 블로그에서 Modbus 프로토콜을 주제로 글을 작성할지 여부는 현재까지 미지수 (언젠가는 작성할 가능성이 높긴 합니다만...)이지만, 아무튼 지금은 랩뷰를 통해 Modbus 통신을 연결하는 과정에 초점을 맞춰서 진행할 예정이므로, 프로토콜에 대한 구체적인 내용은 생략하고 넘어간다는 점, 참고하시기 바랍니다.

만약에 Modbus 프로토콜에 대한 구체적인 내용이 궁금하신 분들은 다른 블로거들의 글을 참고하셔도 좋구요. 비록 슈나이더 일렉트릭의 EcoStruxure Machine Expert를 대상으로 작성한 책이긴 합니다만, Modbus 프로토콜에 대해 아주 상세하게 설명하고 있으므로, 아래 링크를 통해 전자책을 구매하셔서 보실 수도 있습니다.

[EBook] - EPUB3] ESME - 통신편

 

EPUB3] ESME - 통신편

슈나이더 일렉트릭에서 출시한 장비 제어용 컨트롤러인 M2XX 컨트롤러의 통신에 관한 내용을 설정하는 전자책입니다. EPUB3로 작성하였구요. 전자책으로는 2번째로 집필한 책입니다. https://araebook.

sw-eng.tistory.com

 

다시 내용으로 돌아와서, Modbus 통신과 관련된 함수들은 위 그림과 같이 함수 팔레트의 데이터 통신 → Modbus에서 찾으실 수 있는데요. 그림에서 보시는 것처럼 Modbus Master와 Modbus Slave로 나눠집니다. Master-Slave Model은 Serial 통신에서 주로 사용하는 모델이고 Ethernet 기반의 통신에서는 Client-Server Model을 사용하지만, 데이터의 읽기 또는 쓰기에 대한 메시지의 전송 주체가 누구냐에 따라서 설명의 편의상 Master와 Slave라고도 표현하기도 합니다. 지금의 테스트에서는 랩뷰가 설치된 PC에서 데이터의 읽기 또는 쓰기에 대한 요청을 전송하고 PLC에서는 여기에 대한 응답만을 전달할 것이므로, 랩뷰에서는 Modbus Master에 대한 함수를 가지고 프로그램을 작성하면 되구요. 반대로, 랩뷰를 Modbus TCP 통신의 서버로 사용할 것이라면, Modbus Slave에 대한 함수를 가지고 프로그램을 작성하면 됩니다.

Modbus Master에 대한 함수들은 위 그림과 같습니다. 우선, 통신의 핵심이라 할 수 있는 데이터의 읽기 또는 쓰기에 대한 함수들이 대부분을 차지하고 있구요. 통신을 개시한다는 의미의 인스턴스 생성 (Create Master Instance)과 통신을 종료한다는 의미의 인스턴스 닫기 (Close) 함수도 제공하고 있습니다.

랩뷰를 이용한 프로그램에서는 파일의 입출력이든, 통신의 포트를 제어하는 작업이든 일단 열기 → 작업 → 닫기 순으로 대부분 진행됩니다. 다시 말해 Modbus 통신의 프로그램 또한, 인스턴스 열기 → 읽기 또는 쓰기에 대한 작업 → 닫기 순으로 진행되는데요.

쉽게 말해서, 위 그림과 비슷한 구조로 프로그램을 작성한다는 의미이고, 읽기 또는 쓰기에 대한 함수를 언제 어떻게 실행하는지에 따라 상대 기기로부터 데이터를 가져오거나 데이터를 전달하는 시점을 프로그램에서 제어할 수 있습니다.

이런 내용을 토대로 이전 글에서의 테스트와 비슷한 테스트 환경을 구성하였구요. 상대 기기인 M262 컨트롤러의 내부 메모리인 %MW0에 대해서만 데이터를 전송할 예정이므로, 선두 어드레스를 0으로 정의하였습니다.

이렇게 작성된 프로그램이 실행되는 과정은 위 영상을 통해 확인하실 수 있습니다.

 

반응형