본문 바로가기
PLC/LS PLC

LS electric XEC/XGI 프로그래밍(1)

by 테크플렉스 2023. 11. 24.
반응형

그동안 PLC 고객은 메이커(maker)마다 사용 언어와 통신 네트워크가 서로 달라 많은 불편함을 겪어 왔습니다. 이러한 불편함을 해소하고, PLC 고객에게 편리성을 도모하고자 IEC(International Electrotechnical Commission ; 국제 전기 표준 회의)에서 PLC 국제 표준화 규격이 제정 되었습니다.

 

국제 표준화 규격(IEC61131)은 크게 5 Part 로 구성되어 있는데
 Part 1 은 PLC 의 기본 기능 및 용어 정의
 Part 2 는 설비의 요구 기능 및 시험 조건
 Part 3 은 프로그램 언어
 Part 4 는 사용자 지침
 Part 5 는 통신 네트워크로 구성되어 있습니다.


XGI PLC 는 이 IEC 규격에 의해 개발되었으며 주요 특징은 다음과 같습니다.

 

1. XGI PLC 의 특징
1.1 IEC 표준 언어
IEC 언어에서 새로 도입한 가장 중요한 특징들은 다음과 같습니다.
▷ 다양한 데이터 타입(type)을 지원합니다.
▷ 펑션, 펑션 블록, 프로그램과 같은 프로그램 구성 요소가 도입되어 상향식,또는 하향식 설계가 가능하며 프로그램을 구조적으로 작성할 수 있습니다.
▷ 사용자가 작성한 프로그램을 라이브러리 화하여 다른 프로젝트에서 소프트웨어를재 사용할 수 있습니다.
▷ 다양한 언어를 지원하므로 사용자는 최적의 언어를 선택하여 사용할 수 있습니다.


IEC 에서 표준화한 PLC 용 언어는 두 개의 도형 기반 언어와 두 개의 문자기반 언어, 그리고 SFC 로 이루어져 있습니다.
(1) 도형식(graphic) 언어
  ① LD(Ladder Diagram) : 릴레이 로직 표현 방식의 언어
  ② FBD(Function Block Diagram) : 블록화한 기능을 서로 연결하여 프로그램을 표현하는 언어
(2) 문자식(text) 언어
  ① IL(Instruction List) : 어셈블리 언어 형태의 언어
  ② ST(Structured Text) : 파스칼 형식의 고 수준 언어
(3) SFC(Sequential Function Chart) : 플로우 차트(Flow Chart)와 유사한 형태로 순차적으로 전개되는 프로그램 전개 방식

 

2. 소프트웨어 구조
2.1 개요
PLC 응용 프로그램을 작성하기 전에 소프트웨어 측면에서 전체적인 PLC 시스템을 구성합니다. XGI/XGR/XEC PLC 에서는 PLC 시스템 전체를 하나의 프로젝트로 정의합니다.
프로젝트 안에는 하나의 PLC 시스템에 필요한 모든 것이 계층적으로 정의되어 있습니다.

 

 

2.2 프로젝트(Project)
▷ XGI/XGR/XEC PLC 의 프로그램을 작성하기 위해서는 우선 프로젝트를 구성하여야 합니다.
하나의 프로젝트를 구성한다는 것은 하나의 PLC 시스템에 필요한 모든 구성 요소를 작성한다는 의미입니다. 즉, 가장 기본적인 스캔 프로그램(일반적인 PLC 프로그램)뿐만 아니라 기본 파라미터, I/O 파라미터 등을 작성합니다.

 

2.3 글로벌/직접 변수
▷ 글로벌 변수 설정 부분, 직접 변수 설명문, 플래그 부분의 탭으로 보여주며 사용자가 필요한 정보를 작성 또는 사용하는 부분입니다.

 

