본문 바로가기
MELSEC PLC 기초 강좌

[27] PLC 기초 강좌

by lemy 2019. 3. 31.
반응형

[27] PLC 기초 강좌

4.4.      응용 명령

4.4.6.    구조화 명령

 

 

1) FOR~NEXT(FOR, NEXT)  
▶ [FOR n]
FOR~NEXT 명령간의 처리를 n회 실행하게 되면 무조건 NEXT 명령의 다음 스텝을 처리합니다. 
n은 1~32767을 지정할 수 있습니다.  –32768~0을 지정했을 때는 n=1과 동일한 처리를 합니다. 
FOR~NEXT 명령 간의 처리를 하지 않을 때는 CJ, SCJ 명령으로 점프시키십시오. FOR의 네스팅은 16중까지 가능합니다. 
다음의 경우에는 연산 에러가 되며, 에러 플래그(SM0)가 ON하고 에러 코드가 SD0에 저장됩니다. 
ᆞFOR 명령 실행 후, NEXT 명령을 실행하기 전에 END(FEND) 명령을 실행했을 때 (에러 코드: 4200)
ᆞFOR 명령을 실행하기 전에 NEXT 명령을 실행했을 때(에러 코드: 4201)
ᆞFOR~NEXT 사이에 STOP 명령이 있을 때(에러 코드: 4200)
ᆞFOR 명령의 네스팅을 실행하는 경우, 17번째 네스팅을 실행했을 때(에러 코드: 4202)

▶ [NEXT]
FOR~NEXT 명령간의 처리에서 n에서 지정한 횟수만큼 FOR 명령 줄로 되돌려(점프) 줍니다. 
FOR~NEXT 명령에서 FOR의 네스팅에서 같은 수 만큼 1:1로 NEXT 문이 있어야 합니다. 

2) FOR~NEXT 강제 종료(BREAK(P)) 
▶ [BREAK(P)  (D) Pn]
FOR~NEXT 명령에 의한 반복 처리를 강제적으로 종료하고, Pn으로 지정된 포인터로 실행위치를 이동합니다. Pn에는 동일 프로그램 파일 내의 포인터만 지정할 수 있습니다. Pn에 다른 프로그램 파일 내의 포인터를 지정한 경우는 연산 에러가 됩니다. 
(D)에는 강제 종료한 시점의 FOR~NEXT 명령에서의 반복 처리 실행 횟수의 잔여수를 저장합니다. 단, 반복처리의 

잔여 수에는 BREAK 명령 실행시의 횟수도 포함됩니다. BREAK 명령은 FOR~NEXT 명령 사이에서만 사용할 수 있습니다. 

BREAK 명령은 하나의 네스팅에 대해서만 사용할 수 있습니다. 

다중네스팅을 강제 종료시킬 경우는 네스팅만큼의 BREAK 명령을 실행하십시오.

3) 서브루틴 프로그램 호출(CALL(P)) 
▶ [CALL(P)  Pn]
CALL(P) 명령을 실행하면 Pn으로 지정된 포인터의 서브루틴 프로그램을 실행합니다. 
CALL(P) 명령은 동일 프로그램 파일 내의 포인터로 지정한 서브루틴 프로그램과 공통 포인터로 지정한 서브루틴 프로그램을 실행할 수 있습니다. 

▶ [CALL(P)  Pn (S1)~(S5)]
CALL(P) 명령을 실행하면 Pn으로 지정된 포인터의 서브루틴 프로그램을 실행합니다. 
CALL(P) 명령은 동일 프로그램 파일 내의 포인터로 지정한 서브루틴 프로그램과 공통 포인터로 지정한 서브루틴 프로그램을 실행할 수 있습니다. 서브 루틴 프로그램에서 기능(function) 디바이스(FX, FY, FD)를 사용하는 경우는 (S1)~(S5) 기능 디바이스에 대응하는 디바이스를 지정합니다. 
(S1)~(S5)로 지정된 디바이스 내용은 서브루틴 프로그램 실행 전에 비트 데이터의 내용이 FX에, 워드 데이터의 내용이 FD에 전송됩니다. 
CALL(P) 명령에서는 (S1)~(S5)까지 사용 가능합니다. 서브 루틴 프로그램에서 사용하는 기능 디바이스의 수와 CALL(P) 명령의 인수는 동 수로 할 필요가 있습니다. 또한 기능 디바이스와 CALL(P)의 인수 종류는 동일하게 하십시오.
CALL(P) 명령에서 인수로 지정한 디바이스 번호는 중복되지 않도록 하십시오. 중복되는 경우에는 정상적으로 연산을 할 수 없습니다. CALL(P) 명령에서 인수로 지정한 워드 디바이스(4워드)를 서브 루틴 프로그램에서 사용하지 마십시오. 사용하게 되면 정상적인 연산을 할 수 없습니다. 
CALL(P) 명령의 네스팅은 16중까지 가능합니다.  단 네스팅의 16중은 CALL(P), FCALL(P), ECALL(P), EFCALL(P) 명령의 합계입니다. 
서브 루틴 프로그램 내에서 ON시킨 디바이스는 서브 루틴 프로그램의 비실행시에서도 유지됩니다. 서브 루틴 프로그램 실행시에 ON시킨 디바이스는 FCALL(P) 명령으로 OFF시킬 수 있습니다. 

4) 서브루틴 프로그램에서의 리턴(RET) 
▶ [RET]
서브 루틴 프로그램의 종료를 실행합니다. RET 명령을 실행하면 서브 루틴 프로그램을 호출한 CALL(P), FCALL(P),ECALL(P), EFCALL(P) 명령의 다음 스텝으로 복귀합니다. 
다음의 경우에 연산 에러가 되며, 에러 플래그(SM0)가 ON하고 에러 코드가 SD0에 저장됩니다. 
ᆞCALL(P) 명령 실행 후, RET 명령을 실행하기 전에 END, FEND, GOEND, STOP 명령을 실행했을 때
(에러 코드: 4211)
ᆞCALL(P) 명령을 실행하기 전에 RET 명령을 실행했을 때(에러 코드: 4212) 

 

프로그램 예제

4.4.6 Command PGM.gxw
2.27MB

반응형

'MELSEC PLC 기초 강좌' 카테고리의 다른 글

[29] PLC 기초 강좌  (0) 2019.04.07
[28] PLC 기초 강좌  (3) 2019.04.03
[26] PLC 기초 강좌  (0) 2019.03.28
[25] PLC 기초 강좌  (0) 2019.03.24
[24] PLC 기초 강좌  (0) 2019.03.16

댓글