SIEMENS/SIMATIC MANAGER

(5) OB, FC, FB 란 무엇인가?

전기럭 2025. 4. 21. 18:55
반응형
반응형

 

 

(4) OB, FC, FB 란 무엇인가?

(3) OB, FC, FB 란 무엇인가?(2) 하드웨어 스테이션 만드는법(1) 새로운 project 만들기SIMATIC MANAGER 실행 더블클릭  바탕화면이나 메뉴바나 설치된 SIMATIC Manager 아이콘을 더블 클릭하여 실행합니다.  

electricalgoose.tistory.com

 

안녕하세요! 지난번 블로그에서 SIMATIC Manager의 중요한 구성 요소 중 하나인 Function Block(FB)에 대해 알아봤습니다. FB는 자체 메모리(인스턴스 DB)를 가지고 있어 상태를 기억하고 복잡한 제어 로직 구현에 유용하다는 것을 알게 되었습니다.

 

이번에는 FB와 함께 SIMATIC Manager 프로그래밍의 기본이 되는 또 다른 블록인 FC에대해 알아보겠습니다.

FC, 또는 Function은 특정 작업을 수행하기 위한 일련의 프로그램 명령어를 포함하는 표준 블록입니다. 다른 프로그램 블록(OB, FC, FB 등)에서 **호출(Call)**하여 실행될 수 있습니다.

 

FC의 가장 큰 특징이자 FB와의 근본적인 차이점은 자체적인 메모리 영역, 즉 인스턴스 데이터 블록(Instance DB)을 가지지 않는다는 것입니다.

 

바로 이 '메모리 영역의 유무'가 FC와 FB를 구분하는 가장 중요한 기준입니다.

  • FB (Function Block): 인스턴스 DB를 가집니다. 따라서 이전 호출 시의 상태나 데이터를 기억하고 유지할 수 있습니다. '상태 저장(Stateful)' 블록이라고 할 수 있습니다. 카운터, 타이머, 비례-적분-미분(PID) 제어와 같이 이전 값이 다음 실행에 영향을 주는 로직에 적합합니다.
  • FC (Function Call): 인스턴스 DB를 가지지 않습니다. 호출될 때마다 새로 시작하며, 이전 호출의 상태나 데이터를 기억하지 못합니다. '상태 비저장(Stateless)' 블록이라고 할 수 있습니다. 순수하게 입력 값에 대한 연산을 수행하고 결과를 반환하는 등의 작업에 적합합니다.

FC는 다음과 같은 경우에 사용하기에 적합합니다.

  • 상태를 기억할 필요가 없는 단순 연산: 수학 계산 (예: 단위 변환, 평균 계산), 논리 연산 (예: 특정 조건 만족 여부 확인) 등 입력값만으로 결과를 도출하는 작업에 사용됩니다.
  • 반복적이고 독립적인 작업: 여러 곳에서 동일한 코드가 반복될 경우, 해당 코드를 FC로 만들어 호출하여 코드의 중복을 줄이고 가독성을 높일 수 있습니다.
  • 모듈화: 프로그램을 기능별로 분할하여 관리하고 싶을 때, 특정 기능을 FC로 만들어 프로그램을 구조화할 수 있습니다.

예를 들어, 센서 값을 특정 단위로 변환하는 계산, 여러 알람 조건을 하나의 상태 값으로 압축하는 로직 등은 FC로 구현하기에 적합한 작업입니다. 이러한 작업들은 이전 실행 상태와 무관하게 현재 입력값만으로 결과를 도출하기 때문입니다.

FC 사용의 장점:

  • 단순성: FB에 비해 구조가 단순하여 생성 및 사용이 용이합니다.
  • 메모리 효율성: 인스턴스 DB를 사용하지 않으므로, 특히 여러 곳에서 자주 호출될 경우 메모리 자원을 절약할 수 있습니다.
  • 코드 재사용 및 관리 용이: 동일한 로직을 여러 곳에서 사용해야 할 때 FC 하나만 만들어 호출하면 되므로 코드 수정 및 관리가 편리합니다.

FC 사용의 단점:

  • 상태 기억 불가: 이전 실행의 상태나 데이터를 기억하지 못하므로, 타이머, 카운터, 시퀀스 제어 등 상태 변화에 따라 동작해야 하는 로직에는 부적합합니다.
  • 복잡한 로직 구현의 한계: 내부 변수나 복잡한 데이터 구조를 관리해야 하는 복잡한 작업에는 FB가 더 적합합니다.

 

 

