====== 사용자 정의 펑션 ====== POU를 추가할 때 아래와 같이 Function을 선택하고 추가할 수 있습니다. {{ :codesysmanual:functionadd.png?nolink |}} 2개의 값을 입력받아 더한결과를 반환하는 단순한 펑션을 만들어 보겠습니다. {{ :codesysmanual:functionadd3.png?nolink |}} 그리고 PLC_PRG에 가서 오른쪽을 보면 방금 작성한 펑션이 보입니다. 끌어다가 LD영역에 놓으면 됩니다. {{ :codesysmanual:functionadd2.png?nolink |}} 이런식으로 사용자가 정의한 펑션이 LD언어창에 블록형태로 표시됩니다. {{ :codesysmanual:functionadd4.png?nolink |}} 입출력 파라미터를 작성해주면 사용할 수 있습니다. {{ :codesysmanual:functionadd5.png?nolink |}} ====== 사용자 정의 펑션 블록 (FB) ====== 사용자 정의 펑션블록도 POU 추가에서 선택하여 생성할 수 있습니다. {{ :codesysmanual:fblock1.png?nolink |}} 펑션과 거의 유사한데, 차이점은 * 인스턴스가 생성됩니다. * 여러개 값을 반환할 수 있습니다. (펑션은 1개만 가능) 다음은 2개의 입력을 받아 더한뒤 반환하는 단순한 펑션블록입니다. {{ :codesysmanual:fblock2.png?nolink |}} LD언어에서 방금 작성한 펑션블록을 추가하면 다음과 같은 형태가 됩니다. {{ :codesysmanual:fblock3.png?nolink |}} FunctionBloack_Add_0 이라는 인스턴스가 생성됩니다. 인스턴스란? 간단하게 설명드리자면 펑션블록을 선언하는 것은 일종의 붕어빵 틀이고, 그걸로 구워낸 붕어빵이 "인스턴스"입니다. 펑션블록은 그 자체로 이용이 불가능하지만 인스턴스를 생성해 냄으로서 이용가능한 실체(프로그램 메모리에 존재하는)가 만들어지는 것입니다. * 펑션은 C언어에서 사용하는 펑션과 동일한 개념입니다. * 펑션블록은 C++이나 C#에서 사용하는 클래스와 동일한 개념입니다. 선언한 펑션블록(FB)은 모든 언어(ST,LD,FBD,IL,SFC,CFC)에서 호출 할 수 있습니다. [[codesysmanual:index|CODESYS 와 ComfilePi]]