54
TM246 Structured Text

TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

  • Upload
    others

  • View
    20

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

TM246

Structured Text

Page 2: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

2 TM246 - Structured Text

선행 및 필요 조건

교육 자료 TM210 – Working with Automation Studio

TM213 – Automation Runtime

TM223 – Automation Studio Diagnostics

소프트웨어 Automation Studio 3.0.90 또는 그 이상 버전

하드웨어 없음

Page 3: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

TM246 - Structured Text

3

목차

목차

1 소개 ........................................................................................................................ 4

1.1 학습 목표 ................................................................................................... 4

2 일반 정보................................................................................................................. 5

2.1 Structured Text 특징 ................................................................................. 5

2.2 편집기 기능 ................................................................................................ 6

3 기본 요소................................................................................................................. 8

3.1 표현법 ........................................................................................................ 8

3.2 할당 ........................................................................................................... 8

3.3 소스 코드 문서: 주석 .................................................................................. 9

3.4 수행 순서 ................................................................................................. 10

3.5 예약 키워드 .............................................................................................. 11

4 명령 그룹............................................................................................................... 12

4.1 이진 연산 ................................................................................................. 12

4.2 산술 연산 ................................................................................................. 13

4.3 데이터 타입 변환 ...................................................................................... 14

4.4 비교 연산과 판별 ...................................................................................... 16

4.5 상태 기계 State machine - CASE 문 ........................................................ 19

4.6 루프 Loop ................................................................................................ 21

5 펑션, 펑션 블록과 액션 .......................................................................................... 27

5.1 펑션과 펑션 블록 호출 .............................................................................. 27

5.2 액션 호출 ................................................................................................. 29

6 추가 기능과 부가 기능 ........................................................................................... 31

6.1 포인터와 레퍼런스 Pointers and references ............................................ 31

6.2 IEC 프로그램 전처리기 ............................................................................ 31

7 진단 기능............................................................................................................... 32

8 예제 ...................................................................................................................... 33

8.1 예제 - 박스 리프트 .................................................................................... 33

8.2 예제 - 분산 믹서 ....................................................................................... 34

9 요약 ...................................................................................................................... 36

10 부록 ...................................................................................................................... 37

10.1 배열 ......................................................................................................... 37

10.2 예제 해답 ................................................................................................. 40

Page 4: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

소개

4 TM246 - Structured Text

1 소개

Structured Text는 고급 프로그래밍 언어입니다. 기본 개념에는 BASIC, Pascal 및 ANSI C 언어에서

가져온 요소가 포함됩니다. 이해하기 쉬운 표준 구성으로 Structured Text (ST)는 자동화 분야에서 빠르고

효율적인 프로그래밍 방법입니다.

다음 장에서 Structured Text에서 사용되는 명령, 키워드 및 구문을 소개합니다. 개념을 실제로 이해하기

쉽게 간단한 예를 통해 설명합니다.

1.1 학습 목표

교육 자료는 선택된 연습을 사용하여 ST(Structured Text) 고급 언어 프로그래밍 기초를 배우도록

도와줍니다.

• 고급 언어 편집기 및 Automation Studio의 SmartEdit 기능을 배웁니다.

• 고급 언어 프로그래밍에 사용되는 기본 요소와 ST 명령을 사용법을 배웁니다.

• 명령 그룹과 산술 펑션 사용법을 배웁니다.

• 비교 및 부울 연산자 사용법을 배웁니다.

• 프로그램 흐름 제어에 사용되는 요소 호출 방법을 배웁니다.

• 예약된 키워드로 작업하는 방법을 배웁니다.

• 액션, 펑션 및 펑션 블록의 차이점과 사용 방법을 배웁니다.

• 고급 언어 프로그래밍에 쓰이는 진단 기능을 학습합니다.

Page 5: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

TM246 - Structured Text

5

일반 정보

2 일반 정보

2.1 Structured Text 특징

일반 정보

ST는 자동화 시스템을 위한 텍스트 기반의 고급 프로그래밍 언어입니다. 간단한 표준 구성으로

프로그래밍이 빠르고 효율적입니다. ST는 변수, 연산자, 함수 및 프로그램 흐름 제어 요소를 포함하여 고급

언어의 전통적인 기능 많이 사용합니다.

ST 프로그래밍 언어는 IEC1준수에 따르는 표준입니다.

특징

Structured Text는 다음과 같은 특징이 있습니다:

• 고급, 텍스트 기반 언어

• 구조화 된 프로그래밍

• 사용하기 쉬운 표준 구성

• 빠르고 효율적인 프로그래밍

• 자명하고 유연한

• 파스칼 Pascal과 유사

• IEC 61131-3 표준 준수

가능성

Automation Studio는 다음 기능을 지원합니다:

• 디지털 및 아날로그 입력 및 출력

• 논리 연산

• 논리 비교 표현식

• 산술 연산

• 결정

• 단계 전환 메커니즘

• 루프

• 펑션 블록(Function blocks)

• 동적 변수

• 액션 호출

• 통합형 진단

1 IEC 61131-3 표준은 PLC(Programmable logic controller)에 사용되는 프로그래밍 언어를 위한 유일한 국제

표준입니다. 표준에는 Structured Text 외에도 Sequential Function Chart, Ladder Diagram, Instruction List,

Function Block Diagram 언어가 정의되었습니다.

Page 6: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

일반 정보

6 TM246 - Structured Text

Programming \ Editors \ Text editors

Programming \ Editors \ General operations \ SmartEdit

Programming \ Editors \ General operations \ SmartEdit \ Code snippets

Programming \ Programs \ Structured Text (ST)

2.2 편집기 기능

편집기는 많은 기능이 포함된 텍스트 편집기입니다. 명령 command과 키워드 keyword는 컬러로

표시됩니다. 영역을 확장하거나 축소 할 수 있습니다. 변수 및 구문 자동 완성 기능을 지원합니다

(스마트편집 SmartEdit).

그림 1: ST 에디터로 구현한 프로그램

편집기에 아내에 나열된 기능이 있습니다:

• 대문자와 소문자 구분 (대소문자 구분)

• 자동 완성 (스마트편집 SmartEdit, <CTRL> + <SPACE>, <TAB>)

• 코드 스니핏 삽입 및 관리 (<CTRL> + q, k)

• 해당 괄호 쌍 식별

• 확장 및 축소 구문 (개요)

• 블록 주석 삽입

• URL 인식

• 수정된 라인 표시

Page 7: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

일반 정보

TM246 - Structured Text

7

Programming \ Editors \ Table editors \ Declaration editors

변수 선언 편집기는 변수, 상수, 사용자 데이터 타입 및 구조체 초기화를 지원합니다. 또한 사용된 변수에

주석을 달고 문서를 만들 수 있습니다. 선언 편집기 declaration editors는 스마트편집 SmartEdit 기능도

지원합니다.

Page 8: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

기본 요소

8 TM246 - Structured Text

b + c;

(a - b + c) * COS(b);

SIN(a) + COS(b);

표 1: 표현법 예

Result := ProcessValue * 2; (*Result ←(ProcessValue * 2) *)

표 2: 오른쪽에서 왼쪽으로 할당

이 코드가 실행될 때 "Result"변수 값은 "ProcessValue"변수 값의 두 배입니다.

Result := ProcessValue.1;

표 3: "ProcessValue"의 두 번째 비트 접근

3 기본 요소

다음 장에서는 ST 기본 요소를 자세히 설명합니다. 프로그램 코드에서 표현법, 할당, 주석 사용 및 예약

키워드에 대해 설명합니다.

3.1 표현법

식은 계산 된 값을 반환하는 구문입니다. 표현식은 연산자와 피연산자로 구성됩니다. 피연산자는 변수, 상수,

펑션 호출일 수 있습니다. 연산자는 피연산자를 연결하는 데 사용됩니다 (3.4 "작업 순서"). 펑션 호출이나

할당 유무와 관계 없이 모든 표현식은 세미콜론 ( ";")으로 끝나야 합니다.

3.2 할당

오른쪽에 있는 계산이나 표식 결과는 할당 연산자 ": ="를 사용하여 왼쪽에 놓인 변수에 할당합니다. 모든

할당은 세미콜론 ";"으로 끝맺어야 합니다.

변수 비트 접근

할당 할 때 특정 비트(bit) 만 할당 할 수 있습니다. 변수 이름 뒤에 마침표 ( ".")를 넣으십시오. 그 다음 0부터

시작하는 비트 번호를 사용하여 접근합니다.

0. 비트 번호 대신 상수를 사용할 수 있습니다.

Page 9: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

