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

[20] PLC 기초 강좌

by lemy 2019. 2. 20.
반응형


[20] PLC 기초 강좌


4.4.      응용 명령

4.4.1.     논리 연산 명령

논리 연산 명령은 논리합, 논리적 등의 논리 연산을 1비트 단위로 다음과 같이 처리합니다.


※ TIP !!!

1) AND: 특정 비트를 16진코드와 AND처리하여 마스크하는 프로그램에서 사용 합니다.

2) OR: 바이트 단위의 데이터를 결합, 조작하는 프로그램에서 사용합니다.

3) XOR: 입력 AB가 같을 때 0이 되고, 다를 때 1이 되므로 SUM명령 또는 = K0의 비교문과 더불어 알람 발생시 BUZZER등의 경보를 발생 할 수 있습니다. 시리얼 통신에서 패리티 체크를 하거나 체크섬 계산에 이용 수도 있습니다.

4) XNR: 상대 데이터의 비트 패턴을 비교하는 프로그램에서 사용합니다.

입력 AB가 같을 때 1이 되고, 다를 때 0이 되므로 SUM명령과 더불어 유니트의 준비 상태 비교나, 알람 발생 여부(개수)등을 알 수 있습니다.

 

1) 16비트/32비트 데이터 논리적(WAND(P), DAND(P))

[WAND(P)     (S)        (D)]

 (S)로 지정된 디바이스의 16비트 데이터와 (D)로 지정된 디바이스의 16비트 데이터를 비트 별로

논리적을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

[WAND(P)     (S1)      (S2)      (D)]

(S1)로 지정된 디바이스의 16비트 데이터와 (S2)로 지정된 디바이스의 16비트 데이터를 비트 별로

논리적을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

[DAND(P)      (S)        (D)]

(S)로 지정된 디바이스의 32비트 데이터와 (D)로 지정된 디바이스의 32비트 데이터를 비트 별로

논리적을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

[DAND(P)      (S1)      (S2)      (D)]

(S1)로 지정된 디바이스의 32비트 데이터와 (S2)로 지정된 디바이스의 32비트 데이터를 비트 별로

논리적을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

※ TIP !!!

특정 비트를 16진코드와 AND처리하여 마스크하는 프로그램에서 자주 사용 합니다.

[WAND K4X100 HF0 D10] = X100~X10F까지의 비트중 X104~X107의 상태만 D10에 저장.

 

2) 블록 논리적(BKAND(P))

[BKAND(P)     (S1)      (S2)      (D)       n]

(S1)로 지정된 디바이스부터 n점의 내용과 (S2)로 지정된 디바이스부터 n점의 내용의 논리적을

실행하여, 결과를 (D)로 지정된 디바이스 이후에 저장합니다.

(S2)BIN 16비트 정수를 지정하는 경우, –32768~32767(BIN 16비트)의 정수를 지정할 수 있습니다.


 

3) 16비트/32비트 데이터 논리합(WOR(P), DOR(P))

[WOR(P)       (S)        (D)]

 (S)로 지정된 디바이스의 16비트 데이터와 (D)로 지정된 디바이스의 16비트 데이터를 비트 별로

논리합을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

[WOR(P)       (S1)      (S2)      (D)]

(S1)로 지정된 디바이스의 16비트 데이터와 (S2)로 지정된 디바이스의 16비트 데이터를 비트 별로

논리합을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

[DOR(P)        (S)        (D)]

(S)로 지정된 디바이스의 32비트 데이터와 (D)로 지정된 디바이스의 32비트 데이터를 비트 별로

논리합을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

[DOR(P)        (S1)      (S2)      (D)]

(S1)로 지정된 디바이스의 32비트 데이터와 (S2)로 지정된 디바이스의 32비트 데이터를 비트 별로

논리합을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

※ TIP !!!

바이트 단위의 ASCII코드나 통신 수신부 데이터를 결합 및 조작하는 프로그램에서 자주 사용합니다.

D10=H4000 (“A ”) ; D12=H0030 (“ 0”)

[WOR D10 D12 D14]       D14=H4030 (“A0”)   * ASCII코드표 참조.

 

4) 블록 논리합(BKOR(P))

[BKOR(P)       (S1)      (S2)      (D)       n]

