Modbus를 사용하여 LabVIEW를 모든 PLC에 연결

업데이트 됨 Oct 30, 2023

환경

소프트웨어

  • LabVIEW
  • LabVIEW Datalogging and Supervisory Control Module

NI LabVIEW 소프트웨어는 다양한 방식으로 PLC (프로그래밍 가능한 로직 컨트롤러)와 통신할 수 있습니다. Modbus는 1979년 Modicon이 PLC와 통신하기 위해 발표한 직렬 통신 프로토콜로 TCP 프로토콜로 확장되었습니다. Modbus는 가용성으로 인해 업계에서 사실상의 표준 통신 프로토콜 중 하나가 되었습니다. 이 튜토리얼에서는 Modbus를 사용하여 네트워크로 연결된 PLC와 LabVIEW간에 통신하는 방법을 알아봅니다.

이 튜토리얼에서는 LabVIEW Datalogging and Supervisory Control(DSC) 모듈이 사용됩니다. 이 모듈에는 네트워크로 연결된 히스토리 데이터베이스에 데이터 로깅, 실시간 및 히스토리 트렌드, 알람 및 이벤트 관리, LabVIEW Real-Time 타겟 및 Modbus 디바이스를 하나의 완전한 시스템으로 네트워킹하고 사용자 인터페이스에 보안을 추가하는 도구가 포함되어 있습니다. 이러한 기능을 통해 LabVIEW는 산업용 제어 어플리케이션을 위한 강력한 HMI/SCADA 패키지가 됩니다.

Modbus 마스터 I / O 서버 생성

이 섹션에서는 I/O 서버라고 하는 Modbus 주소에 대한 LabVIEW 인터페이스를 생성합니다. I/O 서버는 현재값으로 LabVIEW를 자동으로 업데이트합니다.

  1. LabVIEW의 시작하기 창에서 파일 ≫ 프로젝트 생성을 클릭합니다. 새로운 LabVIEW 프로젝트가 열립니다.
  2. 기본 도움말 창이 표시되지 않으면 Ctrl + H 를 눌러 창을 표시하십시오. 커서 아래 항목에 대한 유용한 정보를 보려면 이 창을 열어 두십시오.
  3. LabVIEW 프로젝트 창에서 그림 1과 같이 내 컴퓨터를 마우스 오른쪽 버튼으로 클릭하고 새로 만들기»I/O 서버를 선택 합니다.
image.png
그림 1 : LabVIEW 프로젝트를 통해 새로운 I / O 서버 생성
  1. 새 I/O 서버 생성 창에서 Modbus 를 선택하고 계속를 클릭합니다.
  2. 모델 드롭 다운 메뉴에서 Modbus Ethernet을 선택합니다.
image.png
그림 2 : Modbus 마스터 I/O 서버 구성
  1. IP address 필드에 대상 Modbus Slave의 IP 주소를 입력합니다. 컴퓨터의 IP 주소를 확인하는 방법을 모르는 경우 다음 웹 페이지를 참조하십시오. 외부 링크 : IP 정보를 찾는 방법. 이 예에서는 마스터와 동일한 컴퓨터에서 Modbus 슬레이브를 실행하고 있으므로 로컬 호스트 IP 주소인 127.0.0.1을 사용합니다.
  2. OK를 선택합니다. I/O 서버를 관리하기 위해 프로젝트 탐색기 창에 라이브러리가 자동으로 생성됩니다.
  3. 프로젝트 탐색기 창에서 파일 ≫ 모두 저장 을 선택하여 프로젝트를 ModbusDemoProject로 저장하고 라이브러리를 ModbusDemoLibrary로 저장 합니다.


I/O 서버를 통해 공유 변수를 Modbus 주소에 바인딩

이 섹션에서는 Modbus 주소에 바인딩된 공유 변수를 생성하여 LabVIEW에서 PLC 데이터에 대한 기본 액세스를 제공하는 방법을 배웁니다. 공유 변수를 사용하면 단일 컴퓨터 또는 네트워크에서 LabVIEW 어플리케이션간에 데이터를 공유할 수 있습니다.

  1. Modbus 주소에 바인딩 된 새 공유 변수를 만듭니다.
  1. 새로 생성 된 ModbusDemoLibrary를 마우스 오른쪽 버튼으로 클릭하고 연결 변수 생성…을 선택합니다.
  2. 연결 변수 생성 창에서 원하는 주소 범위를 선택하기 위해 Modbus1 까지 트리를 확장합니다.
  3. 그런 다음 000001-065535를 선택하고 범위 추가를 클릭합니다. 데이터 아이템의 기본값을 000001로, 아이템 숫자를 1로 그대로 둡니다. 확인을 누릅니다.
image.png
그림 3 : 공유 변수에 바인딩 할 Modbus 주소 선택
  1. 이제 구성 창의 추가된 변수 섹션에 변수 000001이 있어야합니다.
  2. 확인을 클릭 합니다. 이렇게하면 Modbus 주소에 바인딩 된 공유 변수가 생성되어 다중 변수 편집기에 로드됩니다.
  3. 다중 변수 편집기에서 완료를 선택합니다. 이렇게하면 이전에 생성 된 라이브러리에 새 공유 변수가 추가됩니다.
  4. 프로젝트 탐색기에서 000001을 마우스 오른쪽 버튼으로 클릭하고 이름 바꾸기를 선택합니다. 변수 이름을 Coil1 로 바꿉니다.
