서브루틴으로 이동(Jump to Subroutine, JSR), 서브루틴(Subroutine, SBR) 및 반환(Return, RET)
이 정보는
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, Compact GuardLogix
5380, CompactLogix
5380, ControlLogix
5580, GuardLogix
5580 및 ControlLogix 5590 컨트롤러에 적용됩니다.JSR 명령어는 다른 루틴을 호출합니다. 해당 루틴이 완료되면 실행이 JSR 명령어로 돌아갑니다.
SBR 명령어는 JSR에 의해 전달된 입력 매개 변수를 수신합니다.
RET 명령어는 반환 매개 변수를 JSR에 다시 전달하고 서브루틴의 스캔을 종료합니다.
사용 가능한 언어
래더 다이어그램



펑션 블록



순차 펑션 차트

구조화된 텍스트
JSR(RoutineName,InputCount,InputPar,ReturnPar);
SBR(InputPar);
RET(ReturnPar);
피연산자
중요:
다음과 같은 경우 예기치 않은 작업이 발생할 수 있습니다.
- 출력 태그 피연산자를 덮어썼습니다.
- 구조 피연산자의 구성원을 덮어썼습니다.
- 지정된 경우를 제외하고 여러 명령어에서 구조 피연산자를 공유합니다.
주의:
SBR 또는 RET 명령어의 각 매개 변수에 JSR 명령어의 해당 매개 변수와 같은 데이터 유형(모든 배열 차원 포함)을 사용합니다. 다른 데이터 유형을 사용하면 예기치 않은 결과가 발생할 수 있습니다.
래더 다이어그램
JSR 명령어
피연산자 | 데이터 유형 CompactLogix 5370, ControlLogix 5570, Compact GuardLogix 5370 및 GuardLogix 5570 컨트롤러 | 데이터 유형 CompactLogix 5380, ControlLogix 5580, Compact GuardLogix 5380, GuardLogix 5580 및 ControlLogix 5590 컨트롤러 | 형식 | 설명 |
|---|---|---|---|---|
Routine Name | ROUTINE | ROUTINE | 이름 | 실행할 서브루틴 |
Input Par | BOOL SINT INT DINT REAL structure | BOOL SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL structure DT LDT TIME32 TIME LTIME | 즉시 태그 배열 태그 | 이 루틴에서 서브루틴의 태그에 복사할 데이터.
|
Return Par | BOOL SINT INT DINT REAL structure | BOOL SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL structure DT LDT TIME32 TIME LTIME | 태그 배열 태그 | 이 루틴에 서브루틴의 결과를 복사하도록 태그를 설정합니다.
|
SBR 명령어
피연산자 | 데이터 유형 CompactLogix 5370, ControlLogix 5570, Compact GuardLogix 5370 및 GuardLogix 5570 컨트롤러 | 데이터 유형 CompactLogix 5380, ControlLogix 5580, Compact GuardLogix 5380, GuardLogix 5580 및 ControlLogix 5590 컨트롤러 | 형식 | 설명 |
|---|---|---|---|---|
Input Par | BOOL SINT INT DINT REAL structure | BOOL SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL structure DT LDT TIME32 TIME LTIME | 태그 배열 태그 |
|
RET 명령어
피연산자 | 데이터 유형 CompactLogix 5370, ControlLogix 5570, Compact GuardLogix 5370 및 GuardLogix 5570 컨트롤러 | 데이터 유형 CompactLogix 5380, ControlLogix 5580, Compact GuardLogix 5380, GuardLogix 5580 및 ControlLogix 5590 컨트롤러 | 형식 | 설명 |
|---|---|---|---|---|
Return Par | BOOL SINT INT DINT REAL structure | BOOL SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL structure DT LDT TIME32 TIME LTIME | 즉시 태그 배열 태그 | JSR 명령어의 해당 반환 파라미터(최대 40개)에 복사할 이 루틴의 데이터. |
연산 상태 플래그에 영향
아니요
주 폴트/부 폴트
메이저 폴트는 다음과 같은 경우에 발생합니다. | 폴트 유형 | 폴트 코드 |
|---|---|---|
JSR 명령어는 SBR 명령어보다 입력 파라미터 수가 적음 | 4 | 31 |
JSR 명령어가 폴트 루틴으로 이동 | 4 | 990 또는 사용자 제공 |
RET 명령어는 JSR 명령어보다 반환 매개 변수 수가 적음 | 4 | 31 |
주 루틴에는 RET 명령어가 포함 | 4 | 31 |
연산
중요:
어떤 루틴이든 JSR 명령어를 포함할 수 있지만 JSR 명령어는 주 루틴을 호출(실행)할 수 없습니다.

