프로그램에서 데이터를 기록하거나 참조할 때, 컨트롤러의 메모리 풀에 접근해야 한다는 점과
메모리 풀에 접근하는 2가지 방식에 대해 이전 글에서 알아보았습니다.
IEC 표준에서는 변수를 통해 접근하는 방식을 권장하고 있지만,
표준에서 권장하는 방법이 우월하다는 의미로 이야기했던 것도 아닐뿐더러,
주소를 통해 직접 접근하는 방식으로 메모리를 참조하는 컨트롤러 또한 현재까지도 많이 쓰이고 있습니다.
다만, 국제적인 표준에 따라 프로그램을 작성하는 것이
더 많은 장점을 가지고 있다고 개인적으로 생각하기 때문에,
IEC 표준 및 PLCopen의 모델을 따르는 컨트롤러에 더욱 무게를 두고 있는 중이구요.
그런 의미에서 변수에 대한 내용을 이 글에서 조금 더 이야기하려고 합니다.
IEC 61131에서는 5가지 타입의 변수를 표준으로 정의하고 있습니다.
- 지역 변수 (VAR ~ END_VAR)
- 전역 변수 (VAR_GLOBAL ~ END_VAR)
- 입력 매개 변수 (VAR_INPUT ~ END_VAR)
- 출력 매개 변수 (VAR_OUTPUT ~ END_VAR)
- 입출력 매개 변수 (VAR_IN_OUT ~ END_VAR)
여기서 입력과 출력, 그리고 입출력 매개 변수들은
POU가 다른 POU를 호출하는 과정에서 연산에 필요한 데이터를 전달하거나,
연산 결과를 전달받는 목적으로 사용합니다.
다시 말해, 특별한 쓰임새를 가지고 있는 변수들이기 때문에,
이런 변수들을 사용하지 않는 PLC 프로그램도 꽤 많이 있습니다.
하지만, IEC 표준을 따르는 PLC 프로그램 중에서 지역 변수와 전역 변수를 사용하지 않는 프로그램은
정말 찾아보기 드물지요.
이러한 지역 변수와 전역 변수는 어떤 블럭의 내부에서 선언되느냐에 따라 구분됩니다.
IEC 표준에서는 VAR과 END_VAR 사이에 지역 변수를 선언하고,
VAR_GLOBAL과 END_VAR 사이에 전역 변수를 선언합니다.
지역이나 전역이라는 이름답게, 지역 변수는 변수가 선언된 POU에서만 참조가 가능합니다.
그래서, IEC 표준을 따라가는 대부분의 개발 환경에서는
지역 변수를 선언할 수 있는 영역이 POU에 포함되어 있는데요.
위의 그림처럼 POU 에디터 화면에 같이 표시하기도 하고, 별도의 오브젝트를 통해 나눠놓기도 합니다.
반대로, 전역 변수는 변수가 선언된 프로젝트의 어떤 POU에서도 참조가 가능합니다.
말 그대로, 변수를 통해 메모리에 접근해서 데이터를 읽고 쓰는 것이 가능하다는 말인데요.
그래서 대부분의 개발 환경이 별도의 오브젝트를 통해 전역 변수들을 관리합니다.
여기까지의 내용만 가지고 생각해 본다면,
프로그램을 작성하는 과정에서 지역 변수의 쓰임새보다는 전역 변수의 쓰임새가 훨씬 많을 것으로 보입니다.
그래서 그런지, 전역 변수의 사용 빈도가 훨씬 높아 보이는데요.
이러한 현상이 나타나는 원인은 PLC 자체의 개발 과정에 있다고 생각합니다.
IEC 61131이라는 표준은 1993년에 만들어졌습니다.
PLC가 본격적으로 보급되기 시작한 시점과 비교한다면,
20년 정도 뒤에 IEC 표준이 만들어졌다는 말인데요.
다시 말해 표준이 만들어지기 전까지는
제조사의 철학이나 의도가 개발 환경에 강하게 녹아들 수밖에 없었다는 의미입니다.
IEC 표준이 만들어지고 정립이 되면서 변수에 통해 메모리를 참조하는 방식이 나왔으므로,
그전에는 주소를 통해 직접 참조하는 방식으로 프로그램을 작성했습니다.
주소를 통해 메모리를 직접 참조하기 때문에 프로그램의 어느 위치에서든지 접근이 가능했을 것이구요.
PLC 개발자들은 소프트웨어 개발을 체계적으로 공부했다기보다는
현업에서 직접 부딪혀가며 실무를 익힌 비중이 높은 분들이기 때문에,
지역 변수보다는 전역 변수로 바라보는 시각이 고착화될 수밖에 없었다고 생각합니다.
하지만, 모든 POU에서 자유롭게 접근하고 수정이 가능하다는 점은
데이터의 참조 경로를 불분명하게 만든다는 단점도 있기 때문에,
지역 변수와 전역 변수를 혼재해서 사용하는 것이
프로그램을 개발하는 과정이나 시운전 과정에서 훨씬 유리한 것 또한 사실입니다.
아울러, 다른 POU와 데이터를 공유할 수 없다는 지역 변수의 단점 또한
입/출력 매개변수를 통해 개선하는 것이 유리하다는 말도 같이 전해드립니다.
이번 글의 주제에 관한 더욱 자세한 내용은 전자책을 통해 확인하실 수 있습니다.
아래 Link를 클릭하면 전자책에 대한 소개글로 이동하오니,
전자책 구매에 관심 있으신 분들은 참고하시기 바랍니다.
'Programming > PLC' 카테고리의 다른 글
Structured Text (2) | 2024.05.14 |
---|---|
FBD와 CFC (0) | 2024.05.14 |
래더 다이어그램 (2) | 2024.05.14 |
변수와 데이터 타입 (0) | 2024.05.14 |
Task와 POU (0) | 2024.05.14 |