본문으로 바로가기

Function과 Function Block

category Programming/PLC 2024. 5. 15. 19:16
반응형

IEC 표준을 따르는 개발 환경에서 작성한 PLC 프로그램이라 하더라도,
Program POU만 가지고 작성된 프로그램이 꽤 많습니다. 
IEC에서는 Function이나 Function Block이라는 2가지 타입의 POU도 표준으로 정의하고 있지만,
여전히 Program POU에 높은 의존도를 보이고 있다는 말이지요. 
단순히 특정 시퀀스 제어 시스템에 대한 프로그램의 작성이 목적이라면,
Program POU만으로 프로그램을 작성하는 것도 나쁘지 않을 수 있습니다. 
물론 적절히 설계된 데이터 구조가 뒷받침되어야 하겠지만,
하나의 시스템에 국한된 프로그램을 작성하는 과정에서
익숙하지도 않은 Function이니 Function Block이니 하는 것들을 일부러 곁들이는 것이
오히려 생산성을 저해할 수 있다고 생각하기 때문인데요. 
버전업이 되는 것이든, 옵션을 추가하는 것이든 지금 작성 중인 프로그램이 베이스가 되어서
반복적으로 변경 및 수정이 되어야 하는 경우라면
Function이나 Function Block을 적용하는 쪽이 당연히 높은 생산성을 가져갈 수 있습니다.
그렇다면, Function이나 Function Block을 적용했을 때
어째서 높은 생산성을 가져갈 수 있는지 알아봐야 하는데요. 
'코드의 재사용'이라는 키워드로 정리할 수 있습니다.

일단 Function은 위 그림과 같은 이미지로 많이 설명합니다. 
Function이라는 POU의 내부에 어떻게 프로그램을 작성했는지 모르겠지만,
연산 처리에 필요한 데이터만 전달하면 연산 결과를 알아서 반환하는 그런 구조라는 것을 설명하기 위함인데요. 
사실 이런 설명은 Function Block이나 Program POU에도 일부 해당되는 이야기라서,
Function만의 고유한 특성을 설명하는 이미지라고 말씀드리기는 어렵고,
그냥 프로그램의 대상을 여러 개의 작은 프로그램 모듈로 나누었을 때,
그런 모듈을 구현하는 하나의 방법이나 도구 정도로 이해하시는 편이 적절하다고 생각합니다. 
여기서, 작성된 프로그램의 반복 실행이 필요한지 (Function & Function Block),
아닌지 (Program)에 따라 한 번 나눌 수 있을 것이구요. 
독립적인 메모리를 할당해서 실행되는 과정을 계속 추적해야 하는지 (Function Block),
컨트롤러의 스캔 사이클마다 개별적으로 실행되는 모듈인지 (Function)를 가지고 한 번 더 나눌 수 있습니다. 
다시 말해, PLCopen의 소프트웨어 모델에 따르면 POU가 다른 POU를 끌어다 실행시킬 수 있는데,
이것을 정확한 명칭으로 호출이라고 부르고, 다른 POU로부터 얼마나 많이 호출되는지,
그리고 호출을 통해 전달된 지령을 몇 번의 스캔 사이클에서 만들어내는지에 따라
어떤 POU를 통해 모듈을 구현할 것인지가 결정된다고 말씀드릴 수 있습니다.
아무튼, Function이나 Function Block으로 프로그램 모듈을 구현하면,
다른 POU에서 호출이라는 과정을 통해 끌어다 사용할 수 있다는 말이고요. 
동일한 코드를 반복해서 작성할 필요 없이 호출을 통해 간편하게 재사용할 수 있고,
연산 과정에서 필요한 데이터를 전달하고 처리된 결과를 받을 수 있으니까 프로그램도 간편하게 작성할 수 있고,
나중에 변경 및 수정이 필요한 경우에도 관련된 모듈만 건드리면 되기 때문에 높은 생산성을 확보할 수 있게 됩니다.

이번 글의 주제에 관한 더욱 자세한 내용은 전자책을 통해 확인하실 수 있습니다.
아래 Link를 클릭하면 전자책에 대한 소개글로 이동하오니,
전자책 구매에 관심 있으신 분들은 참고하시기 바랍니다.

[EBook] - EPUB3] ESME - 기본편

 

EPUB3] ESME - 기본편

슈나이더 일렉트릭에서 출시한 장비 제어용 컨트롤러인 M2XX 컨트롤러의 어플리케이션을 개발하는EcoStruxure Machine Expert (줄여서 ESME)에 관한 내용을 다루는 전자책입니다.현재 Machine Expert와 관련

sw-eng.tistory.com

 

반응형

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

Timer와 Counter  (0) 2024.05.16
사용자 정의형 데이터 타입  (0) 2024.05.14
Sequential Function Chart  (0) 2024.05.14
Structured Text  (2) 2024.05.14
FBD와 CFC  (0) 2024.05.14