기본 요소

TM246 - Structured Text

9

표 4: 주석 변형

Programming \ Editors \ Text editors \ (Un)commenting selections

Programming \ Structured software development \ Program layout

3.3 소스 코드 문서: 주석 comment

주석은 소스 코드의 중요한 부분입니다. 코드를 설명하여 이해하기 쉽고 읽을 수 있습니다. 주석을 통해

개발자나 다른 사람이 프로그램 개발이 완료된 이후에도 프로그램을 이해할 수 있습니다. 컴파일 되지

않으며 프로그램 실행에 영향을 미치지 않습니다. 주석은 괄호와 별표 사이에 있어야합니다 예 : (*주석*).

추가 주석 양식은 "//"를 사용합니다. 편집기에서 여러 줄을 선택하고 툴바 아이콘을 사용하여 주석을 처리 할

수 있습니다. 이 변형은 기존 IEC 표준의 확장입니다.

그림 2: 텍스트 블록 주석 처리

한 줄 주석 (*This is a single line of comment.*)

여러 줄 주석

(*

These

are several

lines of comment.

*)

"//”을 사용한 주석

// This is a general

// text block.

// It contains comment.

Page 10: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

기본 요소

10 TM246 - Structured Text

표현식은 왼쪽에서 오른쪽으로 실행됩니다. 괄호의 우선 순위가 높으므로 곱하기 전에 괄호 안에

연산이 실행됩니다. 괄호를 사용하면

다른 결과로 이어질 수 있습니다.

(* Result equals 26 *) Result := (6 + 7) * (5 - 3);

곱셈 후 덧셈이 수행됩니다. 마지막에 뺄셈이 수행됩니다.

괄호 없이 표현식 풀기:

(* Result equals 38 *) Result := 6 + 7 * 5 - 3;

괄호 없이 표현식 풀기:

3.4 수행 순서

다른 연산자를 사용하면 우선 순위 문제가 발생합니다. 식을 풀 때 연산자 우선 순위가 중요합니다.

우선 순위가 가장 높은 연산자를 먼저 고려하여 식을 해결합니다. 우선 순위가 동일한 연산자는 표현식에 표

시대로 왼쪽에서 오른쪽으로 실행됩니다.

연산자 Operator 구문 Syntax

괄호 () 높은 우선 순위

펑션 호출 펑션이름()

제곱 **

반대 NOT

곱하기, 나누기, 나머지 연산 *, /, MOD

더하기, 빼기 +, -

비교 <, >, <=, >=

같다, 다르다 =, <>

이진 연산 AND AND

이진 연산 XOR XOR

이진 연산 OR OR 낮은 우선 순위

컴파일러가 표현식 분석을 수행합니다. 다음 예는 괄호 사용에 따른 다른 결과를 보여줍니다.

Page 11: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

기본 요소

TM246 - Structured Text

11

프로그래밍에서 모든 변수는 작명 규약을 따라야합니다. 게다가 편집기에

등록되어 있는 예약 키워드는 다른 색으로 표현됩니다. 이들은 변수로 사용할 수 없습니다.

라이브러리 OPERATOR 및 AsIecCon은 새 프로젝트 표준의 한 부분입니다. 여기에 포함 된

펑션은 키워드로 해석되는 IEC 기능입니다.

또한 표준은 숫자 및 문자열의 문자 표현 방식도 정의합니다. 이를 통해 다른 형식으로 숫자를

표현할 수 있습니다.

Programming \ Structured software development \ Naming conventions

Programming \ Standards \ Literals in IEC languages

Programming \ Programs \ Structured Text (ST) \ Keywords

Programming \ Libraries \ IEC 61131-3 functions

3.5 예약 키워드

Page 12: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

12 TM246 - Structured Text

4 명령 그룹

다음 명령 그룹은 고급 언어 프로그래밍의 기본 구성입니다. 해당 구성은 유연하게 결합되고 서로 중첩 될 수

있습니다.

명령 그룹 범주에 따라 아래처럼 분류 할 수 있습니다:

• 4.1 "이진 연산"

• 4.2 "산술 연산"

• 4.4 "비교 연산과 판별"

• 4.5 "기계 기계 - CASE 문"

• 4.6 "루프 Loop"

4.1 이진 연산

이진 연산은 이진법 레벨에 변수 값을 연계할 때 사용됩니다. NOT, AND, OR 및 XOR은 서로 구별됩니다.

피연산자 데이터 타입이 BOOL이 아니어도 상관 없습니다. 연산 순서를 고려해야 합니다. 괄호를 사용할 수

있습니다.

기호 논리 연산 예

NOT 이진 부정 a := NOT b;

AND 논리 AND a := b AND c;

OR 논리 OR a := b OR c;

XOR 배타적 논리합 a := b XOR c;

표 5: 이진 연산 개요

연산자 진리표는 아래와 같다:

입력 AND OR XOR

0 0 0 0 0

0 1 0 1 1

1 0 0 1 1

1 1 1 1 0

표 6: 이진 연산자 진리표

이진 연산은 어떤 방식으로든 조합이 가능합니다. 추가 괄호 설정은 가독성을 증가시키거나 올바른 결과

값을 도출할 수 있습니다. 표현식 결과는 항상 TRUE(논리적으로 1)이거나 FALSE(논리적으로 0)이다.

Page 13: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

TM246 - Structured Text

13

예제: 조명 제어

"BtnLigntOn"버튼을 누르면 출력 "DoLight"가 ON이고 "BtnLightOff"버튼을 누를 때까지 ON 상태를

유지합니다. 이진 연산을 사용하여 해결하십시오.

그림 4: 온-오프 스위치, 래치 있는 릴레이

4.2 산술 연산

고급 프로그래밍 언어의 주요 장점은 산술 연산을 쉽게 처리할 수 있습니다.

산술 연산 개요

Structured Text는 응용 프로그램을 위한 기본 산술 연산을 제공합니다. 다시 한번 언급하지만 사용시 작업

순서를 명심해야 합니다. 예를 들어, 곱셈은 덧셈 전에 수행됩니다. 괄호를 사용하여 희망 동작 순서를 지정

할 수 있습니다.

기호 산술 연산 예예

:= 할당 a := b;

+ 덧셈 a := b + c;

이진 연산자- 래더 다이어그램(Ladder Diagram)과 Structured Text 비교

그림 3: normally open 과 normally closed contact 연결

doValveSilo1 := diSilo1Up AND NOT doValveSilo2 AND NOT doValveSilo3;

표 7: 이진 연산자로 구현

NOT이 AND보다 우선 순위가 높으므로 괄호는 필요하지 않습니다. 그럼에도 불구하고 명확한

프로그램을 위해 괄호 사용이 좋습니다.

doValveSilo1 := (diSilo1Up) AND (NOT doValveSilo2) AND (NOT

doValveSilo3);

표 8: 이진 연산자로 구현;; 괄호 사용

Page 14: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

14 TM246 - Structured Text

- 뺄셈 a := b - c;

표 9: 산술 연산 개요

Page 15: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

TM246 - Structured Text

15

암시적 데이터 타입 변환을 수행하더라도 컴파일러와 변환 대상에 따라

잘못된 결과가 발생할 수 있습니다. 여기서 한 가지 위험은 서명되지 않은 값을 서명된 데이터

타입에 할당하는 것입니다.

더하거나 곱할 때 오버플로 오류가 발생할 수 있습니다. 그러나 사용중인 플랫폼에 따라 다릅니다.

이 경우 컴파일러는 경고를 발행하지 않습니다.

기호 산술 연산 예

* 곱셈 a:= b *c;

/ 나눗셈 a := b / c;

MOD 나머지 연산 a := b MOD c;

표 9: 산술 연산 개요

변수의 데이터 타입과 값은 계산시 중요합니다. 계산 결과는 표현식 오른 쪽에서 계산된 결과 값이며 해당

변수에 할당됩니다. 사용 중인 데이터 타입 및 구문(표기법)에 따라 결과가 다릅니다. 다음 표는 관련

예시입니다.

표현식 / 구문 데이터 타입

Data types

결과

결과 피연산자1 피연산자2

Result := 8 / 3; INT INT INT 2

Result := 8 / 3; REAL INT INT 2.0

Result := 8.0 / 3; REAL REAL INT 2.66667

Result := 8.0 / 3; INT REAL INT *Error

표 10: 컴파일러가 암시적으로 변환하여 수행

결과 값 "* Error"는 아래에 컴파일러 오류 메시지를 나타냅니다. "Error 1140: Incom- patible

