아래의 내용은 "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언어의 ! 연산자 두개가 같지 않다면 참인 조건이다.)

 

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

※스캔타임이란?

프로그램을 시작을 하면 위에서 아래쪽으로 진행하는 시간이라고 보면 되겠다. 그림을 보도록 하자.

 

그림 1

▶ 프로그램을 시작하고 PB1을 누르면 빨간 화살표에 숫자순서로 진행된다.

▶ 3 -> 4번은 1번라인에 병렬로 연결 했기 때문에 순서가 그림1과 같이 이동하고 나머진 직렬로 연결되어있어서 차례대로 동작이된다. 

▶ 시작 -> END 로 진행이 완료가 되면 한 번 스캔타임이 끝난 상태가 된다. 

 

※ 자기유지란?

버튼을 눌렀다 떼었을 때 동작이 지속적으로 일어나게 하고 싶을 때 쓴다. 말 그대로 받아들이면 자기 자신을 이용해서 유지를 계속 하겠다는 말이다. 그림을 보도록 하자.

그림 2

▶ 1번의 빨간색 화살표는 전기가 들어온다고 생각하면 된다. 하지만 PB1 이랑 M0는 A접점이라 전기가 통하지 않는 상태가 된다.

▶ PB1을 눌렀을 때 전기는 파란색 화살표로 이동을 하게 된다. 그리고 난 뒤 M0를 키면 앞의 M0의 A접점이 접지가 되고 M0의 쪽으로 전기가 통하게 된다. 이때 PB1을 때도 전기가 계속 통하게 되므로 자기 유지가 된다. 

 

※ 스텝퍼 방식이란?

보통 래더 구조를 생각하면서 짜다보면 프로그램 작성 수 가 늘어가면 이곳 저것 논리적으로도 안맞고 버그처럼 동작 하는 경우도 있을거다. 그걸 방지하기 위해서 스텝퍼 방식이라는 방법으로 래더 프로그램을 짜면 더 쉽게 짜고 나중에 문제가 일어났을 시 빨리 찾을 수 있다. 아래 그림을 보도록 하자

그림 3

▶ 빨간색 네모로 된 구조 형식이 스텝퍼 방식이다.

▶ Cy_forward_S(실린더 전진 센서)가 하나 있다고 가정하자.  실린더가 전진하여 센서에 감지가 되었다. 하지만 M0가 켜지지 않으면 다음이 진행이 안된다. 그래서 선행 조건이 PB1을 켜서 M0를 활성화 시키는 것이다. 이처럼 스텝퍼는 전 동작이 진행이 되면 다음 동작이 일어나게 하게끔 만드는 것이다.

 

 

보통 구조는 아래와 같이 짠다.

※ Y0 는 실린더다. Y0에 Cy_forward_S(실린더 전진 센서)가 부착 되어있다.

 

▶ 제어부 , 동작부로 나눈다.

▶ PB1이 켜지면 M0가 켜지고, 동작부에 M0가 켜지므로 Y0는 작동을 한다.

▶ Y0가 작동하여 Cy_forward_S가 감지가 되면 M1이 켜지고 Y0는 동작을 멈추게 된다.

▶ M1이 켜졌으므로 M0의 자기 유지도 끊겨서 동작이 멈추게 된다.

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

 

※ 작업을 하다보면 입력접점 X0 , X1 ... , 출력접점 Y0, Y2 ... 이렇게 쓰다보면 실수를 하여 X0가 들어가야되는데 X1이 들어간다는 둥 헷갈리는 경우가 생길 수 밖에 없다. 그래서 라벨 기능을 활용 해보자.

그림 1

1. Global Label

Global Label은 어느 프로그램 파일에서도 다 쓰일수 있는 라벨이다. 예를 들어 Main에서도 쓰이고 Main2에서도 쓰이고 할 수 있는것이다. 그래서 입력 접점 X0,X1... 출력 접점 Y0, Y1...등을 써 넣는 것이 편하다.

2. Local Label

Local Label은 지금 쓰는 한 프로그램 파일에서만 쓰일 수 있는 라벨이다. 예를 들어 Main에서 쓰였던 라벨은 Main1에서는 못 쓰이는 것이다. 그래서 각각의 프로그램 파일에서 같은 이름의 라벨을 다르게 쓸 수 있다.

3. Class 

C++ 언어를 배웠으면 좀 더 이해하기가 쉽다. 같은 개념이라고 생각하면 되겠다.