(S1)로 지정된 디바이스부터 n점의 내용과 (S2)로 지정된 디바이스부터 n점의 내용의 논리합을

실행하여, 결과를 (D)로 지정된 디바이스 이후에 저장합니다.

(S2)BIN 16비트 정수를 지정하는 경우, –32768~32767(BIN 16비트)의 정수를 지정할 수 있습니다.


 

5) 16비트/32비트 데이터 배타적 논리합(WXOR(P), DXOR(P))

[WXOR(P)      (S)        (D)]

 (S)로 지정된 디바이스의 16비트 데이터와 (D)로 지정된 디바이스의 16비트 데이터를 비트 별로

배타적 논리합을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

[WXOR(P)      (S1)      (S2)      (D)]

(S1)로 지정된 디바이스의 16비트 데이터와 (S2)로 지정된 디바이스의 16비트 데이터를 비트 별로

배타적 논리합을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

[DXOR(P)      (S)        (D)]

(S)로 지정된 디바이스의 32비트 데이터와 (D)로 지정된 디바이스의 32비트 데이터를 비트 별로

배타적 논리합을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

[DXOR(P)      (S1)      (S2)      (D)]

(S1)로 지정된 디바이스의 32비트 데이터와 (S2)로 지정된 디바이스의 32비트 데이터를 비트 별로

배타적 논리합을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

 

6) 블록 배타적 논리합(BKXOR(P))

[BKXOR(P)     (S1)      (S2)      (D)       n]

(S1)로 지정된 디바이스부터 n점의 내용과 (S2)로 지정된 디바이스부터 n점의 내용의 배타적 논리합을

실행하여, 결과를 (D)로 지정된 디바이스 이후에 저장합니다.

(S2)BIN 16비트 정수를 지정하는 경우, –32768~32767(BIN 16비트)의 정수를 지정할 수 있습니다.


 

7) 16비트/32비트 데이터 부정 배타적 논리합(WXNR(P), DXNR(P))

[WXNR(P)      (S)        (D)]

 (S)로 지정된 디바이스의 16비트 데이터와 (D)로 지정된 디바이스의 16비트 데이터를 비트 별로

부정 배타적 논리합을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

[WXNR(P)      (S1)      (S2)      (D)]

(S1)로 지정된 디바이스의 16비트 데이터와 (S2)로 지정된 디바이스의 16비트 데이터를 비트 별로

부정 배타적 논리합을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

[DXNR(P)      (S)        (D)]

(S)로 지정된 디바이스의 32비트 데이터와 (D)로 지정된 디바이스의 32비트 데이터를 비트 별로

부정 배타적 논리합을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

[DXNR(P)      (S1)      (S2)      (D)]

(S1)로 지정된 디바이스의 32비트 데이터와 (S2)로 지정된 디바이스의 32비트 데이터를 비트 별로

부정 배타적 논리합을 실행하여, 결과를 (D)로 지정된 디바이스에 저장합니다.

비트 디바이스의 경우, 지정된 자리 이상은 0으로 처리됩니다.

※ TIP !!!

상대 데이터의 비트 패턴을 비교하는 프로그램에서 자주 사용합니다.

[WXNR  K4X100  D10      D12]

[SUM    D12      D14]     D14=K4X100 D10의 패턴이 일치하는 비트 개수

 

8) 블록 배타적 논리합(BKXNR(P))

[BKXNR(P)     (S1)      (S2)      (D)       n]

(S1)로 지정된 디바이스부터 n점의 내용과 (S2)로 지정된 디바이스부터 n점의 내용의 부정 배타적

논리합을 실행하여, 결과를 (D)로 지정된 디바이스 이후에 저장합니다.

(S2)BIN 16비트 정수를 지정하는 경우, –32768~32767(BIN 16비트)의 정수를 지정할 수 있습니다.


 


프로그램 예제


반응형

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

[22] PLC 기초 강좌  (0) 2019.03.04
[21] PLC 기초 강좌  (0) 2019.02.24
[19] PLC 기초 강좌  (0) 2019.02.14
[18] PLC 기초 강좌  (0) 2019.02.10
[17] PLC 기초 강좌  (0) 2019.02.06

댓글