data types: Cannot convert REAL to INT.". 특정 데이터 타입에 식을 할당 할 수 없기

때문입니다.

4.3 데이터 타입 변환

프로그래밍 할 때 필연적으로 다른 데이터 타입을 직면합니다. 원칙적으로 프로그램에서 데이터 타입을

혼합 할 수 있습니다. 다른 데이터 타입 할당도 가능합니다. 그럼에도 불구하고 이 점에 주의해야 합니다.

암시적 데이터 타입 변환

프로그램 코드에서 할당이 수행 될 때마다 컴파일러는 데이터 타입을 확인합니다. 스테이트먼트에서 할당은

항상 오른쪽에서 왼쪽으로 이루어집니다. 그러므로 변수는 값을 보관할 충분한 공간을 가지고 있어야합니다.

작은 데이터 타입에서 큰 데이터 타입 변환은 사용자 조치없이 컴파일러 자체적으로 수행됩니다.

큰 데이터 타입의 값을 작은 데이터 타입의 변수에 할당하면 컴파일러 오류가 발생합니다. 이 경우 명시적

데이터 타입 변환이 필요합니다.

Page 16: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

16 TM246 - Structured Text

표 11: 암시적 데이터 타입 변환 예

모든 변수 선언은 IEC 포멧에 목록이 있습니다. 변수 선언은 해당 프로그램의 .var 파일를 텍스트

뷰로 열어서 관련 포멧으로 입력할 수 있습니다.

오버플로우가 발생할 수 있는 위험한 에러 예시입니다:

VAR

TotalWeight: INT;

선언: Weight1: INT;

Weight2: INT;

END_VAR

프로그램 코드: TotalWeight := Weight1 + Weight2;

표 12: 할당 연산자 오른쪽에서 오버플로우 오류가 직접 발생할 수 있습니다.

이 경우에 결과 데이터 타입은 더하기 연산 합을 보유하기에 충분한 공간이 있어야 합니다. 결과적으로 큰

데이터 타입이 필요합니다. 피연산자 하나 이상이 큰 데이터 유형으로 변환해야 합니다. 그 다음 두 번째

피연산자 변환은 컴파일러 내부적으로 처리합니다.

VAR

TotalWeight: DINT;

선언: Weight1: INT;

Weight2: INT;

END_VAR

프로그램 코드: TotalWeight := INT_TO_DINT (Weight1) + Weight2;

표 13: 명시적 변환을 사용하여 오버플로우 오류를 방지 할 수 있습니다.

32-bit 플랫폼에서, 계산에 사용되는 피연산자는 32-bit 값으로 변환됩니다. 이 경우에 더하기는 오버플로우

에러가 발생하지 않습니다.

표현법 데이터 타입 Data

types

메모

Result := Value;

(*UINT USINT*)

UINT, USINT 암시적 변환을 위해 별도

액션이 필요하지 않음

Result := Value;

(*INT UINT*)

INT, UINT 음수 사용시 위험!

Result := value1 + value2;

(*UINT USINT USINT*)

UINT, USINT, USINT 덧셈시 오버플로우 위험

명시적 데이터 타입 변환

암시적 데이터 타입 변환이 편리한 방법 일지라도 항상 첫 번째 선택은 아닙니다. 깔끔한 프로그래밍은