참고 : LabVIEW DSC Module은 LabVIEW 어플리케이션을 작성하지 않고도 데이터, 알람 및 이벤트를 데이터베이스에 직접 기록하는 기능을 추가하여 공유 변수를 향상시킵니다.
  1. ModbusDemoLibrary를 마우스 오른쪽 버튼으로 클릭하고 모두 배포를 선택하여 공유 변수를 배포합니다. 이렇게하면 공유 변수가 게시되어 네트워크에서 다른 컴퓨터가 사용할 수 있습니다.
이제 공유 변수를 통해 LabVIEW에서 기본적으로 Modbus 데이터에 액세스할 수 있습니다.

LabVIEW에서 Modbus 주소에 쓰기

  1. 프로젝트 탐색기에서 내 컴퓨터를 마우스 오른쪽 버튼으로 클릭하고 새로 만들기»VI를 선택 합니다. 이것은 새로운 가상 계측기 또는 VI를 생성합니다. VI는 사용자 인터페이스와 실행 가능한 그래픽 코드를 생성하는데 사용됩니다.
  2. 기본적으로 VI의 사용자 인터페이스인 프런트 패널이 표시됩니다. LabVIEW에는 강력하고 직관적인 UI를 구축하는데 사용할 수있는 그래프, 차트, 다이얼 등과 같은 많은 내장 UI 구성 요소가 있습니다. 보기»컨트롤 팔레트를 선택하거나 프론트 패널의 아무 곳이나 마우스 오른쪽 버튼으로 클릭하여 컨트롤 팔레트를 불러옵니다. LabVIEW의 UI 구성 요소를 탐색하려면 다양한 범주 위로 마우스를 이동하십시오.
  3. 익스프레스»버튼 & 스위치»누름 버튼을 선택하여 컨트롤 팔레트에서 누름 버튼을 선택하고 그림 4와 5에 표시된 것처럼 프런트 패널에 배치합니다.
image.png
그림 4 : 컨트롤 팔레트에서 누름 버튼 선택

그림 5 : 프런트패널에 있는 누름 버튼
  1. VI에서 윈도우»블록다이어그램 보이기을 선택하거나 Ctrl + E 를 눌러 블록 다이어그램을 표시합니다. 블록 다이어그램은 애플리케이션의 동작을 구축하는 곳입니다. 블록 다이어그램의 아이콘은 프런트 패널의 누름 버튼을 나타냅니다. 전면 패널의 누름 버튼을 눌러 블록 다이어그램의 아이콘 터미널에서 전달 된 부울 값을 변경합니다.
  2. 프로젝트 탐색기에서 ModbusDemoLibrary 라이브러리를 확장하고 Coil1 공유 변수를 선택합니다.
  3. 프로젝트 탐색기에서 Coil1 공유 변수를 VI의 블록 다이어그램으로 끌어다 놓습니다. 공유 변수는 블록 다이어그램의 다른 터미널에 대한 데이터 소스 역할을 합니다.
  4. 새로 배치 된 Coil1 공유 변수를 마우스 오른쪽 버튼으로 클릭하고 액세스 모드»쓰기를 선택합니다. 이를 통해 공유 변수에서 읽는 대신에 쓸 수 있습니다.
  5. 그림 6과 같이 와이어 연결 도구를 사용하여 Coil1 공유 변수를 클릭 한 다음 부울 누름 버튼을 클릭하여 Coil1 공유 변수를 부울 누름 버튼에 연결합니다.

그림 6 : 블록 다이어그램 항목을 함께 배선

이제 데이터는 VI가 실행 중일 때 부울 누름 버튼에서 공유 변수로 흐릅니다.

  1. 보기 ≫ 함수 팔레트를 선택하거나 블록 다이어그램의 아무 곳에서나 오른쪽 클릭하여 함수 팔레트를 엽니다. 함수 팔레트에는 그래픽 프로그래밍을 위한 수백 개의 분석 함수, 제어 함수 및 구조가 포함되어 있습니다.
  2. 프로그래밍≫구조≫While 루프로 이동하여 함수 팔레트에서 while 루프를 선택합니다. while 루프를 선택하면 그림 7과 같이 커서가 나타납니다. 이를 통해 코드 섹션 주위에 while 루프를 감쌀 수 있습니다.
image.png
그림 7 : While 루프 선택

그림 8 : While 루프 커서
 
  1. while 루프 커서를 사용하여 커서를 클릭하고 끌어서 공유 변수 및 파형 차트 주위에 while 루프를 배치합니다. 이제 루프 조건 을 마우스 오른쪽 버튼으로 클릭하고 컨트롤 생성을 선택하여 while 루프에서 중지 컨트롤을 만듭니다. 그러면 사용자가 VI를 중지할 수있는 중지 버튼이 프런트 패널에 배치됩니다.


