본문 바로가기
PLC 전기제어 기술자료/샘플 프로그램 & TIP

[MELSEC] 다른 POU폴더에서 정의된 포인터(P) 서브루틴을 호출하는 방법

by 위치결정 2023. 3. 4.
반응형

PLC 프로그램을 효율적으로 설계하기 위해 포인터 P로 지정한 서브루틴 프로그램을 콜 명령어를 이용해서 호출하는 경우가 많습니다.

보통의 경우는 같은 POU 프로그램 내부에 포인터 P를 지정하여 서브루틴을 호출할것입니다.

 

그럼 같은 기능의 서브루틴을 POU 프로그램 별로 복사를 해야하는가? 꼭 그렇지만은 않습니다.

다른 POU 폴더에서 정의된 서브루틴을 호출하는 두가지 방법에 대해서 알아봅니다.

 

ecall, common P.gxw
0.90MB

 

< 예제 #1 ECALL 명령펑션을 이용하는 방법 >

우선 FUNC POU폴더를 하나 만들어 두개의 간단한 함수형 서브루틴을 정의합니다.

덧셈 서브루틴(P0) 과 뺄셈 서브루틴(P1) 두개를 정의합니다.

 

P0 을 호출하면 인수1 과 인수2를 덧셈하여 인수3 으로 리턴값을 줄것입니다.

P1 을 호출하면 인수1 과 인수2를 뺄셈하여 인수3 으로 리턴값을 줄것입니다.

 

ECALL 명령어를 이용하여 "FUNC" POU 프로그램 폴더에 정의된 P0을 호출하여 인수1, 인수2, 인수3 각각 상수값과 디바이스를 지정합니다.

잘 동작하네요.

 

 

< 예제 #2 공통포인터 P 를 파라미터에서 지정하는 방법 >

 

PLC 파라미터에서 PLC System -> Common Pointer No. 옵션을 지정하는 방법입니다.

공통 포인터로 지정한 서브루틴은 다른 POU에서도 호출할수 있게 됩니다.

예제에서는 4000번대 정도로 뒷번호지정하여 봅니다.

이제 포인터(P) 4000 ~ 4095 까지 지정한 서브루틴 프로그램은 글로벌 펑션이 되어 다른 POU 폴더에서 호출하더라도 정상적으로 동작하는 서브루틴이 됩니다.

동일한 덧셈펑션과 뺄셈펑션을 P4000, P4001 로 만들고 이번엔 CALL 로 호출해봅니다.

 

잘 동작하네요.

 

 

< 예제 전체 로직 >

[ MAIN POU ]

 

[ FUNC POU ]

반응형

댓글