CASE_OF
CASE_OF를 사용하여 숫자 값을 기반으로 수행할 작업을 선택합니다.
피연산자
CASE numeric_expression OF
selector1: statement;
selectorN: statement; ELSE
구조화된 텍스트
피연산자 | 유형 | 형식 | 입력 |
|---|---|---|---|
Numeric_ expression | SINT INT DINT REAL | 태그 식 | 숫자로 계산되는 태그 또는 식 (숫자 식) |
Selector | SINT INT DINT REAL | 즉시 | numeric_expression과 같은 유형 |
중요:
REAL 값을 사용하는 경우, REAL 값은 하나의 특정 값을 정확히 일치시키는 것보다는 값의 범위 내에 있을 가능성이 더 높기 때문에 셀렉터에 대해 일정 범위의 값을 사용십시오.
설명
구문은 표에 설명되었습니다.

이들은 선택기 값을 입력하기 위한 구문입니다.
선택기가 다음과 같은 경우 | 입력 |
한 값 | 값: 문 |
여러 개, 고유 값 | value1, value2, valueN : <statement> 각 값을 구분하려면 쉼표(,)를 사용합니다. |
일정 범위의 값 | value1..valueN : <statement> 범위를 식별하려면 마침표 2개(..)를 사용합니다. |
구분되는 값 + 일정 범위의 값 | valuea, valueb, value1..valueN : <statement> |
CASE 구성은 C 또는 C++ 프로그래밍 언어의 스위치 명령문과 유사합니다. CASE 구성에서는 컨트롤러가 첫 번째 일치하는 선택기 값과 연결된 문만 실행합니다. 실행은 해당 선택기의 문 뒤에서 항상 분리되고 END_CASE 문으로 이동합니다.
연산 상태 플래그에 영향
아니요
주 폴트/부 폴트
없음
예
원하는 작업 | 입력할 스트럭쳐드 텍스트 |
레시피 번호 = 1이면 재료 A 출구 1 = 개방(1) 재료 B 출구 4 = 개방(1) | CASE recipe_number OF |
1: Ingredient_A.Outlet_1 :=1; Ingredient_B.Outlet_4 :=1; | |
레시피 번호 = 2 또는 3이면 재료 A 출구 4 = 개방(1) 재료 B 출구 2 = 개방(1) | 2,3: Ingredient_A.Outlet_4 :=1; Ingredient_B.Outlet_2 :=1; |
레시피 번호 = 4, 5, 6 또는 7이면 재료 A 출구 4 = 개방(1) 재료 B 출구 2 = 개방(1) | 4..7: Ingredient_A.Outlet_4 :=1; Ingredient_B.Outlet_2 :=1; |
레시피 번호 = 8, 11, 12 또는 13이면 재료 A 출구 1 = 개방(1) 재료 B 출구 4 = 개방(1) | 8,11..13 Ingredient_A.Outlet_1 :=1; Ingredient_B.Outlet_4 :=1; |
그렇지 않으면 모든 출구 = 폐쇄(0) | ELSE |
Ingredient_A.Outlet_1 [:=]0; Ingredient_A.Outlet_4 [:=]0; Ingredient_B.Outlet_2 [:=]0; Ingredient_B.Outlet_4 [:=]0; | |
END_CASE; |
[:=]는 컨트롤러가 다음을 수행할 때마다 출구 태그도 해제하도록 컨트롤러에 지시합니다.
RUN 모드로 진입합니다.
SFC를 자동 리셋으로 구성한 경우 SFC의 단계를 떠납니다. 이는 단계 작업에 할당을 포함하거나 작업을 사용하여 JSR 명령어를 통해 구조화된 텍스트 루틴을 호출하는 경우에만 적용됩니다.
의견을 작성 부탁드립니다.