아래의 내용은 "GXworks2"로 작업하였습니다.

※ 타이머란?

어떠한 시간을 주어 그 시간을 이용하여 다음 동작을 하게 만드는 것이다.

그림 1

▶ F7번을 누르거나 코일을 만들어 2번에 다음과 같이 입력한다.

▶ T0 K50 을 누르고 OK를 누른다. (T0 한칸 띄우고 K50을 적는다.)

▶ 설명 : T0란 코일을 만들고 K50(5초동안) 동작 시킨다. PB1을 누르면 자기 유지가 되어 타이머는 동작하게 된다. ( T는 타이머의 약자이다. T의 0번을 만든다는 것이다. M0가 계속 켜져 있지 않으면 타이머는 꺼지는 상태가 된다.)

 

※ 카운터란?

목표 갯수를 적어놓고, 어떠한 동작이 실행되면 그 동작이 목표 갯수에 도달하면 다음 동작을 하게 만드는 것이다.

그림 2

▶ F7번을 누르거나 코일을 만들어 2번에 다음과 같이 입력한다.

▶ C0 K10 을 누르고 OK를 누른다. (C0 한칸 띄우고 K10을 적는다.)

▶ 설명 : C0란 코일을 만들고 K10(10번 목표갯수)가 완료되면 다음 동작을 하게 만드는 것이다. PB1이 켜지면 자기유지가 되어 카운터는 1식 올라간다. 하지만 전기가 한번 들어왔을 때만 올라가기 때문에 PB2로 전기를 한번 끊고 PB1을 눌러서 다시 카운터가 되게끔 하는 방식이다. (C는 카운터의 약자이다. C의 0번을 만든다는 것이다. )

 

※ 여기서 문제점이 있다. 카운터는 동작이 다되었을 때 0으로 초기화가 자동을 되지 않는다. 그래서 따로 0으로 만들어주는 것을 해줘야 된다. 아래를 보도록 하자.

그림 3

▶ C0의 카운터가 다되었다면 C0는 B접점(또는 1 또는 ON상태)이 되는 상태일 것이다. 이때 C0가 켜지면 C0가 초기화가 되는 아주 효율적인 프로그래밍이다. 이때 F8번 또는 Application Instruction 을 만들어서 RST C0로 설정을 해주면 된다

▶ 설명 : RST는 GXworks에서 만들어둔 Function(함수)이다. C언어를 배우지 않았다면 "리셋 하는 기능을 만들었으니 편하게 써라. 예약어는 RST다."라고 인식하면 되겠다.

▶ Application Instruction은 Gxworks에서 미리 만들어둔 기능들을 쓰려면 이걸 쓰고 써라. 정도로 인식하면 되겠다.

 

※ 다른 초기화 방법은 없을까? 아래를 보도록 하자.

그림 4

▶ PB1을 누르면 C0의 카운터가 올라간다. 2번이 올라가면 초기화를 해야된다.

▶ PB2를 누르면 MOVE 기능이 작동한다. Move란 K0 를 C0에 넣겠다는 뜻이다. 여러번 들어오는 경우를 막기 위해서 P를 붙여서 사용한다. 

 MOVP K0 C0 , 설명 : "0의 숫자를 C0"으로 이동 시킨다 라는 뜻이다.

 

※ P에 대해서 알아보자.

P는 Pulse의 약자이다. Pulse는 매우 짧은 시간에 흐르는 전류라는 정의가 있다. CPU는 클럭으로 동작된다. 클럭이란 전류가 흘렀다 멈췄다 요런 개념으로 보면 되겠다.클럭이 올라갔다가 내려갔다가 반복(교류의 파장을 보면 이해가 쉬울것이다.)을 하는데 클럭이 오를때 감지는 것이 P(양변환)라고 보면 되고 클럭이 내려갈때 N(음변환)이라고 보면 되겠다. 고로 올라가는 그 짧은 한순간만 감지 하기 때문에 한번만 동작 하게끔 할 수 있다.

 

※ 연산자란?

말 그대로 연산을 해주는 녀석이다. 사칙연산, 비교연산 두개가 있다.

사칙연산을 해보자.

그림 5
예제

(+ 한칸 띄우고 K30 한칸 띄우고 K50 한칸 띄우고 D1를 입력해야 된다.)

 

1. + K30 K50 D1 80  -> 설명 : 30+50의 값을 D1(80)에 넣는 것이다.

2. - K50 K30 D2 20   -> 설명 : 50-30의 값을 D2(20)에 넣는 것이다.

3. * K20 K30 D3 600 -> 설명 : 20*30의 값을 D3(600)에 넣는 것이다.

4. / K60 K20 D5 3    -> 설명 : 60/20의 값을 D5(3)에 넣는 것이다.

 

 

※ 이것도 문제점이 있다. 프로그램이 돌아가다보면 한번만 계산을 해야되는데 두번 세번 계산 되는 경우도 있을 것이다. 그래서 한번만 들어왔을 때만 계산이 되게끔 해줘야 된다. 아래와 같이 바꿔보자.

예제

※ +p K30 K50 D1식으로 +뒤에 p를 붙어주면 되겠다. 나머지도 동일하다. 

-p , *p , /p 이런식이다.

 

※ 비교 연산을 해보자.

그림 6

(= 한칸 띄우고 K20 한칸 띄우고 K20을 입력해야 된다.)

예제

▶ 1. = K20 K20 --> M1 설명 : 20 = 20 , 20이 20이랑 같다면 참이 된다. 그래서 M1이 켜진다.

▶ 2. > K30 K40 --> M2 설명 : 30 > 40 , 30이 40보다 크다면 참이 된다. 하지만 아니기 때문에 M2가 켜지지 않는다.

▶ 3. >= K30 K30 --> M3 설명 : 30 >= 30 , 30이 30보다 크거나 같다면 참이 된다. 그래서 M3가 켜진다.

▶ 4. < K30 K40 --> M4 설명 : 30 < 40 , 30이 40보다 작다면 참이 된다. 그래서 M4가 켜진다.

▶ 5. <= K50 K40 --> M5 설명 : 50 <= 40 , 50이 40보다 작거나 같다면 참이 된다. 하지만 아니기 때문에 M5가 켜지지 않는다.

▶ 6 <> K30 K40 --> M6 설명 : 30 <> 40 , 30이 40이랑 다르면 참이 된다. 그래서 M6가 켜진다. (C언어의 ! 연산자 두개가 같지 않다면 참인 조건이다.)

 

+ Recent posts