[쉽고 간단한 안내서] TwinCAT 3에서 ST 언어와 LD 언어 사용하기

 

TwinCAT에서는 IEC61131-3 표준에 기초하는 PLC 프로그래밍 언어를 지원하고 있습니다. IEC63313-3 표준에는 그래픽 프로그래밍 언어인 LD, FBD, SFC와 함께 텍스트 기반 언어인 ST, IL과 같은 언어가 포함되어 있습니다. TwinCAT에서는 이러한 언어를 활용하여 보다 유연하게 프로그래밍을 할 수 있습니다. 이번 안내서에서는 위에서 언급된 5가지 언어 중, LD 언어와 ST 언어에 대해 살펴보도록 하겠습니다.

 

TwinCAT에서는 PLC 프로그래밍을 위한 표준인 IEC61131-3에 포함된 언어들을 지원하고 있습니다. IEC61131-3에는 LD(Ladder Diagram), FBD(Function Block Diagram), ST(Structed Text), IL(Instruction List), SFC(Sequential Function Chart) 5개의 언어가 포함되어 있습니다. 여기에서 LD, FBD, SFC은 그래픽 프로그래밍 언어이며 ST, IL은 텍스트 기반 언어입니다.

TwinCAT에서는 PLC 언어를 이용하여 프로그래밍을 할 수 있도록 에디터를 지원하고 있습니다. POU라고 하는 Program Organization Unit을 만들 때 사용할 언어를 선택할 수 있습니다.



어떠한 언어를 사용해서 프로그램을 작성할지는 사용자의 성향, 프로그램의 방향성 등에 따라 천차만별로 나뉘게 됩니다. 이번 안내서에서는 IEC61131-3 언어 중 대표적인 그래픽 기반 언어인 LD 언어와 텍스트 기반 언어인 ST 언어를 소개하고자 하며, 이를 TwinCAT 3에서 사용하는 방법에 대해 살펴보겠습니다.

 

LD 언어

많은 사람들이 익히 알고 있는 LD 언어(Laddeer Diagram, 레더언어)는 대표적인 그래픽 기반의 언어입니다. 부울 대수와 같은 논리연산을 구성하기 편리한 언어입니다. TwinCAT에서는 논리연산 프로그램을 하기 위한 주요 요소로 Network, Contact, Function Block 등을 제공하고 있습니다.

 

LD 언어를 구성할 수 있는 평면도(구성도)에는 Vertical line, Horizontal line으로 각 프로그래밍 요소들이 연결됩니다. TwinCAT에서는 Vertical linedEnergy line이라고도 이야기합니다. 프로그래밍 요소들은 Energy line의 규칙에 따라 연결됩니다.


 

구성요소

LD 언어의 구성요소로는 Network, Contact, Coil 등 다양한 요소들이 포함되어 있습니다. 그 중 대표적인 구성요소에 대해 소개하도록 하겠습니다.

NetworkLD 언어를 사용하기 위한 가장 기본적인 단위입니다. 논리와 산술 표현식, 프로그램, Function, Function Block을 호출하는 등 기본적인 역할을 하게 됩니다.



위 그림과 같은 Network는 단순하게 하나의 직선으로 볼 수도 있습니다. 이런 선들의 흐름을 따라서 원하는 논리가 구현되는 것을 확인하실 수 있습니다.

 

Contact 는 신호가 최종적으로 Network의 오른쪽 부분의 Coil에 도달할 때까지 왼쪽에서 오른쪽 방향으로 신호를 전달합니다. TRUE, FALSE와 같은 신호를 전달하기 위해서는 Contact??? 부분에 신호를 할당하여 이용할 수 있습니다.

Coil 은 왼쪽부터 전달되는 값을 가져온 후, Coil에 할당된 변수를 통해 TRUE 혹은 FASLE의 값을 표현합니다. 이어서, Edge Detection 은 상승, 하강 엣지를 감지하는 신호를 생성할 수 있습니다. 이런 기본적인 LD 언어의 요소를 이용한 예제를 살펴보겠습니다.

 


그 외에도 Jump, Label, Return과 같은 요소들이 있으며 이러한 내용들은 [링크]에서 확인할 수 있습니다.

 

BOX

