Page 1
7章 명령어 일람
이 장에서는, 소프트웨어PLC에서 사용할 수 있는 기본명령과 응용명령
(LD블록)의 상세에 관해서 설명합니다. 7.1 기본명령.....................................................................................................7-1
7.1.1 A접점 ..................................................................................................7-1 7.1.2 B접점 ..................................................................................................7-1 7.1.3 기동접점...............................................................................................7-1 7.1.4 기동멈춤접점........................................................................................7-1 7.1.5 코일 ......................................................................................................7-1 7.1.6 반전 코일 .............................................................................................7-1 7.1.7 세트 코일 .............................................................................................7-1 7.1.8 리셋 코일 .............................................................................................7-2 7.1.9 기동 edge 검출부 코일.........................................................................7-2 7.1.10 기동멈춤 edge 검출부코일 .................................................................7-2 7.1.11 점프 ....................................................................................................7-2 7.1.12 리턴 ....................................................................................................7-2
7.2 응용명령(LD블록) ...............................................................................7-3 7.2.1 No.1;*(곱셈) ..................................................................................7-3 7.2.2 No.2;+(덧셈) ..................................................................................7-4 7.2.3 No.3;-(뺄셈) ..................................................................................7-4 7.2.4 No.4;/(나눗셈)...............................................................................7-5 7.2.5 No.5;1 gain(대입) .........................................................................7-5 7.2.6 No.6;Neg(정수의 부호반전) ...........................................................7-6 7.2.7 No.7;<(보다 작다) .........................................................................7-7 7.2.8 No.8;<=(보다 작거나 같다) ...........................................................7-7 7.2.9 No.9;<>(같지 않다)........................................................................7-8 7.2.10 No.10;=(같다) ..............................................................................7-8 7.2.11 No.11;>(보다 크다)......................................................................7-9 7.2.12 No.12;>=(보다 크거나 같다) .....................................................7-10 7.2.13 No.13;ANY_TO_BOOL(BOOL 형으로 변환) ......................................7-10 7.2.14 No.14;ANY_TO_DINT(정수형으로 변환) ....................................... 7-11 7.2.15 No.15;ANY_TO_REAL(실수형으로 변환) .......................................7-12 7.2.16 No.16;ANY_TO_SINT(단정수형으로 변환) ...................................7-13 7.2.17 No.17;ANY_TO_STRING(문자열형으로 변화) ................................7-13 7.2.18 No.18;ANY_TO_TIME(타이머형으로 변환) ...................................7-14 7.2.19 No.19;AND(BOOL 형 AND) ..............................................................7-15 7.2.20 No.20;NOT(BOOL 형 NOT) ..............................................................7-15 7.2.21 No.21;OR(BOOL 형 OR)..................................................................7-15 7.2.22 No.22;XOR(BOOL 형 Excusive OR) ................................................7-16 7.2.23 No.23;TOF(기동멈춤 지연시간)..................................................7-17
Page 2
2
7.2.24 No.24;TON(기동지연시간)...........................................................7-17 7.2.25 No.25;TP(펄스 타이밍) ..............................................................7-17 7.2.26 No.26;F_TRIG(기동멈춤 edge 검출) ............................................7-18 7.2.27 No.27;R_TRIG(기동 edge 검출) ...................................................7-19 7.2.28 No.28;RS(RS flip-flop) ............................................................7-19 7.2.29 No.29;SR(SR flip-flop) ............................................................7-20 7.2.30 No.30;CTD(카운트 다운) ............................................................7-21 7.2.31 No.31;CTU(카운트 업) ................................................................7-21 7.2.32 No.32;CTUD(상하 카운터)...........................................................7-22 7.2.33 No.33;AVERAGE(N 샘플의 평균)..................................................7-23 7.2.34 No.34;DERIVATE(시간축 상의 미분)...........................................7-24 7.2.35 No.35;HYSTER(2 개의 실수치의 hysteresis 의 bool 형 수치) ...7-25 7.2.36 No.36;INTEGRAL(시간축 상의 적분)...........................................7-25 7.2.37 No.37;LIM_ALRM(hysteresis 를 가진 상하한 알람) ..................7-26 7.2.38 No.38;BLINK(Blink Bool 형 신호) .............................................7-26 7.2.39 No.39;SIG_GEN(사인 신호 발생기) ............................................7-27 7.2.40 No.40;CMP(비교 function 블록)..................................................7-27 7.2.41 No.41;STACKINT(정수 Stack) .....................................................7-28 7.2.42 No.42;CONNECT(리소스에의 접속) ..............................................7-29 7.2.43 No.43;URCV_S(리소스 메세지 송신)...........................................7-30 7.2.44 No.44;USEND_S(리소스로부터 메세지 수신) ..............................7-30 7.2.45 No.45;LIMIT(제한치)..................................................................7-31 7.2.46 No.46;MAX(최대치) .....................................................................7-31 7.2.47 No.47;MIN(최소치) .....................................................................7-32 7.2.48 No.48;MOD(잉여산) .....................................................................7-32 7.2.49 No.49;MUX4(Multiplexer4) .........................................................7-33 7.2.50 No.50;MUX8(Multiplexer 8) .......................................................7-34 7.2.51 No.51;ODD(홀수 Parity) ............................................................7-35 7.2.52 No.52;RAND(랜덤 수치) ..............................................................7-35 7.2.53 No.53;SEL(Binary Selector) .....................................................7-36 7.2.54 No.54;ASCII(문자 → ASCII 코드) .............................................7-36 7.2.55 No.55;CHAR(ASCII 코드 → 문자) ...............................................7-37 7.2.56 No.56;ROL(좌순환) .....................................................................7-38 7.2.57 No.57;ROR(우순환) .....................................................................7-38 7.2.58 No.58;SHL(좌 시프트) ................................................................7-39 7.2.59 No.59;SHR(우 시프트) ................................................................7-40 7.2.60 No.60;ACOS(아크 코사인)...........................................................7-40 7.2.61 No.61;ASIN(아크 사인) ..............................................................7-41 7.2.62 No.62;ATAN(아크 탄젠트)...........................................................7-41 7.2.63 No.63;COS(코사인) .....................................................................7-42 7.2.64 No.64;SIN(사인) .........................................................................7-43 7.2.65 No.65;TAN(탄젠트) .....................................................................7-43 7.2.66 No.66;ABS(절대치) .....................................................................7-44 7.2.67 No.67;EXPT(지수) .......................................................................7-44 7.2.68 No.68;LOG(상용대수)..................................................................7-45 7.2.69 No.69;POW(누승계산)..................................................................7-45 7.2.70 No.70;SQRT(평방근)....................................................................7-46 7.2.71 No.71;TRUNC(소수부분 잘라버림) ..............................................7-46 7.2.72 No.72;DELETE(문자열의 삭제) ...................................................7-47 7.2.73 No.73;FIND(문자열 검색)...........................................................7-48 7.2.74 No.74;INSERT(문자열의 삽입) ...................................................7-48 7.2.75 No.75;LEFT(문자열의 왼쪽부분 취득) .......................................7-49 7.2.76 No.76;MID(문자열의 중간부분 취득).........................................7-50 7.2.77 No.77;MLEN(문자열장의 취득) ...................................................7-51 7.2.78 No.78;REPLACE(문자열 치환) .....................................................7-51 7.2.79 No.79;RIGHT(문자열의 오른쪽부분 취득)..................................7-52 7.2.80 No.80;AND_MASK(정수 비트 마다 AND 마스크) ..........................7-53 7.2.81 No.81;NOT_MASK(정수비트마다 부정).........................................7-53 7.2.82 No.82;OR_MASK(정수비트마다 OR 마스크)..................................7-54 7.2.83 No.83;XOR_MASK(정수비트마다 XOR 마스크) ...............................7-55 7.2.84 No.84;MOV8(BOOL 데이타를 전송 8) ...........................................7-55 7.2.85 No.85;MOV16(BOOL 데이타를 전송 16).........................................7-56
Page 3
3
7.2.86 No.86;MOV32(BOOL 데이타를 전송 32).........................................7-56 7.2.87 No.87;BTOD8(BOOL 데이타를 정수변수에 전송 8) ......................7-56 7.2.88 No.88;BTOD16(BOOL 데이타를 정수변수에 전송 16) ...................7-56 7.2.89 No.89;BTOD32(BOOL 데이타를 정수변수에 전송 32) ..................7-57 7.2.90 No.90;DTOB8(정수변수를 BOOL 에 8)...........................................7-57 7.2.91 No.91;DTOB16(정수변수를 BOOL 에 16) .......................................7-57 7.2.92 No.92;DTOB32(정수변수를 BOOL 에 32) .......................................7-58
Page 5
7.1 기본명령
7-1
7.1 기본명령
7.1.1 A접점
접점의 우측 접속선의 상태는, 좌측 접속선과 접점에 할당되어진 변수와의 논리적이됩니다.
7.1.2 B접점
/
접점의 우측 접속선의 상태는, 접점의 좌측 접속선과 접점에 할당되어진 변수의 반전과의 논리적이 됩니다.
7.1.3 기동접점
P
접점의 우측 접속선의 상태는, 좌측 접속선이 TRUE이고, 또 Bool 형변수가 FALSE에서
TRUE로 기동했을 때만 TRUE가 됩니다.。이 이외에는 FALSE가 됩니다.
7.1.4 기동멈춤접점
N
접점의 오른쪽 접속선의 상태는, 좌측 접속선이 TRUE이고, 또 Bool 형변수가 TRUE에서
FALSE로 기동을 멈추었을 때만 TRUE가 됩니다. 그 이외에는 FALSE가 됩니다.
7.1.5 코일
좌측 접속선의 상태를 코일에 할당된 변수에 대입합니다. 좌측 접속선의 상태는 그대로 우측 접속선에 전달됩니다. 우측 접속선은 통상 우모선에 접속됩니다.
7.1.6 반전 코일
/
좌측 접속선의 반전상태가 코일에 할당된 변수에 대입됩니다. 좌측 접속선의 상태는 그대로 우측 접속선에 전달됩니다. 우측 접속선은 통상 우모선에 접속됩니다.。
7.1.7 세트 코일
S
할당된 변수의 수치는 좌측 접속선의 상태가 TRUE가 되었을 때 TRUE로 세트합니다. 출력변수는
이 상태가 리셋 코일로 반전될 때까지 계속됩니다. 좌측 접속선의 상태는 그대로 우측 접속선에 전달됩니다. 우측 접속선은 통상 우모선에 접속됩니다.
Page 6
7.1 기본명령
7-2
7.1.8 리셋 코일
R
할당된 변수의 수치는 좌측 접속선의 상태가 TRUE가 되었을 때에 FALSE로 리셋됩니다.
출력변수는 이 상태가 세트 코일로 반전될 때까지 계속됩니다. 좌측 접속선의 상태는 그대로 우측 접속선에 전달됩니다. 좌측 접속선은 통상, 우모선에 접속됩니다.
7.1.9 기동 edge 검출부 코일
P
할당된 변수는 좌측 접속선의 상태가 FALSE에서 TRUE로 기동했을 때에 TRUE로 세트됩니다.
그 이외의 경우에는 모두 FALSE로 리셋됩니다.
좌측 접속선의 상태는 그대로 우측접속선에 전달됩니다. 우측접속선은 통상, 우모선에 접속됩니다.
7.1.10 기동멈춤 edge 검출부코일
N
할당된 변수는 좌측 접속선의 상태가 TRUE에서 FALSE로 기동을 멈추었을 때에 TRUE로
세트됩니다. 그 이외의 경우에는 모두 FALSE로 리셋됩니다.
우측접속선의 상태는 그대로 좌측 접속선에 전달됩니다. 우측 접속선은 통상, 우모선에 접속됩니다.
7.1.11 점프
점프 심볼 좌측 접속선의 Bool 상태가 TRUE 일 때, 프로그램은 대응하는 라벨 심볼로 점프하여, 그
다음부터 실행됩니다.
7.1.12 리턴
RETURN 라벨의 좌측 접속선의 Bool 상태가 TRUE 일 때, 프로그램은 이후의 프로그램을 실행하지 않고
리턴합니다.
Page 7
7.2 응용명령(LD블록)
7-3
7.2 응용명령(LD블록)
비교명령이나 타이머 명령같이 표준으로 용의되어 있는 응용명령을 AX소프트웨어PLC에서는
“LD블록”라고 하며, 번호 또는 호칭으로 입력합니다. LD블록은 네모난 블록(function 블록)으로
표현되며, 반드시 입력과 출력을 가지고 있습니다. 예를 들면,“타이머 명령”은 LD블록 No.24=TON(기동 지연시간)이 됩니다. function 블록
“TON”은 Altersys 사 ISaGRAF(ISaGRAF-PRO)가 표준으로 서포트하고 있는 것과 같은 것입니다.
“LD블록 No.24”은 교시의 용이함을 고려해서 AX제어장치에서 독자적으로 부여한 번호이며,
Altersys 사 ISaGRAF(ISaGRAF-PRO)에는 없는 것입니다.
이하, 각 명령의 설명을 상세히 기술하겠습니다.
본문은 Altersys 사의 양해를 얻어, ISaGRAF(ISaGRAF-PRO)유저 가이드의 게재 내용을 거의 그대로
게제하고 있습니다. 설명문 중에는 LD언어(래더)이외의 언어(ST,IL등)가 많이 실려있지만,
이것은 각 명령의 행동을 설명하기 위한 것이며, AX제어장치의 티치 펜던트로 표시・편집하는 것은
불가능합니다. LD언어(래더)이외의 언어로 프로그래밍 할 경우에는, ISaGRAF 워크벤치를 사용해
주십시오.
Copyright AlterSys; Reproduced with permission from AlterSys.
7.2.1 No.1;*(곱셈)
주의: 이 명령의 입력수는 3개 이상으로 변경가능합니다.
인수:
입력 i* 정수・실수형 (모든 입력은 같은 타입)
출력 o1 정수・실수형 입력에 부호 붙여 곱셉
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선 직결이라도 상관없습니다.
ENO 출력은, 항상 블록의 최초 입력과 같은 상태입니다. BOOL 형 변수를 접속해 주십시오.
설명:
복수의 정수・실수형변수의 곱셈
(* 곱셈 블록을 채택한 FBD 예*)
ai101ai102
ai51ai52ai53
*
*
ao10
ao5
(* 등가의 ST언어: *)
ao10 := ai101 * ai102;
ao5 := (ai51 * ai52) * ai53;
(* 등가의 IL언어: *)
LD ai101
MUL ai102
ST ao10
LD ai51
MUL ai52
MUL ai53
ST ao5
Page 8
7.2 응용명령(LD블록)
7-4
7.2.2 No.2;+(덧셈)
주의: 이 명령의 입력수는 3개 이상으로 변경 가능합니다,.
인수:
입력 i* 정수・실수형 (모든 입력은 같은 타입)
출력 o1 정수・실수형 모든 입력에 부호 붙여 덧셈
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록의 최초 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
복수의 정수・실수형 변수에 부호를 붙여서 덧셈
(* 덧셈 블록을 채택한 FBD 예*)
ai101ai102
ai51ai52ai53
+
+
ao10
ao5
(* 등가의 ST언어: *)
ao10 := ai101 + ai102;
ao5 := (ai51 + ai52) + ai53;
(* 등가의IL언어: *)
LD ai101
ADD ai102
ST ao10
LD ai51
ADD ai52
ADD ai53
ST ao5
7.2.3 No.3;-(뺄셈)
인수:
입력 i1,i2 정수・실수형 (IN1 와 IN2 는 같은 타입)
출력 o1 정수・실수형 뺄셈 결과 (IN1 - IN2)
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔 마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록의 최초 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
2개의 정수・실수형변수의 뺄셈(1번째-2번째)。
(* 뺄셈 블록을 채택한 FBD 예 *)
Page 9
7.2 응용명령(LD블록)
7-5
ai101ai102
ai511
ai53
-IN1
IN2 Q
-IN1
IN2 Q
ao10
ao5
-IN1
IN2 Q
(* 등가의 ST언어: *)
ao10 := ai101 - ai102;
ao5 := (ai51 - 1) - ai53;
(* 등가의 IL언어: *)
LD ai101
SUB ai102
ST ao10
LD ai51
SUB 1
SUB ai53
ST ao5
7.2.4 No.4;/(나눗셈)
인수:
입력 i1,i2 정수・실수형 나누는 수는 0이 아닌 것.(IN1 과 IN2 는 같은타입)
출력 o1 정수・실수형 부호 붙여 나눗셈(IN1 / IN2)
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록의 최초 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
2개의 정수・실수형 변수의 나눗셈(1번째/2번째)
(* 나눗셈 블록을 채택한 FBD 예*)
ai101ai102
ai512
ai53
/IN1
IN2 Q
/IN1
IN2 Q
ao10
ao5
/IN1
IN2 Q
(* 등가의 ST언어: *)
ao10 := ai101 / ai102;
ao5 := (ai5 / 2) / ai53;
(* 등가의 IL언어: *)
LD ai101
DIV ai102
ST ao10
LD ai51
DIV 2
DIV ai53
ST ao5
7.2.5 No.5;1 gain(대입)
Page 10
7.2 응용명령(LD블록)
7-6
인수:
입력 i1 모든 타입
출력 o1 모든 타입
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
어느 변수를 다른 변수에 대입합니다.
이 블록은 입력과 출력을 직접 접속하는 블록입니다.
(* 대입 블록을 채택한 FBD 예 *)
ai10
bi1bi2
1IN Q
&1
IN Q bo100
ao23
(* 등가의 ST언어: *)
ao23 := ai10;
bo100 := NOT (bi1 AND bi2);
(*등가의 IL 언어: *)
LD ai10
ST ao23
LD bi1
AND bi2
LDN bo100
7.2.6 No.6;Neg(정수의 부호반전)
인수:
입력 i1 정수・실수형 입력, 출력 패러미터와 같은 타입
출력 o1 정수・실수형 입력, 출력 패러미터와 같은 타입
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
변수의 반전(부호 반전)의 대입
(*Negation 을 블록으로 채택한 FBD 예 *)
ai10
ri1ri2
NegIN Q
+Neg
IN Q ro100
ao23
(* 등가의 ST언어: *)
ao23 := - (ai10);
ro100 := - (ri1 + ri2);
(*등가의 IL 언어: *)
Page 11
7.2 응용명령(LD블록)
7-7
LD ai10
MUL -1
ST ao23
LD ri1
ADD ri2
MUL -1.0
LD ro100
7.2.7 No.7;<(보다 작다)
인수:
입력 i1,i2 정수형, 실수형, 타이머형, 문자열형 2개의 입력은 같은 타입
출력 o1 Bool 형 만약, I1 < I2 라면 TRUE
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
설명:
어떤 변수가 다른 변수보다 작은지 비교합니다.
(*"< " 블록을 채택한 FBD 예*)
1025
'z''B'
aresult
mresult
<IN1
IN2 Q
<IN1
IN2 Q
(* 등가의 ST언어: *)
aresult := (10 < 25); (* aresult 는 TRUE *)
mresult := ('z' < 'B'); (* mresult 는 FALSE *)
(* 등가의 IL언어: *)
LD 10
LT 25
ST aresult
LD 'z'
LT 'B'
ST mresult
7.2.8 No.8;<=(보다 작거나 같다)
인수:
입력 i1,i2 정수형, 실수형, 문자열형 2개의 입력은 같은 타입
출력 o1 Bool 형 만약, I1 <= I2 라면 TRUE
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
설명:
Page 12
7.2 응용명령(LD블록)
7-8
어떤 변수가 다른 변수와 같거나 작은지를 비교합니다.
(* "<= " 블록을 채택한 FBD 예*)
1025
'ab''ab'
aresult
mresult
<=IN1
IN2 Q
<=IN1
IN2 Q
(* 등가의 ST언어: *)
aresult := (10 <= 25); (* aresult 는 TRUE *)
mresult := ('ab' <= 'ab'); (* mresult 는 TRUE *)
(* 등가의 IL언어: *)
LD 10
LE 25
ST aresult
LD 'ab'
LE 'ab'
ST mresult
7.2.9 No.9;<>(같지 않다)
인수:
입력 i1,i2 정수형, 실수형, 문자열형 2개의 입력은 같은 타입
출력 o1 Bool 형 만약, I1 <> I2 라면 TRUE
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
설명:
어떤 변수가 다른 변수와 같은지 비교합니다.
(*"<> " 블록을 채택한 FBD 예*)
1025
'ab''ab'
aresult
mresult
<>IN1
IN2 Q
<>IN1
IN2 Q
(* 등가의 ST언어: *)
aresult := (10 <> 25); (* aresult 는 TRUE *)
mresult := ('ab' <> 'ab'); (* mresult 는 FALSE *)
(* 등가의 IL언어: *)
LD 10
NE 25
ST aresult
LD 'ab'
NE 'ab'
ST mresult
7.2.10 No.10;=(같다)
Page 13
7.2 응용명령(LD블록)
7-9
인수:
입력 i1,i2 정수형, 실수형, 문자열형 2개의 입력과 같은 타입
출력 o1 Bool 형 만약, IN1 = IN2 라면 TRUE
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
설명:
어떤 변수가 다른 변수와 같은지 비교합니다.
(*"Is Equal to" 블록을 채택한 FBD 예*)
1025
'ab''ab'
aresult
mresult
=IN1
IN2 Q
=IN1
IN2 Q
(* 등가의 ST언어: *)
aresult := (10 = 25); (* aresult 는 FALSE *)
mresult := ('ab' = 'ab'); (* mresult 는 TRUE *)
(* 등가의 IL언어: *)
LD 10
EQ 25
ST aresult
LD 'ab'
EQ 'ab'
ST mresult
7.2.11 No.11;>(보다 크다)
인수:
입력 i1,i2 정수형, 실수형, 타이머형, 문자열형 2개는 같은 타입
출력 o1 Bool 형 만약, IN1 > IN2 라면 TRUE
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
설명:
어떤 변수가 다른 변수보다 큰지 비교합니다.
(*">" 블록을 채택한 FBD 예*)
1025
'ab''a'
aresult
mresult
>IN1
IN2 Q
>IN1
IN2 Q
(* 등가의 ST언어: *)
Page 14
7.2 응용명령(LD블록)
7-10
aresult := (10 > 25); (* aresult 는 FALSE *)
mresult := ('ab' > 'a'); (* mresult 는 TRUE *)
(* 등가의 IL언어: *)
LD 10
GT 25
ST aresult
LD 'ab'
GT 'a'
ST mresult
7.2.12 No.12;>=(보다 크거나 같다)
인수:
입력 i1,i2 정수형, 실수형, 문자열형 2개의 입력은 같은 타입
출력 o1 Bool 형 만약, IN1 >= IN2 라면 TRUE
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
설명:
어떤 변수가 다른 변수와 같거나 보다 큰지 비교합니다.
(*">=" 블록을 채택한 FBD 예 *)
1025
'ab''ab'
aresult
mresult
>=IN1
IN2 Q
>=IN1
IN2 Q
(* 등가의 ST언어: *)
aresult := (10 >= 25); (* aresult 는 FALSE *)
mresult := ('ab' >= 'ab'); (* mresult 는 TRUE *)
(* 등가의 IL언어: *)
LD 10
GE 25
ST aresult
LD 'ab'
GE 'ab'
ST mresult
7.2.13 No.13;ANY_TO_BOOL(BOOL 형으로 변환)
인수:
입력 i1 ANY 모든 비정수치
출력 o1 Bool 형 TRUE:0이외의 수치
FALSE:0
TRUE: 'TRUE' 문자열
Page 15
7.2 응용명령(LD블록)
7-11
FALSE: 'FALSE' 문자열
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
설명:
변수를 Bool 형으로 변환합니다.
(* Bool 형 변환 블록을 채택한 FBD 예*)
(* 등가의 ST언어: *)
ares := ANY_TO_BOOL (10); (* ares 는 TRUE *)
tres := ANY_TO_BOOL (t#0s); (* tres 는 FALSE *)
mres := ANY_TO_BOOL ('false'); (* mres 는 FALSE *)
(* 등가의 IL언어: *)
LD 10
ANY_TO_BOOL
ST ares
LD t#0s
ANY_TO_BOOL
ST tres
LD 'false'
ANY_TO_BOOL
ST mres
7.2.14 No.14;ANY_TO_DINT(정수형으로 변환)
인수:
입력 i1 ANY 모든 비정수치
출력 o1 정수형 0 :IN 이 FALSE 일 때,
1 :IN 이 TRUE 일 때
타이머의 ms수치
실수변수위 정수부분
문자열의 10진수표현
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
변수를 정수형으로 변환합니다.
(* 정수형 변환블록을 채택한 FBD 예 *)
Page 16
7.2 응용명령(LD블록)
7-12
(* 등가의 ST언어: *)
bres := ANY_TO_DINT (true); (* bres 는 1 *)
tres := ANY_TO_DINT (t#1s46ms); (* tres 는 1046 *)
mres := ANY_TO_DINT ('0198'); (* mres 는 198 *)
(* 등가의IL언어: *)
LD true
ANY_TO_DINT
ST bres
LD t#1s46ms
ANY_TO_DINT
ST tres
LD '0198'
ANY_TO_DINT
ST mres
7.2.15 No.15;ANY_TO_REAL(실수형으로 변환)
인수:
입력 i1 ANY 모든 비정수치
출력 o1 실수형 0.0 :IN 이 FALSE
1.0 : IN 이 TRUE
타이머의 msec 단위에서의 수치
정수형과 같은수치
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
변수를 실수형으로 변환합니다.
(* 실수형 변환블록을 채택한 FBD 예 *)
(* 등가의ST언어: *)
bres := ANY_TO_REAL (true); (* bres 는 1.0 *)
tres := ANY_TO_REAL (t#1s46ms); (* tres 는 1046.0 *)
ares := ANY_TO_REAL (198); (* ares 는 198.0 *)
Page 17
7.2 응용명령(LD블록)
7-13
(* 등가의IL언어: *)
LD true
ANY_TO_REAL
ST bres
LD t#1s46ms
ANY_TO_REAL
ST tres
LD 198
ANY_TO_REAL
ST ares
7.2.16 No.16;ANY_TO_SINT(단정수형으로 변환)
인수:
입력 i1 ANY 모든 비정수치
출력 o1 실수형 IN 이 FALSE 일 때는 0 / IN 이 TRUE 일 때는 1
타이머의 msec 단위에서의 수치
실수형에서는 정수부분
문자열이 나타내는 10 진수
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
변수를 단정수로 변환합니다. ("단정수로의 변환" 연산자를 채택한 FBD 의 예 *)
(* 등가의ST언어: *)
bres := ANY_TO_SINT (true); (* bres 는 1 *)
tres := ANY_TO_SINT (t#0s46ms); (* tres 는 46 *)
mres := ANY_TO_SINT ('0198'); (* mres 는 198 *)
7.2.17 No.17;ANY_TO_STRING(문자열형으로 변화)
인수:
입력 i1 any 모든 비문자열 수치
출력 o1 문자열형 I1 이 Bool 형일 때 'false' 또는 'true’
I1 이 정수, 실수형일 때 10 진수 표현
설명:
Page 18
7.2 응용명령(LD블록)
7-14
변수를 문자열형으로 변환합니다.
(* 길이가변 문자열형 변환블록을 채택한 FBD 예 *)
(* 등가의ST언어: *)
bres := ANY_TO_STRING (true); (* bres は 'TRUE' *)
ares := ANY_TO_STRING (125); (* ares は '125' *)
(* 등가의IL언어: *)
LD true
ANY_TO_STRING
ST bres
LD 125
ANY_TO_STRING
ST ares
7.2.18 No.18;ANY_TO_TIME(타이머형으로 변환)
인수:
입력 i1 any 모든 비타이머・ 수치
msec 단위의 수치
출력 o1 타이머형 I1 로 표현되는 타이머수치
I1 이 실수일 때는 그 정수 부분
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
정수형, 실수형 변수를 타이머수치로 변환합니다.
(* 타이머형 변환블록을 채택한 FBD 예 *)
(* 등가의 ST언어: *)
ares := ANY_TO_TIME (1256); (* ares := t#1s256ms *)
rres := ANY_TO_TIME (1256.3); (*rres := t#1s256ms *)
(* 등가의 IL언어: *)
LD 1256
ANY_TO_TIME
ST ares
LD 1256.3
ANY_TO_TIME
ST rres
Page 19
7.2 응용명령(LD블록)
7-15
7.2.19 No.19;AND(BOOL 형 AND)
주의: 이 명령의 입력수는 3개 이상으로 변경 가능합니다.
인수:
입력 i1,i2 Bool 형
출력 o1 Bool 형 입력 패러미터의 논리적
설명:
2개 이상의 입력 패러미터의 논리적
(*"AND" 를 블록으로 채택한 FBD 예*)
bi101bi102
bi51bi52bi53
&
&
bo10
bo5
(* 등가의 ST언어: *)
bo10 := bi101 AND NOT (bi102);
bo5 := (bi51 AND bi52) AND bi53;
(* 등가의 IL언어: *)
LD bi101 (* 현재 결과 := bi101 *)
ANDN bi102 (* 현재 결과 := bi101 AND not(bi102) *)
ST bo10 (* bo := 현재 결과 *)
LD bi51 (* 현재 결과 := bi51;
& bi52 (* 현재 결과 := bi51 AND bi52 *)
& bi53 (* 현재 결과 := (bi51 AND bi52) AND bi53 *)
ST bo5 (* bo := 현재 결과 *)
7.2.20 No.20;NOT(BOOL 형 NOT)
인수:
입력 i1 Bool 형
출력 o1 Bool 형 I1 이 FALSE 라면 TRUE, I1 이 TRUE 라면 FALSE
설명:
Bool 형식의 부정을 되돌린다
7.2.21 No.21;OR(BOOL 형 OR)
주의: 이 명령의 입력수는 3개 이상으로 변경 가능합니다.
인수:
Page 20
7.2 응용명령(LD블록)
7-16
입력 i1,i2 Bool 형
출력 o1 Bool 형 입력 패러미터의 논리화
설명:
2개 이상의 입력 패러미터의 논리화
(*"OR" 을 블록으로 채택한 FBD 예 *)
bi101bi102
bi51bi52bi53
>=1
>=1
bo10
bo5
(* 등가의 ST언어: *)
bo10 := bi101 OR NOT (bi102);
bo5 := (bi51 OR bi52) OR bi53;
(* 등가의 IL언어: *)
LD bi101
ORN bi102
ST bo10
LD bi51
OR bi52
OR bi53
ST bo5
7.2.22 No.22;XOR(BOOL 형 Excusive OR)
인수:
입력 i1,i2 Bool 형
출력 o1 Bool 형 2개의 Bool 입력의 배타적 논리화
설명:
2개의 Bool 수치의 배타적 논리화
(*"XOR" 을 블록으로 채택한 FBD 예 *)
bi101bi102
bi51bi52bi53
=1IN1
IN2 Q
=1IN1
IN2 Q
bo10
bo5
=1IN1
IN2 Q
(* 등가의 ST언어: *)
bo10 := bi101 XOR NOT (bi102);
bo5 := (bi51 XOR bi52) XOR bi53;
(* 등가의 IL언어: *)
LD bi101
XORN bi102
ST bo10
LD bi51
XOR bi52
XOR bi53
ST bo5
Page 21
7.2 응용명령(LD블록)
7-17
7.2.23 No.23;TOF(기동멈춤 지연시간) TOF
IN
PT
Q
ET
인수:
IN Bool 형 기동멈춤 검출에서 타이머수치 increment 를 개시
기동 검출에사 타이머수치 정지, 리셋
PT 타이머형 설정 타이머 수치
Q Bool 형 TRUE 일 때, 설정 타이머수치까지 경과하지 않았음
ET 타이머형 현재 경과 타이머수치
설명:
내부 타이머수치를 지정된 수치(PT)까지 increment
타임 챠트:
IN
Q
ET
PT
0
7.2.24 No.24;TON(기동지연시간) TON
IN
PT
Q
ET
인수:
IN Bool 형 기동 검출에서 타이머수치의 increment 를 개시
기동멈춤 검출에서 타이머수치 정지, 리셋
PT 타이머형 타임 업 설정치
Q Bool 형 TRUE 일 때, 타임 업 설정치 경과
ET 타이머형 현재 경과 타이머수치
설명:
내부 타이머수치를 지정된 수치(PT)까지 increment
타임 챠트:
IN
Q
ET
PT
0
7.2.25 No.25;TP(펄스 타이밍)
Page 22
7.2 응용명령(LD블록)
7-18
TPIN
PT
Q
ET
인수:
IN Bool 형 기동 검출에서 타이머수치의 increment 를 개시(increment 중이 아나라면). 만약,
FALSE 상태에서 타이머수치가 설정 타이머수치를 경과했을 때에는 타이머수치를 리셋. 타이머가 increment
중에는 IN 의 변화는 무효가 됩니다.
PT 타이머형 설정 타이머수치
Q Bool 형 TRUE 일 때, 타이머가 increment 중
ET 타이머형 현재 경과 타이머수치
설명:
내부 타이머수치를 지정된 수치(PT)까지 increment
타임 챠트:
IN
Q
ET
PT
0
7.2.26 No.26;F_TRIG(기동멈춤 edge 검출) f_trig
CLK Q
인수:
CLK Bool 형
Q Bool 형 TRUE:CLK 가 TRUE 에서 FALSE 로 기동을 멈추었을 때
FALSE:그 이외의 경우
설명:
Bool 형변수의 기동멈춤을 검출합니다.(1사이클 전의 수치와의 비교를 시행합니다)
(*"F_TRIG" 블록을 채택한 FBD 프로그램 *)
f_trigCLK Qcmd
AnaIN Q
+
nb_edge
(*등가의 ST언어: F_TRIG1 는 F_TRIG 블록의 Instance *) F_TRIG1(cmd);
nb_edge := ANA(F_TRIG1.Q) + nb_edge;
(* 등가의 IL언어: *)
LD cmd
ST F_TRIG1.clk
CAL F_TRIG1
LD F_TRIG1.Q
Page 23
7.2 응용명령(LD블록)
7-19
ANA
ADD nb_edge
ST nb_edge
7.2.27 No.27;R_TRIG(기동 edge 검출) r_trig
CLK Q
인수:
CLK Bool 형
Q Bool 형 TRUE : CLK 이 FALSE 에서 が TRUE 로 기동했을 때
FALSE:그 이외의 경우
설명:
Bool 형변수의 기동을 검출합니다.(1사이클 전의 수치와의 비교를 시행합니다)
(*"R_TRIG" 블록을 채택한 FBD 프로그램 *) r_trig
CLK QcmdAna
IN Q
+
nb_edge
(*등가의 ST언어: R_TRIG1 は R_TRIG 블록의 Instance *) R_TRIG1(cmd);
nb_edge := ANA(R_TRIG1.Q) + nb_edge;
(* 등가의 IL언어: *)
LD cmd
ST R_TRIG1.clk
CAL R_TRIG1
LD R_TRIG1.Q
ANA
ADD nb_edge
ST nb_edge
7.2.28 No.28;RS(RS flip-flop) RS
SET
RESET1 Q1
인수:
SET Bool 형 TRUE 라면 Q1 을 TRUE 로 리셋합니다.
RESET1 Bool 형 TRUE 에서 Q1 을 FALSE 로 리셋합니다.(우선)
Q1 Bool 형 Bool 형 메모리 상태
설명:
리셋 우선 쌍안정:이하의 표 참조
Set Reset1 Q1 result Q1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 0
Page 24
7.2 응용명령(LD블록)
7-20
(*"RS" 블록을 채택한 FBD 프로그램 *) RS
SET
RESET Q1
alarm
start_cmd
stop_cmdcommand>=1
(*등가의 ST언어: RS1 은 RS 블록의 Instance *) RS1(start_cmd, (stop_cmd OR alarm));
command := RS1.Q1;
(* 등가의 IL언어: *)
LD start_cmd
ST RS1.set
LD stop_cmd
OR alarm
ST RS1.reset1
CAL RS1
LD RS1.Q1
ST command
7.2.29 No.29;SR(SR flip-flop) SR
SET1
RESET Q1
인수:
SET1 Bool 형 TRUE 라면 Q1 을 TRUE 로 세트합니다 (우선)
RESET Bool 형 TRUE 라면 Q1 을 FALSE 로 리셋합니다.
Q1 Bool 형 Bool 형의 메모리 상태
설명:
세트 우선 쌍안정:이하의 표 참조
Set1 Reset Q1 result Q1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1
(*"SR" 블록을 채택한 FBD 프로그램 *)
SRSET1
RESET Q1
auto_modestart_cmdstop_cmd command
&
(*등가의 ST언어: SR1 은 SR 블록의 Instance *) SR1((auto_mode & start_cmd), stop_cmd);
command := SR1.Q1;
(* 등가의 IL언어: *)
LD auto_mode
AND start_cmd
ST SR1.set1
LD stop_cmd
ST SR1.reset
CAL SR1
LD SR1.Q1
ST command
Page 25
7.2 응용명령(LD블록)
7-21
7.2.30 No.30;CTD(카운트 다운) CTD
CD
LOAD
PV
Q
CV
인수:
CD Bool 형 카운트 입력
(CD 가 TRUE 일 때 카운트 다운)
LOAD Bool 형 로드 Command (우선)
(LOAD 가 TRUE 일 때 CV = PV 가 됩니다)
PV 정수형 카운터의 초기치
Q Bool 형 Underflow: CV = 0 로 TRUE
CV 정수형 카운터 결과
주의:
CTD는 입력 CD의 기동, 기동멈춤을 검출하지 않습니다. 반드시 "R_TRIG" 혹은 "F_TRIG" 을
사용해서 펄스 카운터를 만들 필요가 있습니다.
설명:
카운트수(정수형)는 PV 수치에서 1 씩 0까지 감소
(*"CTD" 블록을 채택한 FBD 프로그램 *) CTD
CD
LOAD
PV
Q
CV
commandload_cmd
100underflow
result
f_trigCLK Q
(*등가의 ST언어: F_TRIG1 은 F_TRIG 블록의 Instance, CTD1 은 CTD 블록의 Instance *) CTD1(F_TRIG1(command),load_cmd,100);
underflow := CTD1.Q;
result := CTD1.CV;
(* 등가의 IL언어: *)
LD command
ST F_TRIG1.clk
CAL F_TRIG1
LD F_TRIG1.Q
ST CTD1.cd
LD load_cmd
ST CTD1.load
LD 100
ST CTD1.pv
CAL CTD1
LD CTD1.Q
ST underflow
LD CTD1.cv
ST result
7.2.31 No.31;CTU(카운트 업) CTU
CU
RESET
PV
Q
CV
인수:
CU Bool 형 카운트 입력 ( CU 가 TRUE 로 카운트)
RESET Bool 형 리셋 Command(우선)
Page 26
7.2 응용명령(LD블록)
7-22
PV 정수형 최대 카운트 수치
Q Bool 형 Overflow: CV = PV 로 TRUE
CV 정수형 현재의 카운트 결과
주의:
CTU는 입력CU의 기동, 기동멈춤을 검출하지 않습니다. 반드시 "R_TRIG" 또는 "F_TRIG" 을
사용해서 펄스 카운터를 만들 필요가 있습니다.
설명:
카운트 수(정수형)는 0에서 1씩 증가
(*"CTU"블록을 채택한 FBD 프로그램 *) CTU
CU
RESET
PV
Q
CV
commandauto_mode
100overflow
result
r_trigCLK Q
(*등가의 ST언어: R_TRIG1 은 R_TRIG 블록의 Instance, CTU1 은 CTU 블록의 Instance *) CTU1(R_TRIG1(command),NOT(auto_mode),100);
overflow := CTU1.Q;
result := CTU1.CV;
(* 등가의 IL언어: *)
LD command
ST R_TRIG1.clk
CAL R_TRIG1
LD R_TRIG1.Q
ST CTU1.cu
LDN auto_mode
ST CTU1.reset
LD 100
ST CTU1.pv
CAL CTU1
LD CTU1.Q
ST overflow
LD CTU1.cv
ST result
7.2.32 No.32;CTUD(상하 카운터)
인수:
CU Bool 형 업 카운터 입력 (CU 가 TRUE 로 카운트)
CD Bool 형 다운 카운터 입력 (CD 가 TRUE 로 카운트)
RESET Bool 형 리셋 Command (우선)
(RESET 이 TRUE 일 때 CV = 0)
LOAD Bool 형 로드 Command (LOAD 가 TRUE 일 때 CV = PV)
PV 정수형 최대 카운트 수치
QU Bool 형 Overflow : CV = PV 일 때 TRUE
QD Bool 형 Underflow: CV = 0 일 때 TRUE
CV 정수형 카운트 결과
Page 27
7.2 응용명령(LD블록)
7-23
주의:
CTUD는 입력 CU, CD의 기동, 기동멈춤을 검출하지 않습니다. 반드시 "R_TRIG" 혹은 "F_TRIG"
을 사용해서 펄스 카운터를 만들 필요가 있습니다.
설명:
카운트수(정수형)는 0에서 PV 수치까지 1씩 증가, 혹은,
현재수치에서 1씩 0까지 감소.
(*"CTUD" 블록을 채택한 FBD 프로그램 *)
CTUDCU
CD
RESET
LOAD
PV
QU
QD
CV
add_elt
sub_eltreset_cmdload_cmd
100
fullemptynb_elt
r_trigCLK Q
r_trigCLK Q
(*등가의 ST언어: R_TRIG1 과 R_TRIG2 는 R_TRIG 블록의 Instance, CTUD1 은 CTUD 블록의 Instance *) CTUD1(R_TRIG1(add_elt), R_TRIG2(sub_elt), reset_cmd, load_cmd,100);
full := CTUD1.QU;
empty := CTUD1.QD;
nb_elt := CTUD1.CV;
(* 등가의 IL언어: *)
LD add_elt
ST R_TRIG1.clk
CAL R_TRIG1
LD R_TRIG1.Q
ST CTUD1.cu
LD sub_elt
ST R_TRIG2.clk
CAL R_TRIG2
LD R_TRIG2.Q
ST CTUD1.cd
LD load_cmd
ST CTUD1.load
LD 100
ST CTUD1.pv
CAL CTUD1
LD CTUD1.QU
ST full
LD CTUD1.QD
ST empty
LD CTUD1.CV
ST nb_elt
7.2.33 No.33;AVERAGE(N 샘플의 평균) average
RUN
XIN
N XOUT
인수:
RUN Bool 형 TRUE:실행 / FALSE:리셋
XIN 실수형 실수치 입력
N 정수형 평균을 취해야 할 샘플 수(매 사이클 1 입력)
XOUT 실수형 XIN 수치의 샘플 갯수(N 개)의 이동평균치
설명:
Page 28
7.2 응용명령(LD블록)
7-24
매 사이클 XIN 을 읽어들여, 과거의 사이클 수치(샘플 수 N)의 평균값을 구합니다. 최신의 N 개
데이타가 축적되고 있습니다.
샘플 수 N은 최대128까지 입니다. "RUN" Command가 FALSE일 때(리셋모드), 출력치는 입력치와 같은
수치가 됩니다.
축적된 샘플수가 N 이 되면, 최초로 축적된 수치는 삭제됩니다.
(*"AVERAGE" 블록을 채택한 FBD 프로그램*)
auto_modestore_cmd
sensor_value100 ave_value
&average
RUN
XIN
N XOUT
(*등가의 ST언어:AVERAGE1 은 AVERAGE 블록의 Instance *) AVERAGE1((auto_mode & store_cmd), sensor_value, 100) ;
ave_value := AVERAGE1.XOUT;
(* 등가의 IL언어: *)
LD auto_mode
AND store_cmd
ST AVERAGE1.run
LD sensor_value
ST AVERAGE1.xin
LD 100
ST AVERAGE1.N
CAL AVERAGE1
LD AVERAGE1.XOUT
ST ave_value
7.2.34 No.34;DERIVATE(시간축 상의 미분) derivate
RUN
XIN
CYCLE XOUT
인수:
RUN Bool 형 모드,TRUE=미분 실행 / FALSE=리셋
XIN 실수형 입력치
CYCLE 타이머형 샘플링 주기
XOUT 실수형 미분 결과
설명:
실수치의 미분을 시행합니다.
"CYCLE"패러미터 수치가 ISaGRAF의 사이클 타임보다도 짧을 경우에 샘플링 간격은 사이클
타임에 맞추어집니다.
(*"DERIVATE" 블록을 채택한 FBD 프로그램 *)
manual_modesensor_value
t#100ms derivated_value
derivateRUN
XIN
CYCLE XOUT
(*등가의 ST언어: DERIVATE1 은 DERIVATE 블록의 Instance *) DERIVATE1(manual_mode, sensor_value, t#100ms);
derivated_value := DERIVATE1.XOUT;
(* 등가의 IL언어: *)
LD manual_mode
ST DERIVATE1.run
LD sensor_value
Page 29
7.2 응용명령(LD블록)
7-25
ST DERIVATE1.XIN
LD t#100ms
ST DERIVATE1.CYCLE
CAL DERIVATE1
LD DERIVATE1.XOUT
ST derivated_value
7.2.35 No.35;HYSTER(2 개의 실수치의 hysteresis 의 bool 형 수치) hyster
XIN1
XIN2
EPS Q
인수:
XIN1 실수형 실수
XIN2 실수형 실수(XIN1 이 XIN2+EPS 를 넘었는지 테스트한다)
EPS 실수형 Hysteresis 수치(>0)
Q Bool 형 XIN1 이 XIN2+EPS 를 넘고, 아직, XIN2-EPS 을 밑돌고 있지 않을 때, TRUE
설명:
실수치의 상한치를 위한 Hysteresis
타임 차트 예:
Q
XIN1
XIN2XIN2+EPS
XIN2-EPS
7.2.36 No.36;INTEGRAL(시간축 상의 적분) integral
RUN
R1
XIN
X0
CYCLE
Q
XOUT
인수:
RUN Bool 형 모드, TRUE=적분 / FALSE=홀드
R1 Bool 형 덮어쓰기 리셋
XIN 실수형 입력치
X0 실수형 초기치
CYCLE 타이머형 샘플링 주기
Q Bool 형 R1 의 반전
XOUT 실수형 적분 결과
설명:
실수치를 적분합니다.
지정한 샘플링 주기마다 입력(XIN)된 수치에, 저번에 샘플하고나서 경과한 시간(ms 단위)을 곱한
것을 저번의 출력에 더해서, XOUT 에서 출력합니다. "CYCLE" 패러미터 수치가 ISaGRAF의 사이클
타임보다도 짧은 경우에는 샘플링 간격은 사이클 타임에 맞추어집니다.
(*"INTEGRAL" 블록을 채택한 FBD 프로그램 *)
Page 30
7.2 응용명령(LD블록)
7-26
manual_mode
sensor_valueinit_valuet#100ms controlled_value
integralRUN
R1
XIN
X0
CYCLE
Q
XOUT
(*등가의 ST언어: INTEGRAL1 은 INTEGRAL 블록의 Instance *) INTEGRAL1(manual_mode, NOT(manual_mode), sensor_value, init_value, t#100ms);
controlled_value := INTEGRAL1.XOUT;
(* 등가의 IL언어: *)
LD manual_mode
ST INTEGRAL1.run
STN INTEGRAL1.R1
LD sensor_value
ST INTEGRAL1.XIN
LD init_value
ST INTEGRAL1.X0
LD t#100ms
ST INTEGRAL1.CYCLE
CAL INTEGRAL1
LD INTEGRAL1.XOUT
ST controlled_value
7.2.37 No.37;LIM_ALRM(hysteresis 를 가진 상하한 알람) lim_alrm
H
X
L
EPS
QH
Q
QL
인수:
H 실수형 상한 설정치
X 실수형 입력치
L 실수형 하한 설정치
EPS 실수형 Hysteresis 수치 ( >0)
QH Bool 형 상한 알람:X 가 상한치 H 를 넘었을 경우 TRUE
Q Bool 형 알람:상하현을 넘었을 경우, TRUE
QL Bool 형 하한 알람:X 가 하한치 L 을 밑돌고 있을 경우, TRUE
설명:
실수치에서 상하한에 대한 Hysteresis。
Hysteresis 가 상한, 하한 리미트에 주어집니다. 상한, 하한에 사용되는 Hysteresis 델타량은 EPS
패러미터의 반정도가 됩니다.
타임 챠트 :
XH - EPS
H
Q
LL + EPS
QL
QH
7.2.38 No.38;BLINK(Blink Bool 형 신호)
Page 31
7.2 응용명령(LD블록)
7-27
blinkRUN
CYCLE Q
인수:
RUN Bool 형 모드, TRUE= Blink / FALSE=출력을 리셋
CYCLE 타이머형 Blink 주기
Q Bool 형 Blink 의 출력신호
설명:
Blink 신호를 생성합니다.
타임 챠트:
RUN
Q
CYCLE
7.2.39 No.39;SIG_GEN(사인 신호 발생기) sig_gen
RUN
PERIOD
MAXIMUM
PULSE
UP
END
SINE
인수:
RUN Bool 형 모드 TRUE=실행 / FALSE=FALSE 로 리셋
PERIOD 타이머형 1샘플의 시간(펄스의 폭)
MAXIMUM 정수형 최대 카운트 수치
PULSE Bool 형 1샘플 시간마다 반전합니다.
UP 정수형 1샘플 시간 마다의 업 카운터
END Bool 형 업 카운터의 종료시, TRUE
SINE 실수형 정현파형신호(파형 반주기는 업 카운트 시간)
설명:
각종 신호를 동시 발생합니다.(Bool 형 구형, 정수형 업 카운터, 실수형 정현파)。
카운터는 최대치에 달하면, 0에서 리스타트 합니다. END 신호는 1PERIOD 분의 시간만큼 TRUE 가 됩니다.
타임 챠트:
RUN
PULSE
PERIOD
UP
MAXIMUM
END
SINE
7.2.40 No.40;CMP(비교 function 블록) CMP
VAL1
VAL2
LT
EQ
GT
Page 32
7.2 응용명령(LD블록)
7-28
인수:
VAL1 정수형 부호 붙인 정수
VAL2 정수형 부호 붙인 정수
LT Bool 형 VAL1 < VAL2 일 때 TRUE
EQ Bool 형 VAL1 = VAL2 일 때 TRUE
GT Bool 형 VAL1 > VAL2 일 때 TRUE
설명:
2개의 정수형의 수치를 비교합니다. 3개의 결과중 하나를 취합니다.(<、=、>)
(*"CMP" 블록을 채택한 FBD 프로그램 *)
levelmax_level
pump_cmd
alarmmanual_mode
CMP
VAL1
VAL2
LT
EQ
GT
>=1
&
(*등가의 ST언어: CMP1 은 CMP 블록의 Instance 명 *)
CMP1(level, max_level);
pump_cmd := CMP1.LT OR CMP1.EQ;
alarm := CMP1.GT AND NOT(manual_mode);
(* 등가의 IL언어: *)
LD level
ST CMP1.val1
LD max_level
ST CMP1.val2
CAL CMP1
LD CMP1.LT
OR CMP1.EQ
ST pump_cmd
LD CMP1.GT
ANDN manual_mode
ST alarm
7.2.41 No.41;STACKINT(정수 Stack) stackint
PUSH
POP
R1
IN
N
EMPTY
OFLO
OUT
인수:
PUSH Bool 형 Push Command:기동검출에 의해, IN 수치를 Stack 의 Top 으로 추가
POP Bool 형 Pop Command :기동검출에 의해, Stack 의 선두(최후에 Push 된 수치)를 삭제
R1 Bool 형 Stack 을 빈 상태로 리셋한다
IN 정수형 Push 할 수치
N 정수형 Stack Size
EMPTY Bool 형 Stack 이 비었을 때 TRUE
OFLO Bool 형 Overflow:Stack 이 꽉 찼을 때 TRUE
OUT 정수형 Stack 의 선두에 있는 수치
설명:
정수형 수치의 Stack を 관리합니다.
STACKINTfunction 블록은, PUSH, POP 두가지 입력에 대해 기동을 검출합니다.
최대의 Stack Size 는 128입니다. Stack Size N은 1에서 128의 사이여야만 합니다.
Page 33
7.2 응용명령(LD블록)
7-29
OFLO수치는 일단 리셋된 다음에만 유효합니다.(다시 말해, R1은 한번은 TRUE로 세트한 다음에 FALSE로
돌려놓을 필요가 있습니다)
(*"STACKINT" 블록을 채택한 FBD 프로그램 : 에러 관리 *)
err_detectacknoledge
manual_modeerr_codemax_err
stackintPUSH
POP
R1
IN
N
EMPTY
OFLO
OUT
auto_mode
err_alarmappli_alarm
last_error
&
(*등가의 ST언어: STACKINT1 은 STACKINT 블록의 Instance *)
STACKINT1(err_detect, acknoledge, manual_mode, err_code, max_err);
appli_alarm := auto_mode AND NOT(STACKINT1.EMPTY);
err_alarm := STACKINT1.OFLO;
last_error := STACKINT1.OUT;
(* 등가의 IL언어: *)
LD err_detect
ST STACKINT1.push
LD acknoledge
ST STACKINT1.pop
LD manual_mode
ST STACKINT1.r1
LD err_code
ST STACKINT1.IN
LD max_err
ST STACKINT1.N
CAL STACKINT1
LD auto_mode
ANDN STACKINT1.empty
ST appli_alarm
LD STACKINT1.OFLO
ST err_alarm
LD STACKINT1.OUT
ST last_error
7.2.42 No.42;CONNECT(리소스에의 접속) 현재, 이용할 수 없습니다.
인수:
EN_C BOOL 접속을 가능하게 한다
PARTNER STRING 리모트의 통신 파트너의 이름
VALID BOOL TRUE 일 경우, 접속 ID 는 유효
ERROR BOOL TRUE 일 경우, 신규의 제로가 아닌 스테이터스를 수신
STATUS DINT 마지막에 검출한 스테이터스
ID DINT 통신 채널의 식별자(ID)
설명:
(현재의 프로젝트 또는 다른 프로젝트의)리모트 또는 로컬의 리소스와의 접속을 시행, USEND_S 블록과
URCV_S 블록에 의한 교환을 관리합니다.
이에 따라, 통신 채널 식별자(ID)가 작성됩니다.
이 식별자는, 다른 모든 통신 function 블록(URCV_S 또는 USEND_S)에서 필요해집니다.
Page 34
7.2 응용명령(LD블록)
7-30
7.2.43 No.43;URCV_S(리소스 메세지 송신) 현재, 이용할 수 없습니다.
인수:
EN_R BOOL 데이타의 수신을 가능하게 한다 ID DINT 통신 채널의 식별자 R_ID STRING 채널내의 리모트 SFB 의 식별자 NDR BOOL TRUE 인 경우에는, 신규 문자열을 RD 에 수신 ERROR BOOL TRUE 인 경우에는, 신규의 제로가 아닌 STATUS 를 수신 STATUS DINT 마지막으로 검출한 스테이터스 RD STRING 수신한 문자열 설명:
현재의 프로젝트 또는 다른 프로젝트의)리모트 또는 로컬의 리소스로부터 문자열을 수신합니다. 주: 현재의 사이클에서, "URCV_S" 가 콜되기 전에 "Connect" 블록을 콜해 둘 필요가 있습니다. 이 function 블록은, 1 개의 USEND_SInstance 로부터 문자열을 수신합니다. 이 때, 전에 수신한 문자열은
덮어쓰기 됩니다. 문자열을 정상적으로 수신하면, NDR 은 1 사이클 간 TRUE 로 설정됩니다. 에러가 발생하면, 출력 패러미터 ERROR 는 TRUE 가 되고, 스테이터스가 STATUS 패러미터에 설정됩니다.
7.2.44 No.44;USEND_S(리소스로부터 메세지 수신) 현재, 이용할 수 없습니다.
인수:
REQ BOOL 기동 edge 에서 요구를 송신 ID DINT 통신 채널의 식별자 R_ID STRING 채널내의 리모트 CFB 의 식별자 SD STRING 송신할 문자열 DONE BOOL TRUE 일 경우에는, 정상 종료 ERROR BOOL TRUE 일 경우에는, 신규의 제로가 아닌 STATUS 를 수신 STATUS DINT 마지막에 검출한 스테이터스 설명: 현재의 프로젝트 또는 다른 프로젝트의)리모트 또는 로컬의 리소스에 문자열을 송신합니다. 주: 현재의 사이클에서, "USEND_S" 가 콜 되기 전에 "Connect" 블록을 콜해 둘 필요가 있습니다. 이 CFB 는, REQ 의 기동 edge 에서 1 개의 URCV_SInstance 에 문자열을 송신합니다. 문자열이
정상적으로 송신되면, DONE 이 설정됩니다. 에러가 발생하면, 출력패러미터 ERROR 는 TRUE 가 되고,
스테이터스가 STATUS 패러미터에 설정됩니다.
Page 35
7.2 응용명령(LD블록)
7-31
7.2.45 No.45;LIMIT(제한치)
인수:
MIN 정수형 최소치설정치
IN 정수형 정수입력치
MAX 정수형 최대치설정치
Q 정수형 입력치를 최대, 최소치의 범위내로 받아들인 것
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
입력치에 상하한을 만듭니다. 입력치가 최대치와 최소치의 중간일 때는 입력치인 그대로. 최대치를
넘었을 때는 최대치로, 최소치를 밑돌때는 최소치가 됩니다.
(*"LIMIT" 블록을 채택한 FBD 프로그램 *)
min_valuevalue
max_value new_value
limitMIN
IN
MAX Q
(*등가의 ST언어:*)
new_value := LIMIT (min_value, value, max_value);
(* 수치를 min_value~max_value 의 범위로 받아들인다 *)
(* 등가의 IL언어: *)
LD min_value
LIMIT value, max_value
ST new_value
7.2.46 No.46;MAX(최대치)
인수:
IN1 정수형 정수치
IN2 정수형 정수치
Q 정수형 2개의 입력의 최대치
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
2개의 정수치의 최대치
(*"MIN" 과 "MAX" 블록을 채택한 FBD 프로그램 *)
Page 36
7.2 응용명령(LD블록)
7-32
max_valuevalue
min_value
minIN1
IN2 Q
maxIN1
IN2 Q new_value
(*등가의 ST언어:*)
new_value := MAX (MIN (max_value, value), min_value);
(* 수치를 min_value~max_value 의 범위로 받아들인다. *)
(* 등가의 IL언어: *)
LD max_value
MIN value
MAX min_value
ST new_value
7.2.47 No.47;MIN(최소치)
인수:
IN1 정수형 정수치
IN2 정수형 정수치
Q 정수형 2개의 입력의 최소치
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
2개의 정수치의 최소치를 줍니다.
(*"MIN" 과 "MAX" 블록을 채택한 FBD 프로그램 *)
max_valuevalue
min_value
minIN1
IN2 Q
maxIN1
IN2 Q new_value
(*등가의 ST언어:*)
new_value := MAX (MIN (max_value, value), min_value);
(* 수치를 min_value~max_value 의 범위로 받아들인다 *)
(* 등가의 IL언어: *)
LD max_value
MIN value
MAX min_value
ST new_value
7.2.48 No.48;MOD(잉여산)
Page 37
7.2 응용명령(LD블록)
7-33
인수:
IN 정수형 입력치
Base 정수형 입력치(0보다 큰 수치)
Q 정수형 잉여산의 계산결과
Base <= 0 일 때, -1
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
정수치의 잉여를 계산합니다.
(*"MOD" 블록을 채택한 FBD 프로그램 *)
valuedivider division_result
rest_of_division
/IN1
IN2 Q
modIN
Base Q
(*등가의 ST언어:*)
division_result := (value / divider); (* 정수의 나눗셈*)
rest_of_division := MOD (value, divider); (* 나머지*)
(* 등가의 IL언어: *)
LD value
DIV divider
ST division_result
LD value
MOD divider
ST rest_of_division
7.2.49 No.49;MUX4(Multiplexer4)
인수:
SEL 정수형 Select 입력치 [0~3]
IN1..IN4 정수형 입력치
Q 정수형 = SEL = 0 일 때 IN1
= SEL = 1 일 때 IN2
= SEL = 2 일 때 IN3
= SEL = 3 일 때 IN4
= SEL 이 상기 이외일 경우 0
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
4점 입력용 Multiplexer:4개의 정수입력치 중에서 1개를 선택합니다.
(*"MUX4" 블록을 채택한 FBD 프로그램 *)
Page 38
7.2 응용명령(LD블록)
7-34
choice1
10100
1000
mux4SEL
IN1
IN2
IN3
IN4 Q range
(*등가의 ST언어:*)
range := MUX4 (choice, 1, 10, 100, 1000);
(* 4개의 입력으로부터 1개를 선택한다. Choice 이 1 일 때에는 range 는 10 *)
(* 등가의 IL언어: *)
LD choice
MUX4 1,10,100,1000
ST range
7.2.50 No.50;MUX8(Multiplexer 8)
인수:
SEL 정수형 Select 입력치 [0~7]
IN1..IN8 정수형 입력치
Q 정수형 = SEL = 0 일 때 IN1
= SEL = 1 일 때 IN2
= SEL = 2 일 때 IN3
.....
= SEL = 7 일 때 IN8
= SEL 이 상기 이외일 경우 0
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
8점 입력용 Multiplexer:8개의 정수입력치 중에서 1개를 선택합니다.
(*"MUX8" 블록을 채택한 FBD 프로그램 *)
choice15
1050
100500
10005000
mux8SEL
IN1
IN2
IN3
IN4
IN5
IN6
IN7
IN8 Q range
(*등가의 ST언어:*)
Page 39
7.2 응용명령(LD블록)
7-35
range := MUX8 (choice, 1, 5, 10, 50, 100, 500, 1000, 5000);
(* 8개의 입력에서 1개를 선택한다. Choice 가 3 일 때는 range 는 50 *)
(* 등가의 IL언어: *)
LD choice
MUX8 1,5,10,50,100,500,1000,5000
ST range
7.2.51 No.51;ODD(홀수 Parity)
인수:
IN 정수형 정수입력
Q Bool 형 TRUE:입력치가 홀수일 때
FALSE:입력치가 짝수일 때
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
설명:
정수치의 Parity Check:홀수인지 짝수인지를 판단합니다.
(*"ODD" 블록을 채택한 FBD 프로그램 *)
value
1
oddIN Q RETURN
+
value
(*등가의 ST언어:*)
If Not (ODD (value)) Then Return; End_if;
value := value + 1;
(* value 는 항상 짝수*)
(* 등가의 IL언어: *)
LD value
ODD
RETNC
LD value
ADD 1
ST value
7.2.52 No.52;RAND(랜덤 수치)
인수:
base 정수형 랜덤 수치의 최대치
Q 정수형 [0~base-1] 의 랜덤 수치
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
정수치로 지정한 범위의 랜덤 수치를 줍니다.
Page 40
7.2 응용명령(LD블록)
7-36
(*"RAND" 블록을 채택한 FBD 프로그램 *)
4148
16
randbase Q
mux4SEL
IN1
IN2
IN3
IN4 Q selected
(*등가의 ST언어:*)
selected := MUX4 ( RAND (4), 1, 4, 8, 16 );
(*
발생하는 랜덤 수치에 따라, 4개의 입력으로부터 1개를 임의로 선택한다.
RAND 으로 발생되는 수치는 [0~3]. 결과로써 MUX4 의 'selected' 로는 이하의 출력이 나옵니다.
1: RAND 출력이 0,
4: RAND 출력이 1
8: RAND 출력이 2
16: RAND 출력이 3
*)
(* 등가의 IL언어: *)
LD 4
RAND
MUX4 1,4,8,16
ST selected
7.2.53 No.53;SEL(Binary Selector)
인수:
SEL Bool 형 선택용
IN1, IN2 정수형 정수치
Q 정수형 = IN1: SEL 이 FALSE 일 때
= IN2: SEL 이 TRUE 일 때
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
Binary 선택:2개의 정수치로부터 1개를 선택합니다.
(*"SEL" 블록을 채택한 FBD 프로그램 *)
AutoModeManuCmdInpCmd
selSEL
IN1
IN2 Q ProCmd
(*등가의 ST언어:*)
ProcCmd := SEL (AutoMode, ManuCmd, InpCmd);
(* 처리한다 Command 를 선택 *)
(* 등가의 IL언어: *)
LD AutoMode
SEL ManuCmd,InpCmd
ST ProCmd
7.2.54 No.54;ASCII(문자 → ASCII 코드)
Page 41
7.2 응용명령(LD블록)
7-37
인수:
IN 문자열형 비어있지 않은 문자열
Pos 정수형 변환할 문자의 문자열 안의 위치
[1~ len] (len 은 문자열 IN 의 길이)
Code 정수형 선택한 문자의 ASCII 코드
[0 ~ 255]
Pos 가 문자열 길이를 넘었을 경우, 0
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
문자열 안에서 지정된 문자에 대해 ASCII 코드를 줍니다.
(*"ASCII" 블록을 채택한 FBD 프로그램 *)
message1
asciiIN
Pos Code FirstChr
(*등가의 ST언어:*)
FirstChr := ASCII (message, 1);
(* FirstChr 은 문자열의 1문자째의 ASCII 코드*)
(* 등가의 IL언어: *)
LD message
ASCII 1
ST FirstChr
7.2.55 No.55;CHAR(ASCII 코드 → 문자)
인수:
Code 정수형 ASCII 코드 [0 ~ 255]
Q 문자열형 1문자의 문자열。
문자는 ASCII 코드(Code)에 대응하는 것이 됩니다. ASCII 코드는 256 으로 나눈
나머지를 사용합니다.
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
주어진 ASCII 코드에 대응하는 문자를 줍니다.
(*"CHAR" 블록을 채택한 FBD 프로그램 *)
value48
charCode Q
+
Display
(*등가의 ST언어:*)
Display := CHAR ( value + 48 );
(* value 는 0~9 *)
(* 48 은 ’0’의 ASCII 코드*)
Page 42
7.2 응용명령(LD블록)
7-38
(* 결과는 '0' ~ '9'의 문자가 됩니다 *)
(* 등가의 IL언어: *)
LD value
ADD 48
CHAR
ST Display
7.2.56 No.56;ROL(좌순환)
인수:
IN 정수형 정수치
NbR 정수형 회전시키는 비트수 [1~31]
Q 정수형 좌회전한 결과
nb_rotation <= 0 일 때, 변화없음
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
정수치의 비트 좌회전. 회전은 32비트로 시행됩니다.
31 0
(*"ROL" 블록을 채택한 FBD 프로그램 *)
register1 result
rolIN
NbR Q
(*등가의 ST언어:*)
result := ROL (register, 1);
(* register = 2#0100_1101_0011_0101*)
(* result = 2#1001_1010_0110_1010*)
(* 등가의 IL언어: *)
LD register
ROL 1
ST result
7.2.57 No.57;ROR(우순환)
인수:
IN 정수형 정수치
NbR 정수형 회전시키는 비트수 [1~31]
Q 정수형 회전한 결과
Page 43
7.2 응용명령(LD블록)
7-39
nb_rotation <= 0 일 때, 변화 없음
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
정수치의 비트우회전. 회전은 32비트로 시행됩니다.
31 0
(*"ROR" 블록을 채택한 FBD 프로그램 *)
register1 result
rorIN
NbR Q
(*등가의 ST언어:*)
result := ROR (register, 1);
(* register = 2#0100_1101_0011_0101 *)
(* result = 2#1010_0110_1001_1010 *)
(* 등가의 IL언어: *)
LD register
ROR 1
ST result
7.2.58 No.58;SHL(좌 시프트)
인수:
IN 정수형 정수치
NbS 정수형 비트 시프트수 [1~31]
Q 정수형 좌 시프트한 결과
nb_shift <= 0 일 때, 변화없음.
최하위 비트에는 0 이 삽입됩니다.
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
정수치의 비트 표현으로 좌 시프트를 시행합니다. 32비트 단위에서 시행합니다.
0
(*"SHL" 블록을 채택한 FBD 프로그램 *)
register1 result
shlIN
NbS Q
(*등가의 ST언어:*)
result := SHL (register,1);
(* register = 2#0100_1101_0011_0101 *)
(* result = 2#1001_1010_0110_1010 *)
(* 등가의 IL언어: *)
Page 44
7.2 응용명령(LD블록)
7-40
LD register
SHL 1
ST result
7.2.59 No.59;SHR(우 시프트)
인수:
IN 정수형 정수치
NbS 정수형 비트 시프트 수치 [1~31]
Q 정수형 좌 시프트한 결과
nb_shift <= 0 일 때, 변화 없음.
최상위 비트는 변화하지 않습니다.
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록의 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
정수치의 비트 표현으로 좌 시프트를 시행합니다. 32비트단위로 시행합니다.
031
(*"SHR" 블록을 채택한 FBD 프로그램 *)
register1 result
shrIN
NbS Q
(*등가의 ST언어:*)
result := SHR (register,1);
(* register = 2#1100_1101_0011_0101 *)
(* result = 2#1110_0110_1001_1010 *)
(* 등가의 IL언어: *)
LD register
SHR 1
ST result
7.2.60 No.60;ACOS(아크 코사인)
인수:
IN 실수형 -1.0 ~ +1.0 이어야만 합니다.
Q 실수형 입력치의 아크 코사인[0.0~π]
= 0.0 :부정한 입력치일 때
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
실수치의 아크 코사인을 계산합니다.
Page 45
7.2 응용명령(LD블록)
7-41
(*"COS" 과 "ACOS"블록을 채택한 FBD 프로그램 *)
anglecos
IN Q cosine
acosIN Q result
(*등가의 ST언어:*)
cosine := COS (angle);
result := ACOS (cosine); (* result 는 angle 과 같다 *)
(* 등가의 IL언어: *)
LD angle
COS
ST cosine
ACOS
ST result
7.2.61 No.61;ASIN(아크 사인)
인수:
IN 실수형 -1.0 ~ +1.0 이어야만 합니다
Q 실수형 입력치의 아크 코사인 [-π/2~+π/2]
= 0.0 :부정한 입력치일 때
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
실수치의 아크 사인을 계산합니다.
(*"SIN" 과 "ASIN" 블록을 채택한 FBD 프로그램 *)
anglesin
IN Q sine
asinIN Q result
(*등가의 ST언어:*)
sine := SIN (angle);
result := ASIN (sine); (* result 는 angle 과 같다 *)
(* 등가의 IL언어: *)
LD angle
SIN
ST sine
ASIN
ST result
7.2.62 No.62;ATAN(아크 탄젠트)
인수:
IN 실수형 실수치
Page 46
7.2 응용명령(LD블록)
7-42
Q 실수형 입력치의 아크 탄젠트[-π/2~+π/2]
= 0.0:부정한 입력치일 때
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
실수치의 아크 탄젠트를 계산합니다.
(*"TAN" 와 "ATAN" 블록을 채택한 FBD 프로그램 *)
angletan
IN Q tangent
atanIN Q result
(*등가의 ST언어:*)
tangent := TAN (angle);
result := ATAN (tangent); (* result 는 angle 과 같다 *)
(* 등가의 IL언어: *)
LD angle
TAN
ST tangent
ATAN
ST result
7.2.63 No.63;COS(코사인)
인수:
IN 실수형 실수치
Q 실수형 입력치의 코사인[-1.0 ~ +1.0]
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
실수치의 코사인을 계산합니다.
(*"COS" 과 "ACOS" 블록을 채택한 FBD 프로그램 *)
anglecos
IN Q cosine
acosIN Q result
(*등가의 ST언어:*)
cosine := COS (angle);
result := ACOS (cosine); (* result 는 angle 과 같다 *)
(* 등가의 IL언어: *)
LD angle
COS
ST cosine
ACOS
ST result
Page 47
7.2 응용명령(LD블록)
7-43
7.2.64 No.64;SIN(사인)
인수:
IN 실수형 실수치
Q 실수형 입력치의 사인[-1.0 ~ +1.0]
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.。
설명:
실수치의 사인을 계산힙니다.
(*"SIN" 과 "ASIN" 블록을 채택한 FBD 프로그램 *)
anglesin
IN Q sine
asinIN Q result
(*등가의 ST언어:*)
sine := SIN (angle);
result := ASIN (sine); (* result 는 angle 과 같다 *)
(* 등가의 IL언어: *)
LD angle
SIN
ST sine
ASIN
ST result
7.2.65 No.65;TAN(탄젠트)
인수:
IN 실수형 π로 나눈 나머지가 π/2 이 되에서는 안됩니다.
Q 실수형 입력치의 탄젠트。
부정한 입력에 대해서는, 1E+38。
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
실수치의 탄젠트를 계산합니다.
(*"TAN" 와 "ATAN" 블록을 채택한 FBD 프로그램 *)
angletan
IN Q tangent
atanIN Q result
(*등가의 ST언어:*)
tangent := TAN (angle);
result := ATAN (tangent); (* result 는 angle 과 같다 *)
Page 48
7.2 응용명령(LD블록)
7-44
(* 등가의 IL언어: *)
LD angle
TAN
ST tangent
ATAN
ST result
7.2.66 No.66;ABS(절대치)
인수:
IN 실수형 실수치입력
Q 실수형 절대치(항상 0 이상이 됩니다)
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
실수의 절대치를 줍니다.
(*"ABS"블록을 채택한 FBD 프로그램 *)
deltarange over
absIN Q
>IN1
IN2 Q
(* 등가의 ST언어: *)
over := (ABS (delta) > range);
(* 등가의 IL언어: *)
LD delta
ABS
GT range
ST over
7.2.67 No.67;EXPT(지수)
인수:
IN 실수형 부호 있는 실수
EXP 정수형 정수(지수부)
Q 실수형 (IN EXP)
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.。
설명:
(base exponent)의 연산 결과를 실수로 줍니다. 'base' 가 최초의 인수, 'exponent' 가 2번째의 인수로
정수입니다.です。
(*"EXPT" 블록의 예*)
Page 49
7.2 응용명령(LD블록)
7-45
2.0range
exptIN
EXP Q tb_sizeAna
IN Q
(*등가의 ST언어:*)
tb_size := ANA (EXPT (2.0, range) );
(* 등가의 IL언어: *)
LD 2.0
EXPT range
ANA
ST tb_size
7.2.68 No.68;LOG(상용대수)
인수:
IN 실수형 0보다 큰 실수치
Q 실수형 입력치의 상용대수(10 을 한계로 합니다)
EN 입력이 TRUE 일 경우에만 실행됩니다, 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
실수입력의 상용대수를 줍니다.
(*"LOG" 블록을 채택한 FBD 프로그램 *)
xval xpos
xlog
absIN Q
logIN Q
(*등가의 ST언어:*)
xpos := ABS (xval);
xlog := LOG (xpos);
(* 등가의 IL언어: *)
LD xval
ABS
ST xpos
LOG
ST xlog
7.2.69 No.69;POW(누승계산)
인수:
IN 실수형 실수치(비연산수)
EXP 실수형 실수치(누승수)
Q 실수형 (IN EXP)
1.0 : IN<> 0.0、 EXP= 0.0 인 경우
Page 50
7.2 응용명령(LD블록)
7-46
0.0 : IN= 0.0 、 EXP < 0.0 の경우
0.0 : IN =0.0 、 EXP = 0.0 の경우
0.0 : IN < 0 の경우
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
실수의 누승(base exponent) 을 줍니다. 'base' 가 최초의 인수, 'exponent' 가 2번째의 인수로
실수입니다.
(*"POW" 블록 채택한 FBD 프로그램 *)
xvalpower result
powIN
EXP Q
(*등가의 ST언어:*)
result := POW (xval, power);
(* 등가의 IL언어: *)
LD xval
POW power
ST result
7.2.70 No.70;SQRT(평방근)
인수:
IN 실수형 실수치(>= 0)
Q 실수형 입력치의 평방근
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
실수치의 평방근을 계산합니다.
(*"SQRT"블록을 채택한 FBD 프로그램*)
xval xpos
xroot
absIN Q
sqrtIN Q
(*등가의 ST언어:*)
xpos := ABS (xval);
xroot := SQRT (xpos);
(* 등가의 IL언어: *)
LD xval
ABS
ST xpos
SQRT
ST xrout
7.2.71 No.71;TRUNC(소수부분 잘라버림)
Page 51
7.2 응용명령(LD블록)
7-47
인수:
IN 실수형 실수치
Q 실수형 IN>0, 입력치 이하의 최대 정수치
IN<0, 입력치 이상의 최소 정수치
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력 같은 상태입니다. BOOL 형변수을 접속해 주십시오.
설명:
실수치의 정수부분을 줍니다.
(*"TRUNC" 블록을 채택한 FBD 프로그램 *)
2.67
-2.0891
truncIN Q
truncIN Q
+
result
(*등가의 ST언어:*)
result := TRUNC (+2.67) + TRUNC (-2.0891);
(* 의미 : result := 2.0 + (-2.0) := 0.0; *)
(* 등가의 IL언어: *)
LD 2.67
TRUNC
ST temporary (* 1개째의 TRUNC 결과 *)
LD -2.0891
TRUNC
ADD temporary
ST result
7.2.72 No.72;DELETE(문자열의 삭제)
인수:
IN 문자열형 비어있지 않은 문자열
NbC 정수형 문자열로부터 삭제한 문자수
Pos 정수형 삭제할 최초의 문자열 위치
(문자열의 선두 위치는 1)
Q 문자열형 지정 문자열이 삭제된 결과인 문자열
Pos < 1 일 때, 빈 문자열
Pos > IN 이 문자열일 때, 최초의 문자
NbC <= 0 일 때, 최초의 문자
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
문자열 일부분을 삭제합니다.
Page 52
7.2 응용명령(LD블록)
7-48
(*"DELETE" 블록을 채택한 FBD 프로그램*)
'ABCD''EFGH'
CAT
deleteIN
NbC
Pos Q
complete_string
sub_string43
(*등가의 ST언어:*)
complete_string := 'ABCD' + 'EFGH'; (* complete_string は 'ABCDEFGH' *)
sub_string := DELETE (complete_string, 4, 3); (* sub_string は 'ABGH' *)
(* 등가의 IL언어: *)
LD 'ABCD'
ADD 'EFGH'
ST complete_string
DELETE 4,3
ST sub_string
7.2.73 No.73;FIND(문자열 검색)
인수:
In 문자열형 입력문자열
Pat 문자열형 검색할 문자열 패턴. 비어있지 않은 것.
Pos 정수형 = 0:문자열 패턴이 발견되지 않을 때
= 검색할 문자열이 최초로 발견된 위치
(1문자째라면 1)
대문자・소문자를 구별합니다.
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
문자열 중에서 지정한 문자열을 검색해서, 발견되었을 경우 그 장소로 되돌립니다.
(*"FIND"블록을 채택한 FBD 프로그램 *)
'ABCD''EFGH'
CAT
findIn
Pat Pos
complete_string
'CDEF' found
(*등가의 ST언어:*)
complete_string := 'ABCD' + 'EFGH'; (* complete_string は 'ABCDEFGH' *)
found := FIND (complete_string, 'CDEF'); (* found は 3 *)
(* 등가의 IL언어: *)
LD 'ABCD'
ADD 'EFGH'
ST complete_string
FIND 'CDEF'
ST found
7.2.74 No.74;INSERT(문자열의 삽입)
Page 53
7.2 응용명령(LD블록)
7-49
인수:
IN 문자열형 원래의 문자열
Str 문자열형 삽입할 문자열
Pos 정수형 삽입 위치. 삽입 문자열은 번호 앞이 됩니다. 문자열의 선두는 1 입니다.
Q 문자열형 삽입한 결과의 문자열
Pos <= 0 일 때, 빈 문자열
Pos 가 문자열 IN 의 길이를 넘었을 때, 2개의 문자열이 연속한 것이 됩니다.
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력は、항상に블록の최초의の입력と같은상태です。BOOL 형변수を접속して下さい。
설명:
문자열을 지정한 위치에 다른 문자열을 삽입합니다.
(*"INSERT" 블록을 채택한 FBD 프로그램 *)
'Mr JONES''Frank'
4
insertIN
Str
Pos Q MyName
(*등가의 ST언어:*)
MyName := INSERT ('Mr JONES', 'Frank ', 4);
(* MyName :'Mr Frank JONES' *)
(* 등가의 IL언어: *)
LD 'Mr JONES'
INSERT 'Frank',4
ST MyName
7.2.75 No.75;LEFT(문자열의 왼쪽부분 취득)
인수:
IN 문자열형 비어있지 않은 문자열
NbC 정수형 빼낼 문자수
( 문자열 IN 의 길이 이하인 것)
Q 문자열형 문자열 IN 의 좌측 문자열(문자열 길이는 NbC)
NbC <= 0 일 때, 빈 문자열。
NbC >= IN 의 길이일 때, 문자열 IN 전체.
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
원래 문자열의 좌측에서 지정된 문자수만큼 빼냅니다.
(*"LEFT" 와 "RIGHT" 블록을 채택한 FBD 프로그램 *)
Page 54
7.2 응용명령(LD블록)
7-50
'12345678'4
rightIN
NbC Q
leftIN
NbC Q
CAT
complete_string
(*등가의 ST언어:*)
complete_string := RIGHT ('12345678', 4) + LEFT ('12345678', 4);
(* complete_string : '56781234'
RIGHT 에서 빼내엊어지는 문자열은 '5678'
LEFT 에서 빼내어지는 문자열은 '1234'
*)
(* 등가의 IL언어: 먼저 LEFT 를 콜 합니다. *)
LD '12345678'
LEFT 4
ST sub_string (* 중간결과 *)
LD '12345678'
RIGHT 4
ADD sub_string
ST complete_string
7.2.76 No.76;MID(문자열의 중간부분 취득)
인수:
IN 문자열형 비어있지 않은 문자열
NbC 정수형 빼낼 문자수
( 문자열 IN 의 길이 이하인 것)
Pos 정수형 빼낼 위치
(선두는 1)
Q 문자열형 빼낸 문자열 (문자열 길이는 NbC)。
지정한 인수가 부정일 때, 빈 문자열。
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
지정한 위치에서 지정한 길이의 문자열을 빼냅니다.
(*"MID" 블록을 채택한 FBD 프로그램 *)
'abcdefgh'24
midIN
NbC
Pos Q sub_string
(*등가의 ST언어:*)
sub_string := MID ('abcdefgh', 2, 4);
(* sub_string : 'de' *)
(*등가의 IL언어: *)
LD 'abcdefgh'
MID 2,4
Page 55
7.2 응용명령(LD블록)
7-51
ST sub_string
7.2.77 No.77;MLEN(문자열장의 취득)
인수:
IN 문자열형 문자열
NbC 정수형 문자열 IN 의 문자열길이
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
문자열의 문자열길이를 계산합니다.
(*"MLEN" 블록을 채택한 FBD 프로그램*)
complete_stringmlen
IN NbC nbchar
<IN1
IN2 Q3
leftIN
NbC Q
RETURN
prefix
(*등가의 ST언어:*)
nbchar := MLEN (complete_string);
If (nbchar < 3) Then Return; End_if;
prefix := LEFT (complete_string, 3);
(* 이 프로그램은 문자열로부터 좌측 3문자를 추출해서, prefix 문자열에 넣습니다. 만약,
문자열길이가 3미만일 때에는 아무 것도 하지 않습니다. *)
(*등가의 IL언어: *)
LD complete_string
MLEN
ST nbchar
LT 3
RETC
LD complete_string
LEFT 3
ST prefix
7.2.78 No.78;REPLACE(문자열 치환)
인수:
IN 문자열형 원래 문자열
Page 56
7.2 응용명령(LD블록)
7-52
Str 문자열형 삽입할 문자열 (NbC 문자 분을 치환한다)
NbC 정수형 삭제될 문자수
Pos 정수형 치환할 최초의 문자 위치
(선두 위치는 1)
Q 문자열형 치환한 결과인 문자열
- 먼저, NbC 문자분이 Pos 의 장소로부터 삭제됩니다.
- 다음으로, 문자열 Str 가 이 장소에 삽입됩니다.
Pos <= 0 일 때, 빈 문자열이 됩니다.
Pos >문자열 IN 의 길이일 때, 2개의 문자열의 결합(IN + Str)한 것이 됩니다.
NbC <= 0 일 때, 원래의 문자열이 됩니다.
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
문자열의 일부분을 다른 문자열로 치환합니다.
(*"REPLACE" 블록을 채택한 FBD 프로그램 *)
'Mr X JONES''Frank'
1
replaceIN
Str
NbC
Pos Q MyName4
(*등가의 ST언어:*)
MyName := REPLACE ('Mr X JONES, 'Frank', 1, 4);
(* MyName 는 'Mr Frank JONES' 이 됩니다 *)
(*등가의 IL언어: *)
LD 'Mr X JONES'
REPLACE 'Frank',1,4
ST MyName
7.2.79 No.79;RIGHT(문자열의 오른쪽부분 취득)
인수:
IN 문자열형 비어있지 않은 문자열
NbC 정수형 빼낼 문자수(문자열 IN 의 길이 이하)
Q 문자열형 문자열 IN 의 우측 문자열(문자열 길이는 NbC)
NbC <= 0 일 때, 빈 문자열。
NbC >=문자열 IN 의 길이일 때, IN 전체.
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
문자열의 우측에서 지정된 문자수 만큼 뽑아 냅니다.
(*"LEFT" 와 "RIGHT" 블록을 채택한 FBD 프로그램 *)
'12345678'4
rightIN
NbC Q
leftIN
NbC Q
CAT
complete_string
Page 57
7.2 응용명령(LD블록)
7-53
(*등가의 ST언어:*)
complete_string := RIGHT ('12345678', 4) + LEFT ('12345678', 4);
(* complete_string は '56781234'
RIGHT 에서 추출된 문자열 '5678'
LEFT 에서 추출된 문자열 '1234'
*)
(*등가의 IL언어: First done is call to LEFT *)
LD '12345678'
LEFT 4
ST sub_string (* 중간결과*)
LD '12345678'
RIGHT 4
ADD sub_string
ST complete_string
7.2.80 No.80;AND_MASK(정수 비트 마다 AND 마스크)
인수:
IN 정수형
MSK 정수형
Q 정수형 IN 과 MSK 의 비트마다의 논리적
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
정수형 변수의 논리적으로, IN 의 각 비트와 MSK 각 비트와의 논리적
(* AND_MASK 블록을 채택한 FBD 예 *)
xvalue1
and_maskIN
MSK Q parity
and_maskIN
MSK Q
16#abc16#f0f result
(* 등가의 ST언어: *)
parity := AND_MASK (xvalue, 1); (* xvalue 가 홀수라면 1 이 된다 *)
result := AND_MASK (16#abc, 16#f0f); (* 16#a0c 가 된다*)
(* 등가의 IL언어: *)
LD xvalue
AND_MASK 1
ST parity
LD 16#abc
AND_MASK 16#f0f
ST result
7.2.81 No.81;NOT_MASK(정수비트마다 부정)
Page 58
7.2 응용명령(LD블록)
7-54
인수:
IN 정수형
Q 정수형 32비트 표현의 IN 의 각 비트의 반전
EN 입력이 TRUE 인 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
정수형 변수의 각 비트의 반전
(*NOT_MASK 블록을 채택한 FBD 예 *)
16#1234not_maskIN Q result
(* 등가의 ST언어: *)
result := NOT_MASK (16#1234);
(* result は 16#FFFF_EDCB *)
(* 등가의 IL언어: *)
LD 16#1234
NOT_MASK
ST result
7.2.82 No.82;OR_MASK(정수비트마다 OR 마스크)
인수:
IN 정수형
MSK 정수형
Q 정수형 IN 과 MSK 의 비트마다의 논리화
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
정수형 변수의 논리화로 IN 의 각 비트와 MSK 의 각 비트와의 논리화
(* OR_MASK 블록을 채택한 FBD 예*)
xvalue1
or_maskIN
MSK Q parity
or_maskIN
MSK Q
16#abc16#f0f result
(* 등가의 ST언어: *)
is_odd := OR_MASK (xvalue, 1); (* 반드시 홀수가 된다*)
result := OR_MASK (16#abc, 16#f0f); (* 16#fbf 이 된다 *)
(* 등가의 IL언어: *)
LD xvalue
OR_MASK 1
Page 59
7.2 응용명령(LD블록)
7-55
ST is_odd
LD 16#abc
OR_MASK 16#f0f
ST result
7.2.83 No.83;XOR_MASK(정수비트마다 XOR 마스크)
인수:
IN 정수형
MSK 정수형
Q 정수형 IN 과 MSK 의 비트마다의 배타적 논리화
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
정수형 변수의 배타적 논리화로, IN 의 각 비트와 MSK 의 각 비트와의 배타적 논리화
(*XOR_MASK 블록을 채택한 FBD 예 *)
prevcrcnextc
xor_maskIN
MSK Q crc32
16#01216#011
xor_maskIN
MSK Q result
(* 등가의 ST언어: *)
crc32 := XOR_MASK (prevcrc, nextc);
result := XOR_MASK (16#012, 16#011); (* 16#003 이 된다 *)
(* 등가의 IL언어: *)
LD prevcrc
XOR_MASK nextc
ST crc32
LD 16#012
XOR_MASK 16#011
ST result
7.2.84 No.84;MOV8(BOOL 데이타를 전송 8) AX제어장치 단독의 명령입니다.
인수:
INB Bool 형
OUTBBool 형
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
Page 60
7.2 응용명령(LD블록)
7-56
INB 을 선두로 한 연속한 8 개의 Bool ・ ・ 의 수치를, OUTB 를 선두로 하는 8 개의 Bool ・ ・ 에 대입한다.
7.2.85 No.85;MOV16(BOOL 데이타를 전송 16) AX제어장치 단독의 명령입니다.
인수:
INB Bool 형
OUTBBool 형
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
INB 를 선두로 하는 연속한 16 의 Bool ・ ・ 의 수치를, OUTB 를 선두로 하는 16 의 Bool ・ ・ 에 대입한다.
7.2.86 No.86;MOV32(BOOL 데이타를 전송 32) AX제어장치 단독명령입니다.
인수:
INB Bool 형
OUTBBool 형
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
INB 을 선두로 하는 연속한 32 의 Bool ・ ・ 의 수치를, OUTB 를 선두로 하는 32 의 Bool ・ ・ 에 대입한다.
7.2.87 No.87;BTOD8(BOOL 데이타를 정수변수에 전송 8) AX제어장치 단독의 명령입니다.
인수:
INB Bool 형
OUTD 정수형
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔 마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
INB 를 선두로 하는 연속한 8 개의 Bool ・ ・ 의 수치를, OUTD 에서 나타내어진・ ・ ・ ・ 로, INB 를
LSB 로써 대입한다
7.2.88 No.88;BTOD16(BOOL 데이타를 정수변수에 전송 16) AX제어장치 단독명령입니다.
Page 61
7.2 응용명령(LD블록)
7-57
인수:
INB Bool 형
OUTD 정수형
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
INB 를 선두로써 연속한 16 개의 Bool ・ ・ 의 수치를, OUTD 로 나타내어진・ ・ ・ ・ 로, INB 를 LSB 로써
대입한다.
7.2.89 No.89;BTOD32(BOOL 데이타를 정수변수에 전송 32) AX제어장치 단독명령입니다.
인수:
INB Bool 형
OUTD 정수형
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
INB 을 선두로 하는 연속한 8 개의 Bool ・ ・ 의 수치를, OUTD 으로 나타내어진・ ・ ・ ・ 로, INB 을
LSB 로써 대입한다.
7.2.90 No.90;DTOB8(정수변수를 BOOL 에 8) AX제어장치 단독명령입니다.
인수:
IND 정수형
OUTB Bool 형
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
IND 로 나타내어진 ・ ・ 의 하위 8bit 의 수치를, OUTB 을 선두로 한 8 개의 Bool ・ ・ 로, OUTB 을
LSB 로써 대입한다.
7.2.91 No.91;DTOB16(정수변수를 BOOL 에 16) AX제어장치 단독명령입니다.
인수:
Page 62
7.2 응용명령(LD블록)
7-58
IND 정수형
OUTBBool 형
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형 변수를 접속해 주십시오.
설명:
IND 로 나타내어진 ・ ・ 의 하위 16bit 의 수치를, OUTB 을 선두로 하는 16 의 Bool ・ ・ 로, OUTB 을
LSB 로써 대입한다.
7.2.92 No.92;DTOB32(정수변수를 BOOL 에 32) AX제어장치 단독의 명령입니다.
인수:
IND 정수형
OUTBBool 형
EN 입력이 TRUE 일 경우에만 실행됩니다. 스캔마다 실행할 경우에는 모선직결이라도 상관없습니다.
ENO 출력은, 항상 블록 최초의 입력과 같은 상태입니다. BOOL 형변수를 접속해 주십시오.
설명:
IND 으로 나타내어진 ・ ・ 의 수치를, OUTB 을 선두로 하는 32 의 Bool ・ ・ 로, OUTB 을 LSB 로써
대입한다.