2.4 파라미터
▷ 파라미터 부분은 PLC 시스템의 기동 시 필요한 여러 가지 정보를 작성하는 부분입니다.
▷ 기본 파라미터: 기본 파라미터 정보 중 기본 운전, 시간, 출력 제어 설정을 위한 부분과 PLC 전원이 꺼져도 데이터를 보존하는 영역 설정 부분, PLC 에 에러가 발생했을 때 동작 방법의 설정을 위한 부분 그리고 MODBUS 정보 설정 부분으로 구성되어 있습니다.
▷ I/O 파라미터: PLC 슬롯에 사용할 I/O 종류를 설정하고, 해당 슬롯 별로 파라미터를 설정합니다.

 

2.5 데이터 타입
▷ 데이터는 그 데이터의 고유 성질을 나타내는 데이터 타입을 가지고 있습니다. 예를 들어 ANY_NUM 으로 나타내면 LREAL, REAL, LINT, DINT, INT, SINT, ULINT, UDINT, UINT, USINT 를 모두 포함합니다. 자세한 사항은 3.2 의 항목을 참고하시기 바랍니다.

 

2.6 스캔 프로그램(Program)
▷ 입력 모듈에서 입력 데이터를 읽은 후 프로그램을 처음부터 끝까지 한번 수행하고, 그 수행 결과를 출력 모듈에 쓰는 일련의 동작을 반복하여 수행하는 응용 프로그램입니다.

 

2.7 사용자 펑션/펑션 블록
▷ 펑션: 펑션은 내부에 상태를 보관하고 있는 데이터를 갖지 않습니다. 즉 입력이 일정하면 출력 값도 일정해야만 펑션이 됩니다.
▷ 펑션 블록: 펑션 블록은 내부에 데이터를 가질 수 있습니다. 펑션 블록은 사용하기 전에 변수를 선언하는 것처럼 인스턴스를 선언하여야 합니다. 인스턴스라는 것은 펑션 블록에서 사용하는 변수들의 집합입니다. 즉, 펑션 블록은 내부에서 사용하는 변수뿐 아니라 출력 값도 펑션 블록 자체에서 보관합니다. 따라서 인스턴스가 보관된 데이터 메모리를 기억하고 있습니다. 프로그램도 펑션 블록의 일종이라고 볼 수 있으며, 프로그램 역시 인스턴스를 선언하여야 합니다. 그러나 프로그램은 펑션 블록과 다르게 프로그램 안이나 펑션 블록 안에서 불러 사용할 수는 없습니다.

 

2.8 태스크 프로그램
▷ 태스크 프로그램은 스캔 프로그램처럼 매 스캔 반복처리를 하지 않고, 실행 조건이 발생할 때만 실행을 합니다. 실행해야 할 태스크가 여러 개 대기하고 있는 경우는 우선순위가 높은 태스크 프로그램부터 처리합니다. 우선 순위가 동일한 태스크가 대기 중일 때는 발생한 순서대로 처리합니다.
▷ 태스크 종류는 정주기 태스크와 내부 접점 태스크가 있습니다.

 

3. 변수

변수란 프로그램 안에서 사용하는 데이터로서 값을 가지고 있습니다. 변수는 PLC 의 입력이나 출력, 내부 메모리 등과 같이 변할 수 있는 대상을 가리킵니다.

 

3.1 변수의 표현
▷ 변수의 표현에는 2 가지가 있습니다.
식별자에 의한 변수: 식별자에 의해 변수에 이름을 부여하는 것
직접변수: PLC 의 입·출력 또는 기억 장소에 대하여 직접적으로 표현하는 것
▷ 식별자에 의한 변수는 다른 변수들과 구별하기 위하여 그 이름의 변수가 선언된 프로그램 안에서 유일해야 합니다.
▷ 직접 변수의 표현은 퍼센트 문자(%)를 시작으로 위치를 나타내는 접두어와 데이터의 크기를 나타내는 접두어 그리고 마침표로 분리되는 하나 이상의 부호 없는 정수의 순으로 표현할 수 있습니다. 그 접두어들은 다음에 나타나 있습니다.

 

 

 