LD 언어에서는 BOX 라는 요소도 사용할 수 있습니다. BOX를 이용하여 Function Block, Function 등을 호출하여 이용할 수 있습니다. 마찬가지로 간단한 예제를 통해서 보도록 하겠습니다.

 


추가적으로, Function Block의 기능에 대한 기호를 Function Block BOX안에 표기하고 싶을 경우에는 Tools Options TwinCAT PLC Environment FBD, LD and IL editor에서 Show box Icon을 체크하여 이용할 수 있습니다. 이런 Option 부분에서는 Editor를 사용할 때 사용자가 편리하게 이용할 수 있는 설정들을 제공하고 있습니다.




TwinCAT 3에서 LD 언어 사용하기

TwinCAT에서 PLC 프로젝트를 생성한 후, 간단하게 LD 언어를 사용하는 방법을 살펴보겠습니다. PLC 프로젝트를 생성하였다면 POU와 같은 요소를 생성하여 프로그램을 작성할 수 있습니다. POU 이름을 작성하고 Program을 선택한 다음 Implementation language 부분에서 Ladder Logic Diagram(LD)를 선택하여 LD 언어로 이루어진 프로그램을 작성합니다.



위에서 살펴본 LD 언어의 구성요소를 불러오기 위해서는 크게 Toolbar를 이용하거나 마우스 우클릭을 이용하여 구성요소를 불러올 수 있습니다.




Toolbar에서 확인할 수 있는 구성요소들은 마우스 포인터의 위치에 따라 활성화 또는 비활성화 됩니다. 때문에 사용자가 원하는 구성요소를 이용하기 위해서는 마우스 포인터의 위치가 중요합니다.



혹은 Network에서 마우스 우클릭을 해도 LD 언어의 구성요소를 확인할 수 있으며, 마찬가지로 마우스 포인터의 위치에 따라 구성요소가 활성화 또는 비활성화 됩니다.

 


Toolbax에서는 항상 활성화 되어있는 메뉴로 사용자가 원하는 요소를 Drag and drop 하여 원하는 위치에 놓는 방식으로 이용합니다. Toolbox에서는 LD 언어에서 사용할 수 있는 대부분의 요소를 포함하고 있습니다.



위 예시처럼 Coil 혹은 원하는 구성요소를 Network에 불러오면, ???과 같은 부분을 클릭하여 변수를 선언할 수 있습니다.



???를 클릭하면 Auto Declare가 나오며 Name에 변수 이름을 작성하고 Type에 원하는 Datatype를 입력하여 변수를 보다 쉽게 선언할 수 있습니다.




변수를 선언하고 프로그램 작성이 완료된 모습을 확인할 수 있습니다. 이 후 Run Mode를 진입하고 PLC Login Start를 이용하여 PLC를 구동합니다.




PLC가 동작하면 프로그램의 흐름에 따라서 파란색 표시로 표기가 되는 것을 확인할 수 있습니다. 지금은 단순하게 Coil만 이용하여 전체적인 흐름을 살펴보았습니다. 다음은 ST 언어에 대해 살펴보도록 하겠습니다.

 

 

ST 언어

ST 언어(Structed Text)는 텍스트 기반 언어입니다. Pascal 언어를 기반으로 만들어진 언어이며 고급 프로그래밍 언어입니다. 기존에 C언어 같은 텍스트 형태의 언어를 사용한 적이 있으시다면 보다 쉽게 적응하실 수 있습니다. ST 언어 또한 이해하기 쉬운 구조로 되어 있으며 디버깅에 유리한 장점이 있습니다.

 

LD 언어는 LD 언어와 마찬가지로 변수를 선언하고 Function Block 등을 호출하는 것은 동일합니다. 다만, 복잡한 명령문과 중첩 명령문을 보다 쉽게 활용할 수 있습니다. ST 언어를 활용하면 보다 빠르고 효율적인 프로그래밍을 할 수 있으며, 고급 프로그래밍 언어의 기능들을 그대로 활용할 수 있습니다. 이번 안내서에서는 ST 언어의 표현식과 문법에 대하여 가볍게 살펴보겠습니다.

 

표현식(Expressions)

ST 언어를 이용하여 프로그래밍을 할 때 사용하는 식들을 표현식이라고 합니다. 표현식은 연산자(Operator)과 피연산자(Operand)로 이루어져 있으며, 계산을 수행하는 표현식은 항상 결과값을 갖고 있습니다. 이런 결과 값이 할당되어야 할 경우에는 대입연산자(:=)를 이용합니다. 또한 이런 표현식은 반드시 세미콜론(;)으로 마무리해야 합니다.

