함수 배치

함수 팔레트 > 데이터 통신 > 프로토콜 > 시리얼 > VISA 쓰기

함수 팔레트 > 데이터 통신 > 프로토콜 > 시리얼 > VISA 읽기

함수 팔레트 > 데이터 통신 > 프로토콜 > 시리얼 > VISA 닫기

함수팔레트 > 프로그래밍 > 대화상자 & 사용자 인터페이스 > 단순 에러 핸들러

단순 에러 핸들러는 오류가 발생한 경우, 에러를 대화상자에 표시해줍니다.

 

요청

 

LS산전의 PLC와 통신하기 위한 요청 프로토콜은 시작할 때 아스키코드 5(ENQ), 끝날 때 4(EOT)를 붙여주기로 약속했습니다.

 

코드

Hex

명 칭

제어내용

ENQ

H05

Enquire

요구용 프레임의 시작 ASCII 코드

EOT

H04

End of Text

요구용 프레임의 마감 ASCII 코드

 

하지만 아스키 코드 5번과 4번은 키보드에 없는 문자이기 때문에 바이트배열을 문자열로 변환하는 방법을 통하여 작성해주어야 합니다.

 

함수 팔레트 > 프로그래밍 > 배열 > 배열상수

함수 팔레트 > 프로그래밍 > 숫자형 > 숫자형 상수

숫자형 상수배열 상수 안으로 드래그 해준다.

 

함수 팔레트 > 프로그래밍 > 문자열 > 문자열/배열/경로 변환 > 바이트배열을 문자열로

함수 팔레트 > 프로그래밍 > 문자열 > 문자열 연결

문자열 연결 터미널 개수는 드래그하면 늘릴 수 있습니다.

문자열 연결 터미널 중 가운데 터미널에서 마우스 오른쪽클릭 > 생성 > 컨트롤 생성을 클릭하여 문자열 컨트롤을 만들어줍니다.

프런트 패널에 문자열 컨트롤이 자동으로 생성된 것을 확인할 수 있습니다.

 

 

 

 

응답

통신으로부터 읽어와야 할 글자의 개수를 알기 위해서 프로퍼티 노드를 생성합니다.

함수 팔레트 > 프로그래밍 > 어플리케이션 컨트롤 > 프로퍼티 노드

 

프로퍼티 노드에서 마우스 왼쪽 클릭 > Serial Settings > Number of Bytes at Serial Port

 

왼쪽과 같이 선을 이어줍니다. VISA 읽기에서 버퍼 읽기 터미널에 마우스 커서를 올리고 마우스 오른쪽 클릭 > 생성 > 인디케이터를 클릭해줍니다.

 

 

통신이 너무 빠르면 오류가 날 수 있습니다. 따라서 VISA 쓰기VISA 읽기 사이에 0.5초 쉬는 시간을 만듭니다.

함수 팔레트 > 프로그래밍 > 구조 > 플랫 시퀀스 구조

함수 팔레트 > 프로그래밍 > 타이밍 > 기다림

1. VISA 쓰기프로퍼티 노드 사이의 선을 제거합니다.

2. 플랫 시퀀스 구조를 드래그하여 위치해줍니다.

3. 기다림 함수를 플랫 시퀀스 구조 안에 넣습니다.

4. 기다림대기시간 터미널에서 마우스 오른쪽 클릭 > 생성 > 상수를 생성하고 500을 입력합니다. 대기시간의 단위는 ms입니다. (1 = 1000ms)

5. VISA 쓰기프로퍼티 노드 사이의 선이 플랫 시퀀스 구조를 통과하도록 하여 다시 이어줍니다.

반드시 선이 플랫 시퀀스 구조를 거쳐 지나갈 수 있도록 플랫 시퀀스 구조 경계에서 한번 클릭한 후 이어 줘야 합니다.

 

 

 

 

 

 

SubVI생성

 

 

