216
LADDER + BASIC Editor Simulator Web-Server Internet TRiLOGI Version 5.2 Korean_rev1 Programmer’s Reference Triangle Research International, Inc. 1

Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

  • Upload
    letu

  • View
    249

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

LADDER + BASIC

Editor Simulator Web-Server

Internet TRiLOGI

Version 5.2 Korean_rev1

Programmer’s Reference

Triangle Research International, Inc.

1

Page 2: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Copyright 2001 - 2003

Triangle Research International, Inc.

All rights Reserved

2

Page 3: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Copyright Notice

TRiLOGI Version 5.x are trademarks and copyrights 2001-2003 of TRIANGLE RESEARCH INTERNATIONAL, Inc. (“TRi”). All rights reserved. No parts of this manual may be reproduced, transmitted, transcribed, stored in retrieval system, or translated into any human or computer language, in any form or by any means, without the express written permission of TRIANGLE RESEARCH INTERNATIONAL PTE LTD, SINGAPORE. Please refer all inquiries to [email protected]

* MSDOS and Windows 95/98, NT, 2000 and XP are a

trademarks of Microsoft. MODBUS is a trademark of Groupe Schneider. All other trademarks belongs to their respective owners.

Disclaimer

TRi makes no representations or warranties with respect to the contents hereof. In addition, information contained herein are subject to change without notice. Every precaution has been taken in the preparation of this manual. Nevertheless, TRi assumes no responsibilities for errors or omissions or any consequential damages resulting from the use of the information contained in this publication.

3

Page 4: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

4

Page 5: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

목 차

1장 – 인터넷 TRiLOGI 5.x 설치 가이드

I. TRiLOGI 프로그램의 소개 1-1 II. TRiLOGI 5.x on Windows 98, Me, NT, 2000 or XP 설치 1-1

2장 – 인터넷 TRiLOGI 클라이언트/서버 구조의 소개 3장 – TRiLOGI를 위한 웹서버 TLServer의 사용

I. 개관 3-1 II. 시리얼포트 셋업 3-3 III. 사용자 구성 3-7 IV. Email 셋업 3-9 V. 파일과 Email 서비스 3-12

4장 – 인터넷 TRiLOGI 클라이언트 실행

I. 인터넷 TRiLOGI 어플리케이션 4-1 II. 웹 브라우져를 이용한TRiLOGI 어플리케이션 4-2

5장 – Ladder 논리 프로그래밍 지침서

I. 실습과제: 초보자 Ladder 논리프로그램 만들기 5-1 II. Testing Your Ladder Logic Program Using The Simulator 5-11 III. Transferring Your First Ladder Program To The PLC 5-13

6장 – TRiLOGI Ladder 논리 에디터 참조

I. 브라우저 모드 6-1 II. 회로 편집 모드 6-3

7장 - TRiLOGI 주 메뉴 참조

I. File Menu 7-1 II. Edit Menu 7-4 III. Controller Menu 7-7 IV. Simulate Menu 7-10 V. Circuit Menu 7-12 VI. Help Menu 7-13

8장 - Ladder 로직 언어 참조

I. Ladder 로직 기초: 접점, 코일, 타이머, 카운터 8-1 II. Special Bits 8-5

5

Page 6: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

III. Special Functions 8-7 IV. TRiLOGI 시퀸서의 쓰임 8-12

9장 - TBASIC Custom 함수들의 소개

I. 개관 9-1 II. Custom 함수 편집 9-1 III. Custom 함수 실행 9-2 IV. TBASIC 변수들의 검사와 시뮬레이션 9-5 V. TBASIC 변수의 온라인 모니터링 9-8 VI. 에러 처리 9-9

10장 – TBASIC 구문, 함수들, 연산자, 변수들

I. TBASIC 구문과 함수들은 무엇인가? 10-1 II. TBASIC 정수형 상수, 변수들과 연산자들 10-2 III. 문자변수들과 상수 10-7 IV. 특수한 변수들 – EMINT, EMLINT, EMEVENT 10-8

11장 - TBASIC 키워드 참조

ABS(x) 11-1 ADC(n) 11-1 ASC(x) 11-1 CALL n 11-1 CHR$(n) 11-2 CLRBIT v,n 11-2 CLRIO, SETIO, TOGGLEIO, TESTIO 11-2 CRC16 11-3 DELAY 11-3 FOR ... NEXT 11-4 GetCtrSV (n); GetTimerSV (n) 11-4 GETHIGH16(v) 11-5 GOTO @n 11-5 HEX$(n), HEX$(n,d) 11-5 HEXVAL(x$) 11-6 HSCDEF ch, fn_num, value 11-6 HSCOFF ch 11-7 HSTIMER n (High Speed Timers) 11-7 IF..THEN..ELSE..ENDIF 11-7 INCOMM(ch) 11-8 INPUT$(n) 11-9 INTRDEF ch, fn_num, edge 11-9 INTROFF ch 11-9

6

Page 7: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

LEN(x$) 11-9 LET 11-9 LOAD_EEP(addr) 11-10 LOAD_EEP$(addr) 11-10 LSHIFT i,n 11-11 MID$(x$,n,m) 11-11 NETCMD(ch, x$) 11-11 OUTCOMM n,x 11-12 PAUSE 11-12 PIDcompute(ch,E) 11-13 PIDdef ch, lmt, P,I,D 11-14 PMON ch; PMOFF ch 11-15 PRINT #n x$; y; z .... 11-15 PULSEFREQUENCY(ch); PULSEPERIOD(ch); PULSEWIDTH(ch) 11-16 READMODBUS (ch, DeviceID, address) 11-16 READMB2 ch, ID, addr, var, count 11-17 REFRESH 11-18 REM (or ') 11-18 RESET 11-18 RETURN 11-18 RSHIFT i,n 11-19 SAVE_EEP data, addr 11-19 SAVE_EEP$ data, addr 11-20 SETBAUD ch, baud_no 11-21 SETBIT v,n 11-21 SetCtrSV n, value; SetTimerSV n, value 11-22 SETDAC n,x 11-22 SETHIGH16 v, data 11-22 SETIO labelname 11-23 SETLCD n,offset,x$ 11-23 SETLED n,m, value 11-23 SETPASSWORD string 11-24 SETPROTOCOL ch, mode 11-25 SETPWM n,x,y 11-26 SETSYSTEM n, data 11-26 STATUS (n) 11-27 STEPCOUNT(ch) 11-27 STEPCOUNTABS(ch) 11-28 STEPHOME ch 11-28 STEPMOVE ch, count, r 11-28 STEPMOVEABS ch, position, r 11-29 STEPSTOP ch 11-30 STEPSPEED ch, pps, acc 11-30 STR$(n); STR$(n, d) 11-31

7

Page 8: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

STRCMP(A$,B$) 11-31 STRLWR$(A$) 11-31 STRUPR$(A$) 11-32 TESTBIT (v,n) 11-32 TESTIO (labelname) 11-32 TOGGLEIO labelname 11-32 VAL(x$) 11-32 WHILE ... ENDWHILE 11-33 WRITEMODBUS ch, DeviceID, address, data 11-33 WRITEMB2 ch, ID, addr, var, count 11-34

부록1 – 어플리케이션 노트와 예제 프로그램

I. TRiLOGI Version 5.x의 중요 노트 A1-1

II. TRiLOGI 예제 프로그램 A1-3

1. 내장된 LCD표시장치에 문자 출력하기 A1-4 2. LCD표시장치를 이용한 타이머 세팅, 카운터Set Values (S.V.) A1-5 3. 아날로그 타이머로써의 포텐시오미터의 쓰임 A1-6 4. 스텝모터의 모션제어 A1-8 5. 스케줄된 날짜와 시간을 이용한 이벤트 활성화 A1-9 6. HVAC (가열, 환기와 공기 조절) 제어 A1-10 7. 가열 공정의 폐루프 PID 제어 A1-11

부록2 - PLC 와 PC 하드웨어 설정 및 구성

I. PLC 와 PC 연결 A2-1 II. 네트워킹 문제 A2-1

부록3 – PLC와 Modem 통신 설정

1. Modem 연결 A3-1 2. 통신 속도 A3-2 3. 소프트웨어와 프로그래밍 A3-3

8

Page 9: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

1장 : 인터넷 TRiLOGI (트라이로지)5.x 설치 가이드

I. TRiLOGI (트라이로지) 프로그램 소개

TRiLOGI는 미국 트라이엔글 리서치 인터네셔날사(TRI)의 상표로서 TRI사의

일련의 소프트웨어 그룹, 즉 Ladder 또는 Ladder + BASIC 프로그램 편집기,

시뮬레이터, 업로더 소프트웨어등을 의미한다.

초기의 TRiLOGI 소프트웨어 프로그램은 마이크로 소프트사의 MS-DOS 하

에서 동작되도록 설계된 DOS용 프로그램이었으나, 초기버전인 DOS용

TRiLOGI 소프트웨어는 H-시리즈나 M-시리즈 또는 E10과 같은 PLC등을

프로그램밍 하기 위해 현재까지 유용하게 쓰여지고 있다. 현재 H-시리즈 및

E10 PLC들을 위한 윈도우 버전인 WinTRiLOGI가 출시되어 있다. DOS버전

의 TRiLOGI 소프트웨어는 무료로 제공되는 CD-ROM의 루트 디렉토리안에

“ DOS TRiLOGI V4.13.zip” 란 zip파일이 안에 포함되어 있다.

인터넷 TRiLOGI 5.x 클라이언트/서버 프로그램은 Windows 98, Me, NT,

2000 그리고 XP와 같은 32-bit 마이크로소프트 윈도우 OS하에서 동작하도

록 설계되어 있다. 인터넷 TRiLOGI가 100% 자바(JAVA)로 프로그램되었기

때문에, 언젠가는 Apple OSX 나 Linux와 같은 다른 환경 하에서도 사용할

수 있을 것이다. 그러나 현재에는 윈도우-98, ME, NT, 2000 , XP와 같은

PC 기반의 윈도우 환경에서만 테스트가 되었다. 또한 “ SetupTL5.exe” 파

일은 PC 기반의 윈도우 환경에서만 동작된다.

II. 윈도우-98, Me, NT, 2000 또는 XP에서 TRiLOGI 5.x 설치

1. CD-ROM안에 인터넷 TRiLOGI 5.x 는 루트 디렉토리에서

“ x86-Windows” 폴더를 열면 그곳에 MS 윈도우가 탑재된 PC에서

동작될 필요한 모든 셋업 파일들이 들어 있다.

2. TRiLOGI 클라이언트/서버 패키지를 설치하기 전에 Java Run Time

Environment (자바런타임환경:JRE) Version 1.3.1을 설치하여야 한다.

먼저 자바를 인스톨 하기 위해서는 "j2re1_3_1-win.exe" 파일을 더블

클릭한다. 설치 프로그램의 지시에 따르고 "C:\Program Files

\ JavaSoft \ JRE \ 1.3.1 " 의 경로에 설치를 한다.

3. 인터넷 TRiLOGI를 위한 JRE 1.3.1 설치파일의 설치가 끝나면 인터넷

TRiLOGI를 설치하기 위해서 "SetupTL5.exe" 를 더블 클릭한다.

9

Page 10: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

4. 모든 TRiLOGI Version 5.x 파일들은 아래 그림과 같이

"C:\TRiLOGI\TL5" 의 경로에 설치된다. 아래의 그림과 같이 시작

메뉴의 프로그램 그룹에서 직접 TRiLOGI를 실행할 수 있도록

TRiLOGI 프로그램을 설치할 때 자동으로 단축키를 설치하여 준다.

TLServer, TRiLOGI application , TL50Applet starter등의 프로그램

이 아래그림과 같이 시작메뉴 안에 생성된다.

NOTE: TLServer프로그램을 빠르게 실행시킬 수 있도록 하기 위한

단축키(Shot Cut)을 지원하는 원도우 프로그램의 툴바에

단축키가 자동으로 생성된다.

* 알집(파일압축프로그램) 프로그램이 설치 되어 있는 경우

알집을 실행시켜서 [알집]->[환경설정]->[아이콘] 에서 ".jar"을

선택하신 후 "알집에 연결"의 체크 박스에서 선택을 해제 시켜

주어야 합니다. 선택을 해제 하였는데도 TLServer 또는 TRiLOGI

프로그램이 실행 안되면 [연결프로그램]-> "javaw" 로 연결하기로

지정하여 주셔야 합니다.

10

Page 11: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

2장: 인터넷 TRiLOGI 클라이언트/서버 구조의 소개

1. 인터넷 TRiLOGI 는 클라이언트/서버 어플리케이션을 지원한다.

프로그램은 두개의 부분(클라이언트와 서버)으로 나뉘어져 있다.

2. 서버: PLC 에 접속하는 것을 포함, TRiLOGI 프로그램의 완벽한 실행을

위하여 사용자는 먼저 TLServer 를 실행시켜야 한다. TLServer 는

마이크로소프트사의 인터넷 익스플로러 또는 넷스케이프

네비게이터(Navigator)와 같은 인터넷 브라우저에 연결하는 자바

애플릿(Java Alppet)은 물론 HTML 웹-페이지와 관련한 서비스를

제공하는 전형적인 웹-서버처럼 동작한다. TLServer 는 PC 의 시리얼

포트를 경유하여 PLC 들에 연결된다. 그리고 TLServer 는 인터넷

TRiLOGI 클라이언트와 M-시리즈의 PLC 들 간의 통신메시지를

전달하는 역할을 한다. (Note: TRiLOGI 의 교육용 버전에서는 실제

PLC 와 접속하는 기능이 포함되어 있지 않기 때문에 TLServer 가

포함되어 있지 않다.)

3. 클라이언트: TRiLOGI 프로그램으로 사용자는 래더(Ladder)로직+

TBASIC 프로그램을 작성할 수 있는 “ 클라이언트” 프로그램중

하나이다. (만약 사용자가 오프라인 상에서 PLC 프로그래밍을 한다면

TLserver 없이 오직 클라이언트 프로그램만을 실행시면 된다.)

클라이언트/서버 구성의 좋은점은 서버와 클라이언트가 같은 컴퓨터에

있든지, 수백 Km 떨어져 있든지는 중요하지 않으며 거리와 관계없이

정확히 같은 방법으로 동작시킬 수 있다는 것이다. 클라이언트와 서버는

인터넷을 포함한 모든 유형의 네트워크 연결을 통하여 통신할 수 있다.

이것은 PLC 가 가까이 있든 멀리 있든지 간에 인터넷 혹은 무선 모바일

인터넷을 통하여 사용자가 원격으로 프로그램을 할 수 있게 된다.

클라이언트/서버 구조의 또 다른 장점은 같은 서버에 여러 개의

클라이언트가 동시에 접속할 수 있다는 것이다. 그러므로 사용자는

하나의 PLC 를 세계 각처에서 다수의 TRiLOGI 클라이언트 소프트웨어

프로그램을 이용하여 다중으로 실행 및 접속시킬 수 있다. 사용자는

또한 TRiLOGI 클라이언트와 엑셀에서 데이터의 수집 및 모니터링 등을

할 수 있게하여주는 “ 엑셀링크(ExcelLink)” 클라이언트 소프트웨어를

동시에 사용할 수 있다.

4. TRiLOGI 클라이언트 소프트웨어는 2 가지 형식을 지원하고 있다:

i. 로칼 자바 어플리케이션(Local Java Application) - JVM 은 물론

TRiLOGI 프로그램은(아래참조) 반드시 로칼 PC 에 설치되어져

있어야 한다.

11

Page 12: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

ii. 자바 애플릿(Java Applet) - 클라이언트 컴퓨터에서는 TRiLOGI

애플릿에 호출하기 위해서 인터넷 익스플로러 5+ 또는 넷스케이프

네비게이터(Netscape Navigator) 4.5+와 같이 자바(JAVA)를

지원하는 웹-브라우저에서 사용이 가능하다. 로칼 컴퓨터에

TRiLOGI 소프트웨어를 설치할 필요는 없다.

TRiLOGI 어플리케이션 과 애플릿의 비교

좋은점 안좋은점

어플리케이션

• 즉시 시작(Start) 한다..

• TRiLOGI 파일을 로칼 하드 디스크 또는 TLServer에 읽

거나 쓸 수 있다.

• 네트워크 상에 있는 어느 TLServer라도 접근 할 수 있

다.

• JVM의 복사본이 로칼에 존

재하기 때문에 프로그램의 동작 상태를 예상할 수 있다.

• 인쇄는 Java2함수가 JVM을 호출하는 것에 의해 지원된

다.

모든 클라이언트 컴퓨터에 소

프트웨어의 로칼 설치가 필요

하다.

모든 클라이언트 컴퓨터에 JVM의 설치가 필요하다.

방화벽을 실행하고 있다면 IP주소를 지정해야 한다.

애플릿으로의 인쇄 서비스를 지원하지 않는다.

애플릿

• 클라이언트 컴퓨터에 어떤

소프트웨어나 JVM을 설치할 필요가 없다.

• 사용자의 PLC를 장소와 관

계없이 어떠한 PC방에서나 인터넷을 통한 제어가 가능

하다.

• 소프트웨어의 유지와 업그레

이드가 간단하다. TL50Applet.jar파일만 바꾸어

주면 된다.

• 프로그램 파일의 저장 장소

는 오직 서버에만 존재한다. 이것은 PLC프로그램 연습을 하는데 유용하다.

• TRiLOGI 파일들을 TLServer

에만 읽거나 쓰기를 할 수 있

다. 로칼 하드디스크를 읽거

나 쓸수 없다.

• 이러한 파일이 로드되었을 때

만 TLServer에 접근이 가능하

다.

• 처음 로드될 때, 수분이 걸릴 수도 있다. (그 이후부터는 파

일이 캐쉬에 저장 되어 있으

므로 브라우저를 빠르게 실행 시킬 수 있다.)

• 프로그램의 작동상태가 브라

우저의 버전 또는 적용 방법

에 따라 다른 양상을 나타낼 수 있다.

4 장에 TRiLOGI 어플리케이션과 애플릿 소프트웨어를 실행시키는

방법에 대하여 설명해 놓았다.

12

Page 13: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

3장 : TLServer의 사용– TRiLOGI을 위한 웹서버

(Web Server)

I. 개 요

TLServer 를 시작하기 위해서는 윈도우의 “ 빠른 실행 바(bar)”

아이콘을 클릭하거나(아래 그림 참조) “ 시작” 버튼을 누르고 “ Internet

TRiLOGI 5.x” 를 선택한다. 그 다음 “ TLServer Version 2.x” 를

선택하면 TLServer 창이 나타난다. TLServer 를 최소화 할 수도 있지만

인터넷 또는 로칼 네트워크를 통하여 TRiLOGI 로부터 네트워크 요청을

서비스하기 위해서는 활성화가 되어져 있어야 한다.

TLServer 는 M-시리즈 PLC 에서 공용

랜(LAN)이나 인터넷으로 연결하는

게이트웨이와 같은 역할을 한다.

TRiLOGI 같은 클라이언트 프로그램이

PLC 를 접속하여 읽거나 쓰기를 원할 때

인트라넷, 인터넷 또는 로칼 호스트를

통하여 전송된 TCP/IP 프로토콜을

사용하여 TLServer 로 명령을 보낸다.

명령어를 전송 받은 TLserver 는 PC 의

RS232 또는 RS485 포트를 통하여

PLC 에 읽기/쓰기를 수행한다.

PLC 로부터 전송받은 데이터는 TCP/IP

프로토콜을 통하여 클라이언트

프로그램으로 전달된다.

TLServer 는 또한 TRiLOGI 응용프로그램을 로칼 PC 에 설치할 필요없이

자바(JAVA)가 가능한 웹 브라우저에서 PLC 로의 접속을 가능하게 하는

TRiLOGI 자바 애플릿(Java Applet)을 포함한 웹-페이지를 서비스하는

웹-서버이기도 하다.

NOTE: TLServer 버전 2.0 부터 TLServer 는 "파일 및

이메일 서비스" 기능을 PLC 에 제공하고 있다. 이것은

13

Page 14: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

PLC 가 PC 의 파일을 열거나 PC 의 하드디스크로

데이터를 저장하기 위하여 TLServer 로 명령어를

전송할 수 있다는 것을 의미한다. 또한 PLC 는

TLServer 에게 명령하여 세계의 누구에게든 이메일을

전송할 수 있다. "파일 및 이메일 서비스" 기능은 이

매뉴얼 3 장의 섹션 5 에 상세히 설명되어져 있다.

새로운 이메일 서비스는 폴링(상태 체크)하지 않는다는 점에서 TLServer

1.0 에서 제공하는 원래의 이메일 기능과는 다르다. TLServer 2.0 의 이메일

서비스 기능에서 PLC 는 비동기적으로 TLServer 에 이메일 전송 요청을

한다. 이것은 PLC 에서 이메일의 전송을 TLServer 에 요청하기 위해

TLServer 가 항상 PLC 에 연결되어 있지 않아도 다이얼업-모뎀을 통하여

필요할 때 마다 다이얼링(Dial-in) 전화 연결을 하여 이메일 전송 요청하는

것을 가능하게 해준다. 그러나 폴링방식의 이메일 기능은 RS485 네트워크를

통해 이메일 요청을 다수의 PLC 들과 연결하여 서비스 할 수 있는 이점을

가지고 있기 때문에 원래의 폴링 방식의 이메일 기능을 현재의 버전

2.0 에서도 비동기식 방식과 함께 계속 지원되고 있다.

TLServer 가 처음 시작 되어질 때 작동되고 있는 컴퓨터의 IP 주소를

O/S(오퍼레이팅 시스템 : Operating System: 윈도우 98, 윈도우 NT,

윈도우 2000, 윈도우 XP 등)에 조회한다. (만약 O/S 가 IP 주소를 조회하는

속도가 느리다면 TLServer 가 이 IP 주소를 표시하는데 어느 정도 시간이

걸릴 수 있다.) 사용자가 PLC 에 접속하는데 사용할 IP 주소를 신속히 선택할

수 있도록 최대 2 개의 IP 주소까지 O/S 로부터 얻어진 IP 주소를

TLServer 화면의 상단에 보여준다. IP 주소와 관련하여 발생할 수 있는

몇가지의 시나리오를 아래에 설명하였다.:

• 만약 컴퓨터가 어떤 네트워크나 인터넷에 연결되어 있지 않고,

어떤 네트워크 어댑터도 설치되어 있지 않다면, 오직 로칼 호스

트 IP주소 (“ 127.0.0.1:9080” 9080은 포트번호)가 화면에 나

타난다.

Note: 사용자의 PC가 네트워크에 연결되어 있거나 그렇지

않거나와 관계없이 로칼 호스트 IP주소

127.0.0.1:9080 이 TLServer 화면의 상단에 보여지

지 않고 있더라도 TLServer가 실행되고 있는 같은

(동일) PC 상에서 작동되는 (로칼모드) 클라이언트

프로그램에는 항상 유효하다. 즉, 동일 PC상에서

TLServer와 클라이언트 소프트웨어를 실행시키고

있다면 클라이언트 소프트웨어에서 IP 주소를

127.0.0.1:9080로 설정하여 놓아도 통신이 가능하다.

(SuperPLC의 표준 클라이언트 프로그램으로는

TRiLOGI와 TRi-ExcelLink가 있다.) 사용자의 PC가

네트워크에 연결되어 있던지 그렇지 않던지 사용자

는 로칼 호스트 연결 상에서 여전히 TLServer와

14

Page 15: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

TRiLOGI를 사용할 수 있다. 로칼 호스트 연결의 경

우에는 TRiLOGI 와 TLServer가 원도우 기반의 프

로그램처럼 같은 PC에서 동시 (TRiLOGI 와

TLServer)에 동작한다. 만약 사용자가 클라이언트와

서버를 같은 PC에서 동작시킨다면 로칼호스트

(Localhost) IP주소인 127.0.0.1:9080를 사용하기를

추천한다. 만약 사용자의 PC가 항상 인터넷에 직접

접속되어 있고 로칼모드로 PLC와 통신을 하고 고정

IP를 사용하고 있다면 그 IP주소는 연결되어져 있는

인터넷 IP주소를 사용하면 된다.

• 만약 사용하는 컴퓨터가 회사의 인트라넷 네트워크에 연결되어

있거나 사용자가 이 컴퓨터를 다른 컴퓨터들과 인터넷 연결을

공유하기 위해 라우터에 연결하였다면 IP주소는 "인트라넷

(Intranet)"으로 알려진 내부 IP주소가 나타난다. 인트라넷 IP주소

는 시스템 관리자나 라우터(DHCP 서버로 명명된 것)에 의해 할

당된다. 사용자는 이 컴퓨터로 같은 랜(LAN) 상에서는 접속할

수 있으나 인트라넷 IP주소는 외부의 랜(LAN, 인터넷등)에서는

접근할 수가 없다.

TLServer를 외부의 랜(LAN, 인터넷등)에서 접속하기위해 사용자

는 “ 가상서버” 로서 TLServer 동작시키도록 라우터의 내부 세팅

에서 PC를 정의하여주어야 한다. 사용자는 라우터의 공인(Public:

인터넷 주소등) IP주소를 이용하여 TLServer에 접속할 수 있다.

라우터는 공인 IP주소(외부 IP주소; 인터넷 IP주소)를 인트라넷

IP주소로 변환작업을 한 후 가상서버로 지정된 PC로/부터 메시

지를 송신 또는 수신한다. 이 과정은 네트워크 주소 변환

(Network Address Translation: NAT)으로 알려져 있다.

• 만약 사용자가 다이얼 호출(전화선(모뎀)으로 컴퓨터와 연결)을

사용하여 랜(LAN) 상의 컴퓨터를 인터넷에 연결한다면 사용자는

2개의 IP주소를 보게 될 것이다. : 하나는 인트라넷 주소이며 다

른 하나는 인터넷 IP주소이다. 인트라넷 주소는 오직 인트라넷

안에서만 접근이 가능하다. 만약 사용자가 인터넷에서 TLServer

로 접속하기를 원한다면 TLServer의 화면상에 나타나 있는 인

터넷 IP주소를 사용하여야 한다. 좀더 상세한 인트라넷 설치와

방화벽 문제에 관한 추가 설명은 “ PLC셋업 및 구성” 에 설명

되어져 있다.

다이얼 호출 사용자들을 위한 NOTE: 만약 사용자가 다이얼 호출

연결(모뎀)을 사용하여 TLServer를 인터넷에 연결하고자 한다면

TLServer 를 실행시키기 전에 반드시 컴퓨터를 인터넷에 먼저

연결하여 놓아야 한다. 컴퓨터를 인터넷에 연결하여

놓았다면 TLServer 의 화면에 인터넷 IP 주소를 알려준다.

사용자는 로칼호스트(Localhost) IP 주소(127.0.0.1) 대신에

15

Page 16: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

인터넷 IP 주소를 볼 수 있을 것이다.

TLServer 가 실행되는 즉시 TLServer 는 TRiLOGI 클라이언트로부터

연결을 수락할 준비가 되어 진다. 사용자는 TLServer 의 통신포트 설정

작업을 할 수 있다. 시스템에서 사용자를 추가/삭제/수정, 이메일 전송 요청

설정등의 TLServer 설정작업을 할 수 있다. 다음 절에 각 버튼의 기능에

대한 설명을 해놓았다. (또한 TLServer 의 작업 화면들에서 <F1>키를

누르면 즉시 도움말을 볼 수 있다.)

II. 시리얼포트 설정

1. 시리얼 통신 테스트와 설정

클릭

16

Page 17: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

이 다이얼로그 PLC 와의 원활한 통신을 위해 PLC 의 통신 설정값들과

일치하는 호스트 컴퓨터의 시리얼 포트 환경을 설정하기 위하여 사용된다.

사용자가 하나 이상의 PLC 를 RS485 네트워크를 통하여 호스트 컴퓨터에

연결한다면, 반드시 모든 PLC 들은 RS485 통신과 관련한 시리얼 통신

설정을 TLServer 의 시리얼 포트 설정 값과 동일하게 설정하여 주어야

한다. 버튼은 사용자가 TLServer 가 해당 통신 포트를 사용할

수 있도록 활성화 시켜준다. 버튼은 해당 통신포트를 비활성화

시켜주어 임시적으로 포트를 다른 응용프로그램에서 사용할 수 있도록

통신 포트의 사용권을 넘겨줄 수 있으며 해당 통신 포트의 설정 값들을

수정할 때에는 반드시 이 버튼을 눌러 설정작업을 하여야한다.

“ Command String” (명령 문자열) 입력 필드는 MODBUS ASCII

프로토콜 또는 SuperPLC 의 전용 ASCII 프로토콜을 사용하여 통신

테스트를 실행시킬 수 있다. 사용자가 여기에 문자열을 입력하고

<Enter>(엔터) 키 를 누르면, ASCII 문자열은 시리얼포트를 통하여

PLC 에 보내어지고 명령에 대한 응답 문자열이 아래 텍스트 박스에

표시된다. 만약 시리얼 포트가 열리지 않은 상태라면 이 명령에 의해

자동적으로 열린다. 다중(Multi-point) 호스트 링크 명령 만이 여기에서만

수용된다. (즉, ASCII 명령을 사용할 때 PLC ID(주소)를 입력한 명령을

사용하여야 한다.) 여기에서 허용되는 단일 포인트와 포인터 (1:1 통신)

명령은 PLC 의 ID 주소를 묻는 명령인 "IR*" 뿐 이다.

17

Page 18: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

만약 TLServer 컴퓨터에 단 하나의 PLC 가 연결되어 있다면 사용자는

다음 명령어를 사용하여 통신 테스트를 할 수 있다:

명령어 문자열 : IR*

응답 문자열: IR01*

응답문자열은 이 PLC의 ID주소가 01이라는 것을 알려준다. 이 ID주소를

사용하여 다른 호스트 링크 명령어를 시도해 볼 수도 있다.(예를 들면

입력#1 에서부터 #8 까지의 상태를 조회하는 명령 : @01RI0000* )

만약 한대 이상의 PLC 가 연결되어 있다면 “ IR*” 를 사용하면 안된다.

IR*을 사용하게 되면 RS485 네트워크 상에 통신 연결되어 있는 모든

PLC 들이 동시에 응답하려고 하기 때문에 통신 결과는 쓸모없는 문자열

값이 돌아오게 된다. PLC 의 ID 를 바꾸기 위해서 예를 들어 ID 01 번을 ID

05 번으로 변경하고자 할 때 “ @01IW0500*" 명령 문자열을 PLC 로

전송하면 된다. TLServer 2.0 이상의

버전에는 이 명령을 자동으로

실행해주는 (PLC ID 변경)

버튼이 있다. “ Detect ID"(ID 확인)버튼을

클릭하면 현재 ID 를 확인할 수 있고, 이때

"Change ID"(PLC ID 변경)버튼으로

새로운 ID 번호(16 진수)를 PLC 에

입력하면 된다.

2. 통신 설정 값의 변경

대부분의 사용자들은 통신 포트 설정을 디폴트(초기) 값인 38,400 bps, 8

data bits, 1 stop bit, no parity 으로 그대로 유지하여 사용하기를 원한다.

통신 포트 설정을 변경해야 하는 경우는 대부분 PLC 의 통신 포트를 더

낮은(속도) 값으로 설정하여야 하는 경우이다. (예를 들면 9600bps 의

속도로 무선 통신해야 하는 경우등) 변경된 통신 포트 설정 값들은

TLServer 환경 파일인 "TLserver1.cfg"에 TLServer 의 실행이 정지될

때 저장된다.

또 다른 경우로서 DIP 스위치 4 번을 ON 으로 하고 M-시리즈 PLC 의

전원을 껐다 켰을 때 이다. DIP 스위치 4 번을 ON 시키고 껐다가 전원을

재공급하면 PLC 의 통신 포트가 9600bps 로 강제로 자동 설정되기

때문에 PLC 와의 통신을 위해 TLServer 의 통신 속도를 일시적으로

9600 bps 의 Baud rate(통신속도)로 변경시켜야 한다.

(대부분 DIP 스위치 4 번은 통신 문제를 야기 시킨 프로그램을 수정하기

위하여 사용된다.)

18

Page 19: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

그러나 PLC 를 DIP 스위치를 OFF 시키고 PLC 를 리셋 시킨 후에

TLServer 의 통신 보레이트(Baud Rate) 설정을 38400bps 로 다시 재

설정하여 주어야 한다. 그렇지 않으면 TLServer 의 통신속도가 PLC 와

맞지 않아 PLC 와 TLServer 간의 데이터 통신상에 문제가 발생하게 될

것이다.

3. 모뎀 지원

a) 다이얼 모뎀: TLServer 2.0 은 PC 의 COM 포트에 연결되어 있는

모뎀에 전화를 거는 기능을 제공한다. 이것은 PLC 가 멀리 떨어진 원격

지역에 위치해 있고 공중전화 선이나 휴대전화 연결 만이 가능할 때

매우 유용하다. US 로보틱(Robotic) 33.6K bps 모뎀 또는 Hayes Acura

스마트 모뎀(Smart Modem) 등과 같은 매우 일반적인 아날로그 모뎀에

PLC 를 연결할 수 있다는 것을 의미한다. TLServer 는 그 원격모뎀의

전화번호로 전화를 걸고, 데이터 통신을 할 수 있다. 일단 연결이 되면,

원격 PLC 는 마치 PLC 가 PC 의 시리얼 포트에 직접

연결되어 TLServer 와 직접 연결된 것과 같이 인터넷, 인트라넷 또는

로칼호스트(Localhost) 등을 통하여 인터넷 TRiLOGI 또는

TRi-ExcelLink 등과 같은 클라이언트 어플리케이션에 데이터 통신

연결이 되어진다.

노트:

• 전송 지연과 마찬가지로 변 복조 과정의 시간 지연 때문에 2가

닥 선에의한 모뎀 통신은 시리얼 통신 선을 직접 연결한 통신에

비해 일반적으로 상당히 통신 속도가 늦다. 이것은 정상적인 상

태이며 통신 설정과는 관계없는 문제이다.

• TLServer모뎀 기능이 작동하기 위하여 PC의 모뎀은 반드시 PC

의 COM 포트를 에뮬레이트(Emulate)할 수 있어야 한다. 일부

신형 컴퓨터들은 원도우의 다이얼업(Dial-Up) 네트워킹에서만

작동하는 "Win modem" 또는 "Soft modem"을 사용하고 있다.

이런 종류의 모뎀들은 소프트웨어적으로 작동이되고 표준 PC

COM 포트를 에뮬레이트(Emulate)하지 않는다. 또한 이러한 방

식의 모뎀 통신은 통신 처리를 위해 약간의 CPU 사용이 요구된

다. 따라서 이런 타입의 모뎀은 TLServer와 잘 작동하지는 않을

수도 있다. 만약 사용자의 "Soft modem"이 TLServer와 잘 동작

하지 않는다면 외부 모뎀을 사용할 것을 추천한다. 외부(내장형

또는 외장형) 모뎀은 최근에는 값이 저렴하며 TLServer와 호환

성이 좋다.

19

Page 20: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

• 모뎀을 통해 TLServer을 설정하려면, 먼저 "Close Port"(포트 닫

기)버튼을 눌러 활성화된 통신 포트를 닫아준다. 모뎀이 연결되어

있는 통신 포트를 선택하고(모뎀이 연결된 포트는 윈도우의 "제어

판->모뎀->속성"에서 COM포트 번호를 확인할 수 있다.)

"Modem"(모뎀)체크 박스를 클릭하여 선택한다. 그러면 전화를 걸

전화번호를 입력할 수 있게 된다. "Modem"모드를 선택하면 3개

의 "Connect", "Hang Up", "Special"버튼의 선택이 가능해 진다.

또한 "Modem"모드를 선택하면 "Baud Rate" 입력 필드는 PC와

모뎀사이의 통신 속도(Line rate)를 정의하여 주는 "DTE speed"

(DTE 속도) 필드로 자동적으로 변경 된다. (모뎀 간의 실질적인

통신 속도는 연결된 통신의 질에 따라 자동적으로 통신 속도가

설정이 되므로 “ DTE

Speed" (DTE 속도) 필

드는 설정하여 줄 필요

가 없다.) 모뎀 제조업

체에서 특별히 어떠한

속도 제한 등에 대한

언급이 없으면 기본적

으로 “ DTE Speed"

(DTE 속도) 필드는 가

장 빠른 값인(115200)

으로 자동으로 설정된

다. 모뎀의 변복조 동작

으로 인하여 PC와 모

뎀 간 그리고 모뎀 간

의 통신 속도는 서로

다르게 적용이되어 동

작될 수 있다.

중요: PLC 와 모뎀간의 연결은 TLServer 를 PLC 모뎀으로 연결하기

전에 미리 준비가 되어 있어야 한다. PLC 와 모뎀의 통신 설정에

관한 보다 상세한 설명은 부록 3 을 참조하시기 바랍니다.

연결하고자 하는 전화번호를 “ Phone No.” (전화번호) 필드에 입력하고

"Connect"(연결)버튼을 누르면 모뎀은 다이얼링을 시작한다. ("Auto

Answer"(자동응답) 체크박스에 체크하여 자동응답이 되도록 설정한다.)

원격 모뎀이 통화중이거나 호출에 응답하지 않는다면 이에 따른 에러

메시지가 응답박스에 표시된다. “ Hang Up” (전화끊기) 버튼을 누르면

즉시 전화 걸기가 중지된다.

만약 "Special" 버튼을 누르면 다음과 같은 대화 창이 나타난다:

20

Page 21: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

• 사용자는 선택 메뉴에서 새로운

값을 선택하여 DTE 속도를

변경할 수 있다.

• 사용자는 모뎀의 초기화시 사용될

특별한 AT 명령어를 기입하여

모뎀에 적용 할 수 있다.

일반적으로 AT&K0 을 기본 설정

값으로 사용한다

또한 TLServer 가 자동응답 모드(나중에 별도 설명함.)로 되어 있을 때

적용되는 "Call-in Password"(연결시 암호) 필드를 기입할 수 있다. 원격

모뎀이 TLServer 에 연결하려면 반드시 정확한 암호(Password)가

입력되어야 한다. 암호가 맞지 않으면 즉시 연결이 중지 된다. 만약

"Call-in Password"(연결시 암호) 필드가 비어 있으면 모뎀 연결시

암호를 사용하지 않는 것으로 간주된다.

b) 자동 응답: "Auto Answer"(자동응답) 체크박스를 선택하고

"Connect"(연결) 버튼을 누르면, TLServer 는 들어오는 호출의 첫번째

신호음에 모뎀이 자동으로 응답하도록 설정된다. 이 기능은 여러가지로

많은 활용을 할 수 있다.

원격지에 설치되어 있는 몇대의 SuperPLC라도 하나의 TLServer의 모

뎀에 주기적으로 전화를 걸어 데이터 통신 연결을 하고 PLC 파일 서비

스 명령을 사용하여 PLC의 내부 변수들의 값들을 PC의 하드디스크 내

에 새로운 데이터 파일을 생성하거나 기존 데이터 파일에 값을 추가 및

갱신을 시킬 수 있다. 이것은 M-시리즈의 PLC들을 자료 수집 목적으로

사용하는 경우 매우 유용하게 적용할 수 있다. MS 엑셀이나 Locus 123

등과 같은 스프레트시트 응용프로그램으로 즉시 불러 사용할 수 있도록

사용자는 CSV포맷의 형태로 데이터를 저장할 수 있다.

• 원격지의 SuperPLC는 스스로 TLServer에 전화를 걸어 PLC의

특정 데이터를 사전에 정의된 이메일(Email) 주소로 즉시 이메일

보내 줄 것을 TLServer에게 요청 할 수 있다.

• 원격지의 SuperPLC는 스스로 TLServer에 전화를 걸어 자신의

리얼타임클럭(Real Time Clock: 년월일 시분초)을 TLServer에

동기화 시킬 수 있다.

• TLServer는 SuperPLC가 전화 접속 또는 인터넷 접속하는

ISP(Internet Service Provider:인터넷 서비스 제공사업자 예; 천

리안, KT메가패스…등)와 같은 역할을 한다.

21

Page 22: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

다음의 폴더에 TLServer 에 전화 접속을 위한 PLC 의 전화 걸기, 파일

또는 이메일 서비스를 요청하는 몇 개의 ". PC5" 예제 프로그램들을

제공한다.

"C:\TRiLOGI\TL5\usr\samples\FileService_Modem"

인증이 되지 않은 전화 접속을 막기위하여 "Call-In Password"(연결시

암호) 필드에 위에서 설명한 바와 같이 암호를 설정하여 놓을 수 있다.

만약 "Call-In Password"(연결시 암호) 필드가 비어있지 않고 특정

암호가 설정되어 있다면, 원격 모뎀의 접속시 접속을 유지하기 위해서는

원격 모뎀은 반드시 "Call-In Password"(연결시 암호) 필드에 입력되어

있는 암호와 일치하는 문자열과 CR(Carrage Return)종료 문자열을 즉시

보내야 한다. 만약 암호가 일치하지 않으면 외부 원격 모뎀의 인증되지

않은 접속을 방지하기 위하여 TLServer 와 접속이 즉시 강제로 끊긴다.

만약 암호가 일치되면 TLServer 는 "<OK>" 및 CR-종료 문자열을

모뎀을 통해 외부 원격 PLC 로 보냄으로서 접속을 승인한다. "Call-In

Password"(연결시 암호) 필드가 암호로 정의되어 있는 경우 접속하려는

원격 모뎀이 TLServer로부터 승인문자를 확인받는 것은 TLServer와의

접속을 계속 유지하기 위한 원격 접속자의 의무인 것이다.

III. 사용자 설정

클릭

22

Page 23: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

시스템 설치 후 초기에

TLServer 화면에서 사용자

설정(Configure Users)버튼을 누르면

로그인 화면상에 사용자

이름(Username) 필드에

“ Administrator“ 가 나타난다.

초기에는 암호가 설정되어 있지 않기

때문에 암호를 설정하여 주는 것이

필요하다. 암호를 설정하거나 새로운

사용자를 등록시키거나 삭제 수정을

하기위해서는 왼쪽 그림의 로그인 터

화면에서 <Enter>(엔터)키를 누르면 다음에 설명할

화면이 나온다. 시스템 설치 초기에는 “ Administrat

만이 사용자의 추가/삭제/변경 및 암호를 수정할 수

갖는다. 시스템 설치 초기에 “ Administrator“

등록하여 놓지 않았기 때문에 로그인 화면

<Enter>(엔터)키를 누르면 사용자 설정 화면으로 이동

Administrator 로그인 화면에서 사용자 설정화면으

TLServer 와 PLC 의 접속을 허용하는 새로운 사용자

있는 설정 창(화면)이 나타난다. 여기서 사용자는 사용

사용자의 접속 허용 수준 등을 변경/추가/삭제등을

여기에서 새로 등록되는 사용자는 Ladder 프로그램

자신의 전용 하위 폴더가 아래와 같이 자동으로 만들어

"C:\TRiLOGI\TL5\usr\<username>"

여기에서 <username>(사용자 이름)은 사용자 설정화

등록한 사용자 이름(Username)과 같다.

<Enter> 엔

사용자 설정

or“ 사용자

있는 권한을

는 암호를

에서 그냥

한다.

로 이동하면

를 등록할 수

자 이름, 암호,

할 수 있다.

을 저장하는

진다.

면에서 새로

23

Page 24: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

• "Select Username"(사용자

이름 선택) - 기존 사용자 이

름을 더블클릭 하면

username/ password(사용자

이름/암호) 설정 창이 열린

다. 사용자 이름

“ Administrator” 에 암호를

부여하여 허용되지 않는 접

근을 막고 싶다면

Administrator에 암호를 추

가하면 된다. 또한 미리 정의

되어 있는 username인

“ samples” 은 많은 예제들

을 포함하고 있는 TRiLOGI

샘플 파일들을 저정하여 놓

은 username이고 암호는 초

기에 설정하여 놓지 않았다.

“ samples” 사용자 이름 또

한 암호를 적용하기를 원한

다면 사용자는 “ samples”

를 더블 클릭하여

username/ password(사용자

이름/암호) 설정 창을 열고

암호를 입력하여 주면 된다.

Username(사용자이름)을 선택하고 <DEL>키를

사용자를 지울 수 있으며 그 사용자에게 제공된 폴더를

삭제한다. 폴더에 파일들이 존재하면 그 폴더는 자

지워지지 않는다. (따라서 해당 폴더를 함께 지우고자

먼저 TLServer 로부터 삭제하기 전에 원도우 익스플

TRiLOGI 어플리케이션을 사용하여 사용자의 폴더를 지

폴더 내의 파일들을 모두 삭제하여 비워 놓아야 한다.)

• "- Add New User -"

(새로운 사용자 추가)

이것을 클릭하면 새로운

사용자를 시스템에 추가할 수

있다. PC 의 메모리와

하드디스크가 허용하는 한

제한없이 많은 사용자를 추가할

누르면

함께

동으로

한다면

로어나

우거나

24

Page 25: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

수 있다.

• Server Port: username/ password(사용자이름/암호) 설정 창

왼쪽에 있는 "Server Port"(서버 포트)체크박스를 클릭하면

클라이언트가 TLServer 에 접속할 때 사용하는 TLServer 의

기본설정 “ Port(포트)” 를 변경할 수 있다. 이곳에서 지정하는

포트 번호가 무엇이든지 간에 반드시 클라이언트와 TLServer 의

포트 는 같은 포트 넘버로 일치되어야 접속이 가능하다.

예를들면, 포트번호= 8000 이고 로칼 호스트로 접속하는

경우에는 반드시 http://127.0.0.1:8000/ 로 접속 하여야 한다.

그러나 만약 포트 번호를 80 으로 지정한다면 (HTTP 를 위한

기본 설정 포트) , 이때에는 포트번호 없이 단지 IP 주소만으로

서버에 접속 할 수 있다. http://127.0.0.1/

TLServer 를 위해 어떤 포트번호를 사용하여야 하는가?

대부분의 경우 사용자는 미리 정의된 포트번호 “ 9080” 을

사용할 것이다. 이 글 끝에 “ 포트(Port)” 에 대하여 별도 설명

을 해 놓았다. 대부분의 공공 웹-서버를 위한 기본 설정 포트는

포트 80 을 사용한다. TLServer 와의 통신을 위해 포트 80 을

사용한다면 인터넷 주소(URL)에 추가로 포트 번호를 입력할

필요가 없다. 그러나 사용자가 그것을 원하든 원하지 않던간에

포트 번호를 사용하는데에는 이유가 있다. 포트 번호의 사용

방식에는 TLServer 을 회사의 인트라넷 상에 설치하는지 아니면

공공(일반) 인터넷 상에 설치하는지와 클라이언트(TRiLOGI 등)가

회사 인트라넷 환경하에서 TLServer 에 접속하는지 아니면

공공(일반) 인터넷 상에서 TLServer 에 접속하는지에 따라

달라진다. 이 매뉴얼의 부록 2 “ PLC 와 PC 하드웨어의 설정 및

구성” 에 포트 번호의 사용 방법에 대하여 상세하게 설명하여

놓았다.

25

Page 26: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

포트(PORT)

포트(컴퓨터 자체 내에서 사용되는 주소)는 프로그램들

간의 통신을 가능하게 하는데 사용된다. 포트 주소는

보통 특정한 어플리케이션 프로토콜과 관련이 있는

16bit 주소 이다. 웹-서버 또는 FTP 서버 같은

어플리케이션 서버는 클라이언트부터의 요청에 대한

서비스, 요청된 서비스를 실행, 그리고 서비스를 요청한

어플리케이션 프로그램에 의해 사용된 포트로 정보를

리턴하기위해 특정한 포트를 주목한다.

널리 보급되어 있는 인터넷 응용 프로토콜들은 잘

알려진 포트 번호를 사용하고 있다. 이러한

프로토콜들을 실행하는 서버 프로그램들은 서비스

요청들을 위해 이러한 포트들을 모니터링한다.

일반적으로 잘 알려진 몇 개의 인터넷 응용

프로토콜들의 포트들은 다음과 같다.

포트

(Port)

프로토콜

(Protocol)

21 파일 전송 프로토콜

(FTP: File Transfer Protocol)

23 텔넷 프로토콜

(Telnet Protocol)

25 단순 메일 전송 프로토콜

(SMTP: Simple Mail Transfer Protocol)

80 하이퍼텍스트 전송 프로토콜

(HTTP: Hypertext Transfer Protocol)

IV. 이메일(Email) 설정

26

Page 27: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

TLServer 의 이메일(Email)기능은 TLServer 버전

추가되었고 버전 2.0 과 그 상위 버전까지 적용되고

이 방식은 PLC 의 이메일 설정화면에서 각 PLC 들

플래그(Flag)에 설정한 시간에 따라 TLServer

이메일을 검색하기 위하여 TLServer 는 항상 PL

포트로 연결되어 있어야 한다. ( 또한 더욱 간

사용할 수 있는 다른 이메일(Email) 지원 기능인 “

서비스(File and Email Services)"는 다음 절에 설명

이 기능은 TLServer 버전 2.0 이상에서 지원한다.)

PLC 가 이메일을 보내야 하는 경우가

emEVENT[1]의 값을 마이너스(음) 값이 아닌 양수

함으로써 이메일 요청 플래그(Flag)을 ON 시킨다

부분에 설명되어 있는 "이메일을 보낼 수 있는 TR

작성하기(Writing TRiLOGI Programs that Can Se

참조)

TLServer 는 이메일 요청 플래그(Flag)가 ON

수신인 및 송신인 그리고 메시지 문자열 등을

변수들로부터 추출하여 미리 정의된 SMTM 메일

이메일을 내보낸다.

하나의 TLServer 는 RS232 나 RS485 를 통해

(최대 256 대의 PLC)에 대해 이메일 요청에 대한

있다. 이메일 요청에 대한 처리를 위한 서버

TLServer 의 주화면에서 "Setup Emails(이메일

눌러 다음과 같은 “ PLCs Email Setup(PLC 의

화면을 연다.

클릭

1.0 에서부터

있다.

의 이메일 요청

가 주기적으로

C 들과 시리얼

편하고 유연하게

파일 및 이메일

이 되어 있으며

발생하면 변수

의 값으로 설정

. (이번 절의 뒷

iLOGI 프로그램

nd Emails)” 를

이 되면 이메일

PLC 내부의

서버를 이용하여

하나이상의 PLC

서비스를 할 수

설정을 위해

설정)” 버튼을

이메일 설정)”

27

Page 28: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

SMTP Mail Server(메일서버):

이것은 유도라(Eudora) 또는

아웃룩 익스프레스(Outlook

Express)와 같은 이메일

프로그램에서 사용하는 이메일

서버이다. 만약 SMTP에 대하여

잘 알지 못한다면 ISP나 네트워크

혹인 인터넷 관리자의 도움을

받으시기를 권고한다. 이 SMTP

서버는 TLServer가 이메일을

보내기 전에 반드시 미리 설정이

완료되어 있어야 한다. 만약

SMTP서버가 POP3를 통한

인증을 요구한다면 사용자는

PLC의 이메일을 전송하기 전에

PC 자체의 이메일 프로그램을

사용하여 이메일 전송이 잘되는지

검사 하여야 한다.

PLC ID# 열: PLC 각각의 이메일 서비스 주기를 설정하기 위해

PLC ID#00부터 #FF사이의 (총 256대) PLC중 원하는 PLC를

선택하여 이메일 서비스 주기를 선정한다.

Check Every (seconds:초) – PLC가 이메일 발송을

TLServer에게 요청하는 각 PLC의 “ 이메일 요청

플래그(Flag)” 가 ON이 되었는지를 확인하는 주기(초단위)를

설정함. TLServer는 여기에 설정된 시간(단위:초) 주기로

주기적으로 해당 PLC의 이메일 요청 플래그를 확인하고

플래그가 ON이되어있으면 해당 PLC의 이메일 내용을 외부로

전송한다. 이메일 서비스 확인 주기의 설정 또는 변경은 텍스트

입력 필드(위 그림에서 ID=02)를 클릭하고 원하는 주기(초) 값을

입력하면 된다.

노트: SMTP 서버와 이메일 서비스 주기 설정 값들은 TLServer

프로그램을 빠져나갈 때 모두 하드디스크에 자동으로

저장된다. 이들 설정 값들은 TLServer 가 다시 구동될 때

자동 로드된다. 이 이메일 서비스 주기 설정 값은 PLC 의

이메일 보내는 시간과는 관계가 없다. 즉 아무리 이메일

서비스 주기를 빠르게 설정하였다 하더라도 이메일 전송을

요청하는 PLC 의 플래그(Flag)가 ON 으로 세트되어있을 때만

28

Page 29: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

이메일을 보낸다. 긴급한 이메일 서비스가 자주 요구되는

PLC 의 경우(경보등 같은 경우)에는 빠른 서비스 주기(예를

들면 10 초마다)로 설정하든지 아니면 “ 파일 및 이메일

서비스(File and Email Services)” 의 이메일 서비스 기능을

이용하는 것이 바람직 하다. 일일 보고 혹은 시간마다

보고하는 등의 급하지 않은 이메일은 충분히 긴 서비스

주기을 설정하여 PLC 의 통신 부하를 줄여주는 것이 좋다.

비활성 PLC

TLServer 는 이메일 서비스 주기가 0 이 아닌 모든 PLC 들과의

통신을 서비스 주기에 따라 통신 시도한다. 그러나 만약 어느

한 PLC 가 비활성 상태라면(예를 들어, PLC 의 전원이 꺼져있거나,

TLServer 서버와의 접속이 끊어진 경우) 통신은 실패하게 된다.

이러한 통신 실패는 상당히 많은 양의 CPU 대기시간을 초래하며,

활성화되어 있는 다른 PLC 들과의 정상적인 통신에 영향을 준다.

이러한 비활성 PLC 들은 TLServer 에 의해 이메일 설정 화면

상에서 해당 PLC 에 가 표시되고 반복적인 통신 에러의

실행을 피하기 위해 정의된 서비스 주기에 따라서 더 이상 통신을

시도하지 않는다. 그러나, TLServer 는 이러한 비활성되어 있는

PLC 들이 다시 접속(활성화) 되었는지를 매 2 분마다 다시 체크해

본다. 만약 비활성화 되어 있던 PLC 가 TLServer 의 통신명령에

응답을 하면 내부 표시( )가 없어지고 주기적인 이메일

요청 서비스 기능도 다시 원상 복귀한다.

또한 사용자는 버튼을 사용하여(한번 클릭) 모든 PLC 들을

강제적으로 다시 수동 검색 할 수 있다. 만약 메시지가

나타나면 해당 PLC 의 통신 포트의 결선 상태등을 체크해 보기

바랍니다.

이메일을 보낼 수 있는 TRiLOGI 프로그램 쓰기

(Writing TRiLOGI Program that Can Send Emails)

이메일을 보내기 위해서는 TRiLOGI 프로그램은 이메일의

헤더(발신자 이메일 주소, 수신자 이메일 주소, 이메일 제목)

부분을 저장하기 위해 문자열 변수 A$, B$, C$을 사용하며

이메일의 메시지 본문을 저장하기 위해 문자열 변수 D$에서부터

Z$까지의 문자열 변수를 사용 한다. (모든 문자열 변수들이 모두

사용되어져야 하는 것은 아니다. 사용되지 않는 문자열 변수들은

29

Page 30: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

나머지 다른 일반 프로그램에서 사용할 수 있다.) 특별한 변수인

emEVENT[1]은 PLC 가 TLServer 로 이메일 전송을 요청하는

플래그(Flag)로 사용된다. 프로그램에서 이메일 서비스를 요청하지

않을 때에는 이메일 전송 요청 플래그(Flag)를 -1 로 초기화하여야

한다. TRiLOGI 프로그램이 이메일을 보내고자 할 때에는 먼저

발신자, 수신자, 제목을 다음의 문자열 변수들에 먼저 저장한다.

A$ 발신자 이메일 주소 – 이메일의 출처를 확인

하는데 사용된다.

B$ 수신자 이메일 주소 – 이것만은 반드시 정확

하게 입력되어져야 한다.

C$ 이메일 메시지의 제목

D$ 이메일 메시지 본문의 첫째 줄

E$ 이메일 메시지 본문의 둘째 줄

... .....

Z$ 이메일 메시지 본문의 23번째 줄

emEVENT[1]

-1 = 어떤 이메일도 보내지 않음.

0 ~ 23 = 이메일 메시지 본문 줄의 개수

D$에서 Z$까지에 포함되어 있는 메시지 본문

M-시리즈 PLC 에서 사용할 수 있는 이메일 메시지 본문의 최대

줄 수는 D$ 에서 Z$까지인 총 23 줄로 제한되어 있다.

예를 들어, PLC 가 다음과 같이 3 줄의 인사를

[email protected] 으로 이메일 전송을 할 때 프로그램은

다음 구문에 포함되어 있는 custom 함수를 동작시켜야 한다.

A$ = "Demo1@PLC" ' sender

B$ ="[email protected]" ' recipient

C$ = "This is an email demonstration" ' subject

D$ = "Hello SuperPLC"

E$ = "The time is"

+STR$(TIME[1])+":"+STR$(TIME[2])+

". How are you doing?" ' Message body

F$ = “ From Your Friend”

emEVENT[1] = 3

30

Page 31: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

상기 예제에서 사용자는 이 PLC 의 이메일을 TLServer 가

서비스하도록 하기위하여 "Setup Emails"(이메일설정)화면에서 이

PLC 를 위한 이메일 서비스 주기 (예; 매 10 초마다)를 설정하여야

한다. TLServer 가 이 PLC 를 스캔하였을 때 emEVENT[1]변수

가 1 로 세팅되어 있는 것을 발견하게되면 PLC 의 문자변수로부터

메시지 본문과 해더를 추출하게 된다. 일단 A$ 에서 F$ 는

emEVENT[1])에서 정의하여 놓은 것으로서 본문이 3 줄인

메시지가 이 예제에서 추출된다.

TLServer 는 이 이메일을 보내기 위해서 SMTP 서버와의 연결을

시도하게 된다. TLServer 는 이 이메일 요청을 처리한 후에

PLC 에 emEVENT[1]변수 값을 "-1" 값으로 설정한다. (이메일

요청 없음 상태) 따라서 TRiLOGI 프로그램은 이메일을 전송한

후에 이메일 요청 플래그(flag)를 리셋하는 것에 대해서 걱정할

필요가 없다. 아울러 이러한 기능은 TLServer 가 이 이메일 요청에

대해 적절한 처리가 되었는지에 대하여 PLC 에 알려주는 역할을

한다. 그러나 emEVENT[1]이 TLServer 에 의하여 리셋이

되었다하더라도 이 이메일이 최종 이메일 수신자에게 전달이

확실하게 되었다는 것을 보증하지는 않는다. 이메일의 성공적인

전달 여부는 TLServer 가 이메일을 보내려고 하는 순간의 SMTP

서버 및 네트워크의 상태에 따라 직접적인 영향을 받는다. 긴급한

이메일 보내야 하는 경우에는 이메일 수신자가 이 이메일에

적절한 응답을 위한 조치가 확인될 때까지 주기적으로 여러 번에

걸처 이메일을 전송하는 것도 하나의 방법이다.

V. 파일과 Email 서비스

버전 2.0 의 TLServer 는 COMM 포트를 이용하는“ File and Email

Services” (파일 및 이메일 서비스)기능을 PLC 에 제공을 한다.

기본적으로 PLC 는 “ Tag” (태그: “ <” 문자와 “ >” 문자사이의

ASCII 문자로 표현된 것)들을 사용하여 TLServer 에 서비스 요청

메시지를 보내고 TLServer 는 수신된 서비스 요청에 대하여

문법에 맞는 명령인지 확인한 후 요청한 서비스를 실행한다.

<command [parameter]>(<명령 [파라메터]>) 태그(tag)와 </>

태그(tag)사이의 모든 데이터는 요청한 서비스의 데이터로

취급된다.

PLC 는 TLServer 에 서비스 요청를 스스로 발생시킬 수 있는

장비중 하나이기 때문에 TLServer 에 서비스를 요청하기위하여

TLServer 에 항상 연결되어 있을 필요는 없다. 원격의 PLC 는

일반 전화선과 모뎀을 이용하여 TLServer 에 연결한 후

31

Page 32: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

요구되어지는 “ File and Email Services(파일 및 이메일

서비스)” 요청하고 다른 PLC 들이 이러한 서비스를 TLServer 에

요청할 수 있도록 스스로 TLServer 와의 연결을 끊도록 할 수

있다.

NOTE: Write/Append/Read (쓰기/추가갱신/읽기)등의 “ File and

Email Services(파일 및 이메일 서비스)” 기능에 의해

만들어 지거나 사용된 모든 파일들은 아래 폴더에 위치해

있다.

<TRiLOGI 가 생성된 디렉토리>/FileService (폴더의 디폴트 위치는 C:\TRiLOGI\TL5\FileService 이다.)

” ..../FileService” 폴더 아래 서브-폴더를 사용할 수

있으며 이 서브 폴더내의 파일들에 대해

Write/Append/Read (쓰기/추가갱신/읽기)등의 기능을

사용할 수 있다.

현재 다음과 같은 “ File and Email Services” (파일과 이메일

서비스) 기능들을 지원한다.

1. 파일에

데이터 쓰기

형식:

<WRITE

[파일이름]>

data data

data...

data

....

</>

예) DM[1]에서부터 DM[10]까지의 데이터를

"testWrite.txt" 파일에 저장하기 위해서 Custom

Function(TBASIC)의 아래 구문을 실행시킨다.

PRINT #1 "<WRITE testWrite.txt>" ' 데이터 쓰기 요청

FOR I = 1 TO 10

PRINT #1 DM[I];" ";

‘ 스페이스 문자로 데이터간 구분을 함 NEXT

PRINT #1 ' CR(Carriage Return) 문자 보내기. PRINT #1 "</>" ' 서비스 요청 종료

TLServer는PLC로부터 서비스 끝 태그인 "</>"태그를 받은

후에 파일을 닫고, 이어서 WRITE 요청에 대해 서비스가

성공적으로 완료되었음을 알리는 "<OK>" 문자열을 PLC 에

보내준다. 사용자는 서비스가 성공적으로 완료되었는지를

확인하기 위해 "<OK>"태그(tag)를 검사하는 PLC 프로그램를

작성하여 활용할 수 있다.

32

Page 33: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

2. 파일에

데이터

첨가

형식:

<APPEND

[파일이름]>

data data

data...

data....

</>

예) 파일 이름 "testAppend.txt"에 시간을 추가하기 위해서

이벤트가 발생할 때 Custom Function (TBASIC)의 아

래 구문을 실행시킨다.

PRINT #1 "<APPEND testAppend.txt>"

' 데이터 요구 추가

PRINT #1 "Event Time = ;TIME[1];":";TIME[2];":";TIME[3]

PRINT #1 "A=";A

PRINT #1 "</>" ' 서비스 요청 종료

만약 지정한 파일이 존재하지 않는다면, 새로운 파일을

생성 한다. 지정한 파일이 존재하면 "hh:mm:ss"의 형식의

PLC Real Time Clock(RTC) 데이터와 A의 값이 프로그

램 구문이 실행될 때마다 "testAppend.txt" 파일의 마지

막(줄)에 추가된다. TLServer는PLC로부터 서비스 끝 태그인 "</>"태그를 받

은 후에 파일을 닫고, 이어서 APPEND 요청에 대해 서비

스가 성공적으로 완료되었음을 알리는 "<OK>" 문자열을

PLC에 보내준다. 사용자는 서비스가 성공적으로 완료되

었는지를 확인하기 위해 "<OK>"태그(tag)를 검사하는

PLC프로그램를 작성하여 활용할 수 있다.

3. 이메일

데이터

보내기

형식:

<EMAIL

[받는사람

이메일주소]>

Sender:

[보내는 이메일

주소]

Subject: [제목]

data data

data...

d

예) "PLC Email Test"라는 제목의 이메일을

[email protected]의 이메일 주소로 데이터를 보내

기 위해 아래 구문과 같이 실행한다.

PRINT #1 "<EMAIL [email protected]>"

' 사용자의 email 로 변경한다.

PRINT #1 "Sender: [email protected]"

' 이메일 주소에는 제한없이 누구에게나 보낼 수 있다.

PRINT #1 "Subject: PLC Email Test"

PRINT #1 "Hello, this email is sent by your friendly TRiLOGI PLC"

PRINT #1 "Don't worry, everyting is working out great today!"

PRINT #1 “ </>”

노트:

"Sender:" 필드는 [email protected] 와 같은 이메일 형식을

사용한다. 그러나 이 필드는 반드시 이메일 주소 사용하

지 않아도 된다.

33

Page 34: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

data

....

</>

• "Subject:” 제목 필드는 선택적 항목으로서 제목 필

드는 전혀 적지 않아도 관계 없다.

• TLServer 는 디폴트 폴더 안에 있는 "Email.txt" 이름의

파일 안에 모든 데이터를 임시로 저장한다. TLServer 가

PLC로부터 "</>"태그(tag)를 받으면 즉시 수신자의 이메

일 주소로 이메일을 보낸다. 이 이메일 서비스는

TLServer 주 설정 화면 중 하나인 "Setup Emails"(이메

일 설정)에서 설정한 SMTP 서버를 사용하여 이메일을

보낸다. 따라서 사용자는 이메일 서비스 함수를 테스트하

기 전에 반드시 올바른 SMTP 서버를 정의하여야 한다.

이메일이 SMTP 를 통해서 성공적으로 보내어 졌을 때,

TLServer 는 EMAIL(이메일) 요청에 대해 서비스가

성공적으로 완료되었음을 알리는 "<OK>" 문자열을 PLC 에

보내준다. 사용자는 서비스가 성공적으로 완료되었는지를

확인하기 위해 "<OK>"태그(tag)를 검사하는

PLC 프로그램를 작성하여 활용할 수 있다.

4.파일로부터

데이터

읽기.

형식:

<READ

[파일이름]>

</>

이 서비스는 PLC가 PC에 있는 텍스트 파일을 열기 위해서

TLServer에 서비스 요청을하고, 파일 내용을 PLC로 다운

로드하게 된다. 미리 저장된 각종 파라메터 값들을 다운로

드하여 사용할 수 있는 기능이다.

이 서비스 요청을 받고 명시한 [파일이름]의 파일을

성공적으로 열었다면 TLServer 는 텍스트 파일 안에 있는

모든 ASCII 문자들을 PLC 로 내 보내기 시작한다.

줄바꾸기는 텍스트 파일안에서 CR 문자로 PLC 로 보내어

지며 CR+LF 는 적용되지 않는다.

사용자의 PLC 프로그램은 INPUT$(1)명령을 사용하여

종단어 CR 이 포함되어 있는 텍스트 문자열을 한번에 한

문자열씩 모두 쉽게 읽을 수 있다. 읽어 드린 문자열은

필요에 따라 데이터로 변환되어질 수 있다.

PLC 로 데이터 파일에 있는 마지막 바이트를 보낸 후

TLServer 는 종단어 CR 이 포함되어 있는 “ <OK>”

문자열을 PLC 에 보내게 된다. 이것은 READ 명령이

완료되었음을 알리는 신호로서 TLServer가 PLC에 보내는

것이다.

34

Page 35: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

5.

TLServer

로부터

Real Time

Clock 읽기

형식:

<READ

RTC[]>

</>

<READ

Date[n]>

</> n = 1,2,3 또는 4

<READ

Time[m]>

</>

m=1,2,3.

이 서비스는 TLServer가 실행되고 있는 PC에서

TLServer 의 Real Time Clock 데이터를 PLC가 읽어 사용

할 수 있게 해준다.

데이터의 형태는 TBASIC 의 시스템 변수인 DATE[n] 및

TIME[n]과 동일한 Date[n] 과 Time[n]의 파라메터로

정의한다.

예) Date[1] = year(년); Date[2]=month(월);

Date[3]=day(일); Date[4]=Day of Week(요일);

Time[1]=hour(시); Time[2]=minute(분);

Time[3]=second(초)

PLC 의 시간 전체(년,월,일,요일,시,분,초)를 PC(TLServer)

의 시간에 한꺼번에 동기화 시키려면 7 개의 종단어(CR)를

갖는 ASCII 문자열의 Date[1], Date[2], Date[3],

Date[4], Time[1], Time[2], Time[3] 값이 반환되는

<READ RTC[]> 태그(tag: 명령)를 사용하면 된다.

이(들) 명령을 받은 TLServer 는 즉시 종단어(CR)가

포함이되어 있는 ASCII 문자열(들)인 PC(TLServer) 의

시간/달력 데이터를 PLC 에 전송한다.

사용자의 PLC 프로그램은 INPUT$(1)명령을 사용하여

데이터를 읽어 들이고 이들 문자열 데이터를 VAL 명령을

사용하여 정수 값으로 변환 시킨다. "READ file"(파일

읽기)명령과는 달리 TLServer 는 "READ RTC 서비스를

실행을 완료한 후에 "<OK>"문자열을 보내지 않는다는

점을 유의하여야 한다.

35

Page 36: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

4장: 인터넷 TRiLOGI 클라이언트 실행

I. 인터넷 TRiLOGI 어플리케이션의 실행

기본적으로 TRiLOGI 어플리케이션을 실행 시키는 방법에는 아래와

같이 3 가지 방법이 있다.

1) 만약 인터넷TRiLOGI 와 JRE(JAVA Runtime Environment; 자바

런타임 환경 프로그램)가 PC에 올바르게 설치되어 있다면,

TRiLOGI 어플리케이션을 시작하기 위해 "[시작] 매뉴-[모든 프

로그램]" 안에 "TRiLOGI 5.x Application"을 더블 클릭하면 실행

시킬 수 있다.

2) “ 내 컴퓨터” 또는“ 윈도우 탐색기” 에서

C:\TRiLOGI\TL5\ 폴더 내에 있는 "TL5x.jar" 파일을 더블

클릭하여 TRiLOGI 어플리케이션을 실행시킬 수 있다. JRE(자바

런타임 환경 프로그램)이 올바르게 설치되어 있다면 TL5x.jar

파일은 윈도우에 의해 실행 자바 프로그램으로 인식이 되고

즉시 실행이 된다. (노트: 같은 폴더 안에 TLServer 프로그램의

실행을 위한 실제 jar 파일인 "TLServer20.jar" 또한 찾을 수

있을 것이다.)

3) 3 번째 방법은 DOS 명령으로 프로그램을 실행시키는 방법이다.

우선 MS-DOS 프롬프트(“ 명령프롬프트” )를 실행시키고, 폴더

위치를 "C:\TRiLOGI\TL5"로 이동시킨다. 이 폴더에서 아래와

같이 DOS 명령을 입력 실행 시킨다.

36

Page 37: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

C:\TRiLOGI\TL5> java -jar TL5x.jar

* TL5x : TL50, TL51, TL52, TL53 ……등

"C:\TRiLOGI\TL5" 폴더 내에 들어있는 "TL5.BAT" 파일에 이러한

절차가 정의되어 있어 이 배치파일을 더블클릭하면 TRiLOGI

프로그램을 실행시킬 수 있다. 이 방법은 자바 콘솔 윈도우를 함께

열기 때문에 시스템의 오류 또는 예외적인 사항들이 자바 콘솔에

표시되어지는 이점이 있다. 프로그램에 문제가 발생하였을 때 자바

콘솔 윈도우에 문제의 단서를 제공하여 줄 수 있다. (아울러

사용자는 "tlserver.bat" 을 이용하여 TLServer 프로그램을

실행시킬 수 있다.)

H E L P ! ! !

TRiLOGI 가 실행되면 사용자는 언제든지 <F1>키를 누르면,

온라인 도움말을 볼 수 있다. 도움말 창은 일반적인 윈도우

창과 같이 마우스와 키보드에 의해서 사용할 수 있다. 또한

<More Help>버튼을 누르면 사용자는 웹-브라우저에서 자세한

도움말을 볼 수 있다. 웹-브라우저 상에서 도움말을 보는 것은

아래 폴더에 인터넥 익스플로어가 설치되어 있다고 가정한

것이다.

C:\Program Files\Internet Explorer\IEXPLORE.EXE

그러나 만약 사용자의 PC 에 브라우저가 설치되어 있지 않거나

다른 폴더에 설치되어 있다면 TRiLOGI 어플리케이션은

웹-브라우저를 여는데 문제가 있다는 에러 메시지를 보여

준다. 위의 경로(폴더)에 인터넷 익스플로어가 설치되어있지

않다면 "C:\TRiLOGI\TL5\" 폴더에 있는 "config.tl5" 파일을

"메모장(Notepad)"으로 열어서 아래 첫번째 행을 인터넷

익스플로어가 설치되어 있는 폴더로 수정하여야 한다.

Browser Path=C:/Program Files/Internet Explorer/IEXPLORE.EXE

TL5xApplet(애플릿)은 도움말 파일을 열기 위해 같은 PC 에

설치되어 있는 브라우저를 자동적으로 사용하기 때문에

애플릿의 경우에는 이러한 문제가 발생하지 않는다. 따라서

애플릿의 경우에는 인터넷 브라우저의 폴더 경로를 알 필요가

없다.

37

Page 38: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

II. 웹 브라우저를 사용한 TRiLOGI 애플릿의 실행

1) 웹-브라우저에서 TRiLOGI 애플릿을 실행시키기 전에 TLServer

를 먼저 실행시켜야 한다.

2) 다음에 인터넷 브라우저를 실행시킨다. 인터넷 익스플로어 버전

5.0이상 또는 넷스케이프 네비게이터(Netscape Navigator /

Communicator) 버전4.5 이상이어야 한다. 브라우저의 초기버전

은 JVM (자바 가상 머신)을 실행 하는데 몇 가지 버그를 가지고

있으므로, TRiLOGI가 제대로 동작하지 않을 수 있다.

3) 다음으로 TLServer 전면에 IP주소를 확인해야 한다. 만약 네트

워크 연결없이 PC에서 TLServer를 실행(로칼 호스트 실행)시키

면, IP Address = 127.0.0.1:9080 와 같이 보여질 것이다. 만일

사용자가 TLServer를 실행하기 전에 인터넷에 접속되었다면,

PC에서 IP주소를 볼 수 있다. PC가 직접 인터넷에 연결된 것뿐

만 아니라 로컬영역 네트워크연결도 가지고 있다면, 사용자는 2

개의 IP주소를 보게된다. (로칼 호스트 주소가 127.0.0.1 표시되

지 않았다 하더라도 같은 컴퓨터에서 클라이언트와 서버를 사용

하는 경우에는 내부적으로 로칼호스트 주소를 적용한다. 즉 같은

컴퓨터 안에서 클라이언트와 TLServer가 같이 있다면 자동으로

로칼 호스트 IP 주소 :127.0.0.1 이 항상 적용된다.)

4) 아래의 IP주소를 사용자의 브라우저에 포트번호를 포함한 브라

우저의 주소창(IE5) 또는 URL (for Netscape) 입력난에 입력한

다.

http://127.0.0.1:9080

5) 이 브라우저는 지금 TLServer에 HTTP를 요구하게 된다. 특별

38

Page 39: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

한 파일 이름은 없기 때문에, 웹-서버의 루트-디렉토리안에 초

기 설정 파일인 "index.html" 이 실행될 것이다. 이 HTML파일은

몇몇 다른 옵션을 제공하기 위해 자바스크립트로 만들어졌다. 하

나의 애플릿으로 TRiLOGI 를 실행하기 위해서 원하는 옵션을

선택하면 TLServer로부터 TL50Applet.jar 파일이 브라우저로

다운로드되어 실행된다.

노트: TLServer 의 루트 디렉토리는 PC 의 루트 디렉토리와

같지 않다. TLServer 에서, 루트 디렉토리는

"C:\TRiLOGI\TL5 \pub lic\" 이다. 이 폴더 내에

index.html 와 TL50Applet.jar 파일이 저장되어 있으며,

이 파일들은 위에서 언급한 바와 같이 TLServer 의

IP 주소가 웹브라우저에 입력되면 웹-브라우저로

다운로드 실행되어 진다. 방문자는 서버의 루트 폴더의

상위 PC 파일 폴더에는 접근할 수 없다. 따라서

사용자의 다른 PC 파일이 TLServer 방문자들에게

노출되는 위험은 없을 것이다.

TRiLOGI 에플릿의 불능(Disable)

만약 사용자가 TRiLOGI 애플릿을 로딩하여 TLServer 에

접근하는 것을 완전히 차단하기를 원한다면 단지

"TLApplet.jar" 파일을 "C:\TRiLOGI\TL5\public\"

폴더에서 제거(삭제)하면 된다. 이경우에는 TL5

어플리케이션 프로그램 만을 사용하여야만 TLServer 에

접근할 수 있게 된다.

39

Page 40: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

5장 : Ladder 로직(논리) 프로그램 실습

I. 과제: 첫번째 Ladder 논리프로그램 만들기

이 실습에서 아래와 같이 간단한 프로그램을 만들 것이다.

첫번째 래더 로직 회로를 만들기 위해 아래의 간단한 단계를

수행한다.

1. " File (파일)" 메뉴에서 "New(새로 만들기)"를 선택한다.

40

Page 41: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

2. 현재 커서는 로직 편집 모드의 브라우저 내에 있을 것이다. 화면

왼쪽 위의 수직선은 전원(Power) 선이다. 커서는 가장 첫번째 래더

로직을 입력할 수 있는 지점에 있다.

3. 회로를 만들기 전에 우선 실습 프로그램에 사용될 I/O 들을

정하여야 한다. 여기에서 사용될 I/O 는 다음과 같다.

Inputs(입력) : Start, Stop, Manual, Step

Outputs(출력) : Out1, Out2,.... Out8

Relays (릴레이) : Run

Timers(타임머) : Duration

Sequencer(시퀜서) : Seq1

4. <F2> 또는 [Edit] - [I/O Table]를 선택하여 I/O 라

벨 편집 창을 연다. (사용자가 "Edit" 메뉴를 클릭

하여 "I/O Table"을 선택하여 라벨 편집창을 열수

있지만, <F2> 단축버튼을 이용하면 훨씬 편리하

다.) 5. 왼쪽/오른쪽 커서 키를 이용하여 "Inputs"를 스크

롤 하던지 아니면 빨간색 왼쪽/오른쪽 화살표를

클릭하여 간단하게 선택할 수 있다. Input #1 위를 클릭하면 짙은 파란색의 강조된 바(bar)가 나타난다.

한번 더 클릭하면 Input #1 에 글자를 입력할 수 있는 텍스트

필드가 열린다. Input #1 에 "Start"라고 입력하고,

<엔터(Enter)>키를 치면 그 이름이 등록이 된다. 텍스트 창은

닫혀지고, Input #1 은 "Start"라는 이름이 부여되게 된다. 만약

사용자가 입력을 잘못했다면, 간단하게 "스페이스 바(Spacebar)"

키를 누르거나 수정할 지점을 클릭하여 다시 수정할 수 있다.

6. <엔터(Enter)>키를 다시 누르면 짙은 파란색의 강조된 바가 input

#2로 이동된다.

7. 마우스 버튼을 사용하지 않고, 간단하게 Input #2에 “ Stop” 이름

을 입력할 수 있다. 텍스트 필드는 Input #2에서 입력을 위해 자동

으로 열린다. "Stop"이란 이름을 입력한 후 <엔터(Enter)>를 누른

다.

41

Page 42: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

8. 위에서 한 방법과 같이 다음 두 개의 라벨이름 "Manual" 과

"Step"를 정확하게 입력한다. 라벨 이름 필드에는 10개의 문자만이

허용된다는 것을 주의해야 한다. 또한 이름 사이의 빈칸은 ('_')문자

로 자동적으로 채워진다.

예를 들어, 만약 I/O의 라벨 이름을 "M series PLC"라고 입력하면,

"M_series_P"라고 받아들여 진다.

9. Inputs #1 에서부터 #4까지 라벨 이름을 모두 입력한 후에, 오른쪽

커서 키를 눌러 "Output" 테이블로 이동하거나 오른쪽 화살표(적

색)를 클릭하여 이동할 수 있다. 각각의 I/O 테이블에서 output 과

relay의 라벨이름을 모두 입력한다. 이제 다음 단계로 넘어가서

"Timer" 테이블에 대해 설명한다.

중요 노트

a) 사용자는 I/O 테이블의 라벨 이름들을 위로

시프트(이동)하거나 아래로 시프트(이동)할 수 있으며 이미

정의된 두개의 라벨 사이로 새로운 라벨 이름을 끼워 놓기

위해 라벨 이름들을 위 아래로 시프트(이동)할 수 있다.

간단하게 <Ins> 키 또는 오른쪽 마우스버튼을 클릭하면

선택된 I/O 를 어느 방향으로 시프트(이동)할 것인지 선택할

수 있는 "Shift I/O" 팝업 메뉴가 나타난다. 만약 사용자가

아래 방향으로 시프트한다면 예를 들어, Input #256 은

마지막 I/O 개체이므로 시프트되어 삭제될 것이라는 것을

주의하기 바란다.

b) TRiLOGI 버전 5 는 10 개 문자의 I/O 라벨 이름을 지정할

수 있다. 그러나 DOS TRiLOGI Version 4.x 과 호환성을

유지하기를 바란다면, DOS 용 TRiLOGI 는 최대 8 자의 라벨

이름을 사용하기 때문에 I/O 이름은 8 개 이내로 지정하여

사용하여야 한다.

42

Page 43: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

11. Timer(타임머) 테이블은 "Label Name"의

오른쪽에 "Set Value(설정 값)"라는 열이

있다. 12. Timer #1에 라벨 이름을 "Duration"로 입

력한 후에, "Set Value(설정 값)"의 텍스

트 입력 박스를 열어서 타임머의 SV(설정)값을 입력한다. SV값의 범위는

0~9999 까지 이다. 실습을 위해 1000을

입력합니다.

13. 기본 타임머는 단위는 0.1초 이기 때문에, 1000이라는 값은 100.0

초를 의미하며 라벨 이름 "Duration" 타이머는 100.0초 후에 타임

아웃된다. 만약 이 타임머가 TBASIC의 "HSTimer" 명령을 사용하

여 "High Speed Timer(고속 타임머)” 로 설정되어 있다면, 고속

타임머의 경우 기본 단위는 0.01초이므로 1000 이라는 값은

10.00초를 의미하게 됩니다. 타임머는 기본적으로 ON-Delay 타임

머로서 설정 값 이상으로 타임머의 실행 조건이 ON(참: 1) 상태를

유지하여야 타임머의 상태가 ON이 됩니다.

14. 라벨 이름이 "Seq1"로 되어진 시퀀서를 정의하는 일만 남아있다.

이 시퀀서 기능은 많은 자동화 장비들을 구축하는데 매우

유용하게 사용된다. TRiLOGI 는 32 스텝까지 지원되는 8 개의

시퀀서를 제공한다. 각 시퀀서는 현재 스텝 순서를 추적하기

위해서 "Step counter(스텝 카운터)" 사용하여야 한다.

카운터(Counter) 테이블의 첫번째부터 8 번째 카운터는 8 개의

스퀀서를 위해 스텝 카운터의 역할도 겸해서 사용된다. 만약 이

시퀸서들이 사용되는 것이라면 "Seq1" 에서 "Seq8" 로 명명되어야

된다. 예를 들면 Counter #1 은 "Seq1" 로 Counter #2 는

"Seq2"등으로 명명 되어야 한다.그러나, 시퀸서에 사용되지 않는

본래 용도의 카운터는 다른 이름을 가질 수도 있다.(최대

10 문자까지)

15. 만약 "Timers" 테이블에 있다면 오른쪽커서키를 눌러서

"Counters" 테이블로 이동하고, Counter #1 의 칼럼에 "Seq1"라고

43

Page 44: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

라벨이름을 입력한다. <Enter>키를 누르면 "Set Value" 칼럼의

텍스트창이 열릴 것이다. 그리고 "4" 라는 값을 입력한다.

16. I/O, 타이머, 카운터들은 모두 정의되었다. 카운터 테이블 또는

다른 테이블을 닫기 위해서 <ESC>를 누른다. 그러나

프로그래밍을 하기 전에 모든 라벨을 정의할 필요는 없다.

사용자는 <F2> 키에 의해서 어느 때라도 라벨이름을 입력할 수

있다.

17. 이제 아래 보여지는 Circuit #1 을 작성하기 위한 준비가 다

되었다.

18. Circuit #1 에 회로 지시표(빨간색의 삼각형)있는 부분에서

"Ladder Edit"모드로 가기 위해서 <Spacebar>키를 누른다. 또한

그 회로를 더블-클릭함으로써 "Ladder Edit" 모드로 갈 수있다.1

일단 "Ladder Edit"모드로 전환되면, ladder 아이콘의 열이

풀-다운메뉴 아래쪽의 TRiLOGI 윈도우의 상단에 나타난다.

각각의 아이템들은 아래에 설명과 같다. Ladder 회로에서 요소를

선택하기 위해 움직일 수 있는 노란색의 강조된 바(bar)가

나타날 것이다.

44

Page 45: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

45

Page 46: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

<1> - normally-open 직렬 접점을 추가하기 위해 왼쪽마

우스 버튼을 클릭. <2> - normally-closed 직렬 접점을 추가하기 위해 오른

쪽 마우스버튼클릭.

<3> - 강조된 요소에 N.O.병렬 접점을 추가하기 위해 왼

쪽 마우스버튼 클릭 <4> -강조된 요소에 N.C.병렬 접점을 추가하기 위해 오른

쪽 마우스버튼 클릭

<5> - 한 개이상의 요소에N.O. 병렬 접점을 끼워 넣기

위해 왼쪽 마우스버튼 클릭. <6> - 한 개이상의 요소에N.C. 병렬 접점을 끼워 넣기

위해 오른 쪽 마우스버튼 클릭..

<7> - 출력으로 쓰여질 일반적인 코일, 릴레이, 타이머,

카운터를 추가

<8> - 현재있는 코일에 출력 코일을 병렬로 추가

<9> - CusFn의 실행을 포함한 특별한 기능의 함수 코일

을 추가

<0> - 현재 코일에 특별한 기능의 함수코일을 병렬로 추

</> - N.O. 를 N.C. 또는 N.C. 를 N.O.의 요소를 변환

클릭하면 강조된 바(bar)가 오른쪽으로 이동한다.(오른쪽

화살표 키를 누른 것과 같은).이것은 마우스로 클릭할 수

없는 접합점으로 커서를 이동시킬 수 있다.

강조된 요소를 더블클릭(Double-click) 하여 삭제

19. 아이콘을 왼쪽마우스 버튼을 클릭함으로써 첫번째 요소를

추가한다. 그 아이콘은 생성된 요소는 밝은 노란색으로 바뀌어

보여질 것이다. 그때 일반적으로 배경색이 밝은 파랑색 대신에

밝은 베이지색 배경의 I/O 테이블이 나타날 것이다. 그 I/O 테이블은

지금 이 접점에 미리 정의된 라벨이름을 끌어오기 위한

팝업메뉴와 같은 동작을 한다.

46

Page 47: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

20. 그 테이블 안의 목록들은 이 순간에 편집이 되지 않는다. "Input"

으로 이동하고 “Start”라는 라벨을 클릭하면 Circuit #1 에 접점이

생성되는 것을 볼 수 있을 것이다.

만약 강조된 바(bar)를 주의 깊게 본다면, 생성된 요소의

오른쪽끝에 초록색의 강조된 사각형을 찾아볼 수 있을 것이다.

이것은 직렬 접점을 붙여질 수 있는 위치를 가르킨다. 사용자가

추가위치를 오른쪽이나 왼쪽끝으로 이동하기를 원한다면, <TAB>

키를 사용하면 된다.

21. 다음으로, 아이콘을 왼쪽 마우스버튼을 클릭하므로서 접점

“Start"에 병렬로 “RUN”접점을 생성한다. I/O 테이블이 다시 나타날

것이다. "Relay"테이블로 이동한 후에 “RUN”릴레이를 선택한다. 22. "Start" 와 "Run" 접점에 직렬로 N.C. "Stop”접점을 추가하기

위해서, "Start" 와 "Run" 접점의 접합점으로 이동해야 한다.

접합점을 선택하기 위해서 먼저 “Start”접점을 클릭한다. 그런 후에

아이콘을 클릭하면 아래와 같이 접합점이 선택이 된다.

47

Page 48: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

23. 다음으로 아이콘을 오른쪽 마우스버튼으로 클릭하면,

위의 그림과 같이 노란색의 N.C. 접점으로 바뀔것이다. 사용자는

지금 강조된 바(bar)의 위치에 직렬 N.C.접점을 추가하고 있다.

직렬 접점을 추가하기 위해서 "Input"테이블에서 "Stop"을

끌어온다. 24. .우리는 지금 "Stop"접점의 오른쪽에 릴레이 코일인 "Run"를

연결할 것이다.코일을 삽입하기 위해서 아이콘을 클릭한다.

"Relay" 테이블에서 "Run" 라벨을 선택한다. 이때 입력은 절대

코일로 사용될 수 없음을 기억해야 한다. 다행스럽게도

TRiLOGI 는 사용자가 코일을 연결하려고 할 때, 우연한 오류를

범하지 않게 하기 위해서 "Inputs 을 부르지 않는다. 25. 코일의 심볼인 ---(RLY)는 코일의 기능을 나타내는데 도움이

되는 릴레이 코일이다. TRiLOGI 는 자동적으로 스크린의 오른쪽

끝에서 위치시키고, 그 코일과의 연결을 완성시켜준다. 26. 그 릴레이 아래의 오른쪽은 라벨이름이 "Duration"인 병렬

타이머 코일이다. 이 코일을 생성하기 위해서, 을 클릭한다.

이것은 사용자가 생성되어있는 코일에 병렬로된 코일을 연결할 수

있게 한다. I/O 테이블이 팝업되고 , 원하는 타이머를 선택하기

위해 "Timer"테이블로 이동한다. 그리고 회로를 완성하기 위해서

라벨이름이 "Duration"인 첫번째 타이머를 끌어온다. 27. Circuit #1 을 완성시키기 위해서 <Enter>키를 누른다.

Congratulation! You have just successfully created you very own ladder logic circuit. It is that simple!

28. 아래와 같은 Circuit #2 를 만들어보자.

48

Page 49: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

29. 위의 스텝 #20~#23 을 참조하여 아래와 같은 회로 일부를

만들어 보자.

30. 2 개의 요소를 포함하는 병렬 가지를 가진 직렬 접점

"Step" 와 “Manual"를 넣어 보자. 먼저, N.C. "Manual"접점을 위한

가지를 만들어 볼 것이다. 31. 그것을 강조하기 위해서"Step" 요소를 클릭한다.

그리고나서, 생성 "Step"과 Manual"접점을 둘 다 가지고 있는 N.C.

회로를 생성하기 위해서 아이콘을 오른쪽 마우스버튼을

클릭한다. "Step"접점의 맨 왼쪽 끝에 X 표시가 나타나는데 이는

병렬 회로의 시작점을 지시하는 것이다. 사용자는 병렬회로의

마지막 위치를 선택하기 위해서 "Manual"을 클릭해야 한다. 노란색

강조된 바(bar)는 "Manual" 접점에 놓여질 것이다. 32. 아이콘은 반대쪽 연결 팔을 가진 노란색 N.C.

접점으로 바뀔 것이다. 사용자는 병렬 가지를 닫기 위해

심볼을 클릭해야 한다.(한가지 가능한 간단한 방법은 가지를 닫기

위한 끝점을 더블클릭하는

것이다. .

49

Page 50: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

보통의 I/O 테이블은 사용자가 I/O 를 선택할 때 열릴 것이다.

지금부터는 아래의 회로를 만들기 위해서 "input"테이블로부터

"Manual"라벨을 선택한다.

33. 다음으로 "Manual" 접점의 왼쪽에

special bit 인 "Clk:0.5s"을 추가하려고 한다.

위에서 보여지는 것과 같이 강조된

바(bar)의 왼쪽 끝의 삽입점으로 이동하기

위해서 <TAB>키를 누른다. 그런 후에

normally open 접점을 생성시키기 위해서

아이콘을 의 왼쪽 마우스버튼을

클릭한다. I/O 테이블의 "Special

Bits"테이블로 이동하고, "0.5s Clock"라는

아이템을 선택한다. 이제 이 병렬 가지가

완성되었다.

34. 노트: "Special Bit" 테이블은 몇 개의 클럭 펄스들과 몇

개의 또 다른 특수한 목적의 bit 들을 포함하고 있다. 이것들은

시스템안에 0.01 초 에서 1 분의 범위를 갖는 8 개의 클럭 펄스를

포함한다. 만약 사용자가 "flashing light"와 같이 단위시간마다

사용되는 것이 필요하다면 내장된 클럭 펄스들은 유용하게 사용될

50

Page 51: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

수 있다. "Clk:0.1s"와 같은 접점은 자동적으로 0.05 초 동안

ON 되고, 나머지 0.05 초 동안은 OFF 된다. 그리고 다시 ON 이

되어 결과적으로 0.1 초의 펄스 주기를 갖는 클럭 펄스가 되는

것이다. 35. 다음으로 아래와 같이 병렬 회로의 오른쪽 접합점의 끝이

강조된 바(bar)가 위치되도록 이동한다. :

36. 현재, 특수한 기능을 가진 함수코일을 삽입하기

위해서 아이콘을 클릭한다. 원하는 특수한 함수를 선택하기

위해서 팝업메뉴가 나타날 것이다. Advance Sequencer function

[AVseq]을 삽입하기 위해서 "4.[AVseq]-Advance

Sequencer"아이템을 클릭한다.

51

Page 52: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

37. 이 함수의 실행조건은 OFF 에서 ON 이며, Sequencer #1 의

스텝카운터를 증가시키게 되는 것이다.

Again, remember to press the <Enter> key to complete Circuit #2 38. Circuits #3 에서 #6 다른 하나와 비슷하다. 그 회로들은

실행된 "running lights"의 패턴을 생성하기 위해서 Outputs 1 에서

8 을 ON 시키기 위해서 시퀸서를 유용하게 해준다. Circuit #3 에서

접점의 라벨이름 "Seq1:1"는 시퀸서 1 의 스텝 1 으로 표현된다. 각

시퀸서는 접점으로써 접근할 수 있는 각 스텝을(Step #0 to 31)

가질 수 있다는 것을 상기해야 한다. Normally-open 접점

"Seq1:1"은 시퀸서 1 의 스텝카운터가 번호 1 에 이르기면 언제든지

닫힌다. 또한 시퀸서 5 의 스텝카운터가 20 에 이를 때 ,

normally-closed 접점"Seq5:20"는 열리게 될 것이다.

39. Normally-open 접점 "Seq1:1"을 생성하기 위해서는

아이콘을 왼쪽 마우스버튼을 클릭한다. I/O 테이블이 팝-업될 때,

"Special Bit"테이블을 스크롤하고, "SeqN:x" 아이템 #1 을 선택한다.

Sequencer 가 "Sequencer 1"을 선택하기 위한 준비가 되었을 때,

다른 대화상자가 이 시퀸서의 특정 스텝번호를 입력하기 위해서

열릴 것이다. 40. 이와 같이 우리는 단지 Ladder 아이콘을 클릭함으로써

ladder 회로를 생성할 수 있다. 마우스를 쓰지 않고 요소를

생성하기 위한 간단한 방법이 있다. 아이콘을 주의 깊게 관찰하면,

사용자는 각 아이콘의 오른쪽 아래에 단축키를 의미하는

조그마한 숫자가 있는 것을 볼 수가 있다. 사용자는 Circuit #3 의

일부를 남기기 위해 이 단축키를 쓸려고 할 것이다. <7>키를

누르고, 출력 테이블은 코일의 선택을 위해서 즉시 팝업될 것이다.

52

Page 53: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

"Output"테이블에서 "Out1"을 선택하면 "Out1"코일은 연결될

것이다. 41. Circuits #4, 5 와 6 은 Circuit #3 과 매우 비슷하고, 사용자는

그것들을 생성하는데 거의 문제가 없을 것이다. 이 회로들을

완성하고 우리는 몇 가지 재미있는 시뮬레이션을 준비할 것이다.

사용자가 모든 회로들을 생성했을 때, "Ladder Edit"모드를

종료하기 위해서 마지막 여백의 회로에서<Enter> 키나

<ESC>키를 누르면 된다. 42. 사용자가 작성한 프로그램은 TRiLOGI 의

"Comments(주석)"사용의 특징을 최대한 활용함으로써 다른

사용자를 더욱 이해하기 쉽도록 해준다. 주석 편집기 창은 어떤

회로의 일부에 사용자가 기술하는 주석을 첨가하기 위해서 열릴

것이다. 사용자가 주석 작성이 끝났을 때, 단지 <ESC>키를

누르거나, 주석편집 창을 닫으면, 사용자가 입력한 주석은 그

회로의 사이에 삽입될 것이다. 각각의 주석은 회로 한 줄에

위치되고, 주석의 라인 수는 제한이 없다. (그러나, 만약 사용자가

이전의 DOS TRiLOGI Version 4.x 을 가지고 데이터 파일을

유지하기를 원한다면, 사용자는 주석당 4 라인이상 사용할 수

없으며, 각 라인은 70 문자를 넘을 수 없다.)

주석은 다른 ladder 회로들과 같이 이동하거나 삭제할 수 있다.

만약 주석을 수정하기를 원한다면, 주석을 더블-클릭하거나

<Spacebar>를 누르면 주석 편집 창이 열린다. 사용자는 왼쪽,

오른쪽,위, 아래의 커서 키등과 같이 일반적인 텍스트 편집키를

사용할 수 있고, <Ctrl-Left>, <Ctrl-Right>,<Del>, <Spacebar> 등도

주석 편집들을 위한 키이다.

II. 시뮬레이션을 이용한 Ladder 논리 프로그램 테스트

53

Page 54: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

이번 단계의 설정이 끝나고 시뮬레이션 할 준비가 되어있다. 내장된

실시간 시뮬레이션 프로그램을 사용하고자 한다면 그 데모프로그램이

완성하고 테스트할 준비를 한다. "Run (All I/O reset) - Ctrl+F9".

"Simulate" 메뉴를 클릭하고, "Run (All I/O reset) 을 클릭하거나

Ctrl+F9 를 누른다. 그러면 TRiLOGI 는 즉시 컴파일을 하고 만약

프로그램 오류가 없다면 아래와 같이 "Programmable Logic

Simulator"화면이 열릴 것이다.

1. 만약 사용자가 데모 프로그램을 생성하는 동안 모든 명령들을

잘 따랐다면 사용자는 어떠한 컴파일 오류도 만나지 않을 것이다.

그러나 사용자가 만약 에러메시지를 받았다면, 위의 과제

페이지에서 보여진 그림과 작성된 회로를 면밀히 비교해보고

수정한 후에 다시 시뮬레이션한다. 2. 시뮬레이터의 화면은 5 개의 칼럼을 가지고 있다.( Input, Timer,

Counter/ Sequencer, Relay, and Output ) 릴레이 테이블에 512 개의

릴레이가 있고,타이머는 128 개,나머지 칼럼에는 각각 256 개의

요소를 가지고 있다. 모든 칼럼은 각각 수직 스크롤을 가지고

있다. 사용자가 각각의 독립된 칼럼에서 원하는 위치의 I/O 를

찾기 위해 마우스로 스크롤 할 수 있도록 되어있다.

54

Page 55: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

3. 이전에 정의되었던 입력, 출력,릴레이, 타이머, 카운터들의 라벨

이름들은 정해진 칼럼에 자동적으로 나타난다. 각각의 라벨이름

칼럼의 오른쪽에는 각각의 I/O 의 상태가 ON/OFF 를 지시하는

"LED" 램프칼럼이 있다.. 빨간색 램프는 그 I/O 가 ON 상태라는

것을 의미하고, 검은-회색 램프는 그 I/O 의 상태가 OFF 되었다는

것을 의미한다. I/O 숫자는 램프의 중간에 표시되어 있다. 4. 이 시뮬레이션은 적절한 동작을 하기 위해서 마우스의 사용이

필요하며, 아래에 설명한 마우스버튼 동작을 참고하기 바란다.

왼쪽 마우스 버튼 누르면I/O가 ON된다. 누르지 않으면I/O가 OFF된다

오른쪽 마우스 버

튼 한번 누를 때 마다 I/O 가 토글된다. (토글 동작 : ON->OFF, OFF-> ON)

5. 작성된 Ladder 프로그램은 “start”을 누르는 동작이 필요하다.

사용자는 마우스포인터를 "Start"라벨(또는 LED 램프)에 옮겨놓고,

왼쪽 마우스 버튼을 한 번 눌렀다 땐다. 그러면 동작이 될

것이다. 6. 이때, 릴레이("RUN")은 ON 이 되어있고, 그 타이머("Duration")는

매 0.1 초마다 1000 값부터 카운트다운하기 시작한다.그리고 출력

#1~#8 는 "running light"의 패턴과 같이 순차적으로 ON/OFF 가

된다. "Ctr/Seq" 칼럼안에 시퀸서("Seq1") 1~3 까지 숫자가 올라가고,

그리고 나서 0 으로 오버플로우되고, 계속해서 이를 반복하게 된다.

시퀸서의 각 스텝 동안 해당하는 출력은 ON 이 된다. 우리의

데모프로그램은 출력 1~8 로부터 "running light"의 패턴을 보여줄

것이다.( 2 & 7, 3 & 6 , 4 & 5 -> 1 & 8, 2 & 7) 7. 이제 그 ladder 프로그램을 보고 의도된 논리대로 동작하는지

확인해야 한다. 사용자는 모든 회로안의 라벨("Run")이 아래와

같이 강조되는 것을 볼 수 있을 것이다.

55

Page 56: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

8. 어떤 I/O 의 논리상태는 즉시 ladder 프로그램에서 표시할 수 있다.

ON 된 Input, Output, Relay, Timer, Counter 접점 ladder

다이어그램에서 강조된 그 라벨의 이름을 가질 것이다. 이 특징은

각각의 I/O 사이의 논리적인 관계를 이해하거나 디버깅하는데 큰

도움이 될 것이다. 예를 들면, 위의 그림으로부터 우리는

릴레이("Run")때문에 “자기유지” 된다는 사실을 알 수 있다.

우리는 첫 번째 "Start"입력이 ON 되고, “Run”이 활성화되고, 비록

우리가 “Start” 를 OFF 시켰다고 해도 "Start"에 병렬 연결된

릴레이”Run”은 ON 상태로 자기 유지된다. 9. 타이머 코일("Duration")은 “Run”릴레이에 병렬로 연결되었고, 이

코일 또한 기동할 것이다. 그러나 "Duration"의 접점은 100 초

후에 닫혀질 것이다. (그것의 현재 값이 0 이 될 때) 릴레이“Run”을

해지시키기 위해 우리는 “Stop”입력을 활성화시켜 ”Power” 를

차단해야 한다.

10. "Start" 을 ON 시키고 시스템을 다시 시작해보자. 다음으로

우리는 "Manual"입력을 ON 시키기로 하자. "Manual"입력에 마우스

56

Page 57: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

포인터를 옮겨놓고, 오른쪽 마우스버튼을 누른다. Manual"입력은,

오른쪽마우스 버튼을 땐 후에 ON 상태가 될 것이다. "Manual"을

마우스의 오른쪽 버튼을 사용하여 다시 클릭하면 OFF 될 것이다.

11. "Manual" 입력은 ON 될때, 점등은 멈춘다. 왜냐하면 Circuit #2

"Manual" 입력의 normally closed 접점은 현재 OFF 되고, 0.5 초

클럭 펄스는 [AVseq] 함수를 더 이상 트리거시킬 수 없기

때문이다.

12. 만약 사용자가"Step"입력을 왼쪽 마우스 클릭한다면, 사용자의

마우스 클릭의 응답으로 한 스텝이 움직일 것이다. Seq1 의

카운터 값이 관계되는 Seq1:x 접점을 보면 이 회로는 매우 쉽게

이해할 수 있는 논리라는 것을 알게 될 것이다..

13. 타이머("Duration")는 매 0.1 초마다 카운트다운을 계속하게 될

것이고, 0 에 값에 올 때, "Duration" 출력 코일의 라벨은 강조되어

나타날 것이다. 사용자는 이 타이머를 Circuit #1 에서 N.C.

"Duration" 접점을 연결하여 멈추도록 사용할 수 있다.

III. 사용자의 첫번째 Ladder 프로그램을 PLC 에 전송하기

시뮬레이터를 이용하여 Ladder 논리 프로그램을 테스트해본 후에,

사용자는 아마도 실제 PLC 에 그 프로그램을 실행시켜보기를 원할

것이다. 아래 가장 빠른 방법이 있다.

1. PC COM 포트에 DB9 프로그래밍 케이블을 이용하여

PLC 의 COMM1 포트와 연결한다.

2. PLC 에 전원을 인가한다. 3. 3 장에서 서술한 “TLServer”를 실행시킨다. TLServer 는

PLC 와 어떤 통신을 하기 전에 반드시 먼저 실행시켜야 한다.

57

Page 58: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

4. “Setup Serial Port”버튼을 클릭하고 “Command”박스에

“IR*”라는 문자열을 입력하여 PLC 와의 통신을 테스트한다..

사용자는 PLC 로부터 “IR01*”의 응답을 받을 것이다.(초기 설정치

ID=01 을 바꾸지 않았을 경우) 만약 사용자가 PLC 와의 통신에

문제가 생겼다면 아래와 같이 시도해본다.(a)COM 포트가

올바르게 사용되었는지(b)PLC 와 연결된 COM 포트에 현재 다른

프로그램이 제어하고 있는 경우는 아닌지 확인한다.

5. 다음으로 “Controller” 메뉴를 클릭하고 “Program

Transfer to PLC”를 선택한다. 사용자는 TLServer 를 로그인을 요청

받을 것이다. 만약 아무도 초기정보를 수정하지 않았다면 아래와

같을 것이다.

6. 초기 IP address : port 는 127.0.0.1:9080 이다.이것은

로컬호스트 IP 주소이고, TLServer 와 TRiLOGI 클라이언트 2 개가

같은 PC 에서 실행된다. TLServer 의 사용자( username) 는

“samples”로 정의되어있고, 초기치는 password 가 없다.

7. Next, click on the “Detect ID” button. 다음, “Detect

ID”버튼을 클릭한다. 만약 모든 것이 정상적이라면 “Detect

ID”버튼을 누르면 그 옆에 박스에 ID 가 ‘01’로 나타날 것이다.

그렇지 않으면 사용자는 정상적으로 연결되지 않았다는 설명의

에러 메시지를 받게 될 것이다.

58

Page 59: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

8. 사용자가 올바른 ID 를 받았다면, “OK”버튼을 클릭할 수

있다. TRiLOGI 는 프로그램을 컴파일하고, PLC 에 컴파일된 코드를

전송하기 시작한다. 전체 프로그램이 전송절차가 완료될 때까지

단지 나타난 화면의 스텝을 따르면 된다. 그리고 나서 사용자가

“Reset all I/O”를 쓸것인지 아닌지를 묻을 때 “Yes”를 클릭한다.

9. 사용자가 실제 프로그램을 PLC 에서 물리적인

입력으로 ON 시켜 테스트 하기 전에, 먼저 사용자에게 TRiLOGI

소프트웨어로부터 PLC 의 I/O 를 어떻게 제어하는지 보여줄 것이다.

우선, “Controller”메뉴를 클릭하고 “On-Line Monitoring”을 선택한다.

사용자는 “Programmable Logic Simulator” 사용자가 이전에

시뮬레이터에서 프로그램을 테스트하는 동안 보아왔던 스크린과

비슷하게 보이는 “Full Screen Monitoring” 창을 보게 될 것이다.

10. 사용자가 “Full Screen Monitoring” 에서 보는 입력, 출력,

릴레이, 타이머, 카운터들의 논리 상태들은 PLC 의 실제 입력,

출력, 릴레이, 타이머, 카운터들과 연결되어 있다. on-line

monitoring 을 실행할 때, TRiLOGI 소프트웨어는 계속해서

PLC 로부터 데이터를 받기 위해 시리얼 통신 명령을 보내고,

그것들은 스크린에 표시하게 된다.

11. 다음은, 모니터링 스크린에 “Control”이라는 체크박스에

체크한다. 사용자는 라벨이름을 클릭함으로써 PLC 의 입력을

원격으로 트리거 할 수 있다. 일단 “Start” 를 클릭하고, PLC 의

출력에 점등되는 것을 볼 것이다. “Stop” 입력을 누르면, 점등은

멈출 것이다. 점등은 “Full Screen Monitoring” 창에 반영되어

나타날 것이다.

12. 사용자가 입력라벨을 클릭했을 때, TRiLOGI 는 실제로

단 1 번의 스캔시간 동안 입력 비트의 변화를 관리한다. 그러므로

PLC 는 물리적인 입력의 실제 논리 상태를 사용한 “Input”비트는

갱신 될 것이다.

59

Page 60: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

13. 다음, “Pause”버튼을 누르면 PLC 는 잠시 멈출 것이다.

사용자는 ON 된 PLC 의 “Pause”에 해당하는 불이 ON 되어있을

것이다. 현재, 사용자는 실제로 오른쪽 마우스 버튼을 이용하여

출력 라벨을 클릭함으로써 물리적인 출력이나 내부릴레이를

ON 시킬 수 있다. 왼쪽마우스 버튼을 떼면, 출력은 OFF 될 것이다.

사용자는 오른쪽 마우스 버튼을 사용하여 라벨을 클릭함으로써

출력을 ON 또는 OFF 상태를 저장할 수 있다.실제 해보면

재미있을 것이다.

요약

우리는 이번 수업을 모두 마쳤고, 간단한 Ladder 프로그램을

만들어 보았다. 우리는 프로그램의 기능을 테스트하기 위해

실시간으로 시뮬레이션을 수행하였고 TLServer 를 통하여 PLC 에

데모 프로그램을 전송하였다. 지금 까지 사용자는 아마도

TRiLOGI 의 훌륭한 능력과 쉬운 사용에 호평을 가졌을 것이다.

60

Page 61: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

6 장 : TRiLOGI Ladder 논리의 편집 참조

TRiLOGI 의 ladder 논리 편집 창은 화면의 맨 위쪽을 따라서 주요

메뉴 바(bar) 와 화면의 바닥을 따라 도움말 줄의 사이에 있다. 그

커서는 사용자가 논리 편집기 안에 있으면 언제든지 창안에 나타날

것이다. 그 ladder 논리 편집기는 2 개의 모드를 포함한다. : 브라우저

모드와 회로편집 모드. 우리는 이 두개의 모드의 동작을 설명하게 될

것이다.

I. 브라우저 모드(Browse Mode )

사용자는 정상적으로 프로그램을 시작할 때, 브라우저 모드 안에

있다. 그 브라 우저 모드는 단일개체로서 전체 ladder 논리 회로를

조작할 수 있도록 해준다. 사용자가 어떤 회로를 볼 수 있다면

그것을 복사할 수 있고, 다른 장소에 위치 시킬 수 있으며,그 회로를

삭제할 수도 있다..사용자는 현재 선택되어 보여 지는 회로를 작은

빨간색의 표시를 보게 될 것이다. 선택된 회로의 번호는 위쪽의 상태

라인에 "Circuit # xxx "로 보여질 것이다. 1. 마우스 동작

지금까지 윈도우 환경하의 TRiLOGI Version 5.x 는 모든 마우스

동작이 사용 가능하다. 사용자는 수직 스크롤하기 위해서 수직

스크롤 바(scroll bar )를 잡을 수 있고, 원하는 회로를 선택하기

위해서 클릭할 수 있다. 회로 위에서 더블클릭(double click)은

나중에 설명할 회로 편집 모드로 들어간다. 2. 키보드 동작

브라우저모드에서 다양한 키의 기능을 아래 설명한다.

61

Page 62: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

<Spacebar> 현재 선택된 회로에서 회로 편집모드로 들어간다.

만약 선택된 회로가 주석이라면 주석 편집기가

자동으로 열릴 것이다.

<F1> 온라인 도움말을 보여주기 위해 도움말 기능이

활성화된다.

<F2> I/O 라벨이름을 작성하기 위한 I/O 테이블이

열린다.

<F3> 화면에서 ladder 논리 접점의 I/O 타입의 표시를

ON/OFF 해준다. 모든 ladder 논리 접점 심볼들은

일반적으로 그것들의 라벨이름에 의해서 구별한다.

그러나 I/O 타입을 지시하는 작은 글자를 표시할 수

있다. Ex) i=input, o=output, r= relay, t= timer and c=counter.

<F5>

화면 표시를 다시 해준다.. 만약 화면에 어떤 원인이

회로 를 왜곡되게 표시되었다면, 사용자는 회로를

다시 그리기 위해서 <F5>키를 누른다.

<F7> custom 함수를 연다. 만약 현재 선택한 회로가

custom 함수를 포함하고 있다면, 그것은 편집을 위해

열릴 것이다. 만약 그렇지 않으면 TRiLOGI

메뉴로부터 custom function #중에 무엇을 선택할

것인지 물을 것이다.

<F8> 작성된 TRiLOGI 프로그램을 컴파일 해준다.

<F9> I/O 를 리셋하지 않고 시뮬레이터가 동작한다.

<Ctrl-F9> 모든 I/O 들을 리셋하고 시뮬레이터가 동작한다.

<Ctrl-F8> 입력을 제외한 I/O 을 리셋하고 시뮬레이터가

동작한다.

62

Page 63: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

<Up>/<Dn> <PgUp> <PgDn>

up/down 커서키는 마커를 다른 회로로 이동시키고,

변화된 위치를 반영하여 동시에 상단의 "Circuit

#"라고 표시해준다. 만약 사용자가 화면을 넘어서도록

시도한다면, 논리 편집 창은 스크롤될 것이다.

<PgUp> 과 <PgDn>키는 1 페이지씩 스크롤하기 위해

쓰여질 수 있다.

3. “Circuit “과 편집 메뉴의 쓰임

“Circuit”와 편집메뉴들은 사용자가 필요에 의해 부가 할 수

있는 주석, 복사, 제거 등의 다양한 명령뿐만 아니라

ladder 회로의 순서를 재배열 할 수도 있다. 이 메뉴에서 각각의

아이템과 관련 있는 동작에 관한 설명은 7 장을 참조하기

바란다.

63

Page 64: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

II. 회로 편집 모드

TRiLOGI 회로 안에서 쉽게 단일요소를 제거하거나 삽입할 수 있는

편집기를 제공한다. 이 편집기는 올바르지 못한 회로 연결의

생성을 막기 위해 즉시 생성된 회로를 해석한다. 회로

편집모드에서 다양한 키의 기능들은 아래와 같다. 사용자는

회로번호 옆의 상단 상태줄을 따라 ladder 논리 아이콘이 나타날

때, 회로편집모드임을 알 것이다. 그리고 노란색 강조 바(bar)가

나타나고, 사용자는 아래에 보이는 것과 같이 ladder 회로 안에서

요소를 선택하여 이동시킬 수 있다.

64

Page 65: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

65

Page 66: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

1. 마우스 동작 왼쪽 버튼 클릭 - 왼쪽 마우스버튼을 이용하여 요소를 선택했을 때,

그 요소는 선택되고 노란색의 강조 바(bar)가 나타난다. 오른쪽 버튼 클릭 - 오른쪽 마우스버튼을 이용하여 요소를

선택했을 때, 사용자는 그 요소의 라벨이름을 즉시 수정할 수 있다.

이것은 만약 사용자가 이름 중에서 단지 한 두 개의 문자를 바꿀

필요가 있을 때 매우 편리한 특징이다. 그러나 만약 요소가 custom

함수 [dCusFn], 또는 [CusFn]이라면, 그 custom 함수를 편집할 수

있도록 편집기가 열릴 것이다. Ladder 요소 삽입 - 사용자는 마우스포인터를 아이콘에

이동시킴으로써 요소를 포함하는 ladder 회로를 생성한다.그리고

오른쪽이나 왼쪽 마우스 버튼은 현재 강조된 요소에 ladder 논리

요소를 삽입할 수 있다. 아래 표는 각각의 아이콘에 대한 설명이다.

ladder 회로에서 요소를 선택하기 위해 움직일 수 있게 노란색

강조 바(bar)가 나타난다.

<1> - Normally open 직렬 접점을 삽입하기 위해서 왼쪽

마우스버튼 클릭. <2> - Normally closed 직렬 접점을 삽입하기 위해서 오른

쪽 마우스 클릭

<3> - 강조된 요소에 N.O. 병렬 접점을 삽입하기 위해서

왼쪽 마우스버튼 클릭 <4> - 강조된 요소에 N.C. 병렬 접점을 삽입하기 위해서 오

른쪽 마우스버튼 클릭

<5> - 하나이상의 요소에 N.O. 병렬 접점을 삽입하기 위해

서 왼쪽 마우스버튼 클릭. <6> - 하나이상의 요소에 N.C. 병렬 접점을 삽입하기 위해

서 오른쪽 마우스버튼 클릭.

<7> - 출력, 릴레이, 타이머, 카운터 등의 일반적인 코일의

삽입

66

Page 67: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

<8> - 현재 쓰여진 코일에 병렬출력코일을 삽입

<9> - CusFn 의 수행을 포함하는 특수한 기능의 코일을

삽입

<0> - 현재 있는 코일에 특수한 기능의 병렬 코일로 삽입

</> - N.O. -> N.C. ,N.C. -> N.O.

클릭하면 강조된 바(bar)가 오른쪽으로 이동(오른쪽 화살표

의 커서키를 눌러도 같은 효과) 이것은 마우스를 이용하여

선택할 수 없는 접합점으로 커서를 옮기기 위해 사용될 수

있다.

더블 클릭하면 선택된 요소가 삭제

사용자가 아이콘을 클릭했을 때, 예를 들면 아이콘은

사용자가 생성하려는 요소를 보여주기 위해서 밝은 노랑색으로

바뀐다. 이때, I/O 테이블은 배경색의 화면에 밝은 베이지색으로

나타난다. I/O 테이블은 접점의 이미 정의된 라벨이름을 가진

접점을 꺼낼 수 있게 하기 위해서 마치 팝 업메뉴와 같이 동작한다.

이것은 컴파일 에러의 결과를 초래하는 타이프에러를 제거하기

위해 시간과 실수를 방지할 수 있다. 사용자는 “5 장 : Ladder 논리

프로그램밍 수업” Ladder 프로그램을 만들기 위해 필요한 스텝들을

구현하는데 약간의 시간이 들었다. 이전에 언급했듯이, Ladder 편집기는 지능적이고, 올바른 Ladder

요소의 생성만을 받아들인다. 다르게 말하자면, 잘못된 동작을

하려고 하면, 비프(삐~)와 같은 소리를 내어 알려준다.

UNDO 회로 편집

67

Page 68: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

만약 사용자가 잘못된 요소의 삽입, 삭제 등의 실수를

했다면, UNDO 를 하기를 원할 것이다. 이 UNDO 는

“Edit”메뉴의 “Undo” 를 누르거나 <Ctrl-Z>키를 누르면

이전의 스텝으로 돌아간다. Undo 버퍼는 이전의 10 개

스텝까지 저장한다. 사용자가 현재 만들어진 회로를

모두를 바꾸지 못하도록 "Abort Edit Circuit" 선택함으로써

현재회로의 모든 동작이 중지될 수 있게 할 수 있다.

2. 키보드를 사용하여 Ladder 회로의 생성

키보드를 사용하여 ladder 프로그램을 만드는 것과 유사한 TRiLOGI

version 3.x or 4.x 를 사용하는 사용자들은 이 프로그램에서도

키보드를 이용하여 ladder 프로그램을 여전히 생성할 수 있다. 그

키보드 동작은 아래와 같다. Left/Right/Up/Down cursor keys

커서키는 하나의 요소에서 다른 요소로 각각의 4 방향으로

강조 바(bar)를 움직일 수 있다. 사용자는 요소의 끝에서는

한쪽 방향으로만 움직일 수 있다. <ESC>

회로 편집모드를 끝내기 위해서 <ESC>키를 누른다. 그러면

논리 편집을 위한 브라우저 모드로 전환된다.

68

Page 69: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

<Enter>

사용자가 현재 회로 편집이 모두 끝났을 때, <Enter>를 치면

다음 회로로 진행한다. <Tab>

만약 사용자가 자세히 강조된 바(bar)을 관찰한다면, 사용자는

강조된 요소의 오른쪽 끝의 사각형의 검은 녹색을 볼 수

있을 것이다. 이것은 직렬 접점을 붙이기 위한 삽입위치를

가르친다. 사용자는 <TAB>키를 이용하여 강조된 바(bar)의

오른쪽과 왼쪽의 삽입위치를 바꿀 수 있다. 사용자가 강조된 요소를 병렬 접점을 연결할 때, 커서의

위치는 효과가 없다. 그 요소의 왼쪽 말단은 병렬 가지의

왼쪽 편에 항상 연결되어 있기 때문이다. <0> to <9> , </> & <E> keys

<0> 에서 <9> , </>등은 테이블 안에 보여지는 아이콘을

클릭하는 것과 동등한 기능을 갖는 키이다. 그 동등한 키보드

숫자는 아이콘의 오른쪽 구석의 아래쪽에 조그만 숫자가

보일 것이다. </>키는 (N.C.-->N.O.) 또는 (N.O.-->N.C.)으로

빠르게 변환해준다.

사용자가 접점이나 코일을 직접 라벨이름을 수정하기를 원할

때, <E>키를 누른다. 그러나 수정된 내용이 정확하게

입력되었는지는 사용자의 몫이다.

69

Page 70: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

7 장: TRiLOGI 주요 메뉴 참조

TRiLOGI 어플리케이션과 애플릿(applet) 프로그램은 거의 비슷하게 보이고 애플릿은 저장하거나 로드할 수 없을 것이다. (아래와 그림 참조) 그리고 그것은 “Printing”함수도 지원하지 않는다.

프로그램창의 주요 본문은 디스플레이 되고 사용자의 ladder 논리 프로그램을 보여주고 편집할 수 있다. ladder 논리 프로그램은 많은 ladder 단계들로 구성된다. TRiLOGI 에서 우리는 각 회로의 번호와 연계된 회로의 각 단계를 호출한다. 현재 선택된 회로는 왼쪽의 수직선과 회로의 교차점을 조그만 삼각형의 포인터로 표시하고 있다. ( 수직선 : ladder 논리 용어로 전원선 ( power rail )이라 한다.)

선택된 회로의 번호는 ladder 편집창의 왼쪽 상단, 버튼이 위치한 곳에

표시된다. 만약 사용자가 이 버튼을 클릭한다면, 다이얼로그 박스는 사용자가 원하는 곳으로 점프할 회로번호를 입력할 수 있도록 팝업되고, 그 편집기는 그곳으로 이동할 수 있게 해준다.

I. File 메뉴 File 메뉴는 TLServer 의 저장공간이나 로컬 하드디스크에

TRiLOGI 파일 을 열기/저장하기 위한 명령을 제공한다. 1. New <Ctrl+N>

사용자가 새로운 ladder 논리 프로그램을 생성하기를 원할 때,

이 명령을 활성화 시킨다. 모든 현재 ladder 회로와

70

Page 71: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

custom 함수는 화면을 지운다. 디폴트(초기 설정된) 파일이름은

"Untitled.pc5"이다.

71

Page 72: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

2. Save <Ctrl+S>

이 명령은 모든 I/O 테이블과 모든 custom 함수들과 전체 ladder

논리 프로그램을 디스크에 저장한다. 현재 파일은 열렸던 곳과

같은 곳에 저장된다. 예를 들어 만약 파일이 이전에 네트워크를

통한 TLServer 로부터 열렸다면, 이 명령은 TLServer 에 다시

저장될 것이다. 다시 말하자면 파일이 로컬 하드 디스크에서

열렸다면, 다시 자동으로 그 로컬 하드디스크에 저장될 것이다.

3. Open (TLServer) - <Ctrl+O>

이 명령은 TLServer 로부터 TRiLOGI 파일을 로딩하기 위한

것이다. 실행되면, 사용자이름을 입력받기 위해 기다리고, 또한

TLServer 에 접근하기 위해 패스워드를 입력을 기다린다.(같은

사용자이름과 패스워드는 이것을 동작시키기 위해서 TLServer

에 이미 정의되어졌어야 한다.) 만약 사용자가 애플릿대신에

로컬 어플리케이션으로서 TRiLOGI 를 실행한다면, 사용자는

TLServer 에 접속하기 위해서 TLServer 의 "IP Address: port"을

입력해야 한다. (IP 주소의 마지막 입력: 포트는 TL5 설정 파일에

저장되고,TL5 가 재시작 될 때 로드될 것이다.) 각각의 사용자는 각 사용자들의 TRiLOGI 파일들을 저장하기

위한 서로 다른 디렉토리를 갖는다. 일단 권한이 위임되면,

네트워크 파일 다이얼로그는 사용자가 파일을 선택하거나,

삭제하거나, 하위 디렉토리를 생성할 수 있도록 열릴 것이다.

아래 그림 참조 :

72

Page 73: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

. 원하는 파일을 더블 클릭하거나 사용자가 열기를 원하는

파일을 선택하고, "Open"버튼을 클릭하면 TRiLOGI 파일이 열릴

것이다.

Sub-directory: MkDir 버튼은 사용자의 파일들을 구성하기 위해

그 서버에 하위 디렉토리를 생성할 수 있도록 허용한다. 하위

디렉토리를 연다면, 그것의 내용은 파일 창안에 보일 것이다.

하위 디렉토리에서 상위 디렉토리로 돌아가려면, 간단하게 를 클릭하면 된다.

4. Save As (TLServer)

만약 사용자가 다른 파일이름을 사용하여 TLServer 의 편집한

TRiLOGI 파일을 저장하기를 원한다면 이 명령을 사용한다.

사용자는 사용자이름 /패스워드를 입력하기 위하여 TLServer 에

접속하여야 한다. (그리고 만약 TL5 어플리케이션 이라면

IP 주소도 있다.) 일단 권한이 생기면, "Open (TLServer)"에서

설명한 것과 유사한 네트워크 파일 다이얼로그 사용자의

73

Page 74: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

파일이름을 입력을 받거나 선택된 파일이름을 덮어쓰기 위해

열릴 것이다.

5. Open (Local Drive) / Save (Local Drive)

TL5 어플리케이션(애플릿이 아님)을 이용하여 사용자는 로컬

하드 디스크 로 open 또는 save 할 수 있다. 사용자는 사용자의

OS 에서 제공하는 전형적인 파일 다이얼로그 박스를 쓰게 될

것이다. 그러나 이 명령은 애플릿이 하드디스크의 자원들을

접근하는 권한을 얻을 때까지 TL5 애플릿은 사용하지 못한다.

6. Print

TL5 어플리케이션을 이용하여(애플릿이 아님), 사용자는 선택된

ladder 다이어그램 또는 I/O 테이블 또는 custom 함수의 선택된

범위를 OS 에서 출력하기 위해 프린트 자원을 모두 사용할 수

있다. 실행 시키면, 아래와 같은 "Print Control Panel”이 나타날

것이다.

프린트 하기 위해서, 첫번째 선택 박스와 사용자가 프린트하기

위한 범위로부터 아이템을 선택한다. 그리고 "Print"버튼을

클릭한다. "Ladder Circuits"는 회로 번호들의 범위를 지시한다.

"I/O Tables"은 I/O 번호(256 까지)의 범위를 지시한다. 그리고

"Custom Functions"는 함수 번호의 범위를 말한다. 사용자는 프린트되는 화면의 페이지를 체크하기 위한 버튼으로

사용할 수 있다. 사용자는 "Page setup" 버튼을 클릭함으로써

페이지의 사이즈와 프린트에 관한 사항들을 선택할 수 있다.

74

Page 75: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

함수들은 자동적으로 페이지를 저장하기 위해서 건너뛰게 될

것이다. 사용자는 프린트하기 위해서 "Ladder Circuits" 를

선택할 때, 특별한 "Width" 텍스트 박스가 나타난다. 이 텍스트

박스는 페이지 폭에 맞춰 프린트 되어질 직렬 요소들의 최대

번호를 입력하기 위한 것이다. 이 번호를 바꾸게 되면, 프린트

할 때, ladder 다이어그램의 스케일에 영향을 준다. 가장 작은

번호는 5 이며, 가장 높은 번호는 13 이 된다. 만약 사용자가

가장 큰 사이즈의 프린트를 원한다면 가장 작은 숫자를

선택한다. 그러나 만약 사용자의 ladder 프로그램이 그 ladder

회로가 프린트 되지 않는 페이지 밖의 부분인 "Width"

매개변수에 의해서 지시된 더 많은 요소들을 가진 회로를 담고

있다는 것을 상기해야 한다. 노트: "Print"함수는 Java 2 JVM 의 지원을 요구한다. (사용자가

그것을 설치했을 때, Java Runtime Environment version 1.3.1 에

의해 제공되는) 그러나 대부분의 이전 브라우저들은 아직

Java2 를 지원하지 못한다. 만약 그렇지 않다면 특별한 Java

plug-in 이 있어야 한다. "Print"함수는 사용자가 애플릿으로써

TRiLOGI 를 사용하고 있을 때, 불능상태가 되기 때문이다.

7. Exit

TRiLOGI 프로그램을 빠져나가기를 원할 때 사용되는 명령이다.

사용자가 만약 그 내용들이 편집되었고, 바뀐 부분이 저장되지

않았다면 현재 파일을 저장하기 위해서 대기할 것이다.

II. Edit Menu 1. Abort Edit Circuit

현재 ladder 회로에서 만들어진 것들을 <Enter>를 누르기 전에

이 명령을 수행한다면 중지될 것이다. 만약 변경이 벌써

75

Page 76: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

<Enter>키에 의해 받아들여 졌다면, 이 명령은 실행되지 않을

것이다. 이 명령은 사용자가 완전히 사용자가 모든 undo 스텝을

거치지 않고 회로를 만들었을 때, 변경을 모두 제거하기 위해

유용하게 사용된다.

2. Undo <Ctrl+Z>

마지막으로 ladder 회로가 만들어진 변화를 Undo 한다.

TRiLOGI 는 자동적으로 10 개의 편집된 스텝을 저장하고 있어서

사용자가 원래의 형태의 회로로 돌아가기 위해 여러 번 실행 할

수 있다.

3. Cut Circuit - <Ctrl+X>

사용자는 현재 ladder 프로그램에서 회로번호를 제거할 수 있고,

이 파일의 ladder 프로그램 이나 다른 파일의 ladder 프로그램의

다른 부분을 일시적으로 클립보드에 저장할 수 있다. 말하자면,

그것은 사용자가 다른 파일 또는 그 ladder 프로그램의

일부분에서 회로의 블록을 옮길 수 있다는 것이다. 일단

사용자가 "Cut Circuit" 명령을 실행하면 아래 나타난 것과 같은

프롬프트 박스가 나타날 것이다. 사용자는 원하는 회로의

범위를 정하고, 그 ladder 프로그램의 회로를 제거하기 위해

"Yes"버튼을 누른다.

* Cut 동작은 UNDO 명령을 사용할 수 없다는 것을 상기하기

바란다.

76

Page 77: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

4. Copy Circuit (Ctrl+C)

사용자는 현재 ladder 프로그램에서 회로들의 블록을 복사 할

수 있고, 이 파일의 ladder 프로그램 이나 다른 파일의 ladder

프로그램의 일부분을 일시적으로 클립보드에 저장할 수 있다.

이 다이얼로그 박스는 "Cut Circuit"와 같이 회로를 복사할

영역을 입력받기 위해서 나타날 것이다.

5. Paste Circuit <Ctrl+V>

이 명령을 실행할 때, 클립보드 안의 "Cut" 또는 "Copy"의

ladder 회로 블록은 현재 선택된 회로의 앞에 붙여질 것이다.

현재 회로번호는 그 변화에 따라서 다시 반영되어 수정될

것이다.

6. Find <Ctrl+F>

Find 명령은 특정의 라벨 이름을 가진 ladder 논리 회로상에서

빠르게 찾을 수 있게 해준다. 이것은 프로그램에서 특정 I/O 를

찾는데 굉장히 유용하다. 이 Find 명령은 또한 TBASIC

프로그램에서 키워드를 찾는데도 사용된다. 이 명령이 실행될

때, 사용자는 Custom 함수 안에 텍스트를 찾거나 ladder 안의

라벨이름을 찾기 위한 옵션을 선택하도록 해준다.

Find Ladder element: 사용자가 찾고 싶은 라벨이름의 일부

또는 전체 문자열을 텍스트 창에 기입할 수 있다. 또한

<F2>키를 누르면, I/O 테이블이 열리면 I/O 테이블로부터 꺼내면

된다.

77

Page 78: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Find Text in CusFn: TRiLOGI 는 사용자의 입력된 텍스트와

일치되는 것을 찾기 위해 전체 Custom 함수를 통해 찾을 것이다.

첫번째 일치되는 CusFn 는 사용자가 읽게 하기 위해서 열릴

것이다. 그리고 난후 만약 계속해서 찾기를 원한다면 사용자가

지시하도록 도울 것이다. Custom 함수 편집창에서 택스트 창은

"Find Text” 명령이 실행되는 동안 단지 읽기만 가능할 것이다. 만약 사용자가 프롬프트 다이얼로그 박스에서 "No"를

클릭한다면 마지막에 열렸던 CusFn 에 머무르게 될 것이다.

그러나, Custom 함수 편집기의 내용의 단계들은 여전히 읽기만

가능하다. 만약 CusFn 안의 텍스트를 편집하기를 원한다면,

사용자는 텍스트 윈도우를 클릭해야 하고, 편집이 가능해

질것이다. 이 특징은 찾기 과정 동안에 custom 함수가 실수로

바뀌는 것을 방지하기 위한 것이다.

7. Goto <Ctrl+G>

. 특정한 회로번호로 옮기기를 원한다면 이 명령을 사용하라. 그

"Goto" 명령은 사용자의 프로그램이 많은 회로들을 가지고 있을

때, 더욱 유용하게 쓰여진다. 이 때는 마우스나 커서키들을

사용하여 특정 회로를 찾는 데는 불편함을 느낄 것이다.

8. I/O Table <F2>

PLC 의 I/O 를 위한 라벨이름을 정의하는 I/O 테이블을 연다.

I/O 테이블의 자세한 설명을 원한다면, I/O Definition Table를

클릭하기 바란다. 9. View I/O Type on Ladder <F3>

화면상에서 ladder 논리 접점의 I/O 타입의 표시를 할 것인지 말

것인지를 토클 형태로 조작한다..모든 ladder 논리 접점 심볼은

일반적으로 그것들의 라벨이름으로 정의한다그러나 사용자 I/O

타입을 지시하기 위해 선택적인 조그만 문자를 표시할 것인지

선택 할 수 있다. 예를 들면( i=input, o=output, r= relay, t= timer ,

78

Page 79: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

c=counter) 등이다. TRiLOGI 가 처음으로 시작될 때, 표시는

활성화된다. 그러나 사용자가 표시하지 않기를 원한다면 그

옵션을 OFF 시키면 된다.

10. Edit Custom Function <F7>

사용자가 TBASIC 프로그램을 작성하기 위해서 Custom 함수

편집기를 열어야 한다. 사용자는 CusFn 테이블에서

Custom 함수번호 또는 라벨이름을 선택하기를 요구 받는다.(I/O

테이블의 일부인) 각각의 TRiLOGI 파일은 최대 256 개의

Custom 함수를 포함할 수 있다. 각 Custom 함수는 자신의 창에

그것을 열 것이다. 그 Custom 함수번호와 라벨이름은

Custom 함수 편집창의 타이틀 위에 표시될 것이다:

사용자는 하나의 Custom 함수에서 다음으로 가기 위해서 la

로 스크롤 할 수 있다. 그러나 l 와 l 를 클릭함으로써

사용자는 비어있지 않은 다음 CusFn 함수나 이전의

CusFn 함수로 스크롤 할 수 있다.모든 작성되지 않은

CusFn 함수는 건너뛸 것이다. 이것은 만약 사용자가 어떤 것을

위치시키기 위한 모든 Custom 함수에 위치되게 하기 위해서

매우 유용하게 쓰인다.

79

Page 80: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

만약 사용자가 CusFn 으로부터 텍스트를 copy/cut 하기를

원한다고, 어떤 것을 붙이기를 원한다면 사용자는 <Ctrl-C>,

<Ctrl-X> 그리고 <Ctrl-V>키를 사용하면 된다.

11. Clear Custom Functions

이 명령은 완전하게 지우기를 원하는 내용의 custom 함수의

범위를 선택할 수 있다. 사용자가 지우기 위한 custom 함수의

범위를 선택하 도록 도와줄 것이다. 이 동작은 Undo 할 수

없다는 것을 기억하기 바란다.

III. Controller Menu 이 메뉴안의 모든 명령들은 TLServer 를 통해서 PLC 와 통신하기

위한 것들이다. 그러므로, 그 TLServer 는 실행되어 있어야 하며,

이 메뉴에 있는 명령들을 실행하기 전에 시리얼 포트를 통해

PLC 와 접속이 되어 있어야 한다. TLServer 는 TRiLOGI 가

동작하는(localhost IP 127.0.0.1 를 사용하여) 같은 컴퓨터에서

실행하거나 같은 로컬 영역의 네트워크 상에서 다른 컴퓨터로

실행할 수 있다. 또는 인터넷이 되는 어느 곳에서도 접속이

가능하다. TLServer 와 PLC 가 어떤 상황에서든지 이러한 환경이

지원 된다면 접속이 가능하다. 만약 TLServer 의 접속할 방법이 없다면 메뉴에서 어떠한 명령의

실행은 TLServer IP address : port 뿐만 아니라

Username/Password 까지 입력 하라는 다이얼로그 박스가 항상

열릴 것이다. 사용자는 TLServer 에 로그인하기 전에 정당한

권한을 부여받아야 한다. Username/Password 다이얼로그 박스의

자세한 설명을 원한다면 “Log In to TLServer”를 보라. 일단

사용자는 TLServer 에 로그인하고 아래의 각 함수의 설명을 보라:

80

Page 81: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

1. Select Controller <Ctrl-I>

. ID 란은 유일한 편집 가능하다. 사용자가 ID 주소를 (00 에서

FF)까지 16 진수로 입력해야 한다. 이 명령은 사용자가

TLServer 에 동시에 접속되어 있는 PLC 를 선택하기 위한

것이다. 그러나 온라인 모니터링이나 프로그램 전송을 위한

다른 ID 만 가능하다.

2. Connect/Disconnect to Server

단지 사용자가 다른 컨트롤러 명령들을 수행할 의사가 없다면

TLServer 에 로그인하기 위해서 이 명령을 사용한다.

사용자는가 만약 아직 아무작업도 하지 않았다면 TLServer 에

로그인하자.사용자는 온라인 모니터링(On-Line Monitoring)을

사용하거나 프로그램 전송(Program Transfer) 명령을 사용하기

전까지는 특별히 이 명령을 사용할 필요는 없다..그러나 일단

사용자가 접속한다면, 이 명령은 "Disconnect from Server”로

바꿜 것이고, 이것은 현재 사용자가 접속한 TLServer 서버를

Username/Password 다이얼로그 박스를 이용하여 다른

사용자가 접속하거나 다른 IP Address/port 번호로 전환하기

위해서 로그 아웃하는 유일한 방법이다.

3. On-Line Monitoring <Ctrl+M>

자세한 설명은 온라인 모니터링(On-Line

Monitoring )도움말 문서를 보라.

4. Program Transfer to PLC <Ctrl+T>

이 명령은 만약 사용자가 로그인한 사용자이름을

"Programmer"의 접근 수준의 권한이 주어진다면 사용

가능하다. 만약 사용자가 "User" 또는 "Visitor"로서 로그인

했다면, 이 명령은 Controller 의 menu 에서 불능상태가(disable)

될 것이다. 그것은 사용자가 서버로부터 접속을 끊은 후에,

다시 가능상태가 될 것이다.)

81

Page 82: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

사용자는 TRILOGI ladder + TBASIC 프로그램을 PLC 에

전송하기 위한 명령으로 사용할 수 이다. 사용자는

목적지(PLC)에 실수에 의한 다운로드를 방지하기 위해서

사용자의 명령에 대해 다시 한번 확인할 것이다. 그 ladder

프로그램은 프로그램 전송 과정이 일어나기 전에 확실히

컴파일해야한다. 전송하는 과정은 프로그램 전송 다이얼

로그박스에 보여지는 것과 같이 명확하다.

82

Page 83: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

5. Open Matching Source File

사용자는 PLC 에 마지막으로 전송했던 TRiLOGI 프로그램의

파일이름을 위해서 접속된 PLC 에 묻는 명령이고, 이 명령은

TLServer 에 로그인한 사용자의 디렉토리에 저장된 파일과

일치하는지 시도할 것이다. 만약 그 파일이 발견되면, 열릴

것이다. 그렇지 않고 파일이 발견되지 않으면 보고해 줄

것이다. 이 명령은 단지 파일이름이 매칭되는 것으로

소스파일을 여는 것이다. 그 파일이 수정된 것인지 아닌지는

확인할 수가 없다. PLC 에 전송되고 컴파일 되었던 서버 안에

저장된 파일이 확실한지는 확인은 사용자의 몫이다. 만약 사용자가 새로운 파일을(예를 들어 파일이름이

"Untitled”이라고 가정하면) 만들고, 온라인 모니터링을

수행하려고 한다면, 이 명령은 자동적으로 PLC 와 일치하는

파일을 열 것이라는 것을 숙지하기 바란다. 그 명령은

사용자가 "Full-Screen Monitoring" 창이나 "Controller"

메뉴로부터 다른 ID 를 가진 PLC 를 선택하려 할 때 쓰일

것이다.

6. Get PLC's Hardware Info

사용자는 PLC 의 펌웨어 버전을 알 수 있다. 프로그램을 위한

메모리의 총량뿐만 아니라 input, output, relay, timer 그리고

counter 들의 최대수들을 알 수 있다. 이와 같은 정보는

사용자가 PLC 에 프로그램을 전송하려고 할 때에 표시될

것이다.

7. Set PLC's Real Time Clock

PLC 의 real time clock(날짜와 시간을 포함한 RTC)는 이

명령을 이용하여 신속하게 세팅할 수 있다. 사용자가 이

명령을 실행할 때, 날짜와 월, 날, 시간, 분, 초를 담은

다이얼로그 박스가 사용자가 값을 기입하기 위해서 표시될

83

Page 84: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

것이다. 그 다이얼로그 박스는 클라이언트 컴퓨터 안의 달력과

시계로부터 취한 값을 가지고 초기에 채워질 것이다. 사용자는

원하는 값이 있는 어떤 란에 수정할 수 있고, "Set PLC's

Clock"버튼을 클릭하면 된다:

다이얼로그 박스는 TRiLOGI 가 PLC 에 모든 데이터가 전송된

후에 닫힐 것이다. 사용자는 PLC 안에 데이터가 적절히

쓰여졌는지 확인하기 위해서 온라인 모니터링(on-line

monitoring)을 사용해야 한다. “Year”란에 1996에서 2096까지, "Month" 란은1 에서12까지, "Day”란은 1 에서 31까지, "Hour" 란은0 에서23까지, "Min" 와 "Sec" 란은 0 에서 59까지 설정되도록 제한되어 있다. 만약 사

용자가 잘못된 값을 기입하면 비프(삐~)가 울릴 것이다. 실수

를 바로 잡은 뒤에 "Set PLC's Clock” 버튼을 클릭하면 다시 PLC로 전송된다.

IV. Simulate Menu TRiLOGI 는 사용자의 PLC 프로그램을 PLC 와 연결하지 않고

100% 시뮬레이션 수행이 가능하다. 이것은 장비를 생산하기 전에

빠르게 프로그램을 테스트하는데 적합한 툴이다. 그것은 또한

PLC 프로그래머가 ladder 논리 프로그램을 PLC 테스트 장치들을

통해서 시뮬레이션 할 필요가 없이 사용가능 하다는 것은

강점이다.

84

Page 85: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

TRiLOGI 는 자동적으로 시뮬레이터를 활성화 시키기 전에 컴파일

과정을 거친다. 만약 에러가 컴파일하는 동안 발견되면, 그

에러가 발생한 곳에 강조되어 나타나고, 에러의 형태는 사용자가

수정할 수 있도록 보고될 것이다.

1. Run (All I/O Reset) <Ctrl+F9> This should be the option to use when you first begin to test your TRiLOGI program. 이것은 사용자가 처음 TRiLOGI 프로그램을

테스트하기 시작할 때, 사용하기 위한 옵션이 될 것이다.

실행되면, 모든 I/O 비트(입력을 포함해서)가 OFF 상태로

클리어 되고, 모든 정수 데이터는 0 로 세팅되며, 문자 데이터

또한 비워놓게 된다. 프로그램이 "Programmable Logic

Simulator"창은 사용자의 TRiLOGI ladder 프로그램을

테스트하기 위한 시뮬레이션을 지휘하기 위해서 열릴 것이다.

2. Run (reset Except i/p) <Ctrl+F8>

사용자는 종종 시뮬레이터를 리셋할 때, "as is" 입력 세팅을

유지하기를 원할 것이다. 이 시뮬레이션은 PLC 의 전원이

인가 될 때와 같이 매우 사실적으로 설계되었으며 그것의

몇몇 입력들은 이미 ON 상태일 것이다. (예를 들어

센서는실린더 로드의 마지막 지점을 검출할 수도 있다.) 이

명령은 모든 다른 데이터를 리셋하는 동안 모든 입력

논리상태를 보호할 수 있게 해준다. <Ctrl-F8>키는

사용자가입력의 논리 상태를 반영하지 않고 시뮬레이터를

리셋할 때, "Simulator" 화면상에서 동작한다.

3. Continue Run (no reset) <F9>

사용자가 시뮬레이터를 닫는 마지막 순간까지 그 프로그램을

계속해서 시뮬레이션하기를 원한다면 이 명령을 사용하라.

모든 이전 데이터는 완전한 상태로 보존되고, 그 ladder

프로그램을 계속해서 실행하기 위한 시뮬레이터의 의해서 그

85

Page 86: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

데이터를 사용하게 될 것이다. 만약 사용자가 ladder

프로그램이나 custom 함수를 변경하기를 원한다면 전체

프로그램은 실행하기 전에 다시 컴파일해야 할 것이다. 첫번째 스캔 펄스( 1st.Scan )는 이 명령이 이것이 이전의

시뮬레이션의 동작으로부터 지속된 것이라면 이 명령이 실행될

때 활성화되지 않을 것이다. T 이 명령은 만약 사용자가

시뮬레이션하는 동안 사용자의 소프트웨어 안에 간단한 버그를

발견하게 된다면, 사용자는 즉시 그것을 중지시킬 수 있고,

다시 시작함으로써 전체 시뮬레이션 세션을 재 시작하지

않으면서 즉시 시뮬레이션의 변화를 반영하여 테스트 하는데

유용하게 쓰인다.

4. Compile Only <F8>

사용자가 TRiLOGI 파일의 컴파일된 결과를 보고받기 위한

것이다:

simulatemenu1.gif (5680 bytes)

5. Reset All I/Os <Ctrl-R>

시뮬레이터의 허가 없이 시뮬레이션 안의 모든 I/O 를 클리어

시킨다. 시뮬레이터안에 논리 상태가 ON 된 모든 I/O 가 Ladder

프로그램에 강조되어 보여질 때까지, 만약 그것이 사용자의

ladder 프로그램의 시야를 혼란을 준다면, 이것은 I/O 를

클리어하기 위한 한가지 방법을 제공될 수 있다.

86

Page 87: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

V. Circuit Menu

1. Insert Comments

주석은 프로그램 세그먼트의 다양한 특징을 설명하기 위한

프로그래머의 특정 설명들이며 컴파일러는 이 주석을

무시한다. TRiLOGI Version 5.0 은 회로사이에 자유롭게 주석을

기입할 수 있도록 지원한다. 이 명령이 실행되면, 그 주석

편집기는 열릴 것이다. The comment editor allows you to enter

any text you like that best describe the working of the circuit.주석

편집기는 사용자가 원하는 회로의 동작을 설명하는 어떤

텍스트의 입력을 허용한다. 모든 표준의 텍스트 편집 키들과

같이 “잘라내기”,”붙이기” 등을 이 편집기에서 지원한다.

사용자가 주석 편집이 끝나면, <ESC>키를 누르면 그 창이

닫힐 것이다. 일단 주석이 생성이 된다면, 그것은 회로의 번호가 부여되고,

다른 회로들과 같이 취급할 수 있다. 사용자가 Browse mode

일 때, <spacebar>를 누름으로써 편집할 수 있다. 선택적으로

사용자가 그것은 다른 곳에 옮겨놓을 수 있으며, 다른

목적지에 복사하거나 "Circuit" 메뉴에서 명령을 사용하여

전체를 삭제할 수도 있다.

2. Insert Circuits

이 명령은 사용자가 새로운 회로를 현재 선택된 회로 앞에

삽입할 수 있도록 해준다. 새로운 회로가 현재 번호를 갖게

되는 동안, 현재의 회로번호는 1 이 증가할 것이다. 사용자는

회로 를 생성하기 위해서 회로편집모드에서 끼워 넣을 수

있다.

3. Move Circuit

87

Page 88: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

사용자는 이 명령을 사용하여 회로의 순서를 재배치 할 수

있다. 사용자가 옮기길 원하는 회로를 선택하고 "Move Circuit"

명령을 실행한 다음에, 목적 회로위치 실행시키고<Enter>키를

누르면 된다. 그 선택된 회로는 목적 회로 앞의 새로운 자리로

이동할 것이다 만약 사용자가 회로의 블록을 새로운 위치로 이동시키길

원한다면, "Edit" 메뉴 안에 "Cut Circuit" 와 "Paste Circuit"

명령을 사용한다면 더욱 능률적인 작업이 가능하게 될

것이다.

4. Append Circuit

Ladder 프로그램에 새로운 회로를 첨가하기 위해서 이 명령을

실행한다. 이 새로운 첨가는 전체 프로그램의 마지막 회로의

위치에 즉시 생길 것이다.

5. Delete Circuit

이 명령은 사용자가 1 개 또는 더 많은 회로를 삭제하기

위해서 제공된다. 사용자가 삭제하기 원하는 회로의 범위를

입력하면 된다. 그러나 이 삭제 동작은 UNDO 명령을

지원하지 않는다는 사실을 유념해야 한다.

VI. Help Menu

이 매뉴얼 안의 모든 내용들은 TRiLOGI 프로그램이 실행되고 있는 컴퓨터에서 참조할 수 있도록 되어있다. 이것은 원격의 브라우저에서 TRiLOGI 프로그램의 “applet”이 실행되면 포함된다. 왜냐하면 각각의 도움말 파일은 자동적으로 TLServer 로부터 조율해주기 때문이다. 사용자는 어떤 때라도 <F1>키를 누름으로 해서 도움말 파일을 호출할 수 있다. 그리고 전체 온라인 TRiLOGI 도움말 파일의 목차

88

Page 89: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

페이지를 가져오기 위해서 “Help”로부터 “Content” 아이템을 선택할 수 있다. 목차 페이지에서 사용자는 Ladder 논리 편집기에 연결 할 수 있고, 전체 TBASIC 언어를 참조할 수 있다. Instant Help for TBASIC Keywords

TRiLOGI Version 5.x 안에서 한가지 편리한 특징은 TBASIC 키워드의 구문에 대한 내용을 도움받기가 쉽다는 것이다. 예를 들어 만약 사용자가 “READMODBUS”라는 키워드을 위한 구문을 찾기를 원한다면, 도움말 파일의 링크를 통해 찾는 방법 대신에, 간단하게 custom 함수 편집기내에서 “READMODBUS”키워드를 선택하고 <F1>키를 누르기만 하면된다. 그러면 즉시 “READMODBUS” 명령에 관한 도움말 문서가 아래 화면과 같이 나타날 것이다.

사용자가 관심있는 키워드를 선택한 후에 <F1>키를 누른다.

=> 키워드를 위한 도움말 파일은 즉시 인터넷 익스플로어를 통해서 로딩될 것이다:

89

Page 90: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

90

Page 91: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

8 장: Ladder 논리 언어 참조

I. Ladder 논리 기초들 : 접점, 코일, 타이머, 카운터

1. 접점

모의의 전기적인 회로 다이어그램의 Ladder 논리 프로그램들은

전자산업에서 제어 시스템분야에 쓰여지고 있다. 전자 제어

시스템의 기본적인 목적은 어떤 환경하에서 어떤 일이 일어났을

때, ON, OFF 의 변화를 어떻게 처리할 것인지 결정하는 것이다.

ladder 프로그램을 이해하기 위해서, 전류의 흐름의 개념(전류가

그것에 흐르지 않을 때는 OFF 상태이고 흐를 때에는 ON 이

된다.)을 기억하면 된다. Ladder 프로그램의 기본적인 요소는 접점(Contact)들이다. 접점은

열린 것과 닫힌 것(ON 또는 OFF)으로서 2 개의 상태를 갖는다.

열린 접점은 전류를 끊는 반면에 열린 접점은 다음 요소에

전류를 흐르게 한다. 가장 간단한 접점은 ON/OFF 스위치이고,

이 스위치를 활성화 시키기 위해서(예를 들어, 사용자의 손으로)

외부의 힘이 필요하다. 리미트 스위치는 어느 장소든지 위치시킬

수 있는 조그마한 스위치이다. 기계적 장치를 그곳으로

움직이게 할 때, 그 접점은 닫힐 것이고, 그 장치로부터 멀리

떨어뜨리면 그 접점은 열린다. 만약 접점이 부하에 연결되고, 닫힌다면 부하는 ON 이 될 것이다.

이 간단한 개념은 아래의 그림과 같이 가장 기초적인 ladder

다이어그램이다:

91

Page 92: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

왼쪽의 수직선은 전원선(Power line)이다. 전류는 부하인(Lamp)를

ON 시키기 위해서 Switch 접점을 통해서 흘러야 한다. (사실,

ladder 다이어그램의 두 번째 오른쪽 끝은 수직선은 전류 흐름을

위한 귀한 경로를 제공하게 된다. 그러나 회로 다이어그램을

간단하게 구성하기 위해 이것은 빠져있다. ) 현재, 위의

다이어그램에서 제안된 것처럼 직접 Lamp 를 연결하는 것 대신에,

PLC 의 입력과 PLC 의 출력인 lamp 를 연결하고 스위치를

연결한다. 그리면 위의 ladder 프로그램과 같이 실행될 것이다.

만약 모든 사용자가 이와 같이 사용한다면 특별한 센스가

필요하지는 않을 것이다. 우리는 어떻게 PLC 를 간단하게

배선하는지를 보여주는 것이다.

노트: 위의 다이어그램에서 보여주는 Switch 접점은

Normally-open (N.O.) 접점을 의미한다.

현재 3 개의 스위치가 함께 lamp 를 제어한다고 가정해보자.

마스터 스위치는 ON 될 것이고, "controlsw1" 과 "controlsw2 의

2 개의 제어 스위치 중에 하나는 lamp 를 ON 시키기 위해서

OFF 되어야 할 것이다. (두 방향의 스위치를 생각하면 사용자는

어떻게 구동해야 할지 아이디어를 얻을 수 있을 것이다.) 우리는

PLC 의 3 개의 입력인 3 개의 스위치와 PLC 출력과 lamp 를 모두

연결할 수 있다. 이 과제를 수행하기 위해서 아래와

같은 ladder 를 쓸 수 있다:

“/”를 가진 접점은 Normally-Closed (N.C.)접점이다. 그것은

이어그램을 해석하기 위한 입력의 논리 상태의 반대(inverse")를

의미한다.

92

Page 93: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

그러므로 위의 ladder 다이어그램에서 만약 "Master" 와

“controlSW1"가 ON 이 된다면, "controlSW2"는 OFF 가 되고

lamp 는 "controlSW2"의 상태가 OFF 의 반대(inverse) 논리 상태가

될 때까지 참(true)이 될 것이다. "Master” 접점을 통한 가상의

전류가 흐르는 것을 생각해보면 "controlSW1"와 normally-closed

"controlSW2" 접점을 통해서 lamp 는 ON 이 될 것이다. 반면에 만약 "controlSW1"이 OFF 가 되면, if "controlSW2"는

ON 이 되고 그 lamp 또한 ON 이된다. 왜냐하면 전류의 흐름이

"Master"를 통하고, 하위 병렬 가지인 N.C. "controlSW1" 과 N.O.

"controlSW2"를 통해서 전류가 흘러가기 때문이다.

노트: 사용자가 보게 될 때, 스위치 "controlSW1"는 PLC 의

1 개의 물리적인 입력과 연결된다. 그러나 그것은

다이어그램에 2 개가 나타날 것이다. 만약 사용자가 실제로

위의 회로를 장치에 연결하려고 한다면, "controlSW1"과

"controlSW2"은 다중의 극(pole) 타입이 되어야 한다.

그러나 만약 사용자가 PLC 를 사용한다면, 이 두 개의

스위치들은 PLC 의 말단 입력인 물리적인 하나의 연결이

될 때까지는 단일 극(pole)을 갖게 되는 것이 필요하다.

같은 접점의 ladder 다이어그램 안에서 사용자가 만약 극의

수가 제한이 없게 하기를 원한다면 많은 횟수 동안 나타날

것이다. 위의 예제는 간단하나 그것은 논리적인 AND”와 “OR”의 기본

개념은 매우 명확하게 설명해주고 있다. "controlSW1"

과"controlSW2"는 연속적으로 연결되었고, 결과가 참(true)이 되는

동안 둘 다 참(true)이 될 것이다. 반면에, 2 개의 가지와 병렬

가지 중에 하나는 전류를 제어하는데 쓰이게 되므로 이것은

논리적인 OR 연결이다.

93

Page 94: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

일단 사용자가 ladder 다이어그램의 해석에 관한 기본적인

원리를 이해한다면, 모든 것이 명확해지고 간단해질 것이다.

Ladder 다이어그램 프로그래밍은 다소 복잡한 통제 시스템을

생성하기 위해 쓰여질 수 있다. 그러나 TRiLOGI 에서 우리는

TBASIC 에서 생성된 custom 함수를 활성화 시키는 ladder

프로그램을 허용함으로써 더욱 강력한 소프트웨어가 된다.

2. Relay Coils

접점은 전기적인 전류의 존재에 의해서도 활성화될 수 있다.

이것은 높은 전류를 제어할 수 있는 스위치를 활성화 시키기

위한 전기적인 전류를 이용하여 제어시스템에서 큰 부하를 ON

/OFF 제어가 가능하게 해준다. 이 접점의 가장 간단한 형태는

릴레이(relay)다. 전통적인 전자기 릴레이에서 코일은 전자석으로 바뀌는 철심

주위를 감고있다. 코일을 통하여 전류가 흐를 때, 전자석이

강력해지고, 그 힘은 접점을(normally-open 접점은 자석이

활성화되면 닫힌다.) 닫거나 열도록(normally-closed 접점은

전류가 흐르지 않을 때, 닫혀있다.) 사용된다. Ladder 논리

프로그래밍 언어는 그것 자신의 쓰임을 위한 전자기 릴레이를

설명하는 말을 차용한다. 사용자는 출력과 같이 ladder

다이어그램의 오른쪽 끝에 아래와 같이 릴레이 코일을 연결한다.

PLC 에서 전형적인 전자기 릴레이와 같이 동작하는 수백 개의

내부 “relay”가 있다. PLC 의 물리적으로 연결된 출력을 가진

출력과는 다르게, 내부 릴레이가 ON 되면,

94

Page 95: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

기동("energized")되었다고 말한다. 그러나 사용자는 PLC 의

물리적인 I/O들에 어떤 변화가 생겼는지는 볼 수 없을 것이다. 그

논리 상태는 PLC 내부에서 유지된다. 릴레이의 개념은 다른

릴레이나 출력들의 ON/OFF 로 바뀌는 동안 ladder

다이어그램에서 쓰여질 수 있다. Ladder 다이어그램에서 릴레이

접점은 Normally-Open (NO) 이나 Normally Closed (NC)되고,

릴레이를 가진 접점의 수에는 제한이 없다.

95

Page 96: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

3. Out Coils

PLC 출력은 외부 부하를 제어하기 위해서 전력을 공급할 수

있는 물리적인 연결을 가진 실제 내부의 릴레이이다. 이와 같이,

릴레이(relay), 출력 (output)과 같은 것은 ladder 프로그램을

사용하는 접점의 수의 제한이 없다.

4. Timer Coils

타이머는 특별한 릴레이의 한 종류와 같이 동작한다. 코일이

기동될 때, 그것의 접점이 닫히기 전에 고정된 시간의 길이 동안

기다려야 한다. 기다리는 시간은 타이머의 "Set Value" (SV)에

의해 결정된다. 일단 지연시간이 끝나면, 타이머의 N.O. 접점은

그 코일이 기동되는 동안 닫혀있을 것이다. 그 코일이 기동이

끝나면(코일이 OFF 되면), 모든 타이머의 N.O. 접점은 즉시 열릴

것이다. 그러나 만약 코일이 지연시간이 다되기 전에 기동이 끝난다면 그

타이머는 리셋될 것이고, 그것의 접점은 절대 닫혀지지 않을

것이다. 마지막 중지된 타이머가 다시 기동될 때, 그 지연시간은

타이머의 SV값에 의해 처음부터 재시작되고, 지난 중지된 시간의

동작은 이어서 계속되진 않는다.

5. Counter Coils

카운터는 또한 프로그램이 가능한 Set Value (SV)에 의해 특별한

릴레이의 한 종류와 같이 동작한다. 카운터 코일이 리셋후에

첫번에 기동되면, 그것은 그것의 카운터 레지스터안의 SV-1 값이

로드된다. ON 이 됨으로 해서 매번 카운터 코일이 기동되면

(OFF->ON), 그 카운터는 카운터 레지스터의 값에서 1 씩

감소한다. 그 코일은 카운터가 감소되기 위해서 OFF 에서 ON 의

사이클이 이루어져야 한다. 만약 그 코일이 항상 기동된 상태로

있다면, 카운터는 감소하지 않는다. 그러므로 카운터는 동작을

일으키는 사이클의 수를 카운터하기에 적합하다.

96

Page 97: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

그 카운터 레지스터값이 0(zero)가 될 때, 모든 카운터의 N.O.

접점은 ON 이 될 것이다. 카운터 접점들은 카운터 코일이

기동되든 기동되지 않던지와 관계없이 ON 을 유지할 것이다. 이

접점을 OFF 시키기 위해서, 사용자는 특별한 카운터 리셋 함수인

[RSctr]를 사용해야 한다.

97

Page 98: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

II. Special Bits TRiLOGI 는 어떤 어플리케이션을 위해

유용하게 쓰여질 특수목적의 비트들을 다수

가지고 있다. 이것들은 0.01 초에서 1 분까지

8 개의 클럭 펄스와 "Normally-ON" 그리고

"First Scan Pulse” 등을 포함한다. .이 비트들 중 어떤 것을 사용하기 위해서

ladder 편집기로 들어가서 접점(contact)를

생성한다; I/O 테이블이 팝업되면 "Special

Bits" 메뉴가 팝업될때까지 스크롤한다.

이 메뉴는 "Counter Table"다음이고 "Input

table"의 앞에 위치한다.

1. Clock pulse bits

TRiLOGI 에 의해 8 개의 클럭펄스를 아래와 같이

지원한다: Clock Pulse Period Ladder Symbol 0.01 second Clk:.01s 0.02 second Clk:.02s 0.05 second Clk:.05s 0.1 second Clk:0.1s 0.2 second Clk:0.2s 0.5 second Clk:0.5s 1.0 second Clk:1.0s 1 minute Clk:1min

첫번째 반주기 동안 클럭 펄스 비트가 ON 이 되면, 다음

반주기는 OFF 된다. 이 클럭 펄스의 듀티비(duty ratio)는 아래와

같이 50%이다.

98

Page 99: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

그 클럭 펄스는 종종 타이머들을 생성하기 위한 카운터 명령과

함께 쓰여진다. 그것들은 "Flasher" 회로를 위한 타이밍

소스로써 사용되어질 수 있다. 카운터는 또한 복합적인 기본

클럭 펄스율 의 두번째 클럭 펄스를 생성하기 위한 클럭으로

동작할 수 있다.

2. SeqN:X

이것들은 step Sequencer 의 스텝카운터가 #X 에 이르게 될 때,

활성화되는 "Sequencer" 접점이다. 예를 들어 Normally

Open 접점인 Seq2:6 이 Sequencer #3 가 스텝 #6 에 이를 때

닫힌다. 다른 스텝일 경우, 이 접점은 열려있을 것이다.

3. Normally ON Flag - Norm.ON

사용자가 만약 어떤 입력 조건에 관계없이 항상 ON 상태를

유지할 필요가 있을 때 이 플래그(flag)를 유용하게 쓸 수 있다.

인터락(interlock) oFF 함수인 ———[ILoff]를 제외하고,

코일이나 특수 한 함수(special function)은 전원선과 직접

연결을 허용하지 않기 때문이다.( ladder 다이어그램의 맨 왼쪽

끝의 수직라인) 만약 사용자가 코일을 항상

인에이블(enable)시킬 필요가 있다면, 아래와 같이 "Special

Bits"메뉴로부터 "Normally-ON"의 사용을 고려해본다.

4. First Scan Pulse - 1st.Scan

99

Page 100: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

이 특수 비트(special bit)는 ladder 프로그램의 가장 첫번째

스캔 시간에서만 ON 될 것이다. 그런 후에는 항상 OFF 상태일

것이다. 이것은 만약 사용자가 시작하지마자 어떤 조건을

초기화할 필요가 있을 때 유용하게 쓰게 될 것이다. 그

프로그램이 PLC 에 전송될 때, 이 비트는 PLC 가 리셋되거나,

PLC 가 처음으로 전원이 인가될 때 단지 한번만 ON 될 것이다.

5. Real Time Clock Error - RTC.Err

이 비트는 M-series PLC 가 배터리가 내장된 MX-RTC 옵션을

갖지못하고, 클럭이 전원이 끊어지거나 와치독

타이머(watchdog timer )가 리셋할 때 ON 될 것이다. 이것은

올바른 실제 시간을 요구하는 클럭 데이터가 올바르지 못한

어플리케이션에서 경고를 해주게 된다.( scheduled ON/OFF

동작과 같이) 이는 올바른 동작을 위해서 취해지는 것이다.

100

Page 101: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

III. Special Functions

Ladder 회로를 편집하는 동안에, 사용자가 특수한 함수(special

function)을 생성하기 위해서 또는 아이콘을 클릭할 때,

그 특수한 함수(special function) 메뉴는 아래와 같이 파업 될

것이다.

1. Reversible Counter Functions: [DNctr], [Upctr], [RSctr]

[DNctr], [UPctr] 과 [RSctr] 함수는 TRiLOGI 에 의해서 지원되는

128 개 중에 양방향 카운터와 함께 사용할 수 있다. 보통의 다운 카운터( 아이콘을 클릭해서 생성되는)는

본질적으로 "Set Value" (SV)에서 1 씩 감소시키는 카운터이고

그 값이 0 이 되면 멈추게 된다. 보통의 다운 카운터와 다르게,

양방향 카운터는 0 에서 SV 사이의 present value (PV) 값을

변경할 수 있는 원형 카운터이다. 사용자가 "Set Value" (SV)을

지나서 증가시키려고 한다면 그것은 오버플로어가 되어 0 으로

세트될 것이다. 이와 같이 만약 사용자가 0 이하의 값으로 다운

카운트하려고 한다면 "Set Value" (SV)값이 되기 위해

언더플로어가 될 것이다.

101

Page 102: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

. [DNctr], [UPctr]과 [RSctr]의 카운터 함수들은 다른 회로에서

같은 카운터 동작을 할 수 있다. (예를 들어 같은 카운터

라벨을 부여할 수 있다.) 비록 이 회로들이 ladder

프로그램안에 어느 장소에 위치된다 할지라도, 같은 카운터

동작을 하는 2~3 개의 함수들은 아래의 명령안에서 함께

공동화되게 하도록 하는 방법을 추천한다. 모든 3 개 함수들은

양방향 카운터에 장착되도록 쓰여질 필요는 없다. 감소 Counter [DNctr]

[DNctr]함수의 실행 조건이 OFF 에서 ON 이 될 각

시간에, 그 설계된 카운터의 현재 값이 아래와 같이

변하였다 :

a. 만약 그 카운터의 present value (PV)가 비활성이라면,

Set Value" (SV, 카운터 테이블에 정의)를 가진

카운터 레지스터를 로드한다. -1

b. 만약 카운터의 present value (PV)가 이미 0 이

이라면, 카운터 테이블에 정의된 SV 를 가진

카운터의 PV 를 로드한다. 그리고 카운터의 접점을

ON 시킨다. (또한 완료플래그 (flag)라고 알려진 것도

ON 된다.)

102

Page 103: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

c. 다른 방법으로 PV 레지스터 1 에 의해 감소

증가 Counter [Upctr]

[Upctr] 함수의 실행 조건이 OFF 에서 ON 이 될 각

시간에, 설계된 카운터의 present value 는 아래와 같은

영향을 준다. a. 만약 카운터가 비활성이라면, ‘0001’의 숫자를 가진

카운터 레지스터를 로드한다.

b. 만약 카운터의 present value (PV)는 Set Value 와 같아지면

숫자 ‘0000’을 가진 카운터 레지스터를 로드한다. 그리고

카운터 접점을 ON 시킨다. (또한 완료플래그(flag)라고

알려진 것도 ON 된다.) d. 다른 방법으로 PV 레지스터 1 에 의해 증가

Reset Counter [RSctr]

이 함수의 실행조건이 OFF 에서 ON 으로 변화할 때, 그

카운터는 비활성 상태로 리셋된다. 이 함수는 양방향

카운터와 일반적인 다운카운터 코일에 쓰여진다.

2. Sequencer Functions: [AVseq], [RSseq] and [StepN]

이 내용은 다음 섹션에 설명되어 있는 내용(“Using TRiLOGI

Sequ encers”)을 참조한다.

103

Page 104: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

3. Latch Relay Function [Latch]

릴레이 래치는 비록 그 조건이 나중에 제거된다 할지라도

수행조건의 상태를 유지하게 해주는 편리한 요소이다. 릴레이

래치로서 부여된 이 프로그램 요소는 그것들이 일단

기동되면 ON 을 유지한다. 단지 릴레이들과 출력들은 릴레이

래치로서 부여될 것이다. [Latch]함수를 선택하자마자, 사용자는 왼쪽/오른쪽 커서키

또는 왼쪽/오른쪽 화살표 키를 클릭함으로써 릴레이와 출력

테이블 사이를 이동할 수 있다. 그 선택된 릴레이 또는

출력은 현재 릴레이 래치로써 할당될 것이다. 사용자는 ladder

다이어그램에서 [Latch] 심볼위의 프로그램 요소의

라벨이름을 볼 수 있을 것이다. 비록 레치-릴레이가 자기유지 회로에서 위치되어 사용된다고

할지라도, 인터락 섹션의 레치-릴레이는 인터락이 발생되어도

클리어되지 않는다. 아래 보여지는 그림과 같이 자기유지는

일단 인터락 섹션에서 클리어 될 것이다:

4. Clear Relay Function [Clear]

[Latch]함수에 의해 프로그램 요소를 재 기동하기 위해서

[Clear] 함수를 쓰는 것이 필요하다. [Clear]를 선택하자마자,

출력과 릴레이를 재기동 할 것인지 선택할 것이다. 회로를

위한 수행조건이 ON 될 때, 설계된 출력과 릴레이는 리셋될

것이다. Ladder 다이어그램에서, 그 프로그램 요소의

라벨이름은 [Clear] 심볼 위에 보여질 것이다.

104

Page 105: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

만약[Latch]와 [Clear]함수의 실행 조건이 둘 다 동시에

ON 되었다면, 설계된 비트의 효과는 두 함수들의 상대적인

위치에 의해 결정된다. [Latch]에 의해서 기동된 출력과 릴레이

비트는 [Clear]에 의해서 OFF 될 때까지 ON 상태를

유지한다는 것을 기억해야 한다. 같은 출력과 릴레이가 이 두

함수에 의해서 제어되는 [Latch] 회로가 구성된 후에

[Clear]회로가 위치되도록 하기를 추천한다. 이것은 [Clear]

함수가 일반적으로 다른 PLC 들이나 래치-릴레이의

하드웨어안에서 [Latch]회로보다 더 높은 우선순위를 가지기

때문이다.

5. Interlock [ILock]

"Interlock" [ILock] 과 "Interlock Off" [ILoff]함수는 ladder 회로의

전체 섹션을 제어하기 위해서 함께 동작한다. 만약 [ILock]

함수의 실행조건이 ON 되면, 그 프로그램은 일반적으로 실행될

것이다. 만약 [ILock]의 실행 조건이 OFF 되면, [ILock] 와 [ILoff]

사이의 그 프로그램 요소들은 아래와 같이 동작할 것이다. a. 모든 출력 코일은 OFF 된다.

b. 모든 타이머들은 비활성되기 위해 리셋된다.

c. 모든 카운터는 그들의 present value 값들(PV)을

유지한다.

d. [Latch]함수에 의한 래치-릴레이들은 영향 받지

않는다.

e. dDIFU] 와 [dDIFD]함수들은 실행되지 않는다.

f. 다른 모든 함수들은 수행되지 않는다.

인터락 섹션은 마스터 통제 릴레이가 많은 하부 가지들을

통제하는 것과 등가회로이다:

105

Page 106: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

[ILoff] 는 다른 프로그램 요소들을 기동시키기 위해 필요하지

않는 함수이다. 사용자가 한 개 이상의 [ILock] 함수를 사용할

때, 프로그램의 끝을 실행하기 전에 최소한 한 개의 [ILoff]는

있어야 한다. 달리 말하지면 그 컴파일러는 [ILoff] 함수가

부재일 때 사용자에게 경고메시지를 줄 것이다. 그 논리

시뮬레이션은 만약 사용자가 [ILoff]함수를 빠뜨렸다면 스캔의

마지막에 인터락을 항상 클리어 시킬 것이다.

사용자는 몇 개의 [ILock] 함수들을 쓰는 인터락 섹션하에서

두번째 또는 세번째 수준의 인터락을 프로그램할 수 있다.

그러나 사용자가 가장 뒤의 인터락 섹션을 위한 하나의

[ILoff]를 프로그램하는 것이 필요하다. 그것은 [ILoff]는 [ILock]

함수와 짝으로 사용할 필요는 없다.

6. Up 과 Down [d DIFU] 와 [d DIFD]의 구별

[dDIFU] 를 위한 수행조건이 OFF 에서 ON 이로 바뀔 때, 그

설계된 출력이나 릴레이는 단지 한 스캔시간 동안 ON 될

것이다. 그런 후에 OFF 될 것이다. 이것은 그것의 실행조건의

라이징-에지(rising-edge) 응답에서 한 스캔시간 동안 단일

펄스를 발생시킨다는 것을 의미한다. 실행조건이 ON 에서

106

Page 107: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

OFF 로 바뀔 때, 위와 같은 제어동작을 가진 출력이나

릴레이는 아무런 일도 생기지 않는다. [dDIFD] 를 위한 수행조건이 ON 에서 OFF 로 바뀔 때, 그

설계된 출력이나 릴레이는 단지 한 스캔시간 동안 ON 될

것이다. 그런 후에 OFF 될 것이다. 이것은 그것의 실행조건의

폴링-에지(falling-edge) 응답에서 한 스캔시간 동안 단일 펄스를

발생시킨다는 것을 의미한다. 실행조건이 OFF 에서 ON 로 바뀔

때, 위와 같은 제어동작을 가진 출력이나 릴레이는 아무런 일도

생기지 않는다.

7. Custom 함수들: [CusFn] 과 [dCusF]

이 두 함수들은 사용자가 만약 그것이 사용자가 정의한

custom 함수(CusFn)를 ladder 논리와 연결한다면 릴레이 코일과

같이 동작할 것이다. Custom 함수들은 TRiLOGI Version 5.x 에

의해서 제공되는 텍스트 편집기를 이용하여 만들 수 있다.

8. Master Reset

이 함수가 ON 이 되면, 모든 메일박스 입력, 출력, 릴레이,

타이머, 카운터 비트들이 모두 OFF 된다. 그리고 모든 타이머

카운터들과 시퀸서들이 비활성 상태로 돌아가고,

107

Page 108: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

래치-릴레이도 클리어되는등, 리셋 상태로 돌아간다. 모든

정수형 변수들도 0 으로 클리어되고, 문자형 변수들도 모든

비어있게 된다.

IV. TRiLOGI 시퀸서(Sequencer)의 쓰임

시퀸서는 고정된 순서들을 동작시키는 프로세스들이나 프로그램

머신들을 위한 매우 유용한 특징을 갖는다. 이 머신들은, 초기

스텝과 진행등이 처음에서 마지막까지 명확하게 구별되는 질서에

의한 단계적으로(step-by-step ) 고정되어 동작한다.그리고 나서

다시 처음부터 다시 시작하게 된다. 그 순간에 현재 스텝

번호를 유지하기 위한 "step counter"이 되어야 한다. 시퀸스의 매

스텝은 ON 이되면 모터나 솔레노이드, 밸브등과 같은 몇몇 동작을

사용하기 위해 접근 가능해야 한다. 예를 들어, 간단한 A 점에서 B 점으로 부품을 옮기는

Pick-and-Place 머신의 동작을 아래와 같이 정리하였다.

Step # Action 0 Wait for "Start" signal 1 Forward arm at point A 2 Close gripper 3 Retract arm at point A 4 Move arm to point B 5 Forward arm at point B 6 Open gripper 7 Retract arm at point B 8 Move arm to point A

TRiLOGI Version 5 은 각각 32 개의 스텝을 갖을 수 있는 8 개의

시퀸스를 제공한다. 각 시퀸서는 그것의 스텝카운터로서 8 개의

카운터 중에 한가지 를 사용한다. ( Counter #1 에서 Counter #8)

어느 한 개 또는 다른 모든 것들은 카운터들은 "Seq1" 에서

"Seq8"에서 사용된다.

108

Page 109: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

시퀸서를 사용하기 위해서, 첫번째로 <F2>키를 누르고 카운터

테이블을 스크롤하여 시퀸서의 이름을 정의한다. 스퀸서로써 어떤

카운터는 일단 카운터 번호에 부합되는 "Seq1" 에서 "Seq8"라고

가정할 수 있다. 예를 들어, 만약 스퀸서 #5 를 사용한다면, 카운터

#5 는 "Seq5"라고 정의해야 한다. 다음 테이블의 "Value" 열

안에서 프로그램 스퀸스를 위한 마지막 스텝 숫자를 기입한다. 특수한 함수인 "Advance Sequencer" [AVSeq]를 만든다. 그

[AVSeq]함수가 OFF 에서 ON 이 되는 동안 실행 조건은 설계된

시퀸서 스텝 1 이 되게하여, 비활성 상태로부터 벗어나게 한다.

시퀸서의 수행조건의 다음 변화가 OFF 에서 ON 이 되면, 한 스텝

진행(증가) 하게 된다. 이 동작은 실제로 [UPctr] 명령과 동일하다. 스텝 카운터의 상위 제한은 카운터 테이블안에서 정의한 "Set

Value" (SV)이다. SV 값에 도달할 때, 다음 시퀸스의 진행은 스텝이

0 이 되어 오버플로우가 발생하면서 일어난다. 그 때, 그 시퀸서의

접점은 스퀸서의 다음 증가가 있을 때까지 ON 되어 있다. e. 이

접점은 프로그램의 한 사이클이 완료되고 새로운 사이클이

준비된다는 것을 의미하는 것이다. 그 시퀸서의 개별의 스텝들에 접근은 TRiLOGI 를 가진

프로그램이라면 매우 간단하다. ladder edit mode를 이용하여 접점

(NC 또는 NO)을 간단하게 만든다. I/O 창이 팝업되면 사용자가

라벨을 찍고, 스크롤하여 "Special Bits"테이블을 아래와 같이

찾는다.

109

Page 110: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

그 "Special Bits" 테이블은 "Counters" 테이블

뒤에 있고, "Inputs"의 앞에 놓여있다. 그리고나서 "SeqN:x" 아이템을 시퀸서 비트를

삽입하기 위해서 클릭한다. 사용자는 팝업

메뉴로부터 시퀸서를 선택하면 된다. 원하는

시퀸서(1 에서 8)과 사용자가 특별한 시퀸서의

스텝수를 입력하기 위한 다른 다이얼 로그박스

연다.

시퀸서의 각 스텝은 "SeqN:x"인 ladder 다이어그램 접점으로써

프로그램될 수 있다. ("SeqN:x" : N = Sequencers # 1 to 8. X = Steps # 0 – 31)

e.g. Seq2:4 = Step #4 : 시퀸서 2.

Seq5:25 = Step #25 : 시퀸서 5.

비록 시퀸서가 스텝 31 이하에서 사용한다 할지라도, 마약

사용자가 더 큰 SV 를 정의 한다면, 일단 첫번째 32 스텝은

ladder 논리에서 접점으로써 사용 가능하다. 그러므로 31 보다 더

크지 않는 최대 스텝수를 제한할 필요가 있다.

1. Special Sequencer 함수들

다수의 ladder 논리 특수 함수들은 시퀸서의 사용과 관련이

있다. 그것들은 아래와 같이 서술하였다.

Advance Sequencer - [AVseq]

오버플로우가 발생할 때까지 1 씩 시퀸서 스텝 카운터가

증가한다. 이 함수는 [UpCtr]함수와 동일하다. (그러므로 바꾸어

사용가능하다)

110

Page 111: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Resetting Sequencer - [RSseq]

그 시퀸서는 특정한 때에 비활성화 시키기 위해서 [RSseq]를

사용하여 리셋시킬 수 있다. 비활성된 시퀸서는 전자와 같이

SeqN:0 접점이 활성화 되는 않는 것과 같이 스텝이 0 인 상태와

같지 않다는 사실을 알아야 한다. 스텝 0 에서 시퀸서를 셋하기

위해서는 [StepN]함수를 다음에 서술한 것과 같이 사용한다. Setting Sequencer to Step N - [StepN]

어떤 어플리케이션에서, 이것은 비동기적으로 알고있는 스텝의

시퀸서를 셋할 수 있는 유용한 기능의 함수이다. 이 함수는

현재 스텝수나 논리 상태와 관계없이 선택된 시퀸서의 step

#N 를 셋할 것이다. 그 스텝을 점프할 수 있는 기능은 시퀸서의

특징 중에 가장 강력한 기능이다. Reversing a Sequencer

비록 단일의 특수 함수로써 사용될 수 있진 않지만 시퀸서로서

정의되어진 카운터의 [DNctr]명령을 사용하여 시퀸서는

역행하여(스텝카운터의 감소동작) 동작할 수 있다. 이것은 역행

시퀸서 생성 또는 역행 "drum" 제어기를 대체하기 위해서

유용하게 사용된다. 2. Other Applications

a. Driving Stepper Motor

시퀸서는 직접 스텝모터를 구동하기 위하여 사용될 수

있다.A two- 2 상 스텝 모터는 4 개의 트랜지스터 출력(상

전류<0.5A 이하인 조그만 모터들)에 의해 구동시키거나

solid-state 릴레이를 통하여 구동할 수 있다. 그 스텝모터는

Step#0 에서 Step#3 (full-step 모드) or Step#0 에서 Step#7

(half-step 모드)의 사이클 시퀸서를 이용하여 구동할 수

있다. 시퀸서의 각 스텝은 스텁 모터의 다른 상을 기동시켜

111

Page 112: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

사용한다. 클럭 소스는 스테핑 스퀸스를 통하여 스텁모터를

구동할 수 있게 해준다. 그 스텝핑-률(stepping rate)은 클럭

소스의 주파수에 의해 결정된다.(주파수=1/period)

0.01 초의 배수를 가진 주기를 가진 클럭 펄스는 "Clk:.01s"

bit 와 [Upctr] 함수를 이용하여 쉽게 구현된다. 예를 들면,

주기=0.05 초의 클럭소스를 발생하기 위해서, Set Value = 4

를 가진 [Upctr]함수를 "Clk.01s" 와 연결한다. 그 카운터의

접점(완료 플래그)는 0.05 초와 같은 시간을 일단 매번 5 를

세면(0,1,2,3,4)면 한번씩 ON 된다.

b. Replacing a Drum Controller

드럼 컨트롤러는 만약 드럼의 출력 타이밍이 분리된

스텝들에서 나눠질 수 있다면 시퀸서에 의해서 쉽게

교체되어질 수 있다. 그림과 같이 2 개의 출력으로

제어한다고 가정한다면 아래의 타이밍 다이어그램을 본다.

이것은 8 스텝 시퀸서에 의해서 교체될 수 있을 것이다.

스텝 1( 예 : "Seq1:1")이 ON 되고 [Latch]함수를 사용한

출력이 래치된다. 스텝 2 는 ON 이 되고 출력 B 가 래치된다.

스텝 4 가 OFF 되고 출력 A 는 [Clear]함수를 이용하여

클리어된다. 그리고 스텝 6 은 OFF 되고 출력 B 가 ON 된다.

다른 스텝들(3,5,7,0)은 연결하지 않는다.

112

Page 113: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

3. 프로그램 예제

우리는 출력 1 에서 4 의 LED 불을 매초에 한번씩 켜는 형태의

프로그램을 생성하여 보자.

LED1, LED2, LED3, LED4, LED4, LED3, LED2, LED1 순서로

ON 되고 모든 LED 가 OFF 되고 이 사이클을 다시 시작한다.

이 프로그램은 그램 6.9 와 같이 쉽게 구현할 수 있을 것이다:

Figure 6.9

1.0s 의 클럭 펄스 비트는 매초마다 한 스텝씩 시퀸서 #2 를

증가시킬 것이다. 시퀸서 #2 는 Set Value = 8 로 정의되어 있다. 각

시퀸서의 스텝은 normally open(N.C.) 접점으로 스텝동안 원하는

LED 를 ON 시킬 것이다. "Stop"입력은 시퀸서를 비동기적으로

리셋시킬 것이다. 그 시퀸서가 8 까지 세면, 그것은 스텝이 0 이 될

것이다. 스텝이 0 이 되면 어떠한 LED 도 ON 이 되지 않고 모든

LED 는 OFF 될 것이다.

113

Page 114: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

114

Page 115: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

9 장: TBASIC Custom 함수들의 소개

I. 개관

TRiLOGI Version 5 는 사용자가 생성한 특수한 함수를 제공하며,

Custom 함수들이라고 한다. (CusFn 의 심볼은 custom 함수를

의미하기 위한 것이다.) 256 개의 CusFn 을 특별한 언어(TBASIC)룰

이용하여 프로그램할 수 있다.

TBASIC 는 마이크로 컴퓨터 프로그래머에 의해 널리 알려진 PC

프로그램인 BASIC 으로부터 파생되었다. 간소화되었을 뿐만 아니라

PLC 어플리케 이션에서 사용하기 위해 최적화된 언어로 되어있다.

새로운 CusFn 를 생성하기 위한 3 가지 간단한 방법이 있다:

1. "Edit" 풀다운 메뉴로부터 "Edit Custom Function" 아이템을

선택하고, 팝업된 CusFn 선택 테이블 1 에서 256 까지의 함수

번호를 선택한다. 사용자는 또한 선택 테이블을 열기 위해서

핫키<F7>를 사용할 수 있다. 그 선택 테이블은 사용자가

유일하게 정의하고 쉽게 다른 custom 함수와 구별될 수 있도록

도와준다 일단 사용자가 custom 함수를 선택한다면, 그 편집기는

특별한 custom 함수의 내용을 보여줄 것이다.

2. 만약 사용자가 벌써 [CusFn] 또는 [dCusF] 함수들과 연결된 ladder 회로라면("Special Function" 팝업메뉴에서 멀티-아이템

(menu-item)으로써 둘 다 나타난 다.)그러면 사용자는 [CusFn] 또는 [dCusF]에 강조된 바가 있는 동안 오른쪽 마우스 버튼을 클릭함으로써 특별한 CusFn를 쉽게 열 수 있다.

II. Custom 함수 편집기

115

Page 116: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Custom 함수 편집기 창은 TBASIC 프로그램 구문의 어떤 라인

수를 생성할 수 있도록 해준다. 이것은 표준 텍스트 편집기이기

때문에, 사용자가 그 텍스트를 편집하기 위해서 마우스나 키를

통하여 문제없이 사용 가능하다. 텍스트 편집 창에서 <F1>키를

누르면 사용자가 일반 키들과 마우스 동작을 보여주는 도움말

화면이 열릴 것이다. 예를 들어 텍스트의 단락을 복사하기를

원한다면, 마우스를 사용하여 선택하고, <Ctrl-C>를 누른다.

그리고 원하는 목적지에 마우스 커서를 옮겨놓고 <Ctrl-V>를

누르면 복사한 내용이 새로운 위치에 붙여질 것이다.

III. Custom 함수 실행

TBASIC 기반 custom 함수가 프로그램의 나머지 부분에서 어떻게

수행되는지 이해하는 것이 중요하다. CusFn 가 실행되는 2 가지

기본적인 방법이 있다.

1. Ladder 논리 특수 함수 코일( [CusFn])에 의한 트리거

custom 함수는 TRiLOGI ladder 다이어그램 프로그램 환경하에

다른 특수한 함수들과 비슷한 방법으로 동작할 것이다.사용자가

ladder 회로 편집 모드에 있을 때, <Ins>키는 "Ins Element"메뉴를

열기 위한 것이다.

또는 특별한 함수출력을 생성하기

위한 아이템을 선택한다. "Select a Function" 팝업 메뉴가 나타날

것이다.

116

Page 117: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

아이템 선택:

" D : [CusFn] - Custom 생성 함수" 또는

" E : [dCusF] - Diff. Up Custom 함수"

사용자는 선택된 custom 함수번호를 1 에서 256 번까지

지정하기를 요구받을 것이다. CusFn 를 사용한다.

" E :Diff. Up Custom Functn [dCusF]" 는

"Differentiated Up" 명령이다.

이것은 함수가 그것의 수행조건이 OFF 에서 ON 으로 바뀔 때

단지 한번만 매 시간마다 수행된다는 것을 의미한다. OFF 에서

ON 으로 수행조건이 바뀔때는 아무런 동작을 하지 않는다. 반면에, "D: Custom created Function [CusFn]" 의 쓰임은 CusFn

이 그것의 수행조건이 ON 인 상태인동안 매 스캔 시간동안

실행될 것이다. 이것은 종종 원하지 않을 수 있다. 그리고

코일을 생성한 이 메뉴 아이템은 프로그래머에게 알람를

제공하기 위해 빨간색의 강조된 코일을 생성할 때 쓰여진다.

117

Page 118: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

사용자는 아마도 사용자가 differentiated version [dCusF] 더

자주사용하게 될것이라는 것을 깨닫게 될 것이다.

2. Custom 함수의 주기적 수행

사용자는 PLC 가 주기적으로 동작을 수행하거나 이벤트를

모니터링 해야하는 많은 상황에 직면하게 될 것이다. 예를 들어,

계획된 시간동안 프루브(probe) 또는 RTC(real time clock)로부터

온도값을 모니터링하기 위해서 LCD 장치에 변화하는 값을

계속적으로 보여줘야 한다. 그와 같은 목적에서 연속적인

[CusFn] 의 사용은 비효율적이다. differentiated Custom function

[dCusF]를 트리거하기 위해서 내장된 클럭 펄스를 사용하는

것이 더룩 효과적이다. 사용자는 어플리케이션에서 0.01s, 0.02s,

0.05s, 0.1s, 0.2s, 0.5s, 1.0s and 1min 의 적정한 시간을 선택할

수 있다. 다른 기간들은 자기 리셋 타이머(self-reset timer )를

가지고 구축할 수 있다. 그 custom 함수는 아래와 같이 시스템

클럭 펄스나 타이머에 의해서 매 주기적으로 제어되어 수행될

것이다:

예를 들어, 사용자가 인간의 눈으로 읽는 속도보다 더 빠르게

LCD 스크린에 변수들을 업데이트할 필요는 없다.그래서 0.5s

클럭 펄스는 효과적일 것이고, 이것은 너무 많은 CPU 시간을

디스플레이 하는데 소모하지 않을 것이다. 가열과 같은 늦은

프로세스 같은 동작은 1.0s 클럭 펄스를 이용하여 온도 변화를

모니터링하는 것이 보다 효과적일 것이다.

중요

i. 그 CPU 가 CusFn 를 포함하는 회로에 ladder 논리를 스캔할 때,

그 회로의 수행조건이 참이라면 그 부합되는 CusFn 는 즉시

실행 될 것이다. 이것은 CPU 가 현재 CusFn 의 수행이 완료될

118

Page 119: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

때까지 ladder 회로에 유지되어 실행되지는 않을 것이다.

그러므로 만약 CusFn 가 언떤 I/O 또는 변수들이 수정된다면,

ladder 프로그램이 실행되는데 영향을 줄 가능성이 있다. ii. INPUT[n]변수는 ladder 논리 스캔을 시작할 때 획득한

데이터가 포함되어 있고, CusFn 수행의 시간에 물리적인

입력의 실제 상태는 아니라는 것을 명심하기 바란다. 이와

같이 내부에 CusFn 의 변화를 위해 INPUT[n] 변수를 기다리는

것은 쓸데없는 일이 될 것이다. 만약 사용자가

REFRESH 구문을 실행하지 않는다면, 사용자는 다시

INPUT[n]변수를 검사해보기 전에 물리적인 I/O 를

리프레쉬(refresh) 해야 한다. iii. 마찬가지로, SETBIT 또는 CLRBIT 구문을 사용하는 어떤

OUTPUT[n]의 변화는 현재 ladder 논리 스캔이 끝날 때까지

물리적인 출력을 전송하지는 않을 것이다. 그러므로

OUTPUT[n] 에서 SETBIT 또는 CLRBIT 를 실행한 후에 즉시

이벤트가 일어나기를 기다리지 않는 것이 좋다. 왜냐하면 현재

ladder 논리 스캔이 완료될 때까지 아무런 일도 일어나지 않을

것이기 때문이다.

iv. 만약 사용자가 즉시 변화하기 위해 출력을 강제시키기를

원한다면, 사용자는 REFRESH 구문을 실행하는 것이 필요할

것이다. 전체 ladder 프로그램이 실행될 때까지 ladder

프로그램의 다른 부분에 영향을 주는 어떤 동작을 어떻게

주게 될 것인지를 고려해야 한다.

v. 모든 Ladder 회로들과 같이, CusFn 를 트리거한 상대적인

회로의 위치는 프로그램의 동작에 영향을 줄지도 모른다. 이

사실은 사용자의 프로그램과 TBASIC CusFn 을 주의깊게

고려해보는 것이 중요하다. CPU 가 ladder 논리와 CusFn 을

순차적으로 실행한다는 것을 항상 기억해야 한다. 비록

하드와이어된 릴레이(hard-wired relay)에서 대등한 회로들이

119

Page 120: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

다른 ladder 회로의 단계가 동시에 동작하기를 제안하는

것처럼 보여질 것이다.

vi. 전형적인 ladder 프로그램의 룰을 가진 라인에서, CusFn 는

ladder 다이어그램 하에서 단 한번만 나타난다. 그것이

일반적인 것인지 미분적인 형태인지 아닌지와 관계없이

나타날 것이다. 컴파일 에러는 만약 CusFn 가 1 개 이상의

회로에서 나타난다면 발생할 것이다.

vii. 그러나, CusFn 는 어느 다른 CusFn 의 하위루틴으로써

불려졌 을지 도 모르고, 한 개이상의 CusFn 에 의해

CusFn 다시 부름 (CALL) 수에는 제약이 없다. CusFn 는

또한 I/O 요소의 논리 상태를 수정 할지도 모르나 내부

타이머나 카운터의 값은 그것의 강력한 TBASIC 를

사용하여 수정할 수 있다.( SetBit, ClrBit 등과 같은)

그러나 그 컴파일러는 CusFn 가 부주의로 어떤

다른 ladder 회로에 의해서 벌써 제어되어 I/O 논리

상태를 바꿔도 사용자에게 경고를 주지않을 것이다.

TBASIC 기반의 custom 함수가 제공하는 이 강력한 융통성은

프로그래머에 의해서 훌륭히 다루어 질 수 있을 것이라

확신한다. 논리 스캔을 한 장소에서 여러 번 수정함으로써

제어되는 I/O 를 출력 조건과 충돌을 방지하는 것은 중요하다.

그 결과는 I/O 의 논리 상태가 ladder 회로의 다른 부분들에

다른 상태가 되기 위해 나타날 것이다. 이것은 디버그나

추적하기 어려운 특이한 출력을 조작하기 위한 것이다.

120

Page 121: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

3. CusFn 인터럽트 서비스

CusFn 는 또한 일반적인 ladder 논리 상태로부터 비동기적으로

수행되는 인터럽트 서비스 루틴(Interrupt Service Routine )을

제공한다. 인터럽트가 허가된 CusFn 는 인터럽트가 발행이

일어나는 조건이 될 때 발생한다. 수행하기 위한 응답시간은

ladder 프로그램의 스캔타임과 비교하여 매우 짧다. CusFn 를

트리거하는 여러가지 인터럽트 소스를 제공한다.

a) 특수한 인터럽트 입력들

M-series PLC 는 몇몇 특별한 인터럽트 입력들을 가지고 있다.

INTRDEF 구문에 의해서 인에이블 되고, 인터럽트 핀의

논리레벨의 상태가 변화할 때, INTRDEF 구문안에서 정의된

특수한 CusFn 이 트리거 될 것이다.(OFF->ON,ON-OFF)

b) High Speed Counters (HSC) 목적카운터 값에 이를 때,

M-series PLC 는 "High Speed Counter"입력을 가지고 있다.

HSCDEF 구문이 인에이블 될 때, 특수한 CusFn 는 미리

설정된 목적 카운트 값이에 도달하게 되면 트리거 될 것이다.

이것은 CPU 에게 즉시 모터를 정지시키거나 어떤 연산을

중지시키는 동작을 수행하게 한다.

IV. TBASIC 변수들의 검사와 시뮬레이션

1. CusFn 의 시뮬레이션 실행

TRiLOGI 는 TBASIC 명령들의 시뮬레이션을 지원한다. 사용자가

CusFn 를 완벽하게 코딩이 끝난 후에, 쓰이지 않는 입력의

연결에 의해 그 함수의 영향을 테스트 한다. <F9> 또는

<Ctrl-F9>를 누름으로써 시뮬레이션을 실행한다. 그것의 제어

입력이 ON 에 의해서 CusFn 가 실행된다. 만약 사용자의

121

Page 122: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

CusFn 이 어떤 I/O 의 논리 상태에 영향을 주는 명령을

실행한다면, 즉시 시뮬레이터 화면에 보여줄 것이다.

122

Page 123: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

그러나 만약 그 연산이 단지 변수들만 영향을 준다면 내부

변수들을 조사해보는 것이 필요하다. ON 이 된 I/O 또는 내부 릴레이 비트는 빨간색 사각형 램프에

의해 표시된다.빨간색은 ON 표시한다. 사용자가 시뮬레이터의

동작을 일시 중지하고 싶다면 <Ctrl-P>를 누르거나

[Pause]버튼을 클릭한다면 일시적으로 시뮬레이션을 중지할

것이다. 마찬가지로 시뮬레이션 엔진을 리셋하기를 원한다면,

[Reset]버튼을 클릭하면 된다.

2. ADC 의 시뮬레이션 입력

프로그램이 가능한 논이 시뮬레이션 화면의 상단 모서리앞쪽에,

사용자는"ADC1-8" 라벨 근처에 8 개의 텍스트 창을 발견할

것이다. 그 프로그래머는 이 텍스트 창들에 ADC#1 에서

#8 까지 원하는 ADC 값을 입력 할 수 있다. 이로 인하여, 이

시뮬레이션은 각각의 ADC 입력 핀에 잠재적인 신호들을

시뮬레이션 할 수 있다. 이 값들은 ADC(n) 명령이 ADC #n 를

위한 custom 함수가 실행될 때, TBASIC 프로그램에 의하여

획득할 수 있다.

노트: ADC 입력 텍스트 창에 값을 입력하고 사용자가

TBASIC 에 의해 사용되는 전체를 마무리하는 <Enter> 키나

<TAB> 키를 이용하여 갱신될 것이다. (만약 그렇지 않으면,

만약 사용자가 ADC #1 에 값을 123 을 입력하였다고 가정다면,

그 프로그램은 처음에 “1”, 그리고 의도적으로 그런 것이

아니지만 “12” 그리고 “123”을 받게 될 것이다.)

3. TBASIC 변수들 보기

시뮬레이션을 실행한 결과로써 내부 변수들의 값들은

시뮬레이션 화면에서 <V>키(“View”로 표현된)누르거나 또는

123

Page 124: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

[View]버튼을 클릭함으로써 확인할 수 있다. 팝업된 창은

TBASIC 에 의하여 지원되는 특별한 주변장치 뿐만 아니라 모든

변수들의 값까지도 확인 할 수 있다. 변수들은 4 개의 화면으로

짜여져 있다. 사용자는 네비게이션 버튼들을 클릭하거나,

왼쪽/오른쪽 커서 키를 이용하여 화면의 스크린을 옮길 수

있다:

정수형 변수들 화면

첫번째 화면은 32 비트 정수형 변수들을 모두 26 개를 포함하고

있다. 정수형 변수 A~Z, 시스템 변수 DATA 와 TIME, 그리고

ADC, DAC, PWM 그리고 setLED 와 setLCD 의 결과 변수들이

포함되어 있다. 초기화된 DATE 와 TIME 은 시뮬레이션이 PC 의

내부 RTC(real-time clock)값을 얻어와서 쓰여지게 된다. 그러나

차후로 DATE[n] 과 TIME[n] 부여하는 값에 의해 영향을 받을

수 있다. 3 개의 high-speed counter 의 첫번째 PV(present value) : 이

페이지에 보이는 것은 HSC1 에서 HSC3 까지이다. 어느 특정한

A/D channel #n 에서 ADC 데이터는 ADC(n)함수가 실행된다면

보여질 것이다. 그렇지 않다면, ADC 값은 ADC 포트의 현재

계산된 실제 값을 반영하지 않을 것이다.

124

Page 125: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

데이터 메모리 화면

두번째 디스플레이 화면에는 25 페이지의 16 비트 DM 변수인

DM[1] 에서 DM[4000]의 값이 있다. 각 페이지는 16 행과

10 개의 열로 되어 있어 총 160 개의 DM 변수가 있다. 사용자는

[PgUp] 또는 [PgDn] 버튼을 이용하거나 키보드의 해당 버튼을

이용하여 스크롤하면 된다.

문자형 변수 화면

3 번째 디스플레이 화면에는 각 문자의 길이에 종속된 26 개의

문자형 변수인 A$에서 Z$까지 4 페이이지가 있다. 만약 그

수행조건은 ON 이라고 해서 CusFn 는 미분의 형태로

동작하지는 않는다. 그리고 나서 그 CusFn 는 계속해서 수행될

것이다. 변수의 결과는 계속해서 화면에 갱신될 것이다. 시스템 변수 화면

INPUT[n] , RELAY[n] 그리고 emINT[n]와 같은 시스템 변수들은

이 화면에서 보일 것이다. 사용자는이 변수들안에서 비트

형태를 동일하게 하기 위한 목적으로, 프로그래머에 의해서

일반적인 16 진수 표시 방법으로 그 값을 보기를 원한다면

[Hex]버튼을 클릭하면 된다.

4. 변수들의 내용의 변경

"View Special Variables"창이 열리는 동안에, 사용자는

[Edit]버튼을 클릭함으로써 아래와 같은 변수들의 내용을 수정할

수 있다: A-Z, A$ to Z$, DM[n], DATE[n], TIME[n], INPUT[n], OUTPUT[n], RELAY[n], TIMERBIT[n], CTRBIT[n], TIMERPV[n], CTRPV[n] and HSCPV[n], emINT[n], emLINT[n].

125

Page 126: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

텍스트 입력 창은 팝업되고, 사용자는 아래와 같이 할당 구문의

형태의 값을 입력해야 한다:

e.g. A = 5000; DM[99]=5678; OUTPUT[2]=&H01AB B$ = "Welcome to TBASIC"

변수들은 입력되는 새로운 값을 차지할 것이고, 만약 어느

CusFn 를 위해 그 실행조건이 ON 된다면, 그 시뮬레이터는

즉시 입력된 데이터를 새롭게 처리하고, 새로운 출력을 만들

것이다. 이것은 시뮬레이션 프로세스를 제어하는데 매우

융통성있도록 해준다. #define N_AXIS 0

#define Y_AXIS 1 5. 10 진법과 16 진법의 표현

모든 숫자 데이터는 "Special Variables"창에 초기설정치인

10 진수로 표현된다. 사용자는 [Hex] 버튼을 클릭하거나 <H>키를

누름으로써 16 진법의 형식으로 숫자를 표현할 수 있다만약

사용자가 10 진법 형식으로 되돌아가고 싶다면 <D>키를 눌러라.

이 특징은 2 진숫자의 16 진법 표현과 유사한 프로그래머를

위하여 매우 유용하다.그 [HEX]버튼은 사용자가 16 진법

디스플레이 모드로 돌아가려고 할 때, [DEC]버튼을 누르면 된다.

V. TBASIC 변수들의 온라인 모니터링

만약 사용자가 "Controller" 풀다운 메뉴로부터 "On-Line

Monitoring/Control" 명령을 실행시킨다면, TRiLOGI Version 5 는

계속해서 그것들의 내부 변수들의 값을 위해 PLC 에 계속해서

요청을 할 것이다. 이 변수들의 값은 "View Special Variables"창에

실시간으로 갱신할 것이다. 사용자는 또한 "Edit Variable"창을

126

Page 127: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

사용하여 PLC 의 변수들의 어느 값을 바꿀 수도 있다.( "View xxx

Variables" 창에서 "Edit"버튼을 클릭함으로써)

TRiLOGI 의 즉각적으로 제공되는 이 능력은 프로그래머들의

디버깅 과정을 매우 효과적으로 지원하기 위해서 PLC 의

내부변수들을 모두 볼 수 있게 한다. TRiLOGI 프로그래밍 환경에

의해서 제공되는 프로그램의 용이함은 프로그래밍과 디버깅은

어려운 업무들의 많은 다른 PLC 들의 더 앞쪽인 M-series PLC 에

실제 세팅되어 있다.(이것은 그들이 M-series 에 내장된 능력과

부합하기 위한 값비싼 "options"이 자체적으로 설치되어있다.)

1. 타겟(target) PLC 의 일시 중지와 리셋

온라인 모니터링이 되는 동안, 만약 "View Special

Variables"창이 열린다면, 사용자는 여전히 <Ctrl-R>을

누름으로해서 PLC 의 내부 데이터를 리셋할 수 있다. <P>키는

PLC 를 중지시킬 수 있다. 중지된 PLC 는 결과적으로 <P>를

다시 누름으로써 원래 중지된 모드에서 풀릴 수 있다.

2. 디버깅을 위한 LCD 의 사용

사용자는 사용자가 원하는 값을 추적하기 위하는 지점의 내부

데이터를 출력하기 위한 T100MD 내장된 LCD 장치를 유용하게

수용할 수 있다. 만약 특별하게 그 값이 빠르게 변한다면,

온라인 모니터링 화면에 의해 잡혀지지 않는 값들을

표시하는데도 유용하게 쓰일 수 있다.

VI. 에러 처리

CusFn 텍스트 편집기는 그것의 편집기 안에서 입력되는 텍스트의

형태에 제한을 주지 않기 때문에, 그 TRiLOGI 컴파일러는

사용자의 TBASIC 의 컴파일러에 의해서 오자, 잘못된 파라미터,

127

Page 128: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

잘못된 명령 등의 문법을 체크해줄 것이다. 컴파일 과정동안 에

그와 같은 에러들이 발견되면 "Syntax Errors"를 받을 것이다.

1. 구문 에러

TRiLOGI 는 복잡한 사용자와 친숙한 구문에러 추적 시스템을

채택한다: 구문에러가 발생하게 될 때, 그 컴파일은 즉시

중지하고, 에러를 가진 CusFn 는 텍스트 편집기에 의해

자동으로 열릴 것이다. 문법에 위반된 단어의 위치는 또한

강조되어 나타나고, 팝업 메시지 창이 사용자가 에러를 일으킨

이유를 보고해줄 것이다,.사용자는 그리고 나서 즉시 에러를

고치고, 모든 에러를 다 고쳐질 때까지 계속해서 컴파일 한다.

에러 메시지 원인 / 해결

Undefined symbol found단지 TBASIC 명령들과 합당한

변수이름을 준다. 3 장 참조.

Compiler internal error 심각한 문제, 제조업체인

[email protected] Email 을 보낸다.

" ) " found without matching " ( " -

Integer expected 정수형 변수와 정수형 상수를 확인해

본다.

Value is out-of-range 명령에서 허가된 변수의 변위를 언어를

참조하여 체크하여 본다.

Duplicate line label number

GOTO 하기위한 라벨이 같은 CusFn

유일한지 확인한다.

Undefined GOTO destination:

GOTO 구문이 가게될 장소의 라벨과

일치하게 정의한다.

Invalid GOTO label @# 는 0-255 범위 안에 있어야 한다.

Type mismatch (numeric 식에서 문자형과 정수형들이 변환 함수를

128

Page 129: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

and string types may not mix)

사용하지 않고 쓰여졌는지 확인한다. ex) STR$, VAL, etc.

String is too long 문자는 70 자를 넘을 수 없다.

Too many line labels 같은 CusFn 내에 20 GOTO 라벨들보다 더

많이 사용되어 졌다.

Unknown Keyword 함수 또는 TBASIC 구문의 잘못된

철자인지 확인한다.

WHILE without ENDWHILE

모든 WHILE 구문은 ENDWHILE 구문과

일치하게 끝내야 한다. 안긴 WHILE

루프는 각각의 WHILE 을 위한

ENDWHILE 을 적절히 사용하였는지

확인한다.

IF without ENDIF

모든 IF 구문은 IF 구문에 의해 통제되는

블록 영역을 정의하는 ENDIF 와 일치하게

구성하여 끝맺었는지 확인한다. 다중으로

쓸 경우, IF THEN 구문은 각각의 IF 는

부합되는 ENDIF 와 일치해야 한다.

FOR without NEXT

모든 FOR 구문은 FOR 구문에 의해

통제되는 블록 영역을 정의하는

NEXT 구문과 일치되어 끝맺어야 한다.

안긴 FOR 루프들 쓸 경우, 각각의

FOR 은 부합되는 NEXT 와 일치하여야

한다.

Expect keyword "TO" FOR 구문에 의해 요구됨

Must be an integer 문자형 변수와 상수가 허가되지 않았다.

Must be an integer variable only 정수형 상수가 허가되지 않았다.

Must be an integer constant only 정수형 변수가 허가되지 않았다.

Must be a string 정수형 상수 또는 변수가 허가되지

않았다.

129

Page 130: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Must be a string variable only 문자형 상수가 허가되지 않았다.

Must be a string constant only 문자형 변수가 허가되지 않았다.

Incomplete Expression 식이 적절하게 종결되지 않았다.

String constant missing closing "

(")문자 상수들은 (“”)의 짝으로

사용되어져야 한다.

Must be Integer A to Z only

FOR..NEXT 의 인덱스는 A-Z 를 사용해야

한다.

130

Page 131: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

2. 런- 타임 에러(Run-Time Errors)

어떤 에러는 단지 프로그램이 실행이 되는 동안에 나타나는

것이 있다.(예 : A=B/C) 이 식은 C=0 일 때, 사용자가 0 으로

나누려고 시도하려고 할 때를 제외하고는 항상 완벽한 식으로

동작한다. 이 경우 "run-time error"가 발생했다고 말한다.

run-time error 는 컴파일하는 동안 확인되지 않기 때문에,

TRiLOGI 는 또한 시뮬레이션을 동작하는 동안 명령이 타당한지

체크하고, 만약 run-time error 를 만나게 되면, 팝업 메시지 창은

프로그래머에게 run-time error 가 발생한 CusFn 과 이유를

보고해줄 것이다. 이것은 프로그래머가 run-time error 를

디버깅할 수 있도록 원인이 발생한 곳의 위치를 알려준다. 발생

가능한 run-time error 는 일반적인 자체 주석인 아래의 테이블의

리스트들이다.

런-타임 에러(Run-Time Error) 메시지 Divide by zero

Call stack overflow! Circular CALL suspected!

FOR-NEXT loop with STEP = 0!

SET_BIT position out-of-range!

CLR_BIT position out-of-range!

TEST_BIT position out-of-range!

STEPSPEED channel out-of-range!

Illegal Pulse Rate for STEPMOVE!

Illegal acceleration for STEPMOVE!

STEPMOVE channel out-of-range!

STEPSTOP channel out-of-range!

ADC channel out-of-range

DAC channel out-of-range

LED Digit # within (1-12) Only!

PWM Channel out-of-range!

LCD Line # must be (1-4) Only!

PM channel out-of-range!

System Variable Index Out-of-range!

Shifting of (A-Z) Out-of-range!

131

Page 132: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Illegal Opcode - Please Inform Manufacturer!

Timer or Counter # Out-of-Range!

132

Page 133: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

10 장 : TBASIC 구문, 함수,

연산자와 변수들

I. TBASIC 의 구문과 함수들은 무엇인가?

1. 구문

구문은 TBASIC 에 의해서 어떤 동작을 수행할 때 쓰여지는

키워드의 그룹이다. 구문은 0,1,2 또는 더많은 인자들을 취할 수

있다. 아래에 몇 개의 TBASIC 구문들이 있다: PRINT, LET, IF,

WHILE, SETLED ...기타등등

2. 함수

함수는 그것의 적용된 인자들이 동작하고 값을 반환한다. 그

반환된 값은 문자 또는 정수이다. 함수는 대개 수식 안에

내장되어 있다. 그것의 내용은 수식 안에서 사용되기 전에 미리

평가될 때까지 마치 그것이 변수 또는 상수인 것 같아 보인다.

예를 들면

A$ = "Total is $"+STR$(B+C)

STR$(n)는 문자를 반환하는 함수이다. 그러므로 문자를

할당하는 구문하에서 직접 사용될 수 있다. 함수의 두드러지게 구별되는 특징은 인자가 괄호(“( )”)로

묶여있다. 예를 들어 ABS(n), ADC(n), MID$(A$,n,m),

STRCMP(A$,B$)등이 그러하다. 노트: 함수또는 구문들과 그것들의 인자들은 상황마다 특별히

다르지는 않다. 이것은 PRINT 와 PriNt 는 동일한 명령이라는

의미이다. 그러나 명확하게 구분하기 위해서 우리가 이

133

Page 134: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

매뉴얼안에 상위와 하위를 섞어서 사용하는 것을 보게 될

것이다.

3. 구분 문자

TBASIC 프로그램은 많은 구문으로 구성되어 있다. 각 구문은

대개 다른 라인에 항상 위치된다. 그러므로 새로운 라인은 다른

것으로부터 어느 구문을 분리하는 "delimiter"로 동작한다.

IF..THEN..ELSE..ENDIF 과 같은 몇몇 구문은 다중의 구문으로

중첩되어있고 적절한 구분문자에 의해서 분리될 것이다. 시각적으로 더욱 압축적으로 프로그램을 만들기 위해서

콜론(“:”)을 구분자로써 쓰이도록 사용할 수 있다.

134

Page 135: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

IF A > B THEN C = D*5 ELSE C = D/5 ENDIF

위의 구문을 밀집하여 쓴다면 아래와 같다.

IF A >B : C=D*5:ELSE:C=D/5:ENDIF

II. TBASIC 정수형 상수들 , 변수들과 연산자들 TRiLOGI Version 5 에서 TBASIC 컴파일러는 32 비트 정수형 계산을

지원한다. 그러나 -231 에서 -231 사이의 숫자를 표현할 수

있는 A~Z 까지 사용 가능하다. 시스템에 있는 변수들과 데이터

메모리 DM[n]는 모두 32768 에서 +32767 를 표현할 수 있는

16 비트 값이다. TBASIC 에서 모든 수치적인 연산과 비교는

수치적인 표현을 포함한 변수의 비트 길이와 관계없이 32 비트

부호있는 정수형에서 수행된다. 1. 형수형 상수들

이것들은 직접 10 진수의 형태로 입력될 것이다. 또는

"&H"심볼을 사지고 숫자를 고정하여 16 진수형태로

입력가능하다.

12345678

&H3EF =1007 (10 진)

만약 수식의 결과가 32 비트의 제한을 넘어간다면, 그것은

오버플 로우가 발생하고 부호도 바뀔 것이다. 그러므로

정수형 오버플로 우의 조건으로부터 예상치 못한 결과

를 방지하기 위해서 주의를 기울여야 한다.

135

Page 136: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

상수는 아래와 같은 수식에서나 부여된 구문을 사용되어 질

수도 있다:

A = 12345 IF A*30 + 2345/123 > 100 THEN ....ENDIF

136

Page 137: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

중요 (16-bit 변수들의 비교)

16 진법의 접두어 "&H"를 사용하여 정수형 상수를 입력할 때,

32 비트 수식의 대개 나타나는 비트의 부호를 확장하고,

의도적인 값의 부호를 생각해는 것이 중요하다. 예를 들어

10 진수 "-1234"를 표현하기 위해서, 16 진법의 표현은

"&HFB2E"이 아닌 "&HFFFFFB2E" 표현해야 한다. 16-비트 변수 DM[1]는 숫자 1234 이고, 비교구문은 -1234 가

아닌지 체크해봐야 한다. 상수 -1234 의 32 비트 16 진법의

표현은 &HFFFFFB2E 이다. 만약 사용자가 16 비트 표현으로

입력하고자 한다면, 아래와 같이 "&HFB2E" 표현하면 된다.

IF DM[1] <> &HFB2E CALL 5 TBASIC 은 에러가 난 "False" 결과가 생성된 DM[1]은 들어있는

“-1234” 숫자와 비교할 때, 32 비트 정수형 숫자 64302 는

"&HFB2E"로 해석한다. 아래와 같이 올바르게 표현된다:

a) IF DM[1] <> -1234 CALL 5 : ENDIF

b) IF DM[1] <> &HFFFFFB2E" CALL 5: ENDIF

2. 정수형 변수들

변수는 나중에 사용될 데이터를 저장하기 위해서 메모리에 위치한다.

든 정수형 변수는 TBASIC 의 전역변수로 사용된다.모든 변수들은

모든 custom 함수에서 접근가능하다는 것을 의미한다. TBASIC 는 아래와 같은 정수형 변수들을 지원한다: i. 26 개의 정수형 변수 A, B, C....Z 는 32 비트 변수들이다. 변수

이름은 단일 캘릭터일 것이다.

ii. 데이터 메모리로 표현되는 일차원인 16 비트 정수 배열

DM[1] 에서 DM[4000]까지 이다. DM 은 인덱스 번호를

137

Page 138: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

가진 ”[]”에 의해서 주소가 할당된다. 예를 들어 DM[3],

DM[A+B*5] A, B 는 정수형 변수들이다.

iii. 시스템 변수들. 이것들은 아래와 같이 plc 하드웨어와 관련된

특수한 정수형 변수들이다.

Input, Output, Relay, Timer 와 Counter 점점들

비트 어드레스 I/O 요소들은 CusFn 로부터 쉽게 접근가능하게 하기

위해서 16 비트 정수형 변수들 INPUT[n], OUTPUT[n], RELAY[n],

TIMERBIT[n], CTRBIT[n] 에 관계되어 있다. I/O 는 아래 다이어그램에

보여지는 것과 같이 정렬 되어 있다.

15 0 15 0 15 0

INPUT[1] INPUT[2] INPUT[3]

1 17 32 16 33 48

RELAY[1] RELAY[2] RELAY[3]

I/O numbers

.........

OUTPUT[1] OUTPUT[2] OUTPUT[3]

TIMERBIT[1] TIMERBIT[2] TIMERBIT[3] CTRBIT[1] CTRBIT[2] CTRBIT[3]

.........

Bit #

Timer 와 Counter 의 Present Value

PLC 안의 128 개의 타이머와 카운터들의 PV(present value)는 시스템

변수들로써 직접 접근이 가능할 것이다:

timerPV[1] 에서 timerPV[256], timer 의 present value

ctrPV[1] 에서 ctrPV[256], counter 의 present value DATE 와 TIME 변수들

PLC 의 RTC(Real-Time-Clock)는 데이터와 시간은 각각의 DATE[1]

에서 DATE[3] 와 TIME[1] 에서 TIME[3]의 변수들에 의해서 아래

테이블과 같이 취하여진다:

138

Page 139: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Date Time

YEAR DATE[1] HOUR TIME[1] MONTH DATE[2] MINUTES TIME[2] DAY DATE[3] SECOND TIME[3] Day of Week DATE[4]

DATE[1] : 4 개의 디지트(d

(예 : 1998, 2003 등등). DATE[4] : 1 for Monday, 2 for Tuesday, .... 7 for Sunday.

139

Page 140: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

고속 카운터들(High Speed Counters)

M-series PLC 는 위치형 피드백 엔코더로부터 높은 주파수의 펄스

입력을 받기 위해서 쓰여지는 고속카운터(HSC)를 지원한다. 이

고속카운터들은 HSCPV[1] 에서 HSCPV[8]까지 CusFn 에 의해서

접근될 것이다.모든 HSCPV[n]은 32 비트 정수형 변수들이다.

3. 정수형 연산자들:

연산자들(Operators)는 수학적이거나 논리적 연산으로 데이터를

조작을 수행한다. TBASIC 는 아래와 같은 정수형 연산자를 지원한다. i) 할당 연산자:

정수형 변수들(A to Z, DM 와 시스템 변수들,기타등등)은 할당

구문의 쓰임으로 사용된다:

A = 1000 X = H*I+J + len(A$)

ii) 산술 연산자:

Symbol Operation Example + Addition A = B+C+25 - Subtraction Z = TIME[3]-10 * Multiplication PRINT #1 X*Y / Division X = A/(100+B)

MOD Modulus Y = Y MOD 10 iii) 비트논리 연산자: 논리적인 연산자들은 2개의16비트 정수형

데이터들 사이의 비트들끼리 연산을 해준다.

Symbol Operation Example & logical AND IF input[1] & &H02 ... | logical OR output[1] = A | &H08 ^ Exclusive OR A = RELAY[2] ^ B ~ logical NOT A = ~timerPV[1]

140

Page 141: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

iv) 관계 연산자들 : IF 수식 THEN ..... 과 WHILE 수식 ....과

같은 구문의 수식을 만들기 위하여 배타적으로 사용된다.

Symbol Operation Example = Equal To IF A = 100

<> Not Equal To WHILE CTR_PV[0]<> 0 > Greater Than IF B > C/(D+10) < Less Than IF TIME[3] < 59

>= Greater Than or Equal To WHILE X >= 10

<= Less Than or Equal To IF DM[I] <= 5678 AND Relational AND IF A>B AND C<=D OR Relational OR IF A<>0 OR B=1000

v) 함수 연산자: TBASIC 은 아래와 같은 정수형 인자들을 연산하는

다수의 함수들을 내장하여 지원한다.

ABS(n), ADC(n), CHR$(n), HEX$(n), STR$(n)

4. 계층적인 연산자들의 연산 우위

연산자들의 우위는 계산의 우선순위를 표현한다.예 : X = 3 + 40*(5 - 2).

그 컴파일러는 먼저 5 – 2 의 코드를 계산 할 것이다. 왜냐하면 괄호가

가장 높은 우선순위를 갖기 때문이다. 그 결과에 40 을 곱하게 될

것이다. 왜냐하면 곱셈은 덧셈연산보다 우선순위가 높기 때문이다.

마지막으로 덧셈을 연산할 것이다. 만약 같은 우선순위의 2 개

연산자들이 있다면, 왼쪽에서부터 오른쪽으로 계산할 것이다. 예를

들어 X = 5 + 4 - 3 이란 식이 있다면 5+4 를 먼저 계산한 후에 그

결과값과 3 의 차(“-“)를 계산할 것이다. 아래 테이블은 계산의

우선순위를 나타내는 것이다.

Hierarchy Symbol Descriptions Highest ( ) Parentheses *, / , MOD Multiplication/Division +, - Add/Subtract

141

Page 142: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

- Negate &, |, ^,~ Logical AND,OR,XOR,NOT Lowest =,<>,>,>=,<,<= Relational operators

142

Page 143: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

III. 문자열 변수들과 상수들

문자열는 단일 문자(8비트 ASCII)를 모아놓은 알파벳 문자들의 결

과들이다. 1. 문자열 상수

문자열 상수는 따옴표(“ “)안에 0~70의 글자를 포함할 수 있다.

"TBASIC made PLC numeric processing a piece of cake!" "$102,345.00"

2. 문자열 변수

TBASIC은 최대 26개의 문자열 변수들 A$, B$ ... Z$를 지원한다. 각 문자열 변수들은 0(문자 없음)~70개의 문자를 포함할 수 있다.

노트: 펌웨어 버전 r45나 그 이상의 버전을 가진M-series PLC

를 위하여, 사용자는 인덱스$$[1] 에서 $$[26]까지 26개

의 문자열 변수를 사용할 수 있다. A$는 $$[1]와 같다. Z$는 $$[26]과 같다. $$[1] 에서 $$[26]는 부가적인 문자열 변수들이 아니다. 그것은 이전의 펌웨어 버전에 따라서 문자열 변수의 인덱스하는 방법이 다를 뿐이다. 또한 TRiLOGI version 5.2 이상은 이 변수의 이름을 적절히 지

원한다. 주의 : 버전 r45보다 더 이전의 것에 $$[n] 변수

를 PLC에 전송하지 말아야 한다. 그렇게 한다면 PLC동

작 시스템에 충돌이 발생할 수 있다.

3. 문자열 연산자

i) 할당 연산자: 문자열 변수(A 에서 Z와 시스템 변수들, 기타등

할당 구문을 사용하여 문자열 수식을 만들 수 있다. 등)은

A$ = "Hello, Welcome To TBASIC" Z$ = MID$(A$,3,5)

ii) 연결 연산자: 2개 이상의 문자열을 “+”연산자를 이용하여 간단하게 연결 할 수 있다.

예:

M$ = "Hello " + A$ + ", welcome to " + B$

143

Page 144: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

만약 A$가 "James"가 저장되어 있고,B$에 "TBASIC"이 저장되어 있다면, M$="Hello James, welcome to TBASIC”이 된다.

iii) 비교 연산자: 2개의 문자열은 STRCMP(A$,B$) 함수에 의해

서 두 문자열이 동등한 것인지 비교할 수 있다. 그러나 정수

형 연산자 "=", "<>"등을 이용하여 문자열을 비교할 수는 없

다.

iv) 함수 연산자: TBASIC 은 1개 또는 2개의 문자열 인자를 갖

ㄱㅎ 문자열 값 또는 정수형 값을 반환해주는 많은 수의 구

문과 함수들을 지원한다. 예 :

LEN(x$), MID$(A$,x,y), PRINT #1 A$,.... SETLCD 1, x$ VAL(x$)

이 연산자들의 자세한 설명을 원한다면 다음 장을 참고한다.

IV. 특수한 변수들 – EMINT, EMLINT, EMEVENT

The T100MD+ 와T100MX+ PLC는 3개의 변수들은 원래 emWare Inc. of Salt Lake City, USA 에 만든 “EMIT 3.0”이라 부르는 서버 프

로그램을 설계하는데 쓰여진다. 그러나 우리는 모든 앞으로의 PLC설계를 위해 EMIT로부터 분리하기로 결정하였고, 차후의 EMIT 서

버의 버전은 더 이상 지원하지 않기로 했다. 어쨌든, 몇몇 특별한 변수들은 EMIT와 데이터를 교환하기 위하여

사용되고, 이것들은 현재 사용자의 TBASIC프로그램에서 부가된 메모리로써 자유롭게 사용할 수 있다:

a) emInt[1] 에서 emInt[16]: 16비트의 부호없는 정수형 변

수들이 있다.

b) emEvent[1] 에서 emEVENT[16]: 16비트의 부호없는 정수

형 변수들이 있다. EmEVENT[1] 또한 email을 목적으로 사

용된다.

c) emLInt[1] 에서 emLInt[16]: 32비트의 부호없는 정수형 변수들이 있다.

EMLINT[1] 에서 EMLINT[16]는 정수형 배열로 되어있다. 이 32비

144

Page 145: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

트 정수형 변수들은 32비트 정수형 변수들인 A에서 Z는 사용 가

능하지 않은 EMLINT[n]와 같이 인덱스 값을 줌으로써 쉽게 사용 가능하다.

145

Page 146: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

ABS(x)

Purpose : 수식 x의 절대값을 반환

Examples : A = ABS(2*16-100)

Comments : A = 68

ADC(n)

Purpose : AD 컨버터 채널 #n으로부터 값을 반환. n 은 1에서 16사이 값이다.

Examples : A = ADC(2)

Comments : .n은 1~16사이의 값을 반환해주는 수식이다. 만약 그것이 범위밖의 값이라면, 런-타임 에러(run-time error)를 받게 될 것이고, 그 함수는 중지 될 것이다.

TRiLOGI 소프트웨어는 양극의 16비트 ADC( 범위 : -32768 에서 32767)이다. ADC채널의 실제 숫자와 분해능은 타겟 PLC에 달려있다. T100MD+ 와 T100MX+는 둘 다 0~4096 사이의 값이고, 12비트 ADC이다.

ASC(x$, n)

Purpose : 문자열 x$의 n번째의 ASCII 숫자 값을 반환. x$가 널(null)

이라면 ASC(x$,n)의 값의 반환 값은 0이다. n은 1에서 문자

열의 길이로부터 시작된다.

Examples : B = ASC("Test String",6)

Comments : B = 83 ('S의 ASCII 값').만약 n이 1보다도 더 작거나 문자열의 길이보다 더 크다면 ASC(x$, n)의 반환 값은 0이다.

See Also : CHR$(n)

CALL n

Purpose : 서브루틴(subroutine )으로써 또 다른 custom 함수 CusFn #n

를 호출하기 위해서 사용. 불려진 함수가 반환될 때, 수행은

아래 구문으로부터 계속될 것이다. n은 custom 함수 테이블

에서 정의된 custom함수의 라벨이름이거나 1~256사이의

정수 형 상수가 될 것이다.

Examples : IF B > 5 THEN CALL 8 : ENDIF

CALL Addition “Addition” must be a defined name.

See Also : RETURN

CHR$(n)

Purpose : ASCII 숫자에 부합하는 n값을 변환하여 반환. n의 숫자 상

146

Page 147: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

수는 (0~255)일 것이다. Examples : C$ = "This is Message #" + CHR$(&H35)

Comments : C$는 "This is Message #5"의 값을 갖게되고, CHR$(&H35)는 문자 ‘5’를 반환하여주었다.

See Also : ASC( )

CLRBIT v, n

Purpose : 정수형 변수( v)의 Bit #n 의 값을 ‘0’으로 클리어한다. n은

정수형 상수 또는 0~15사이의 변수의 값이 들어간다. v는

relay[n], output[n]등과 같은 어느 정수형 변수 또는 시스템

변수일 것이다. 만약 v가 32비트 정수형이라면, CLRBIT는 단지 16비트보다 더 적게 동작할 것이다.

디지털 전자 변환에 따라서, 비트0은 최소를 나타내는 비트

(가장 오른쪽자리)와 비트 15는 16비트 정수형 변수들의 가

장 왼쪽의 비트를 나타낸다. I/O 변수들의 인덱스와 비트 위치를 찾기위한 가장 빠른 방법은 그들의 I/O 테이블을 열

어보는 것이고, “CH:BIT” 열을 체크해보는 것이다. 9개의 칼

럼하에 비트 위치는 A~F의 16진수에 의해서 표현된다.

Examples : CLRBIT output[2],11

Comments : 물리적인 출력 #28은 OF될 것이다. (Output channel #2 bit #11 = Output #17 +11 = 28)

See Also : SETBIT, TESTBIT, SETIO, CLRIO,TOGGLEIO & TESTIO

CLRIO labelname SETIO labelname TOGGLEIO labelname TESTIO (labelname)

Purpose : CusFn의 어느 input, output, relay, timer 또는 counter 접점비

트의 논리 상태를 조작한다. Labelname는 input, output, relay, timer 또는 counter의 테이블에서 정의한 라벨 이름들이다.

SETIO는 비트를 ON시키고, CLRIO는 비트를 OFF시킨다, 그

리고 TOGGLEIO는 현재 I/O의 상태논리를 토글시켜준다. TESTIO 함수가 만약 비트가 ON이라면 1을 반환해주고, 비

트가 OFF라면 0을 반환시켜준다,

E.g. SETBIT alarm IF TESTBIT(alarm) THEN … ELSE …ENDIF

Comments . I/O비트들은 SETBIT 와 CLRBIT함수를 비교하여 조작하는 가장 효과적인 방

147

Page 148: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

법을 제공한다. 그러나 SETBIT와 CLRBIT함수는 비트가 영향받는 비트위치와 인덱스를 가리키는 변수를 사용할 수 있는 이점을 가지고 있다. 게다가 명령에 의해서 영향을 받는 I/O비트는 컴파일 하는동안 고정될 것이다. custom함수 안에 출력 비트는 만약 “REFRESH” 명령이 실행되어지지 않는다면 ladder 논리 스캔의 맨 마지막에 물리적인 출력을 갱신할 것이다.

See Also : SETBIT, CLRBIT

* CRC16 (var, count) * PLC 펌웨어 버전r44 또는 이상에서 적용가

Purpose : 이 함수는 파라미터 “count”에서 지시하는 범위내에서 변수 “var”로부터 시작되는 정수의 범위를 CRC16으로 계산하여 반환해준다. CRC16은 “Cyclic Redundancy Check”의 16비트 버전이다. – 데이터 흐름에서 에러를 체크하기 위한 가장 널리 알려진 수학적 원리

Examples : DM[100] = CRC16(DM[5],8) X = CRC16(RELAY[2],4)

Comments : CRC16 for DM[5], DM[6]…..DM[12]를 위한 CRC16은 DM[100]으로 할당할 것이다.

RELAY[2], RELAY[3], RELAY[4를 위한 CRC16는 X로 할당할 것이다.

DELAY n

Purpose : 처리하기 위한 n ms의 시간지연을 지원한다.

Example : DELAY 100

Comments : 현재 custom 함수에서 100 ms (0.1s) 지연을 지원

이것은 “brute force” 지연 방법이고, 단지 주의를 가지고 써야한다는 것을 기억하는 것이 중요하다. DELAY 함수는 “delay” 가 끝날때까지 특정한 기간 동안 CPU는 구문을 쉬고 있다. 이것은 남은 ladder 프

로그램들과 다른 custom 함수들이 입력의 조건이 변하여도 멈추고 있다는 것을 의미한다. 단지 시스템 서비스들(시리얼 입력, 타이머 카운트다운, 호스트 링크 명령 등)뿐만 아니라 인터럽트가 인에이블

된 CusFns 함수만 delay 기간동안 동작할 것이다. This may not be desirable if the rest of the process must respond to fast changing inputs. 이것은 만약 프로세스의 나머지가 빠르게 변하는 입력과 관

계가 있다면 예기치 않은 일이 발생할지도 모른다. 0.1s보다 더 긴 delay시간을 사용하는 것보다 더 좋은 방법은 일반적인 PLC 타이머

를 사용하고, delay시간이 끝날 무렵에 다른 custom 함수를 트리거

하기 위한 타이머 접점을 쓰는 것이다.

148

Page 149: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

T100MD+ 와 T100MX+를 위하여 최소 delay함수는 10ms까지 지원

되고, 분해능은 10ms이다. 이것은 만약 사용자가 DELAY 155로 실행

한다면, 실제 delay는 160ms가 되고, DELAY 154은 실제 타임 지

연시간은 150ms가 된다.

149

Page 150: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

FOR ... NEXT

Purpose : 루프 안에서 특정 숫자만큼 명령을 실행하기 위한 명령 Syntax : FOR var able = x TO y [STEP z] i

i

. . . .

NEXT

Var able(변수)는 A~Z사이의 정수형 변수일수 있고, 카운터

로써 쓰여진다. . x, y, z는 수식안에 수치들이다. STEP z는

구문의 옵션부분이다.

x 는 카운터의 내부 초기값이고, , y 는 카운터의 마지막 값

이 된다. FOR 구문에 따르는 프로그램 라인들은 NEXT구문을 만나

게 될 때까지 실행될 것이다. 그리고나서 그 카운터는 STEP에 지정된 수만큼 증가된다. 만약 STEP이 지정되지 않았다면, 그 증가치는 1로 간주될 것이다.

체크는 만약 카운터의 값이 마지막 값이 y값보다 더 커지면

실행될 것이다. 만약 더 크지 않다면, 그 프로그램은 FOR 구문후에 다시 구문의 첫 단계로 돌아갈 것이다. 그리고 그 동작은 반복될 것이다. 만약 그것이 더 커지면, NEXT구문에 따르는 구문을 계속 실행할 것이다. 이것은 FOR-NEXT구문

이라 한다.

런-타임 에러(run-time error)는 STEP 이 0이라고 평가될 때

의 결과가 될 것이다.

Examples : FOR I=1 TO 10 FOR J = 100 to 1 STEP -10 DM[I] = DM[J] NEXT NEXT

Comments : FOR-NEXT 루프들( loop)다른 FOR-NEXT 는 안긴루프(loop)일 수 있다. FOR-NEXT loop의 문맥안에 위치될 수 있다.루프( loop)가 안겨있을 때, 각 루프는 그것의 카운터로써 유일한 변수이름을 갖는다.안쪽의 루프를 위한 NEXT 구문은 바깥쪽 루프보다 먼저 나타난다. 각 루프는 루프의 끝에 표시하기 위한 분리된 NEXT구문을 갖는다.

See Also : WHILE ... ENDWHILE

GetCtrSV (n) GetTimerSV (n)

150

Page 151: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Purpose : Counter #n 또는 Timer #n.의 값 Set Value (S.V,)를 반환한

다. n 는 사용자의 PLC안의 카운터나 타이머의 최대값과 1사

이의 값이된다. Note : 타이머와 카운터들의 #n의 present values (P.V.)이 비록

“TimerPV[n]” 와 “CtrPV[n]”의 변수로써 직접 접근할수 있다 할지라도, 그 Set Value는 이 두 함수에 의해서만 값을 얻

을 수 있다.

See Also : SetCtrSV, SetTimerSV

GETHIGH16(v)

Purpose : 이 함수는 32비트 정수형 변수 v의 상위 16비트를 반환해

준다. 이것은 32비트 정수형 데이터의 변수값을 쪼개기 위

해서 사용되고, 또한 EEPROM 이나 the DM[n]에 저장된 값

인 이 2개의 16비트 변수들은 쪼개는데 사용된다.

Examples : DM[1] = GetHIGH16(A) save_EEP GetHIGH16(&H12345678), 10

See Also : SETHIGH16

GOTO @ n

Purpose : 일반적인 프로그램의 시퀸스에서 벗어나서 무조건 분기를 하기 위해서 현재Custom 함수안에 라벨 @n 의 특정한 라

인으로 분기하도록 지정한다.

목적지 라인은 라벨 표시된 "@n"를 갖는다. N은 0~255이

하의 상수로 쓰여져야 한다. 라벨은 현재 CusFn안에서만 사

용된다. 다른 CusFn은 같은 n을 가질 수도 있기 때문이며,

GOTO @n는 일단 같은 CusFn하의 라벨이 표시된 라인으

로 분기될 것이다.

Examples : @156 SETBIT 0,3 . . . GOTO @156

Comments : 만약 라벨이름이 정의되지 않으면 에러 메시지는 컴파일되는 동안 나타날 것이다.

HEX$(n) HEX$ (n, d)

151

Page 152: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Purpose : 수치인자 n의 16진수 값을 표현하기 위한 문자열을 반환. 만약 두번째 형식이 사용된다면, 이 함수는 글자수 ‘d’의 문

자열을 반환해줄 것이다.

Examples : A$ = HEX$(1234) B$ = HEX$(1234,7)

Comments : A$ 는 문자열을 포함한다 : "4D2" , B$ 는 문자열 “00004D2”를 포함한다. See Also : HEXVAL( ), STR$( ), VAL( ) HEXVAL(x$)

Purpose : 인자 x$안에 담고있는 16진수의 값을 반환.

Examples : B = HEXVAL("123")*100

Comments : B 는 29100 (&H123 =291)의 값을 갖는다.

See Also : HEX$( ), STR$( ), VAL( )

HSCDEF ch, fn_num, value

Purpose : HSC(High Speed Counter)를 사용하기 위하여 인에이블

(enable)하고 channel ch의 관련 인수(parameter)를 설정한

다. 이 카운터들은 ladder 논리 스캔시간이 독립적으로 동작

하며, 고속 입력 펄스들(high speed input pulse)을 엔코더 신

호들에 의해서 캡쳐(capture)할 수 있다.

ch = 채널 번호 (1-8) fn_num = 이값에 도달하면 Custom 함수 # 를 트리거

(trigger) 한다. value = HSC (32-bit) 정수형 값에 이르면 트리거

(trigger)된다.

만약 그 PLC가 사각 엔코더 입력들을 지원한다면, HSC카

운터 변수 HSCPV[ch]는 회전 방향에 따라서 증가/감소할 것이다. Value 에 도달할 때, 그 지정된 custom 함수는 즉

시 활성화된다.

Important : .모든 HSC(High Speed Counter)는 PLC 가 리셋될 때, 자동

적으로 디스에이블된다.만약 그렇지 않으면 HSCDEF 구문

에 의해서 그것들은 인에이블될 것이다. 그러나, 만약 같은 채널에 하나이상 실행된다면, 마지막 실행된 HSCDEF구문

에 의해서 영향을 받게 될 것이다. 그러므로 사용자는 첫번

째 HSCDEF 에 의해서 트리거된 CusFn 안에서 다음 HSCDEF를 넣어야 한다. 하나의CusFn에서 다른 CusFn로 HSCDEF 구문이 연결됨에 의해서 사용자는 하나에 의한

152

Page 153: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

다른 하나의 시리즈로 실행되는 HSC값을 사용하는 기계의 모션(Motion)을 제어할 수 있다. 이 CusFn하에 사용자가 모

션을 제어하기 위해 어떤 것을 하는 프로그램할 수 있다. 예를 들어, 속도를 변화하거나, 브레이크를 걸거나, 모션의 방향을 변화시키는 등을 할 수 있다. 사용자는 디지털 ON/OFF 제어를 위한 SETIO, CLRIO를 사용할 수 있고, 비

례 제어를 위한 setDAC, setPWM를 사용할 수 있다.

Example : HSCPV[1] = 0 HSCDEF 1,19,-3310003 . . . . SETLCD 1,1,STR$(HSCPV[1],6)

Comments : High-Speed Counter #1를 인에이블(enable)하고, 그 카운터가 -33,100,003에 이르면 함수 #19가 활성화 된다. HSC#1의 PV(Present value)그것이 활성화되기 전에 0으로 클리어된다. TRiLOGI Version 5.x는시뮬레이션의 화면에 High Speed counter 입력이 없기 때문에 시뮬레이션 할 수가 없다.

See Also : HSCOFF

HSCOFF ch

Purpose : High Speed Counter #ch 디스에이블(Disable) (ch = 1 to 8)

만약 사용자가 더 이상 high speed counter가 필요하지 않다

면, HSC입력의 상태에 변화에 의해서 발생되는 인터럽트를 서비스하기 위해서 CPU시간을 낭비할 필요가 없기 때문에 디스에이블해야 한다.

HSTIMER n

Purpose : PLC 타이머 #1에서 #n을 “High Speed Timers” (HST)로 정

의하기 위한 명령. 일반적인 타이머를 위한 매 0.1s 대신에, 타이머의 다른 속성들은 일반적인 타이머와 동일하다. n번

호에 해당하는 그 타이머들은 원래의 타이머들에 영향을 주

지는 않고 그대로 남아있다.

IF .. THEN .. ELSE .. ENDIF

Purpose : 수식에 의해서 반환되는 결과값에 기반되는 프로그램의 흐

름을 결정을 하기 위해서 사용되는 명령.

Syntax : IF expression [THEN] ..... [ELSE] .....

153

Page 154: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

ENDIF

. 만약 수식의 결과가 0이 아닌(논리적으로 참)이라면, 프로

그램의 블록라인인THEN 과 ELSE 사이의 구문이 실행될 것이다. 만약 그 수식의 결과가 0(논리적으로 거짓)이라면 IF와 ELSE사이의 블록라인이 무시되고, ELSE와 ENDIF사

이의 블록라인이 대신에 실행될 것이다.

만약 ELSE 구문이 없고, 수식의 결과가 거짓이라면, 그 프

로그램 라인의 블록인 THEN과 ENDIF구문은 무시될 것이

다. 그러나 실행은 ENDIF 구문 후에 올바르게 계속될 것이

다.

IF 구문의 안긴(nesting) 구문

IF..THEN..ELSE 구문하에 구문블럭들은 다른 IF..THEN..ELSE 블록들을 포함할 수 있다. (안긴 구문들) 각각의 IF구문은 ENDIF 구문하에 끝날 것

이라는 것을 잊지 말아야 한다. 그렇지 않으면 "IF without ENDIF"의 에

러를 컴파일되는 동안 보고될 것이다.

Testing Equality : 특수한 비교 연산자들은 IF구문의 수식안에 사용할 수 있다. 일단 정수형 수식은 비교될 것이다. 문자열의 비교를 위해서 "STRCMP(A$, B$)"함수를 참고하자

Equal = Not Equal <> Greater than > Less than < Greater than or Equal to >= Less than or Equal to <=

Examples : IF A >= B*5-20*C OR C=20 B = B-1 ELSE B = B*3 ENDIF Comments : 몇몇의 비교 수식은 논리적 AND(AND 구문)이나 논리적인 OR(OR구문)

의 연산자를 위의 예와 같이 연결할 수 있다.

INCOMM(ch)

Purpose : 8비트 이진 데이터를 Comm 채널 # ch으로부터 얻어서 반

환. Ch 는 1과 8사이의 상수가 되어야 한다. 그 실제 사용되는

하드웨어는 유효한 포트(port) # 로 결정한다. 이 함수는 만

약 시리얼 포트에서 데이터가 없다면 -1을 반환한다.

154

Page 155: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Example : FOR I=1 to 100 DM[I] = INCOMM(2): IF DM[I]<0 RETURN :ENDIF NEXT

Comments : 대개 PLC는 그것의 COMM포트에 도착한 시리얼 데이터를 보호하기 위해서 프로그램은 계속해서 COMM 포트의 데이터를 확인한다. 그 프로그램은 그 데이터를 처리할 준비가 외어 있을 때, 버퍼에 데이터가 비어있음을 지시하는 -1와 만날 때까지 COMM버퍼안에 모든 데이터를 읽기 위해서 아래의 예제에서 보여주는 것처럼 FOR..NEXT 루프를 이용한다.

Note: INCOMM은 현재 PLC들의 T100MD1616+ 와 T100MX 패밀리의 모든 COMM

포트를 지원한다.

See Also : OUTCOMM, INPUT$( ), PRINT #

INPUT$(ch)

Purpose : COMM 포트 # ch로부터 문자열을 반환. Ch는 1~8까지의

상수이어야 한다. 실제 사용되는 하드웨어는 유효한 포트 #

를 결정한다. 이 함수는 시리얼 포트에 유효한 문자열이 없

다면 f0을 반환한다.

Example : D$ = INPUT$(2)

Comments : . Carriage Return (CR) 또는 ASCII code comm. 포트로부터 입력 문자열의 끝에 13을 표시한다. 그러나 반환된 문자열은 CR문자열은 뺀다. TRiLOGI 시뮬레이터에서 사용자는 팝업창안에서 문자열을 입력한다.

See Also : INCOMM( ), PRINT #, OUTCOMM

INTRDEF ch, fn_num, edge

Purpose : 인터럽트(Interrupt) 입력 채널 #ch.을 인에이블 (Enable) ch = 채널 번호(1-8)

fn_num = 변하는 인터럽트 핀이 정의된 에지에 따라서 변

화할 때, Custom 함수 번호를 실행시킨다. 이것

은 인터럽트 서비스 루틴이다.(isr) edge = 양수는 라이징-에지-트리거(rising edge-triggered)

를 의미한다.

0또는 음수는 폴링-에지-트리거 (falling-edge-triggered)를 의미한다.

See Also : INTROFF

INTROFF ch

155

Page 156: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Purpose: 인터럽트(Interrupt) 입력 채널 # ch의 디스에이블(disable)

See Also : INTRDEF

LEN (x$)

Purpose : x$안에 문자들의 수를 반환. Examples : L = LEN("This is a test string"+CHR$(13))

Comments : L = 22 왜냐하면 빈칸과 출력되지 않은 문자를 모두 계수하기 때문이다.

LET

Purpose : 변수에 수식의 값을 할당한다. Syntax : [LET] variable = express on iExamples : T D = 11 LE A$ = "Welcome to TBASIC"

Comments : LET는 옵션이다: 등호는 변수이름에 수식을 할당할 때, 효과적이다. 좌변과 우변 양쪽의 변수형태는 같이야 한다. 문자열 변수는 수식이 할당되지 않을 수 있고, 반대로 할당될 수도 있다.

Important : a) 32비트 정수에 16비트 변수가 할당될 때, 32비트 정수

의 하위 16비트에 할당될 것이다. 그러므로 프로그래머

는 32비트 수가 16비트 숫자(-32768 ~ 32767)의 범위를 넘어서는지 주의를 기울여야 한다.

b) 만약 음수 16비트 수가 32비트 정수형 변수에 할당된다

면, 부호비트는 32비트로 확장될 것이다. e.g. DM[1] = -123. A = DM[1]

-123 의 16비트 16진수의 값은 &HFF85, 이나 16진수

의 값 &HFFFFFF85으로 할당될 것이다. 그러나 그것의 10진수 표현은 -123이와 같게 된다.

LOAD_EEP(addr)

Purpose : 16비트 정수 값을 SAVE_EEP구문을 이용하여 EEPROM에 저장하기 위해 반환하는 함수이다.

addr - 실제 PLC의 TRiLOGI version 5.x. 안에서 EEPROM 의 주소는 많지 않은 공간을 가지고 있지 않다. 그러

므로 사용자의 PLC의 매뉴얼을 참고하여 얼만큼의 주소공간을 갖는지 확인해보아야 한다.

Examples : relay[1] = LOAD_EEP(10): A = LOAD_EEP(2)

156

Page 157: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

See Also : SAVE_EEP

* LOAD_EEP$ (addr) * 펌웨어 r44 또는 그 이상의 PLC에서 적용

된다.

Purpose : 이 함수는 SAVE_EEP$ 명령을 사용하여 PLC안의 EEPROM의 내부 데이터를 반환한다.

Examples : X$ = Load_EEP$(5) FOR I = 1 to 5 $$[I] = Load_EEP$(I+10) NEXT

Comments : 1. EEPROM문자열 위치 #5에 저장된 문자열을 X$로 로드한다. 2. EEPROM 문자열 위치 #11 에서 #15안에 저장된 문자열은 A$ 에서

E$로 표현하기 위해서 ($$[1] 에서 $$[5]를 A$ 에서E$로 로드한다.

See Also : SAVE_EEPR$는 정수들과 문자열들을 저장하기 위해 저장

영역을 제공하는 M-series PLC에서 어떻게 데이터 EEPROM 영역에 저장하는지 설명하기 위한 것이다.

LSHIFT i, n

Purpose : 정수형 변수, DM[n] 또는 시스템 변수들인 relay[n], output[n]등이 되는 변수i를 왼쪽의1비트 시프트하기 위한 명령

LSHIFT 명령은 1비트 시프트를 수행하기 전에 연결되는 하

나이상의 변수를 허락한다. 인자 n은 i에서 시작하여 연계

되는 채널의 수를 지시한다. n =1이면 포함하는 하나의 변

수를 의미한다.

Examples : LSHIFT relay[2],3

Comments : 릴레이 채널 #2,#3, , #4(릴레이 번호: #17~#64)는 아래 방법과 같이 연결된다.

15 0 15 0 15 0

Relay[2]Relay[3]Relay[4]

LSHIFT

.비트들은 하위 채널에서 상위채널로 시프트된다. Relay[2]의 비트 #15는 Relay[3]의 비트 #0으로 이동하고, Relay[4]의 최상위 비트인 #15는 잃게 된다.

See Also : RSHIFT

157

Page 158: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

MID$(x$, n, m)

Purpose : 이 함수는 n번째 문자로 시작하는 x$의 m 문자들의 하위

문자열을 반환한다. x$ - 어떤 문자열의 수식, 변수 또는 상수. n - 1~255사이의 결과를 갖는 어떤 수치적인 수식. m - 0~255사이의 결과를 갖는 어떤 수치적인 수식.

Examples : A$ = MID$("Welcome to TBASIC",4,7) Comments : A$은 문자열 :"come to"를 갖게 된다.

NETCMD$ (ch, x$)

Purpose : 이 함수는 다른 M-series 또는 H-series PLC의 시리얼 포

트 #ch 을 통하여 특정한 멀티-포인트(multi-point) 호스트 링크명령을 보낸다. 그것은 다른 PLC로부터 응답 문자열 들

어올 때까지 특정시간 동안 전체 시간을 기다린다. 그리고 이 응답 문자열은 반환된다.

ch - 이것은 시러얼포트 #를 말한다. 자세한 사항은 PLC를 참조한다. x$ - 멀티 포인트(multi-point) 형식에서 FCS(Frame Check

Sequence)와 terminator character(*와 CR) 를 포함하는 유용한 호스트 링크 명령을 갖는다. NETCMD$함수는 저동적으로

terminator characte(*와 CR)를 포함하는 FCS를 계산하고, x$의 끝에 덧

붙이며, COMM #ch를 통하여 다른 PLC에 전송될 것이다.

Note: 1) 만약 타겟 PLC 가 응답이 없다면, 빈 문자열을 반환해 줄 것이다.

2) 이 함수는 응답문자열의 FCS를 체크하고, 만약 FCS가 잘

못되었다면, 시리얼 수신에 에러를 지시하고 빈 문자열을 반환할 것이다.

Examples : A$ = NETCMD$(3, "@05RI00")

Comments : .이 PLC의 COMM #3에 연결된 ID=5 를 가진 PLC 의 채널 #0의 입력을 읽는다. 응답 문자열은 A$으로 할당될 것이다.

Special : 만약 x$ 의 마지막 문자가 “~”이라면, NETCMD$는 “~” 문자가 없는 문자열이 전송될 것이다. 그것은 FCS에 의해서 첨부되지 않으며, ‘*’ 는 전송하는 문자

열이고, (ASCII 13)문자가 반환되는 “*”는 전송되지 않는다. FCS를 계산하는 동

안 그 응답 문자열을 또한 체크하지도 않는다. 이것은 다른 명령/응답 형식을 가진 세번째 부분인 ASCII 디바이스와 인터페이스하기 위해서 쓰여지는 NETCMD$를 허용한다.

E.g. A$ = NETCMD$(3, “Hello World~”)

COMM port #3으로 “Hello World” 문자열이 전송된다. A$는 되돌아오는 문자열

158

Page 159: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

의 FCS계산없이 문자열 전체가 반환된다,

OUTCOMM n, x

Purpose : Comm port #n를 통한 데이터 ‘x’의 8비트가 전송되기 위해

쓰여지는 구문이다. 이 명령은 부가될 수 있다. 왜냐하면 PRINT#n 명령은 CHR$(0)를 전송하기 위해 사용되지 않을 것이기 때문이다. 0은 TBASIC에서 문자열의 끝으로로써 다

뤄지게되고, 만약 사용자가 PRINT# n 구문으로 CHR(0)을 전송한다면 무시될 것이다.

Examples : OUTCOMM 2,225

PAUSE

Purpose: CusFn를 실행하는 동안 브레이크 포인트를 설치하기 위한 명

령. 이것은 CusFn을 디버그하기 위해 주로 쓰여진다. 원하는 장소에PAUSE구문 삽입함으로써 사용자는 PAUSE와 만날 때, 프로그램 수행을 걸어둘 수 있다. 그런후에 사용자는 관련된 변수들의 값을 테스트 할 수 있다. 사용자는 일시중지된 PLC의 온라인 모니터링을 통하여 수행을 계속할 수 있다. 프로그

램 수행은 또한 온라인 모니터링이나 시뮬레이션하는 동안 <P>키에 의해서 계속할 수 있다.

PIDcompute(ch, E)

Purpose: 이 함수는 채널 ch 에 해당하는 PIDdef 구문에서 정의된 P, I D를 사용하여 PID compensator/컨트롤러를 위한 출력을 계산

한다. 그 적분과 미분 값은 채널의 내부 데어터 영역에 저장되

고, 자동적으로 PID 계산 루틴이 쓰여질 것이다. PIDcompute( ) 함수는 이것의 계산결과를 제한하는 PIDdef 구문의 용어인

lmt (max. limit)를 사용한다. 만약 그 계산된 결과의 절대 값이 "lmt"보다 더 크다면, 그 결과는 +숫자를 의미하는 "lmt"와 같

아지고, 음의 값은 "-lmt" 이 될 것이다. 이런 상황이 발생한

다면, 그 적분은 시스템을 위해 원하지 않은 "integrator windup"을 방해하는 현재 에러를 누적시킬 것이다.

,

ch = 채널 번호(1-16) Err = Closed-loop Error. (i.e. Set point value - Feedback Value)

159

Page 160: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

컨트롤러는 ADC, High Speed Counter, PULSEFREQUENCY 또

는 기타 다른 수단으로부터 피드백을 받을 수도 있다. The obtained result is then scaled and subtracted from the desired (set point) value to get "Err ". 얻어진 결과는 스케일링되고 원하

는 값(set point)값에서 얻어진 값을 빼게 된다. 모든 계산은 32비트 정수로 수행되고, 함수는 어떤 값이 할당된 32비트정수형

으로 반환하여 준다. 실제 출력(DAC 또는 PWM)을 위한 어떤 스케일링된 값은 보내어진 값과 같은 CusFn하에서 사용자에 의해 계산되어질 것이다.

Example :

E = 10000 - ADC(2)*20

PLC-PIDController

Plant

A/D#2

Sensor

PWM#4

E.g. Implementing Closed-loop Digital Control withPID computation function

10,000

A = PIDcompute(5,E) setPWM 4, (A + 8000)/100

Comments: 그 set point는 10000단위이고, 피드백 값은 채널 #2에서 ADC값으로 읽혀진다. 그리고 제어될 인자들로써 같은 단위를 가진 스케일로 변환하기 위해서 20을 곱한다. PID 계산은 채널 #5(#5채널을 위한 PIDdef가 실행되었던 프로그램안이라고 가정)는 에러 신호를 사용하는 원하는 컨트롤러 출력값을 계산하기 위해서 사용

된다.( = set point - feedback value ADC(2) x 20) 원하는 출력(변수 A에 저장)는 옵셋 값 8000을 부가한다. 그리고 난후 PW 채널

#4를 통하여 물리적으로 전송된 100의 인자를 이용하여 스케일을 낮춘다.

Important: 실제 실행에서는 discrete-time 가 실행되질 때에 디지털 컨트

롤을 하기위해서 PIDcompute( ) 함수를 기간적으로 활성화시키

기 위하여0.1s, 0.5s 또는 1s과 같은 클럭 펄스(clock pulse)를 사용한다. 그 PID 샘플링 기간은 시스템의 시상수에 달려있다. 많은 용량을 가진 물의 온도를 제어하는 것과 같이 매우 느린 응답을 처리하기 위해서, 시상수는 매우 크고, 1.0s 클럭 보다 느린 시간을 쓰는 것이 더 효과적이다. 필요이상의 짧은 시간

을 쓰지않는 것이 좋다. 왜냐하면 그것은 계산 시간을 증가시

키고, 전체적으로 시스템의 실행시간을 지연시키기 때문이다.

PIDdef ch, lmt, P, I, D,

Purpose: 비례,적분,미분(PID) 컨트롤러 함수를 위하여 인자들(parameter)

160

Page 161: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

를 세팅하기 위한 함수이다. 함수 PIDcompute( )는 일치하는 채널 #ch 을 위해 여기에 정의되는 인자들을 유용하게 만들어

준다.

ch = 채널 번호 (1-16) lmt = 결과를 계산하기위한 최대 리미트 P

= 비례 이득(Proportional Gain) (KP) I = 적분이득(Integral Gain (KI )) D = 미분이득(Differential Gain (KD)) 아래와 같이 정의된 PID 컨트롤러의 함수를 전송한다:

4개의 인자들: lmt, P, I & D 은 16비트 정수 형 상수 또는 32

비트 정수 형 상수, 정수 형 변수들이 될 수 있다. Lmt를 위해

서, PIDcompute( )함수의 의해서 계산된 컨트롤러 출력값은 + lmt 값이하에서 허용되지 않는다.( lmt는 계산된 컨트롤러 출력

의 포화점을 표현한다.) PIDcompute( ) 함수는 출력이 벌써 포

화되었을 때, 그 에러 신호를 적분을 피하게 되는 "Integrator anti-windup" 특징의 효과를 가져온다.

G(s) = KP + KIs

+ KD s

KP = Proportional Gain = 1

Porportional Band

KI = Integral Gain = 1

Integral Time Constant

Important: .구문이 실행되었을 때, 그 채널 ch 의 적분, 미분 항은 0으로 셋된다. 그러므로 PIDdef는 일단 초기화되는 동안에 실행되어

야 하고, 반복되어 실행되지 않아야 한다. 다르게 말하지면 PIDcompute( )함수는 적절하게 실행되지 않을 것이다. 왜냐하

면 미분,적분 데이터의 손실 때문이다.

See Also : PIDcompute( )

PMON ch PMOFF ch

Purpose: PMON은 채널 #ch에서 펄스 측정 함수를 인에이블해준다.

PMOFF 함수는 채널을 디스에이블 해준다. 그 채널을 인에이

블한 후에, 사용자는 PULSEWIDTH(ch)함수를 사용할 수 있고, 입력핀에서 펄스 측정을 위해 입력 펄스가 도착하는 주기와 펄

161

Page 162: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

스 폭을 얻을 수 있는ULSEPERIOD(ch)를 사용할 수 있다. 사

용자는 일단 펄스 측정 하드웨어를 인에이블시키기 위해서 초

기화하는 동안에PMON을 호출해야 한다. 달리 말하자면 이 두 함수는 단지 0을 반환해 줄 것이다. 사용자는 반복적으로 PMON 함수를 실행시키는 것을 피해야 한다. 펄스 측정 하드

웨어는 또한 반복적으로 리셋될 것이며, 이렇게 되면 정확한 측정값을 얻을 수 없을 것이다.

만약 사용자가 더 이상 펄스 폭과 주기를 특별한 채널에서 측

정하는 것이 더 이상 필요하지 않다면, 사용자는 PMOFF를 사

용하여 디스에이블시켜 CPU시간을 줄여야 한다. 왜냐하면 펄

스 측정은 Interrupt가 인에이블된 상태이며 이는 CUP시간을 낭비하게 되기 때문이다.

Example: PMON 1 : PMOFF 5

See Also : PULSEWIDTH( ), PUSEPERIOD( )

PRINT# n x$; y; z.... Statement

Purpose : COMM 포트 #n을 통하여 다른 장치들의 PLC의 외부인자 리스트들(x$; y; z) 에 의해서 형성된 ASCII 문자들의 문자열

을 전송하기 위한 함수

Parameters: n은 정수형 상수로써 1~8사이의 값을 가져야 한다. 파라미터

리스트(y; z..)에서 정수 값은 각각의 ASCII 표현에서 변환될

것이다. 각각의 파라미터(parameter)는 세미콜론(“;”)에 의해

서 구분되어야 할 것이다.

Action : ASCII 문자열은 첫번째로 인자 리스트안에 모든 인자들을 사용한 PRINT구문에 의해서 만들어 질 것이다. 그리고 완성

된 문자열은 시리얼 채널 #n으로 전송될 것이다. 그 PRINT구문은 인자 리스트에서 마지막 문자를 전송한 후에 지정된 시리얼 포트를 통해서 자동적으로 Carriage Return (CR-ASCII 13)가 전송될 것이다. 세미콜론(;)을 가진 PRINT구문은 CR문자를 전송하지 않을 것이다.

만약 사용자가 여러 줄에서 전체 명령을 중지하기 위해서 “;”을 사용하는 것보다 더 긴 문자열을 전송한다면, 마지막 줄

을 제외하고 각 줄의 끝부분에 세미콜론(;)을 붙여야 한다.

Examples : PRINT #2 "The value of A+B = ";A+B; PRINT #2 "Units"

Comments : 만약 A=5 이고 B=100이라면 문자열 "The value of A+B = 105 Units"와 CR 문자는 Comm. 포트 #2를 통하여 전송될 것이다. TRiLOGI 시뮬레이션 모드에서,

162

Page 163: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

ASCII문자열은 PRINT구문을 수행할 때 팝업창이 나타날 것이다.

See Also : INPUT$( )

PULSEFREQUENCY(ch) PULSEPERIOD(ch) PULSEWIDTH(ch)

Purpose: 마지막 입력 펄스의 주파수 Hz를 반환하는 함수; 펄스 측정 핀의 채널 #ch에 들어오는 입력 펄스의 주기 또는 마이크로

세컨(uS) 폭을 반환해준다. 그 펄스 측정 채널 #ch는 PMON 구문은 벌써 인에이블 되어있어야 한다. 만약 그 펄스가 들

어오지 않는다면(펄스입력정지), 그러면 PULSEFREQUENCY는 다른 두 개의 함수가 어떤 최대값

(T100MD+는 약 3.28s와 같다.)에 이르렀을 동안에 0의 값을 반환할 것이다.

ch = channel # (1-8)

Example: A = PULSEWIDTH(1)

See Also : PMON, PMOFF

READMODBUS (ch, ID, addr) Purpose : MODBUS ASCII 또는 RTU 프로토콜을 조회하기 위해서 자동

적으로 MODBUS ASCII 또는 RTU 슬레이브(slave) 장치에 요

청하기 위해서 사용될 것이다. 그리고 원하는 16비트 레지스

터 데이터를 얻을 것이다. 통신 보 레이트(baud rate)는 Comm 포트의 초기치(default)이다. 만약 그렇지 않다면 그것은 SETBAUD 명령에 의해서 바뀌어질 것이다.

ch - PLC Comm 포트 번호 (Modbus ASCII 에서 사용하는 1에서 8또는 Modbus RTU 를 사용하는11에서 18).

ID - MODBUS 디바이스 ID(1 에서 255) addr - MODBUS 디바이스에서 홀딩 레지스터의

zero-offset 주소.

Example : relay [3] = READMODBUS(3, 5, 101)

Comments : 릴레이는 ID = 05를 가진 MODBUS디바이스로부터 얻은 16비트 데이터를 포함한다. 레지스터 오프셋 주소 101(MODBUS 항은 홀딩 레지스터 #40102를 말한다.) relay[ ]채널 에서 그것을 읽는 것은 비트 레벨을 ladder 논리에 의해서 조작하는 것을 허용한다. 그것은 물론 어떤 데이터 메모리안에서 읽혀질 것이다.

163

Page 164: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

이 명령은 올바른 LRC와 주소를 위해서 자동적으로 슬레이

브(slave) 디바이스로부터 받은 응답 문자열을 체크한다. 그 동작의 상태는 STATUS(2) 함수를 테스트함을써 사용자의 프

로그램을 체크할 수 있다.만약 어떠한 에러도 발견되지 않다

거나 슬레이브(slave) 디바이스가 존재하지 않는다면 ‘0’을 반환해준다.

See Also : WRITEMODBUS, STATUS(2), NETCMD$( )

* READMB2 ch, ID, addr, var, count * Applicable only to M+ firmware

r44 or higher

Purpose : READMODBUS의 버전은 다중 워드로써 생각할 수 있다. 16비트 워드를 반환하는 함수로써 READMODBUS 명령은 데이

터의 다중 워드는 PLC의 내부 메모리안에 저장되기 위한 구

문으로써 역할한다.

Parameters: ch - PLC COMM 포트 번호 (Modbus ASCII 에서 사용하는 1에서 8또는 Modbus RTU 를 사용하는11에서 18).

ID - MODBUS 디바이스 ID(1 에서 255) addr - 0 = 40001으로부터 시작되는 MODBUS 슬레이

브(slave) 디바이스에서 홀딩 레지스터의 Zero-offset 주소

var - 반환된 데이터를 저장하기 위한 마스터(master)에서 변수 시작(DM 또는 어떤 시스템 변수)

count - 읽기 위한 변수의 번호 (M+ PLC 에서max. =16 ).

Example : READMB2 3,5,101,DM[10],8

Comments : PLC는 MODBUS ASCII 프로토콜을 사용할 것이다. 그것의 Comm 포트 #3를 사용하여, ID = 05를 가진 MODBUS 슬레이브(slave) 디바이스를 조회한다. 그리고 레지스터 오프셋 주소 101로부터 시작되는 데이터의 8워드를 요청한다. 101(MODBUS 항은 홀딩 레지스터 #40102를 말한다.) 일단 반환된 이 8워드는 메모리위에 저장된 반환된 데이터를 받는다. DM[10], DM[11],…..DM[17]

.이 명령은 올바른 LRC와 주소를 위해서 자동적으로 슬레이

브(slave) 디바이스로부터 받은 응답 문자열을 체크한다 (또는 CRC16 RTU 프로토콜을 사용한다.) READMODBUS 명령

과 같이, 이 동작의 상태는 STATUS(2)함수를 테스트함으로

써 사용자의 프로그램을 체크할 수 있다.

164

Page 165: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

See Also : WRITEMB2, STATUS(2)

REFRESH

Purpose : 물리적인 입력과 출력을 리프레쉬(refresh)하기 위해서 즉시 강제한다. 이것은 output[n] 변수에 SETBIT 또는 CLRBIT를 수행한 후에 사용될 것이다. 그리고 물리적인 출

력은 즉시 변경될 것이다.( I/O refresh 시간지연에 영향을 받

을 수 있다.) 그렇지 않고, 그 물리적인 출력은 일단 매 ladder 논리 스캔의 끝에서 발생하는 정상적인 refresh 사이

클 동안 갱신될 것이다.

이것은 비상시동안 로드를 막는 것과 같은 동작을 즉시 요

청할 때, 유용할 것이다. 이 명령은 주로 인터럽트 CusFn에 의해 사용될 것이다.

REM (또는 ') 구문

Purpose : 프로그램안에 주석을 허용한다. REM 구문다음에 텍스트는 라인의 끝까지 컴파일하는 동안에 무시될 것이다. REM 구

문을 생략하여 사용하길 원한다면 어퍼스트로피(‘)를 사용한

다.

Examples : REM Waiting for the right time to turn on ' This is also a remark line.

RESET

Purpose : CusFn하의 PLC의 리셋을 소프트웨어적으로 수행하기 위한 함수이다. 모든 변수들은 0으로 초기화되며, 비활성화

되고, DAC, PWM와 같은 하드웨어적인 출력은 모두 OFF된

다. 이 효과는 ladder논리에서 마스터 리셋[MaRST] 함수와 같은 동작을 하게된다. 첫번째 스캔 비트(1st.Scan)는 또한 한번의 스캔 시간동안에 ON될 것이다.

그러나, 만약 그 프로그램이 CusFn 에서 어떤 루프(WHILE, FOR-NEXT와 같은)에서 프로그램이 죽는다면, [MaRST]함수

를 담고있는 ladder 단계를 스캔하기위한 기회가 없으로모 ladder 프로그램이 그러한 곤경으로부터 빠져나올 수 없다. 만약 이 명령이 인터럽트 서비스 함수에 의해서 쓰여진다면, 인터럽트 함수가 PLC를 dead loop와 reset 을 인터럽트 할 수 있을 때 dead loop를 빠져나갈 수 있는 가능성이 있다.

165

Page 166: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

RETURN

Purpose : 무조건 현재 CusFn의 실행을 종료하고, 호출자에 반환

한다.(ladder 프로그램 또는 CALL 명령을 실행한 다른 CusFn이다.)

만약 특별히 규정된 조건이 없다면 RETURN 구문의 쓰임

은 옵션이다. 마지막 구문이 실행된 후에, CusFn은 자동적

으로 호출자에게 반환된다.

See Also : CALL

RSHIFT i,n 구문

Purpose : 정수형 변수 i 를 1비트 오른쪽으로 시프트 하기 위한 함수

이다. I는 정수형 변수, DM[n] 또는 시스템 변수뿐만 아니라 relay[n], output[n] 등과 같아야 한다.

RSHIFT 명령은 비트 시프트를 수행하기 전에 또한 연결된 하나의 변수들을 허용한다. 파라미터 n은 i 의 위쪽으로부

터 시작되어 연결된 채널의 숫자를 지시한다. n =1변수 하

나를 포함한다.

Examples : RSHIFT relay[2],3

Comments : 릴레이 채널은 #2, #3, #4(릴레이 번호 #17~#64)는 아래 방법과 같이 연결되어 있다.

15 0 15 0 15 0

Relay[2]Relay[3]Relay[4]

RSHIFT

비트는 위쪽 채널부터 아래쪽 채널 쪽으로 시프트될 것이다 Relay[4]의 . Bit

#0은 Relay[3]의 Bit #15로 시프트될 것이다. 하위 채널 Relay[2]의 Bit #0 는 잃어버리게 될 것이다.

See Also : LSHIFT

SAVE_EEP data, addr

Purpose : 비휘발성을 위한 사용자가 정의한 EEPROM 주소 addr에

16비트 정수형 data가 저장된다. 만약 사용자가 32비트 데

이터를 저장하기를 원한다면, 하위 16비트를 일단 저장한다.

전체 32비트 데이터를 저장하기 위해서 GETHIGH16( )함수

166

Page 167: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

를 사용하여 상위 16비트를 저장한다. 그리고 2개의 분리된 위치에 하위 16비트를 저장한다.

data - 16-bit 정수형 상수나 변수가 될 것이다. addr - EEPROM 주소. 실제 PLC는 공간이 거의 없다.

사용자의 PLC의 매뉴얼을 참고한다.

Example : save_EEP relay[1],100

See Also : LOAD_EEP( ), GETHIGH16( ), SETHIGH16, LOAD_EEP$( ) and SAVE_EEP$

* SAVE_EEP$ strdata, addr * Applicable only to PLC with firmware r44 or higher

Purpose : 비휘발성 저장공간인 사용자가 정의한 EEPROM 주소 addr에서 문자열 strdata를 저장하는 함수이다.

stringdata - 어떤 문자열 상수나 변수가 될 것이다. addr - EEPROM 주소 (1,2,3…). space. EEPROM 의

공간은 PLC의 메뉴얼을 참조한다.

Example : save_EEP$ A$,3 Comments : A$의 내용은 EEPROM 데이터의 문자열 공간인 #3 저장

한다.

See Also : LOAD_EEP$( )

167

Page 168: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Save_EEP$ Implementation on M+ PLC

Save_EEP$ 와 Load_EEP$는 펌웨어 개정 r44 또는 그이상을 가진 더 새로워진 M+ PLC 에서 2 개 추가된 TBASIC 명령들이다. 이 명령은 사용자가 PLC 의 비휘발성

데이터 EEPROM 영역안에 “strings”을 저장할 수 있다. 그 EEPROM 공간은 문자열

저장을 위해 40 바이트 조각으로 나뉘어 있다. 문자열의 관계없이 각 문자열

저장공간은 40 문자길이로 고정되어 있다. 그러므로 만약 “stringdata 파라미터가

40 문자보다 더 길다면, 단지 처음의 40 개의 문자들을 EEPROM 에 저장할 것이다. 남은 문자열은 삭제될 것이다.

문자열과 정수형 데이터는 실제로 EEPROM 데이터 영역을 공유한다. 그러나, 그 문자열 공간이 EEPROM 공간의 위쪽에서 아래쪽으로 할당된다. 그 정수형 공간이 EEPROM 공간의 아래부터 할당되면서 위쪽으로 올라간다. 이런 실행은 각각의 다른영역 위로 쓰여진 문자열과 정수형 데이터 없이 SAVE_EEP n, 1 과 SAVE_EEP$ x$, 1 둘다 허용한다. 그러나, 주소가 어떤 지점보다 더욱 커질 때, 그 정수형과 문자열 데이터 공간은 각각의 다른 공간에 덮어써질 수 있다. 그러므로 이러한 일이 일어나지 않도록 주의하는 것은 전적으로 프로그래머의 책임이다.

정수형 데이터를 위한 전체 EEPROM 공간= N words (16 bit).전체 데이터 EEPROM 공간= 2N 바이트(bytes) => 문자형 EEPROM 공간의 최대 숫자= 2N/40 (우수리를 잘라버리고)

하나의 공간 형의 최대 상위 리미트를 결정하기 위해서, 만약 사용자가 다른 형을 할당하기를 원한다면 사용자는 얼마나 많은 공간을 만들지 결정해야 한다. E.g. 1: 그리고 사용자가 정수형 데이터를 위해서 첫번째 510 의 영역을

사용하기를 원한다면 N = 1700 이다. 문자열 공간 가용 최대 수= (1700–500)*2/40 = 59

E.g. 2:, and you want to store 200 문자열을 저장하기를 원한다면, N = 7700 이 된다.. 정수형 공간 가용 최대 수 = (7700*2 – 200*40)/2 = 3700.

SETBAUD ch, baud_no

Purpose : PLC의 시리얼 채널 #ch의 통신 “Baud Rate”를 설정하기 위

한 함수이다.모든 M series PLC 시리얼 포트는 8 데이터 비

트, 1 스톱 비트로 정의되어 있고, 패리티가 없고 각각은 디

168

Page 169: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

폴트로 보-레이트가 미리 설정되어 있다.( 8 data bit, 1 stop bit, no parity) 그 보-레이트는 변하든 변하지 않던지간에 PLC모델에 달려있다. 각각의 시리얼 채널의 보-레이트를 표현하는baud_no를 위하여 PLC의 사용자 매뉴얼을 참고

하여 이 시리얼 포트의 baud_no의 범위를 산정한다.

. “Host link”의 보-레이트를 프로그래밍할 때, 주의해야 한다. 왜냐하면 만약 잘못된 보(boud)값이 세팅된다면, 그 호스트 PC는 그것과 통신할 수 없을 수도 있다. 만약 이런 일이 발생한다면 그것의 하드웨어 스위치를 사용하여 PLC를 리

셋스키고 올바른 세팅을 가진 프로그램을 다시 로드해야 다.

Examples : SETBAUD 3,3 ‘ Set serial port #3 to 9600.

SETBIT v,n

Purpose : 정수형 변수 v의 비트 #n를 1로 세트하기 위한 함수이다. n은 0~15까지 값을 갖는 정수형 변수나 상수이다. V는

relay[n], output[n], 등과 같은 정수형 변수 또는 시스템변수

일 수 있다. 그러나 만약 v는 32비트 정수라면, SETBIT 단

지 하위 16비트로 처리될 것이다.

디지털 전기적 변환에 따르면, 16비트 정수형 변수의 비트 0은 최하위 비트이고, 비트 15는 최상위 비트이다.(가장왼

쪽의 비트) 가장빠른 방법은 비트의 위치를 찾는 것이다. 그리고 I/O 변수는 그것의 I/O 테이블을 열어서 “CH:BIT” 칼럼에서 체크하는 것이다. 9보다 큰 수는 16진수 A~F에 의해서 표현된다.

Examples : SETBIT output[2],11

Comments : 출력 #28은 ON될 것이다, (출력 채널 #2의 비트 #11 = Output #17 +11 = 28)

See Also : CLRBIT, TESTBIT( )

SetCtrSV n, value SetTimerSV n, value

Purpose : ) Counter #n 또는 Timer #n의 value에서 Set Value (S.V,)를 변경하기 위한 함수이다. 이 구문은 소스 프로그램의 변

경없이 PLC의 내부 타이머와 카운터들의 S.V.값을 수정하

169

Page 170: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

기 위하여 사용자에게 허용된다. TABSIC함수는 이 내부적

인 timers/counter들의 SV를 수정하여 디지털 또는 아날라

그 입력의 효과적으로 쉽게 쓸 수 있도록 해준다. 그 새로

운 S.V는 또한 프로그램 EEPROM안에 저장된다. 그러므로 날아가지 않는다.(샘플 프로그램인 “set_TCSV.PC4”를 참조

한다.)

n 은1 ~ 128사이의 값이다.. value 는0 ~ 9999 사이의 값이다.

Examples : SetCtrSV 10,1234 SetTimerSV 3, GetTimerSV(3)+10

Comments : Counter #10 의 S.V.는 1234이다. : Timer #3의 S.V는 10씩 증가할 것이다.

Related : 타이머와 카운터의 present values (P.V.)는 “TimerPV[n]” & “CtrPV[n]”에 의해서 직접쓰거나 읽을 수 있다. 그러나 Set Value는 단지 두개의 함수에 의해서 변경만 가능하다.

See Also : GetCtrSV( ), GetTimerSV( )

SETDAC n, x 구문

Purpose : 수식 x의 16비트 정수형 결과값을 가진PLC의 DAC(Digital-to-Analog Converter) 의 채널#n을 세팅하는 함

수이다. N은 1~16사이의 값이어야 한다. 일단 세팅하면,

DAC 채널은 같은 채널에서 다음 SETDAC 구문이 실행될 때까지 그 값을 가지고 있다.

Examples : SETDAC 5,A+B*16

Comments : DAC 채널 #5는 A+B*16의 값을 세팅한다. 런-타임 에러(run- time error)는 만약 n이 1보다 작거나 16보다 클 경우에 발생할 것이다. 실제 DAC 채널의 번호는 PLC의 모델에 따라서 사용이 달라질 수 있다.

SETHIGH16 v, data

Purpose : .32비트 정수형 변수의 상위 16비트에 data값을 할당한다.

v 의 하위 16비트는 영향받지 않는다. 이것은 EEPROM 또

는DM[n]둘 중의 하나로부터 얻은 16비트 데이터 값을 이용

하여 32비트 정수 데이터의 값을 설계할 때 사용된다.

Examples : A = DM[2] SETHIGH16 A,DM[1]

See Also : GETHIGH16( )

SETIO 라벨이름 -- CLRIO 명령의 정의를 참고한다.

170

Page 171: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

SETLCD n, offset, x$

Purpose : 알파벳이 내장된 LCD 또는 VRF(Vacuum Fluorescent Display)의 라인 #n에서 문자열 수식 x$를 디스플레이하기

위한 함수이다. x$는 ‘+’ 연산자를 사용하여 다양한 문자열

의 연속적으로 쓸 수 있다.(예 “Temp =”+STR$(A,3)+CHR$(223)+” C”) 정수들은 이 함수에 의해서 적용되는 STR$( ) 또는 HEX$( )함수를 사용하여 문자열로 변환될 것이다.

특별한 경우: 만약n =0, 문자열 x$는 커서를 ON/OFF또는 화면을 클리어하는 것과 같은 LCD 설정을 해줄 수 있는 LCD의“Instruction-Register”이 보내어 질 것이다. (더 자세한 내용은 LCD 매뉴얼을 참조한다.)

파라미터 offset = 1 에서 40 은 사용자가 offsetth 위치로부

터 시작되는 문자열 x$을 보내도록 허용할 것이다. 단지 x$에 의해서 일어나는 그 문자들의 위치는 디스플레이에

써질 것이다. 다스플레이의 다른 문자들은 영향받지 않고

그대로 유지할 것이다.

PLC는 40글자씩 4줄의 알파벳을 디스플레이할 수 있는 LCD를 지원한다. 만약 그 디스플레이가 더 적은 글자와 라

인을 가지고 있다면, 라인 또는 문자들은 PLC에서 무시될 것이다. 일단 셋되면, LCD는 같은 라인과 같은offset이 다음 SETLCD 구문에서 실행될 때까지 그 값들을 저장하고 있을 것이다. TRiLOGI 시뮬레이터는, SETLCD의 결과 값이 특수

한 변수들을 보는 창(Special Variables view screen)에서 동

시에 확인 할수 있다.

Examples : SETLCD 1,1,"This is a 1x20 LCD Display"

SETLED n, m, value

Purpose : PLC에 내장된 7-segment LED 에 정수 값으로 디스플레이

하기 위한 함수이다. Nth 디지트(disit)와 디지트들의 m 번

호를 점유하는 것으로부터 시작되는 것을 디스플레이한다..

만약 m에 의해서 상술되는 것보다 더 적은 디지트를 점유

한다면 오른쪽으로 증가되어 0에 이르게 될 것이다.

그러나 m은 1보다 더 적다면, value는 숫자값이라기 보다8

비트 ASCII 문자로 간주될 것이다. 특별한 심볼은 만약

171

Page 172: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

LED 드라이버가 일치하는 ASCII 문자를 디스플레이 할 수

있다면 LED패널에 표시하게 될 것이다.

n은 1~16사이의 값이다. 그 디지트 위치는 왼쪽에서 오른

쪽으로 카운트될 것이다. 가장오른쪽의 LED 디지트는 #1이

다. TRiLOGI는 16개에 이르는 LED 디지트를 지원한다. PLC의 실제 LED의 번호는 0~16으로 다양하다. Value는

16 또는 32비트 정수형이다. 일단 셋되면 그 LED는 다음

SETLED구문이 나오기 전까지 그 세팅된 값을 저장하여 디

스플레이하고 있을 것이다. TRiLOGI 시뮬레이터에서, SETLED의 결과값은 특별한 변수 창(Special Variables screen)에 함께 나타날 것이다. 시뮬레이션 모드인동안에 <V>키를 누려면 볼 수 있다.

Examples : SETLED 5,4,89

Comments : LED digit는 #5 에서 #8이며 (왼쪽에서 오른쪽으로 카운트되는) 0089를 디스플레이할 것이다.

SETPASSWORD string Purpose : Execution of “PW” host link command without any string will put

the password lock back in force to prevent unauthorized access. 이 구문이 실행될 때, PLC는 SETPASSWORD 명령에 정의된 같은 문자열 “xxxx…xx”(19글자 이하)를 포함하는 “PWxxxx…xx”명령을 제외한 어떤 호스트 링크(host link) 명령

이 전송하기 위해서 적절히 응답하지 못할 것이다. 모든 다

른 명령은 “password error” 상태를 지시하는 “PWER”응답을 받을 것이다. 일단 올바른 password는 PLC가 정상적인 동작

을 할 수 있도록 받아들여지게 되면, 모든 호스트 링크 명령

에 응답할 것이다.

Example : SETPASSWORD “I love TRiLOGI”

TRiLOGI 소프트웨어를 사용할 때, 만약 그것이 password가 걸려있는 PLC와 만난다면 자동적으로 사용자가 password를 입력하게 될 것이다. 그 password가 걸려있는 PLC는 예전 버전의 TRiLOGI에 의해서 접근은 불가능할 것이다.

Comments : .이 특징은 주로 자동응답 모뎀과 연결된 PLC를 보호하기 위하여 쓰여진다. 어떠한 Password 보호가 없다면 TLServer 또는 TL41.exe를 가지고 다이얼할 수 있고, 심각한 보안 문제들을 PLC 전체를 통제할 수 있다. PLC 소프트웨어하에서 사용자는 또한 주기적으로 재정비하기 위한 타이머를 쓰게 될 수도 있다. 사용자는 또한 날짜의 다른 시간에 다른 password를 사용할 수 있다. 또는 가장 큰 보안을 제공하기 위해서 password를 로테이션할 수 있다.

172

Page 173: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

SETPROTOCOL ch, mode Purpose: T100M+ series PLC는 자동적으로 통신 프로토콜의 형식을 감

지한다. 그리고 그에 따라서 응답한다. 그러나 사용자가 프로

토콜 형식을 고정한다면, 응답하기 전에 그와 같이 프로토콜 형식을 체크할 필요는 없다. 이 명령은 또는 “No Protocol”로 정의된 PLC가 지원되는 프로토콜중의 하나와 같이 나타나는 데이터에 응답하지 않기 위해서 지원된다. 이것은 PLC 시리

얼 포트가 INCOMM 과 INPUT$ 그리고 사용자는 어떤 데이

터에 대해서 응답하지 않기를 원하는 순수하게 들어오는 데

이터를 받기 위해서 사용되는 어떤 어플리케이션에서 중요하

게 쓰여질 것이다. 이것은 또한 존재하는 프로토콜과 사용자 자신의 통신 프로토콜이 충돌하지 않게 사용하는데 유용하게 쓰일 수 있다.

ch = 1, 2 or 3 (COMM port number)

mode = 0 – 자동 감지 (default mode) 1 - RTU mode로 고정 2 - EMIT mode로 고정 3 - MODBUS ASCII mode로 고정 4 - OMRON C20H protocol mode로 고정 5 - NATIVE host link command mode로 고정 10- No protocol. (사용자 자신의 custcom 프로

토콜을 만들기 위해서 사용한다.) IMPORTANT: .만약 사용자가 “Native” (mode=5) 또는 “Auto” (mode=0)보

다 다른 설정을 하고 싶다면 TRiLOGI로부터 더 이상 명령

에 응답하지 않고, 시리얼 이TRiLOGI를 사용하여 어떤 통

신을 수행하려고 할 때, 사용자는 “Communication Errors를 받게 될 것이다. 사용자는 여전히 영향받지 않는 다른 시

리얼 포트를 사용할 수 있다.(예 : COMM3, RS485)

시리얼 포트를 가진 통신을 다시 회복하기 위해서 사용자

는 모드 0~5까지 세팅할 수 있는 다른 SETPROTOCOL 함수를 실행해야 한다. (프로그램에서 세팅하게 된다.) 또는 사용자는 전원을 OFF했다가 다시 ON 시켜서 시스템을 초

기화해야 한다. 만약 사용자가1ST.Scan을 사용하여 SETPROTOCOL을 실행시킨다면, 나중에 사용자는 SETPROTOCOL 명령을 실행하지 않고 TRiLOGI 를 사용

173

Page 174: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

하여 PLC의 제어를 회복할 수 있도록 하기 위해 전원을 다시 투입하기 전에 DIP switch #4을 ON시켜야 한다.

SETPWM n, x, y

Purpose : 파라미터 y에 의해서 주어진 주파수(Hz)와 (x/100 %)에 의

해서 표현되는 듀티 (duty)사이클을 가진 PWM 출력의 채널 n을 세팅하기 위한 함수이다.

n은 1~8사이의 값을 갖는다. 일단 셋되면, PWM 채널은 다

음 SETPWM 구문이 같은 채널에 대해서 실행될 때까지 그 세팅 값을 저장하고 있다. x는 0~10000의 값을 갖는다. 만

약 x가 10000보다 더 크지않다면, 듀티(duty) 사이클은

100%가 될 것이다.

Examples : SETPWM 1,4995,2000

Comments : PWM 채널 #1은 0.01%의 분해능을 가진 PWM에 49.95%듀티 사이클로 수행할 것이다. 실제 분해능은 PLC의 PWM 분해능에 달려있다. 그 PWM 주파수는 2000Hz 또는 거의 비슷한 값이 될 것이다.

가장 큰 분해능은 10비트 PWM으로 1/1024 = 0.1 %이 된다. 이것은 PWM 예제에서 50%대를 선회하는 값이라는 의미이다. 보다 자세하고 실제적인 분해능은 PLC의 매뉴얼을 참조한다.

SETSYSTEM n, data Purpose: 어떤 디폴트(default) 시스템의 파라미터값을 변경할 때 사

용하는 함수이다. 현재 정의된 데이터에 영향을 받는 값은 시리얼 통신 명령이다. 더많은 파라미터는 앞으로 계속 정

의할 것이다.

n data

1 NETCMD$ 또는 READMODBUS/ WRITEMODBUS 명령을 실행한 후에, 슬레이브

(slave) 컨트롤러로부터 응답하기 위해 대기하는

동안의 wait state(multiple of 0.15s)의 번호(#). 디

폴트(default) 번호: wait state = 1.

예: SETSYSTEM 1, 3 PLC는 유용한 응답 돌아

올 동안 3 x 150ms = 450 ms 를 대기한다.

174

Page 175: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

2 만약 NETCMD$ 또는 READMODBUS/ WRITEMODBUS 슬레이브(slave) 컨트롤러로부터

유용한 응답을 얻는 것을 실패하게 되면 다시 시

도하게 되는 번호(#) Default = 2. (전체 3번 시도)

예: SETSYSTEM 2,5

PLC는 만약 슬레이브와 통신하는 것이 실패한다

면 5번까지 재시도한다. 만약 재시도 횟수가 증가

한다면 더 이상 기다리지 말고 시스템을 체크한

다.

3

0 - 호스트링크 또는 MODBUS 명령들은 호스

트컴퓨터 또는 다른 PLC로부터 가능한한 빨리 응답한다.

1 - 호스트링크 또는 MODBUS 명령들은 호스트

컴퓨터 또는 다른 PLC로부터 최소한 0.01s (10ms)경과를 허용한다. 이 지연은

auto-switch 타입 RS485 컨버터에 시간을 줌

으로써 원활한 통신을 위해서 필요하다.

STATUS (n)

Purpose : 다양한 시스템 동작의 상태를 반환해 준다.

함수 반환 값 STATUS (1) 0 - Normal power on reset

1 - Reset by Watch Dog Timer (WDT) STATUS (2) 0 - READMODBUS or WRITEMODBUS

failure 1 - READMODBUS or WRITEMODBUS successful

STATUS(8) PLC’s ID address stored in EEPROM for host communication

Examples : IF STATUS(2) ‘ MODBUS READ/WRITE OK … ELSE ‘ MODBUS READ/WRITE failed … ENDIF

175

Page 176: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

STEPCOUNT (ch)

Purpose : 스텝 모터 컨트롤러가 펄스를 출력하는 동안, 이 함수는 마

지막에 “STEPMOVE”명령이 실행된 후에 스텝모터 채널 #ch에 보내진 펄스의 개수를 모니터링할 때 쓰여질 수 있

다. 그러므로 이 명령은 상대적인 스텝의 개수를 반환한다.

이 함수는 만약 우리가 스텝모터를 구동하기 위한 센서를 사용한다면, 부분의 물리적인 크기를 측정하기 위해서 또한 쓰여질 수 있다. 에지가 검출될 때, 스텝모터 중지하기 위해

STEPSTOP 명령과 인터럽트 입력을 사용한다.그 물리적인 크기는 스텝모터는 하나의 에지에서 다른 에지가 운행되는 스텝의 개수를 사용하여 계산한다. 그 중심점은 쉽게 그와 같은 데이터를 이용하여 결정될 수 있다.

176

Page 177: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

STEPCOUNTABS (ch)

Purpose : 스텝 모터 #ch의 절대 위치를 반환해준다. 이 명령은 만약 STEPHOME 명령이 실행되고, 더 이상 스텝모터가 움직이

지 않을 때 0의 값을 반환해 준다.

STEPHOME ch

Purpose : 스텝모터 #ch의 현재 위치 카운터를 0으로 세팅하기 위해 쓰여진다. 이것은 스텝모터의 새로운 원점을 지시해줄 수 있

다. 이 명령은 단지 스텝모터가 특정한 위치가 원점으로써 도달했을 경우에 실행된다. 모든 STEPMOVEABS 명령은 순

서적으로 정의된 원점에서 상대적으로 실행될 것이다.

STEPMOVE ch, count, r

Purpose : 펄스의 개수 count를 출력하기 위한 PLC에 내장된 스텝모

터 펄스 발생기 채널 #ch을 활성화시키기 위한 함수이다.

이 모션을 위한 속도와 가속도 파라미터은 첫번째

STEPMOVE 함수가 실행되기 전에 최소한 한번은 실행되

어야 하는 같은 채널 #ch의 STEPSPEED에 의해서 정의될 수 있다. STEPMOVE 명령이 실행된 후에, PLC 하드웨어는 실제 펄스 발생 동작을 제외할 것이다. 그 사용자 프로그램

은 비록 그 펄스 발생이 아직 끝나지 않았다 할지라도 계속

될 것이다. 그 내부 릴레이 #r는 아래와 같이 펄스 발생의

상태로 간주하는 ladder 프로그램의 다른 부분에 신호를 주

는데 쓰여질 것이다.

STEPMOVE명령이 처음에 실행될 때, 그 내부 릴레이 #r는

첫번째 펄스가 보내지기 전에 클리어될 것이다. 그 움직임

(모든 펄스가 거의 보내어졌을 때)이 완료된 후에 릴레이

#r은 셋될 것이다.

ch는 1~8사이의 값이다. 사용자가 프로그램에 의해서 스텝

모터를 구동하기 위해 출력하는 펄스의 개수 1 에서 +231 .(i.e. 2,147,483,647)스텝을 표현하는 Count는 32비트

정수이다. Count는 또한 A~Z의 정수형 변수일 수 있다. 그

러나 사용자는 스텝의 개수가 16비트정수로 표현할 수 있

는 범위라면(1 에서 32,767스텝) DM[n]과 같은 변수를 사용

할 수 있다.

177

Page 178: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Speed (pps) Stepper pulse output speed trajectory

If the total number ofsteps to move is lessthan 2 timesaccsteps, Desiredspeed will not bereached.

Desired speed( )

No. of Steps

minimumpps

accsteps accstepsTotal steps - 2xaccsteps

펄스 발생은 다른 CusFn에서 하드웨어적으로 리미트 스위

치를 칠 경우, STEPSTOP에 의해서 인터럽트되어져 즉시 정지되어야 한다.

Important: 스텝 채널이 이미 활성화되어 있을 때, 같은 채널은 PLC에

의해서 무시될 때 STEPMOVE 명령은 다시 실행되어야 한

다. 이 채널에서 STEPMOVE 명령의 재실행은 채널의 펄스 동작이 STEPSTOP에 의해서 중지되거나 스스로에 의해서 완료되어진 후에 단지 효과가 있다.

TRiLOGI 시뮬레이션 모드에 있을 때, STEPMOVE 명령은

모션경로의 모든 파라미터를 보여주는 팝업창이 뜰 것이다. Examples : STEPMOVE 1,5000,10

Comments : . 채널 1이 5000펄스를 보내고, 모션의 마지막에 릴레이 #10이 ON될 것이다. See Also : STEPMOVEABS, STEPCOUNT( ), STEPCOUNTABS( ),

STEPSPEED, STEPSTOP, STEPHOME

STEPMOVEABS ch, position, r

Purpose : 이 새로운 명령은 사용자가 스텝모터를 구동하기 위해서 #ch에 position 파라미터는 절대위치를 지시할 것이다. 구동

이 끝나면 릴레이 # r는 ON될 것이다. 위치는 -231 에서 +231 사이의 값이다. (약: ±2 x 109) 그 절대

위치는 “HOME” 위치로부터 마지막 위치까지 계산된 값이다. (HOME 위치는 STEPHOME 명령이 실행될 때 셋된다.) 가감

178

Page 179: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

속 프로파일은 원래 명령세트에서 STEPSPEED에 의해서 결

정된다. 이 명령은 현재의 위치에서 새로운 위치로 스텝모터를 움직

이는데 필요한 펄스와 방향 자동적으로 계산하여 준다. 현재 위치는 STEPCOUNTABS( ) 함수에 의해서 항상 결정될 것

이다/ 일단 STEPMOVEABS 명령이 실행되면, 이 명령의 재실행

또는 STEPMOVE 명령은 전체 모션이 완전히 실행되거나 STEPSTOP 명령에 의해서 중지될 때까지 아무런 영향을 주

지 않는다. See Also : STEPCOUNTABS, STEPHOME , STEPSPEED,

STEPMOVE, STEPSTOP, STEPCOUNT

STEPSTOP ch

Purpose : To abort a stepper channel #ch which is in motion due to exceptional circumstances.

Examples : STEPSTOP 2

Important : Motion aborted by STEPSTOP command will not trigger the end-motion relay #r specified in the STEPMOVE command.

See Also : STEPCOUNT( ), STEPSPEED, STEPMOVE

STEPSPEED ch, pps, acc

Purpose : PLC의 스텝 모터의 모션 컨트롤러(pulse-generator) 채널

#ch를 위한 속도 pps와acc를 세팅하기 위한 함수이다.

ch는 1~8의 값을 반환한다. 속도 pps는 펄스 발생기에 의

해서 발생되는 pulse per second (pps) 출력이다. 가속도acc는 완전히 정지하기 위한 전체 속도로부터 스텝의 개수와

정지로부터 전체 가감속에 이르기 위한 스텝의 전체 개수를

결정한다.그 스텝 모터는 STEPMOVE 가 실행될 때, 이 파

라미터에 따라서 속도 궤적을 계산하고 실행한다. STEPSPEED 명령은 펄스 발생을 제어하기 위한 어떤 순차

적인 STEPMOVE를 실행하기 전에 최소한 한번은 실행되

어야 한다. 그 정의된 파라미터는 다른 STEPSPEED구문은 같은 스텝 채널이 다시 실행되어 동작할 때까지 기억하고

179

Page 180: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

있을 것이다.

Examples : STEPSPEED 2,2000,20

Comments : 스텝모터 컨트롤러 채널 #2는 STEPMOVE명령이 실행될 떄 2000pps의 펄스를 출력하도록 설정되었다. 그것은 직선 가을 20 ~2000에 이르는 가속을 선형적으로 따르게 된다. 이것은 가속 계산식이다.

a = V = 2S

2 2000 = 100,000 pulse/s2 2x20

2

STR$(n) STR$ (n, d)

Purpose : 수치 인자 n의 10진 값을 표현하는 문자열을 반환한다. 만

약 두번째 형식이 사용된다면, 이 함수는 문자의 ‘d’숫자 문

자열을 반환할 것이다.

Examples : A$ = STR$(-1234) B$ = STR$(-1234,7)

Comments : A$= "-1234" , B$ =“-001234”

STRCMP(A$, B$)

Purpose : 두개의 문자열 수식A$ 와 B$를 비교하는 명령이다. 만약 A$ 와 B$의 값이 같다면, STRCMP는 0을 반환할 것이다. 만약 A$이 B$보다 더 작다면(ASCII테이블 순서에서) 음의 값을 반환할 것이다. 반대의 경우엔 양의 값이 반환될 것이

다.

Examples : IF STRCMP$(A$, B$)=0 THEN STEPMOVE 1,1000,1 ENDIF

Comments : 만약 A$ 와B$ 이 같다면 스텝모터 @1을 ON시킨다.

STRLWR$(A$)

Purpose : A$의 문자열을 모두 소문자로 바꿔서 반환하여 주는 함수

이다.

Examples : B$ = STRLWR$(A$)+Z$ C$ = STRLWR$(C$)

Comments : .두번째 예제는 어떻게 소문자로 변환되는지 보여준다.

180

Page 181: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

181

Page 182: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

STRUPR$(A$)

Purpose : A$의 문자열을 모두 대문자로 바꿔서 반환하여 주는 함수

이다

Examples : B$ = STRUPR$(A$) C$ = STRUPR$(C$)

Comments : 두번째 예제는 어떻게 대문자로 변환되는지 보여준다.

TESTBIT (v, n)

Purpose : 변수 v의 비트 #n의 논리 상태를 반환해 주는 함수이다.이

함수는 만약 비트가 1이면 1을 반환하여주고 , 반대이면 0

을 반환할 것이다.

n는 0~15의 사이의 정수형 변수이다. v는 어떤 정수형 변수

일 수있다. 만약 v가 32비트 정수형이라면, TESTBIT는 하

위 16비트의 값만 비교하게 된다. 비트의 위치를 빨리 찾는 방법은 I/O변수의 인덱스를 I/O테이블에서 찾아서 “CH:BIT” 칼럼을 체크해보는 것이다. 9를 넘어서는 숫자는 16진수형 A~F로 표현될 것이다.

Examples : TESTBIT (Input[2],3)

Comments : To test 입력 #20이 ON 인지 아닌지 테스트하기 위한 것이다. (Input channel #2 bit #3 = Input 17 +3 = 20)

See Also : SETBIT, CLRBIT

TESTIO (labelname) -- CLRIO 명령의 정의를 참조한다.

TOGGLEIO labelname -- CLRIO 명령의 정의를 참조한다. command

VAL(x$)

Purpose : 인자 x$에서 10진숫자가 포함된 값을 반환하여 주는 함수

이다.

Examples : B = VAL("123")*100

Comments : B = 12300

182

Page 183: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

183

Page 184: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

WHILE express on .... ENDWHILE i

Purpose : 주어진 조건이 참인 동안 루프안에서 구문의 연속적으로 실

행하기 위한 명령이다.

Syntax : WHILE expression . . . . . .

ENDWHILE

WHILE구문과 만났을 때, 그 수식은 만약 결과가 참이면 ENDWHILE을 만날 때까지 수식들을 실행할 것이다.그에 따라서, WHILE구문으로 다시 돌아가서 실행하고 다시 그 수식을 참인지 평가한다.그 루프는 수식이 거짓이 될 때까

지 계속해서 실행하게 될 것이다.

WHILE루프는 무한루프가 되지 않도록 주의해야 한다. 만약 무한루프가 된다면 PLC는 무한루프를 실행하기 때문에 마

치 죽어있는 것과 같이 아무런 동작도 하지 못할 것이다. TRiLOGI 시뮬레이터는 만약 루프가 과도하게 큰숫자의 루

프가 돌게 된다면 이러한 상황을 감지하여 경고 메시지를 줄 것이다.

Examples : WHILE S = 1 IF INPUT[1] & &H0002: S = 0 : ENDWHILE ENDWHILE

Comments : 실행은 단지 input #2가 ON이될 때 빠져나오게 될 것이다. WHILE 루프는 안겨있다.; WHILE 루프는 다른 WHILE 루프의 문맥 안에 위치하고 있다. 각각의 루프는 다른 루프의 끝을 알 수 있도록 ENDWHILE를 갖는다.

WRITEMODBUS ch, DeviceID, address data , Purpose : MODBUS ASCII 프로토콜을 사용하는 MODBUS ASCII 장치

에 16비트 data를 자동적으로 쓴다. 그 통신 보-레이트

(boad-rate) SETBAUD 명령에 의해서 바뀌지 않았다면 디폴

트 보-레이트로 설정되어 있을 것이다. ch - PLC COMM 포트 번호(1-8) DeviceID - MODBUS 장치의 Device ID (1 to 255) address - MODBUS 장치에서 홀딩 레지스터의

Zero-offset 주소 data - MODBUS장치에 쓰여진 16비트 데이터

184

Page 185: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Example : WRITEMODBUS 3, 8, 1000, 1234 Comments : 데이터 1234는 홀딩 레지스터 옵셋 주소1000에서 ID=08을 가진 MODBUS 장

치에 쓰여질 것이다.( MODBUS 관례에서 이것은 홀딩 레지스터 #41001를 말한다.)

그 명령은 자동적으로 올바른 LRC와 슬레이브(slave) 주소를 위해서 슬레이브

(slave)로부터 받은 문자열 응답을 체크한다. 동작의 상태는 STATUS(2)함수를 사용자 프로그램에 의해서 테스트하여 체크할 수 있다. 만약 어떤 에러가 있거나 또는슬레이브(slave) 장치가 발견

되지 않는다면 0을 반환할 것이다. See Also : READMODBUS( ), STATUS(2), NETCMD$( )

* WRITEMB2 ch, ID, addr, var, count * Applicable only to M+ firmware r44 or higher

Purpose : WRITEMODBUS 명령의 다중 워드 버전으로써 이것을 여긴

다. Parameters : ch - PLC COMM 포트 번호

(ASCII를 사용하는 1~8 또는 Modbus RTU를 사

용하는 11~18). ID - MODBUS 슬레이브(slave) 장치의 Device ID (1

에서 255) addr - MODBUS 슬레이브(slave)장치에서 홀딩 레지스

터의 Zero-offset 주소. 0 = 40001로부터 시작한

다.

var - 전송된 마스터의 데이터시작 변수(DM 또는 어

떤 시스템 변수) count - 전송하기 위한 변수의 번호 (M+ PLC 에서 max

=16).

Example : WRITEMB2 13,5,101,DM[10],8

Comments : PLC는 ID = 05를 가진 MODBUS 슬레이브(slave) 장치에 DM[11] 에서

DM[17]로부터의 8워드를 쓰기 위하여 그것의 Comm 포트 #3에 의해서 MODBUS RTU 프로토콜을 사용할 것이다. 그리고 그것의 레지스터 옵셋 주소는 101 에서 108이다.( MODBUS 주소로 말하자면 홀딩레지스터의 40102에서 #40109이다.)

올바른 슬레이브(slave)주소 CRC16를 위해서 그 슬레이브

185

Page 186: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

장치로부터 문자열 응답을 받아 자동적으로 체크한다. READMODBUS 명령과 같이, 이 동작의 상태는 사용자의 프로그램에 의해서 STATUS(2)함수를 테스트하여 체크할 수 있다.

See Also : READMB2, WRITEMODBUS, STATUS(2)

186

Page 187: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

부록 1 : 어플리케이션 과 프로그래밍 예제

TRiLOGI Version 5.x 사용자 중요 수칙 I. 1. 래더 논리수행과정의 이해

모든 산업용 PLC 와 같이 M-series PLC 의 CPU 는 먼저 물리적 입력의 상태를 체크하고 메모리에 복사한다.래더 논리를 스캔하는 동안, 실제 물리적 입력상태(인터럽트 입력 제외)는 무시된다.

이 CPU 는 래더 프로그램을 수행하기 위해서 입력상태를 메모리에 복사해서 사용한다. 이 CPU는 맨 위의 논리단계에서 최하위 단계로 프로그램을 수

행한다. CPU는 정상적으로 custom함수가 끝날 때, 나머지 래더 프로그

램의 스캔을 계속한다. 그러므로 래더 프로그램의 래더 단계의 명령은 마치 프로그램 수행자의 효과를 가질 수 있다.

CPU가 CusFn또는 δCusF가 활성화되는 래더 단계에 이르면

custom함수가 실행된다. 그 CPU는 정상적으로 custiom 함수가 끝나면 래더 프로그램의 나머지 프로그램을 다시 스캔하게 된다. 그러므로 어떤 래더 프로그램에 위치된 래더 단계 명령은 프로그

램 수행자 같은 효과를 가질 수 있다. 프로그램 실행의 결과로 상태가 변화한 출력비트는 프로그램 스

캔이 끝나면 물리적인 출력이 갱신될 것이다. 한번의 스캔시간은 3단계(STEP)를 실행하기 위한 시간으로 정의

된다. (3단계): 물리적 입력의 읽기, 프로그램 실행, 물리적 출력

의 갱신) CPU는 이 3단계를 연속적으로 반복하게 된다.

그러므로, TBASIC에서 INPUT[n]과 OUTPUT[n] 변수들은 실제 PLC의 물리적 I/O가 아니라는 것을 유념하는 것이 중요하다. 다

만 실제 I/O의 메모리 표현은 I/O갱신 사이클동안만 갱신된다. 물

리적 입력 논리상태는 논리상태를 갖고있는 입력 스캔과 물리적 출력이 출력상태를 갱신하는 동안 OUTPUT[n] 변수들에 포함되

고INPUT[n]변수들에 복사 되어진다. 그러므로, 전통적인 BASIC 프로그래머가 범하기 쉬운 오류 중

하나는 아래와 같이 TBASIC에서INPUT[n]변수의 변화를 감시하

려는 것이다.

187

Page 188: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

WHILE INPUT[1] = 0 ..ENDWHILE

이것은 물리적 입력(#1 ~ #8) 실제 논리 상태와 관계없이

custom 함수가 실행되는 동안 INPUT[1]은 결코 변화하지 않는 값이므로 무한루프의 결과를 가져올 것이다. 물리적 I/O를 갱신

을 강제하는 유일한 방법은 REFRESH 명령을 사용하는 것이지

만, 프로그램을 실행하는 도중에 물리적 I/O를 갱신하는 것은 좋

은 방법이 아니다. REFRESH 명령은 중대한 순간에 ON 또는 OFF로 즉시 변화시키는데 사용되는 것이 적절하다. 그러므로 래

더 논리 프로그램이 물리적 I/O가 갱신되어도 그것의 스캔을 끝

내게 하는 것이 중요하다. 사용자는 적정한 순간에 수행되어질 필요가 없는 래더 프로그램의 나머지를 의미하는 특수한 custom 함수 때문에 CPU를 절대 무리하게 하지 말아야 한다.

2. CusFn 와 dCusF의 차이점

이 두 형식의 custom함수의 차이를 이해하는 것은 매우 중요하

며, 일단 사용자는 마지막 섹션에서 기술된 것을 참고로 레더 논

리 스캔 프로세스가 어떻게 일어나는지 이해하기 바란다. 만약 CusFn을 사용한다면 래더 논리 프로그램의 조건이 ON인 동안 매번 스캔 할 때마다 실행될 것이다. 반면에 dCusF 은 수행조건이 OFF->ON이 될 때 한번만 동작

한다. 다시 수행되기 위해서는 반드시 수행조건이 OFF->ON가 되어야 한다. dCusF는 래더 논리의 조건이 ON일 때 매 스캔

을 되풀이 하지 않고 한번만 수행되는 수치적 결과를 원하는 대

부분의 custom함수들보다 빈번하게 사용되는 것을 쉽게 볼 수 있을 것이다. 사용자는 아래의 예제 프로그램을 실행해보면 두 형식의 custom 함수의 차이를 쉽게 이해할 수 있을 것이다.

188

Page 189: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

[δCusf] Fn_# 1 Clk1.0s

Fn_# 2 Clk1.0s

A = A+ 1 Custom Function #1

Cusfn

dCusf

B = B+ 1 Custom Function #2

시뮬레이터 프로그램을 실행시키고 <V>키를 누르면 A와B 변수가 변하는 것을 볼 수 있다. 그러면 B가 1초마다 1씩 증가하고 A는 0.5초 동안 빠른 속도로 증가하고 나머지 0.5초 동안은 멈춰있는 것을 볼 수 있을 것이다.실제 시뮬레이션 해본다면 쉽게 이해 할 수있을것이다.만약 아날로그 입력이나 RTC(real time clock)의 상

태를 주기적으로 확인하고 싶다면, 클럭 펄스(예제참조 :0.1s,1.0s등)를 사용하고dCusF을 연결해야 한다. 다른 형식의 custom함

수를 연결한다면 반주기동안 수천의 숫자가 채크되고 나머지 반

주기동안 전혀 의도하지 않은 어떤 결과가 생길 수 있다. 3.타이머 접점 갱신 프로세스

PLC의 모든 타이머 접점들은 입출력 접점과 마찬가지로 (TIM) 코일을 갖는 단계가 아니고, 래더 로직이 매번 시작될 때 일제히 갱신된다.

그래서 만약 자가리셋(self-reset)을 사용한다면, 타이머가 그것의 접점이 자가리셋(self-reset) 회로를 갖는 단계까지 래더 로직 단계

의 시작으로부터 ON이 될 것이다. 그 후 타이머 접점은 코일이 자가리셋(self-reset)되면 오픈 될 것이다. 그러므로 사용자는 그 타이머접점을 활용하는 모든 래더 단계 후에 자가리셋(self-reset) 타이머를 설치해야 된다는 것을 잊지 말아야 한다.

189

Page 190: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

T1

T1

A pulse will be sent to Out 5 periodically determined by the Set Value of timer T1

[δCusf] Out5

T1

(Out)

(TIM)

타이머 T1의 값에 의해 출력(OUT5)의 펄스주기가 결정된다.

II. TRiLOGI 예제 프로그램

TRiLOGI이 설치된 폴더에 포함된 예제프로그램 뿐만 아니라,잘 알

려진 데모가 다수 포함되어있다.

<TRiLOGI installation folder>\usr\samples>

사용자가 TRiLOGI의 File -> Open (Local Drive) 명령을 클릭하면, 프로그램 파일이 설치된 사용자 폴더를 선택할 수 있다. 일단 두개

의 사용자 폴더가 있을 것이다. 아래와 같이 “Administrator” 와

“samples”이 있다

“samples” 폴더를 열고, 확장자가 “.PC5”인 파일을 선택한다.

190

Page 191: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

“samples” 폴더 안에 샘플 프로그램과 함께 있는 하위폴더들은 MD-HMI의 사용하는데 관련된 것들이 있는 것과 같이 특정이름이

나 디바이스들에 관련된 프로그램이 저장되어 있다. 사용자가 이 예제 프로그램들의 구조가 어떻게 되어있는지 이해한다면 굉장히 큰 도움이 될 것이다. 이 프로그램의 대부분은 다른 디바이스들간

에 통신을 제외한 시뮬레이션 안에서 실행이 가능하다.

1. LCD(액정표시장치) 에 문자 출력

T100MD-1616 모델과 같은M-series PLC는 낮은 가격으로 일반적인 산업용 LCD모듈을 연결 가능한 LCD출력 포트를 지원한다. 이와 같은 PLC는 TBASIC언어를 이용하여 SETLCD구문으로 LCD구동 프로그램을 쉽게 구현할 수 있다.

실습:

1초마다 아래와 같은 메시지가 출력된다. :

Temp. Check Sitting Rm = xx oC.

ADC(1)함수에 의해 A/D #1의 값을 읽어 xx에 출력한다. A/D 최대 값은 4096이다. A/D 범위 (0 to 4096) ⇒온도 0 to 50oC

191

Page 192: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

[dCusf] Fn_# 1 Clk:1.0 s

setLCD 1,1, “Temp. Check” ‘ Display at at Column 1, Line1 setLCD 2,1, “Sitting Rm = “+ STR$( ADC(1)*50/4096, 2) +CHR$(223)+”C”

Custom Function #1

설명:

1초마다 the specia bit Clk:1.0s 에 의해서 Fn_#1을 활성화시킨다.

l

Custom 함수 #1은 ADC(1) 함수에 의해서 A/D 컨버터 #1의 값을 읽고 그 값을 온도 값으로 환산한다. 그 정수 값은 STR$함수에 의해서 2개의 문자 값으로 바뀌고,SETLCD명령에 의해서 나머지 글자들을 연결시킨다.TRiLOGI 버전5.x. 은 LCD가 탑재된 문자출력 시뮬레이션을 지원한다. 시뮬레이션 모드일 때, <V>키를 누르면 특정변수들과 LCD시뮬레이션 창에 메시지가 표시된다.

2. LCD 디스플레이를 이용한 타이머 세팅/키운터 세팅 값(S.V.)

만약 LCD를 가지고 있다면, 두 개의 푸쉬버튼 입력을 이용하여 타

이머나 카운터의 세팅 값(SV)이 변화되는 것을 볼 수 있을 것이

다..

실습:

• “Increase”푸쉬버튼을 누르면0.5초씩 타이머의SV값이 증가한다. (최대SV값은 100이하이다.)

• “Decrease” 푸쉬버튼을 누르면 0.5초씩 타이머의 SV 값이 감소

한다. • “test”버튼을 누르면 설정된 시간 동안 output #1이 ON되었다가

OFF된다.

192

Page 193: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Increase

Tim1

Out1

[δCusf] Fn_# 101

Fn_# 102 Decrease

Out1 Test

Tim1

setTimerSV 1, getTimerSV(1)-5 ‘Dec rease the c urrent SV by 5 SETLCD 1,1,”T1-SV= ”+ STR$(getTimerSV(1),4)

Custom Function #102

Z = getTimerSV(1) IF Z > 100 RETURN: ENDIF ‘ MAXIMUM 10s setTimerSV 1, Z+ 5 ‘Inc rease the c urrent SV by 5 (0.5s) SETLCD 1,1,”T1-SV= ”+ STR$(getTimerSV(1),4)

Custom Function #101

[dCusf]

[dCusf]

(OUT)

(TIM)

설명:

getTimerSV(1)함수는 현재 타이머#1의 값을 반환한다. 이 값은 CusFn #101 에서 변수 Z에 저장되지만, 타이머#1의 세팅 값이 변화되는 동안 CusFn #102에서 즉시 사용된다. 따라서 setTimerSV 구문은 타이머#1의 세팅 값이 갱신되 는 두번째 인자의 값을 사용한다.

SV값이 변하는 것은 비휘발성 EEPROM 메모리에 갱신될 것이다.그러나 EEPROM 은 100,000 에서 1,000,000 지우기/쓰기(erase-write)가 가능한 수명을 가지고 있다. 이 제한을 초과하게 되면 PLC는 읽기오류의 결과가 생길 것이다.

그러므로 절대 과도한 변화를 갖는 타이머나 카운터를 사용한 프로그램은 쓰지 말아야 한다.( 예를 들면, 프로그램의 매 스캔마다 실행되는 [CusFn]와 같은 형식과 계속해서 EEPROM을 쓰는 동작의 프로그램을 말한다.)

3. 아날로그 타이머와 같은 포텐시오미터의 사용

193

Page 194: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

PLC의 A/D 입력에 싼 가격의 포텐시오미터를 연결할 수 있고, 입

력장치의 아날로그 “설정점” 사용자가 조정 가능한 부분을 제공한

다. 스케일은 설정치의 시각적인 표시를 제공하기 위해 포텐시오미

터가 설치되어 있다.

실습:

• 포텐시오미터가 A/D #5에 연결되어 있다. 그것은 0 에서10.00 초의 시간범위를 조정할 수 있다.

• “test”입력을 누르면 포텐시오미터의 값만큼의 시간 동안 output #1은 ON된 후 OFF된다.

Test Tim1

Out1

Fn_# 10 Test

Out1

Tim1

HSTIMER 1 ‘ Define Timer # 1 as High Speed Timer (0.01s base)

TimerPV[1] = ADC(1)*1000/4096 ‘ Set the timer running with value ‘ proportional to A/D value.

Custom Function #10

[dCusf]

(OUT)

(TIM)

설명:

A/D컨버터의 분해능을 최대로 이용하기 위해서, 0~10초의 타이밍범위는 타이머가 HSTIMER명령을 사용하는 고속타이머로 정의될 때 더욱 정교하게 나눌 수 있다. 그 시간의 베이스는 지금 0.01초 이다. 이것은 최대 10초 값을 의미하며, 타이머는 1000으로부터 카운트다운 되어야 한다.

CusFn #10의 다음구문은 각각의 최대 스케일 4096값을 A/D입력의 비율로 계산하고 시간의 최대값을 곱한다. 예를 들어 만약 포텐시오미터의 가동자를 반으로 맞추면, A/D값은 2048이고 이 값을 계산하면 타이밍 값은 (2048 * 1000)/ 4096 = 500, 또는 5.00초가 된다. TRiLOGI 버전5.x는 부동소수점 계산은 지원하지 않는다. 그러므로 곱셈은 나누기 전에 해야 한다. 그렇게 하지 않고 만약 2048/4096 *1000로 계산한다면 정수 나눗셈 2048/4096 = 0 이 되며 전체 구문 완전히 ‘0’이 되어 잘못된 결과를 가져오게 될 것이다.

194

Page 195: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

타이머#1의 PV(Present Value)의 레지스터는 타이머 카운트다운이 시작 될 이 숫자가 저장된다. 다음의 논리단계에 타이머 코일은 접점이 붙은 “OUT1”은 타이머가 자동으로 리셋되는 것을 막아준다. 그러나 그것은 이 경우에 쓰이지 않는 SV(Set Value)를 가지고 PV(Present Value)를 덮어 쓰지 않을 것이다. 그 이유는 이전의 래더 프로그램이 포텐시오미터의 설정치에 의해서 정해진 값을 가진 타이머가 이미 시작되었기 때문이다.

4. 스텝모터의 동작제어 M-series PLC는 스텝모터 드라이버를 구동시키기 위해 펄스를 발

생시킬 수 있다. 최대 속도, 가속도, 감속도 그리고 펄스의 전체 개

수 등을 TBASIC를 이용하여 정의할 수 있다. 절대위치명령과 상

대이동명령을 지원한다. 실습: • “DEFHOME”입력은 원점으로써 현재 위치를 정의한다. • “START”입력을 누르면 원점에서 1500, -2000, 4500 그리고

9000 스텝들에 스텝모터에 위치하기 시작한다. 각 위치로 이동

하는데 1초간 쉰다. 이 사이클이 끝나면 원점으로 복귀한다. • 최대 속도=5000PPS, 가속도=100 최대속도의 스텝

195

Page 196: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Fn_# 10 DEFHOME

DM[1] = 1500: DM[2]= -2000: DM[3]=4500 ‘Store index position DM[4]=9000: DM[5]=0 N = 1 STEPSPEED 1, 5000,100 ‘Stepper1: Max 5000pps, Acc:100 STEPMOVEABS 1, DM[N], 5 ‘ Move to position stored in DM[1] ‘ at the end, turns ON relay 5

STEPHOME(1) ‘Define the HOME position for stepper 1 Custom Function #10

Fn_# 11 START

Custom Function #11

[dCusf]

[dCusf]

N = N+1 IF N <= 5 STEPMOVEABS 1, DM[N], 5 ‘ Move to next position in DM[N] ENDIF ‘ at the end, turns ON relay 5

Custom Function #11 Custom Function #20

T1sec RLY5 (TIM) Fn_# 20 T1sec [dCusf]

설명:

RLY5는 내부 릴레이#5의 이름이다. T1sec는 PV(preset va ue )=10이다. 펄스발생이 끝났을 때, RLY5가 활성화된다. 래더 논리가 RLY5를 감지하고 T1sec 타이머가 1초 동안 지연시킨 후에, custom함수#20은 또 다른 STEPMOVEABS 명령을 실행시키고 4개의 위치를 계속해서 처리한다.

l

5. 예정된 날짜와 시간이 될 때 활성화 되는 이벤트

모든 M-series PLC는 예정된 때에 이벤트가 활성화될 수 있게 시

간과 날짜를 추적할 수 있는RTC(Real Time Clock)가 내장되어 있

다.

실습:

196

Page 197: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

• 매일 19:00시에 output #1이 ON된다.(라벨이름 : Out1) • 7:00에 OFF된다. • 2000년 1월1일 12:00에 output #5가 ON된다. • 같은 날 18:00에 output #5가 OFF된다.

( TIM ) Tim30s Tim30s

IF TIME[1]= 19 AND TIME[2]= 0 ‘ Ho ur ha nd a t 19 SETIO OUT1 ‘ Minute ha nd a t 00 ELSE IF TIME[1]= 7 AND TIME[2]= 0 C LRIO OUT1 ENDIF ENDIF IF DATE[1]= 2000 AND DATE[2]= 1 ‘ Ja n, ye a r 2000 IF DATE[3]= 1 IF TIME[1]= 12 SETBIT OUTPUT[1],4:ENDIF IF TIME[1]= 18 CLRBIT OUTPUT[1],4:ENDIF ENDIF ENDIF

Custom Function #1

[dCusf] Fn_# 1 Tim30s

설명:

1. Tim30는 Set Value = 300이고, 매 30초마다 Fn_#1함수를 활성화시킨다. CPU의 수행사이클을 체크할 때 너무 자주 시계를 체크할 필요는 없다.

2. 우리는 SETIO를 이용하여 출력 #1를 제어했으나, 본 예제에서는 OUTPUT[1]변수의 비트 #4을 SETBIT를 이용하여 Output #5를 제어하는데 쓴다. SETBIT output[1],4 이 구문은 출력 #5를 ON시킨다.

3. 실제로 RTC가 18:59 에서19:00로 바뀔 때 그 순간의 시계바늘을 체크할 필요는 없다. 그 출력은 TIME[1]=19인 동안 ON되어 있을 것이다. TIME[1]=7일 때 출력#1이 변화되는 것 필요가 있다.

197

Page 198: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

198

Page 199: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

6. HVAC (가열, 환기, 공기 조절) 제어

실습:

• A/D #5에 포텐시오미터를 연결하여 원하는 온도를 세팅 값(S)을 읽는다.

• A/D #1에 센서를 붙이고 현재 공기 온도(T)를 읽는다. • 만약 T가 S보다 1.5 oC이상 커지면 냉방장치가 ON된다.

(output #1의 라벨이름: OUT1) • S가 T보다 1.5 oC이상 커지면 난방장치가 ON된다. (output #2)

• T와 S의 차이가 + 1.5 oC 이면 둘 다 OFF가 된다. Parameters

A/D 최대 스케일 : 4096. 설정 범위: A/D #5 = 0 ⇒ 16.0 oC A/D #5 =4096 ⇒ 30.0 oC 센서 범위: ADC#1 =0 ⇒ -10.0 oC ADC#1 = 4096 ⇒ 50.0 oC

[dCusf] Fn_# 20 Clk:1.0s

S = ADC(5)* (300-160)/4096 + 160 ‘Convert to oCx10 T = ADC(1)* (500+ 100)/4096 -100 ‘Convert to oCx10 IF S -T > 15 SETIO OUT1 ‘Cold Air-c ond itioning ON ELSE CLRIO OUT1 ‘if T is hotter by 1.5 oC ENDIF IF S-T < -15 SETBIT OUTPUT[1],1 ‘ Hea ter ON ELSE CLRBIT OUTPUT[1],1 ‘if T is c older by 1.5 oC ENDIF

Custom Function #20

설명:

TRiLOGI 버전 5.x는 소수연산을 지원하지 않기 때문에,10진수 값

199

Page 200: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

(±1.5o C)을 다루기 위해서 0.1의 양을 정수단위로 사용한다. 모든 읽혀진 온도 값은 10이 곱하여 진다. 그러므로 16.0oC는 160으로 표현되고, -10.0oC 는 -100로 표현된다 고정 소수점 계산이라 하는 이 방법은 산업용 제어프로그램에서 일반적으로 사용되는 방법이다.

.

7. 가열공정의 폐 루프 PID제어

PID Controller

Burner

A/D#1

Sensor

D/A #1

예. PID 계산함수를 가진 폐루프 디지탈 제어의 수행

A/D#5

PID 컨트롤러 전달 함수(Transfer Function):

G(s) = KP + KI

s + KD s

KP = Proportional Gain = 1Proportional Band

KI = Integral Gain = 1

Integral Time Constant

설명: • 온도범위가50 oC - 200 oC인 A/D #5에 연결된 포텐시오미터에서

원하는 세팅치 온도를 읽는다.

• A/D #1(T)에 붙여진 열전지 + 신호조절기로부터 공정 온도를 측정한다.

• 에러계산식= S – T, 출력 X.의 계산을 위해서 P.I.D 알고리즘을 적용한다.

• 불꽃에 연료를 공급하는 위치가변 밸브를 제어하기 위한 D/A#1컨버터 출력 X를 적용한다.

• 매 1초마다 샘플을 만들고 계산한다. A/D 최대 범위 :4096.

200

Page 201: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

설정 범위: A/D #5 = 0 ⇒ 50 oC A/D #5 =4096 ⇒ 200 oC

센서 범위: ADC#1 =0 ⇒ 0 oC ADC#1 = 4096 ⇒ 300 oC

201

Page 202: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

[dCusf] Fn_# 5 Def_PID

S = ADC(5) * (200-50)/4096 + 50 ‘Convert to oC T = ADC(1) * (300 - 0)/4096 X = PIDcompute(1, S - T)/100 + 2048 ‘ X can vary within + 50% setDAC 1, X ‘ Write to analog D/A output # 1

Custom Function #6

P = 500: I = 50: D = 0 PIDDEF 1, 2048*100 ,P,I,D ‘ Use PID Engine # 1, maximum limit ‘ = + /- 50% of full scale

Custom Function #5

[dCusf] Fn_# 6 Clk1.0s

설명:

1. 우리는 이득 KP, KI , KD 로 표현되는 두 개의 10진수 공간 을 사용한다. 각각의 정수단위는 0.01이다. 비례이득(Proportional gain) KP = 5은 P=500인 변수로 표현된다. 같은 방법으로 적분이득(Integral gains) = 0.5는 I = 50이고,미분이득(Differential gains)= 0은 미분제어는 사용하지 않는다는 의미이다.( P.I only) PIDDEF 구문은 P I 그리고 D 매개변수 값이 모두 같은 스케일을 가진 100을 곱하여지기 때문에 적분기 한계 값은

.,

+ 2048로 제한한다.

TRiLOGI는 아직까지 소수점연산이 안되기 때문에 나눗셈을 하기 전에 반드시 곱셈을 먼저 해야 한다는 것을 기억해야 한다. 그렇지 않고 만약 150/4096 *ADC(5)과 같이 계산하게 되면 150/4096 = 0이 되어 원치 않은 결과를 얻게 되어 원하는 동작을 수행할 수 없게 된다.

2. PIDcompute()함수에 의해 반환된 값은 실제 컨트롤러 출력의 값을 얻고 그 후에

100으로 나뉘어진다. PIDcompute()는 –한계치 에서 + 한계치까지 부호있는 값을 반환한다.우리는 D/A 출력의 50% 인 (4096/2 = 2048)을 취한다. 그 이유는 PIDcompute()가 반환하는 값이 2048 보다 작으면 제어점이 음수라는 의미가 되고, 2048보다 크다면 제

202

Page 203: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

어점이 양수라는 것을 의미하기 떄문이다.

부록 2 : PLC & PC 하드웨어 설정 및 셋업

I. PLC 와 PC 연결

1. TLServer 가 실행된 PC 와 단일 PLC

가장 간단한 구성은 PLC 한대와 PC 한대일 경우이다. 사용자는

PC 에서 TLServer 를 실행시키고 PC 의 RS232(COM1) 포트와

PLC 의 RS232 포트를 간단하게 연결할 수 있다. 만약 사용자가

COM1 외에 다른 통신포트를 사용하고자 한다면 TLServer 의

설정을 수정하여 사용할 통신포트와 일치시켜야 한다.

2. TLServer 가 실행된 PC 와 여러 대의 PLC

사용자는 다수의 M-series PLC 를 TLServer 가 실행된 PC

RS232 포트를 이용하여 데이지체인 방식으로 모든 PLC 의

RS485 에 연결할 수 있다. 사용자는 PLC 의 RS485 와 PC 의

RS232 포트를 연결하기 위해서 RS232-to-RS485

converter(Auto485, etc.)를 구매해야 한다. RS485 네트워크에

PLC 를 연결할 때 요구들과 전기적 특성과 관련된 자세한

내용이 PLC 사용자 매뉴얼에 언급되어 있다.

인터넷 TRiLOGI 는 TLServer 에 로그인을 할 수 있고, 모든

PLC 에 관련된 ID 주소를 가진 RS485 네트워크를 통해

모든 PLC 에 즉시 접근할 수 있다. M-series PLC 는 TLServer 에

통신망접속이 가능하다. 만약 사용자가 1/8W 타입에 의해

RS485 구동 IC 를 교체한다면, 프로그래밍과 모니터링를

단일 TLServer 에 256 대의 PLC 를 연결할 수 있다.

203

Page 204: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Host Computer with RS - 485 or

T100MD+

Twisted -pair RS485 network cable

120Ω

Terminatingresistor560

560

+5V

0V

+ _

+ + + +_ _ _ _

RS485T100MX+RS485

T28H-Relay RS485 M - series PLC

RS485

네트워킹 문제 II.

네트워킹방식은 TLServer 를 운용하는 PC 에서 쓰일 뿐만 아니라

TLServer 에 접근하는 TRiLOGI 클라이언트 소프트웨어를 어떻게

TLSever 와 TRiLOGI 클라이언트의 구성하여 연계할 지에

의해서도 사용된다. 우리는 래의 다양한 계획을 고려할 것이다.

1. 같은 PC 상에서의 TLServer 와 TRiLOGI 클라이언트 TRiLOGI 클라이언트와 TLServer 를 같은 PC 상에서 운용할 때,

흔히 “localhost”에 접근이라 하고, 사용자는 TLServer 에

로그인하기 위해 IP Address: 127.0.01:9080 쓸 수 있다.

Localhost 접근은 이 PC 가 LAN 또는 Internet 이 어느 네트위크를

가지고 있는 것과 관계없이 항상 쓰여질 수 있다. 만약 사용자의 PC 가 네트워크와 연결되지 않았다면, TLServer

전면에 localhost IP 를 보고해 줄 것이다. 그러나 그 PC 가

인터넷 또는 LAN 엔 연결되었다면, 사용자는 다른 IP 주소를

보게 될 것이다. 비록 TLServer 가

127.0.0.1 로 보고하지 않는다 할지라도, 그것은 항상 localhost

프로그래밍에 쓰여질 것이다. 또한 사용자는

직접적으로 TRiLOGI 어플리케이션을 실행할 수 있거나 사용자의

웹브라우저를 열수가 있다. 그리고 URL: http://127.0.0.1:9080 를

204

Page 205: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

입력할 수 있다. 이 마지막의 경우에 TLServer 로부터 로드된

애플릿으로써 TRiLOGI 가 실행될 것이다.

2. TLServer는 인터넷에 직접 연결할 수 있다.

만약 PC 가 동작 중 이라면, TLServer 를 dial-up, DSL, T1

전용선 또는 케이블 모뎀 등을 통해서 사용할 수 있다. 그렇게

된 후 TLServer 는 인테넷의 어떤 클라이언트라도 접근할 수

있다. 만약 사용자가 dial-up 연결을 통해서 인터넷이 접속한다면,

TLServer 의 전면에 실제 IP 주소가 보고되는 TLServer 에

접속하기 전에 인터넷에 접속하는 것을 잊지 말아야 한다. 만약

TRiLOGI 클라이언트 소프트웨어 또한 직접 인터넷에

연결된다면, 경미한 문제가 생길 수가 있다. 그러나

TRiLOGI 클라이언트가

집합적인 방화벽에 놓여있다면, 이 상황은 더욱 복잡해지고,

TLServer 와 TRiLOGI 의 세팅에 영향을 줄 수 있다. 아래

테이블을 보자.

TRiLOGI 클라이언트를 직접 연결 TRiLOGI가 방화벽에 의해 보호되는 PC에서 실행될 때

• TLServer:: port settings=80 or any value above 1024

• TRiLOGI: "Use HttpProxy" setting is optional

• TLServer: Port Settings = 80

• TRiLOGI: "Use HttpProxy" = true. May need to obtain proxy server's IP address.

3. 클라이언트에 방화벽이 있을 때 TLServer 가 인터넷에 직접

연결된다면 어떻게 될 것인가?

205

Page 206: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

만약 클라이언트 PC 가 방화벽으로 보호 받는 공동의 인터넷

환경하에 있다면 , 방화벽 영역의 외부인터넷에 접근하는

클라이언트는 매우 제한적이 될 것이다. LAN 하의 모든 PC 들은

인터넷에 접근하지 못한다는 것을 유념해야 한다. PC 가

인터넷에 접근여부는 시스템 관리자의 결정으로 이루어지는

것이 아니다. 만약 특정한 클라이언트의 PC 가 인터넷에 접근한다

할지라도(왜냐하면 야후에 접속하는 브라우저를 사용할 수 있기

때문이다.) 그것은 인터넷에 직접 연결되었다는 것을 의미하는

것은 아니다. 실제로 일어나는 일은 네트워크 관리자가 인터넷에

연결하려는 사용자 클라이언트 PC 의 요구를 가로챈 "Proxy

Server"를 셋업하는 것이다. 그 프록시서버(proxy server )는

인터넷에 실제적인 연결을 갖는 것이다. 그것은 HTTP 연결을

처리하는 인트라넷(Intranet)을 대신하는 역할을 하고,

클라이언트에 돌아오는 응답을 보내준다. 그러다면 프록시서버는 네트워크 패킷이 인터넷을 위한 것인지,

다른 윅스테이션의 인터넷을 위한것인지 어떻게 결정하는가?

그것은 연결을 시도하려는 패킷의 포트번호를 체크함으로서

결정된다. 만약 연길이 잘 알려진 HTTP 포트가 80 이라면,

그것은 프록시 서버에 의해 처리될 것이다.

만약 사용자가 9080 (TLServer 의 초기주소)과 같은 포트번호를

사용 한다면 그것은 어떤 로컬 웍스테이션에서 요청하는

연결이라고 여길 것이고, 그렇게 됨으로써 인터넷은 프록시

서버를 경유하는 직접적인 패킷이 되지 못할 것이다. 그러므로 프록시 서버를 경유하는 인터넷 연결을 만들기 위한

클라이언트를 위해서, 그 TLServer 포트주소는 반드시 80 으로

설정 되어야 한다. "Log-In to TLServer" 에서 설명하듯이 "Http

206

Page 207: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

Proxy Server"를 경유하는 TLServer 에 접근하기 위해서

TRiLOGI 클라이언트가 구성되어야 한다.

4. 같은 로컬영역 네트워크에서의 TLServer 와 TRiLOGI

만약 로컬영역의 일부인 웍스테이션에서 TLServer 가 실행된다면,

그 웍스테이션에서 인터넷에 직접 연결되는 것은 거의

불가능하다.(만약 시스템 관리자가 특정 목적을 위해서 일부러

설정을 변경하지 않았다면) TLServer 가 시작될 때, 그것은

인터넷 IP 주소가 아니고 인트라넷 IP 주소인 윅스테이션의

IP 주소를 보고해 줄 것이다. 만약 현재 TRiLOGI 클라이언트가 같은 로컬영역 네트워크의

포트인 다른 웍스테이션에서 실행되고 있다면, 간단히 해결된다.

TLServer 는 1024 이하의 사용하지 않는 포트번호를 부여 받게

될 것이고, TRiLOGI 클라이언트는 다른 웍스테이션에서

TLServer 에 접근할 수 있다.

그러나 HTTP proxy server 를 통하여 인터넷에 접속하는 동안,

TLServer(초기치 80)의 포트번호는 80 을 피해야 한다.

5. 공중 인터넷에서 실행된 TLServer 에 개인 LAN 에서 어떻게

접근할 것인가?

만약 TLServer 가 실행된 웍스테이션이 인터넷에 직접 연결되지

않았다면, 그것은 방화벽이 PC 의 내부 LAN 에 접근하기 위한

어떤 시도도 방해할 것이기 때문에 정상적으로 공중인터넷을

통한 TLServer 의 접근은 불가능할 것이다. 아래 이를 해결하기

위한 두 가지 방법이 있다.

1. 시스템 관리자에게 TLServer가 실행된 로컬 웍스테이션에 사

상된 공용 IP 주소를 할당해주는 네트워크 자동 주소 중계기

의 설정을 위해 시스템 관리자와 협의한다.

2. 만약 인터넷이 일시적이어서 상호통신능력이 필요하게 된다

면 (프로그램의 버그(bug)를 고치기 위해 계약자가 허락한 경

우), 요구가 생길 때 iSP에 다이얼업(dial-up)이나 모뎀을 사용

207

Page 208: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

하는 것이 더 쉬워질 수도 있다. 적어도 그 연결은 더 이상 필요하지 않게 되고, 단지 모뎀을 사용하면 된다. 그러나 이

렇게 하기 전에 , 먼저 시스템 관리자가 보안정책에 위배되지 않는 것인지 충분히 검토해 보아야 한다. 만약 이것이 문제가 된다면, 독립적으로 TLServer을 위한 상호통신능력이 있는 인

터넷이 제공되는 다이얼업(dial-up)이 연결이 된PC나 노트 북

을 사용하는 것을 생각해 보아야 한다.(LAN을 연결하지 않고) 그러나 인트라넷의 보안에 대해서는 절충되지 못할 것이다.

6. 라우터 형식의 홈 네트워킹

만약 사용자의 웟웍스테이션이 낮은 가격의 NAT라우터 (Linksys, NetGear등과 같이 홈 네트워크 공급자들에게 현재 매우 인기 있

다.)를 통해 인터넷에 연결이 공유 되어 있다면, TRiLOGI 클라이

언트는 원격의 TLServer를 접근하는데 큰 문제는 없을 것이다.왜냐하면 이 라우터들은 전형적으로 인터넷에 직접 나가는 연결

을 만드는 것을 막지 않는다. 그러나 대부분의 NAT라우터의 내

장된 방화벽에 의해 TLServer에 접근하기 위해 들어오는 연결은 차단될 것이다. 다행히, 사용자는 “Port Forwarding”로 알려진 것

을 수행하는 라우터를 구성할 수 있다. ( 예를 들어 홈 네트워크

하에 설계된 웍스테이션의 어떤 포트 번호에 할당될 어느 외부 TCP/IP 패킷의 앞부분) 이 경우에, 사용자는 TLSever가 실행된 PC에 포워드포트 (forward Port) 번호 9080을 라우터에 설정해야 한다. (TLServer 는 9080 포트로 설정된다고 가정할 때). 자세한 사항은

라우 터의 매뉴얼을 참조한다.

208

Page 209: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

부록 3: PLC 와 모뎀과의 통신 설정

원격지에 위치한 M-series PLC 는 PSTN(공공통신 사업자가

운영하는 공중 전화 교환망 ),무선통신,휴대폰 등 의 네트워크를

통해서 호스트 PC 에 접속할 수 있다. 이는 2 대의 아날로그 모뎀에

의해 구성될 수 있고, 한 개의 모뎀은 PLC 의 RS232 시리얼포트에

연결하고 나머지 한 개는 호스트 PC 에 아래와 같이 연결하면 된다.

아래에서 설명하는 모뎀이 연결된 호스트 통신을 성공적으로

구성하기 위해서 몇 가지 기술적인 문제가 있다.

1. 모뎀 연결 모뎀 1: 호스트 PC 는 어떤 모뎀의 내부 혹은 외부 모뎀을

2400bps 이거 나 더 빠른 통신속도를 사용할 지도 모른다

모뎀의 설명서에 지시된 대로 PC 와 모뎀을 연결하고

모뎀후면에 "WALL" 또는 "Line"이라고 명시된 폰잭(Phone

jack)에 전화선을 연결한다.

209

Page 210: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

모뎀 2:PLC 에 부착된 모뎀 2 는 RS232 연결포트를 가진 외부

뎀이다. 이 모뎀은 DCE 타입이기 때문에 PC 의 RS232 포트에

연결되는 소켓은 대부분 DB25 또는 DB9 의 암컷 타입이다.

PLC 의 호스트 연결 포트 또한 DB9 암컷이기 때문에,

DB9-male-to-DB25-male 케이블 또는 DB9-male-to-DB9-male

케이블이 PLC 와 모뎀을 연결하기 위해서 아래그림과 같은

케이블이 필요하다.

2. 통신 속도

모뎀을 사용하여 통신할 때, 사용자가 알아야 하는 통신속도에

대한 2 가지 다른 정의가 있다.

210

Page 211: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

• "DTE Speed" 또는 "line rate"는 RS232 포트를 연결한

장치들간의 시리얼통신 속도를 말한다. 대부분의 모뎀들은

장치의 RS232 속도를 자동적으로 찾고, 1200,2400 에서

최대속도 115,200 bps 까지 조정할 수 있다. 장치로부터 받는

첫 번째 ASCII 값은 장치와 통신할 때 쓰이는 모뎀의

DTE 속도를 결정할 것이다. • 모뎀간의 통신 속도는 사용자가 모뎀에 대한

설명서에서 33.6Kbps, 56Kbps 등등을 읽은 것을 말한다. 두

대의 모뎀을 연결할 때, 그것들은 접속된 전화선통신의

상태에 따라서 자동적으로 가장최적의 통신속도를 협의하고,

두 모뎀이 낼 수 있는 최대속도를 설정한다. 우리는

일반적으로 모뎀이 설정한 통신속도를 조정할 필요는 없다.

그러나 한가지 확실히 해야 할 것은 모뎀간의 통신 속도는

항상 DTE 속도보다 더 낮게 설정된다는 것이다.

M-series PLC 의 RS232 시리얼포트의 초기설정 보-레이트 는

(BAUD RATE) 38,400 bps 이며, PLC 는 첫 번째 스캔 펄스 때

모뎀은 PLC 와 통신하기 위해서 그것의 초기 DTE

속도(38,400bps 등)를 인지할 수 있도록 모뎀에 초기화 문자를

보내야 한다. 모뎀을 리셋하기 위해서 사용자는

TBASIC 명령어를 사용하여 모뎀에 아스키문자 "ATZ" 를 보내야

한다.

PRINT #1 "ATZ"

만약 사용자가 모뎀에 자동적으로 들어오는 요구에 대해서

대답하기를 원한다면(예를 들면 모뎀에 다이얼링이 가능한

TLServer 2.0 를 쓰는 것), 사용자는 아래의 TBASIC 구문에 따라

실행해야 한다.

PRINT #1 "ATS0=1"

211

Page 212: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

위의 구문은 모뎀에게 첫 번째 호출에 대한 대답을 할 것이고,

사용자는 또한 1 번에서 다른 번호로 바꿀 수 있을 것이다. 예를

들어 만약 ATS0=3 라고 했다면 그것은 3 번째 호출에 대해서

대답할 것이다.

3. 소프트웨어와 프로그래밍

인터넷 TRiLOGI 소프트웨어의 일부인 TLServer 2.0 는 이미

모뎀에 다이얼링 하는 것이 지원 된다. 그러나 만약 사용자가

수동으로 대답할 수 있는 모드를 사용하고자 한다면, 모든

PLC 는 언제든지 전원이 인가된 PLC 자동응답모드에서 그

모뎀에 "1st.Scan"을 사용하여 모뎀에 초기 문자"ATS0=1"를

보내는 것이 필요하다. PLC 는 어떤 다른 명령도 필요하지 않다.

언제든지 사용자가 PLC 와 통신하기를 원한다면 첫번째로

TLServer 에 전화하고, PLC 에 연결된 후 연결이 완료되면,

사용자는 TRiLOGI 클라이언트 또는 PLC 와 통신하기 위한

프로그램인 TRi-ExcelLink 를 사용할 수 있다. 모뎀을 통해

PLC 와 연결하거나 혹은 RS232 를 직접 연결해서 클라이언트

프로그램에 연결한다는 사실은 너무 투명하다. 이러한 이유

때문에 PLC 에 권한 없이 접근하는 것을 방지하기 위해서,

사용자는 TBASIC 의 명령어인 "SETPASSWORD" 를 사용하여

비밀번호를 설정할 필요가 있을지도 모른다. M-series PLC 의 가장 큰 유연성은 많은 업무를 수행하기 위해

저장하기 위한 PLC 의 파일 서비스 또는 하드디스크파일의

데이터를 첨부하는 것, 호스트 PC 의 RTC 를 이용하여 시간을

맞추거나 인터넷을 이용하여 이메일을 보내는등을 TLServer 에서

자동적으로 PLC 에 다이얼링 하기 위한 프로그 래밍이 쉽게

가능하다는 것을 깨달았을 때 더욱 명백해지게 될 것이다.

212

Page 213: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

TRiLOGI version 5.1 프로그램의 폴더 안에 많은 수의

예제프로그램이

있다.("C:\TRiLOGI\TL5\usr\samples\FileService_Modem")모든

이 예제 들은 전체적으로 표준의 TBASIC 명령어를 사용한

custom 함수를 쉽고 강력하게 구현되어 매우 유용하게 쓰일

것이다.(아래 텍스트박스의 소스를 참조) 사용자는 이 함수를

사용하기 위해서 간단한 래더 회로만 구성하면 될 것이다. (그

함수#10 으로 가정):

D$ = "ATDT*802" ' store the phone number

IF TESTIO(Connected) THEN ' already connected.

IF TESTIO(DialModem)=0 ' connection no longer needed

IF DM[3991]=0 ' used as timer for modem attention.

PRINT #1 ' clear serial-out buffer.

WHILE INCOMM(1)<> -1 ' clear whatever data in serial-in

buffer

ENDWHILE

ELSE

IF DM[3991]=5

PRINT #1 "+++"; 'get modem attention

ELSE

IF DM[3991]>=10 'Wait 5 second to gain attention.

PRINT #1 "ATH" 'hang up modem command.

CLRIO CONNECTED

DM[3991]=0

ENDIF

ENDIF

ENDIF

DM[3991]=DM[3991]+1 'increment the timer

ENDIF

RETURN

ENDIF

IF TESTIO(dialModem)=0 RETURN: ENDIF

' If DM[3990] > 0 it means a dialing action has started.

' If DM[3990] > 30 it means more than 30 seconds has passed

' and connection still not established, then retry.

IF DM[3990]=0 ' Use this DM as a flag

WHILE INCOMM(1)<> -1 ' clear whatever data in serial buffer first.

ENDWHILE

PRINT #1 D$ ' Dial the number

DM[3990]=1

213

Page 214: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

RETURN

ENDIF

A$ = INPUT$(1)

IF LEN(A$) = 0

DM[3990]=DM[3990]+1 ' also use it to track the time-out

IF DM[3990] = 28 ' 28 seconds has lapsed.

PRINT #1 "ATH"

ENDIF

IF DM[3990]>=30: DM[3990]=0: ENDIF

RETURN

ENDIF

SETLCD 4,1,A$

IF STRCMP(MID$(A$,2,7),"CONNECT")=0 ' is connected

DM[3990] = 0 ' for next round of connection

DM[3991] = 0 ' reset timer for hang-up modem use

SETIO Connected ' set an I/O bit to indicate connection

ENDIF

사용자가 필요로 하는 모든 것들은 사용자가 작성한 Ladder+BASIC

프로그램에 이 custom 함수를 복사하고 붙일 수 있다. 그런 후

"DialModem" 의 라벨이름을 가진 I/O 를 만든다. "DialModem" 는

아마도 입력, 출력, 릴레이, 타이머, 카운터 접점 등이 될 것이다.

"DialModem" 의 I/O 비트가 ON 이 되는 순간, 그 PLC 는 원격으로

모뎀에 다이얼링 시퀀스가 수행되기 시작할 것이다. 성공적인 연결이

될 때까지 기다린 후, "Connected"의 라벨이름을 가진 I/O 비트가 ON 이

될 것이다. 만약 다이얼링이 30 초 이내에 완료되지 않는다면, 이

custom함수는 다시 다이얼링 할 것이다. 이 과정은 성공적으로 연결이

되거나 "DialModem" I/O 가 OFF 가 될 때까지 무기한 반복하게 될

것이다. 모뎀과 연결을 해지하기 위해서, 사용자의 PLC 는 "DialModem" I/O

비트를 OFF 시키면 위에서 기술한 custom 함수는 자동적으로 모뎀에

전화를 끊는 동작을 수행하게 될 것이다.

Note: PLC 는 모뎀에 반송파 탐지(carrier detect) 연결을 가지고 있지

못하므로, 만약 그 연결이 성공적으로 초기화된 후에 연결이 끊어지면,

214

Page 215: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

그 PLC 는 즉시 그것을 알아 차리지 못한다. 사용자의 프로그램은 이

조건을 탐지하게 해야 한다.(만약 그것이 파일서비스 명령을 보내고,

호스트로부터 "<OK>" 문자를 받지 못하는 경우) 일단 PLC 는 연결이

끊어지면, 간단하게 라벨이름 "Connected"의 I/O 비트를 OFF 시키고

다시 연결을 할 수 있다.( "CLRIO Connected"구문을 실행에 의해서)

"DialModem" I/O 비트가 ON 인 동안에 custom 함수는 다시

다이얼링하고, 만약 어떤 이유에서든지 "Connected" I/O 비트가 OFF 가

된다면 다시 연결을 시도하게 될 것이다.

215

Page 216: Internet TRiLOGI - jwtechs.comjwtechs.com/SuperPLC/archive/iTRiLOGI_Korean_rev1.pdf · 4장 – 인터넷 TRiLOGI 클라이언트 실행 ... 에서 동작되도록 설계된 ... 먼저

216