배우지 않은 사람은 "이것 저것 담을 수 있는 상자를 담는 상자" 라고 생각하면 되겠다.

아래의 종류를 보자.]

Class 설명
VAR_GLOBAL 이것 저것 담을 수 있는 상자.(C언어의 변수의 개념)
VAR_GLOBAL_CONSTANT 이것 저것 담을 수 있는 상자에 한가지 값을 넣고 그 값이 변하지 않도록 하는 상자라고 보면 되겠다.(C언어의 상수의 개념)

4. Label Name

이름을 붙인다.

5. Data Type

C언어를 배운사람이면 이해가 편할 것이다. 어떤 데이터 타입 종류를 쓰는 것인지 고르는 것이다. 

C언어를 배우지 않은 사람은 어떤 값을 담을 상자 크기의 종류라고 보면 되겠다. 예를 들어 A 상자가 있다. 여기에는  1,2 만 담을 수 있다.  또 B 상자가 있다. 여기에는 1,2,3을 담을 수 있다. 근데 여기서 1,2,3 을 담아야 된다면, A라는 상자에는 3을 담을 수가 없다. 그래서 B라는 상자에 담아야 된다. 이처럼 어떤 값을 담을 수 있는 상자 크기의 종류가 바로 이런 이야기인 것이다.

나머지를 알고싶다면 컴퓨터의 메모리의 개념C언어 변수 타입을 배울 것을 권한다. 아래를 보자.

 

그림 2

1. Simple Type

일반적으로 쓰는 데이터 타입을 모아놨다. 아직은 Bit 데이터 타입 밖에 쓰지 않으니 나머진 참고용으로만 알자. 벌써부터 저거 다 알려고 머리 쓰면 머리만 아프고 도움이 안된다.

Data Type 설명
Bit 0 , 1  값을 표현 할 수 있다. 
Word[Singed] -32768 ~ 32767의 값을 표현 할 수 있다. (정수 표현)
Double Word[Signed] -2,147,483,648 ~ 2,147,483,647의 값을 표현 할 수 있다.(정수 표현)
FLOAT[Single Precision] -2^128 ~ -2^-126 , 0 , 2^-126 ~ 2^128의 값을 표현 할 수 있다.(실수 표현)
FLOAT[Double Precision] -2^1024 ~ -2^-1022,  0 ,  2^-1022 ~ 2^1024의 값을 표현 할 수 있다.(실수 표현)
String(32) 0 ~ 4,294,967,295의 값을 표현 할 수 있다.(문자를 숫자의 값으로 저장)
Counter 모르겠음.
Retentive Timer 모르겠음.
Pointer 모르겠음.

2. Structed Data Types

구조화 래더에 쓰이는 데이터 타입. 여기에선 안쓰인다.

3. Function Block

Function Block 타입 아직은 안쓰니 나중에 배우도록 하자.

 

※ 사용방법

그림 3

1. 화살표아래 아이콘 클릭해서 설정해주면 된다.

2. 클릭해서 라벨 이름 넣어주면 된다.

3. ... 클릭해서 Bit를 넣어주면 된다.

 

그림 4

※ 이렇게 넣어주면 끝이다.

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

 

1. -| |- (F5) 

[A접점의 기호이다.]

2. -|/|- (F6)

[B접점의 기호이다.]

3. -( )- (F7)

[Coil의 기호이다.]

4. X0

[입력 접점 X0를 A접점으로 설정하는 것이다. 만드는 방법은 "그림2"와 같이 만든다.]

그림 2

▶ 3-1의 공간에 마우스 좌클릭 한 뒤 키보드 Shift + Insert 하면 그림2에서 보이는 회색으로 된 줄이 추가 된다.

▶ 3-2의 공간에 마우스 좌클릭 한 뒤 키보드 F5를 누르면 Enter Symbol이 나온다.

▶ 3-3의 공간에 X0를 넣고 OK를 누르면 입력 접점 X0인 A접점이 만들어진다.

 

5. Y0

[출력 접점 Y0를 설정하는 것이다. 만드는 방법은 "그림3"와 같이 만든다.]

그림 3

▶ 4-1의 공간에 마우스 좌클릭 한 뒤 키보드 F7를 누르면 Enter Symbol이 나온다.

▶ 4-2의 공간에 Y0를 넣고 OK를 누르면 출력 접점 Y0인 코일이 만들어 진다.

 

