지멘스 PLC BE(Block End) 명령어 사용 방법

SIEMENS PLC 프로그램에서 사용되는 BE(Block End) 명령어 사용 방법에 대해 알아보겠습니다. Block End, 블록 종료의 종류는 3가지로 나눌 수 있습니다. BE(Block End : 블록 종료)  BEU(Block End Unconditionally : 무조건 블록 종료), BEC(Block End Conditionally : 조건부 블록 종료)

각 BE 명령어에 대해 알아보기에 앞서 SIMATIC Manager Program 다운로드 및 설치 완료가 되어 있는 환경에서 명령어를 사용할 수 있습니다. 다운로드 받지 않으셨다면, 지금 설치해보시기 바랍니다.

BE Block End : 블록 종료

BE 명령어는 현재 블록에서 프로그램 스캔 종료 후 현재 블록을 호출(Call)했던 원래의 블록으로 점프(Jump) 해 돌아갑니다.  프로그램 스캔 호출(Call)을 했던 해당 블록 문장 직후로 돌아가게 됩니다. 이후 다음 프로그램 스캔을 이행합니다.

RLO는 현재 블록으로부터 호출한 블록으로 이동해 옮겨갑니다. BE 명령어는 다른 어떠한 조건에도 영향을 받지 않는 것이 특징입니다.

BE와 BEU의 기능은 대부분이 일치하나, 블록의 마지막 부분에서 정상적인 종료에서는 BE를 사용하고, 점프 조건 명령에 따라 중간에서 종료를 희망할 경우 BEU(Block End Unconditionally : 무조건 블록 종료)를 사용하는 것이 일반적입니다.

BE 명령어 예시 (STL 언어)

{FB 5}

…
CALL FC 1005  ---------- (FB 5 프로그램 스캔 중 CALL FC 1005 문장을 읽을때, FC 1005 블록으로 이동, 이후 "BE"를 통해 종료 후 다시 해당 문장 직후로 돌아와 다음 프로그램 문장을 스캔합니다.)
{FC 1005}

A   M60.0
JC STEP 5
L   DB300. DBW12
T   DB312. DBW12
BE  ---------- (위 FB 5, CALL FC1005 위치)
STEP 5:
L   DB 300. DBW14
T   DB312. DBW14

BEU – Block End Unconditionally : 무조건 블록 종료

BEU 명령어는 현재 블록에서 프로그램 스캔을 종료합니다. 다음 현재 블록을 호출(CALL)했던 블록 문장으로 돌아갑니다. BE와 마찬가지로 복귀 후 CALL 명령어 문장 다음부터 스캔을 이어갑니다.

현재 Local Data 영역은 해제하고, 이전 로컬 데이터 영역들이 다시 열립니다. 호출하는 블록의 MCR 의존은 복구되는 것이 기본입니다.

RLO 값은 현재 블록에서 호출 명령어가 위치했던 블록으로 옮겨가 유지됩니다. 앞서 BE는 어떤 조건과도 의존되는 바 없으며, BE 명령어 사용 이후 CALL 명령어가 있는 문장으로 Jump 해 옮겨갑니다.

BE와 BEU의 기능은 대부분이 일치하나, 블록의 마지막 부분에서 정상적인 종료에서는 BE를 사용하고, 점프 조건 명령에 따라 중간에서 종료를 희망할 경우 BEU(Block End Unconditionally : 무조건 블록 종료)를 사용하는 것이 일반적입니다.

BEU 명령어 예시 (STL 언어)

{FB 6}
…
CALL FC 1006  ---------- (FB 6 프로그램 스캔 중 CALL FC 1006 문장을 읽을때, FC 1006 블록으로 이동, 이후 "BEU"를 통해 종료 후 다시 해당 문장 직후로 돌아와 다음 프로그램 문장을 스캔합니다.)
{FC 1006}

A   M60.0
JC STEP 6
L   DB400. DBW12
T   DB412. DBW12
BEU  ---------- (위 FB 6, CALL FC1006 위치)
STEP 6:
L   DB 400. DBW14
T   DB412. DBW14

BEC – Block End Conditionally : 조건부 블록 종료

BEC 명령어는 RLO 값에 따라 조건부 블록 종료를 실행합니다. RLO=1 일 경우, 현재 블록에서 프로그램 스캔 중지 및 블록 종료, CALL 호출 했던 블록으로 점프 이동합니다.

RLO 값이 1 이면, 현재 블록으로부터 현재 블록을 호출했던 CALL 명령어가 있는 블록의 문장으로 옮겨갑니다.

RLO 값이 0일 경우, BEC 조건부 블록 종료 명령어는 실행되지 않습니다.

 BEC 명령어 예시 (STL 언어)

{FB 7}
…
CALL FC 1007  ---------- (FB 7 프로그램 스캔 중 CALL FC 1007 문장을 읽을때, FC 1007 블록으로 이동, 이후 "BEC"를 통해 종료 후 다시 해당 문장 직후로 돌아와 다음 프로그램 문장을 스캔합니다.)
{FC 1007}

A   M60.0
L   DB500. DBW12
T   DB512. DBW12
BEC  ---------- (RLO = 1일 경우, 위 FB 7, CALL FC1007 위치로 이동 / RLO = 0일 경우 다음 문장 스캔)
L   DB 500. DBW14 (RLO = 0일 경우 스캔되는 문장)
T   DB512. DBW14

SIEMENS PLC에서 사용되는 블록 종료, BE, BEU, BEC 프로그램 명령어에 대해 알아보는 시간을 가졌습니다. 다음으로 SIEMENS SIMATIC PLC TCP 통신 연결 방법에 대해 안내하겠습니다. 참고바랍니다.

Leave a Comment