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

ST로 Counter의 기능을 만들어 보자.

user_Counter 펑션블록을 하나 만들었다.

user_Counter의 로컬 라벨들이다.

 

Counter의 로직이다.

bReset = true가 되면 cntCount = 0 이 된다.

input이 False면 return 시킨다.

bOnce = False면 bOnce = True로 바꿔주고 cntCount를 1증가 시킨다. bOnce의 조건을 준 이유는 한번만 증가 시키게 하기 위함이다.

결론 : input에 전기적 신호가 들어오면 카운터를 증가시키는 거다.

 

Function Block에서 Structure Ladder로 가져온 모습이다.

M0 가 켜지면 cntCount는 증가한다.

M1을 누르면 Reset 된다.

 

M0가 켜지면 cntCount가 1증가 했다.

M0를 4번 눌러서 cntCount가 4번 증가가 되었다.

M1을 누르면 bReset이 켜져서 cntCount가 0이 되었다. 잘된다.

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

 

ST로 Timer의 기능을 만들어 보자.

그림1

user_Timer 펑션블록을 하나 만들었다. 

로컬 라벨은 input 2개 output 2개로 만들었다.

 

Timer의 로직이다.

그림 2

input = true가 되기 전까지는 return으로 끝내서 return 이하의 문으로 진행이 안된다. 

input = true면 cntTime 을 100ms로 더해준다. 

만약 cntTime(현재진행시간) >= inputTime(입력된 시간) 보다 크다면 result(결과를 ) true로 반환한다.

 

Function Block에서 Structure Ladder로 가져온 모습이다.

M0 , M1은 임의로 준 내부 메모리다.

inputTime은 초기 설정값 즉, 3초만 되면 result가 true로 반환하는거다.

 

M0를 켜기전 상태이다.

M0를 눌러서 진행되는 상태이다.

3초가 완료되면 M1이 켜지는 모습이다. 잘된다.

1. 검색창에 M2I를 쳐서 다운로드 -> 소프트웨어 -> XDesignerPlus V4.8.31 를 다운로드 받습니다.

회원가입을 하셔야 받을 수 있습니다.

 

https://www.m2i.co.kr/down/soft/soft1_idx.jsp 사이트 주소입니다.

 

초기설정그림 1

초기설정

파일 -> 새로만들기 -> 새 프로젝트 을 하시면 그림 1과 같이 나옵니다.

여기에선 XTOP Series -> XTOP10TW-UD(-E) 으로 설정하였습니다. 

XTOP10TW-UD(-E) 이것은 HMI를 잘 보시면 모델명이 있습니다. 거기에 맞추시면 됩니다. 

 

그림 2

그림1 설정이 끝나면 그림2가 나옵니다.

여기에선 MISUBISHI(미쯔비시) -> MELSEC-Q Series CPU ETHERNET 모델로 진행을 합니다.

그림3

그림 2 설정이 끝나면 그림3이 나옵니다.

설정 매뉴얼을 누르면 친절히 매뉴얼이 다운로드 됩니다. 그거 보고 하셔도됩니다.

여기에선 매뉴얼대로 IP주소를 부여합니다. 192.168.000 3개는 통신하는 PLC, PC랑 맞춰 줘야됩니다.

매뉴얼대로 포트는 5006 , 프로토콜은 MELSOFT로 합니다.

 

그림 4

그림3으로 설정이 끝났다면 다음 설정을 합니다.

프로젝트 -> 프로젝트 설정 -> TOP 설정에 모델(XTOPTW-UD(-E)) 클릭 -> HMI 설정 사용 체크 -> PLC 설정 -> 프로토콜 UDP로 변경

매뉴얼에 보시면 PLC기종마다 프로토콜 방식 있습니다 그거 쓰시면 됩니다. 여기에선 UDP사용

 

그림 5

빌드 및 전송

설정이 끝나면 빌드 및 전송을 해보시기 바랍니다.

 

전송 -> 빌드 및 전송 -> PC IP 찾기 -> 전송

 

지금 작업하는 곳에선 HMI와 PC가 허브로 연결이 되어있지 않아 연결안됨으로 뜹니다. 제대로 하셨으면 연결 되셨을 테고 PC IP를 찾으신 다음 전송을 하시면 되겠습니다.

 

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

 

그림 1

▶ F2 또는 Edit -> List Operands 를 클릭하여 라벨을 만듭니다.

    1. 라벨이름

    2. 라벨이 위치하는 곳

    3. 라벨의 Class

    4. DataType

    5. 라벨을 만들었으면 표시되는 곳

 

※ 대입연산자이란?

말 그대로 대입하여 연산하는 녀석이라는 거다. 

 

그림 2

▶ 빨간 네모안에 처럼 작성을 한다.

▶ bStart := TRUE; , 설명 : bStart 에 TRUE을 넣는다.  := 이것이 대입연산자이다. 끝에는 ;(세미콜론)을 붙여야 한다. bStart의 Data Type이 Bit였으므로 0,1밖에 들어가질 못한다. 언어적인 측면에서는 0 -> FALSE가 되고 1 -> TRUE가 된다. ( bStart := 0 또는 1도 가능하다. )

 

※ 조건문이란?

어떠한 조건을 주어서 거기에 충족을 하면 조건 안에 있는 문장이 실행된다는 것이다.

그림 3

IF문

▶ IF <조건> THEN <실행할 문장> END_IF : ST언어의 IF문 입니다. C언어의 조건문과 비슷합니다.