JSR 명령어는 지정된 루틴(서브루틴이라 함)의 실행을 시작합니다.
- 서브루틴은 스캔될 때마다 실행합니다.
- 서브루틴이 실행한 후 로직 실행은 JSR 명령어를 포함한 루틴으로 돌아가서 JSR 다음의 명령어를 사용하여 계속합니다.
서브루틴에 대한 이동을 프로그래밍하려면 다음 지침을 따릅니다.
JSR
- 서브루틴의 태그에 데이터를 복사하려면 입력 파라미터를 입력합니다.
- 서브루틴의 결과를 이 루틴의 태그에 복사하려면 반환 파라미터를 입력합니다.
- 필요에 따라 입력을 40개까지 입력하며 반환 매개 변수를 40개까지 입력합니다.
SBR
- JSR 명령어가 입력 파라미터를 포함한 경우 SBR 명령어를 입력합니다.
- SBR 명령어를 루틴의 첫 번째 명령어로 놓습니다.
- JSR 명령어의 각 입력 매개 변수에 대해 데이터를 복사할 태그를 입력합니다.
RET
- JSR 명령어가 반환 파라미터를 포함한 경우 RET 명령어를 입력합니다.
- RET 명령어를 루틴의 마지막 명령어로 놓습니다.
- JSR 명령어의 각 반환 매개 변수에 대해 JSR 명령어에 전송할 반환 매개 변수를 입력합니다.
- 래더 루틴에서는 필요한 경우 다른 입력 조건을 기반으로 서브루틴을 종료하기 위해 추가 RET 명령어를 놓습니다(함수 블록 루틴은 RET 명령어를 한 개만 허용).
최대 40개의 매개 변수를 서브루틴에 전달하고 최대 40개의 매개 변수가 서브루틴에서 반환되는 상태에서 중첩된 서브루틴을 25개까지 호출합니다.

팁:
가변 피연산자를 추가 및 제거하려면
편집 > 래더 요소 편집(Edit > Edit Ladder Element)
메뉴를 선택합니다. JSR 및 SBR 명령어의 경우 입력 매개 변수를 추가합니다. JSR 및 RET 명령어의 경우 출력 매개 변수를 추가합니다. 3개 명령어 모두에 대해 명령어 매개 변수를 제거합니다.실행
래더 다이어그램
조건/상태 | 수행한 작업 |
|---|---|
사전 스캔 | 렁은 거짓으로 설정됩니다. 컨트롤러가 모든 서브루틴을 실행합니다. 서브루틴의 모든 렁이 사전 스캔되도록 하기 위해 컨트롤러가 RET 명령어를 무시합니다(즉, RET 명령어가 서브루틴을 종료하지 않음). 입력 및 반환 매개 변수는 전달되지 않습니다. 같은 서브루틴이 여러 번 호출되면 한 번만 사전 스캔됩니다. |
렁-입력-조건이 (JSR 명령어에 대해) 거짓임 | N/A |
렁-입력-조건이 참임 | 파라미터가 전달되고 서브루틴이 실행됩니다. |
사후 스캔 | 사전 스캔과 같은 조치 |
펑션 블록
조건/상태 | 수행한 작업 |
|---|---|
사전 스캔 | 래더 다이어그램 표의 사전 스캔을 참조하십시오. |
EnableIn이 거짓임 | N/A |
EnableIn이 참임 | 파라미터가 전달되고 서브루틴이 실행됩니다. |
명령어 최초 실행 | N/A |
명령어 최초 스캔 | N/A |
사후 스캔 | 래더 다이어그램 표에서 사후 스캔 섹션을 참조하십시오. |
구조화된 텍스트
조건/상태 | 수행한 작업 |
|---|---|
사전 스캔 | 래더 다이어그램 표의 사전 스캔을 참조하십시오. |
정상 실행 | 파라미터가 전달되고 서브루틴이 실행됩니다. |
사후 스캔 | 래더 다이어그램 표에서 사후 스캔 섹션을 참조하십시오. |
예
예 1
래더 다이어그램

구조화된 텍스트
루틴 | 프로그램 |
|---|---|
주 루틴 | JSR(routine_1,2,value_1,value_2,float_value_1); |
서브루틴 | SBR(value_a,value_b); <statements>; RET(float_a); |
예 2
래더 다이어그램
주 루틴

subroutine_1

예 3
펑션 블록

의견을 작성 부탁드립니다.