※ 다 완료가 되었다면 F4를 눌러서 Bulid를 해주도록 하자. 그러면 회색 화면이 사라지면서 정상적으로 적용이 될 것이다. 만약 Bulid시 잘못 되었다면 무언가를 빠뜨렸을 가능성이나 잘못 기입 한 경우니 잘 찾아보길 바란다. 그리고 Build를 중간중간 하지 않고 프로그램만 짜다보면 나중에 기껏 짠 프로그램이 날라가는 경우도 있으니 유의하도록 하자.

 

 

 

※ 위와 같이 입력접점 출력접점 x0,y0...계속 쓰면 어디가 어떤 역할을 하는지 헷갈리게 된다.

그래서 설명하는 주석을 붙여주는것을 할 것이다.

 

아래는 Comment를 붙여주는 설명이다.

그림 4

1. Input Device Comment 

[간단하게 설명할 수 있게 설명을 남기는 것이다. 클릭하고 입력 접점을 넣고 OK를 누르면 Input Device Comment창이 뜰 것이다.

그리고 2번에 설명을 적으면 된다.]

 

※ 다 하고 나면 설명한게 보여야되는데 안보일 것이다. 설정을 안했기 때문이다. 

설정은 View -> Comment 를 클릭하거나 Ctrl + F5을 누르면 된다.

 

 아래는 Statement를 붙여주는 설명이다.

그림 5

▶ 1번의 빈공간에 마우스 더블클릭 하면 Enter Symbol이 뜰것이다. 그리고 난 뒤 2번에 ;(세미콜론)을 치고 "안녕하세요"라고 치고 OK를 누르면 위에 "안녕하세요"가 생길 것이다. 

 

※ 다 하고 나면 설명한게 안보일 것이다. 설정을 안했기 때문이다.

설정은 View -> Statement를 클릭하거나 Ctrl + F7을 누르면 된다.

그리고 ???????가 뜨면 언어 설정을 안해줘서 그런 것이니 아래 링크로 가서 설정해주면 된다.

https://tngus342.tistory.com/8?category=973052 

 

미쯔비시 MELSEC QCPU LADDER 시작하기