지난번에 블럭 생성에 대해 해봤으니 다들 할줄 아실거라 생각합니다. FC1 을 하나 만들어보겠습니다.

 

 

FC1 추가

 

 

FC1을 열어보면 지난번 FB1과 다른걸 확인할수 있습니다.

FC1과 FB1 차이
FC1

각 섹션의 의미는 다음과 같습니다.

  1. IN (Input):
    • 목적: 외부(이 FC를 호출하는 블록)에서 이 FC 안으로 데이터를 입력받을 때 사용합니다.
    • 특징: 호출하는 블록에서 IN 파라미터에 값을 넘겨줍니다. FC 내부에서는 이 값을 읽을 수만 있고, 일반적으로 이 값을 직접 수정하지 않습니다. 마치 함수에 인자(argument)를 전달하는 것과 같습니다.
  2. OUT (Output):
    • 목적: 이 FC 내부에서 처리된 결과를 외부(호출한 블록)로 내보낼 때 사용합니다.
    • 특징: FC 내부에서 계산하거나 처리한 결과를 OUT 파라미터에 씁니다. FC 실행이 완료된 후, 호출한 블록은 이 OUT 파라미터에 저장된 값을 읽을 수 있습니다. 마치 함수의 반환 값(return value)과 유사하지만, 여러 개의 OUT 파라미터를 가질 수 있습니다.
  3. IN_OUT (Input/Output):
    • 목적: 외부에서 데이터를 입력받아, FC 내부에서 그 값을 수정한 후, 수정된 결과를 다시 외부로 돌려줄 때 사용합니다.
    • 특징: IN과 OUT의 기능을 모두 가집니다. 외부에서 넘겨준 초기 값을 읽고, FC 내부 로직에 따라 이 값을 변경할 수 있으며, 변경된 최종 값은 호출한 블록에서 다시 접근할 수 있습니다. 포인터나 구조체 등 복잡한 데이터 타입을 넘겨주거나, 블록 내에서 직접 값을 업데이트해야 할 때 유용합니다.
  4. TEMP (Temporary):
    • 목적: 이 FC가 현재 실행되는 동안에만 임시적으로 사용되는 변수들을 선언할 때 사용합니다.
    • 특징: 이 변수들의 값은 FC가 실행되는 한 번의 스캔 주기 동안만 유효하며, FC 실행이 끝나면 그 값은 사라집니다. 다음 스캔 주기에서 FC가 다시 호출될 때는 새로운 값이 할당되거나 초기화됩니다 (이전 값을 기억하지 못합니다). 주로 중간 계산 결과를 저장하는 용도로 사용되며, 로컬 데이터 스택에 할당됩니다. FB의 Static 변수와 달리 값을 유지하지 않습니다.
  5. RETURN (Return Value Type):
    • 목적: 이 FC (Function)가 실행 완료 후 반환하는 값의 데이터 타입을 정의합니다.
    • 특징: 모든 FC가 RETURN 값을 사용하는 것은 아니지만, 함수처럼 특정 하나의 값을 결과로 명시적으로 반환하도록 설계할 때 사용합니다. 예를 들어, 에러 코드(INT)나 상태 값(BOOL) 등을 반환 값으로 사용할 수 있습니다. OUT 파라미터들과는 별개로 함수 자체의 결과 값으로 처리됩니다.

이 인터페이스 섹션은 FC 블록을 만들 때 가장 먼저 정의해야 하는 부분이며, 해당 FC가 어떤 데이터를 입력받고 어떤 데이터를 출력하며, 어떤 임시 변수를 사용하는지를 명확하게 보여줍니다. 이를 통해 블록 간의 데이터 흐름을 파악하고 프로그램을 구조화하는 데 도움이 됩니다.

 

 

 

 

반응형

'SIEMENS > SIMATIC MANAGER' 카테고리의 다른 글

(4) OB, FC, FB 란 무엇인가?  (2) 2025.04.11
(3) OB, FC, FB 란 무엇인가?  (1) 2025.04.11
(2) 하드웨어 스테이션 만드는법  (0) 2025.03.31
S7-300 PLC 소개  (0) 2025.03.31
Simatic manager 명령어집  (0) 2023.11.14