본문으로 바로가기

FBD와 CFC

category Programming/PLC 2024. 5. 14. 18:47
반응형

시퀀스 회로의 로직을 프로그램으로 쉽게 바꿔줄 수 있다는 점은 PLC가 가진 엄청난 장점이었구요. 
관련된 필드 엔지니어들을 포함해서 공장 관리자들의 관심까지도 한 몸에 받기에 충분했습니다. 
그런데, PLC가 처음 보급되던 시절에는
릴레이 로직 회로를 프로그래밍 유닛으로 대체하는 수준 정도로도 많은 사람들을 만족시킬 수 있었지만,
컨트롤러의 성능이 점차 발전하는 것과 동시에 필드에서 요구하는 기능들도 다양해지면서
단순히 시퀀스만 처리해 주던 PLC 프로그램에도 변화가 필요해지기 시작했습니다. 
이런 복잡 & 다변화되는 요구 사항에 유동적으로 대응하기 위해
제어 대상이 되는 시스템을 작은 논리적 단위로 나눠서 설계하고,
이를 조합해 주는 방식으로 프로그램을 개발하기 시작했는데요. 
여기서 작은 논리적 단위로 작성된 프로그래밍 모듈이 Function과 Function Block이고,
이렇게 만들어진 모듈들을 서로 연결해서
데이터가 흘러갈 수 있도록 만들어주는 프로그래밍 언어가 Function Block Diagram, 줄여서 FBD입니다.

그래서 FBD로 작성된 프로그램은
위 그림과 같이 프로그래밍 모듈이나 연산자들을 모두 사각 박스 형태로 표현하구요. 
이들의 입력과 출력핀이 서로 연결되는 모습을 보여줍니다. 
덕분에 어떤 연산 혹은 프로그래밍 모듈이 먼저 처리되는지,
그리고 어떤 데이터들이 전달되는지를 직관적으로 확인할 수 있으나,
박스 내부에 표시되는 연산자의 이름을 통해 어떤 연산인지를 구분해야 하므로,
실질적인 알고리즘을 구현하는 데는 한계가 있습니다. 
여기에 추가로, 일부 개발 환경에서는
연결되는 박스 자체를 자유롭게 배치하는 방식이 아니라 컴팩트하게 붙여주는 방식으로 프로그램을 작성하기 때문에,
프로그램을 작성하는 단계에서 여러 제약을 가지는 경우도 많이 발견할 수 있습니다.

Continuous Function Chart의 머리글자를 따서 이름 붙인 CFC
이름 그대로 프로그램이 차트 형태를 보이는 언어입니다. 
프로그래밍 모듈이나 연산자를 박스 형태로 표현하고
이들의 입출력을 서로 연결해 주는 방식인 것은 FBD 언어와 같습니다만,
조금 더 자유로운 배치 및 연결을 지원하는데, 정확한 의미에서 IEC 표준 프로그래밍 언어는 아닙니다. 
(FBD는 IEC에서 표준으로 정의한 프로그래밍 언어 중 하나입니다.)

그래서 그런지, FBD 언어는 웬만한 개발 환경에서 거의 다 지원합니다. 
물론, 현재 필드에서 사용되는 모든 PLC의 개발 환경을 다 경험해 본 것은 아니어서
약간의 정정이 필요한 수도 있습니다만, 개인적인 경험에 비춰보자면 그렇다는 말이구요. 
반대로, CFC 언어를 지원하지 않는 개발 환경도 쉽게 찾아볼 수 있습니다.

다시 본론으로 돌아와서 두 언어의 주된 차이점이라고 한다면,
박스 형태의 연산자나 모듈을 얼마나 자유롭게 배치할 수 있는지,
그리고 입출력핀의 연결이 얼마나 자유로운지의 차이를 꼽을 수 있겠지만,
실제로는 CFC 언어의 특성을 보이면서 FBD라는 이름이 붙어 있는 경우도 많이 볼 수 있기 때문에
굳이 두 언어의 차이를 찾기보다는,
데이터의 흐름에 특화된 언어라는 정도로만 정리해도 무관할 것으로 보입니다. 
대신, 자유도가 높은 언어의 경우에는
연산자의 실행 순서로 인해 의도하지 않은 버그가 발생할 수 있으니,
이런 부분을 잘 고려해서 프로그램을 작성해야 합니다.

 

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

[EBook] - EPUB3] ESME - 기본편

 

EPUB3] ESME - 기본편

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

sw-eng.tistory.com

 

반응형

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

Sequential Function Chart  (0) 2024.05.14
Structured Text  (2) 2024.05.14
래더 다이어그램  (2) 2024.05.14
변수의 종류  (0) 2024.05.14
변수와 데이터 타입  (0) 2024.05.14