본문으로 바로가기

변수의 종류

category Programming/PLC 2021. 4. 7. 13:15
반응형

변수의 종류

프로그램에서 데이터를 기록하거나 참조할 때, 변수 선언을 통해 시스템으로부터 메모리를 먼저 할당 받아야 한다는 것을 지난 글(변수와 데이터 타입)을 통해 알아보았다. 이번에는 IEC 61131 표준으로 정의하고 있는 변수의 종류에 대해 알아보자.

  • 지역 변수 (VAR ~ END_VAR)
  • 전역 변수 (VAR_GLOBAL ~ END_VAR)
  • 입력 매개 변수 (VAR_INPUT ~ END_VAR)
  • 출력 매개 변수 (VAR_OUTPUT ~ END_VAR)
  • 입출력 매개 변수 (VAR_IN_OUT ~ END_VAR)

IEC 61131 표준에서는 변수의 쓰임새에 따라 위와 같이 5개로 변수의 종류를 나누고 있다. 그리고 변수를 어떤 블록 내부에 선언하느냐에 따라 변수의 종류가 결정되도록 규정하고 있다.

위 그림의 프로그램을 예로 들어보자. 지난 글(Task와 POU)에서 알아보았듯이, CODESYS의 POU 에디터는 위 그림과 같이 변수를 선언하는 부분과 프로그램을 작성하는 부분으로 나눠진다. 그림에서 파란색 사각형으로 표시된 부분이 변수를 선언하는 구문을 보여주고 있고, 이 구문들은 VAR과 END_VAR 키워드로 정의된 블록 내부에서 정의됨으로써, 지역 변수로 선언되었다.
지역 변수는 이름에서 알 수 있듯이, 변수가 선언된 지역에서만 참조할 수 있는 변수이고, 여기서 말하는 지역은 POU를 의미한다. 다시 말해, BOOL 타입의 bSW01, bSW02, 그리고 bCoil 변수들은 모두 변수가 선언된 PLC_PRG POU 내부에서만 참조할 수 있다는 의미이고, 이 POU의 외부에서 변수들의 상태 값을 참조 또는 변경하는 명령어가 쓰여지는 경우 시스템은 빌드 과정에서 에러를 출력하게 된다.
지역 변수를 선언하는 위치가 POU 에디터의 위쪽에 위치하므로, 프로그래밍 과정에서 필요한 변수들을 에디터 화면의 전환 없이 바로바로 선언해서 사용할 수 있다. 하지만, 앞에서 이야기한대로 선언된 POU 안에서만 참조가 가능하므로 여러 POU 단위로 나눠서 작성되는 프로그램의 경우 POU와 POU 사이에서 공유되어야 하는 데이터의 저장소로 활용하기 어려워 (아주 불가능은 아님.), POU 안에서 처리되는 연산 결과를 임시로 저장하거나 특정 조건을 치환하는 용도로 많이 사용된다.

CODESYS에서 전역 변수 리스트 (Global Variable List) 오브젝트를 추가하면 전역 변수를 선언할 수 있다. 오브젝트 이름의 머리 글자를 따서 GVL이라고도 많이 불리는 전역 변수 리스트 오브젝트는 내부에 VAR_GLOBAL과 END_VAR 블록이 자동으로 추가되어 있어, 블록 내부에 변수를 선언해주는 것으로 간단히 전역 변수를 생성할 수 있다. 전역 변수는 이름에서 알 수 있듯이, 전 지역에서 참조가 가능한 변수를 의미한다. 다시 말해, GVL 오브젝트 내부에 선언된 변수는 오브젝트를 포함하고 있는 PLC 애플리케이션의 모든 POU에서 접근과 쓰기가 가능하다는 의미이다. 그래서, 여러 POU 단위로 나눠서 프로그램을 작성할 때, POU와 POU 사이에서 데이터를 공유하는 역할로 많이 사용된다.

지금까지의 내용만 놓고 본다면, 지역 변수의 쓰임새가 다소 모호하게 느껴질 수 있다. 오히려, 메모리의 주소를 직접 참조하는 방식의 프로그램에 익숙한 경우라면, 모든 메모리를 전역 변수처럼 활용해왔기 때문에 여러 POU 내부에 선언되어 사용되는 지역 변수가 오히려 걸림돌처럼 느껴질 수 도 있다. 하지만, 모든 POU에서 자유롭게 접근과 수정이 가능한 전역 변수는 작성 중인 프로그램의 크기가 커질수록 데이터의 참조 경로가 불분명해지는 문제로 이어질 수 있다. 따라서, 데이터 공유의 필요 여부에 따라 적절히 지역 변수와 섞어서 사용하는 것이 프로그램을 작성하는데 훨씬 유리하고, 실제 데이터를 공유할 때 전역 변수보다 입/출력 매개 변수를 활용하는 것이 더욱 간결하고 효율적인 프로그램의 작성을 가능하게 만들어준다.

이번 글의 주제에 관한 더욱 자세한 내용은 전자책을 통해 확인하실 수 있습니다.
(입/출력 매개 변수에 대한 내용 포함)
아래 Link를 클릭하면 전자책 구매 사이트 (크몽)으로 연결되니,
전자책 구매에 관심 있으신 분들은 참고하시기 바랍니다.

(전자책 구매하러가기)

지금 읽고 계신 글이 유익했다면, 커피 한 잔 부탁드립니다.
더욱 참신한 글로 여러분의 후원에 보답하겠습니다.


donaricano-btn

반응형

'Programming > PLC' 카테고리의 다른 글

Structured Text  (0) 2021.04.23
FBD와 CFC  (0) 2021.04.19
래더 다이어그램  (2) 2021.04.18
변수와 데이터 타입  (0) 2021.03.28
Task와 POU  (0) 2021.03.22