Download presentation
Presentation is loading. Please wait.
Published byFarida Hadiman Modified 5년 전
1
제10강 펑션블록 프로그램(1) 1. 펑션과 펑션 블록 1) 펑션 2)펑션 블록 구분 펑션 펑션블록 입력의 수 1개 이상
⊙ 1스캔에 입력을 받아 동일 스캔에 연산을 실행하여 그 결과를 만들어 내는 응용 명령어 ⊙ 1개 이상의 입력 ⊙ 펑션은 오직 하나의 결과만을 출력 2)펑션 블록 ⊙ 여러 스캔에 걸쳐 입력을 받고 연산을 해서 결과를 만들어 내는 응용 명령어 ⊙ 2개 이상의 입력 ⊙ 펑션 블록은 여러 개의 결과 출력 구분 펑션 펑션블록 입력의 수 1개 이상 2개 이상 출력의 수 1개 연산시간 1스캔 1스캔 이상 예 전송펑션, 형 변환 펑션 산술 연산 펑션, 비교펑션 타이머, 카운터 특수모듈 초기화 펑션블록
2
제10강 펑션블록 프로그램(1) 2. 타이머 1) TON(ON-Delay Timer) 설명 입력: IN:타이머의 기동 조건
PT:설정 시간 출력: Q:타이머 접점 출력 CV:경과 시간 펑션 TON IN PT ET Q BOOL TIME ⊙ 기능 ▶ IN이 ON된 후 경과 시간이 ET로 출력 ▶ 설정 시간 PT와 경과 시간 ET가 같아지는 순간 타이머 출력 접점 Q는 ON ▶ Q가 ON되면 경과 시간은 정지 ▶ 경과 시간 ET가 설정 시간에 도달하기 전에 IN이 OFF되면, 경과 시간은 0 ▶ Q가 ON된 후 IN이 0FF되면, Q는 OFF
3
제10강 펑션블록 프로그램(1) ⊙ 타임 차트 ☞ 타이머의 설정 시간은 TIME 형으로 설정하며, 날짜는 D, 시간은 H, 분은 M, 초는 S, 1/1000초는 MS단위를 사용합니다. 예) 1일 2시간 3분 4초 567MS => T#1D2H3M4S567MS 설정가능 최대 시간 : T# 49D 17H 2M 47S 295MS
4
제10강 펑션블록 프로그램(1) 2) TON_UINT*(정수 설정 ON-Delay Timer) 설명 펑션
입력 IN : 타이머 기동 조건 PT : 설정 시간(Preset Time) UNIT : 설정 시간의 시간 단위(Unit) 출력 Q : 타이머 접점 출력 ET : 경과 시간(Elapsed Time) 펑션 TIME TON_UINT Q IN PT UNIT ET BOOL UINT ⊙ 기능 ▶ IN이 ON 된 후 경과 시간이 ET로 출력 ▶ 설정시간은 PT×UNIT[ms]입니다. ▶ 설정 시간 과 경과 시간 ET가 같아지는 순간 타이머 출력 접점 Q는 ON ▶ 경과 시간 ET가 설정 시간에 도달하기 전에 IN이 OFF 되면, 경과 시간 ET는 0 ▶ Q가 ON 된 후 IN이 OFF 되면, Q는 OFF ▶ Q가 ON 되면 경과 시간 정지 ☞ * 표시 된 펑션 블록은 APP.xFB 라이브러리를 삽입해야 사용가능 합니다.
5
제10강 펑션블록 프로그램(1) ⊙ 타임 차트 IN ET PT×UNIT 설정시간 (PT ×UNIT) Q
6
제10강 펑션블록 프로그램(1) ⊙ 프로그램 예제 - TON_UINT를 이용한 플리커 회로
▶ 아래의 그림과 같이 새 프로젝트를 정의합니다.
7
제10강 펑션블록 프로그램(1) ▶ 다음과 같이 프로그램을 정의합니다.
8
제10강 펑션블록 프로그램(1) ⊙ TON_UINT를 사용하기 위해 ‘APP.4FB를 프로젝트에 삽입합니다.
▶ 프로젝트 메뉴의 ‘라이브러리 삽입’ 항목을 클릭합니다. ▶ ‘라이브러리 삽입’ 창이 화면에 나타나면 ‘추가’ 단추를 클릭합니다.
9
제10강 펑션블록 프로그램(1) ▶ ‘라이브러리 선택’ 창이 화면에 나타나면 ‘APP.4FB’를 선택하고 ‘열기’ 단추를 클릭합니다. ▶ ‘라이브러리 선택’ 창에서 라이브러리가 삽입되었음을 확인하고 ‘확인’ 단추를 클릭합니다.
10
제10강 펑션블록 프로그램(1) ▶ ‘프로젝트 창’에 ‘APP.4FB’ 라이브러리가 삽입되었습니다.
11
제10강 펑션블록 프로그램(1) 클릭 ⊙ 프로그램 작성
⊙ 프로그램 작성 ▶ 도구 상자에서 {FB}를 클릭하여 프로그램 창에 다시 한 번 클릭합니다. 클릭
12
제10강 펑션블록 프로그램(1) ▶ ’펑션블록 목록’ 창이 나타나면 TON_UINT를 선택한 후 ‘확인’을 클릭합니다.
13
제10강 펑션블록 프로그램(1) ▶ 펑션블록을 사용할 경우 펑션블록에 대한 변수(FB INSTANCE)를 설정합니다.
14
제10강 펑션블록 프로그램(1) 더블 클릭 ▶ 접점을 이용하여 회로를 완성합니다.
▶ 펑션블록에 변수를 입력하기 위해 입력 또는 출력 단자 앞을 더블 클릭합니다. 더블 클릭
15
제10강 펑션블록 프로그램(1) ▶ 변수이름 및 메모리 할당
16
제10강 펑션블록 프로그램(1) ⊙ 프로그램 및 지역 변수
17
제10강 펑션블록 프로그램(1) 3) TOF(OFF-Delay Timer) 설명 입력: IN:타이머의 기동 조건
PT:설정 시간 출력: Q:타이머 접점 출력 CV:경과 시간 펑션 TOF IN PT ET Q BOOL TIME ⊙ 기능 ▶ IN이 ON 되면, Q가 ON ▶ IN이 OFF된 후 경과 시간이 ET로 출력 ▶ IN이 OFF 된 후부터 PT에 설정된 설정 시간이 경과한 후 Q가 OFF ▶ 경과 시간 ET가 설정 시간에 도달하기 전에 IN이 ON 되면 경과 시간은 0
18
제10강 펑션블록 프로그램(1) ⊙ 타임 차트 ET 설정시간 Q IN
19
제10강 펑션블록 프로그램(1) 4) TOF_UINT* (정수설정 OFF-Delay Timer) 설명 입력
PT : 설정 시간(Preset Time) UNIT : 설정 시간의 시간 단위(Unit) RST : 리셋 입력 출력 Q : 타이머 접점 출력 ET : 경과 시간(Elapsed Time) 펑션 UDINT TOF_UINT Q IN PT UNIT ET BOOL UINT RST ⊙ 기능 ▶ 기동 조건 IN이 ON되는 순간 Q는 ON ▶ IN이 OFF된 후 경과 시간이 ET로 출력 ▶ IN이 OFF 된 후부터 설정 시간이 경과한 후 Q가 OFF ▶ 경과 시간 ET가 설정 시간에 도달하기 전에 IN이 ON되면 경과 시간은 0 ▶ RST 입력 조건이 ON되면 타이머 출력 Q는 OFF되고 경과 시간은 0 ▶ 설정시간 PT×UNIT[ms]
20
제10강 펑션블록 프로그램(1) ⊙ 타임 차트 IN RST ET PT ×UNIT 설정시간 (PT×UNIT) Q
21
제10강 펑션블록 프로그램(1) 즉시 3초간 물이 공급되는 회로
⊙ TON, TOF를 이용한 프로그램 - 화장실 자동 밸브 제어 ▶ 사용자가 변기에 접근한 후 1초 뒤 2초간 물이 나오고 이탈 후 즉시 3초간 물이 공급되는 회로
22
제11강 펑션블록 프로그램(2) 5) TP(Pulse Timer) 설명 입력: IN:타이머의 기동 조건 PT:설정 시간 출력:
Q:타이머 접점 출력 ET:경과 시간 펑션 TP IN PT ET Q BOOL TIME ⊙ 기능 ▶ IN이 ON 되면 PT에 설정된 설정 시간 동안 Q가 ON ▶ 경과 시간 ET가 설정 시간 PT에 도달하면 Q는 OFF ▶ 경과 시간 ET는 IN이 ON 되었을 때부터 증가 ▶ 경과 시간 ET는 PT에 이르면 값을 유지, IN이 OFF 될 때 0 ▶ ET가 증가하는 동안 IN이 OFF 되거나 ON 되어도 영향 없음 ▶ ET가 PT에 도달한 후 IN이 다시 ON되면 ET가 증가
23
제11강 펑션블록 프로그램(2) ⊙ 타임 차트
24
제11강 펑션블록 프로그램(2) 6) TP_RST*(출력 OFF 가능 Pulse Timer) 설명 입력
IN : 타이머 기동 조건 PT : 설정 시간(Preset Time) RST : 리셋 입력(Reset) 출력 Q : 타이머 출력 ET : 경과 시간(Elapsed Time) 펑션 TIME TP_RST Q IN PT RST ET BOOL ⊙ 기능 ▶ 블록은 IN이 ON되는 순간 Q는 ON ▶ 경과 시간이 설정 시간에 도달하면 타이머 출력 Q는 OFF ▶ 경과 시간 ET는 IN이 ON 되었을 때부터 증가 ▶ 경과 시간이 PT에 이르면 값을 유지 ▶ 경과 시간은 IN이 OFF 될 때 0으로 클리어(clear) ▶ 타이머 출력 Q가 ON 동안(펄스 출력 중)에는 타이머 기동조건 IN이 변화해도 무시 ▶ RST 입력 조건이 성립하면 펄스 출력 중 타이머 출력 Q는 OFF 되고 경과 시간도 0
25
제11강 펑션블록 프로그램(2) ⊙ 타임 차트 IN RST ET PT 설정시간 (PT) Q
26
제11강 펑션블록 프로그램(2) 신호의 안정화 T ⊙ TP를 이용한 떨림 방지 회로
▶ 속도가 일정치 않은 물체의 통과신호(리미트 스위치)의 떨림을 방지하여, 안정된 신호를 얻습니다. T 신호의 안정화
27
제11강 펑션블록 프로그램(2) ⊙ 프로그램 및 지역 변수
28
제11강 펑션블록 프로그램(2) 6) TMR*(적산 Timer) 설명 입력 IN : 타이머 기동 조건
PT : 설정 시간(Preset Time) RST : 리셋 입력(Reset) 출력 Q : 타이머 접점 출력 ET : 경과 시간(Elapsed Time) 펑션 TIME TMR Q IN PT RST ET BOOL ⊙ 기능 ▶ IN이 ON 된 후 경과 시간이 ET로 출력 ▶ 경과 시간 ET가 설정 시간에 도달하기 전에 IN이 OFF 되어도 현재의 경과 시간을 유지 ▶ IN이 다시 ON 되면 경과 시간을 증가 ▶ 경과 시간이 설정 시간이 도달하면 Q가 ON ▶ RST 입력 조건이 성립되면 Q는 OFF 되고 경과 시간은 0
29
제11강 펑션블록 프로그램(2) ⊙ 타임 차트 IN RST ET PT Q
30
제11강 펑션블록 프로그램(2) 7) TMR_FLK*(Flicker Timer) 설명 입력 IN : 타이머 기동 조건
ON : ON 타이머 설정 시간 OFF : OFF 타이머 설정 시간 RST : 리셋 입력 출력 Q : 타이머 출력 ET : 경과 시간(Elapsed Time) 펑션 TIME TMR_FLK Q IN ON OFF ET BOOL RST ⊙ 기능 ▶ IN이 1이 되는 순간 Q는 1이 되고, ON에서 지정된 시간 만큼 Q는 1 유지 ▶ ON에 지정된 시간이 경과하면 OFF에 지정된 시간 만큼 Q는 0 유지 ▶ IN이 0이 되면 ON 또는 OFF 동작을 수행을 중지 ▶ IN이 0인 동안 중지된 시간을 유지하다가 IN이 다시 1이 되면 정지된 시간부터 타이머 동작 ▶ IN이 0인 동안 출력 Q는 0 ▶ ON이 0이면 출력 Q는 항상 0 ▶ RST 조건이 ON되면 경과 시간은 0으로 되며, 출력 Q는 0 ▶ RST 조건이 해제되면 경과 시간은 상승하고, 출력 Q는 최초 기동과 동일
31
제11강 펑션블록 프로그램(2) ⊙ 타임 차트 IN ON OFF Q OFF Time ON Time Time
32
제11강 펑션블록 프로그램(2) 8) TRTG*(Retriggerable Timer) 설명 입력 IN : 타이머 기동 조건
PT : 설정 시간(Preset Time) RST : 리셋 입력(Reset) 출력 Q : 타이머 출력 ET : 경과 시간(Elapsed Time) 펑션 TIME BOOL TRTG Q IN PT RST ET ⊙ 기능 ▶ IN이 ON 되는 순간 Q는 ON ▶ 경과 시간이 설정 시간에 도달하면 타이머 출력 Q는 OFF ▶ 출력 Q가 OFF 되기 전에 IN이 또 다시 OFF ON 되면 경과 시간은 0으로 재설정 되어 다시 증가하여 설정 시간 PT에 도달하면 Q는 0 ▶ RST 입력 조건이 성립하면 타이머 접점 출력 Q는 OFF 되고 경과 시간은 0
33
제11강 펑션블록 프로그램(2) ⊙ 타이밍 차트 IN RST ET PT 설정시간 (PT) Q
34
제11강 펑션블록 프로그램(2) 적색(%QX0.1.2) 황색(%QX0.1.1) 청색(%QX0.1.0) 적색(%QX0.1.4)
⊙ 신호등 제어 프로그램 ▶ 보행자가 보행버튼을 누르면 30초 후 차선의 신호등은 황색램프가 1초간 점등 ▶ 황색 램프 1초간 점등 후 적색 20초간 점등 ▶ 보행자 신호등은 청색 램프가10초간 점등 된 뒤 10초간 점멸 ▶ 10초간 점멸 후 적색 점등 적색(%QX0.1.4) 버튼 (%IX0.0.0) 적색(%QX0.1.2) 황색(%QX0.1.1) 청색(%QX0.1.0) 청색(%QX0.1.3)
35
제11강 펑션블록 프로그램(2) ⊙ 타임 차트 및 지역 변수 버튼 청색 황색 적색 차선 횡단 보도
36
제11강 펑션블록 프로그램(2) ⊙ 신호등 제어 프로그램
37
제12강 펑션블록 프로그램(3) 1. 카운터 1) CTU (UP – Counter) 펑션 설명 입력: CU:펄스 신호 입력
PV:설정값 출력: Q:카운터 접점 신호 출력 CV:카운터 현재값 출력 CTU R CU PV CV Q BOOL INT ⊙ 기능 ▶ 펄스입력 CU가 OFF ON으로 변하면 현재값 CV가 이전값 보다 1만큼 증가 단, CV는 정수(INT)의 최대값 32767을 넘지 않습니다. ▶ 리셋 입력 R이 ON 되면 현재값 CV는 0으로 Clear ▶ 현재값이 설정값과 같아지게 되면 카운터 출력 접점(Q)가 ON ▶ 현재값이 설정값보다 큰 동안 ON상태 유지
38
제12강 펑션블록 프로그램(3) ⊙ 타임 차트 Q CU CV R 설정값
39
제12강 펑션블록 프로그램(3) 2) CTD (DOWN – Counter) 펑션 설명 입력: CD:펄스 신호 입력
LD:설정값 입력 PV:설정값 출력: Q:카운터 접점 신호 출력 CV:카운터 현재값 출력 CTD LD CD PV CV Q BOOL INT ⊙ 기능 ▶ LD단자를 ON시키면 설정값이 현재 값으로 로드 ▶ 펄스입력 CU가 OFF ON으로 변하면 현재값 CV가 이전값 보다 1만큼 감소 단, CV는 정수(INT)의 최대값 32767을 넘지 않습니다. ▶ 현재값이 0이되면 카운터 출력 접점 Q가 ON ▶ 현재값이 0보다 작으면 ON상태 유지
40
제12강 펑션블록 프로그램(3) ⊙ 타임 차트 Q CD CV LD
41
제12강 펑션블록 프로그램(3) 3) CTUD (UP-DOWN Counter) 펑션 설명 입력: CU:업 카운터 펄스 입력
CD:다운 카운터 펄스 입력 R :리셋 신호 입력 LD:설정값 입력 PV:설정값 출력: QU:업 카운터 접점 출력 QD:다운 카운터 접점 출력 CV:카운터 현재값 출력 CTUD CD CU R QD QU BOOL INT LD PV ⊙ 기능 ▶ CU가 OFF0N 되면 현재값 CV가 이전값 보다 1만큼 증가 ▶ CD가 OFF0N되면 현재값 CV가 이전값 보다 1만큼 감소 단, 현재값 CV는 정수 범위 ( ~ 32767) 사이의 값 ▶ LD가 ON 되면 현재값 CV에 설정값 PV값이 로드 ( CV=PV) ▶ R이 ON 되면 현재값 CV는 0으로 Clear ▶ 업-출력 QU는 CV가 PV 이상 이면 ON ▶ 다운-QD는 CV가 0이하 일 때 ON ▶ 입력 우선 순위 R > LD > CU > CD
42
제12강 펑션블록 프로그램(3) ⊙ 타임 차트 설정값 QU CD CV LD CU R QD
43
제12강 펑션블록 프로그램(3) 4) CTR* (Rinr – Counter) CTR Q CD PV RST CV BOOL INT
설명 입력 CD : 링 카운트펄스 입력 PV : 설정값(Preset Value) RST : 리셋 입력(Reset) 출력 Q : 카운터 접점 출력 CV : 현재값(Current Value) 펑션 ⊙ 기능 ▶ CD가 OFF ON으로 변할 때 현재값 CV를 1씩 증가 ▶ 현재값 CV가 설정값 PV에 도달한 후 CD가 다시 OFF ON 되면 현재값은 1 ▶ 현재값이 설정값과 같아지면 타이머 접점 출력 Q는 ON ▶ 현재값이 설정값 미만이거나 RST 조건이 ON되면 타이머 접점 출력 Q는 OFF
44
제12강 펑션블록 프로그램(3) ⊙ 타임 차트 CD Q R PV CV
45
제12강 펑션블록 프로그램(3) 1 2 3 . 프 로 그 램 PB1 입력 모듈 (Slot:0) 출력 모듈 (Slot:1)
⊙ 프로그램 - 카운터를 이용한 모터 동작 수 증감 제어 ▶ 4대의 모터를 제어 ▶ 순간접촉 푸쉬 버튼 PB1을 누를 때마다 동작하는 모터 수 1개씩 증가 ▶ 순간 접촉 푸쉬 버튼 PB2를 누를 때마다 모터 동작 수 1개씩 감소 ▶ 4개의 모터가 동작하고 있을 때 PB1을 누르면 모든 모터는 정지 1 2 3 . 프 로 그 램 PB1 입력 모듈 (Slot:0) 출력 모듈 (Slot:1) 모터1 PB2 M 모터2 모터3 모터4 COM
46
제12강 펑션블록 프로그램(3) ⊙ 프로그램 및 지역 변수
47
제13강 펑션 프로그램(1) 1. 기본 평션의 종류 1) 전송 펑션 : MOVE, ARY_MOVE
2) 비교 펑션 : GT(>), GE(≥), EQ(=), LE(≤), LT(<) NE(≠) 3) 산술 연산 펑션 : ADD(+), SUB(-), MUL(×), DIV(÷), MOD(나머지 구하기) 4) 논리 연산 : AND(논리곱), OR(논리합), XOR(배타적 논리합), NOT(반전) 5) Bit Shift 연산 : SHL(왼쪽으로 비트 이동), SHR(오른쪽으로 비트 이동) ROL(왼쪽으로 회전), ROR(왼쪽으로 회전) 6) 형(Type) 변환 펑션 : BCD_TO_***, INT_TO_***, SINT_TO_***, DINT_TO_*** UINT_TO_***, USINT_TO_***, UDINT_TO_***, WORD_TO_*** DWORD_TO_***, BOOL_TO_***, BYTE_TO_***,TIME_TO_*** DATE_TO_***, DT_TO_***, TOD_TO_***, STRING_TO_*** NUM_TO_***, LWORD_TO_***, LINT_TO_***, ULINT_TO_*** REAL_TO_***, LREAL_TO_*** ☞ 형 변환 펑션 중 입력 타입이 L***_TO_ ***/ UL***_TO_ ***/ REAL_TO_ ***인 것과 출력 타입이 ***_TO_ L***/***_TO_ UL***는 GMR/1/2기종에서만 사용 가능합니다.
48
제13강 펑션 프로그램(1) 2. 전송 펑션 1) MOVE 펑션 설명 입력: EN:EN이 1일 때 펑션 실행
IN1:전송할 데이터 출력: EN0:펑션이 수행되면 1출력 OUT: 데이터가 저장될 영역 MOVE IN1 EN OUT ENO BOOL ANY ⊙ 기능 ▶ EN단자가 ON되면IN1의 값을 복사하여 OUT으로 전송 ▶ IN1과 OUT의 데이터 타입은 동일
49
제13강 펑션 프로그램(1) 2) ARY_MOVE 펑션 설명 입력 EN ; EN이 1일때 펑션 실행
MOVE_NUM ; 옮길 개수 IN1 ; SOURCE IN2 ; DESTINATION IN1_INDX ; SOURCE의 선두 배열 번호 IN2_INDX ; DESTINATION의 선두 배열 번호 출력 ENO, OUT ; 펑션이 성공적으로 수행되면 1 출력 ⊙ 기능 ▶ ARRAY 변수로 설정된 IN1변수의 IN1_INDX단자에 지정되는 원소부터 MOV_NUM단자에 지정되는 수 만큼을 ARRAY 변수로 설정된IN2변수의 IN2_INDX 단자에 지정되는 원소부터 저장
50
제13강 펑션 프로그램(1) 3. 비교 펑션 1) GT (<) 설명 입력: EN:EN이 1일 때 펑션 실행
IN1~IN8:비교할 데이터 출력: EN0:펑션이 수행되면 1출력 OUT:비교 결과가 저장될 영역 IN1IN2... INn을 만족하면 1 출력 펑션 BOOL GT IN1 EN IN2 IN8 OUT …… ENO ANY_NUM ⊙ 기능 ▶ 입력값의 비교 결과 IN1IN2IN3... INn 을 만족하면 OUT으로1 출력 ▶ IN1IN2IN3... INn 의 조건 중 하나라도 만족하지 않으면 OUT으로 0 출력 ▶ IN1 ~ INn 까지 데이터 형은 동일 ▶ n은 최대 8까지 가능
51
제13강 펑션 프로그램(1) 2) GE (≥) 펑션 설명 입력: EN:EN이 1일 때 펑션 실행 IN1~IN8:비교할 데이터
출력: EN0:펑션이 수행되면 1출력 OUT:비교 결과가 저장될 영역 IN1IN2...INn을 만족하면 1출력 GE IN1 EN IN2 IN8 OUT …… ENO BOOL ANY_NUM ⊙ 기능 ▶ 입력값의 비교 결과 IN1IN2IN3...INn 을 만족하면 OUT으로1 출력 ▶ IN1IN2IN3...INn 을 만족하지 못하는 경우에는 OUT으로 0 출력 ▶ IN1 ~ INn 까지 데이터 형은 동일 ▶ n은 8까지 가능
52
제13강 펑션 프로그램(1) 3) EQ (=) 펑션 설명 입력: EN:EN이 1일 때 펑션 실행 IN1~IN8:비교할 데이터
출력: EN0:펑션이 수행되면 1출력 OUT:비교 결과가 저장될 영역 IN1=IN2...= INn을 만족하면 1출력 EQ IN1 EN IN2 IN8 OUT …… ENO BOOL ANY_NUM ⊙ 기능 ▶ 입력값의 비교 결과 IN1=IN2=IN3...= INn 을 만족하면 OUT으로1 출력 ▶ 입력값의 비교 결과 IN1=IN2=IN3...= INn을 만족하지 못하는 경우에는 OUT으로 0 출력 ▶ IN1 ~ INn 까지 데이터 형은 동일 ▶ n은 최대 8까지 가능
53
제13강 펑션 프로그램(1) 4) LE (≤) 펑션 설명 입력: EN:EN이 1일 때 펑션 실행 IN1~IN8:비교할 데이터
출력: EN0:펑션이 수행되면 1출력 OUT:비교 결과가 저장될 영역 IN1IN2... INn을 만족하면 1출력 LE IN1 EN IN2 IN8 OUT …… ENO BOOL ANY_NUM ⊙ 기능 ▶ 입력값의 비교 결과 IN1IN2IN3... INn 을 만족하면 OUT으로1 출력 ▶ 입력값의 비교 결과가 IN1IN2IN3... INn을 만족하지 못하면 OUT으로0 출력 ▶ IN1 ~ INn 까지 데이터 형은 동일 ▶ n은 최대 8까지 가능
54
제13강 펑션 프로그램(1) 5) LT (<) 펑션 설명 입력: EN:EN이 1일 때 펑션 실행
IN1~IN8:비교할 데이터 출력: EN0:펑션이 수행되면 1출력 OUT:비교 결과가 저장될 영역 IN1IN2... INn 을 만족하면 1출력 LT IN1 EN IN2 IN8 OUT …… ENO BOOL ANY_NUM ⊙ 기능 ▶ 입력값의 비교 결과 IN1IN2IN3... INn 을 만족하면 OUT으로1 출력 ▶ 입력값의 비교 결과 IN1IN2IN3... INn 을 만족하지 않으면 OUT으로 0 출력 ▶ IN1 ~ INn 까지 데이터 형은 동일 ▶ n은 최대 8까지 가능
55
제13강 펑션 프로그램(1) 6) NE (≠) 펑션 설명 입력: EN:EN이 1일 때 펑션 실행
IN1, IN2 :비교할 데이터 출력: EN0:펑션이 수행되면 1출력 OUT:비교 결과 저장 영역 IN1≠IN2이면 1출력 NE IN1 EN IN2 OUT ENO BOOL ANY_NUM ⊙ 기능 ▶ IN1과 IN2를 비교하여 값이 같지 않으면 OUT으로1 출력 ▶ IN1과 IN2를 비교하여 값이 같으면 OUT으로 0 출력 ▶ IN1 과 INn 까지 데이터 형은 동일
56
제13강 펑션 프로그램(1) ⊙ 비교 펑션 예제 – 창고의 현재 재고량 표시 ▶ 재고량을 BCD 표시기를 이용하여 표시
⊙ 비교 펑션 예제 – 창고의 현재 재고량 표시 ▶ 재고량을 BCD 표시기를 이용하여 표시 ▶ 0 ≤ 재고량 < 10 램프 1 ▶ 10 ≤ 재고량 < 20 램프 2 ▶ 20 ≤ 재고량 < 30 램프 3 ▶ 재고량 ≥ 30 입고 컨베이어 정지 ▶ 재고량 ≤ 0 출고 컨베이어 정지
57
제13강 펑션 프로그램(1) ▶ 프로젝트 및 프로그램 정의
58
제13강 펑션 프로그램(1) ▶ 프로그램 작성 클릭 클릭
59
제13강 펑션 프로그램(1) ▶ 펑션 종류 선택 및 입력 개수 선택
60
제13강 펑션 프로그램(1) ▶ 입력 변수 설정 클릭
61
제13강 펑션 프로그램(1) ▶ 프로그램
62
제13강 펑션 프로그램(1) ▶ 프로그램(계속) ▶ 지역 변수
63
제14강 펑션 프로그램(2) 1. 수치 연산 펑션 1) ADD (덧셈) 펑션 설명 입력: EN:EN이 1일 때 펑션 실행
IN1~IN8:덧셈할 데이터 출력: EN0:펑션이 수행되면 1출력 OUT:덧셈 결과가 저장될 영역 ADD IN1 EN IN2 IN8 OUT …… ENO BOOL ANY_NUM ⊙ 기능 ▶ EN 이 ON되면 INn으로 입력되는 데이터를 덧셈하여 OUT으로 지정된 영역에 저장 ▶ 입력 및 출력의 데이터 형은 동일 ▶ n은 최대 8개까지 입력 가능
64
제14강 펑션 프로그램(2) 2) SUB (뺄셈) 펑션 설명 입력: EN:EN이 1일 때 펑션 실행
IN1, IN2 :뺄셈할 데이터 출력: EN0:펑션이 수행되면 1출력 OUT:뺄셈 결과가 저장될 영역 SUB IN1 EN IN2 OUT ENO BOOL ANY_NUM ⊙ 기능 ▶ EN 이 ON되면 IN1로 입력되는 데이터에서 IN2로 입력되는 데이터를 뺄셈하여 OUT으로 지정된 영역에 저장 ▶ 입력 및 출력의 데이터 형은 동일
65
제14강 펑션 프로그램(2) 3) MUL (곱셈) 설명 펑션 입력: EN:EN이 1일 때 펑션 실행
IN1~IN8:곱셈할 데이터 출력: EN0:펑션이 수행되면 1출력 OUT:곱셈 결과가 저장될 영역 MUL IN1 EN IN2 IN8 OUT …… ENO BOOL ANY_NUM ⊙ 기능 ▶ EN 이 ON되면 INn으로 입력되는 데이터를 곱셈하여 OUT으로 지정된 영역에 저장 ▶ n은 최대 8까지 가능 ▶ 입력 및 출력의 데이터 형은 동일
66
제14강 펑션 프로그램(2) 4) DIV (몫 구하기) 펑션 설명 입력: EN:EN이 1일 때 펑션 실행
IN1, IN2 :나눗셈할 데이터 출력: EN0:펑션이 수행되면 1출력 OUT:나눗셈한 결과 중 몫이 저장될 영역 DIV IN1 EN IN2 OUT ENO BOOL ANY_NUM ⊙ 기능 ▶ EN 이 ON되면 IN1로 입력되는 데이터에서 IN2로 입력되는 데이터를 나눗셈하고, 그 결과 중 몫을 OUT으로 지정된 영역에 저장 ▶ 입력 및 출력의 데이터 형은 동일
67
제14강 펑션 프로그램(2) 5) MOD (나머지 구하기) 펑션 설명 입력: EN:EN이 1일 때 펑션 실행
IN1, IN2 :나눗셈할 데이터 출력: EN0:펑션이 수행되면 1출력 OUT:나눗셈한 결과 중 나머지가 저장될 영역 MOD IN1 EN IN2 OUT ENO BOOL ANY_NUM ⊙ 기능 ▶ EN 이 ON되면 IN1로 입력되는 데이터에서 IN2로 입력되는 데이터를 나눗셈하고, 그 결과 중 나머지를 OUT으로 지정된 영역에 저장 ▶ 입력 및 출력의 데이터 형은 동일
68
제14강 펑션 프로그램(2) ⊙ (%MW10+%MW11-%MW13)X10÷4 ▶ 몫:%MW17 ▶ 나머지:%MW18
69
제14강 펑션 프로그램(2) 2. 논리 연산 펑션 1) AND (논리곱) 펑션 설명 입력 EN : 1일 때 펑션 실행
IN1~IN8 : AND 연산 될 값 출력 ENO : EN값이 그대로 출력 OUT : AND연산 결과값 AND IN1 EN IN2 IN8 OUT …… ENO BOOL ANY_BIT ⊙ 기능 ▶ IN1을 IN2와 비트별로 AND 연산 해서 OUT으로 출력
70
제14강 펑션 프로그램(2) 2) OR (논리합) 펑션 설명 입력 EN : 1일 때 펑션 실행
IN1~IN8 : OR 연산 될 값 출력 ENO : EN값이 그대로 출력 OUT : OR연산 결과값 OR IN1 EN IN2 IN8 OUT …… ENO BOOL ANY_BIT ⊙ 기능 ▶ IN1을 IN2와 비트별로 XOR연산 해서 OUT으로 출력
71
제14강 펑션 프로그램(2) 3) XOR (배타적 논리합) 펑션 설명 입력 EN : 1일 때 펑션 실행
IN1~IN8 : XOR 연산 될 값 출력 ENO : EN값이 그대로 출력 OUT : XOR연산 결과값 XOR IN1 EN IN2 IN8 OUT …… ENO BOOL ANY_BIT ⊙ 기능 ▶ IN1을 IN2와 비트별로 XOR해서 OUT으로 출력
72
제14강 펑션 프로그램(2) 4) NOT (반전) 펑션 설명 입력 EN : 1일 때 펑션 실행 IN1 : NOT연산 될 값
출력 ENO : EN값이 그대로 출력 OUT : NOT 연산 결과값 NOT IN1 EN OUT ENO BOOL ANY_BIT ⊙ 기능 ▶ IN1을 비트별로 NOT 연산(반전)해서 OUT으로 출력
73
제14강 펑션 프로그램(2) 3. Bit Shift 연산 1) SHL (Shift-Left) 펑션 설명 입력
EN : 1일 때 펑션 실행 IN : 이동될 비트 열 N : 이동할 비트 수 출력 ENO : EN값이 그대로 출력 OUT : 이동된 값 SHL IN EN N OUT ENO BOOL INT ANY_BIT ⊙ 기능 ▶ 입력 IN을 N 비트 수만큼 왼쪽(상위 방향)으로 이동합니다. ▶ 입력 IN의 맨 오른쪽에 있는 N개 비트는 0으로 채워집니다.
74
제14강 펑션 프로그램(2) 2) SHR (Shift-Right) 펑션 설명 입력 EN : 1일 때 펑션 실행
IN : 이동될 비트 열 N : 이동할 비트 수 출력 ENO : EN값이 그대로 출력 OUT : 이동된 값 SHR IN EN N OUT ENO BOOL INT ANY_BIT ⊙ 기능 ▶ 입력 IN을 N 비트 수만큼 오른쪽(하위 방향)으로 이동합니다. ▶ 입력 IN의 맨 오른쪽에 있는 N개 비트는 0으로 채워집니다.
75
제14강 펑션 프로그램(2) 3) ROL(Rotation-Left) 펑션 설명 입력 EN : 1일 때 펑션 실행
IN : 이동될 비트 열 N : 이동할 비트 수 출력 ENO : EN값이 그대로 출력 OUT : 이동된 값 ROL IN EN N OUT ENO BOOL INT ANY_BIT ⊙ 기능 ▶ 입력 IN을 N 비트 수만큼 왼쪽(상위 방향)으로 이동 ▶ 입력 IN의 상위N개 비트는 출력 OUT의 하위 N개 비트로 이동
76
제14강 펑션 프로그램(2) 4) ROR (Rotation-Right) 펑션 설명 입력 EN : 1일 때 펑션 실행
IN : 이동될 비트 열 N : 이동할 비트 수 출력 ENO : EN값이 그대로 출력 OUT : 이동된 값 ROR IN EN N OUT ENO BOOL INT ANY_BIT ⊙ 기능 ▶ 입력 IN을 N 비트 수만큼 오른쪽(하위 방향)으로 이동 ▶ 입력 IN의 하위N개 비트는 출력 OUT의 상위 N개 비트로 이동
77
제14강 펑션 프로그램(2) 다시 하위 방향으로 이동합니다. ⊙ 프로그램
⊙ 프로그램 ▶ %QW0.1.0에 연결된 LED 램프가 상위 방향으로 이동하다가 %QX0.1.15램프가 켜지면 다시 하위 방향으로 이동합니다.
78
제15강 글로벌 변수 및 예약 변수 1. 글로벌 변수 1) 글로벌 변수
⊙ 기종별 프로그램 가능 수 ▶ GMR/1/2/3/4 : 최대 180개(태스크 프로그램 + 스캔 프로그램) ▶ GM6/7 : 최대 100개(태스크 프로그램 + 스캔 프로그램) ⊙ 글로벌 변수 – 프로젝트 내의 여러 프로그램에서 공통적으로 쓸 수 있는 변수 ▶ 입력 변수와 출력 변수 및 내부 메모리를 사용하는 변수 중 ‘사용자 정의’로 메모리 할당된 변수는 별도의 선언 없이 주소 할당으로 여러 프로그램에서 사용 가능
79
제15강 글로벌 변수 및 예약 변수 1) 글로벌 변수의 등록 ☞ 카운터의 ‘현재값’ 변수를 글로벌 변수로 등록합니다.
⊙ 프로그램 작성 ☞ 카운터의 ‘현재값’ 변수를 글로벌 변수로 등록합니다.
80
제15강 글로벌 변수 및 예약 변수 ⊙ 변수 ‘현재값’의 변수 종류를 VAR_EXTERNAL로, 메모리 할당을 자동으로 설정
81
제15강 글로벌 변수 및 예약 변수 ⊙ 프로그램 추가 ▶ 프로젝트 창에서 마우스의 오른쪽 버튼을 클릭
▶ 프로젝트 항목 추가 선택 ▶ 프로그램 선택
82
제15강 글로벌 변수 및 예약 변수 ⊙ 프로그램 정의 및 사용 언어 정의
83
제15강 글로벌 변수 및 예약 변수 ⊙ 새로 정의한 프로그램의 지역 변수에 글로벌 변수 등록
84
제15강 글로벌 변수 및 예약 변수 ⊙ 새로 작성한 프로그램에 글로벌 변수를 지역 변수로 등록
85
제15강 글로벌 변수 및 예약 변수 ⊙ 새로 작성한 프로그램에 등록된 변수를 프로그램에 사용
86
제15강 글로벌 변수 및 예약 변수 ⊙ 새로 작성한 프로그램
87
제15강 글로벌 변수 및 예약 변수 ⊙ 완성된 프로젝트
88
제15강 글로벌 변수 및 예약 변수 2. 예약 변수 1) 예약 변수 ▶ 사용자는 예약 변수 이름으로 변수 선언 불가능
▶ 시스템에서 선언한 변수 ▶ 사용자는 예약 변수 이름으로 변수 선언 불가능 ▶ 별도의 변수 선언 없이 사용 2) 예약 변수의 종류 ⊙ 사용자 플래그 ⊙ 시스템 에러 플래그 ⊙ 시스템 에러 해제 플래그 ⊙ 시스템 경고 플래그 ⊙ 시스템 운전 상태 플래그 ⊙ 통신 모듈 플래그 ⊙ 고속링크 플래그 ⊙ 리모트 제어 플래그
89
제15강 글로벌 변수 및 예약 변수 3) 사용자 플래그(1) 예약 변수 데이터 타입 내용 _LER 연산 에러 래치 접점
_T100MS _ERR BOOL 연산 에러 접점 _T20MS 20ms 클럭 접점 _T200MS _T1S _T2S _T20S _T10S _T60S 60초 클럭 접점 20초 클럭 접점 10초 클럭 접점 2초 클럭 접점 1초 클럭 접점 200ms 클럭 접점 100ms 클럭 접점
90
제15강 글로벌 변수 및 예약 변수 4) 사용자 플래그(2) 예약 변수 데이터 타입 내용 _1OFF 1스캔 OFF
_INIT_DONE _1ON BOOL 1스캔 ON _STOG 매 스캔 반전 _RTC_DATE _RTC_TOD _RTC_WEEK UINT TOD DATE RTC의 현재 요일 RTC의 현재 시간 RTC의 현재 날짜 초기화 태스크 프로그램 완료 _ON 항상 ON 접점 _0FF 항상 OFF 접점
Similar presentations