[예]
%QX3.1.4 또는 %Q3.1.4  : 3 번 베이스의 1 번 슬롯의 4 번 출력(1 비트)
%IW2.4.1 : 2 번 베이스의 4 번 슬롯의 워드 단위로 1 번 입력(16비트)
%MD48 : 48 의 위치에 있는 더블 워드 단위의 메모리
%MW40.3 : 40 의 위치에 있는 워드 단위의 메모리 중 3 번 비트
(내부 메모리는 베이스, 슬롯 등의 개념이 없음)
▷ 접두어로는 소문자가 올 수 없습니다.
▷ 크기 접두어를 붙이지 않으면 그 변수는 1 비트로 처리합니다.
▷ 직접변수는 선언하지 않고 사용할 수 있습니다.

 

3.2 변수의 선언
▷ 프로그램 구성 요소(즉 프로그램, 펑션, 펑션 블록)는 그 구성 요소에서 사용할 변수를 선언할 수 있는 선언 부분을 가지고 있습니다.
▷ 프로그램 구성 요소에서 변수를 사용하기 위해서는 우선 사용할 변수를 선언해야 합니다.
▷ 변수의 선언에서 설정해야 할 사항은 다음과 같습니다.

 

  1) 변수 종류 : 변수를 어떻게 선언할 것인가를 설정합니다.

  2) 데이터 타입 : 변수의 데이터 타입을 지정합니다.
  3) 메모리 할당 : 변수가 차지할 메모리를 할당합니다.
     자동(블랭크) ---- 컴파일러가 변수의 위치를 자동으로 지정(내부 데이터)
      사용자 정의 ---- 사용자가 직접변수(%I 또는 %Q)를 사용하여 강제로 위치를 지정

 

▷ 초기값(Initial Value) 지정 : 변수의 초기값을 지정합니다. 

 

[참고]
VAR_EXTERNAL 의 선언 시에는 초기값을 줄 수 없습니다.
변수 선언 시 %I 와 %Q 로 강제 할당한 변수에는 초기값을 줄 수 없습니다.

 

▷ PLC 의 전원이 끊긴 후에도 데이터의 값을 유지할 필요가 있는 변수는 정전 유지(Retention)의 기능이 제공되는 VAR_RETAIN 을 써서 선언할 수 있으며 다음의 규칙을 따릅니다.
  1) 정전 유지 변수는 시스템의 웜 리스타트시 그 값이 유지됩니다.
  2) 시스템의 콜드 리스타트시에는 사용자가 정의한 초기값이나 기본 초기값으로 초기화됩니다.
▷ VAR_RETAIN 으로 선언되지 않은 변수는 콜드 리스타트나 웜 리스타트 어느 경우에도 사용자가 정의한 초기값이나 기본 초기값으로 초기화됩니다.

 

[참고]
변수 선언 시 %I 와 %Q 로 강제 할당한 변수는 변수종류를 VAR_RETAIN, VAR_CONSTANT로 선언할 수 없습니다.
▷ 변수는 기본 데이터 타입을 인자로 갖는 어레이로 선언하여 사용할 수 있습니다.
어레이 변수로 선언할 때에는 인자로 사용할 데이터의 타입과 어레이의 크기를 설정하여야 합니다.
단, 기본 데이터 타입 중에 STRING 데이터 타입은 인자로 설정할 수 없습니다.
▷ 변수 선언의 유효 영역(Scope), 즉 변수를 사용할 수 있는 영역은 그 변수가 선언된 프로그램 구성 요소에 한합니다. 따라서 다른 프로그램 구성 요소에서 선언된 변수는 사용할 수 없습니다. 글로벌 변수로 선언된 변수는 이와 달리 모든 곳에서 VAR_EXTERNAL 선언에 의해 변수 접근이 가능합니다.

 

 

 

#출처: LS PLC 교육자료

반응형