▶ IF <조건> THEN <실행할 문장> ELSE <실행할 문장> END_IF 도 있습니다. (Gxworks2에선 ELSE IF 문을 써봣는데 에러가 떠서 안쓰는걸로 했습니다.)

▶ 설명 : IF을 적고 PB1이 TRUE면 iRoutine(Data type : Word)를 실행 시키고 END_IF로 조건을 닫습니다.

 

CASE문

▶ CASE <조건> OF <실행할 문장> ELSE <실행할 문장> END_CASE : ST언어의 CASE문입니다. C언어의 조건문과 동일합니다.

▶ 설명 : PB1을 누를 때 마다 iRountine이 1식 증가하는데 , 한번 누르면 iRountine의 값이 1이 되어서 1: 조건으로 들어갑니다. PB1을 한번 더 누르면 2: 조건으로 들어 갑니다. PB1을 마지막으로 누르면 ELSE 이하 문으로 들어가서 문장을 실행합니다. 0: 은 안들어 가겠죠?

 

※ 반복문이란?

어떠한 조건들이나 숫자들을 반복적 되는것을 제어 하기 위하여 쓰입니다.

For문

그림 3

▶ FOR문은 정해진 목표값 동안 반복하는 문장입니다.

▶ FOR <초기값> TO <목표값> BY <증가> DO <실행할 문장> END_FOR : iRoutine := 0 에서부터 TO 5까지 BY 1씩 증가하면서 DO 아래의 조건문을 실행한다는 뜻입니다. iResult 의 값은 6이 됩니다.

 

WHILE문

그림 4

▶ WHILE문은 조건문이 참이면 문장을 계속 실행합니다.

▶ WHILE <조건> DO <실행할 문장> END_WHILE : iRoutine < 5가 참인 조건이면 while문은 계속 돌아갑니다. iRoutine의 값이 5가 되면 while문은 종료가 됩니다.

 

REPEAT문

그림 5

▶ REPEAT문은 결과가 한 번 나오고 UNTIL의 조건이 참이 될 때까지 문장을 반복합니다.

▶ REPEAT <실행할 문장> UNTIL <조건> END_REPEAT

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

그림 1

1. 새 파일을 만들어 준다.

2. Project Type : Structured Projects

3. PLC Series : QCPU(여기에선 QCPU로 씁니다.)

4. PLC Type : 제품에 맞게 설정.

5. Language : Structured Ladder/FBD로 설정.

 

※ 일반 Ladder로 설정하고 Function block의 ST언어로 프로그래밍을 할 때 use macromode 때문에 Function block의 기능들을 쓰지 못합니다.

ladder에서 ST언어로 Function을 써서 짜는건 가능합니다만, 일일히 기능들을 다 만들어야 되므로 Structured Ladder로 짜는걸 추천드립니다.

 

또한 프로그램상 ST언어로만 단독으로 짜는 방법이 없었읍니다. (아시는분은 댓글에 남겨주세요.)

그래서 Structed Ladder안에서 ST언어로 프로그래밍된 Function Block을 불러와서 쓰는걸로 했습니다.

 

 

그림 2

▶ 빨간색으로 표시된 아이콘을 누르면 오른쪽 편에 Function(함수) , Function block(함수 블록), Operator(연산자) 들이 나옵니다.

그림 3

1. FB/FUN

우클릭 한 후 Add New Data를 클릭하면 New Data창이 하나 뜹니다. 

2. Data Type

여러가지가 있습니다만 Function Block을 사용합니다.

3. Data Name

이름을 설정하면 됩니다.

4. Program Language

ST언어로 프로그램 할꺼니까 ST로 선택합니다.

 

 

※ Function Block의 로컬 라벨을 설정합니다.

그림 4

▶ Function Block을 Ladder에서 쓰러면 VAR_INPUT , VAR_OUTPUT 두개의 변수가 있어야 됩니다.

 

그림 5

▶오른쪽에 Function Block에 그림 3에서 만든 MainFunc이 있습니다. 드래그 앤 드롭으로 빨간색 네모 칸으로 끌고 오시면 펑션 블록을 만들고 ladder 로컬 라벨에 등록이 됩니다.

▶1번 쪽 네모 아이콘을 누르시면 input label이라고 뜹니다. 클릭하시고 MainFucn1의 Input옆에 클릭하시고 라벨을 하나 만드시면 됩니다. 여기에선 특수 릴레이 sm400을 넣었습니다.

▶2번 쪽 네모 아이콘을 누르시면 output label이라고 뜹니다. 클릭하시고 MainFunc1의 output 옆에 클릭하시고 라벨을 하나 만드시면 됩니다. 여기에선 내부 릴레이 M0를 썼습니다.

 

 

1. Edit -> Ladder Edit Mode(z) -> Write mode(F2)

 F2 또는 위에 나온대로 들어가면 프로그램을 작성할 수 있는 상태가 된다. 

 

2. Online -> Monitor -> Monitor mode(F3)

F3또는 위에 나온대로 들어가면 모니터 모드로 가능하다. 시뮬레이션을 돌렸을 경우나 PLC에서 기구들이 동작을 할때 어떻게 움직이는지 볼 수 있다.

 

3. Start/Stop Silmulation

시뮬레이션을 켜고 끌수 있다.

※ 반드시 시뮬레이터를 돌릴려고 할 때 Build(F4)는 꼭 해주고 해야 돌아간다.

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

GXworks2 메뉴얼 다운로드  (0) 2021.11.27
GXworks2 설치  (0) 2021.11.27
MELSEL QCPU PLC 구조  (0) 2021.11.24
GXworks 2 기초명령어 및 단축키  (0) 2021.11.24

+ Recent posts