====== 펑션블록(FB) 호출 ====== 선언한 펑션블록(FB)은 모든 언어에서 호출 할 수 있습니다. FB에는 하나 이상의 입력 및 출력 변수가 있습니다. 인스턴스가 선언 되자마자 POU, 블록의 입력 및 출력 변수 인스턴스도 자동으로 선언됩니다. ===== LD언어에서 FB호출 ===== LD언어에서는 이렇게 FB를 사용합니다. {{ :codesysmanual:fb_instance.png?nolink |}} ===== ST언어에서 FB호출 ===== 이 FB인스턴스는 ST언어에서 이렇게 기술 합니다. FunctionBlock_Add_0(IN1 := In1, IN2 := In2, Sum => Out1); FB 인스턴스 호출에서 값이 반환되지 않습니다. 대신 인스턴스 실행 결과는 출력 변수에 저장됩니다. 이러한 변수는 어떤 프로그래밍 언어를 사용하든 관계없이 객체 지향 방식으로 참조됩니다. 위 예제에서 사용된 FunctionBlock_Add_0에 Sum이라는 출력 변수가 있습니다. 그러면 Sum은 다음 구문으로 참조됩니다. FunctionBlock_Add_0.Sum 이 출력을 다른 변수에 할당 할 수 있습니다. bVar : = FunctionBlock_Add_0.Sum; FB가 호출되는 동시에 결과를 가져올 수도 있습니다. 연산자 "=>"를 사용하면 호출에서 괄호 안의 다른 변수에 대해 출력 변수를 할당 할 수 있습니다. (아래 예에서 Sum "=>" Out1 참조) FunctionBlock_Add_0(IN1 := In1, IN2 := In2, Sum => Out1); ===== 타이머 ===== 타이머와 카운터도 펑션블록중 하나입니다. 시스템에서 사전에 정의해 놓은 펑션블록입니다. 타이머는 이렇게 기술합니다. {{ :codesysmanual:ton_example.png?nolink |}} Three_sec(IN := %IX1.2, PT := T#3s); %Q2.3 := Three_sec.Q; CurrentTime := Three_sec.ET; ===== 카운터 ===== 카운터는 이렇게 기술합니다. {{ :codesysmanual:ctu_example.png?nolink |}} VAR Count_Items : CTU; END_VAR Count_Items(CU := %IX2.0 AND Run, RESET := %IX2.1, PV := 4400, Q => %QX4.0, CV => CurrentCount); END_PROGRAM; [[codesysmanual:index|CODESYS]]