그림 9 : 공유 변수 및 컨트롤 주위에 While 루프 배치

while 루프는 사용자 또는 VI의 추가 로직에 의해 중지될 때까지 그 안의 코드가 계속 실행되도록 합니다.

  1. while 루프가 현재 가능한 한 빨리 실행됩니다. 다음 ms 배수까지 기다림 VI를 루프에 추가하여 루프가 설정된 시간 (이 경우 100ms)마다 실행되도록 해야합니다.
그림 10 : While 루프에 타이밍 추가
  1. 윈도우»프런트패널 보이기를 선택하거나 Ctrl + E를 눌러 프론트 패널로 돌아갑니다.
  2. 도구 모음에서 실행 버튼을 클릭하여 VI를 실행합니다.

그림 11 : 실행 버튼
  1. 배포가 완료되면 배포 … 창에서 닫기 를 클릭 합니다 . 애플리케이션이 실행되기 시작하면 이제 누름 버튼을 참과 거짓으로 전환 할 수 있습니다. 그러면 공유 변수 엔진의 Modbus 바운드 공유 변수가 True 또는 False로 업데이트됩니다.

그림 12 : 완성 된 전면 패널-Modbus 코일 제어
  1. 축하합니다! LabVIEW 어플리케이션에서 PLC 데이터에 성공적으로 액세스 했으므로 솔루션에 강력한 분석 및 제어 기능을 통합할 수 있습니다.


분산 시스템 관리자로 공유 변수보기

  1. 프로젝트 탐색기 창에서 도구»배포된 시스템 관리자를 선택합니다. 그러면 다양한 방법 (보기, 배포, 배포 취소 등)으로 공유 변수를 관리하는 데 사용할 수 있는 창이 열립니다.
  2. 변수 관리자의 트리 창에서 내 시스템 범주 아래의 localhost 항목을 확장합니다. ModbusDemoLibrary 라이브러리를 찾아 확장하고 윈도우의 오른쪽에 자동보기를 표시 할 Coil1을 선택합니다.
  3. 이제 프런트 패널의 부울 누름 버튼을 토글하고 그림 13과 같이 배포된 시스템 관리자에서 결과를 볼 수 있습니다.

그림 13 : Distributed System Manager에서 Coil1의 값보기

참고 : 배포된 시스템 관리자는 LabVIEW 8.6과 함께 제공되기 시작했습니다. 이전 버전의 LabVIEW는 도구»공유 변수»변수 관리자로 이동하여 공유 변수를 Watched Variables : 창으로 드래그하여 이를 수행했습니다.


Modbus 슬레이브로 코일 값보기

문서의 첫 번째 섹션에서 Modbus 코일에 부울 값을 쓰는 Modbus 마스터를 만들었습니다. 이 코일 값은 배포된 시스템 관리자에서 볼 수 있었던 공유 변수에 저장됩니다. 다음 섹션에서는 Modbus 슬레이브가 마스터가 업데이트중인 코일 값을 읽는 방법을 보여줍니다. 1부에서 만든 Modbus 마스터는 IP 주소 127.0.0.1 (localhost)에서 Modbus 슬레이브를 찾고 있습니다. 따라서 Modbus를 통해 Modbus 마스터와 대화하려면 로컬 컴퓨터에 Modbus 슬레이브를 만들어야합니다.

  1. LabVIEW에서 도움말» 예제 찾기를 클릭하여 NI 예제 탐색기를 엽니다.
  2. NI 예제 탐색기에서 Toolkits and Modules»Datalogging and Supervisory Control»I/O Servers로 이동하여 Modbus Simulator.lvproj를 더블 클릭합니다. 그림 16을 참조하십시오.

그림 14 : NI 예제 탐색기의 Modus 시뮬레이터
  1. 프로젝트에서 ModbusSimulator.vi를 열고 실행합니다.
  2. Modbus Master VI가 현재 실행 중이 아니면 실행하십시오. 두 vi들이 실행 중이면 그림 15와 같이 Modbus Simulator의 Digital1 LED가 켜진 것을 볼 수 있습니다.

그림 15 : Modbus 시뮬레이터 실행 및 Coil1의 실제 값 표시
  1. Modbus Simulator에서 Quit 을 클릭 한 다음 Ctrl + E 를 눌러 블록 다이어그램으로 전환합니다.
  2. 블록 다이어그램에서 Modbus 주소 000001이 공유 변수로 읽혀지고 있음을 알 수 있습니다. 이 공유 변수는 Modbus 마스터의 Coil1 값에 연결됩니다.

그림 16 : Modbus 시뮬레이터 블록 다이어그램

추가 도전

Modbus 마스터와 슬레이브 간의 관계에 대한 이해를 높이려면 Modbus 시뮬레이터의 나머지 값을 읽고 제어하도록 Modbus 마스터 프로그램을 수정하는 것이 유용한 과제입니다. ModDemoProject의 Modbus I / O 서버에 바인딩 된 공유 변수를 추가해야합니다.