지금까지 잘 따라 했다면 위와 같이 블록다이어그램이 완성됐을 겁니다. 그러나 이것은 너무나 복잡하기 때문에 한눈에 알아보기가 쉽지 않습니다. 따라서 SubVI를 생성하여 블록 다이어그램을 좀더 쉽게 알아볼 수 있게 해봅시다.

 

왼쪽과 같이 드래그를 합니다.

 

 

 

 

 

 

 

SubVI에 포함될 개체들입니다.

 

 

 

 

 

드래그한 상태로 편집(E) > SubVI 생성(S)을 클릭합니다.

 

오른쪽과 같이 SubVI가 생성된 것을 볼 수 있습니다. SubVI를 더 보기 좋게 바꾸어 봅시다. 생성된 SubVI를 더블클릭 합니다.

 

 

 

 

 

 

 

오른쪽 위의 아이콘을 더블 클릭합니다.

1: 마음에 드는 문양을 골라 드래그해서 오른쪽화면에 끌어다 놓을 수 있습니다.

2: 텍스트를 입력하는 도구.

3: 선택도구. 지우고 싶은 구역을 드래그 후 <Delete>키를 누르면 지울 수 있습니다.

4: 문양 또는 텍스트를 이동시켜 원하는 곳에 위치시킬 수 있습니다.

 

저자는 이렇게 완성했습니다. 꼭 따라 할 필요는 없지만, 이것이 무슨 SubVI인지 구분할 수 있는 아이콘으로 만들어줍시다. 확인을 누르고 마칩니다.

 

 

터미널을 설정해보겠습니다.

아이콘에서 마우스 오른쪽을 클릭합니다.

커넥터 보이기를 클릭합니다.

 

 

 

 

 

 

 

다시 한번 아이콘에서 마우스 오른쪽을 클릭합니다.

모든 터미널 연결 끊기를 클릭합니다.

터미널 모양이 이렇게 변합니다.

아이콘의 오른쪽 사각형에서 마우스 오른쪽 클릭을 하여 터미널 추가를 합니다.

터미널 모양이 왼쪽과 같이 됩니다.

 

 

 

 

오른쪽 위의 사각형을 마우스 왼쪽클릭 후 VISA resource name out 상자를 클릭합니다.

오른쪽 아래의 사각형을 마우스 왼쪽 클릭 후 error out 상자를 클릭합니다.

단축키 <Ctrl + S> 혹은 파일(F) > 저장(S)을 클릭하여 저장을 합니다. 저장을 할 때는 SubVI인 것을 구분하기 위해 제목 뒤에 (SubVI)를 붙여줍니다. [ : HEAD (SubVI) ] 저장을 했다면 SubVI를 종료합니다.

 

 이렇게 와이어가 깨진 것을 볼 수 있습니다. 단축키 <Ctrl + B>를 눌러 깨진 와이어를 제거한 후 다시 제대로 연결해 줍니다. SubVI에 터미널이 나타나지 않는다면 SubVI에서 마우스 오른쪽을 클릭한 후 SubVI에 다시 링크를 눌러줍니다.

 

VISA 쓰기와 읽기도 SubVI로 대체합니다.

 

SubVI를 사용하니 블록다이어그램 구성이 훨씬 깔끔하고 알아보기 쉽게 됐습니다.

 

 

 

 

 

While루프 생성

 

요청 문을 전송하고 응답을 받는 작업을 반복하기 위해 While루프를 만들어 줍니다.

함수 팔레트 > 프로그래밍 > 구조 > While 루프

 

루프 조건에서 마우스 오른쪽을 클릭 > 컨트롤 생성

정지 버튼을 누르면 While루프가 끝납니다.

 

완성 후 프런트 패널의 모습

 

 

 

 

이것으로 PLC를 제어하기 위한 기본적인 LabVIEW 회로구성이 끝났습니다. 앞으로 다루게 될 내용은 기초회로 VI를 바탕으로 하니 잘 저장해두세요.