명시적 데이터 타입` 변환을 사용하여 형식을 올바르게 처리해야합니다. 아래 예는 명시적 변환이 필요한

몇가지 사례입니다.

Page 17: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

TM246 - Structured Text

17

예제: 수족관

수조관 온도는 두 곳에서 측정합니다. 평균 온도를

계산하여 아날로그 출력으로 전달하는 프로그램을

작성하십시오. 아날로그 입력 및 출력의 데이터

타입은 INT입니다.

그림 5: 수족관

선언:

표 14: 변수 선언 제안

4.4 비교 연산과 판별

Structured Text, 변수 비교를 위한 간단한 구성이 제공됩니다. TRUE 또는 FALSE 값을 리턴합니다. 비교

연산자와 논리 연산은 주로 IF, ELSIF, WHILE 및 UNTIL과 같은 명령문과 함께 사용됩니다.

기호 비교 유형 예

= 같다 IF a = b THEN

<> 같지 않다 IF a <> b THEN

> 크다 IF a > b THEN

>= 크거나 같다 IF a >= b THEN

< 작다 IF a < b THEN

<= 작거나 같다 IF a <= b THEN

표 15: 논리 비교 연산자 개요

Programming \ Variable and data types \ Data types \ Basic data types

Programming \ Libraries \ IEC 61131-3 functions \ CONVERT

Programming \ Editors \ Text editors

Programming \ Editors \ Table editors \ Declaration editors \ Variable declaration

VAR

aiTemp1: INT;

aiTemp2: INT;

aoAvgTemp: INT;

END_VAR

Page 18: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

18 TM246 - Structured Text

그림 6: IF - ELSE 구문

판별

IF 문은 프로그램 판별 처리에 사용됩니다. 사전에 비교 연산자를 알고 있습니다. 여기서 사용할 수 있습니다.

키워드 구문 설명

IF .. THEN IF a > b THEN 1. 비교 1

Result := 1; 비교 1이 TRUE일 때 진술

ELSIF .. THEN ELSIF a > c THEN 2. 비교 2

Result := 2; 비교 2가 TRUE일 때 진술

ELSE ELSE 대체 지점, 비교 없음 TRUE

Result := 3; 대체 지점의 진술

END_IF END_IF 판별의 끝

표 16: IF 구문

그림 7: IF - ELSIF - ELSE 구문

표 17: 한 눈에 보는 IF 구문

여러 조건을 동시 테스트 하도록 비교 표현을 이진 연산자와 조합 할 수 있습니다.

설명:

프로그램 코드:

"a"가 "b"보다 크고 "a"가 "c"보다 작은 경우 "Result"는 100과 같습니다.

IF (a > b) AND (a < c) THEN

Result := 100;

END_IF;

표 18: 여러 비교 표현식 사용

IF 문에는 추가 중첩 IF 문도 포함될 수 있습니다. 중첩 수준이 너무 많으면 프로그램을 혼란스럽게 하는

경향이 있으므로 그 수가 많지 않아야 합니다.

Page 19: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

TM246 - Structured Text

19

Programming \ Programs \ Structured Text (ST) \ IF statement

Programming \ Editors \ General operations \ SmartEdit

중첩 IF 문이 동일한 변수를 확인하면 CASE 문을 사용하는 것이 더 명확하고 좋은 솔루션인지

고려하는 것이 좋습니다.

CASE 문은 IF 문에 비해 한 번만 비교하면 되는 장점이 있으므로 보다 효과적인 프로그램 코드를

만들 수 있습니다.

예제: 기상 관측소 - I 부

온도센서는 바깥쪽 온도를 측정합니다. 온도는 아날로그 입력이며

글자로 집 안에 표시합니다.

1) 온도가 18°C 아래면 “Cold” 표시

2) 온도가 18°C~25°C 사이면 “Opt”(optimal) 표시

3) 온도가 25°C 이상이면 “Hot” 표시 IF, ELSEIF 및 ELSE 문을

사용하여 해결

그림 8: 온도계

예제: 기상 관측소 - II 부

온도와 함께 습도를 평가하십시오.

텍스트 "Opt"는 습도가 40 ~ 75 %이고 온도가 18 ~ 25 ° C 인 경우에만 나타납니다. OK"

중첩 IF 문을 사용하여 과제를 해결하십시오.

STRING 데이터 타입 변수가 글자 출력에 필요합니다. 할당은 다음과 같습니다:

sShowText := 'COLD';

편집기의 SmartEdit 기능을 사용하여 정보를 쉽게 입력 할 수 있습니다. If you want

IF 문을 삽입하려면 "IF"를 입력 한 다음 <TAB> 키를 누르십시오. 편집기에 IF 문의 기본 구조가

자동으로 추가됩니다.

Page 20: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

20 TM246 - Structured Text

4.5 기계 상태 - CASE 문

CASE 문은 다양한 값을 가질 수 있는 단계 변수를 비교합니다. 비교 중 하나가 일치하면 해당 단계와

연관된 명령문이 실행됩니다. 일치하는 비교가 없으면 IF 문처럼 ELSE 문 아래에 있는 프로그램 코드가

실행됩니다.

어플리케이션에 따라 CASE 문을 사용하여 기계 상태 또는 자동화 설정을 할 수 있습니다.

키워드 구문 설명

CASE .. OF CASE sStep OF CASE 시작

1,5:

Show := MATERIAL;

1 또는 5 일 때

2:

Show := TEMP;

2 일 때

3, 4, 6..10:

Show := OPERATION;

3, 4, 6, 7, 8, 9, 10 일 때

ELSE ELSE 대체 지점

(*...*)

END_CASE END_CASE CASE의 끝

프로그램 주기마다 CASE 문의 한 단계만 처리됩니다. 단계 변수는 정수 데이터 유형이어야 합니다.

그림 9: CASE 문 개요

Page 21: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

TM246 - Structured Text

21

Programming \ Programs \ Structured Text (ST) \ CASE statement

Programming \ Variables and data types \ Variables \ Constants

Programming \ Variables and data types \ Data types \ Derived data types \ Enumerations

예제: 레벨 제어

컨테이너 레벨은 낮음low, 높음high, 확인OK의 세 영역에서

모니터링합니다.

low, OK, high 레벨당 출력 하나를 사용합니다.

탱크 액체 레벨은 아날로그 값 (0-32767)이고 내부적으로 백분율 값 (0-

100 %)으로 변환됩니다.

1 % 이하로 떨어지면 경고음이 들립니다. CASE 문을 사용하여 솔루션을

작성하십시오.

그림 10: 컨테이너의 충전 수준 평가

선언:

표 19: 변수 선언 제안

프로그램 코드에 고정 된 숫자 값 대신 열거형 데이터 타입의 요소 또는 상수 사용이 가능합니다.

값을 텍스트로 바꾸면 프로그램 코드를 더 쉽게 읽을 수 있습니다. 또한 프로그램에서 이 값을

변경해야하는 경우 프로그램 코드가 아닌 선언 자체만 변경하면 됩니다.

VAR

aiLevel : INT;

PercentLevel : UINT;

doLow : BOOL;

doOk : BOOL;

doHigh : BOOL;

doAlarm : BOOL;

END_VAR

Page 22: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

22 TM246 - Structured Text

4.6 루프

많은 어플리케이션에서 동일한 사이클 동안 코드 섹션을 반복적으로 실행해야 합니다. 이러한 유형 처리를

루프 Loop 입니다. 루프 코드는 정의된 종료 조건이 충족될 때까지 실행됩니다.

루프는 프로그램을 명확하고 짧게 만드는 데 사용됩니다. 프로그램 확장성은 여기서 논쟁이 됩니다.

프로그램 구성 방법에 따라, CPU 시간 모니터링 메커니즘이 중재할 때까지 프로그램이 루프를 벗어나지

못할 수 있습니다. 무한 루프를 피하려면 항상 지정된 횟수만큼 반복 한 후에 루프를 종료 할 수 있는 방법을

제공하십시오.

루프는 주로 두 가지 유형이 있습니다: 루프 제어가 맨 처음부터 시작하는 것과 맨 아래에서 시작되는

것입니다.

상단에서 제어가 시작되는 루프 (FOR, WHILE)는 루프에 들어가기 전에 종료 조건을 확인합니다. 하단에서

제어가 시작되는 루프 (REPEAT)는 루프 끝에서 상태를 확인합니다. 적어도 한 번 순환합니다.

4.6.1 FOR 문

FOR 문은 제한된 수만큼 프로그램 구획이 반복 실행하는 데 사용됩니다. WHILE 및 REPEAT 루프는

사이클 수를 미리 알 수 없는 어플리케이션에 사용됩니다.

키워드 구문

FOR .. TO .. BY2 .. DO FOR i:= StartVal TO StopVal BY Step DO

Res := Res + 1;

END_FOR END_FOR

표 20: FOR 문 요소

2 키워드 "BY"를 지정하는 것은 선택 사항입니다.

Page 23: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

TM246 - Structured Text

23

시작과 끝 값이 처음에 동일하다면 이 유형의 루프는 적어도

한 번 순환합니다! (예: 시작과 끝 값이 0 인 경우)

Programming \ Programs \ Structured Text (ST) \ FOR statement

루프 카운터 "인덱스 index"는 시작 값 "StartVal"로 초기화됩니다.

종료 변수 "StopVal" 값에 도달 할 때까지 루프가 반복됩니다. 루프

카운터는 항상 "BY step"으로 알려진 1 씩 증가합니다. "단계 step”

증분에 음수 값을 사용하면 루프가 거꾸로 계산됩니다.

루프 카운터, 시작 및 끝 값은 모두 동일한 데이터 유형을 사용합니다.

이것은 명시적 데이터 변환으로 달성 할 수 있습니다 (4.3 "데이터 타입

변환").

그림 11: FOR 문 개요

예제: 크레인 총 하중

크레인은 한 번에 다섯 개를 들어 올릴 수 있습니다. 로드 수신기는 0 ~ 32767 범위에 아날로그 입력이 리턴

값으로 전달됩니다. 총 부하와 평균 값을 계산하려면 먼저 개별 부하를 합산하고 부하 센서 수로 나누어야

합니다. FOR 루프를 사용하여 예제 솔루션을 작성하십시오.

Index > EndVal

No

Yes

END_FOR

Increase Index

Statement (s )

FOR

Index := StartVal

Page 24: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

24 TM246 - Structured Text

예제 해결을 위해 배열 array 이 필요합니다. 배열의 상세한 정보는 Automation 도움말이나

첨부된 부록에서 확인 할 수 있습니다.

가능하면 부하는 배열로, 루프 끝 값은 상수로 선언하십시오. 위와 같은 선언은 프로그램 가독성을

상당히 향상시킵니다. 나중에 변경하는 것도 훨씬 쉬워집니다.

Programming \ Programs \ Variables and data types \ Data types \ Composite data types \

Arrays

37 장 10.1 "배열" 참조.

그림 12: 하중이 다섯 개 실린 크레인

선언:

표 21: 변수 선언 제안

예제: 크레인 총 하중 - 향상된 프로그램 코드

이전 작업 결과로 개별 부하의 합은 루프를 사용하여 생성 할 수 있습니다. 지금까지 고정 숫자 값은 변수

선언과 프로그램 코드에 있습니다. 작업의 목적은 선언 및 프로그램 코드에서 가능한 많은 고정 숫자를

상수로 바꾸는 것입니다.

선언:

표 22: 변수 선언 제안

VAR CONSTANT

MAX_INDEX : USINT := 4;

END_VAR

VAR

aWeights : ARRAY [0..4] OF INT;

iCnt : USINT;

sumWeight : DINT;

avgWeight : INT;

END_VAR

Page 25: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

TM246 - Structured Text

25

Programming \ Programs \ Structured Text (ST) \ WHILE statement

4.6.2 WHILE 문

FOR 문과 달리 WHILE 루프는 루프 카운터에 의존하지 않습니다. 해당 유형의 루프는 조건 또는 표현식이

TRUE일 동안 실행됩니다. 런타임에서 주기 시간 위반 Cycle time violation 이 발생하지 않도록 루프 종료

관리가 중요합니다.

키워드 구문

WHILE .. DO WHILE i < 4 DO

Res := value + 1;

i := i + 1;

END_WHILE END_WHILE

표 23: WHILE 문 실행

조건이 TRUE면 명령문이 반복적으로 실행됩니다. 처음 조건을 판별할

때 조건이 FALSE를 리턴하면 명령문이 실행되지 않습니다.

그림 13: WHILE 문 개요

4.6.3 REPEAT 문

루프가 실행 된 후에 종료 조건이 점검되므로 REPEAT 루프는 WHILE 루프와 다릅니다. 이는 종료 조건에

관계 없이 루프가 한 번 이상 실행됨을 의미합니다.

키워드 구문

REPEAT REPEAT

(*program code*)

i := i + 1;

UNTIL UNTIL i > 4

END_REPEAT END_REPEAT

표 24: REPEAT 문 실행

Page 26: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

26 TM246 - Structured Text

UNTIL 조건이 TRUE가 될 때까지 명령문이 반복적으로 실행됩니다.

UNTIL 조건이 처음부터 참이면 명령문은 한 번만 실행됩니다.

그림 14: REPEAT 문 개요

4.6.4 EXIT 문

종료 조건이 충족되기 전에 EXIT 문을 모든 유형의 루프에서 사용할 수 있습니다. EXIT가 실행되면 루프가

종료됩니다.

키워드 구문

REPEAT

IF setExit = TRUE THEN

EXIT EXIT;

END_IF

UNTIL i > 5

END_REPEAT

Programming \ Programs \ Structured Text (ST) \ REPEAT statement

UNTIL 조건이 TRUE가 되지 않으면

명령문이 무한대로 반복되어 런타임 오류가 발생합니다.

Page 27: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

명령 그룹

TM246 - Structured Text

27

배열의 개별 요소는 프로그램 코드 또는 변수 선언 창에서 값을 초기화 할 수 있습니다.

Programming \ Editors \ Table editors \ Declaration editors \ Variable declaration

루프의 EXIT 문이 실행되면 종료 조건 또는 루프의 루프 종료 값 도달

여부에 관계 없이 루프가 종료됩니다. 중첩 루프에서 EXIT 문이 포함

된 루프 만 종료됩니다.

그림 15: EXIT 문은 내부 루프만

종료합니다.

예제: 종료하여 검색

특정 숫자 히나를 찾으려면 숫자 목록 100개를 검색합니다. 목록에는 임의의 숫자가 포함되어 있습니다. 숫자

10을 찾으면 검색 프로세스를 종료합니다. 목록에 해당 번호가 없을 수도 있습니다.

솔루션에서 REPEAT 및 EXIT 문을 사용하십시오. 두 가지 종료 조건을 염두에 두십시오.

선언:

Programming \ Programs \ Structured Text (ST) \ EXIT statement

VAR

aValues : ARRAY[0..99] OF INT;

END_VAR

Page 28: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation
Page 29: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

펑션, 펑션 블록과 액션

TM246 - Structured Text

27

선언:

프로그램 코드: xValue := 3.14159265;

sinResult := SIN(xValue);

VAR

sinResult : REAL;

xValue : REAL;

END_VAR

Programming \ Programs \ Structured Text (ST) \ Calling functions

5 펑션, 펑션 블록과 액션

다양한 펑션과 펑션 블록이 프로그래밍 언어의 기능을 확장합니다. 액션 action은 프로그램을 보다

효과적으로 구성하는 데 사용됩니다. 펑션 및 펑션 블록은 툴바 toolbar에서 삽입 할 수 있습니다.

그림 16: 툴바 toolbar에서 펑션 및 펑션 블록 삽입

5.1 펑션과 펑션 블록 호출 펑션

펑션은 호출 될 때 특정 값을 반환하는 서브 루틴입니다. 펑션를 호출 할 수 있는 한 가지 방법은

표현식입니다. 전달 인수라고 불리는 전송 파라미터는 함수에 전달되는 값입니다. 쉼표로 구분합니다.

표 25: 전달 파라미터 하나를 가진 펑션 호출

펑션 블록

펑션 블록은 여러 전송 파라미터를 사용하고 여러 결과를 리턴 할 수 있는 것이 특징입니다.

펑션와 달리 펑션 블록과 동일한 데이터 타입 Data type을 가진

인스턴스 변수를 선언해야 합니다. 장점은 펑션 블록이 여러 주기에

걸쳐 결과를 계산하여 복잡한 작업을 처리 할 수 있다는 것입니다. 다른

인스턴스를 사용하면 동일한 전송 파라미터를 사용하여 동일한 유형의

다수의 펑션 블록을 호출 할 수 있습니다.

그림 17: TON () 펑션 블록의 전송

파라미터(녹색) 및 결과 (빨간색)

펑션 블록을 호출 할 때 모든 인수 또는 일부 인수를 전달할 수 있습니다. 파라미터 및 결과는 인스턴스

변수의 요소를 이용하여 프로그램 코드에 접근 할 수 있습니다.

Page 30: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

펑션, 펑션 블록과 액션

28 TM246 - Structured Text

Programming \ Programs \ Structured Text (ST) \ Calling function blocks

선언:

VAR

diButton : BOOL;

doBell : BOOL;

TON_Bell : TON;

END_VAR

호출 방법 1: TON_Bell(IN := diButton, PT := T#1s);

doBell := TON_Bell.Q;

호출 방법 2:

(*-- parameters*)

TON_Bell.IN := diButton;

TON_Bell.PT := T#1s;

(*-- call functionblock*)

TON_Bell();

(*-- read results*)

doBell := TON_Bell.Q;

표 26: TON () 펑션 블록으로 수신 거부 버튼

선언:

VAR

diButton : BOOL;

doBell : BOOL;

TON_Bell : TON;

END_VAR

호출 방법 1: TON_Bell(IN := diButton, PT := T#1s);

doBell := TON_Bell.Q;

호출 방법 2:

(*-- parameters*)

TON_Bell.IN := diButton;

TON_Bell.PT := T#1s;

(*-- call functionblock*)

TON_Bell();

(*-- read results*)

doBell := TON_Bell.Q;

표 27: TON () 펑션 블록으로 수신 거부 버튼

방법 1 호출에서 모든 파라미터는 펑션 블록이 호출 될 때 직접 전달됩니다. 방법 2 호출은 파라미터가

인스턴스 변수 요소에 할당됩니다. 두 경우 모두, 호출이 발생한 후 인스턴스 변수에서 원하는 결과를 읽어야

합니다.

예제: 펑션 블록

STANDARD 라이브러리에서 일부 펑션 블록을 호출하십시오. 그 전에 Automation 도움말에 펑션 및

파라미터 설명을 살펴보십시오.

Page 31: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

펑션, 펑션 블록과 액션

TM246 - Structured Text

29

라이브러리 펑션의 자세한 설명은 Automation 도움말을 참조하십시오. <F1>을

누르면 선택한 펑션 블록에 대한 도움말 문서가 열립니다.

많은 라이브러리는 어플리케이션으로 직접 가져올 수 있는 응용 예제도 포함되어 있습니다.

Programming \ Libraries \ IEC 61131-3 functions \ STANDARD

Programming \ Examples

CASE 문을 사용하여 복잡한 시퀀스를 제어하는 경우 예를 들어 개별 CASE 단계의 컨텐츠를

액션으로 대체할 수 있습니다. 메인 프로그램을 콤팩트 하게 유지합니다. 다른 곳에 동일 기능이

필요한 경우 작업을 다시 호출하는 것만 큼 쉽습니다.

1) TON 켜기 지연 펑션 블록을 호출하십시오.

"diSwitch” 변수를 설정하면 타이머가 시작됩니다.

2) CTU 상향 카운터 펑션 블록을 호출하십시오.

"diCountlmpuls"변수를 설정하면 상승 에지로 인해 상향 카운터가 1 씩 증가합니다. "diReset"변수를

설정하면 CV 출력이 0으로 재설정됩니다.

선언:

표 28: 변수 선언 제안

5.2 액션 호출

액션 action은 프로그램 및 라이브러리에 추가 할 수 있는 프로그램 코드입니다. 액션은 프로그램을

구성하는 추가 적인 가능성이며, 이를 호출하는 프로그램 이외의 프로그래밍 언어로도 공식화 될 수

있습니다. 액션은 이름으로 식별됩니다.

액션을 호출하는 것은 함수를 호출하는 것과 매우 유사합니다. 차이점은 전송 매개 변수가 없고 값이

리턴되지 않습니다.

VAR

TON_Test : TON;

CTU_Test : CTU;

diSwitch : BOOL;

diCountImpuls : BOOL;

diReset : BOOL;

END_VAR

Page 32: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

펑션, 펑션 블록과 액션

30 TM246 - Structured Text

Actions

표 29: 메인 프로그램에서 액션 호출

ACTION acStartProc:

(*add your sequence code here*)

Process_finished := 1;

END_ACTION

액션 Action:

IF Process_finished = 1 THEN

Sequence := ENDPROCESS;

END_IF

ENDPROCESS:

acEndProc; (*machine shutdown*)

(*...*)

END_CASE

프로그램:

CASE Sequence OF

WAIT:

IF cmdStartProc = 1 THEN

Sequence := STARTPROCESS;

END_IF

STARTPROCESS:

acStartProc; (*machine startup*)

Page 33: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

추가 기능과 부가 기능

TM246 - Structured Text

31

선언:

프로그램 코드: pDynamic ACCESS ADR(iSource);

(*pDynamic references to iSource*)

VAR

iSource : INT;

pDynamic : REFERENCE TO INT;

END_VAR

Automation Studio의 프로젝트 설정에서 확장된 IEC 표준 기능을 활성화 할 수 있습니다.

Project management \ The workspace \ General project settings \ Settings for IEC compliance

Programming \ Programs \ Preprocessor for IEC programs

6 추가 기능과 부가 기능

6.1 포인터와 레퍼런스 Pointers and references

기존 IEC 표준의 기능 확장을 위해 B&R은 ST에서 포인터를 제공합니다. 런타임 동안 동적 변수에 특정

메모리 주소를 할당 할 수 있습니다. 이 절차를 동적 변수 참조 또는 초기화입니다.

동적 변수가 초기화되면 "포인팅 pointing"하는 메모리 주소의 내용을 접근하는 데 사용할 수 있습니다. 이

작업에는 키워드 ACCESS가 사용됩니다.

표 30: 포인터 참조

6.2 IEC 프로그램 전처리기

텍스트 기반 프로그래밍 언어에서 전처리기 지시문을 사용할 수 있습니다. 구문과 관련하여 구현된

명령문은 ANSI C 전처리기 명령문과 광범위하게 일치합니다.

전 처리기 명령은 IEC 확장입니다. 프로젝트 설정에서 사용여부를 결정해야합니다.

전처리기 지시문은 프로그램 또는 전체 구성의 조건부 컴파일에 사용됩니다. 설정하면 컴파일러 옵션은

컴파일 프로세스 수행 방식에 영향을 주는 기능을 활성화합니다.

사용 가능한 모든 명령의 설명과 전체 목록은 Automation Studio 도움말에서 찾을 수 있습니다.

Page 34: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

진단 기능

32 TM246 - Structured Text

Diagnostics and service \ Diagnostics tool \ Debugger

Diagnostics and service \ Diagnostics tool \ Variable watch

Diagnostics and service \ Diagnostics tool \ Monitors \ Programming languages in monitor mode

\ Line coverage

Diagnostics and Service \ Diagnostic tools \ Monitors \ Programming languages in monitor mode

\ Powerflow

Project management \ The workspace \ Output window \ Cross reference

7 진단 기능

포괄적인 진단 도구는 전체 프로그래밍 프로세스를 보다 효율적으로 만듭니다. Automation Studio는 고급

프로그래밍 언어 문제 해결을 위한 다양한 진단 도구를 지원합니다:

• 모니터 모드 Monitor mode

• 와치 윈도우 Watch window

• 라인 커버리지 Line coverage

• 툴팁 Tooltip

• 디버거 Debuggers

• 크로스 레퍼런스 Cross reference

Page 35: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

예제

TM246 - Structured Text

33

8 예제

8.1 예제 - 박스 리프트

예제: 박스 리프트

컨베이어 벨트 두 개(doConvTop, doConvBottom) 가 리프트로 상자를 수송합니다.

광전지(diConvTop, diConvBottom)가 실행되면, 그에 대응하는 컨베이어 벨트는 멈추고 리프트가

호출됩니다.

리프트가 호출되지 않았으면, 적절한 위치(doLiftTop, doLiftBottom)로 돌아갑니다.

리프트가 올바른 위치(diLiftTop, diLiftBottom)에 왔을 때, 리프트 컨베이어(doConvLift)은 상자가

완벽하게 리프트(diBoxLift)에 왔을때까지 작동합니다.

그다음 리프트는 짐을 내리는 위치(doLiftUnload)로 움직입니다. 다음 위치(diLiftUnload)에 도달했을 때

상자는 하역 벨트로 움직입니다.

상자가 리프트에서 떠나면, 그 리프트는 다음 요청을 위해 대기상태가 됩니다.

그림 18: 박스 리프트

Page 36: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

예제

34 TM246 - Structured Text

8.2 예제 - 분산 믹서

물과 페인트를 분사시켜 섞는 시스템을 구성합니다.

그림 19: 페인트 믹싱 시스템

다음 시퀀스에 따라서 믹싱 프로그램이 동작합니다:

• 믹싱 프로그램은 시작 버튼(gDiStart)이 눌릴때까지 기다린다.

• 물(gDoWaterValve)은 센서 신호 “gDiWaterOK”가 트리거될때까지 컨테이너에 추가합니다.

• 믹싱 유닛(gDoMixer)이 시작하고 페인트(gDoColorValve)는 센서 신호 “gDiSensFull”가

트리거 될때까지 추가합니다.

• 믹싱 타임은 30초 수행합니다.

• 드레인 밸브(gDoDrainValve)와 드레인 펌프(gDoDrainPump)는 컨테이너가 텅빌 때까지

켜있습니다.

• 드레인 프로세스는 신호 “gDiSensLow”가 트리거 될때 작업합니다.

• 초기 상황으로 돌아갑니다.

예제: 분산 믹서 구현

과제는 분산 믹서 프로세스를 분석 하고 Structured Text로 단계별 프로그래밍을 구현하는 것입니다. 다음

단계를 수행하십시오:

1) 프로세스 스케치

Page 37: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

예제

TM246 - Structured Text

35

STANDARD 라이브러리내 타이머 펑션 블럭을 사용하여 믹싱 타임을 구현해야 합니다. 시간에

도달한 이후에 타이머 리셋 수행하는 것에 유의하십시오.

° 스텝 규정하기

° 전환 규정하기

(스텝 전환 기준은 하나의 스텝에서 다음 스텝으로 가기 위한 것)

° 액션 규정하기

(직접 스텝에서 수행하고자 하는 프로그램 시퀀스)

2) [옵션] 어느 스텝을 IEC 액션으로 구현할지 결정

3) 요구사항을 Structured Text 프로그래밍으로 구현

Page 38: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

요약

36 TM246 - Structured Text

9 요약

Structured Text는 다양한 기능을 제공하는 고급 프로그래밍 언어입니다. 어플리케이션 제작에 필요한 특정

작업 처리도 구현되어 있습니다. ST에서 가능한 구성 및 기능 개요를 배웠습니다.

Automation Studio 도움말 문서에 관련 구성에 대한 모든 설명이 포함되어 있습니다. 프로그래밍 언어는

산술 함수를 사용하고 수학 계산을 구현 할 때 특히 강력합니다.

Page 39: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

부록

TM246 - Structured Text

37

선언 VAR

aPressure : ARRAY[0..9] OF INT := [10(0)];

END_VAR

Program code (*Assigning value 123 to index 0*)

aPressure[0] := 123;

표 31: index = 0으로 시작하는 요소 10 개를 포함한 배열 선언

배열 요소 인덱스 10에 접근을 시도하면 컴파일러는 아래와 같은 에러 메시지를 발생시킵니다.

프로그램 코드 aPressure[10] := 75;

에러 메시지 Error 1230: The constant value '10' is not in range

'0..9'.

표 32: 유효한 범위를 벗어난 배열 인덱스에 접근

배열 인덱스 10으로 선언하려면 선언 에디터에 "USINT[0..9]" 또는 "USINT[10]"을 입력합니다.3. 두

경우 모두 배열의 시작 인덱스는 0이고 최대 인덱스는 9로 배열이 생성될 것입니다.

10 부록

10.1 배열

원시적인 데이터 타입과 달리 배열은 같은 데이터 타입을 갖는 여러

변수들이 복합 구성된 것입니다. 각 개별 요소는 배열의 이름과 인덱스

번호를 이용해서 접근할 수 있습니다.

배열에 접근하기 위한 인덱스는 실제 배열 사이즈를 넘어서 접근하면

안됩니다. 배열 사이즈는 변수로 선언할때 정의됩니다.

프로그램에서 인덱스는 고정된 숫자, 변수, 상수, 열거형 enumerated

element 로 쓸 수 있습니다.

그림 20: 범위가 0-9 인 데이터 유형

INT의 배열은 서로 다른 배열 요소 10

개에 해당합니다.

배열 선언과 사용

배열을 선언할 때 데이터 타입과 치수를 설정해야 합니다. 통상적인 관습상 가장 작은 인덱스는 0입니다.

배열 사이즈가 10이면 최대 인덱스는 9입니다.

예제: "aPressure" 배열 생성

1) 로지컬 뷰 Logical View 에 “int_array” 프로그램 추가

2) 변수 선언 창 열기

3) “aPressure” 배열 선언

3 이 입력 방법은 Automation Studio 테이블 편집기에서만 지원합니다.

Page 40: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

부록

38 TM246 - Structured Text

aPressure[10] := 123; 처럼 할당하면 컴파일러는 아래와 같은 에러 메시지를 보고할 것입니다.

Error 1230: The constant value '10' is not in range '0..9'.

변수를 사용하면 컴파일러는 잘못된 배열 접근을 확인하지 못할 수 있습니다.

index := 10;

aPressure[index] := 123;

선언 VAR CONSTANT

MAX_INDEX : USINT := 9;

END_VAR

VAR

aPressure : ARRAY[0..MAX_INDEX] OF INT ;

index : USINT := 0;

END_VAR

Program code IF index > MAX_INDEX THEN

index := MAX_INDEX;

END_IF

aPressure[index] := 75;

표 33: 상수를 이용한 배열 선언

프로그램 코드는 업데이트 되었고 배열 접근 인덱스는 최대 배열 인덱스 리미트에 걸렸다.

이러한 설정의 장점은 배열 리사이징(크거나, 작거나)이 필요할 때 프로그램 코드 수정 없이

적용할 수 있습니다.

Programming \ Variables and data types \ Data types \ Derived data types \ Arrays

10개 요소를 포함하는 배열. 가장 작은 인덱스는 0입니다. 데이터 타입은 INT형을 사용합니다.

4) 프로그램 코드에 배열 사용

프로그램 코드에서 배열을 접근하기 위해서 인덱스를 사용합니다. 고정된 숫자, 상수, 변수를 이용합니다.

5) 프로그램 코드에서 인식 불가능한 배열을 접근합니다.

배열 인덱스를 10으로 설정하여 접근하고 메시지 창message window을 확인하시오.

상수를 이용한 배열 선언

선언과 프로그램에서 사용된 고정된 숫자 값은 프로그래밍을 다루거나 관리하기 힘들다. 좋은 아이디어는

숫자 상수를 사용하는 것이다.

배열의 하한, 상한 값을 상수를 사용하여 정의합니다. 상수는 프로그램 코드에서 사용할 수 있고 배열

인덱스를 제한할 수 있다.

Page 41: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

부록

TM246 - Structured Text

39

배열 변수 선언시 크기 설정을 위해 사용중인 상수는 루프의 종료 값으로 사용될 수도 있습니다.

variable can also be used as end value for the loop. 평균을 구할 때, 같은 상수로 나누면 됩니다.

개별 배열 요소를 더할 때에는 반드시 출력 데이터 타입은 큰 데이터 타입(예 DINT)을 사용해야

합니다. 최종 값은 명확한 데이터 타입 변환을 사용하여 INT 데이터 타입으로 변환시킵니다.

표 34: 7x7 이차원 배열 선언 및 접근

그림 21: 열 3, 행 3의 값에

액세스

프로그램

코드:

Array2Dim : ARRAY [0..6,0..6] OF INT;

END_VAR

(*Counting starting with 0*)

Array2Dim[2,2] := 11;

선언 VAR

고정 된 숫자, 상수 또는 열거형를 사용하여 프로그램 코드에서 유효하지 않은 배열 접근 시도는

컴파일러에 의해 감지되고 방지됩니다.

변수를 사용하여 프로그램 코드 배열에 유효하지 않은 접근 시도는 컴파일러에서 감지 할 수

없으며 런타임시 메모리 오류가 발생할 수 있습니다. 배열 인덱스를 유효한 범위로 제한하면

런타임 오류를 피할 수 있습니다.

예제: 합계와 평균 계산

평균값은 "aPressure"배열을 이용하여 계산합니다. 이 경우에 최소한의 프로그램 변경이 필요한 방식으로

구성합니다.

1) 루프를 사용하여 합계 계산

고정 숫자 값은 프로그램 코드에서 사용하지 않는다.

2) 평균 값 계산

평균 값 변수의 데이터 타입은 배열의 데이터 타입(INT)과 같은 것으로 설정한다.

다차원 배열

배열은 다차원으로 구성 될 수도 있습니다. 선언 및 사용법은 다음과 같습니다.

Page 42: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

부록

40 TM246 - Structured Text

Programming \ Libraries \ IEC Check library

선언:

프로그램 코드: doLight := (btnLightOn OR doLight) AND NOT bntLightOff;

VAR

btnLightOn: BOOL;

btnLightOff: BOOL;

doLight: BOOL;

END_VAR

선언:

프로그램 코드: aoAvgTemp := DINT_TO_INT((INT_TO_DINT(aiTemp1)

+ aiTemp2) / 2);

VAR

aiTemp1 : INT;

aiTemp2 : INT;

aoAvgTemp : INT;

END_VAR

선언:

프로그램 코드:

IF aiOutside < 18 THEN

sShowText := 'Cold';

ELSIF (aiOutside >= 18) AND (aiOutside <= 25) THEN

sShowText := 'Opt';

ELSE

sShowText := 'Hot';

END_IF;

VAR

aiOutside : INT;

sShowText : STRING[80];

END_VAR

IEC Check 라이브러리를 Automation Studio 프로젝트에 추가하여 런타임 에러 위치를 찾는 것을 돕습니다.

10.2 예제 해답

예제: 조명 제어

표 35: 온-오프 스위치, 래치 있는 릴레이

예제: 수족관

표 36: 덧셈 전과 나눗셈 후에 명시적 데이터 타입 변환

예제: 기상 관측소 - II 부

표 37: IF 문

Page 43: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

부록

TM246 - Structured Text

41

선언:

프로그램 코드:

IF aiOutside < 18 THEN

sShowText := 'Cold';

ELSIF (aiOutside >= 18) AND (aiOutside <= 25) THEN

IF (aiHumid >= 40) AND (aiHumid <= 75) THEN

sShowText := 'Opt';

ELSE

sShowText := 'Temp. Ok';

END_IF

ELSE

sShowText := 'Hot';

END_IF;

VAR

aiOutside : INT;

aiHumidity: INT;

sShowText : STRING[80];

END_VAR

선언:

VAR

aiLevel : INT;

PercentLevel : UINT;

doLow : BOOL;

doOk : BOOL;

doHigh : BOOL;

doAlarm : BOOL;

END_VAR

예제: 기상 관측소 - II 부

표 38: 중첩 IF 문

예제: 레벨 제어

표 39: 값 및 값 범위 쿼리를 위한 CASE 문

Page 44: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

부록

42 TM246 - Structured Text

선언:

프로그램 코드:

nCnt := 0;

REPEAT

IF aNumbers[nCnt] = 10 THEN

(*found the number 10*)

EXIT;

END_IF

nCnt := nCnt + 1;

UNTIL nCnt > MAXNUMBERS

END_REPEAT

VAR CONSTANT

MAXNUMBERS : UINT := 99;

END_VAR

VAR

aNumbers : ARRAY[0..MAXNUMBERS] OF INT;

nCnt : INT;

END_VAR

프로그램 코드:

표 39: 값 및 값 범위 쿼리를 위한 CASE 문

예제: 종료하여 검색

표 40: REPEAT 문, 검색 결과 종료, 주기 제한

(*scaling the analog input to percent*)

PercentLevel := INT_TO_UINT(aiLevel / 327);

(*reset all outputs*)

doAlarm := FALSE;

doLow := FALSE;

doOk := FALSE;

doHigh := FALSE;

CASE PercentLevel OF

0: (*-- level alarm*)

doAlarm := TRUE;

doLow := TRUE;

1..24: (*-- level is low*)

doLow := TRUE;

25..90:(*-- level is ok*)

doOk := TRUE;

ELSE (*-- level is high*)

doHigh := TRUE;

END_CASE

Page 45: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

부록

TM246 - Structured Text

43

선언:

프로그램 코드:

sumWeight := 0;

FOR iCnt := 0 TO MAX_INDEX DO

sumWeight := sumWeight + aWeights[iCnt];

END_FOR

avgWeight := DINT_TO_INT (sumWeight / (MAX_INDEX + 1));

VAR CONSTANT

MAX_INDEX: USINT := 4;

END_VAR

VAR

aWeights : ARRAY[0..MAX_INDEX] OF INT;

iCnt : USINT;

sumWeight : DINT;

avgWeight : INT;

END_VAR

선언:

프로그램 코드: TON_Test(IN := diSwitch, PT := T#5s);

CTU_Test(CU := diCountImpuls, RESET := diReset);

VAR

TON_Test : TON;

CTU_Test : CTU;

diSwitch : BOOL;

diCountImpuls : BOOL;

diReset : BOOL;

END_VAR

예제: 크레인 총 하중

표 41: FOR 문, 가중치 추가

예제: 펑션 블록

표 42: TON과 CTU 호출

Page 46: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

부록

44 TM246 - Structured Text

선언:

VAR CONSTANT

WAIT : UINT:= 0;

TOP_POSITION : UINT:= 1;

BOTTOM_POSITION : UINT:= 2;

GETBOX : UINT:= 3;

UNLOAD_POSITION : UINT:= 4;

UNLOAD_BOX : UINT:= 5;

END_VAR

VAR

(*-- digital outputs*)

doConvTop: BOOL;

doConvBottom: BOOL;

doConvLift: BOOL;

doLiftTop: BOOL;

doLiftBottom: BOOL;

doLiftUnload: BOOL;

(*-- digital inputs*)

diConvTop: BOOL;

diConvBottom: BOOL;

diLiftTop: BOOL;

diLiftBottom: BOOL;

diLiftUnload: BOOL;

diBoxLift: BOOL;

(*-- status variables*)

selectLift: UINT;

ConvTopOn: BOOL;

ConvBottomOn: BOOL;

END_VAR

예제: 박스 리프트

표 43: 적용 가능한 박스 리프트 예제 해결책

Page 47: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

부록

TM246 - Structured Text

45

프로그램 코드:

표 43: 적용 가능한 박스 리프트 예제 해결책

doConvTop := NOT diConvTop OR ConvTopOn;

doConvBottom := NOT diConvBottom OR ConvBottomOn;

CASE selectLift OF

(*-- wait for request*)

WAIT:

IF (diConvTop = TRUE) THEN

selectLift := TOP_POSITION;

ELSIF (diConvBottom = TRUE) THEN

selectLift := BOTTOM_POSITION;

END_IF

(*-- move lift to top position*)

TOP_POSITION:

doLiftTop := TRUE;

IF (diLiftTop = TRUE) THEN

doLiftTop := FALSE;

ConvTopOn := TRUE;

selectLift := GETBOX;

END_IF

Page 48: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

부록

46 TM246 - Structured Text

(********************************************************************

* COPYRIGHT -- Bernecker + Rainer

********************************************************************

* Program: mixer

* File: mixer.var

* Author: Academy

* Created: February 04, 2015

********************************************************************

* Local variables of program mixer

********************************************************************)

예제: 분산 믹서 구현

변수 선언

(*-- move lift to bottom position*)

BOTTOM_POSITION:

doLiftBottom := TRUE;

IF (diLiftBottom = TRUE) THEN

doLiftBottom := FALSE;

ConvBottomOn := TRUE;

selectLift := GETBOX;

END_IF

(*-- move box to lift*)

GETBOX:

doConvLift := TRUE;

IF (diBoxLift = TRUE) THEN

doConvLift := FALSE;

ConvTopOn := FALSE;

ConvBottomOn := FALSE;

selectLift := UNLOAD_POSITION;

END_IF

(*-- move lift to unload position*)

UNLOAD_POSITION:

doLiftUnload := TRUE;

IF (diLiftUnload = TRUE) THEN

doLiftUnload := FALSE;

selectLift := UNLOAD_BOX;

END_IF

(*-- unload the box*)

UNLOAD_BOX:

doConvLift := TRUE;

IF (diBoxLift = FALSE) THEN

doConvLift := FALSE;

selectLift := WAIT;

END_IF

END_CASE

표 43: 적용 가능한 박스 리프트 예제 해결책

Page 49: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

부록

TM246 - Structured Text

47

주기 프로그램 Cyclic program section

(********************************************************************

* COPYRIGHT -- Bernecker + Rainer

********************************************************************

* Program: mixer

* File: mixerCyclic.st

* Author: Academy

* Created: February 04, 2015

********************************************************************

* Implementation of program mixer

********************************************************************)

PROGRAM _CYCLIC

(*reset all outputs - will be set in the individual states*)

gDoWaterValve := FALSE;

gDoColorValve := FALSE;

gDoMixer := FALSE;

gDoDrainValve := FALSE;

gDoDrainPump := FALSE;

TON_Mixer.IN := FALSE;

(* implementation of dispersion mixer state machine *)

CASE sMixerState OF

(*wait until operator starts process by start button*)

enWAIT_FOR_START:

IF gDiStart = TRUE THEN

sMixerState := enFILL_WATER;

(*state machine variables*)

VAR

sMixerState : enMixerStates := enWAIT_FOR_START;

END_VAR

(*Digital input signals*)

VAR

gDiStart : BOOL := FALSE;

gDiWaterOK : BOOL := FALSE;

gDiSensFull : BOOL := FALSE;

gDiSensLow : BOOL := FALSE;

END_VAR

(*Digital output signals*)

VAR

gDoWaterValve : BOOL := FALSE;

gDoColorValve : BOOL := FALSE;

gDoMixer : BOOL := FALSE;

gDoDrainPump : BOOL := FALSE;

gDoDrainValve : BOOL := FALSE;

END_VAR

(*Function block instance variables*)

VAR

TON_Mixer : TON;

END_VAR

Page 50: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

부록

48 TM246 - Structured Text

END_IF

(*fill water into the reservoir until limit is reached*)

enFILL_WATER:

IF gDiWaterOK = TRUE THEN

sMixerState := enFILL_COLOR;

END_IF

gDoWaterValve := TRUE;

(*add color and mix dispersion until reservoir is full*)

enFILL_COLOR:

IF gDiSensFull = TRUE THEN

sMixerState := enMIX_TIME;

END_IF

gDoColorValve := TRUE;

gDoMixer := TRUE;

(*mix color and water until time is elapsed*)

enMIX_TIME:

TON_Mixer.IN := TRUE;

TON_Mixer.PT := T#30s;

IF TON_Mixer.Q = TRUE THEN

sMixerState := enBOTTLE_DISPERSION;

END_IF

gDoMixer := TRUE;

(*continue mixing and bottle dispersion until reservoir is empty*)

enBOTTLE_DISPERSION:

IF gDiSensLow = TRUE THEN

sMixerState := enWAIT_FOR_START;

END_IF

gDoDrainValve := TRUE;

gDoDrainPump := TRUE;

gDoMixer := TRUE;

END_CASE

(*call timer function block*)

TON_Mixer();

END_PROGRAM

Page 51: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

Automation Academy에서 제공하는 것

TM246 - Structured Text

49

Automation Academy에서 제공하는 것

우리는 고객뿐만 아니라 직원을 대상으로 한 교육 과정을 제공합니다.

Automation Academy에서, 당신이 필요한 능력을 즉시 향상시킬 수 있습니다.

자동화 엔지니어링 분야에서 필요한 지식 향상을 위해 세미나가 준비되어 있습니다. 한번 이수하면, 당신은 B&R

기술을 이용하여 능률적인 자동화 솔루션을 개발하는 위치에 있을 것입니다. 이를 통해 귀하와 귀사는 끊임 없이

변화하는 시장 수요에 보다 빠르게 대응할 수 있게 됨으로써 결정적인 경쟁 우위를 확보 할 수 있습니다.

세미나

품질 및 관련 성은 세미나의 필수 구성 요소입니다. 특정 세미나의 페이스는

엄격하게 코스 참가자가 직면한 요구 사항과 경험에 근거합니다. 그룹

스터디와 자율 학습에 조합은 학습 경험을 극대화하는데 필요한 높은 수준의

유연성을 제공합니다.

각 세미나는 숙련된 경험이 풍부한 강사 중 한 명이 진행합니다.

교육 자료(Training modules)

교육 자료는 세미나뿐만 아니라 자율 학습을 위한 기초로 제공합니다.

콤팩트 모듈은 일관된 교육 개념에 의존합니다. 상향식 구조는 복잡하고

상호 연관된 주제를 효율적이고 효과적으로 배울 수 있습니다. 광범위한

도움말 시스템이 가장 좋은 보완책입니다. 교육 자료는 다운받을 수

있으며 인쇄된 버전을 주문할 수 있습니다.

카테고리 주제:

➯ 제어 기술

➯ 모션 제어

➯ 세이프티 기술

➯ 화면 작화

➯ 프로세스 컨트롤

➯ 진단 및 서비스

➯ POWERLINK 와 openSAFETY

ETA system

더 알아보기!

ETA 시스템(ETA system)은 훈련, 교육 및 실험실에서 사용하기 위해

실제와 같은 구조를 제공합니다. 두가지 이상의 다른 기구 구조가 선택될 수

있습니다. ETA light system은 높은 자유도, 공간 절약 및 연구소 작업에

적합합니다. ETA standard system은 튼튼한 기구 구조와 사전에

와이어링된 센서와 액추에이터를 포함합니다.

추가 교육이 필요하세요? B&R Automation Academy가 제공하는 것에 흥미가

있으신가요? 잘 찾아오셨습니다.

상세한 정보는 아래 링크에서 확인하실 수 있습니다:

www.br-automation.com/academy

Page 52: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

Automation Academy에서 제공하는 것

50 TM246 - Structured Text

Page 53: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

Automation Academy에서 제공하는 것

TM246 - Structured Text

51

Page 54: TM246 Structured Text - automotion.kr Text (ST)_V3090.pdf · 2 TM246 - Structured Text 선행 및 필요 조건 교육 자료 TM210 – Working with Automation Studio TM213 – Automation

V1.0.8.9 ©2017/12/15 by B&R, All rights reserved.

All registered trademarks are the property of their respective owners.

We reserve the right to make technical changes.