본문 바로가기
  • 반가워요 : )
전기기사/PLC

CODESYS CFC 프로그램의 예시

by 교육의 기울기 2024. 11. 17.
반응형

CFC 프로그램의 예시를 적어보고자 한다.  CFC 프로그래밍의 정의는 다음과 같다.

"CFC(Continuous Function Chart)는 블록 다이어그램 형태로 논리와 데이터 흐름을 시각적으로 표현하며, 병렬 처리와 복잡한 제어 시스템에 적합한 프로그래밍 언어이다."

 

그리고 CFC프로그래밍의 적당한 특징은 다음과 같으니 무엇인지 모르면 한번 읽어보도록하자.

더보기

CFC의 장점

1. 비주얼 기반 프로그래밍 (Visual Programming)


   - CFC는 블록 다이어그램 방식으로 프로그래밍을 합니다. 각 기능(블록)을 화면에 배치하고, 선을 연결하여 데이터를 주고받는 구조입니다.
    - 직관적: 복잡한 로직을 한눈에 파악할 수 있어 디버깅과 유지보수가 쉽습니다.
    - 효율적: 논리와 데이터 흐름을 시각적으로 표현하므로 코드를 이해하기 쉽습니다.

2. 유연한 구조
   - 이점: CFC는 프로그램 블록 배치와 연결이 자유롭습니다.
    - 병렬 프로세스 지원* 여러 작업을 병렬로 처리할 수 있습니다.
    - 프로그램 흐름 최적화: 논리 순서에 얽매이지 않고 원하는 대로 구성할 수 있습니다.

3. 실시간 데이터 흐름 표현
   -  록 간 데이터 흐름이 그래픽 선으로 연결되어 실시간으로 확인할 수 있습니다.
    - 데이터가 어떻게 처리되고 전달되는지 명확히 보이므로 문제 해결과 최적화가 용이합니다.
    - 실시간 데이터를 쉽게 모니터링하고 디버깅할 수 있습니다.

4. 재사용성 (Reusability)
   - CFC에서 작성한 기능 블록을 다른 프로젝트에서 쉽게 재사용할 수 있습니다.
    - 동일한 기능을 반복적으로 사용할 때 시간과 노력을 절약합니다.
    - 표준화된 블록을 사용하여 신뢰성을 향상시킵니다.

5. 산업 표준 준수
   - CFC는 IEC 61131-3 표준을 준수하는 프로그래밍 언어 중 하나입니다.
   - 다양한 PLC와 HMI에서 지원하므로 호환성이 뛰어납니다.
   - 다른 프로그래밍 언어(FBD, LD, ST 등)와 혼합 사용이 가능합니다.

6. 복잡한 제어 시스템에 적합
   - 복잡한 공정 제어나 대규모 시스템에서 특히 유용합니다.
    - 공정 제어, 데이터 처리, 그리고 PLC-HMI 통합에 적합하며 대규모 프로젝트 관리가 용이합니다.

CFC의 사용 사례
CFC는 다음과 같은 작업에서 특히 강점을 발휘합니다:
1. 프로세스 제어: 화학 공장, 발전소 등에서 데이터 흐름이 중요할 때.
2. 자동화 시스템: 복잡한 로직과 병렬 처리가 필요한 시스템.
3. HMI 통합: 데이터 흐름을 HMI와 연결해 시각화할 때.


언제 CFC를 사용하는 것이 "더 좋은가"?
- 비교 기준: LD(래더 다이어그램), ST(구조적 텍스트), SFC(순차적 기능 차트)와 비교했을 때.
  CFC는 **복잡한 데이터 흐름을 명확히 표현할 수 있어, LD나 ST로 작성할 때 생길 수 있는 혼란을 줄입니다.
  반복적이고 표준화된 작업에는 재사용성이 높은 CFC가 효율적입니다.

결론
CFC는 직관적이고 시각적이며 복잡한 공정 제어에 적합한 프로그래밍 언어로, 유지보수와 디버깅이 용이합니다. 특히 데이터 흐름이 중요한 프로젝트에서 효율성이 뛰어납니다. 하지만, 간단한 로직이나 순차적 작업에서는 LD나 ST가 더 적합할 수 있으므로 상황에 따라 선택이 필요합니다.


아래프로그램은 CFC 프로그램의 예시이다. 툴박스에있는 BOX, INPUT, OUTPUT을 이용해서 간단한 회로를 만들수있다. 아래는 codesys를 이용한 cfc의 특징을 정리한 것이다.

 

1. connection mark -source, sink를 이용해서 출력을 다른곳으로 이어줄수있다. 
이렇게하면 개체간 와이어링이 필요없이 더 깔끔하게 프로그래밍이 가능하다.

2. 또한 하나의 source가 하나의 싱크에만 적용되는 것이 아니라 여러개의 싱크에도 적용될수있다.

3. connection mark -source, sink 에서 분기 또한 가능하다.

아래의 회로를 보면 Motor2 RS에서 출력을 보내면 Timer1, Timer2가 동시에 on이 된다. 그러면 MotorCoil2는 5초후에 on되고, MotorCoil3는 10초후에 on된다.타이머시간을 다르게 했기때문이다. MotorCoil4는 MotorCoil3가 on된 이후에 5초가 더 지나고나서 on된다. Timer3 가 on되는 조건이 Timer2의 출력에서 분기되기 때문이다. 

4. CFC프로그래밍에서는 개체가 위에있냐, 아래에있냐에따라서 실행순서가 달라진다. 이전 버전에서는 이를 수동으로 바꿀 수 있었으나, 지금 버전에서는 불가능해 보인다. 때문에 실행의순서가 중요한 프로그램이라면 이를 잘 신경써야한다.
특히 set우선회로, reset우선회로를 만들때, 어느것이 위에있는지에따라서 set우선, reset우선순위가 달라진다. Motorstart2회로를 보면알수있다.

 

반응형

댓글