아래의 내용은 "GXworks2"로 작업하였습니다. 1. 새 파일 만들기. [새 파일을 만듭니다.] 2. Project Type -> Simple Project [ Simple Project 와 Structed Project 두 개가 있습니다. 둘다 그래픽 언어(Ladder..

tngus342.tistory.com

 

※ Statement는 설정했는데 어떻게 써먹을 것이냐 바로 인덱스(목차)의 기능이다. 만약에 프로그램이 길게 짜여 있으면 어디가 어떻게 짜였는지 모른다. 설명이 있어야 된다. 그 설명을 기입하고 거기로 이동하는 기능이라고 생각하면 되겠다.

 

아래 "그림6"을 보자.

그림 6

1. Edit -> Documentation -> Statement/Note Batch Edit

[Statement/Note Batch Edit을 여는 부분이다.]

2. Type

[Statement 설명의 타입이다. In PLC로 설정을 하면 PLC안에 Statement로 된 글자들이 PLC안에 넣는다는 이야기다. 즉 메모리가 차지가 된다는 말이다. 반면 In Peripheral은 PLC안에 안넣고 쓰는 경우이다.]

3. Display

[이 것을 체크하면 인덱스(목차)기능이 가능하다. 4번에 "안녕하세요"를 더블클릭 하게 되면 "안녕하세요"가 적혀진 곳으로 이동을 하게 된다.]

 

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

그림 1

1. 새 파일 만들기.

[새 파일을 만듭니다.]

 

2. Project Type -> Simple Project 

[ Simple Project 와 Structed Project 두 개가 있습니다. 둘다 그래픽 언어(Ladder , SFC) , 텍스트 언어 (Structed Text) 를 공통적으로 쓸 수 있고 , 다른점은 Structed Project을 선택하면 Structed Ladder/FBD 언어가 추가 됩니다. ]

 

3.  Use Label(사용시 체크 유/무)

[ 메모리 주소(X00 , Y10 등)을 라벨을 붙일 수 있습니다. 라벨이란 X00 ,Y10에 변수 이름을 붙이는 겁니다.

예를들어 "X00" 에 "스위치1"이라는 이름을 붙이고 "X00" 대신에 "스위치1"라고 적어서 프로그램 작성 시 이해하기 편하게 하기 위함입니다. ] 

 

4. PLC Series 

[어떤 CPU쓰는지 설정하는 것 입니다. 여기서는 "QCPU"이므로 "Q mode"로 사용합니다.]

 

5. PLC Type

[PLC에 보면 제품번호 같은 것이 있습니다. 거기에 맞춰서 설정하시면 됩니다.]

 

6. Language

[새 파일을 어떤 언어로 프로그래밍을 할 것 인가를 선택하는 것 입니다. 여기서는 "Ladder"로 합니다.]

 

그림 2

1. PLC Parameter

[PLC 초기 설정을 시작합니다.]

 

2. Connection Destination 

[PLC와 PC통신을 하기 위한 설정을 시작합니다.]

 

 

※ 통신 설정을 먼저합니다.

그림 3

 

그림 4

1. Ethernet Board

[이더넷 통신을 하기 위한 보드입니다. 여기에선 이더넷 통신을 씁니다. (만약에 다른 통신 방법을 쓰신다면 거기에 맞춰서 설정 하시면 됩니다.)]

 

2. PLC Module

[PLC 모듈을 설정 하는 부분입니다. "PLC Module"을 "더블클릭"하시면 아래의 "그림 5"처럼 나옵니다.]

 

3. No Specification

[연결이 되어있으면 노란색으로 바뀔 것 입니다. 만약 공유기 말고 다른걸 더 거처서 연결이 되는거라면 옆 Other Station(Single Network , Co-existence Network)로 연결 해주시면 됩니다.]

 

4. Connection Test

[ "그림 5" 처럼 연결을 다 하셨으면 누르시고 연결이 잘됬는지 테스트 하시면 됩니다.

(연결이 잘 됬으면 success 라는 팝업창이 뜰것입니다.)]

 

5. OK

[다 되셨으면 ok를 눌러주세요. 그래야 내용이 저장됩니다.]

그림 5

1. Ethernet Port Direct Connection

[위 그림과 같이 PC랑 PLC를 랜포트로 직접 연결하는 것입니다. ]

 

2. Connection via HUB

[PC -> 공유기 -> PLC , 공유기를 통하여 연결하는 경우 사용합니다. (이 글에선 공유기로 연결하는 것으로 합니다.)]

 

2 - 1. IP Address 

[Connection vi HUB를 클릭 시 IP Address가 나옵니다.  PLC 모듈의 IP주소를 작성합니다.

예를들어 ) PLC : IP 123.456.789.10 작성해 주시고 PC : IP 123.456.789.11 으로 설정을 해줘야 연결이 됩니다. IP의 앞 123.456.789는 같아야 같은 공유기로 통신이 되고 뒤에 10,11은 다르게 설정을 해줘야 PLC , PC랑 구분지어서 통신이 됩니다. (숫자는 임의로 넣은것이니 맞춰서 설정 해주시면 되겠습니다.)]

 

※ PLC Parameter 설정

"그림2"의 "PLC Parameter"를 "더블클릭"을 하면 아래 "그림 6"이 나옵니다.

그림 6

1. Program

[클릭합니다.]

 

2. Insert

[Insert를 클릭하면 왼편 Main이 2-1번으로 들어갑니다.]

 

3. Check

[Check를 누르면 됩니다. 정상적이면 "There is no error"라고 팝업창이 뜹니다.]

 

그림 7

1. I/O Assingment

[입력 , 출력 접점을 작성하는 부분입니다.]

 

2. Read PLC Data

[PLC에 연결된 접점을 불러옵니다.("그림 4"에서 통신을 연결 했기 때문에 자동으로 불러와집니다.)]

 

3. Check

[Check를 합니다. 정상적이면 "There is no error"라고 팝업창이 뜹니다.]

 

※ 변수이름 및 설명 언어설정 ※ 

그림 8

▶ 상단에 Tool -> Language Selection 누르면 "그림 8" 이 나옵니다. "Korean" 선택하시고 "Save the project(Overwrite save) 체크 해제하시면 쓰실 수 있습니다."

 

1. 아래의 내용대로 다운로드 하면 된다.

'PLC > GXWorks2' 카테고리의 다른 글

GxWorks2 모니터링 하는 방법  (0) 2021.11.28
GXworks2 설치  (0) 2021.11.27
MELSEL QCPU PLC 구조  (0) 2021.11.24
GXworks 2 기초명령어 및 단축키  (0) 2021.11.24

+ Recent posts