예를 들어, Value라는 변수에 7을 더한 값을 Result라는 변수에 할당하기 위해서는 아래와 같이 표현합니다.



문법

이번 안내서에서는 많이 사용하는 조건문 IF, CASE문과 반복문 FOR문에 대해서만 살펴보겠습니다. 이 외에도 다양한 문법적인 요소들을 이용하여 보다 효율적으로 프로그래밍 할 수 있습니다.

먼저, IF문은 조건문으로 조건에 대해 TRUE 혹은 FALSE를 계산한 후 TRUE면 아래 구문을 실행하고 FALSE면 실행하지 않습니다. 단순하게 IF-ELSE1개의 조건만 이용할 수도 있으나 IF-ELSIF-ELSE로 여러 개의 조건을 이용할 수도 있습니다.




CASE문 또한 조건문으로 비교할 조건 변수가 어떤 값을 갖고 있는지에 따라 구문이 실행하게 됩니다.




FOR문은 조건식에 따라 제한된 수만큼 코드를 반복 실행하게 됩니다. 제한할 수를 사전에 알고 있어야 하며, 증감식에 따라 변수를 조절할 수 있습니다.     

11.5


 

TwinCAT 3에서 ST 언어 사용하기

TwinCAT에서 PLC 프로젝트를 생성한 후, 간단하게 ST언어를 사용하는 방법을 살펴보겠습니다. LD 언어와 마찬가지로 PLC 프로젝트를 생성하였다면 POU와 같은 요소를 생성하여 프로그램을 작성할 수 있습니다. POU 이름을 작성하고 Program을 선택한 다음 Implementation language 부분에서 Structed Text (ST)를 선택하여 ST 언어로 이루어진 프로그램을 작성합니다.




 

ST언어를 이용할 때에 VAR과 관련된 부분은 변수를 선언하는 선언부, 아래 부분은 실제 구문을 작성하는 구현부 부분으로 나뉘어집니다. 아래처럼 CASE문을 이용하여 간단한 조건문을 작성했습니다. LD 언어와 다르게 원하는 프로그램을 단순하게 타이핑하여 이용합니다.  


 

이 후 Run Mode를 진입하고 PLC Login Start를 이용하여 PLC를 구동합니다.




 

프로그램 동작 상태에 따라 TRUE, FALSE 뿐만 아니라 각 데이터 타입에 맞는 값들을 확인할 수 있습니다. Function BlockFunction같은 요소들도 각각 InputOutput 요소를 잘 확인한 후 작성하여 이용할 수 있습니다. 이러한 ST 언어를 활용하면 보다 시퀀스를 효율적으로 작성할 수 있습니다.  

 

마치며

언급하였듯, ST 언어와 LD 언어 이 외에도 다른 언어를 활용하여 사용자가 원하는 대로 프로그래밍을 할 수 있습니다. 물론 원한다면 여러 언어를 섞어서 사용할 수도 있습니다. 다만 언어를 혼용할 경우에는 추후 디버깅 등에 어려움이 있을 수 있으므로 유의해야 합니다.

 

위 내용에 대해 심화 내용이 필요하신 경우, 해당 내용을 댓글로 적어 주시면 다음 연재 시 반영하도록 하겠습니다.

 

문의사항은 아래 연락처로 연락 부탁드립니다.

전화 : 02-2107-3242 (대표전화, 내선번호 1: 영업, 내선번호 3번: 기술)

홈페이지 : https://www.beckhoff.com/kr/

제품문의 : Info-KR@beckhoff.com

기술문의 : support-kr@beckhoff.com

 참고자료

TwinCAT 3 PLC [링크]

 

Beckhoff Korea / Lisa Kim 

 

본 문서의 무단전재 및 재배포를 금지합니다

본 문서는 공식 매뉴얼이 아닌, 교육용 참고자료임을 명시합니다

댓글

이 블로그의 인기 게시물

[IPC 메뉴얼] BECKHOFF PC 기본 설정 방법

트라이텍, EtherCAT과 DeviceNet [월간CONTROL 2013/11]

[IPC 메뉴얼] BECKHOFF Device Manager 기본 사용 방법