본문 바로가기
PLC/MITSUBISHI (MELSEC Q)

GX-WORKS2 (MELSEC Q) 라벨(레이블) 프로젝트 #2 Global Label(글로벌 라벨(레이블))과 Local Label(로컬 라벨(레이블))

by 쪼렙엔지니어 2021. 12. 18.
반응형

안녕하세요.

오늘은 Label(레이블) 프로젝트 두번째 시간이에요.

지난 시간에는 Label Project를 만들면 생성되는 FB Pool과 Label이용 방법에 대해

알아보았습니다. (아래 포스팅 참조)

https://mech19.tistory.com/91

 

GX-WORKS2 (MELSEC Q) 라벨(레이블) 프로젝트 #1 FB(펑션블록)와 Label(레이블)

오랜만에 GX-WORKS2를 켜보았습니다. 오늘은 바로 그 유용한 기능! 라벨(레이블) 프로젝트에 대해서 알아보려고 합니다. ​ 저는 "라벨 프로젝트"라고 부르는게 입에 익어서.. 라벨이라고 하겠습니

mech19.tistory.com

이어서 이번 시간에는 Label중에서 Global Label과 Local Label에 대하여

좀 더 자세히 알아보는 시간을 갖도록 하겠습니다.

먼저 아래와 같이 "Simple project", "Use label"을 이용하여

"New Project"를 하나 생성하도록 합니다.

그럼 Label이 생성되는곳은 아래와 같이 총 3곳입니다.

1. Global Label

2. Program

3. FB Pool

FB_Pool에는 아직 Label이 안보이죠?

FB를 생성하지 않아서 입니다.

FB를 하나 생성해 보도록 하겠습니다.

[FB_Pool]에서 우클릭하여 메뉴를 연 뒤에

[Add New Data]를 선택하면 됩니다.

그럼 아래와 같이 [New Data] 관리창이 생성됩니다.

여기서 "Data Type"은 "Function Block"으로 선택하고

"Data Name"은 원하는것으로 아무거나 하시면 됩니다.

"Program Language"도 원하는것으로 하시면 됩니다.

저는 FB1, Ladder로 만들도록 하겠습니다.

설정이 끝났으면 "OK"를 누르면 됩니다.

그러고 나면 FB_Pool에 FB1이라는 Function Block이 하나 생성되고

거기에 Local Label이 종속되어 같이 생성되는 것을 확인 할 수 있습니다.

자 그럼 Global Label과 Local Label의 차이점은 무엇일까요?

1. Global Label과 Local Label의 차이점

Global label과 Local label의 차이점으로는

사용이 가능한 영역의 차이가 있습니다.

Program과 Function Block은 위와 같이 여러개 만들 수 있다는건 알고 계시죠?

Global Label의 경우 모든 Program에서 사용이 가능합니다.

그러나 Local Label은 종속되어 있는 Program에 한정적으로 사용할 수 있죠.

한번 직접 해보면서 알아보겠습니다.

위와 같이 Global label에 Label을 생성해 놓으면

아래와 같이 여러 프로그램에서 모두 사용이 가능합니다.

다만 여기서 주의해야 할 점이 있습니다.

입력접점의 경우에는 상관없지만, 프로그램이 다르다고 하여 출력코일을 중복으로 사용하면

이중코일이 되어버립니다.

예를들어 아래와 같이

MAIN Program에도 Lamp2 label을 출력코일로 사용하고

PUMP Program에도 Lamp2 label을 출력코일로 사용하면 이중코일이 되어

MAIN Program에서의 입력접점 Pump1이 ON되면

PUMP Program에서의 입력접점 Pump2가 OFF상태에서도

출력코일 lamp2가 ON되는등의 문제가 발생합니다.

(스캔 순서가 반대라면 오히려 필요할때 lamp2가 ON되지 않겠지요.)

그렇기 때문에 출력코일에 Global Label을 사용할때는 항상 조심해야 합니다.

(입력접점으로 사용할때도 당연히 조심해야 합니다. 중복으로 동작하는것은 동일합니다.)

2. Label의 작성법

이제 Label 작성법을 간단히 알아보겠습니다.

1) Glbal Label

먼저 Global Label입니다.

작성해야 하는 곳은 하얀색으로 되어 있는 칸만 작성하면 됩니다.

그중에서도 중요한것은 "Label Name"과 "Data Type"인데

이것만 작성하면 나머지는 저절로 지정되는것도 있습니다.

Class에 보면 VAR_GLOBAL과 VARL_GLOBAL_CONSTANT가 있습니다.

상수일때를 제외하고는 전부 VAR_GLOBAL 입니다.

Label Name은 원하는걸로 입력하시면 됩니다.

Data Type도 필요한걸로 선택하시면 됩니다.

참고로 Timer나 Counter도 선택이 가능합니다.

Device는 지정해도 되고 지정하지 않아도 되지만 저는 개인적으로 사용할때 지정을 하는 편입니다.

(반대로 Local label을 작성할때는 지정을 하지 못합니다. 자동선택)

만약에 위 화면에서 처럼 지정하지 않은 Label들은 자동지정이 되는데

자동지정이 되는 영역은 아래에서 확인이 가능합니다.

[Tool]-[Device/Label Automatic-Assign Setting]을 따라서 실행해보면

아래와 같은 설정화면이 나타납니다.

여기서 하얀색 칸에 설정되어 있는 영역이 Label의 Device를 자동지정할때 사용하는 영역이고

하얀색으로 표시되어 있으므로 설정치를 변경가능합니다.

2) Local Label

다음으로 Local Label을 알아보겠습니다.

먼저 아래 화면은 Program의 Local Label입니다.

Local Label은 Global Label보다 작성칸이 적네요.

기본적인 내용은 Global Label과 동일하고 차이점만 설명하자면,

Class를 보면 VAR, VAR_CONSTANT, VAL_RETAIN이 있는데

일반적인 변수는 모두 VAR가 되고, 상수는 VAR_CONSTANT, 정전유지영역은 VAR_RETAIN으로

설정하면 됩니다.

또, Device는 아예 회색으로 표현되어 있지요?

이것은 건드릴수 없다는 의미입니다.

즉, 전부 자동지정이라는 의미이지요.

마지막으로 FB(Function Block)의 Local Label 입니다.

여기는 아예 DeVice칸이 없습니다.

여기서 중요한것은 Class입니다.

Class에 보면

VAR, VAR_CONSTANT, VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT, VAR_RETAIN이

있습니다.

가장 많네요.

FB(Function Block)을 만들고 Program에서 호출하여 사용하면

FB의 형태가 아래와 같음을 알 수 있습니다.

위와 같이 생긴 FB에 아래와 같이 접점들을 연결하여 사용하는 겁니다.

Class는 이 네모로 생긴 FB에서 Label(변수)이 하는 역할을 지정해 줍니다.

(아래 참조)

VAR : 내부접점

VAR_INPUT : 입력단자

VAR_OUTPUT : 출력단자

VAR_IN_OUT : 입출력 공통

VAR_CONSTANT : 상수

VAR_RETAIN : 정전유지

이제 대충 Label에 대한 감이 잡히시나요?

몇번 반복해서 프로그램을 작성하다보면 감이 잡히실겁니다.

연습만큼 중요한게 없어요.

오늘은 여기까지 입니다.

감사합니다.

반응형

댓글