91
T100MD+ Super Program m able Controllers User’s Manual 사용자 매뉴얼 한글 번역판 엠피솔루션㈜ MP Solutions Inc. 1 (우)150-890 서울특별시 영등포구 여의도동 44-35 제일빌딩 8층 Tel: (02)784-2525 Fa x : (02)761-6774 Ema il: [email protected]

Super Programmable Controllers · 1.2 특수 디지털 i/o (di & do) t100md+ plc시리즈의 상위 8개의 on/off입력 중 4개는 고속카운터, 인터럽트 및 펄스 측정과

Embed Size (px)

Citation preview

T100MD+ Super Programmable Controllers

User’s Manual

엠피솔루션㈜MP Solutions Inc.

(우)150-890 서울특별시 영등포구 여의도동 44-35 제일빌

Tel: (02) 784-2525 Fax: (02) 761-6774 Email: info@S

사용자 매뉴얼

한글 번역판

1 딩 8층

uperPLC.com

엠피솔루션㈜ MP Solutions Inc.

2 (우)150-890 서울특별시 영등포구 여의도동 44-35 제일빌딩 8층

Tel: (02) 784-2525 Fax: (02) 761-6774 Email: [email protected]

목 차

1장 설 치 .......................................................................................................... 7

1.1 소개...................................................................................................................7

1.2 특수 디지털 I/O (DI & DO)...............................................................................8

1.3 스텝퍼 모터 제어기(Stepper Motors Controller) 출력.....................................9

1.4 PWM 출력.....................................................................................................11

1.5 고속카운터 입력의 응용 (로터리 엔코더)........................................................15

1.6 인터럽트 입력 사용.........................................................................................17

1.7 펄스 측정 입력................................................................................................18

1.8 아날로그 입출력 (Analog I/O).........................................................................20

1.9 시리얼 통신 포트 ............................................................................................22

1.9.1 COMM1: RS232C 포트 ( DB9 컨넥터 :암놈) ...............................................22

1.9.2 COMM3: 두선 방식의 RS485 포트 ..............................................................24

1.9.3 Baud Rate 및 통신 포멧의 변경: SETBAUD 명령문의 사용 ........................26

1.9.4 다양한 통신 프로토콜의 지원........................................................................28

1.9.5 TBASIC (Rev D Board)를 통한 COMM 포트와의 통신................................30

1.9.6 T100MD+ PLC의 원격 프로그램 및 모니터링을 위한 모뎀 사용 ................34

1.9.7 두 번째 멀티드롭 네트워크 구성...................................................................36

1.10 DIP 스위치..................................................................................................37

1.11 CPU 상태 표시 LED...................................................................................39

1.12 내부 릴레이, 타이머 및 카운터 등 (Relays, Timers & Counters, etc.)....40

2장 운전 절차.................................................................................................. 42

2.1 프로그램밍.....................................................................................................42

2.2 시뮬레이션.....................................................................................................42

2.3 PLC로의 프로그램 전송 ................................................................................43

2.4 에러 및 문제 .................................................................................................44

2.5 온라인 모니터링 및 제어...............................................................................45

2.5.1 PLC의 I/O 로직 상태 모니터링.....................................................................45

2.5.2 PLC 내부 변수의 보기와 변경......................................................................45

2.5.3 I/O 비트들의 Force Setting / Resetting.......................................................46

2.5.4 PLC Ladder 프로그램의 일시 정지...............................................................46

2.6 Ladder 모니터링 ...........................................................................................47

2.7 PLC로부터 Ladder 프로그램의 업로딩 .........................................................47

2.8 타임머 및 카운터 설정 값의 변경 .................................................................47

2.9 PLC의 RTC(Real Time Clock) 설정.............................................................48

2.10 통신 에러의 수리.........................................................................................49

3장 호스트 통신 .............................................................................................. 50

3.1 1대1 통신 (POINT-TO-POINT COMMUNICATION) ..................................51

3.2 멀티 통신 시스템 (MULTI-POINT COMMUNICATION SYSTEM) ............53

3

3.2.1 RS485 네트워크 인터페이스 하드웨어 ............................................................53

3.2.2 RS485 인터페이스의 보호...............................................................................54

3.2.3 단일 마스터(MASTER)를 갖는 RS485 네트워크............................................56

3.2.4 복수 마스터(MASTER)를 갖는 RS485 네트워크............................................57

3.2.5 명령(Command)/응답(Response) 블록 형식 (Multi-point) ............................59

3.2.6 통신 절차 (Communication Procedure) .........................................................61

3.3 멀티 통신 시스템...........................................................................................62

3.4 RS485 네트워크의 고장 처리........................................................................63

4장 명령(Command)/응답(Response) 형식....................................................... 65

4.1 기기 ID 읽기 (Device ID Read)....................................................................65

4.2 기기 ID 쓰기 (Device ID Write) ...................................................................65

4.3 디지털 입력 채널 읽기 (Read Input Channels).............................................66

4.4 디지털 출력 채널 읽기 (Read Output Channels) ..........................................67

4.5 내부 릴레이 채널 읽기 (Read Relay Channels)............................................67

4.6 타임머 접점 읽기 (Read Timer Contacts) ....................................................68

4.7 카운터 접점 읽기 (Read Counter Contacts) .................................................69

4.8 타임머의 현재 값 읽기(Read Timer Present Value) - P.V. .........................70

4.9 타임머의 설정 값 읽기 (Read Timer Set Value) - S.V. ...............................70

4.10 카운터의 현재 값 읽기 (Read Counter Present Value) - P.V. .................71

4.11 카운터의 설정 값 읽기 (Read Counter Set Value) - S.V. ..........................71

4.12 정수 변수(A~Z) 값 읽기 (Read Variable) – Integers(A to Z)) ...................72

4.13 문자열 변수(A$~Z$) 값 읽기 (Read Variable) – Strings (A$ to Z$)..........72

4.14 변수 값 읽기 - Data Memory (DM[1] ~ DM[4000]) ................................73

4.15 변수 값 읽기 – 시스템 변수........................................................................73

4.16 변수 읽기 – 고속 카운터 HSCPV[ ]...........................................................75

4.17 입력 쓰기 (Write Inputs) – 디지털 입력(Digital Input).............................75

4.18 출력 쓰기 (Write Outputs) – 디지털 출력(Digital Output) .......................75

4.19 내부 릴레이 쓰기 (Write Relays)................................................................76

4.20 타임머 접점 쓰기 (Write Timer-contacts).................................................76

4.21 카운터 접점 쓰기 (Write Counter-contacts)..............................................76

4.22 타임머 현재 값 쓰기 (Write Timer Present Value) - P.V. ........................76

4.23 타임머 설정 값 쓰기 (Write Timer Set Value) - S.V. .............................77

4.24 카운터 현재 값 쓰기 (Write Counter Present Value) - P.V. .....................77

4.25 카운터 설정 값 쓰기 (Write Counter Set Value) - S.V..............................78

4.26 변수 값 쓰기 (Write Variable) – 정수 (A ~ Z)...........................................78

4.27 변수 값 쓰기(Write Variable) – 문자열 (A$ ~ Z$) .....................................79

4.28 변수 값 쓰기 - Data Memory (DM[1] ~ DM[4000]) ................................79

4.29 변수 값 쓰기 (Write Variable) – 시스템 변수 ............................................79

4.30 변수 쓰기 (Write Variable) – 고속 카운터 HSCPV[ ] ...............................80

4.31 RTC(Real Time Clock) 모듈의 갱신...........................................................81

4.32 PLC의 일시 정지.........................................................................................81

4.33 PLC 운전의 재 실행....................................................................................81

4.34 호스트 통신 프로그램의 예 .........................................................................82

4.35 NETCMD$ 명령을 사용한 내부 네트워킹...................................................83

4.36 Inter-Networking Using MODBUS Protocols............................................84

4

5장 MODBUS / OMRON 프로토콜 지원........................................................... 85

5.1 MODBUS ASCII 프로토콜의 지원.................................................................86

5.2 MODBUS RTU 프로토콜의 지원...................................................................88

5.3 OMRON 호스트링크 명령의 지원..................................................................89

5.4 어플리케이션 예제: SCADA 소프트웨어와의 인터페이스...............................90

5.5 MODBUS 마스터로서 T100M+ PLC..........................................................91

5

6

1장 설 치

1.1 소개

표준 T100MD+ PLC 특징은 다음과 같다.

1) 4 ~ 8 채널 10 비트 아날로그 입력 4 ~ 8채널

(T100MD1616+은 아날로그 입력 4채널)

2) 1 ~ 2 채널의 8비트 아날로그 출력

3) 최대 초당 20,000 펄스까지의 스텝퍼 모터의 제어를 위한 2-채널 프로그램머블

모션 제어기 제공

4) 2-채널 PWM (펄스 폭 조절: Pulse Width Modulated) 출력

5) 10,000 Hz까지 지원하는 2-채널의 32-비트 고속 카운터

(HSC: High Speed Counters) 제공

6) 4-채널의 인터럽트(Interrupt) 입력

7) 10,000 Hz까지의 펄스 입력의 주파수 및 펄스 폭을 측정할 수 있는 2-채널 펄스

측정 입력

8) 멀티플 스케쥴에 의한 ON/OFF 이벤트를 프로그램밍할 수 있도록 지원하는 RTC

(Real time Clock/Calendar) 기능

9) 6016 Words (16-bit)의 EEPROM 프로그램 메모리

10) 사용자 데이터를 위한 1700 Words (16-bit)의 프로그램머블 EEPROM 메모리

11) 프로세스 자동화를 위한 PID (Proportional, Integral & Derivative) 타입의 디지털

제어를 제공하는 16 채널의 내장된 PID 계산 엔진.

12) 프로그램밍 또는 모니터링을 위해 호스트 PC등에 연결할 수 있는 1개의 독립적인

RS232

13) RS485기반의 아날로그 I/O 모듈, 다른 PLC, LCD화면등과 같은 외부 주변 기기와의

네트워크 연결을 위한 하나의 독립적인 RS485

14) 산업 표준 통신 프로토콜 지원 : 멀티플 통신 프로토콜을 RS232 및 RS485포트

양쪽에서 동시에 지원

i) Native ASCII 기반의 호스트링크 명령 (Host Link Commands)

ii) MODBUS RTU 프로토콜

iii) MODBUS ASCII 프로토콜

iv) OMRON C20H 호스트링크 명령 (Host Link Commands)

v) emWare사의 EMIT 3.0 프로토콜

14) 하드웨어 또는 소프트웨어의 에러에 의한 CPU 고장이 발생하였을 경우 PLC를

리셋하는 Watch-Dog Timer (WDT) 기능. WDT에 의한 시스템 리셋은 STATUS(1)

명령에 의해 결정되어질 수 있다.

7

1.2 특수 디지털 I/O (DI & DO)

T100MD+ PLC시리즈의 상위 8개의 ON/OFF입력 중 4개는 고속카운터,

인터럽트 및 펄스 측정과 같은 “ 특수 입력” 으로 설정할 수 있다. 또한 첫

8개의 출력 중 일부는 PWM 및 스텝퍼 제어를 위한 펄스 출력으로서

설정할 수 있다. 이러한 특수 I/O를 사용하지 않는 경우에는 래더 다이아

그램에서 표준 ON/OFF 입출력으로서 사용되어진다. 만일 두개의 특수

기능이 같은 I/O를 공유하도록 프로그램을 한다면 한번에 하나의 기능이

활성화 된다. 이러한 특수 I/O에 대한 I/O위치를 아래 표에 보여준다.

특수입력

입력(Input) # 고속카운터 인터럽트 펄스 측정

1 - - -

2 - - -

3 채널 #1: Phase A 채널 #1 채널 #1

4 채널 #1: Phase B 채널 #2 채널 #2

5 채널 #2: Phase A 채널 #3 -

6 채널 #2: Phase B 채널 #4 -

7 - - -

8 - - -

* 주의 : 특수 입력으로 정의된 입력번지는 다른 특수 입력

기능으로 동시에 사용될 수 없다. 예를 들면 입력

#3에 고속 카운터로 설정이 되었다면 동시에

펄스측정입력으로 설정할 수는 없다. 한가지의 특수

기능만 설정할 수 있다.

특수 출력

출력(Output) # 스텝퍼 펄스 출력 PWM 출력

1 채널 #1의 방향 -

2 채널 #2의 방향 -

3 -

4 -

5 채널 #1 -

6 채널 #2 -

7 - 채널 #1

8 - 채널 #2

특수 I/O들은 설치 가이드(Installation Guide)에 설명하여 놓은 것처럼

ON/OFF 타입의 I/O와 똑같은 전기적인 특성을 갖고 있다.

8

1.3 스텝퍼 모터 제어기(Stepper Motors Controller) 출력 기술 사양:

채널 수 2

최대 초당 펄스 (pps) 20000 (단일 채널 지정)

10000 (두개의 채널을 지정)

최대 부하 전류 1A @ 24V DC

속도 프로파일

(STEPSPEED 명령으로

정의함)

사각 파형

1/8 최대 pps에서부터 최대 pps까지 가속

최대 pps에서부터 최대 1/8 pps까지 감속

최대 스텝 수 2 ~ 231 (=2.1 x 109)

관련 TBASIC 명령어

STPEPSPEED, STPEPMOVEABS,

STPEPCOUNTABS( ), STEPMOVE,

STEPSTOP, STEPCOUNT( )

스텝퍼모터 “ 제어기” 와 스텝퍼 모터 “ 드라이버” 의 차이점에 대한

이해가 꼭 필요하다. 스텝퍼 모터 “ 드라이버” 는 스텝퍼 모터 코일에 전압,

전류, 위상전환을 제공하는 전력 전자 회로로 구성된다.

다른 한편으로, T100MD+ PLC 시리즈에 내장되어 있는 스텝퍼-모터

제어기 (Stepper-Motor Controller)는 “ STEPSPEED” 와

“ STEPMOVE” 명령에 의해 정의되어진 가속도와 최대 펄스 속도에 따라

요구되어지는 “ 펄스” 의 수와 방향 신호를 발생한다. 스텝퍼 모터에 이

“ 펄스” 를 직접 연결할 수는 없고 스텝퍼 모터 “ 드라이버” 를 모터

판매자로부터 구입하여 “ 드라이버” 에 연결하여야 한다. 전력 출력,

스텝퍼 모터의 Phase수, 그리고 마이크로 스텝핑의 유무에 따라

드라이버의 사이즈 및 가격이 결정된다. 대부분의 스텝퍼 모더 드라이버는

“ 스텝퍼 모터 제어기” 로부터 나오는 방향 신호와 스텝핑 펄스 신호를

받아들이는 Opto-isolated 입력을 가지고 있다. 이 경우에 있어 T100MD+

PLC 시리즈는 요구되어지는 펄스와 방향 선택 신호를 드라이버에

제공하는 “ 스텝퍼 모터 제어기 (Stepper Motor Controller)” 로 역할을

하게 된다.

스텝퍼 제어기로서 디지털 출력 #5 와 #6이 스텝퍼 제어기 채널 #1 및

#2로 설정되어 사용되어 지면 디지털 출력 #1 과 #2은 자동적으로 스텝퍼

제어기의 채널 #1과 #2을 위한 방향 선택 신호용의 출력으로 설정된다는

것을 주지하기 바랍니다. 스텝퍼 모터가 네거티브 (-:음) 방향으로 움직여야

할 때 방향 선택 신호는 ON이 되고 포지티브(+:양) 방향으로 움직여야 할

9

때는 OFF가 된다. STEPMOVEABS명령은 절대 위치로 모터를

위치시키고자 할 때 매우 단순하게 처리할 수 있도록 하여주며

STEPMOVE 명령은 각 채널의 현재 방향에서 지정된 펄스만큼

이동시킨다.

5V 스텝퍼 모터 드라이브 입력으로의 인터페이스

일부 스텝퍼 모터 드라이버는 스텝퍼 모터 제어기로부터 5V신호만을

받아들이는 경우가 있다. 이 경우 사용자는 드라이버의 입력이

Opto-isolated가 필요한지 아닌지를 결정하여야 한다. 만일 필요하다면

아래 그림1.1과 같이 PLC출력에서 드라이버의 입력 단 사이에 직렬로

2.2K옴의 전류제한 저항을 연결하면 된다.

그림 1.1

그러나 스텝퍼 모터 드라이버 입력이 5V CMOS 및 非 opto-isolated

이라면 사용자는 12~24V DC 출력을 5V로 변환하는 것이 필요하다.

이것은 2N4403와 같은 저가의 트랜지스터를 사용하여 해결할 수 있다. 더

좋은 방법으로서는 그림1.2에 보여주는 것처럼 “ Logic output

Opto-isolator” 를 사용하는 것이다.

10

그림 1.2 T100MD+ PLC시리즈의 출력을 5V Logic Level로 변환

1.4 PWM 출력

PWM (Pulse-Width Modulation)은 DC모터의 속도, 발열장치의 전력 또는

인가되는 전압에 따라 개도가 결정되는 비례(Variable Position) 밸브의

위치 등을 제어하는 큰 시간상수를 갖는 기기에 출력 전압을 제어하는데

높은 효율과 편리성을 제공한다.

PWM은 짧은 시간동안 출력을 최대 전압으로 ON하고 다시 짧은 시간동안

OFF를 반복 작동한다. 아래 그림에 표현하여 놓았다.

부하에 의해 보여지는 평균 전압은 PWM 파형의 "실행 사이클(Duty

11

Cycle)"에 의해 결정되어 진다. 이 실행 사이클은 다음과 같이 정의되어

진다.

실행사이클(Duty Cycle)= %100)(

xba

a+

주기 = (a + b)

주파수 = 주기

1 (Hz)

평균전압= 최대전압(VFull) x 실행사이클(%)

부하에 적용되는 전압이 최대전압 또는 최저전압 중 하나가 부가될 때

스위칭 트랜지스터는 “ ON” 또는 “ OFF” 시 매우 적은 전력이 소비되기

때문에 높은 효율을 갖는다.

기술 사양

채널 수 2

실행 사이클(Duty Cycle) 범위 0.00 ~ 100.00

해상도 0.4%

주파수 (Hz) 16, 32, 63, 250, 500, 2000,

8000,32000 Hz

관련 TBASIC 명령어 setPWM

PWM파형의 주파수 또한 변경할 수 있다. T100MD+ PLC시리즈는 다음

주파수를 지원하고 있다.: 16, 32, 63, 250, 500, 2000, 8000, 32000 Hz

높은 주파수에서 출력의 효과가 더 부드럽게 만들어질 수 있기 때문에

가능하면 높은 주파수를 선택하는 것이 일반적으로 좋다. 하지만 일부

시스템에서는 PWM주파수가 너무 높으면 제대로 반응을 하지 못하는

경우도 있다. 이 경우에는 낮은 주파수를 선택하여야 한다.

TBSIC의 “ setPWM” 문은 PWM채널의 주파수와 실행 사이클

(Duty-cycle) 설정을 제어한다. T100MD+ PLC시리즈는 출력#7과 #8에

두개의 PWM 채널을 제공한다. 이 두개의 출력은 높은 전압 및 전류 출력

(24V, 1A)이기 때문에 최대 1A 전류까지의 작은 DC 모터의 속도를 직접

제어하는데 사용될 수 있다. 이들은 또한 인가되는 전압에 따라 개도가

결정되는 비례(Variable Position) 밸브를 직접 구동 시킬 수 있다

12

출력 드라이브 전류의 증가 (Non Opto Opto-Isolated)

출력 #7 & #8의 최대 1A 보다 큰 전류 출력이 요구되어지는 전력 기기를

제어하여야 한다면 아래 그림과 같이 드라이브 전류를 증폭시키는 회로를

사용하면 된다.

그림 1.3

MOSFET 드라이버 IRF9530은 최대 12A까지의 전류를 구동 시킬 수 있다.

그러나 출력은 “ Source” (PNP) 타입으로 변환된다는 것을 주지하여야

한다. 위 회로에서는 Opto-isolated가 적용되지 않았으므로 큰 전류

부하로부터 PLC의 전원 공급 전압에 간섭을 주는 것을 방지하는

보호회로가 필요하다.

출력 드라이브 전류의 증가 (Opto Opto-Isolated)

PWM를 사용하는 이점은 드라이브 전류를 전류 스위칭 능력을 크게 하는

전력 트랜지스터 또는 전력 MOSFET를 사용하여 더 큰 영구 자석 DC

모터와 같은 더 큰 부하에 적용할 수 있도록 쉽게 증폭시킬 수 있다는

점이다.

만일 부하가 전압이 다르고 부하전류가 크다면 큰 전류로 부하로부터

PLC를 차폐 시키기 위하여 다음과 같이 Opto-isolator를 사용하여야 한다.

13

Figure 1.4 대형 DC 모터의 PWM 속도 제어

Note:

a) Opto-isolator는 PWM의 주파수에 맞추어 운전될 수 있는

것이어야만 한다. 그렇지 않으면 출력 파형이 찌그러지게 되면

효과적인 속도제어를 얻을 수 없다

b) 위 그림에 표시한 간단한 PWM 속도 제어 구조는 Open-loop

타입이며 부하의 토크(torque) 변화에 따라 속도가 조절되는

것은 아니다. 만일 타코미터(tachometer : digital or analog

type)가 실제 속도를 PLC CPU에 전달을 할 수 있도록

사용된다면 Closed-loop 제어를 적용할 수 있다. 변하는 부하

토크에 의해 야기되는 속도 편차(설정 속도와 실제 속도간의

편차)에 따라 PWM 실행사이클(duty cycle)를 소프트웨어에

의하여 조절할 수 있다. 또한 T100MD+ PLC 시리즈에

내장되어 있는 PID 기능을 이용하여 정교한 속도제어를 할 수

가 있다.

c) T100MD+ PLC 시리즈의 PWM은 작은 사이즈에서부터 중형

모터의 속도를 제어하는데 적용할 수 있다. 매우 큰 모터

(0.5KW급 이상)을 위해서는 산업용 속도 제어 드라이버가

적용되어져야 한다.

14

1.5 고속카운터 입력의 응용 (로터리 엔코더)

기술 사양

채널 수 2

측정 최대 주파수 (펄스) T100MD 모델: 10KHz

T100MX 모델: 4KHz

사각파형 신호 디코딩 자동감지

관련 TBASIC 명령어 HSCDEF, HSCOFF, HSCPV[ ]

설명:

입력 #3,4 및 입력 #5, 6은 “ 사각파형” 출력을 내는 로터리 엔코더에

직접 연결하여 사용할 수 있는 고속 카운터 입력의 두 채널을 구성한다.

사각파형 엔코더는 다음과 같이 90°의 위상차를 갖는 두개의 펄스 열을

생산해낸다.

엔코더 샤프트(축)이 한 방향으로 회전할 때 위상 A는 상 B 보다 90도

앞선다. 엔코더 축이 반대 방향으로 회전할 때에는 상 B가 상 A 보다 90도

앞선다. 따라서 이 사각 신호는 회전 방향을 나타낼 수 있다.

T100MD PLC시리즈는 다음과 같이 사각 신호를 다룬다.: 만일 입력#3에

도착한 펄스 열이 입력#4에 도착한 펄스 열보다 앞선다면 HSC (High

Speed Counter) #1은 입력되어 들어오는 매 펄스를 카운터 값에

15

증가시킨다. 만일 입력#3에 도착한 펄스 열이 입력#4에 도착한 펄스

열보다 늦는다면 HSC (High Speed Counter) #1은 입력되어 들어오는 매

펄스를 카운터 값에 감소시킨다. 만일 입력#4가 OFF상태라면 입력#3에

들어오는 펄스 열은 입력#4보다 앞서는 것으로 간주되며 HSC#1의 카운터

값을 증가시킨다. 같은 개념으로 입력#3이 OFF상태라면 입력 #4에

들어오는 펄스 열은 HSC#1의 카운터 값을 감소시킨다.

입력 #5와 #6은 HSC(High Speed Counter) 채널 #2을 위한 입력으로

사용되며 HSC #1을 위한 입력 #3과 #4와 같은 방식으로 작동된다.

T100MD+ PLC시리즈가 사각파형 엔코더의 회전 방향을 자동으로

감지한다는 사실은 고속 엔코더 피드백을 다루는 프로그램머의 작업을

대단히 단순화 시켜준다. TBASIC의 HSCdef 문은 HSC (고속카운터)가

미리 설정하여 놓은 값에 도달할 때 특정 CusFn이 실행되도록 정의하는데

사용될 수 있다. 이 CusFn으로 사용자는 실행하여야 할 사항들을 정의할

수 있으며 HSC가 또 다른 값에 도달하였을 때는 다른 다음 CusFn이

실행되도록 정의할 수 있다.

고급 사각파형 디코딩

T100MD+ PLC시리즈가 사각파형 신호를 다루는 기본적인 방법은 상기에

설명한 바와 같이 어느 정도 간단하다. 하지만 이것은 엔코더가 위상의

변환 위치에 있을 때 일어날 수 있는 회전자의 축이 “ 흔들림” 현상을

고려하지 않고 있다. 만일 회전자 축이 카운터의 멀티플 트리거를 야기시킬

수 있는 위상 변환 위치에서 흔들린다면 기계적인 진동은 멀티플 카운트를

야기시킬 수 있다. (멀티플 카운트: +, -의 카운트가 왔다 갔다 하는 현상)

이러한 현상을 대비하여 T100MD+ PLC시리즈의 고속 카운터 HSC는

단상 고속 카운트에 적용할 수 있는 특성을 제공한다. T100MD+

PLC시리즈의 Firmware Revision R39 또는 그 이상의 버전에서 두개의

위상사이의 상호 관련성을 조사하여 멀티플 카운트를 방지하는 고급 사각

파형 디코딩 루틴을 제공한다. TBASIC의 SETSYSTEM 명령어를 사용하여

다음과 같이 고급 사각 파형 카운트 기능을 설정할 수 있다.

SETSYTEM 4, n.

n=0 HSC1 & HSC2 양쪽 모두 간단한 디코딩 카운터로 설정

n=1 HSC1을 고급 사각파형 디코딩 카운터로 설정

n=2 HSC2을 고급 사각파형 디코딩 카운터로 설정

n=3 HSC1 & HSC2 양쪽 모두를 고급 사각파형 디코딩 카운터로

설정

16

5V 타입의 사각파형 엔코더의 연결

만일 선택할 수만 있다면 입력 #3,4,5 및 6에 직접 연결하여 사용할 수

있는 12V 또는 24V 출력 펄스를 내는 엔코더를 선택하여야 한다. 만일

5V타입의 엔코더를 선택할 수 밖에 없다면 PLC의 입력에 다음과 같이

트랜지스터 드라이버를 추가하여야 한다. 가장 간단한 방법으로서 아래

그림1.5와 같이 IC드라이버 ULN2003를 사용하는 것이다.

그림 1.5 5V 타입의 로터리 엔코더 연결

1.6 인터럽트 입력 사용

일반적인 PLC Ladder 프로그램 실행 동안에 CPU는 첫 번째 로직 문에서

시작하여 마지막 로직 문에 도달할 때까지 각 로직 회로의 로직 방정식을

전진적으로 풀면서 전체 Ladder 프로그램을 검색한다. 검색의 끝에서

물리적인 입력 및 출력(I/O)을 갱신한다. 그러므로 순차적인 프로그램의

실행 속성 상 Ladder 프로그램의 로직 인자의 위치가 중요하다.

Ladder 프로그램을 검색할 때 CPU는 마지막으로 갱신한 입력의 로직

상태를 표현하는 몇 가지 내부 메모리 변수를 사용한다. 같은 방식으로

출력의 로직 상태를 변경하기 위하여 출력 메모리 변수(실제 물리적인

출력이 아님)에 임시로 저장하고 Ladder 로직의 검색 및 실행이 다 끝난

17

후 I/O 갱신 시점에서 물리적인 출력 상태를 갱신한다. CPU에 의하여 현재

검색이 완료되고 입력 변수가 갱신되기 시작할 때 만이 입력 로직 상태가

변경된다. 갱신된 입력 로직 상태는 CPU에 의해 인식되는 한번의 검색

시간(Scan Time)동안 유지된다. 간혹 가다가 특정한 이벤트 상황에서

CPU의 로직 검색 시간 (Scan Time)과 관계없이 PLC에서 특정한 작업의

수행이 필요한 경우가 있다.

다른 표현으로 하자면 인터럽트 입력은 불규칙하게 일어날 수 있으며

인터럽트 입력이 들어왔을 때 지금 현재 무엇을 하고 있던 간에

즉각적으로 하던 일 중지하고 이 인터럽트에 반응을 한다. 따라서 CPU는

PLC의 어떠한 입력 및 로직보다도 인터럽트에 가장 빨리 응답을 한다.

덧붙여 인터럽트들은 인터럽트 입력이 ON에서 OFF로 변하든 OFF에서

ON으로 변하든 간에 인터럽트 조건(입력 상태)의 변화가 일어났을

때 인터럽트의 조건이 발생되는 “ Edge-triggered” 방식으로 작동된다.

그러므로 인터럽트 입력은 CPU에 감지되기 위하여 CPU의 검색시간(Scan

Time)보다 길어야 할 필요는 없다.

입력 (Input) #3 ~ #7 사이의 하나 또는 모두를 INTDEF 명령문에 의해

정의되는 인터럽트 입력으로 사용되어질 수 있다. 또한 인터럽트 입력의

타입을 Rising-edge Triggered (입력이 OFF에서 ON으로 바뀌는 순간)

또는 Falling-edge Triggered (입력이 ON에서 OFF으로 바뀌는 순간) 타입

중 하나를 선택할 수 있다. 정의된 입력 타입에서 신호가 들어올 때 정의된

CusFn (Custom Function)이 Ladder프로그램의 현재 실행 상태와

관계없이 즉각 실행되어진다.

1.7 펄스 측정 입력

T100MD PLC 시리즈는 PM (Pulse Measurement) inputs #3 또는 #4 으로

입력되어 들어오는 사각 파형의 펄스 열의 주파수 또는 펄스 폭을

측정하기위한 장비로서 매우 유용하게 사용할 수 있다. 펄스 폭 또는

주파수를 측정하는 펄스 측정 입력이 되어질 관련 입력 채널을 설정하기

위하여 PMON 명령문을 사용하여야 한다. 펄스 폭(단위: 마이크로 초(μs)

또는 펄스 주파수(단위: Hz)는 PULSEWIDTH(n) 또는

PULSEFREQUENCY(n) 기능으로부터 쉽게 얻을 수 있다.

18

그림 1.6 간단한 회전 속도계 또는 엔코더의 설정

응 용

1) PM (Pulse Measurement) 기능의 유용한 어플리케이션 중의 하나는

모터의 회전 속도를 측정하는 것이다. 위 그림과 같이 간단한 광

센서 하나와 모터의 축에 설치한 회전 디스크를 사용하여 매우

저렴하게 회전 속도계를 구성할 수 있다.(그림 1.6 참조) 모터가

동작하기 시작할 때 센서는 펄스를 발생하기 시작한다. 이 펄스 열의

주파수는 모터의 회전 속도로부터 직접적으로 영향을 받게 되며

매우 정밀한 속도 제어를 할 수 있다. 또한 고속 카운터를 적용하여

이동위치를 결정하는 위치 피드백 엔코더(Position-feedback

Encoder)로서 활용할 수 있다.

2) 출력 파형의 계속 변하는 주파수를 측정하기 위하여 출력의 VCO

(Voltage-Controlled-Oscillator)와 몇 개의 변환기가 사용된다.

T100MD 의 PM (Pulse Measurement) 기능을 사용하여 간단하고

편하게 이러한 변환기의 기능을 만들 수 있다. 그러나 주파수는

10,000Hz 이하이어야 한다.

3) 고속 카운터의 주파수 측정이 필요한 경우 입력 #3 과 입력 #5 에

펄스 입력을 연결하여야 한다. 이 경우에 HSC #2 는 주파수 측정은

물론 입력 펄스를 카운트하기 위하여 PM#1 과 함께 사용되어 진다.

이것은 고속 카운터로 정의되어 지는 입력은 동시에 PM (Pulse

Measurement: 펄스 측정) 입력으로 설정할 수 없기 때문이다. 만일

고속카운터(HSC)와 펄스측정(PM)을 위해 동시에 같은 입력에

HSCDEF 1 과 PM0N 1 를 실행시킨다면 이중 나중에 정의된

명령만이 수행된다.

19

1.8 아날로그 입출력 (Analog I/O)

A/D 전기적 특성

A/D 채널 수: 모델에 따라 4 또는 8 채널 제공

해상도(Resolution): : 10 비트

Built-in Sample 및 Hold 기능

변환 시간 : 채널 당 10 μs

D/A 전기적 특성

D/A 채널 수 : 모델에 따라 1 또는 2 채널

해상도(Resolution): : 8 비트

변환 시간 : 채널 당 10 μs

Notes:

1) A/D 변환기의 실제 해상도(분해능)가 10 비트이고 D/A 변환기의

실제 해상도가 8 비트 일지라도 T100MD PLC는 12 비트의 숫자로

모든 아날로그 데이터를 인식한다. 그러므로 ADC(n) 기능은

0,4,8,12,16....4092 (최소 기호 두 비트는 항상 0 (영)이므로 9095는

아님)의 숫자를 돌려준다. 유사한 방식으로 12 비트의 숫자로 인식한

D/A 변환기의 값은 DAC하드웨어로 적용이 되기 전에 8 비트의

값으로 변환이 된다. 따라서 실제 디지털 코드 값이 255일 때 D/A의

최대값이 되는 것이며 이를 16 비트 값으로 보면 =255 x 16 = 4080

이 된다.

2) 모든 아날로그 데이터 값이 12 비트로 처리되는 이유는 앞으로

새로운 모델에서 더 높은 해상도를 갖는 A/D 또는 D/A 변환기를

수용하기 위한 목적이다. 이러한 새로운 모델이 출시가 되었을 때

사용자의 기존 PLC 프로그램은 수정 할 필요가 없게 된다. 즉 이미

12 비트의 값으로 처리되어 있기 때문에 그렇다.

20

그림 1.7 10-비트 ADC를 위한 변환 기능

그림 1.8 8-비트 DAC를 위한 변환 기능

산업용 아날로그 센서들의 인터페이스

J- 또는 K-타입과 같은 써모커플(Thermocouple) 온도 프로브(Probe)같은

센서들은 온도 변화에 따라 밀리볼트의 전압 신호를 발생한다. 이러한

신호들은 A/D 변환기에서 읽기에 너무 약한 신호이기 때문에 0-1V 또는

21

O-5V 범위의 아날로그 입력 값으로 읽혀지기 위해 전압과 전류를

증폭시킬 필요가 있다. 이러한 기기로는 신호 변환기 또는 신호

컨디셔너(Signal Conditioner)로 알려져 있다. 신호 변환기는 약한 신호에

영향을 줄 수 있는 노이즈를 제거할 수 있는 정밀한 계측 증폭 회로로

구성이 되어있다. J 또는 K 타입과 같은 써모커플을 위해 시중에서 구입할

수 있는 기성 제품을 구입하거나 사용자 자신이 Analog Device사 (예;

AD594/AD595) 또는 Linear Technology사와 같은 업체로부터 고집적

IC를 구입하여 만들 수도 있다.

신호 변환기는 별도의 전원 공급이 필요할 것이다. 신호 변환기를 선택할

때 아날로그 데이터를 쉽게 읽을 수 있도록 PLC의 신호 규격과 맞을 수

있는 0-1V, 0-5V, 0-10V, 0-20mA 또는 4-20mA 출력 신호 범위를 갖는

제품을 선정하여야 한다.

1.9 시리얼 통신 포트

T100MD+의 최신 버전 (Rev. D 또는 D-1)은 다양한 프로토콜을 사용하는

서로 다른 기기와 동시에 통신을 할 수 있는 두개의 독립적인 시리얼

포트를 제공한다. 이 포트들은 INPUT$(n), INCOMM(n), PRINT #n,

OUTCOMM n, d 와 같은 TBASIC에 내장된 명령어를 사용하여 ASCII

또는 이진(바이너리:Binary) 데이터를 보낼 수 있도록 프로그램할 수 있다.

첫번째 시리얼 포트(COMM1)는 대부분의 PC RS232C 포트와 호환성이

있는 RS232C 포트이다. 두 번째 시리얼 포트(COMM3)는 여러 개의

PLC를 하나의 호스트 컴퓨터에 연결하거나 PLC네트워크 구성을 위해

(또는 분산형 제어시스템을 구축하기 위해) 하나의 마스터 PLC 또는 제어

시스템에 연결하는 두선 방식의 RS485 포트이다.

1.9.1 COMM1: RS232C 포트 ( DB9 컨넥터 :암놈)

이 포트는 DCE(Data Communication Equipment)로서 설정이 되며 Null

모뎀 없이 PC의 시리얼 포트에 직접 연결 할 수 있도록 설계가 되어 있다.

COMM1은 38,400 bps(bit-per-second) (8 데이터 비트, 1 stop bit, no

parity)의 디폴트 Baud Rate로 호스트 컴퓨터와 통신을 한다.

22

RX+ TX+

TX+ RX+DTR DTR GND GND

SuperPLC측: DCE (Data Communication Equipment)

Host PC측: DTE (Data Terminal Equipment)

그림 1.9 COMM1과 PC와의 연결

그러나 COMM1을 모뎀과 같은 DCE 기기에 연결을 할 때에는 다음과 같이

송신(Transmit: Tx)과 수신(Receive: Rx) 신호를 서로 엇갈려 연결한

케이블을 사용하여야 한다.

DRX+ RX+

TX+ TX+ DTR DTR

GND GND

DSR DSR

[ DCE TYPE ]

RS232 통신

핀 4와 6은 핸드쉐이킹 신호를 요구하는 통신방식을 제외하고는 사

그림 1.10 COMM1과 DCE 타입의 기기 또는 MODEM 과

상기 그림에서 핀 4와 6은 일부 모뎀에서 요구

(Handshaking) 신호를 위한 것이다.

CE 타입의 기기

또는

[ DCE TYPE ]

용하지 않아도 무방하다.

의 연결

되는 핸드쉐이킹

23

1.9.2 COMM3: 두선 방식의 RS485 포트

Half-duplex 포트는 시리얼 LCD/LED 메시지 디스플레이 기기 또는

PLC와 같은 통신 기기와의 네트워크를 구성할 수 있다. 32개까지의

RS485 기기를 하나의 RS485 네트워크에 연결할 수 있다.

RS485 포트는 PLC의 전원 공급 단자 옆에 있는 두개의 단자로 되어 있다.

(설치 가이드 참조) RS485 포트를 사용한 성공적인 통신을 위해 꼬아진

페어 케이블(Twisted Pair Cable)을 사용하여 RS485 장비에 ‘ +’ 와

‘ -’ 단자를 올바르게 연결하는 것이 필요하다. RS485 네트워크의 호스트

장비로서 PC를 사용한다면 RS232-to-RS485 변환기가 요구된다. 다음은

RS485 포트의 여러 가지 사용 용도에 대해 설명을 한다.

a) 프로그램밍 과 모니터링

T100MD+ PLC을 One-to-One 또는 멀티드롭 방식으로 RS485

네트워크를 경유하여 프로그램할 수 있다. 대부분의 PC는 RS232포트

만을 가지고 있기 때문에 PLC의 COMM3 (RS485) 포트를 경유하여

PLC를 프로그램하기 위해서는 RS232-to-RS485 변환기의 구입이

필요하다. 시장에서 구입할 수 있는 대부분의 RS485 변환기는

공통적으로 RS485 전송 방향을 제어하기 위하여 RTS 신호를 사용하며

TRiLOGI 버전 4.x 및 TLServer 소프트웨어에서 이를 지원한다. 자동

전송 방향 전환 타입의 RS485변환기가 전송방향 전환 시간이 0.1ms보다

적다면 사용하기에 적합한 것이다. TRiLOGI와의 호환성 검사가 완료된

변환기에 대해서는 대리점과 [email protected] 로 문의하시기

바랍니다.

COMM1이 모뎀, 바코드 리더, SCADA 시스템 또는 MMI와 같은 기기에

이미 사용되고 있다면 RS485포트를 활용하는 것은 매우 유용하다.

COMM1이 이러한 기기와 통신을 하고 있는 동안일지라도 프로그램머는

RS485 포트를 사용하여 PLC를 프로그램하거나 모니터링을 COMM1

RS232 포트와는 별개로 계속 통신을 할 수 있다. 이것은 COMM1 또는

COMM2에 통신 문제가 발생하였을 때 다른 통신 포트를 통하여 수리를

할 때 매우 유용하다.

b) 한대의 TLServer에 여러 대의 PLC 연결

TLServer 프로그램이 작동되고 있는 한대의 PC는 원격으로 프로그램밍,

24

모니터링, 그리고 인터넷 TRiLOGI 클라이언트를 사용하여 인터넷을

경유한 이메일 송신을 서비스하기위한 기능을 제공한다. 모든 M 및 H

시리즈 PLC는 한대의 PC에 31대의 PLC를 연결할 수 있는 표준

SN75176 드라이버 IC를 사용하고 있다. 하지만 Linear Technology 사의

LTC1487과 같은 1/8 POWER 타입으로 SN75176 IC를 교체한다면

TLServer가 작동하고 있는 한대의 PC에 255대의 PLC를 연결할 수

있다.

c) 분산 제어 :

RS485 포트의 다른 중요한 용도는 T100MD를 다른 T100MD, H-시리즈

PLC 또는 타사 리모트 I/O 모듈 및 PLC등에 연결하여 사용하는 것이다.

한대의 T100MD PLC는 RS485 네트워크의 마스터로서 작동되며 다른

모든 PLC 및 RS485 기기들은 슬래이브로서 작동한다. 각각의 PLC는

네트워크상에서 유일한 ID를 가지며 마스터는 TBASIC의 “ NETCMD” ,

“ READMODBUS” 또는 “ WRITEMODBUS” 기능을 사용하여 모든

슬래이브 기기에 명령을 보내거나 PLC 또는 RS485 기기 상호간의

통신을 제어한다. 한 네트워크에 연결되어 있는 M, H-시리즈 PLC 또는

RS485 기기들을 활용하여 공장의 여러 단위 공정을 제어하는 큰

시스템으로서 역할을 할 수 있도록 하여준다. 이것은 복잡한

제어시스템을 세련되게 구축하고 유지 보수를 간단하게 할 수 있도록

하여 준다.

d) H-시리즈 PLC들을 MODBUS 또는 인터넷으로 연결

T100MD+ PLC는 MODBUS 프로토콜을 지원하기 때문에 네트워크

상에서 마스터로서 동작할 때 H-시리즈 PLC와 같이 MODBUS

프로토콜을 지원하지 않는 PLC들을 MODBUS통신을 하여야 하는

SCADA 소프트웨어 또는 MMI 하드웨어와의 인터페이스를 위해

게이트웨이로서 역할을 할 수 있다. 또한 T100MD+를 경유하여 인터넷

상에서 H-시리즈 PLC를 제어하고 모니터링할 수 있도록 하여 준다.

마스터 T100MD+는 H-시리즈 PLC의 데이터를 데이터 메모리,

DM(n),로 가져오기 위하여 RS485 포트를 사용한다. T100MD PLC의

데이터 메모리 (DM(n): n=1~4000, 4000개의 데이터 메모리 제공)는

MODBUS 프로토콜을 사용하는 SCADA 프로그램등에서 읽고 쓰기를 할

수 있으며 TRiLOGI 클라이언트/서버 소프트웨어를 사용하여

인터넷으로부터 데이터 통신이 가능하다.

25

1.9.3 Baud Rate 및 통신 포멧의 변경: SETBAUD 명령문의 사용

T100MD+ PLC의 COMM 포트들은 고급 설정을 지원한다. 양쪽 COMM

포트 (RS232 및 RS485 포트) 모두 폭 넓은 Baud Rate 설정을 지원한다.

7 또는 8 데이터 비트로 통신하도록 설정할 수 있다. 다음 명령으로

Baud Rate 및 통신 형식을 설정한다.

SETBAUD ch, baud_no

ch 는 COMM 포트 번호 (1 또는 3)을 의미한다. baud no 파라메터는

통신 형식의 추가적인 설정을 위해 0~255 (&H0 ~ &HFF) 사이의 값을

갖는다. baud no 의 상위 4비트는 통신 형식(데이터 비트의 수, Stop 비트

및 Parity의 수)을 의미하며 하위 4비트는 Baud rate를 의미한다. 새로운

Baud Rate가 설정되면 PLC의 전원이 꺼지거나 다른 SEBAUD 명령문이

실행되기 전까지는 변하지 않는다. Baud Rate는 “ RESET” 소프트웨어

명령에 영향을 받지 않는다. COMM1에 적용 가능한 Baud Rate 및 관련

숫자는 다음과 같다.

Format Baud_no Format Baud_no

8, 1, n 0000 xxxx 8, 2, n 0001 xxxx

8, 1, e 0100 xxxx 8, 2, e 0101 xxxx

8, 1, o 0110 xxxx 8, 2, o 0111 xxxx

7, 1, n 1000 xxxx 7, 2, n 1001 xxxx

7, 1, e 1100 xxxx 7, 2, e 1101 xxxx

7, 1, o 1110 xxxx 7, 2, o 1111 xxxx

여기서 xxxx는 다음과 같이 COMM 포트의 Baud Rate를 의미한다.

x x x x 0000 0001 0010 0011 0100 0101 0110 0111

Baud Rate 2400 2400 4800 9600 19200 31250 38400 62500

x x x x 1000 1001 1010 1011 1100 1101 1110 1111

Baud Rate 100K 250K 500K 110 150 300 600 1200

다음 테이블에 사용 가능한 모든 Baud Rate 및 COMM 포맷에 대하여

보여주고 있다. 7,2,e 로 쓰여진 통신 포맷은 Data Bits: 7, Stop bit: 2,

그리고 Parity: even 을 의미한다. 마찬가지로 8,1,n은 Data Bits: 8, Stop

bit: 1, 그리고 Parity: No 를 의미한다. 사용자는 적용하고자 하는 Baud

26

rate 및 COMM 포맷을 선택하기 위하여 아래 테이블을 사용하면 된다.

COMM1 (RS232)의 회로설계에 있어 UART가 초당 500K bit까지

동작하지만 최대 Baud Rate는 최대 100Kbps로 제한된다. COMM3

(RS485) 포트는 500K bps까지 지원한다.

Baud 번호 테이블 (모든 숫자는 16진: &H00 ~ &HFF)

8,1,n 8,1,e 8,1,o 7,1,n 7,1,e 7,1,o 8,2,n 8,2,e 8,2,o 7,2,n 7,2,e 7,2,o

110 0B 4B 6B 8B CB EB 1B 5B 7B 9B DB FB

150 0C 4C 6C 8C CC EC 1C 5C 7C 9C DC FC

300 0D 4D 6D 8D CD ED 1D 5D 7D 9D DD FD

600 0E 4E 6E 8E CE EE 1E 5E 7E 9E DE FE

1200 0F 4F 6F 8F CF EF 1F 5F 7F 9F DF FF

2400 01 41 61 81 C1 E1 11 51 71 91 D1 F1

4800 02 42 62 82 C2 E2 12 52 72 92 D2 F2

9600 03 43 63 83 C3 E3 13 53 73 93 D3 F3

19200 04 44 64 84 C4 E4 14 54 74 94 D4 F4

31250 05 45 65 85 C5 E5 15 55 75 95 D5 F5

38400 06 46 66 86 C6 E6 16 56 76 96 D6 F6

62500 07 47 67 87 C7 E7 17 57 77 97 D7 F7

100K 08 48 68 88 C8 E8 18 58 78 98 D8 F8

250K 09 49 69 89 C9 E9 19 59 79 99 D9 F9

500K 0A 4A 6A 8A CA EA 1A 5A 7A 9A DA FA

Baud Format

예제; COMM3 (RS485)를 19200, Data bit: 7, Stop bit: 1, Parity:

even 으로 설정하기 위해서는 다음 명령문을 실행시켜야

한다.

SETBAUD 3, &HC4

중요: 두개의 COMM 포트 (RS232 및 RS485)는 서로 독립적으로

동작하기 때문에 이들은 서로 다른 Baud rate 및 포맷으로 설정되어

질 수 잇다. 만일 Baud rate 또는 통신 포맷 설정을 변경한다면

해당 TLServer에 설정되어 있는 것과 달라질 수 있다 이렇게 되면

TLServer와 TRiLOGI는 더 이상 변경된 COMM 포트를 통하여

PLC와 통신하지 못하게 될 것이다. 따라서 TLServer의 “ Serial

Communication Setup” 에서 TLServer의 시리얼 포트 설정을

변경된 PLC 설정과 똑같이 맞추어 주거나 PLC를 디폴트

포맷(38,400,8,n,1)으로 COMM 포트를 주기적으로 리셋 시켜

27

주어야 한다.

SETBAUD 명령을 활성화 시키기 위하여 특수 비트인 “ 1st.Scan”

접점을 사용한다면 SETBAUD 명령의 실행을 멈추게 하기

위하여서는 DIP Switch #4를 ON으로 설정하여야 한다. (또한

PLC를 이 방법으로 초기화 하거나 통신하는 경우 COMM1은 9600

bps 통신 모드로 만이 통신 가능하기 때문에 임시로 TLServer의

시리얼 포트의 설정 값을 9600bps로 설정하여 주어야만 한다.)

SETBAUD 명령을 중지 시키고 TRiLOGI를 사용하여 이 포트와

다시 통신을 하고자 한다면 PLC의 DIP Switch #4를 “ ON”

위치로 설정하면 된다.

1.9.4 다양한 통신 프로토콜의 지원

T100MD+ PLC는 진정한 마법사이다! T100MD+ PLC는 일부는 다음과

같이 현재 사실상 산업 표준 프로토콜로서 폭 넓게 적용되고 있는 많은

타입의 통신 프로토콜을 이해하고 통신할 수 있도록 설계되어 있다.

a) NATIVE HOST LINK 명령

b) MODBUS ASCII (Schneider 그룹의 등록 상표 )

c) MODBUS RTU* (Schneider 그룹의 등록 상표)

d) OMRON C20H protocols. (일본 Omron사의 등록 상표)

e) EMIT 3.0 Protocol (emWare 사의 등록 상표)

“ NATIVE” 프로토콜의 명령과 응답 포맷은 3장과 4장에 상세하게

설명되어 있다. 다른 프로토콜 및 T100MD+에 대한 Address Mapping은

5장과 6장에 상세하게 설명이 되어져 있다. 두개의 독립적인 COMM 포트

1 (RS232) 와 3 (RS485)은 상기 모든 프로토콜을 지원한다. 각각의

COMM 포트는 같거나 서로 다른 프로토콜을 각각 독립적으로 사용하여

통신을 할 수 있다. 이러한 T100MD+의 뛰어난 특징은 상기에 언급한

프로토콜들을 PLC가 완벽하게 자동으로 인식할 수 있도록 되어 있어

사용자에게 사용상의 편의성을 극대화 시켜준다. 특정한 통신 프로토콜을

포트에 설정하기 위한 하드웨어적인 DIP 스위치는 없으며 특별한

소프트웨어의 설정 작업이 필요 없다. 아래에 프로토콜을 어떻게

자동으로 PLC가 인식하는지에 대해 설명하여 놓았다.

1) PLC에 전원을 켰을 때 RS232, RS485 양쪽 COMM 포트들은

“ AUTO” 모드로 설정이 된다. 이것은 COMM 포트를 통해

28

들어오는 모든 시리얼 데이터를 개방적으로 받아들이며 프로토콜을

분석할 준비가 되어있음을 의미한다. CPU는 시리얼 데이터가 특정한

프로토콜에 해당하는지를 분석하고 특정한 통신 프로토콜에

해당된다면 COMM 모드를 해당 프로토콜로 자동으로 설정된다.

2) 프로토콜이 인식이 되면 CPU는 해당 COMM 포트가 해당

프로토콜에 대해서 만이 통신을 할 수 있도록 해당하는 COMM

모드로 COMM 포트를 설정한다. “ FCS” , “ LRC” , 또는

“ CRC” 와 같은 에러 걸출 데이터는 수신된 명령들을 검증하기위해

계산되어 진다. 만일 에러가 수신된 명령 (수신된 시리얼 통신

데이터)에서 발견이 되면 CPU는 각각의 프로토콜에서 정의된

조치에 따라 응답하게 된다.

3) COMM 포트가 특정 COMM 모드에 설정되면 이후 해당 COMM

포트를 통해 들어오는 다른 프로토콜들에 대한 명령 등은 에러로서

간주하며 이 명령들을 받아 들이지 않는다. 예를 들자면 COMM#1

포트가 “ RTU” 모드로서 MODBUS RTU 명령을 받고 있는

상태라면 “ NATIVE” 모드를 사용한 어떠한 TRiLOGI의 통신

시도에 대하여 응답을 하지 않는다. 다른 프로토콜 모드로 설정이

되어져 있는 PLC COMM 포트에 TRiLOGI를 사용하여 통신을

시도한다면 통신 에러 메시지를 받게 된다.

4) 하나의 COMM 모드에서 다른 통신 프로토콜 모드로의 유연한

전환을 지원하기 위하여 T100MD+는 특정 COMM 모드가 해당

COMM 포트로부터 10초 동안 해당 통신이 없다면 특정 COMM

모드를 자동으로 타임아웃 시키고 이 COMM 포트의 모드를 초기

통신 모드인 “ AUTO” 모드로 전환 시킨다. 사용자가 어느 한

기기로부터 다른 기기로 시리얼 컨넥터를 변경하고자 할 때 COMM

모드를 다른 모드로 전환을 할 수가 있다. 시리얼 컨넥터를 교체하는

시간 동안 COMM 포트로 데이터가 들어오지 않기 때문에 CPU는

COMM 모드를 초기화 시킬 수 있는 충분한 시간을 갖는다. 하지만

특정 COMM모드를 가장 확실하게 초기화하는 방법은 PLC의 전원을

껐다가 다시 켜는 것이다. 이것은 COMM 포트가 통신 초기 모드인

“ AUTO” 모드로 확실하게 설정이 되게 한다.

5) 사용자는 또한 COMM 포트가 시리얼 데이터 만을 사용하도록 하기

위해 NO PROTOCOL 모드로 COMM 포트를 설정하기 원한다면

SETPROTOCOL 명령어를 사용하여 이를 설정할 수 있다. 이것은

통신 프로토콜의 헤더와 같은 일부 시리얼 데이터의 에러 처리를

방지할 수가 있으며 PLC가 자동으로 응답할 수 있도록 하여준다.

29

SETPROTOCOL은 또한 PLC를 특정한 프로토콜 모드로 설정하는데

사용할 수 있다. COMM 포트가 특정한 역할을 가지고 있고 실수에

의해 다른 통신 모드로 통신하는 것을 원하지 않을 때 적용할 수

있다. SETPROTOCOL 명령에 대한 상세한 설명은 TBASIC

프로그램머를 위한 참조 매뉴얼을 참조하기 바란다.

*** 주의:

만일 COMM 포트를 Non-Native, Non-Auto 모드로 고정시켜

놓으면 TRiLOGI는 더 이상 PLC와 통신을 할 수 없게 된다. 이때

COMM 모드를 “ AUTO” 모드로 초기화 하기 위해서는 PLC의

전원을 껐다가 다시 켜야 한다. 만일 SETPROTOCOL 명령을

활성화 시키기 위하여 “ 1st.Scan” 특수 비트를 사용하고 있다면

SETPROTOCOL 명령의 실행을 중지시키기 위하여 PLC의 DIP

스위치 #4를 ON으로 설정하여 놓고 PLC의 전원을 껐다가 다시

켜야 한다. (* PLC를 이러한 방법(DIP 스위치 #4: ON)으로 통신

초기화 시키는 경우에는 COMM1 (RS232)포트는 자동으로 9600

bps로 통신 모드가 설정이 되며 사용자는 TLServer의 시리얼

포트 설정 화면에서 시리얼 포트의 통신을 9600 bps로 임시로

설정하여 주어야 한다는 것을 잊지 말아야 한다.)

1.9.5 TBASIC (Rev D Board)를 통한 COMM 포트와의 통신

1.9.4절에 설명한 자동으로 통신 프로토콜을 설정하는 기능이외에 시리얼

통신 포트 COMM#1(RS232) 및 COMM#3 (RS485) 양쪽 모두 TBASIC

명령을 사용하여 사용자 프로그램에 통해 모든 기능을 제어할 수 있다.:

NETCMD$, READMODBUS, WRITEMODBUS, INPUT$, INCOMM,

PRINT# 및 OUTCOMM. 다음과 같이 이러한 명령들은 오퍼레이팅

시스템과 어떻게 상호 작용을 하는지를 이해하는 것이 필요하다.

시리얼 데이터가 COMM 포트에 의해 수신되어 질 때 T100MD+의

오퍼레이팅 시스템은 나중에 사용자 프로그램에 의해 사용되어질 256

바이트의 버퍼 영역에 저장이 된다. 이 시리얼 데이터는 1.9.4절에 명기된

프로토콜들 (EMIT 3.0 제외) 중의 하나를 사용하는 시리얼

데이터일지라도 이 버퍼에 저장이 된다. 더불어 인식된 프로토콜 명령의

처리는 시리얼 버퍼 대기열로부터 그 문자들을 제거하지않으며 사용자

프로그램에서 확인하여 볼 수 있다.

각각의 COMM 포트는 자신 만의 독립된 256 바이트의 시리얼 데이터

버퍼를 갖고 있다. 256 바이트의 버퍼가 시리얼 데이터에 의해 채워지기

30

전까지 사용자 프로그램이 데이터를 검색하여 사용하는 동안 이

데이터들은 지워지지 않는다. 만일 256 바이트의 버퍼가 다 채워지면

가장 오래된 데이터에 덧씌워 저장된다. 다음에 NETCMD$,

READMODBUS, WRITEMODBUS의 기능과 INCOMM 과 INPUT$,

PRINT#와 OUTCOMM 기능들이 시리얼 버퍼와 어떻게 상호 작용을

하는지 설명을 하여 놓았다.

a) NETCMD(ch, x$)

이 명령은 x$에 표현하여 놓은 호스트 링크 명령 문자열을 M-시리즈

PLC, H-시리즈 PLC 또는 기타 다른 PLC 및 각종 Remote I/O

모듈들에게 ch에서 지정한 통신 포트를 통해 보내는 역할을 한다.

호스트 링크 문자열(x$)을 보낸 후 이 명령 문자열을 받은

기기들로부터 응답 문자열을 일정한 시간동안 기다린 후 응답

문자열을 받는다.

ch - 통신 포트 번호

x$ - FCS (Frame Check Sequence) 및 종단 문자 (Terminator

characters)가 포함되지 않은 호스트링크 명령을 표현한다.

NETCMD$ 기능은 자동으로 FCS를 계산하고 x$의 끝에

추가시켜 놓으며 종단 문자와 함께 ch에서 지정한 COMM

#ch 통신 포트를 통하여 다른 RS485 기기에 종단문자와

함께 내 보내어 진다.

하지만 x$의 끝에 “ ~” 문자를 추가 시켜 놓으면 자동으로

FCS 및 종단 문자를 추가 시켜 놓는 기능이 정지가 되고

x$의 표현 문자만이 지정된 통신 포트로 내보내어 진다.

따라서 기기의 고유한 통신 명령어로 통신하는 경우

“ ~” 문자 옵션을 추가하여 자유롭게 통신할 수 있는

막강한 비표준 ASCII 통신 명령어 이다.

예) SuperPLC의 자체 통신의 경우 ;

A$ = NETCMD$(3, “ @05RI00” )

명령어 해석: 이 PLC의 COMM#3 포트에 연결된 네트워크

ID(주소)가 05인 PLC의 INPUT 채널 #0 을 읽고, 읽혀진

응답 문자열을 A$에 저장한다.

31

Note:

(1) 만일 통신 대상 PLC 또는 기기로부터 응답이 없을

경우 NETCMD$는 빈 문자열을 리턴한다.

(2) NETCMD$ 명령은 응답문자열의 FCS를 검사하며

(“ ~” 옵션을 사용하지 않았을 경우) 만일 FCS가 잘못

되었다면 (틀리 다면) 시리얼 통신 수신에 에러가

발생한 것으로 간주하여 빈 문자열을 리턴한다.

NETCMD$ 는 원래 M-시리즈 PLC와 SuperPLC의

자체 통신 프로토콜을 사용하여 다른 슬래이브

M-시리즈 PLC와의 통신을 위해 만들어 졌다.

NETCMD$ 명령은 2-바이트의 FCS 문자를 자동으로

계산하고 x$문자열 끝에 추가하도록 되어 있어

응답되어 돌아온 응답 문자열을 받아 들이기 전에

에러를 검사하도록 되어 있다.

하지만 다른 ASCII 프로토콜을 지원하기 위하여

“ ~” 옵션을 제공하고 있다. 즉 x$끝에 “ ~” 문자를

추가 함으로서 FCS 및 CR 문자의 자동 추가 기능을

정지하고 사용자가 표현한 순수한 x$ 문자열 만이

네트워크 상에 내보내어 진다. 따라서 CR (Carriage

Return)이 명령 문자열 (x$) 끝에 반드시 붙여야

한다면 다음과 같이 사용하면 된다.

NETCMD(ch, x$+CHR$(13)+” ~” )

예를 들어 RS485 네트워크의 ID(주소)가 02번인

ADAM-4017 Remote Analog Input Module(8

CH)의 모든 채널의 아날로그 값(8개의 아날로그 입력

값)을 PLC 통신 포트 #3(RS485 포트)을 통해 읽고자

한다면 다음과 같이 사용하면 된다. x$ 값에 “ #02”

(RS485 노드 주소 02의 모든 아날로그 값 (8개의

아날로그 입력 값)을 읽으라는 ADAM-4000 시리즈의

명령)을 표현하면 된다.

A$ = NETCMD(3, “ #02” +CHR$(13)+” ~” )

32

명령어 해석:

이 PLC의 COMM#3 포트에 연결된

네트워크 ID(주소)가 02인 기기

(ADAM-4017)의 모든 아날로그

값(8개의 AI값)을 읽고, 읽혀진 응답

문자열을 A$에 저장한다.

여기서 CHR$(13)은 CR (Carriage

Return)을 의미한다.

ADAM-4000시리즈의 경우 명령

문자열 끝에 CR 문자를 요구한다.

ASCII 통신을 하는 기기와의 통신은 MODBUS ASCII 및

RTU 명령 (READMODBUS / WRITEMODBUS) 이외에

NETCMD$ 명령에 의해 표준 프로토콜을 사용하지 않는

기기일 지라도 SuperPLC와 자유롭게 통신을 할 수 있다.

NETCMD$ 명령어는 매우 강력한 통신 명령어인 것이다.

MODBUS 통신 일지라도 READMODBUS 또는

WRITEMODBUS 명령을 사용하지 않고 NETCMD$

명령을 사용하여 MODBUS 통신을 할 수 있다.

b) READMODBUS

MODBUS 통신용 읽기 명령어 (이 경우 SuperPLC는 MODBUS의

MASTER기기로서 동작)

c) WRITEMODBUS

MODBUS 통신용 쓰기 명령어 (이 경우 SuperPLC는 MODBUS의

MASTER기기로서 동작)

d) INCOMM(n)

INCOMM(n) 기능은 매 실행 시 마다 시리얼 데이터 버퍼에 있는

8비트 이진수(Binary)로 표현되어 있는 한 문자(character)를 읽고

제거하는 것이다. 지워야 할 데이터가 버퍼에 없을 때 이 기능은

a-1를 리턴한다. INCOMM 명령에 의하여 지워진 데이터는 더 이상

INPUT$ 명령에서 이용할 수 없다.

e) INPUT$(n)

INPUT$(n)기능이 실행될 때 CPU는 문자열의 종단어(Terminator)

로서 사용되는 값 13 (ASCII CR 문자)이 있는지 바이트를 확인하기

위하여 COMM#n의 버퍼를 검사한다. 이 종단어(Terminator: 13:

33

CR)이 존재 한다면 이 문자열을 이루고 있는 모든 문자들은 COMM

버퍼로부터 읽어 들인 후 제거가 된다. 만일 종단어(Terminator)를

포함하고 있는 완전한 문자열이 존재하지 않으면 COMM 버퍼는 이

명령에 영향을 받지 않으며 INPUT$(n)은 빈 문자열(Null String)을

리턴한다. 이것은 완전한 문자열이 수신되기 전에 시리얼 문자들이

제거되지 않게 한다.

f) PRINT #n

PRINT 문은 시리얼 입력 버퍼와는 별개의 256 바이트의 시리얼 출력

버퍼로 원하는 ASCII 문자를 전송하도록 한다. 따라서 PRINT 명령은

수신된 문자를 저장하고 있는 시리얼 입력 버퍼의 내용에 어떠한

영향도 주지않는다. 오퍼레이팅 시스템은 시간차를 가지고 시리얼

출력 버퍼의 데이터를 바이트 단위로 전송을 한다. 각 COMM 포트는

자신의 독립적인 25 6바이트의 시리얼 입력 버퍼 뿐만이 아니라 256

바이트의 출력 버퍼를 가지고 있으며 2개의 각각 시리얼 포트는

서로에 대해 완전히 독립적으로 동작을 한다.

T100MD+ PLC는 시리얼 문자를 COMM3 (RS485) 포트로 보낼 때

RS485 전송 드라이버를 자동으로 동작시킨다. 시리얼 출력 버퍼에

마지막 문자의 STOP 비트가 보내어 질 때 오퍼레이팅 시스템은

즉각적으로 RS485 전송 드라이버를 비활성화 시키고 수시모드로 전환

시킨다. 이 기능은 일반적으로 RS485 드라이버(송신)/수신 모드의

방향을 제어하기 위한 시간 할당을 해야 하는 프로그래머에게는

대단히 편리한 방식을 제공하고 있다. 즉 프로그래머는 T100MD+

PLC의 RS485 송수신 모드를 위한 시간 할당 등을 별도로 할 필요가

없으며 T100MD+ PLC가 알아서 자동으로 전환 시켜준다.

g) OUTCOMM

이 명령어는 시리얼 출력 버퍼를 통하지 않고 직접 시리얼 COM

포트로 하나의 바이트씩 전송한다. COMM3 (RS485) 포트에서 문자를

보내기 전에 RS485 전송 기능의 작동 개시 또는 중지를 할 수 있으며

STOP 비트가 보내어 지면 즉각 RS485 전송을 중지한다.

1.9.6 T100MD+ PLC의 원격 프로그램 및 모니터링을 위한 모뎀 사용

TRiLOGI 버전 4.1x는 표준 모뎀을 통하여 원격 다이얼-업 (PLC가

접속할 호스트 전화 번호에 직접 전화 걸어 모뎀 연결하는 방식) 모뎀

통신을 지원한다. 두개 기기 간의 모뎀 통신을 위해서는 두 대의 모뎀이

필요하다. 호스측의 모뎀 설정은 TRiLOGI 버전 4.1x 소프트웨어에 의해

34

이루어지며 PLC측의 모뎀 설정은 TRiLOGI 프로그램이 실행되고 있는

호스트 컴퓨터와의 통신을 위해서 PLC에서 모뎀을 설정한다.

a) 결선

모뎀은 종종 PLC의 COMM1에 연결된다. 대부분의 모뎀에 있는

시리얼 포트는 DCE 타입이기 때문에 앞 그림1.10에서 보여주는 것과

같은 Null 모뎀 케이블이라고 알려진 시리얼 통신 케이블이 필요하다.

만일 모뎀이 아래 그림1.11과 같이 DB25 컨넥터 만을 지원한다면

다음과 같이 케이블을 연결하여야 한다.

그림 1.11 모뎀

모뎀측의 DB25 컨넥터

연결하여야 한다는 점을

동작할 수 있도록 기기

위해 요구된다.

모뎀은 또한 NETWOR

프로그램밍 및 모니터링

자동 송수신 전환 모드

요구된다. (* 호환성 검

SuperPLC 대리점

바랍니다.)

b) 프로그램밍

PLC COMM 포트는

이용하지 않기 때문에 모

지속적인 통신을 위해 9

PLC측의 모뎀은 TRiLO

1

의 DB25 포트와 PLC의 COMM1과의 연결

의 핀 6 (DSR)과 핀 20 (DTR)은 서로

유의하여야 한다. 이것은 모뎀이 적절하게

의 작동이 준비되어 있음을 모뎀에 알려주기

K TRiLOGI를 사용하여 멀티 드롭의 원격

을 위해 COMM3에 연결될 수도 있다. 이때

를 가지고 있는 RS232-to-RS485 변환기가

사를 마친 이러한 변환기에 대하여 여러분의

또는 [email protected]에 문의하시기

모뎀의 RS232 포트의 핸드쉐이킹 신호를

뎀을 위한 최대 Baud Rate는 신뢰성이 있고

600 bps 또는 그 이하로 제한이 된다. 아울러

GI가 원격 사이트의 모뎀에 다이얼-업(전화

35

걸기) 할 때 자동 연결이 가능하도록 자동 응답 (Auto-answer)

모드로 설정하여야 한다.

다음은 COMM 포트 #1에 9600 bps로 설정하고 모뎀을 자동 응답

(Auto-answer)모드로 설정하는 TBASIC 문이다.

SETBAUD 1, 3 ‘ 9600 bps, 8 data bits, 1 stop bit, no parity로 설정

PRINT #1 “ ATDTS0=1”

TRiLOGI는 TBASIC 매뉴얼에 기술되어 있는 것처럼 호출하는 모뎀의

운전 모드를 “ No compression” , “ Disable Flow Control” 모드

등으로 설정하는 것으로 가정하였다. 모뎀의 한쪽이 이러한 조건으로

설정되어 있으면 다른 한쪽의 모뎀은 통신이 연결되기 전에 초기 통신

처리 과정에서 이러한 설정에 따르게 된다. 따라서 상기에 언급된

모드들로 모뎀을 설정하기 위하여 추가적인 AT 명령들을 보낼 필요가

없다. 그러나 만일 모뎀이 SCADA 소프트웨어등과 같은 다른

프로그램과 함께 사용되어 진다면 사용자는 다른 조건에 부합하는

설정 모드로 이 모뎀을 설정할 필요가 있다. TRiLOGI 소프트웨어

CD-ROM 내에 들어있는 “ MODEM-1.ZIP” 파일에 이에 대한

상세한 응용 노트가 들어 있다. 대부분의 모뎀들은 모뎀의 전원이

꺼졌다가 다시 켜졌을 때 예전에 설정하여 놓았던 모드로 자동적으로

재 설정이 되도록 설정한 모드들에 대한 정보가 비-휘발성 메모리

내에 저장되어진다. 모뎀을 이러한 방법으로 설정한다면 PLC가

모뎀을 초기화 시킬 필요가 전혀 없다. (PLC의 COMM1 포트의 Baud

rate는 9600으로 설정하여야 한다는 것을 잊어서는 안 된다.) 100%

Hayes 호환 모뎀에서 이러한 것을 위한 AT 명령은

“ AT&W0&Y0” 이다. 모뎀의 다른 명령에 대한 사항은 해당 모뎀의

참조 매뉴얼을 참조하기 바랍니다.

1.9.7 두 번째 멀티드롭 네트워크 구성

복잡한 분산형 제어시스템의 응용을 위해 내장된 RS485 포트가 데이터의

상호 교환을 위해 PLC들 간의 내부 네트워크 구성을 위해 사용되어진다.

네트워크에 연결된 PLC들 중 일부 또는 모두가 SCADA 시스템 또는

MMI에 연결되는 경우가 있다. PLC COMM#2의 RS485 네트워크를

이용하여 SCADA 시스템 또는 MMI에 연결하는 방법이외에 PLC COMM

포트#1를 통해 두 번째 멀티드롭 네트워크를 구성할 수 있다. 하지만

PLC COMM 포트#1은 RS485 드라이버 IC의 송신 또는 수신모드로

전환시키는 내장된 신호를 갖고 있지 않기 때문에 4-선식 RS485 및

36

4-선식 RS-422 방식으로 사용하여야 한다. 각각의 PLC는 4-선식

RS485/RS422 네트워크에 연결시키기 위하여 RS232-to-4-wire

변환기가 필요하다. 또한 호스트 컴퓨터 측에서도 4-선식 RS485/RS422

변환기가 필요하다. T100MD+ (Rev D)의 두개의 COMM 포트는 각각

상호 독립된 통신 망을 구축할 수 있다. PLC 통신 네트워크 구축에 대한

응용에 대하여 좀더 알고 싶으신 분은 이메일 [email protected] 으로

연락 주시기 바랍니다.

1.10 DIP 스위치

DIP

스위치 OFF ON

SW1-1

PLC의 전원이

꺼졌을 때 모든

출력, 내부 릴레이,

타이머 및 카운터

값들을 유지 하지

않는다.

MX-RTC 모듈이 설치 되었을 때 적용

가능한 기능임.

MX-RTC 모듈이 설치되어져 있는

경우 PLC의 전원이 꺼졌을 때 밧데리

백업이 되고 있는 RAM내의 모든

내부 변수들은 물론 모든 I/O, 타이머,

카운터 값들이 유지된다. 단, DAC,

PWM 데이터는 유지 되지 않는다.

SW1-2

COMM1포트가

EMIT 3.0

프로토콜에

응답한다.

COMM3 포트가 EMIT 3.0 프로토콜에

응답한다.

SW1-3 - -

SW1-4 정상 운전 모드

Ladder 및 TBASIC 프로그램의

실행이 일시 중지된다. 그러나 호스트

통신은 활성화 상태로 통신을 계속

유지한다. 프로그램의 무한 루프 등의

상태로 인하여 호스트와의 통신이

안될 때 적용. 이 스위치를 ON상태로

놓아둔 상태에서 PLC의 전원을

껐다가 다시 켜면 PLC의 COMM1은

38,400 bps 대신에 9,600 bps의 Baud

Rate로 설정이 된다.

주의: T100MD+ Rev D PLC의 COMM 포트가 각각 독립적으로 NATIVE,

MODBUS 및 OMRON 프로토콜들을 동시에 처리할 수 있지만

37

EMIT3.0 프로토콜의 경우에는 두개의 포트 중 하나에서 만이

사용될 수 있으며 이것은 DIP 스위치 SW1-2으로 선택한다.

유용한 SW1-4 (호스트 컴퓨터와의 통신 에러 시 활용)

사용자 프로그램에 의해 무한 루프등에 의한 통신의 문제가 발생하더라도

PLC와 호스트 간의 통신을 할 수 있도록 모든 노력을 기울여 오고 있다.

만일 이렇게 호스트와의 통신을 방해하는 잘못된 프로그램을 수정하거나

새로운 프로그램으로 PLC에 다운로드 하고자 할 때 사용자는 호스트와

PLC간의 통신 에러로 인하여 새로운 프로그램을 PLC에 다운로드 하거나

잘못된 프로그램을 삭제할 수가 없게 된다. 또한 TRiLOGI와 충돌이

일어나는 데이터를 COMM 포트로 내보내거나 통신 Baud rate, 통신 포맷

또는 프로토콜 설정 명령어인 SETBAUD, SETPROTOCOL, PRINT 또는

OUTCOMM등과 같은 통신명령어를 사용할 때 이와 같은 현상이 일어 날

수 있다. 이러한 경우에 있어 PLC의 DIP 스위치 SW1-4를 ON 위치에

놓고 PLC의 전원을 껐다가 다시 켜는 것으로 PLC를 리셋 시키면 PLC는

통신 문제를 발생시키는 프로그램의 실행을 일시 중지 시키게 되고

사용자가 이러한 문제를 해결하기 위하여 프로그램을 수정하거나 새로운

프로그램을 다운로드 시킬 수 있도록 하여 준다.

주의: PLC의 DIP 스위치 #4을 ON으로 놓고 전원을 리셋(ON OFF

ON) 시키면 PLC COMM1 포트의 디폴트 Baud Rate와 통신

포맷은 자동으로 9600, 8,n,1 (COMM3은 이 DIP 스위치에 영향을

받지 않는다.)으로 된다. TRiLOGI 버전 4.1x는 이 Baud Rate을

자동으로 감지하는 능력을 가지고 있다. 다른 한편으로

TLServer는 PLC의 통신 포트에 자동으로 통신 Baud rate를

설정하지 않으므로 PLC의 DIP 스위치 #4을 ON으로 놓고 전원을

리셋시킨 후에 PLC와 통신을 하기 위해서는 사용자가 수동으로

TLServer의 시리얼 포트를 9600,n,8,1로 변경시켜 주어야 한다.

(PLC의 통신 문제를 해결한 후에는 즉, 문제해결을 위해 새로운

프로그램을 다운로드한 후에는 PLC의 DIP 스위치 4번을 OFF

위치로 놓고 PLC전원을 리셋 한 후 TLServer의 시리얼 통신

Baud rate를 38,400으로 다시 설정하여 주어야 한다. 만일 DIP

스위치 4번을 OFF 위치로 놓고 PLC 전원을 리셋 시킨 상태에서

TLServer의 통신 Baud rate를 38,400으로 변경하여 주지 않으면

PLC는 통신 Baud rate를 38,400으로 가정하기 때문에 PLC와

TLServer간의 통신 Baud rate가 맞지않아 통신 에러가 발생하게

된다.)

38

1.11 CPU 상태 표시 LED

다음과 같이 T100MD PLC에는 3개의 LED가 있다.

CPU가 EEPROM으로부터 PLC프로그램을 로드 할 때 이 3개의 LED

모두 켜진다. 프로그램 로드가 끝난 후 LED 모두 꺼지게 되며 다음과

같이 PLC의 운전 상태에 따라 일부 LED가 켜질 수 가 있다.

a) RTC Error (녹색 LED)

이 LED는 옵션 항목인 밧데리 백업 MX-RTC 모듈이 설치되어 있지

않은 상태에서 전원-ON 또는 WDT 리셋 후에는 ON이 된다. 이것은

리얼타임클럭 (RTC)의 일자 및 시간이 공장 초기 설정 값으로 초기화

되었다는 것을 의미한다. TRiLOGI Ladder 에디터의 메뉴 중 “ 특수

비트 (Special Bit)” 메뉴에 있는 RTC Err 플래그 또한 ON 상태가

된다. TRiLOGI Ladder 에디터의 “ Controller” 풀-다운 메뉴에 있는

“ SetPLC Clock/Calendar” 명령을 사용하여 PLC의 일자와 시간을

설정하게 되면 자동으로 이 LED는 OFF가 되며 RTC Error 플래그

또한 OFF가 된다.

b) Pause (적색 LED)

다음 상황이 발생하였을 때 이 LED가 ON된다.

i) PLC의 EEPROM이 손상되었을 때

ii) TBASIC의 PAUSE 문이 실행되었을 때

iii) 사용자가 온라인 감시 (On-Line Monitoring) 모드에서 <P>

키를 눌러 PLC를 일시 정지 시켰을 때

iv) 프로그램을 중지 시키기 위하여 PLC의 DIP 스위치 SW1-4를

ON 시켰을 때

만일 이 LED가 ON이 된다면 TRiLOGI 버전4가 실행되고 있는 호스트

컴퓨터를 PLC에 연결하고 “ On-Line Monitoring” 프로그램을 실행

시킨 후 PAUS 조건이 야기된 이유에 대하여 확인을 하여 보아야 한다.

위의 조건 i) 및 ii)을 제외하고는 “ On-Line Monitoring” 화면에서

39

<P> 키를 누르는 것에 의해 PAUSE 상태를 해제 시킬 수 있다. 만일

PLC의 EEPROM이 손상되었다면 PLC로 프로그램을 다시 로드 하여야

한다.

c) Run Error (적색 LED)

이 LED가 ON이 되면 TBASIC 명령을 실행하는 동안 런-타임 에러가

발생했다는 것을 의미한다. 이때 시스템은 해당 에러가 발생한

TBASIC프로그램 CusFn에서 중지가 된다. 만일 프로그램머가

TRiLOGI의 “ On-Line Monitoring” 을 실행 시키면 에러가 발생한

CusFn과 런-타임 에러의 원인에 대하여 TRiLOGI 화면에 표시하여

준다. TBASIC 시뮬레이터는 범위를 벗어나는 값 등에 대한 정보 등을

포함하여 일어날 수 있는 많은 타입의 런-타임 에러 정보를 검사한다.

하지만 T100MD PLC는 몇 가지 매우 중요한 런-타임 에러들 만이

사용자에게 보고를 한다. 나머지 것들은 무시가 된다. 다음은

T100MD에서 사용자에게 보고되는 런-타임 에러들이다.

i) 0(영; Zero)로 값을 나누었을 때

ii) STEP=0를 사용하는 FOR-NEXT 루프가 있을 때

iii) Call Stack Overflow, 잘못된 순환 CALL이 있을 때

iv) 허용되지 않는 Opcode (Illegal Opcode) – 메이커에 연락 요망

v) 시스템 변수 인덱스(System Variable Index)의 범위 초과 :

이것은 일반적으로 범위를 초과하는 변수의 범위를 지정하여

사용할 때 발생한다. 예를 들자면 DM[0], INPUT[-1],

DM[5000]등과 같은 경우이다. 만일 변수가 포함된 이러한

에러가 발생한다면 변수의 인덱스 값을 검사하여 보아야 한다.

(예; DM[x], 만일 x=0라면 런-타임 에러가 발생할 것이다.)

모든 런-타임 에러는 반드시 프로그램을 더 진행하기 전에 확인하고

수정되어져야 만 한다.

1.12 내부 릴레이, 타이머 및 카운터 등

(Relays, Timers & Counters, etc.)

T100MD+ PLC는 256개의 내부 릴레이, 64개의 타이머 (이중 일부 또는

모두를 “ 고속(High Speed)” 타임머로 설정할 수 있다.), 64개의 카운터,

다양한 주기(0.01초, 0.02초, 0.05초, 0.1초, 0.2초, 0.5초, 1초, 1분 등)를

갖는 8개의 클럭 소스들을 지원한다.

40

T100MD+는 또한 각각 32개의 스텝을 갖고 있는 8개의 시퀀서

(Sequencer)를 제공한다. 한 Sequencer는 고정된 순차 제어로 운전하는

기계 또는 공정을 프로그램하는데 대단히 편리한 장점을 제공한다.

카운터 중에서 처음 8개의 카운터의 일부 또는 전부는 Sequencer

“ Seq1” 에서부터 “ Seq8” 까지에 대응하는 Sequencer의 스텝

카운터로서 사용되어 질 수 있다. Sequencer의 각 스텝(31까지)은

SeqN:XX (N=Sequencer의 번호(1~8), XX=스텝(Step)번호 (0~31))의

형식으로 Ladder 다이아 그램에서 하나의 접점으로 사용될 수 있다.

내장된 Sequencer에 대한 상세한 설명은 iTRiLOGI 매뉴얼을 참조하기

바랍니다.

41

2장 운전 절차

2.1 프로그램밍 T100MD+ PLC는 IBM 호환 PLC상에서 TRiLOGI 버전 4.x

소프트웨어를 사용하거나 또는 다양한 플랫폼상에서 실행하고 있는

인터넷 TRiLOGI 5.0을 사용하여 프로그램 할 수 있다. TRiLOGI는 풀

스크린 Ladder 로직 에디터, 컴파일러 및 시뮬레이터 소프트웨어 이다.

TRiLOGI 버전 4.x는 Ladder 로직 및 TBASIC 양쪽 모두를 프로그램밍

할 수 있는 강력한 프로그램밍 및 디버깅 환경을 제공하는 표준 DOS

기반의 소프트웨어 팩키지이다. 상세한 내용은 TRiLOGI 프로그램머를

위한 매뉴얼을 참조하기 바랍니다.

인터넷 TRiLOGI 5.0 클라이언트/서버 소프트웨어 팩키지와 함께

M-시리즈 PLC는 웹-브라우저 만을 사용하고 인터넷을 경유하여 프로그램

할 수 있는 세계 최초의 PLC이다. 믿어지지 않는 강력한 기능의

소프트웨어의 설치 및 운전에 대한 상세한 설명에 대하여 인터넷

TRiLOGI 버전 5.x On-Line Help를 참조하기 바랍니다.

2.2 시뮬레이션

개발 환경에서 TRiLOGI 소프트웨어가 제공하는 유례없이 대단한 특징은

내장된 시뮬레이터 이다. 이 시뮬레이터로 사용자는 단지 키보드 또는

마우스 등을 사용하는 것만으로 입력조건을 시뮬레이션하고 출력, 내부

릴레이, 타임머, 카운터의 현재 상태 및 값들을 시뮬레이터 화면에서

확인하여 볼 수 있는 것으로 사용자의 프로그램과 대화를 하며

프로그램을 개발할 수 있는 것이다.

이 시뮬레이터는 어떠한 물리적인 하드웨어 및 PLC를 필요로 하지

않는다. 따라서 사용자의 Ladder 로직 프로그램을 하드웨어에 설치하기

앞서 테스트하고 디버깅하는데 있어 대단히 효과적인 도구를 제공한다.

실제 하드웨어에 프로그램을 로드 하여 테스트하기 전에 일어날 수 있는

많은 로직적인 에러를 제거하기 위하여 이 시뮬레이터를 잘 활용한다면

프로그램밍 및 디버깅 시간을 당연히 대단히 절약 할 수가 있다. 또한

프로그램의 에러에 의해 기계 또는 장치에 값비싼 손상을 입힐 수 있는

상황을 제거하는데 대단한 기여를 한다.

42

2.3 PLC로의 프로그램 전송

작성된 프로그램의 TRiLOGI 시뮬레이션 결과가 만족하게 되면

<ESC>키를 눌러 Ladder Logic 에디터 화면으로 돌아서 T100MD PLC로

Ladder 프로그램을 전송 시키기 위하여 PC를 PLC의 COMM1에

연결한다. “ Controller” 풀-다운 메뉴를 열거나 키보드 상에서

<Ctl-T>를 눌러서 메뉴에서 “ Controller” 선택하고 메뉴 안에서

“ Program Transfer” 선택한다. TRiLOGI는 프로그램이 로드 될 PLC의

최대 입출력 수 등에 대하여 조회를 한다. TRiLOGI는 이러한 제한을

벗어나는지를 확인하기 위해 Ladder 프로그램을 재 컴파일 한다.

컴파일이 성공적으로 완료되면 컴파일 된 코드가 수초 내에 T100MD

PLC로 전송이 된다.

프로그램이 성공적으로 전송이 완료된 후 사용자는 모든 출력, 내부

릴레이, 타임머, 카운터 그리고 모든 내부 시스템 변수 값들을 “ OFF”

상태로 초기화 시키기를 원하는지를 묻는 프롬프트가 화면 상에 나타난다.

이것은 성공적으로 전송 완료된 프로그램에서 단 한번 나타난다. 만일

전송한 Ladder 프로그램을 즉시 실행 시키고 싶지 않다면 Ladder

프로그램을 전송하기 전에 PLC의 하드웨어 DIP 스위치 SW1-4를

ON시켜야 하며 이 프로그램을 실행 시키고자 할 때는 DIP 스위치

SW1-4를 다시 OFF 위치로 해놓으면 된다.

만일 프로그램을 다운로드하는 동안에 에러가 발생하고 통신이 실패하게

되면 CPU는 바라지 않는 결과를 미연에 방지하기 위하여 부분적인

프로그램의 전송(다운로드)을 실행하지 않는다. 모든 것이 정상적으로 잘

진행이 되었다면 사용자는 아무 키나 누르는 것에 의하여 다시 에디터

모드로 돌아갈 수 있다.

암호 보안

[TRiLOGI 버전 4.x] 사용자는” Target Access” 메뉴에서 “ Set

Password” 항목을 선택하여 1~6 문자의 프로그램

전송 보호 암호를 정의할 수 있다. 암호가

정의되어지면 사용자가 PLC로 프로그램으로

전송하기를 원할 때 마다 암호를 입력할 것을 요구

받게 되며 정확하지 않은 암호를 입력하게 되면

프로그램의 전송이 취소된다. 이것은 인증이 되지

않은 사람으로부터 PLC 프로그램이 변경되는 것을

43

방지하기 위함이다. 만일 사용자가 암호를 잊었다면

PLC를 프로그램을 다시 할 수 있는 유일한 방법은

“ Target Access” 메뉴에 있는 “ Delete

Password and Clear Program” 명령을 사용하여

암호를 우선 제거하는 것이다. PLC내에 있는

Ladder 로직 프로그램은 이 명령이 실행되어질 때

삭제가 되어진다. 사용자는 PLC의 운전을 위하여

새로운 프로그램을 PLC에 다운로드 하여야만

한다.

[TRiLOGI 버전 5.x] 상기 버전 4.x에서의 암호 보안은 인터넷 TRiLOGI

버전 5.0는 지원하지 않는다. 인터넷 TRiLOGI

(Ver 5.x)상에는 이미 두 단계의 암호 체계가 있기

때문이다. – 하나는 TLServer상에서 정의되어지며

다른 하나는 SETPASSWORD라는 TBASIC 명령에

의해 정의되어진다. PLC 프로그램밍 환경에서

이러한 두 단계이외의 한 단계 더 암호 단계를

두게 되면 사용자에게 오히려 혼란만 가중시키는

결과를 초래할 수 Target Access” 메뉴의 “ Set

Password” 기능을 삭제하였다. 그러나 있기

때문에 인터넷 TRiLOGI 버전 5.x에서는 상기

TRiLOGI 버전 4.x의 ” TL41.EXE (TRiLOGI 버전

4.1)에 의해 보호가 되어져 있는 PLC로 TRiLOGI

버전 5.x를 사용하여 프로그램의 다운로드를

시도하게 되면 “ Prog. Transfer password” 에

대한 화면을 보게 되며 암호 입력을 요구 받게

된다. 따라서 계속 진행을 하기위해서는 정확한

암호를 입력하여야 한다. 이는 버전 4.x의

TL41.EXE 프로그램에서 작성된 “ 전송 보호 암호

(Transfer Protection Password)의 관리(정의 및

삭제)는 여전히 TRiLOGI 버전 5.0에서도

지원한다는 것을 의미한다.

2.4 에러 및 문제

소스 파일을 컴파일하는 동안에 어떠한 에러든 검출되면 즉각적으로

프로그램의 다운로드를 중지한다. TRiLOGI의 시뮬레이션 과정에서

프로그램이 성공적으로 시뮬레이션 되어졌다 하더라도 컴파일 과정에

에러가 검출이 되면 첫 번째 에러 내용을 화면 상에 나타내 준다. 이러한

44

에러 검출하는 컴파일 기능은 시뮬레이션을 실행하기 전에 에러를

검출하고 수정할 수 있도록 하여 주며 에러가 발생할 수 있는 가능성을

최소화 시켜 주는 TRiLOGI의 쉬운 프로그램밍 지원 기능 중의 하나이다.

PLC 프로그램의 길이는 (16-비트)” 워드(Word)” 들로 측정이 된다.

T100MD+ PLC는 6016 Words까지 프로그램을 할 수 있도록 지원한다.

만일 사용자의 Ladder 로직 프로그램이 컴파일 한 후 6016 words를

초과하게 되면 컴파일러는 이것을 에러로서 취급을 하게 되며 프로그램

다운로드 진행을 중지한다. 만일 이러한 현상이 일어 난다면 사용자는

프로그램의 메모리 사용을 최적화한 프로그램으로 단순화 시켜 프로그램

사이즈를 줄여야 한다.

2.5 온라인 모니터링 및 제어

TRiLOGI는 프로그램내에서 PLC의 운전을 직접 제어할 수 있도록

허용한다. 사용자는 “ Controller” 주 메뉴화면에서 “ On-Line

Mon/Control” 명령을 선택하거나 “ Ctrl-M” 단축키를 눌러 이 모드로

들어갈 수 잇다. “ On-Line Monitoring & Control” 화면이 나타나며 이

모드에서 다음과 같은 사항을 할 수가 있다.

2.5.1 PLC의 I/O 로직 상태 모니터링

TRiLOGI는 PLC의 I/O 로직 상태 및 타임머 및 카운터의 현재 값을

지속적으로 모니터링하고 이를 화면에 표시하여 준다. 현재 화면에서

보여주고 있는 페이지의 다른 부분에 있는 I/O를 보기위해서는 커서

키 또는 <PgUp> <PgDn>키를 사용하여 스크롤 하면서 다른 어떠한

I/O들의 상태를 볼 수 있다. 하이라이트로 강조가 된 바는 I/O

윈도우에서 선택이 되었을 때 나타난다. 이 하이라이트 된 바의

위치는 선택된 특정 I/O 비트를 지시한다.

2.5.2 PLC 내부 변수의 보기와 변경

“ On-Line Monitoring & Control” 화면에서 <View>키를 누르면

“ View Special Variables” 윈도가 열린다. 사용자는 A에서 Z까지의

26개의 정수형 변수 값, A$에서 Z$의 문자열 변수, DM[1]에서

DM[4000]까지의 4000개의 데이터 메모리 그리고 ADC, DAC, PWM

및 RTC (Real-Time-Clock)과 같은 다른 특수한 내부 변수의 값들을

볼 수가 있다. 이 윈도우에서 나타나는 값들은 실시간으로 이들

45

변수에 대한 실제 값들을 계속 갱신하여 보여준다. 숫자는 10진수로

표시하며 이 화면에서 <Hex>키를 누르면 16진수의 숫자로 표시하여

준다. 다시 <Dec>키를 누르면 10진수 모드로 되돌아 간다.

INPUT[ ], OUTPUT[ ], EMINT[ ]와 같은 다른 시스템의 변수 값

또한 볼 수 있으며 “ Edit” 키를 누르는 것에 의해 해당 변수 값을

변경 시킬 수가 있으며 입력된 값은 즉시 PLC내의 해당 값을 갱신

시킨다.

2.5.3 I/O 비트들의 Force Setting / Resetting

“ On-Line Monitoring & Control” 화면에서 마우스 포인터를 원하는

I/O 위로 이동한 후 왼쪽 또는 오른 쪽 마우스 버튼을 클릭하게 되면

해당 I/O을 ON/OFF FORCE(FORCE: 강제로 ON/OFF시키는

기능)시킬 수 있다 오른쪽 버튼은 ON/OFF 순간 토클 (Momentary

Toggle) 버튼 역할을 하며 왼쪽 버튼은 ON/OFF 선택 토클 스위치

(Latch Toggle Switch) 역할을 한다. 선택된 비트(I/O)가 실제

물리적인 입력 비트라면 마우스의 오른쪽 버튼을 눌렀다 할지라도 1

scan 시간 동안만 변경이 되고 그 이후로는 원래 값으로 되돌아 온다.

이것은 PLC의 I/O 갱신 프로세스가 실제 물리적인 입력 상태 값으로

입력 비트를 되돌려 놓기 때문이다. PLC의 물리적인 입력 값을 실제

로직 상태와 다른 값으로 영구적으로 FORCE시키는 것은 가능하지

않다. 따라서 물리적인 입력(Input) 비트를 FORCE 클릭을 하였을 때

이것을 PLC는 단지 1 scan 시간 동안만 반영을 하기 때문에 사용자는

화면상에서 이것이 반영되는 것을 대부분의 경우 볼 수가 없을

것이다.

2.5.4 PLC Ladder 프로그램의 일시 정지

사용자는 “ On-Line Monitoring & Control” 화면에서 [Pause]

버튼을 누르는 것에 의하여 언제든 PLC의 운전을 일시 정지 시킬 수

있다. PLC가 일시 정지 되었을 때 Ladder 로직 프로그램은 다시

[Pause] 버튼이 눌려지기 전까지 실행이 정지된다. 이때 사용자는

어떠한 내부 릴레이 또는 출력 비트을 FORCE ON/OFF 시킬 수 있다.

이것은 어떠한 물리적인 요소를 희망하는 위치로 가져가기 위해서

쉽게 출력 드라이버를 제어할 수 있기 때문에 프로그램밍 또는 디버깅

동안에 편리하게 사용할 수 있다.

46

2.6 Ladder 모니터링

사용자는 또한 온라인 모니터링 모드에서 Ladder 다이아그램 상에서

직접 I/O의 로직 상태를 감시할 수 있다. 온라인 모니터링 모드에서

TRiLOGI는 PLC의 I/O 로직 상태를 지속적으로 감시하고 I/O

로직상태가 ON이 되면 해당하는 “ ON” 비트의 Ladder 다이아그램

상에서의 라벨 이름이 하이라이트 되어진다.

온라인 모니터링 기능은 PLC로 Host Link Command들을 지속적으로

보내고 I/O 테이블을 갱신하기 위해서 응답 문자열을 즉각적으로

분석하는 것에 의해 이루어지는 기능이다. PLC는 Host Link

Command을 처리하기 위하여 약간의 여유시간을 이용하기 때문에

전반적인 온라인 검색 시간은 온라인 모니터링 시간 동안 실제 보다

약간 느리게 보여 질 수도 있다. 0.01s 및 0.02s Clock 소스들에 의해

작동이 되는 카운터 같은 빠른 SCAN TIME이 요구되는 프로그램은

약간의 정확성을 잃을 수도 있다는 것을 주지 할 필요가 있다. 하지만

고속 카운터와 같은 인터럽트 기반의 입력들은 아무런 영향을 받지

않는다.

2.7 PLC로부터 Ladder 프로그램의 업로딩

(고객 프로그램의 지적재산의 근본적인 보호를 위하여 버전 5.0

이후에서 부터는 이 기능을 지원하지 않습니다.)

TRiLOGI 버전 4.x는 PLC의 EEPRO으로부터 컴파일된 코드를

업로드하여 Ladder 회로로 복구하는 기능을 제공한다. 하지만

컴파일된 TBASIC 기반의 Custom Function들은 복구되지 않는다. 2.8 타임머 및 카운터 설정 값의 변경

[TRiLOGI 버전 4.x] 각각의 정의 테이블에서 정의된 타임머 및

카운터의 설정값 (Set Value: SV)는 “ Controller”

메뉴에서 “ 1: Host Timer/Ctr SV --> PLC”

명령을 사용하여 PLC로 다운로드할 수 있다.

유사한 방법으로 PLC의 내부 타임머 및 카운터의

SV값들을 “ 2: PLC’ s Timer/Ctr SV -> Host”

명령을 사용하여 TRiLOGI로 업로드 시킬 수 있다.

SV (Set Value) 값들의 갱신은 전체 Ladder

47

프로그램의 다운로드 및 업로드 할 필요없이

실행된다. 타임머 및 카운터의 SV값들은 현장

테스트 중에 종종 변경이 되기 때문에 상당히 긴

Ladder 프로그램들에 대한 SV값들을 매우 빠르게

수정 및 변경할 수가 있다.

[TRiLOGI 버전 5.x] TRiLOGI 버전 5.x에서는 독립적인 유틸리티

프로그램으로서 이 기능을 제공할 예정이다.

2.9 PLC의 RTC(Real Time Clock) 설정

사용자에게 PLC의 내장된 RTC(Real Time Clock)의 날짜와 시간을

설정하는 명령을 지원한다. 사용자가 이 명령을 실행하게 되면 사용자의

PC상에 있는 현재 날짜와 시간을 사용하던지 또는 사용자가 직접 날짜와

시간을 수동으로 입력하여 PLC의 RTC를 갱신 시킬 수 있다. 이 명령을

실행하여 PLC의 RTC를 갱신하면 PLC의 특수 비트인 RTC Err 비트는

OFF가 된다.

MX-RTC 모듈

PLC의 전원 공급이 끊어졌을 때 내장된 RTC는 정지하게 되고 설정된

날짜와 시간은 잃어 버리게 된다. PLC에 전원이 다시 공급되면 이때

RTC는 공장에서 설정한 초기 날짜와 시간으로 초기화 된다. 이러한

RTC의 시간 정보를 PLC의 전원 공급 유무와 관계없이 계속적으로

유지하기 위해서는 MX-RTC 옵션을 별도로 구매하여 설치하여야 한다.

MX-RTC모듈은 T100MD의 데이터 RAM에 붙여 사용하도록 특별한

소켓으로 되어있으며 리듐 밧데리 백업 타입으로서 PLC의 전원 공급이

끊어졌을 때에도 RTC가 계속 작동되도록 지원한다. “ Set PLC’ s

Clock/Calendar” 명령은 MX-RTC모듈의 날짜와 시간을 설정한다.

MX-RTC모듈은 또한 PLC의 전원 공급이 끊어진 상태에서도 PLC의

데이터 RAM에 저장되어 있는 모든 I/O 및 내부 변수 값들을 유지시켜

준다. DIP 스위치 SW1-1을 ON 위치에 놓으면 PLC에 전원이 재

공급되었을 때 변수들의 값들이 초기화되는 것을 막을 수 있다. (이에

대한 상세한 내용은 1.10절을 참조하기 바랍니다.) 이것은 전원 공급에

문제가 생겼을 때 모든 데이터의 내용을 그대로 유지시켜야만 하는

제어시스템에서 매우 유용하게 사용할 수 있다.

48

2.10 통신 에러의 수리

“ Controller” 메뉴 하에서 명령을 실행할 때 “ 통신 에러

(Communication Error)” 가 발생하게 된다면 가능성 있는 몇 가지

원인들을 아래에 기술하여 놓았다.

1) 통신 케이블이 T100MD에 연결이 안되었다.

2) 호스트 컴퓨터의 COM 포트에 통신 케이블이 연결 안되어 있다.

3) 잘못된 COM 포트 번호로 PC에 설정되어 있다. 다른 포트 번호로

시도 필요

4) PLC에 전원이 공급되지 않았거나 부적절한 전원 공급이 되고 있다.

PLC의 규정 전압 공급에 맞도록 전원 공급을 하고 있는지 확인이

필요함.

5) 호스트 컴퓨터의 시리얼 포트 고장, 다른 시리얼 포트 또는 다른

컴퓨터 사용이 필요

6) 잘못된 시리얼 케이블. 시리얼 케이블 교체 필요

7) PLC의 고장. 서비스를 위해 고객의 해당 SuperPLC공급 업체 연락

요망

사용자 프로그램의 전송 후 통신 에러

만일 PLC와의 통신에 문제가 없었고 새로운 TRiLOGI Ladder

프로그램을 PLC에 다운로드를 성공적으로 한 후에 갑자기 “ 통신 에러

(Communication Error)” 가 발생하였다면 대부분 다음의 경우에 이 같은

통신 에러가 일어난다.

1) 사용자 프로그램에 의하여 “ 8 데이터 비트, 1 Stop bit 및 No

parity” 이외의 시리얼 포트 설정 값으로 변경이 되었거나 2400

bps보다 낮거나 38400 bps보다 큰 baud rate로 설정이 되어 있다.

2) TRiLOGI가 연결되어 있는 같은 COMM 포트 상에서 PRINT #,

OUTCOMM, NETCMD$, READMODBUS, 또는 WRITEMODBUS

명령이 실행되고 있다. TRiLOGI는 슬래이브 기기로부터 기대되는

응답과 다른 데이터를 수신하게 되면 COMM Error로 취급한다.

위와 같은 상황을 고치기 위해서는 DIP 스위치 SW1-4를 ON 위치에

놓고 PLC를 리셋 시킨 후 PLC와의 통신을 재 시도하였을 때 정상적으로

통신을 한다면 이 경우 통신 문제는 전적으로 사용자가 작성하여

다운로드한 TRiLOGI Ladder 로직 프로그램의 잘못된 사용에 기인한

것이다. 통신 에러를 유발하는 프로그램을 수정한 후 수정된 프로그램을

PLC에 다운로드 시키고 DIP 스위치 SW1-4를 OFF 위치에 놓고 PLC를

리셋 시킨다.

49

3장 호스트 통신

T100MD+ 또는 T100MX+ PLC가 운전되고 있는 동안에 호스트 컴퓨터 또는 다른 T100M+ PLC (이후부터 T100MD+ 와 T100MX+의 약어로서 T100M+를 사용한다.)가 T100M+ PLC의 입출력, 내부 릴레이, 타임머, 카운터 및 시스템의 모든 내부 변수들을 읽거나 쓰기 위하여 ASCII 문자열의 명령을 보낼 수 있다. 이러한 ASCII 명령은 “호스트 링크 명령 (Host-Link Command)”로 알려져 있는 것으로서 PLC로부터 또는 호스트로부터 RS232C 또는 RS485 포트를 경유하여 시리얼로 전송되어진다. Host-Link 통신을 위한 T100M+ PLC의 시리얼 초기 설정 값은 Baud: 38400, Data bit: 8, Stop bit: 1, Parity: None 등이다. Baud rate와 통신 포맷은 프로그램머를 위한 참조 PART II – TBASIC (Programmer’s Reference Part II – TBASIC)에 설명되어 있는 것으로서 “SetBAUD”라는 TBASIC 명령을 사용하여 변경시킬 수 있다. 다양한 통신 프로토콜 지원 T100M+ 시리즈 SuperPLC는 최대한의 데이터 통신의 유연성을 제공하기 위하여 여러 종류의 통신 프로토콜을 지원하고 있다. 아울러 SuperPLC 자체의 통신 프로토콜 이외에 T100M+ PLC는 다음 프로토콜을 지원한다.

1. * MODBUSTM ASCII 모드 호환 통신 프로토콜 2. * MODBUSTM RTU 모드 호환 통신 프로토콜

(Firmware 버전 R32 이상의 Rev D 보드) 3. * OMRONTM Host Link Command (C20H PLC 시리즈) 4. * emWareTM EMIT 3.0 호환 통신 프로토콜 – 이 프로토콜은 T100M+

PLC가 emGateway를 경유해 인터넷에 연결할 수 있도록 emWare사로부터 라이센스를 받았다.

*주: 모든 상표권은 상기 각 사에 있음

고유 호스트 링크 명령 프로토콜 (Native Host Link Command Protocol)에 대해서는 4장 및 이 장에서 설명이 되어 질것이다. MODBUS 및 OMRON 호환 프로토콜에 대해서는 5장에 설명이 되어있으며 6장에서 인터넷 연결을 위한 T100M+ 시리즈 PLC와 emGateway의 인터페이스에 대하여 설명을 하여 놓았다.

50

통신 프로토콜의 고유 모드 (Native Mode Communication Protocols) T100M+ PLC는 COMM1 (RS232) 와 COMM3 (RS485) 포트로부터 Native Host-link 명령을 받을 때 자동적으로 이 명령에 따르는 응답 문자열을 내보낸다. 이 통신 프로토콜의 운영은 사용자에게 매우 평이하고 쉽게 되어 있으며 사용자의 프로그램이 특별히 요구되지 않는다. 모든 T100M+ PLC는 Point-to-Point (1:1) 및 멀티 포인트 (1:다수) 통신 프로토콜을 지원한다. 각 프로토콜은 다음에 설명하는 것과 같이 서로 다른 명령 구조를 가지고 있다. 3.1 1대1 통신 (POINT-TO-POINT COMMUNICATION) 1대1 통신 시스템에서 호스트 컴퓨터의 RS232C 시리얼 포트는 PLC의 COMM1 (RS232C) 포트에 연결이 된다. 이 통신 모드에서는 언제나 하나의 PLC가 호스트 컴퓨터에 연결이 된다. 호스트 링크 명령 (Host-link Command)는 PLC의 ID 코드를 사용하지 않으며 다음과 같이 간단한 통신 포맷으로 이루어진다. 명령/응답 블록 포맷 (1:1)

각 명령 블록은 2-바이트의 ASCII 문자 헤더, 일련의 ASCII 데이터, *

문자와 캐리지 리턴 (ASCII 값= 1310진수)으로 구성되는 종 단어로 이루어

진다. 헤더는 명령의 목적을 표시한다. 예를 들면, 헤더의 RI는 Read Input,

WO는 Write Output등을 의미한다. 데이터는 일반적으로 수치 데이터의

16진수로 표현한다. 바이너리 (이진수) 데이터의 각 바이트는 두개의 ASCII

문자 (00~FF)로 표현된다.

통신을 시작하기위해서 호스트 컴퓨터는 컴퓨터 시리얼 포트를 통해

PLC로 1 바이트의 ASCII 문자 Ctrl-E(=05Hex)를 우선 보내야 한다.

이것은 호스트 컴퓨터가 PLC로 호스트 링크 명령 (Host-link Command,

point-to-point)을 보내고자 한다는 것을 PLC에 알려주는 역할을 한다.

이것을 보낸 후 호스트 컴퓨터는 PLC로부터 Ctrl-E 문자의 에코를 받을

51

때까지 기다려야 한다. PLC로부터 Ctrl-E 문자에 대한 에코(Echo)를

수신하게 되면 이것은 PLC가 호스트 컴퓨터로부터의 명령에 대해 응답할

준비가 되었다는 것을 의미한다. 이때부터 호스트 컴퓨터는 즉각적으로

PLC에 명령 블록 (Command Block)을 보내고 PLC가 응답 블록을 보내는

것을 기다려야 한다. 이러한 통신과 관련한 과정을 그림 3-1에 그림으로

도시하여 놓았다.

PLC가 명령을 받은 후 응답 블록을 호스트 컴퓨터에 보내면 통신 과정이

완료가 된다. PLC가 호스트 컴퓨터로부터 명령을 받아 들이게 되면

명령의 헤더 다음의 데이터 내용이 무엇이 되든 명령의 헤더와 똑 같은

헤더로 응답 블록이 시작된다.

그림 3-1

PLC가 알 수 없는 명령을 받았거나 호스트 컴퓨터가 사용되지 않는

입출력 또는 내부 릴레이 채널의 정보를 요구하는 등과 같이 잘못된

명령을 보낸다면 PLC는 에러 응답 (Error response)을 보내게 된다.

52

에러 응답 포맷 (Error Response Format)

호스트 컴퓨터 프로그램은 명령에 대한 에러 응답을 항상 검사하여야 하고

이에 따라 적절한 조치를 취하여야 한다.

3.2 멀티 통신 시스템

(MULTI-POINT COMMUNICATION SYSTEM)

T100M+ 시스템은 하나의 호스트 컴퓨터에 하나의 T100MD+ PLC

(RS232 또는 RS485) 또는 여러 개의 T100MD 및 T100MX PLC,

H-시리즈 PLC 또는 기타 RS485 네트워크 기기 등을 연결하여 사용할 수

있다.

3.2.1 RS485 네트워크 인터페이스 하드웨어

T100MD+에 내장된 RS485 인터페이스는 매우 저렴한 Twisted-pair

통신 케이블을 사용하여 여러 개의 RS485기기들을 연결하여 사용할 수

있도록 지원한다. RS485는 일반적으로 호스트 컴퓨터의 노드를 포함하여

32개의 PLC 또는 RS485기기들을 연결할 수 있다. 하지만 Linear

Technology사의 LT1785N8과 같은 Fault-tolerant RS485 드라이버을

적용하는 경우 256대까지의 RS485 기기를 연결할 수 있다.

Twisted-pair 통신 케이블은 데이지 체인 (Daisy Chain) 방식으로 노드

간 연결할 수 있으며 아래 그림에서 보는 바와 같이 120 ohm의 종단

저항으로 단말 처리하여야 한다.

그림 3-2

53

Twisted-pair(꼬아진 두 가닥의 선) 통신 케이블은 각각의 PLC 또는

기기들에서 같은 방식으로 결선 되어져야 하며 (+) (-)가 서로

뒤바뀌어서는 안 된다. 최대 통신 케이블 거리는 1200 미터 (4000

피트)이다. RS485는 Balanced 또는 Differential 드라이버 및

리시버(수신기)를 사용한다. 이것은 전송된 신호의 로직 상태가 통신

케이블의 두개의 전선 사이의 전압 차에 의해 신호를 구분한다는 것을

의미하는 것으로 공통 접지에 대한 전압에 의해 신호를 구분하지 않는다.

네트워크상에 활성화 되어져 있는 전송기(Transmitter)가 하나도 없을 때

(즉, 통신 선이 플로팅 상태로 놓여져 있는 상태) RS485 수신기가 CPU에

네트워크에서 수신할 데이터가 없다는 것을 확실하게 알려줄 필요가 있다.

이를 위해서 그림 3-2에서 보는 바와 같이 +9V (최소한 +5V)와 0V

공급 전압에 560Ω ~1K Ω 의 바이어스 저항을 양단에 연결하여 통신선

양단의 전압에 바이어스 전압을 적용하여 로직 상태가 “ 1” 이 되는

Twisted-pair 통신 선을 유지할 필요가 있다. 이러한 방법을 적용하지

않는 경우에 통신선 상에 불규칙한 노이즈가 발생할 수 있어 데이터의

왜곡 현상이 나타날 수 있다.

두개의 바이어스 저항은 실제 산업 현장에서 신뢰성 높은 데이터 통신을

보장하기 위해 필요하다. 일부 RS485 변환기는 이러한 바이어스 저항을

내장하고 있어 별도의 바이어스 저항 설치가 필요 없는 경우도 있다.

하지만 M-시리즈 PLC를 마스터로 사용한다면 통신선의 로직 상태를

확실한 상태로 유지하기 위하여 바이어스 저항을 적용할 것을 적극

추천한다.

외부 노이즈 등이 거의 발생하지 않는 연구실 또는 실험실등과 같은 LAB

환경에서는 이러한 바이어스 저항의 설치가 필요 없을 수 있으나 산업

현장의 적용의 경우 바이어스 저항의 적용을 강력하게 추천한다.

3.2.2 RS485 인터페이스의 보호

Linear Technology사의 LT1785N8과 같은 Fault-tolerant RS485

드라이버가 적용된 기기인 경우 RS485 인터페이스 보호 회로가 내장이

되어 있기 때문에 하기 사항을 고려할 필요는 없다. (* 옵션으로 별도

판매)

RS485 네트워크에 연결된 PLC 또는 기기들이 서로 매우 가까이 근접된

거리에 설치가 되어 있다면 대부분 같은 전원 공급 장치를 사용할

것이므로 그림 3-2의 RS485 멀티드롭 연결 방식과 같은 RS485

네트워크의 직접적인 연결은 문제가 없을 것이다. 하지만 일반적인 산업

54

현장에서는 PLC 및 기기들이 서로 멀리 떨어져 설치되어 사용하고 있고

각각의 전원 공급 장치 또한 별개로 사용하고 있다. 공정을 종종

변경/수정을 하여야 하는 현장에서 어느날 PLC 또는 RS485 기기에

고(高) 전압이 실수로 RS485 네트워크에 연결을 하게 되면 같은 RS485

네트워크에 연결된 모든 PLC 또는 기기들은 동시에 치명적인 영향을 받게

되어 고장 나게 될 것이다. 이러한 사고는 네트워크에 연결된 모든 PLC

및 기기들이 수리되기 전까지 전체 공정의 운전 중지를 초래하게 되어

경제적으로 막대한 손실을 끼치게 된다.

따라서 다수의 PLC 또는 기기들이 연결이 되어 있는 장거리에 걸친

RS485 네트워크의 적용에서는 각각의 PLC 또는 기기들의 RS485

인터페이스를 보호하는 대책이 필요하다. 이러한 응용 분야에서는 모든

PLC 및 기기의 RS485 포트와 RS485 Twisted pair 멀티드롭 네트워크

케이블 간에 그림 3-3과 같은 보호 회로의 적용을 강력히 권고한다.

그림 3-3

Note: 위 그림에서 보는 바와 같이 두개의 9V Zener 다이오드는 PLC 또는

RS485 기기의 RS485 인터페이스의 신호 전압을 +9V와 – 0.7V

사이로 제한하여 기기 측의 회로를 보호하고 있다. 만일 고(高)

전압이 RS485 네트워크상에 인가된다면 이 회로는 네트워크 상의

이러한 고(高) 전압으로부터 PLC 및 기기들을 효과적으로 보호한다.

“ RS485 멀티드롭 네트워크의 백본(Backbone)으로 Twisted Pair

케이블을 사용하여야 하며 실드를 모든 PLC 및 RS485 기기들의 0V (DC

전원 접지)에 연결하여야 한다. 이렇게 접지된 실드는 RS485 네트워크

55

상에 연결된 모든 PLC 및 기기들의 서로 다른 전원에 대하여 공통 접지

참조를 제공한다. 두 가닥의 통신 신호선은 연결된 모든 RS485들이 어떤

형태로든 네트워크 상에서 접지를 참조하도록 하기 때문에 RS485

네트워크가 공통 접지를 갖지 않더라도 통신을 할 수 있다. 하지만 플로팅

그라운드(접지되어 있지않은 그라운드)의 신호선은 전자기적인 간섭에

노출이 되어 질 때 노드(PLC등)간의 큰 전압차가 쉽게 유도되기 쉽기

때문에 공통 접지를 갖지 않으면 통신에 심각한 문제를 일으킬 수 있는

잠재적인 문제를 갖게 된다. 따라서 신뢰성있는 운전을 위하여 공통접지를

제공하는 것이 중요하다. 또한 접지 차폐(SHIELD)는 전기적인 신호를

EMI로부터 차폐시키는 추가적인 이점을 갖는다.

3.2.3 단일 마스터(MASTER)를 갖는 RS485 네트워크

RS485는 반이중식(Half-duplex) 네트워크이다. 즉, 명령의 전송 및 응답

수신을 위한 데이터 전송(송신 및 수신)을 위하여 같은 두 가닥의 전선을

사용한다. 물론 한번에 하나의 송신 또는 수신이 활성화 된다.

T100M+시리즈는 마스터(MASTER) / 슬래이브 (SLAVE) 네트워크

프로토콜을 지원한다. RS485네트워크는 하나의 마스터를 필요로 하고

일반적으로 RS485인터페이스를 지원하는 마이크로 컴퓨터가 마스터로서

작동된다. IBM 호환 PC의 경우 RS485 아답터 카드를 추가로 설치하거나

RS232-TO-RS485 변환기를 사용하여 PC의 RS232C 시리얼 포트에

RS485 네트워크를 연결한다. T100MD+ 시리즈는 RS485 네트워크의

마스터로서 작동될 수 있도록 프로그램 할 수 있으며 “NETCMD$” 기능

또는 MODBUS 프로토콜 관련 명령어인 READMODBUS, READMB2,

WRITEMODBUS, WRITEMB2 등의 명령어를 사용하여 RS485

네트워크의 마스터로서 다른 슬래이브(종속) 기기 또는 PLC들과 통신을

할 수 있다.

RS485 네트워크에서는 마스터 기기만이 슬래이브 기기 또는 제어기에

명령을 보낼 수 있다. 마스터 기기가 RS485 네트워크 명령을 보내기

위하여 우선 자신의 RS485 전송 포트를 활성화 시키고 RS485

네트워크에 멀티 포인트 (Multi-point) 명령을 보낸다. 최종 정지 비트

(Stop Bit)를 보낸 후 마스터 기기는 자신의 RS485 전송(송신) 포트를

비활성화 시키는 것에 의해 RS485 버스 (네트워크)의 사용권을 내놓고

수신 모드를 활성화 시킨다. 이때 마스터 기기는 명령이 전달된 슬래이브

기기로부터 응답을 기다린다. 마스터 기기가 보낸 명령에는 명령을

전달하고자 하는 상대 기기의 ID(네트워크 주소)가 포함되어 있기 때문에

정확하게 해당기기로 명령이 전달이 되며 명령을 받은 기기는 그 명령에

대하여 응답 문자열을 명령을 보낸 기기로 회신(응답)을 한다. 따라서

네트워크의 안정적인 통신을 위하여 동일 RS485 네트워크 상에 같은

56

노드(NODE) ID(주소)를 갖는 기기가 1대이상 존재하면 안 된다.

T00MD시리즈의 ID 설정은 TLServer의 “Serial Port Setup -> Change

PLCID”에서 ID설정 및 변경을 할 수 있다.

또한 RS485 네트워크의 모든 노드(기기)들은 같은 통신 포맷 및 통신

속도(Baud Rate)로 설정이 되어져야 한다.

네트워크 상에서 기기간에 큰 접지 전위차에 의해 기기가 손상되는 것을

막기 위하여 각각의 전원 장치들과 상호 차폐(ISOLATE)를 시키는 것이

필요하다.

3.2.4 복수 마스터(MASTER)를 갖는 RS485 네트워크

T100MD 및 T100MX 시리즈는 네트워크 명령을 보낼 수 있는 마스터

기능을 갖고 있기 때문에 사용자는 당연히 RS485 네트워크 상에 다수의

네트워크 마스터 기기가 존재할 수 있는가? 라는 의문을 갖을 수 있다.

통신의 충돌에 대한 조정등에 대한 통신 처리 기능이 제공되어지는

기기들이라면 단일 RS485 네트워크 상에 다수의 마스터기기가 존재할 수

있다.

1) 충돌 검출 기능을 갖는 멀티플 억세스 (Multiple Access)

어떠한 기기 또는 PLC가 다른 기기 또는 PLC로 호스트 링크 (Host

Link) 명령(RS485 네트워크 명령)을 보내는 것을 막을 수 있는 방법은

없다. 그러나 하나이상의 RS485 네트워크 기기 또는 PLC가 동시에

RS485 전송포트를 활성화하고 RS485 네트워크 명령을 보낸다면

이러한 신호들은 서로 충돌하게 되고 통신 명령들이 서로 엉켜 사용할

수 없게 된다. 만일 네트워크의 통신 속도가 느리다면 하나의 명령

문자열이 보내어진 후 올바른 응답을 확인하는 마스터 체크(CHECK)

기능을 갖으면 어느 정도 해결할 수 있다. 이러한 응답 문자열에 에러가

검출되면 이 마스터는 잠시(다른 PLC가 네트워크를 사용하는

시간)동안 네트워크의 사용권을 내놓고 기다리고 있다가 다시 명령

문자열을 내보는 것을 올바른 응답 문자열이 수신될 때 까지 반복하는

것이다. 이 방식은 이더넷에서 보통 사용하는 CSMA/CD (Carrier

Sensing Multiple Access/Collision-Detection) 방식과 유사하다.

T100MD+시리즈의 “NETCMD$” 기능은 RS485 네트워크의 데이터

통신 충돌을 피하기 위하여 네트워크 상에 명령 문자열을 보내기 전에

RS485 네트워크 통신 선이 비어있는지 자동으로 감지하는 기능을

가지고 있다. 또한 T100MD 시리즈는 문자열을 리턴(응답)하기 전에

57

FCS(Frame Check Sequence) 문자를 확인하는 응답문자열의 상태를

검사하는 기능을 가지고 있다. (상세한 “NETCMD$()” 기능에 대한

설명은 iTRiLOGI 설명서를 참조하기 바랍니다.)

또한 NETCMD$() 기능에 의해 응답되어져 온 응답문자열이 올바른

상대기기 또는 PLC로부터 응답문자열이 온 것인지 아닌지를 확인하기

위하여 응답 문자열 내에서 다음 사항들을 확인한다.

i) ID는 맞는 것인가?

ii) 응답문자열의 헤더는 송신된 명령 문자열과 일치하는 것인가?

iii) 응답 문자열의 길이는 맞는 것인가?

장단점 : 이 방법은 어떠한 하드웨어적인 추가 비용이 들지 않는다.

하지만 주의 깊은 프로그램밍과 응답문자열에 대한 엄격한 검사가

요구되어 진다. 따라서 프로그램밍하는데 많은 주의와 노력이 요구된다.

만일 네트워크의 트래픽(통신부하)이 높은 수준이라면 그 만큼 많은

통신 충돌이 발생할 여지가 많은 것이며 에러가 검출되지 않은

데이터가 통과할 수 있는 위험이 높아진다.

2) 토큰(TOKEN) 승인 방식

“토큰(TOKEN)”은 마스터로서 작동할 수 있는 권한을 임시로 PLC에

부여하는 소프트웨어의 한 수단이다. T100MD PLC 또는 호스트 PC는

토큰(TOKEN) 마스터 기능을 할 수 있다. PLC의 하나의 내부 릴레이

비트 또는 하나의 내부 변수 값이 토큰(TOKEN: 내부 릴레이비트를

“1”로 설정하거나 특정 값으로 변수 값을 설정하는 것으로 토큰을

부여)으로서 사용된다. 토큰 마스터는 토큰을 목록 상에 있는 첫번째

PLC에 토큰을 부여하는 것부터 시작한다. 토큰을 받은 PLC는 이때부터

다른 PLC로 호스트링크 명령을 보낼 수 있는 네트워크 사용권을 부여

받게 된다. 토큰을 받은 PLC가 네트워크 사용을 끝마친 후 토큰

마스터를 다음 PLC로 넘기는 명령을 보낸다. 만일 고정된 일정 시간의

토큰 사용권을 부여하는 방식이라면 마스터는 토큰을 PLC에 부여한 후

정의한 일정시간(예: 0.1초)이 지나면 그 PLC는 네트워크 작업이

완료된 것으로 간주하고 토큰 마스터 관련 릴레이 비트를 OFF 시킨다.

토큰(TOKEN) 마스터는 다시 다음 PLC에 토큰을 넘겨준다. 이러한

방식으로 목록상에 있는 마지막 PLC까지 토큰을 넘겨주고 다시 맨

처음의 PLC에 토큰을 넘겨주는 방식으로 토큰에 의한 네트워크 사용권

부여 방식의 통신을 한다. 이 방식은 네트워크 상에 확실하게 오직

하나의 네트워크 마스터 만이 존재하도록 하여 준다. 따라서 통신

신호가 충돌하거나 엉키는 현상이 일어나지 않는다.

58

장단점 : 이 방식 또한 어떠한 하드웨어적인 추가 비용이 들지 않는다.

하지만 토큰으로서 사용할 내부 릴레이 또는 변수를 지정하여 주고

토큰을 어떠한 방식으로 넘길 것인지에 대하여 많은 고려가 필요하다.

(토큰 순환 방식에는 고정된 일정 시간의 토큰 보유 방식 또는 토큰

사용이 끝났을 때 메시지를 보내는 방식 등이 있을 수 있다.) 이러한

토큰 승인 방식의 네트워크에 익숙하지 않은 프로그램머에게는 생소할

수 있는 방식이지만 그다지 어려운 방식이 아니기 때문에 짧은 시간

내에 익숙해 질 수 있다.

3) 마스터 신호의 순환 방식

마스터 신호의 순환 방식은 네트워크 마스터로서 작동할 수 있는

권한을 PLC에 부여하기 위하여 T100M 시리즈 PLC의 디지털 입력을

사용한다. 이 입력을 편의상 여기서 “Be the Master” 입력이라고

호칭한다. 한번에 한번씩 각 PLC의 “Be the Master” 입력 라인을

활성화 시키는 시퀀서(Sequencer)를 작동시키기 위하여 저가(低價)의

H-시리즈 PLC를 사용할 수 있다. 각 PLC는 일정 시간(예: PLC당

0.1초) 동안 마스터로서 작동될 수 있는 권한이 부여된다. “Be the

Master” 입력이 “ON”되었을 때 만이 T100M+ PLC는 다른 PLC로

호스트링크 명령을 보낼 수 있게 된다. 이 방식은 RS485

네트워크상에서 한번에 단 하나의 마스터가 존재하기 때문에 데이터

통신 충돌이나 통신이 엉키는 현상이 발생하지 않는다.

장단점 : 이 방식은 토큰 마스터가 토큰을 처리하는 과정이 필요하지

않고 응답 문자열의 확장적인 에러 검사를 실행하지 않아도 되는

프로그램밍하는데 있어 가장 쉬운 방식이다. 하지만 이 방식은 각

PLC당 한 개의 디지털 입력 채널이 소요 되며 PLC의 마스터가 되는

마스터 신호 발생 PLC의 경우 해당하는 PLC 수 만큼 디지털 출력이

요구되고 하드웨어적인 결선이 요구된다.

3.2.5 명령(Command)/응답(Response) 블록 형식 (Multi-point)

@ n n x x .... .... .... x x *

기기 ID 헤더 데이터 FCS 종단어

(Header) (Terminator)

각각의 명령 블록(Command Block)은 “@” 문자와 2 바이트의

59

16진수로 표현되는 PLC의 ID (00 ~ FF)로 시작이 되며 2 바이트의

FCS (Frame Check Sequence)와 종단어(Terminator)로 끝난다. FCS는

시리얼 비트 열의 통신 에러를 검출하기 위하여 사용되어진다. 만일

FCS 기능을 생략하고 싶다면 FCS 자리에 “00” 문자를 삽입하기만

하면 된다.

FCS 계산 방법

FCS는 2 바이트의 ASCII 문자(00 ~FF)로 표현이 되는 8 비트

데이터이다. 기기 번호(ID)의 @ 부터 시작하여 데이터의 마지막

문자까지 블록의 각 문자마다 연속적으로 계산되어지는 배타적 OR

(Exclusive OR)의 계산 결과이다. 다음은 FCS 계산의 한 예이다.

@ 0 4 R V I A 4 8 *

기기ID 헤더 데이터 FCS (Header)

@ 0100 0000 XOR 0 0011 0000 XOR 4 0011 0100 XOR R 0101 0010 XOR V 0101 0110 XOR I 0100 1001 XOR A 0100 0001

0100 1000 = 4816

값 4816은 ASCII 문자 “4” (0011 0100)와 “8” (0011 1000)으로

변환되어진 것이고 이 값이 FCS 필드의 값으로 사용되어 진 것이다.

FCS 계산 프로그램 (샘플)

60

다음 C function은 “string” 이라는 값에 대해 FCS 값을 계산하여 그

결과를 돌려주는 프로그램이다.

unsigned char compute_FCS(unsigned char *string){ unsigned char result; result = *string++; /*first byte of string*/ while (*string) result ^= *string++; /* XOR operation */ return (result); }

3.2.6 통신 절차 (Communication Procedure)

Point-to-point 통신 (1:1통신) 방식과는 달리 호스트 컴퓨터는 명령

블록이 보내어지기 전에는 CTRL-E 문자를 보내지 않는다. 호스트

컴퓨터가 멀티포인트 호스트링크 명령 블록을 보낸 후에 명령 블록에

명시된 ID의 PLC가 이 명령에 응답을 한다. 따라서 RS485 네트워크

상의 모든 기기 또는 PLC는 서로 다른 ID를 가지고 있어야 하는 것이

필수이다. 그렇지 않은 경우 원하지않은 통신 결과를 얻을 수 있다.

(예를 들면, 두개의 기기가 같은 ID를 갖고 있다면 RS485 버스 상에

동시에 데이터를 내보내게 됨으로써 데이터가 상호 충돌이 일어나 엉킨

상태의 엉터리 데이터를 호스트에서 수신하게 된다.) 다른 한편으로

명령블록에 있는 ID와 일치하는 기기 또는 PLC의 ID가 네트워크 상에

존재하지 않는다면 호스트 컴퓨터는 어떠한 응답도 전혀 수신하지

못한다.

M-시리즈 SuperPLC는 호스트 컴퓨터에서 보낸 명령 프로토콜의

유형(Point-to-point 또는 Multi-point)을 자동으로 인식한다. 만일

Multi-point 명령이 PLC로 보내어 진다면 응답 블록은 “@” 문자와

기기의 ID로 시작하는 응답 문자열을 명령 블록의 헤더와 동일한

헤더를 사용하여 응답한다.

플레임 에러 (Framing Errors)

PLC가 멀티포인트(Multi-point) 호스트링크 명령 블록을 수신하였을 때

명령 문자열에 대한 FCS를 자체적으로 계산을 하고 이 계산 결과와

명령 블록에 있는 FCS값을 비교한다. 만일 이 두 가지가 일치하지

않는다면 “Frame Error”가 발생된다. 그리고 PLC는 다음 Frame Error

61

응답을 호스트로 보낸다.

프레임 에러 응답 블록(Framing Error Response Block) (*Multi-point만 해당)

@ x x F E x x *

기기 ID 헤더 FCS 종단어(Terminator)

명령 에러 (Command Errors)

불분명한 명령이 수신되거나 명령이 형식에 맞지 않으면 (유효하지

않은 I/O 채널을 악세스하려고 한다거나 하는 등) 다음 에러 응답을

내보낸다. 에러 응답 형식 (Error Response Format)

@ x x E R x x *

기기ID 헤더 FCS 종단어(Terminator)

호스트 컴퓨터 프로그램은 항상 회신 되어 돌아온 명령 블록에 에러가

있는지 항상 검사를 하고 필요한 조치를 취한다.

3.3 멀티 통신 시스템

몇 대의 T100MD+ PLC들을 멀티 드롭 네트워크에 RS485 인터페이스로

연결을 하였다면 네트워크에 연결된 한대의 호스트 컴퓨터로 네트워크에

연결되어 있는 PLC들을 프로그램밍하여 다운로드하고 온라인 모니터링을

할 수 있다. (호스트 컴퓨터의 RS485 아답터는 네트워크-TRiLOGI와

호환성이 있는 것을 사용하여야 한다.)

* 인터넷 TRiLOGI 5.x는 한대의 PC(TLServer)에 연결되어져

있는 한대 또는 여러 대의 T100MD 시리즈 PLC와의

통신을 지원한다. 따라서 이를 위하여 별도로 프로그램을

실행 시킬 필요가 없다. 그러나 TRiLOGI 버전 4.1x의 DOS

버전은 단일 또는 복수의 PLC 연결을 처리하기 위하여

TL41.EXE 프로그램을 서로 다른 두개의 SETUP를

사용한다.

62

TRiLOGI 버전 4.x의 네트워크 버전을 사용하려면 “ trilogi\tl4” 폴더

안에 있는 “ TL4NET.BAT” 배치파일을 실행시키면 된다. 버전 4.x의

네트워크 버전은 “ Controller” 주 메뉴에서 “ Select Controller

Ctrl-l” 이라는 추가 명령 항목을 제외하고는 TL4.EXE와 거의 동일한

기능을 갖고 있다. 네트워크 PLC와의 정상적인 통신을 위해서는 네트워크

상의 모든 PLC는 각각 유일한 ID를 갖고 있어야 한다. 이들 PLC들의 ID를

변경/설정하기 위해서는 TRiLOGI의 “ Controller -> Target Access ->

Write ID Address” 메뉴를 사용하여 PLC ID를 개별적으로 설정 및

변경을 할 수 있다. “ TL4NET” 프로그램을 사용하면 DOS용

TRiLOGI에서도 쉽게 네트워크 상의 PLC를 접속할 수 있다.

기기(PLC)의 ID가 입력된 후 Network TRiLOGI는 자동적으로 해당 ID의

PLC에 다운로드 되어져 있는 소스파일의 이름을 조회한다. PC의

디스크드라이브의 현재 폴더 내에 일치하는 파일을 찾아보고 만일 발견이

되면 이 소스 파일을 열 것인지 사용자에게 확인하는 프롬프트가 나타난다.

선택된 Controller(PLC)는 정상적인 TRiLOGI 운전 모드로서 프로그램을

다운로드, 온라인/래더 모니터링이 가능하다. 네트워크상의 다른 PLC로의

전환은 <Ctrl-l>를 누르고 원하는 PLC ID를 입력하면 된다.

만일 통신 에러가 발생이 되면 올바른 PLC ID를 입력하였는지 확인하여야

한다. 이상이 없으면 RS485 단자의 결선이 느슨해지지는 않았는지

정확하게 결선이 되어져 있는지를 확인하여 보아야 한다. 만일 설치 작업

시에 과전압 또는 과전류에 의한 RS485 인터페이스 칩인 SN75176이

손상을 입었거나 하는 경우에는 교체하여 주어야 한다.

RS485 네트워크에서는 한번에 하나의 기기 (PC 또는 PLC)만이

마스터로서 작동될 수 있다는 점을 유의하여야 한다. 따라서 TL4NET

프로그램이 PC에서 실행되고 있다면 이 PC가 유일한 마스터가 되며 다른

모든 T100M+ PLC들은 슬래이브 모드로만 작동이 되어져야 한다. 만일

어떠한 T100M+ PLC이든 TL4NET 프로그램이 온라인 모니터링 기능을

수행하고 있을 때 네트워크 명령을 내보내게 되면 통신 충돌이 일어나게

되며 TL4NET 프로그램은 “ No Communication” 이라는 에러가 발생

된다.

3.4 RS485 네트워크의 고장 처리

a) 단수 고장 (한대 고장)

RS485 네트워크 상에서 한대의 기기(PLC)만이 통신이 안되고

63

있다면 통신에 관련한 문제는 이 특정 기기에 한정이 되어진다.

우선 RS485 통신선의 결선 상태를 확인하고 DIP Switch의

상태를 확인하여 보아야 한다. 또한 PLC의 RS232C 포트를 통해

개별적으로 통신이 되는 지를 호스트링크 명령 “ IR*” 를 보내

(TLServer의 시리얼 포트 설정(Serial Port Setup) 화면 사용) 이

기기의 ID를 읽는지를 확인하여 보아야 한다. 만일 모든 시도가

실패하면 RS485 인터페이스를 담당하는 SN75176 칩을 교체하여

테스트하여 보아야 한다. SN75176 칩을 교체한 후에도 같은

현상인 경우 PLC를 교체하여야 한다.

b) 복수 고장 (한대 이상의 고장)

RS485 네트워크 상의 모든 PLC를 호스트 컴퓨터에서 통신을 할

수 없다면 PC의 RS232-TO-RS485 변환기 또는 아답터의

고장일 가능성이 높다. 암일 이 경우라면 RS485 변환기를

네트워크에서 분리한 후 한대의 PLC를 사용하여 테스트하여 본다.

아울러 RS485 변환기의 DIP 스위치 등의 설정이 올바르게

설정되어 있는지도 확인하여 보아야 한다. 만일 RS485 변환기의

고장이 확인이 되면 이 변환기를 교체한다. 다음 확인 사항은

네트워크와 연결되는 RS485 변환기의 통신 선이 잘못되어

있는지를 상세히 살펴보아야 한다.

RS485 네트워크는 많은 PLC를 체인으로 연결된 것처럼

전기적으로 함께 연결하기 때문에 간혹 RS485 네트워크의 일부

문제가 전체 네트워크의 운전에 영향을 끼칠 수가 있다. 예를

들면 어느 하나의 RS485 노드의 단자에서 절단되어져 있는 통신

선은 이 노드 이후에 연결되어져 있는 모든 PLC는 마스터에서

통신 접속이 불가능하다는 것을 의미한다. 만일 RS485 네트워크

상의 어느 하나의 PLC에서 RS485 인터페이스가 콤포넌트의 고장

또는 어떠한 이유에서 회로가 단락(Short circuit) 되어져 있다면

이 역시 전체 네트워크에 영향을 끼친다. 이것은 RS485의 통신

선이 단락 되어져 있어 다른 노드에서 적절한 통신 신호를

발생시킬 수 없기 때문이다.

따라서 고장 난 RS485 네트워크를 수리할 때에는 모든 PLC들을

RS485 네트워크에서 분리한 후에 작업을 하는 것이 필요하다.

고장 부위를 확인하기 위해서 또는 수리 작업이 완료가 되면

호스트 컴퓨터에서 가장 가까운 노드에서부터 통신을 상태를

확인하여 가며 나머지 노드들을 하나씩 연결하여 나가야 한다.

64

4장 명령(Command)/응답(Response) 형식

이 절에서는 모든 M-시리즈 PLC에서 사용되는 호스트 링크 명령에 대한

명령/응답 블록(Command/Response Block)의 상세한 형식에 대하여

설명하여 놓았다. 아래 설명에는 Point-to-Point (1대1) 통신 시스템에서

적용이 되는 형식에 대하여 설명을 하여 놓았으나 이러한 명령들은 모두

복수(Multi-point) 통신 시스템에서도 물론 적용이 된다. 복수(Multi-point)

통신 시스템에서 이러한 명령을 사용하기 위해서는 명령 헤더 전에 기기의

ID (@nn)를 추가하고 데이터의 끝에 FCS를 추가하여 주면 된다. (상세한

복수(Multi-point) 통신 명령 형식에 대한 설명은 3장을 참고하시기

바랍니다.)

4.1 기기 ID 읽기 (Device ID Read) 명령 형식 (Command Format)

I R *

응답 형식 (Response Format) I R 161 160 *

기기 ID (00 ~ FF)

기기(Device) ID는 호스트 컴퓨터가 RS485 버스(네트워크)에 연결되어

있는 어떠한 PLC와도 선택적으로 통신을 할 수 있는 복수(Multi-point)

통신 프로토콜을 위해 사용되어진다. (상세한 내용은 3장 참조) ID는

Point-to-Point (1대1) 통신에서는 영향을 주지 않는다.

기기 ID는 PLC의 EEPROM에 저장이 되어지므로 PLC의 전원이

꺼지더라도 지워지지 않고 기억을 한다.

4.2 기기 ID 쓰기 (Device ID Write)

명령 형식 (Command Format)

I W 161 160 *

기기 ID (00 ~ FF)

65

응답 형식 (Response Format )

I W *

예) PLC의 ID를 0A로 설정하려면 “IW0A*” 명령 문자열을 PLC로 보내면

된다.

4.3 디지털 입력 채널 읽기 (Read Input Channels)

명령 형식 (Command Format) R I n n *

8-비트 채널# (16진:Hex)

응답 형식 (Response Format) R I 161 160 *

8-비트 데이터 (16진:Hex)

디지털 입력 채널의 정의 (Definition of Input Channels)

다음 표는 입력 채널 번호에 따라 TRiLOGI의 입력 표를 정의하여 놓은

것으로서 입력의 번호를 나타낸다.

채널번호 Bit7 입출력 번호(Input/Output Numbers) Bit0 CH00: 8 7 6 5 4 3 2 1 CH01: 16 15 14 13 12 11 10 9 CH02: 24 23 22 21 20 19 18 17 CH03: 32 31 30 29 28 27 26 25 CH04: 40 39 38 37 36 35 34 33 CH05: 48 57 56 45 44 43 42 41 CH06: 56 55 54 53 52 51 50 49 CH07: 64 63 62 61 60 59 58 57 CH08: 72 71 70 69 68 67 66 65 CH09: 80 79 78 77 76 75 74 73 CH0A16: 88 87 86 85 84 83 82 81 CH0B16: 96 95 94 93 92 91 90 89 CH0C16: 104 103 102 101 100 99 98 97 CH0D16: 112 111 110 109 108 107 106 105CH0E16: 120 119 118 117 116 115 114 113 CH0F16: 128 127 126 125 124 123 122 121

66

각 채널의 8 비트 입력들은 16진 값에 의한 2 바이트 ASCII 텍스트로

표현된다. 예를 들면, 디지털 입력 1 에서부터 3 까지는 로직 “0”(OFF) 값,

입력 4 에서부터 10 까지는 로직 “1” (ON) 값, 그리고 다른 모든 입력은

로직 “0” (OFF) 값을 갖고 있을 때 호스트링크 명령 “RI00*”를 보낸다면,

PLC는 “RIF8*” (F816 = 1111 10002)으로 응답한다.

4.4 디지털 출력 채널 읽기 (Read Output Channels)

명령 형식 (Command Format) R O n n *

8-비트 채널# (16진:Hex)

응답 형식 (Response Format) R O 161 160 *

8-비트 데이터 (16진:Hex)

입출력 채널에 대한 상세한 내용은 위에 기술하여 놓은 4.3항의 “입출력

번호 및 채널 번호” 표를 참조하기 바랍니다.

4.5 내부 릴레이 채널 읽기 (Read Relay Channels)

명령 형식 (Command Format) R R n n *

8-비트 채널# (16진:Hex)

응답 형식 (Response Format) R R 161 160 *

8-비트 데이터 (16진:Hex)

릴레이 채널 번호의 정의

모든 M-시리즈 PLC는 256개의 내부 릴레이를 제공하고 있다. 내부

67

릴레이의 채널 번호는 다음과 같다.

채널번호 bit7 릴레이 번호 (Relay numbers) bit0

CH00: 8 7 6 5 4 3 2 1 CH01: 16 15 14 13 12 11 10 9 CH02: 24 23 22 21 20 19 18 17 CH03: 32 31 30 29 28 27 26 25 CH04: 40 39 38 37 36 35 34 33 CH05: 48 57 56 45 44 43 42 41 CH06: 56 55 54 53 52 51 50 49 CH07: 64 63 62 61 60 59 58 57 CH08: 72 71 70 69 68 67 66 65 CH09: 80 79 78 77 76 75 74 73 CH0A16: 88 87 86 85 84 83 82 81 CH0B16: 96 95 94 93 92 91 90 89 CH0C16: 104 103 102 101 100 99 98 97 CH0D16: 112 111 110 109 108 107 106 105CH0E16: 120 119 118 117 116 115 114 113CH0F16: 128 127 126 125 124 123 122 121CH1016: 136 135 134 133 132 131 130 129CH1116: 144 143 142 141 140 139 138 137CH1216: 152 151 150 149 148 147 146 145CH1316: 160 159 158 157 156 155 154 153CH1416: 168 167 166 165 164 163 162 161CH1516: 176 175 174 173 172 171 170 169CH1616: 184 183 182 181 180 179 178 177CH1716: 192 191 190 189 188 187 186 185CH1816: 200 199 198 197 196 195 194 193CH1916: 208 207 206 205 204 203 202 201CH1A16: 216 215 214 213 212 211 210 209CH1B16: 224 223 222 221 220 219 218 217CH1C16: 232 231 230 229 228 227 226 225CH1D16: 240 239 238 237 236 235 234 233CH1E16: 248 247 246 245 244 243 242 241CH1F16: 256 255 254 253 252 251 250 249

4.6 타임머 접점 읽기 (Read Timer Contacts)

명령 형식 (Command Format) R T n n *

8-비트 채널# (16진:Hex)

응답 형식 (Response Format)

68

R T 161 160 *

8-비트 데이터(16진:Hex)

타임머 접점 채널 번호의 정의

타임머 접점은 단일 비트 메모리이며 입출력과 유사하게 8 비트의 채널이

하나의 채널 그룹을 구성한다.

다음 표는 타임머 채널 번호에 따른 타임머 번호를 표로 나타내었다.

채널번호 Bit7 타임머 접점 번호(Timer Contact Numbers) Bit0

CH0: 8 7 6 5 4 3 2 1 CH1: 16 15 14 13 12 11 10 9 CH2: 24 23 22 21 20 19 18 17 CH3: 32 31 30 29 28 27 26 25 CH4: 40 39 38 37 36 35 34 33 CH5: 48 57 56 45 44 43 42 41 CH6: 56 55 54 53 52 51 50 49 CH7: 64 63 62 61 60 59 58 57

4.7 카운터 접점 읽기 (Read Counter Contacts)

명령 형식 (Command Format) R C n n *

8-비트 채널# (16진:Hex)

응답 형식 (Response Format) R C 161 160 *

8-비트 데이터 (16진:Hex)

카운터 접점 채널 번호의 정의

타임머 접점 채널 번호와 동일하게 64개의 카운터 접점을 갖으며 8 비트의

채널이 하나의 채널 그룹을 구성한다.

69

채널번호 Bit7 카운터 접점 번호(Counter Contact Numbers) Bit0

CH0: 8 7 6 5 4 3 2 1 CH1: 16 15 14 13 12 11 10 9 CH2: 24 23 22 21 20 19 18 17 CH3: 32 31 30 29 28 27 26 25 CH4: 40 39 38 37 36 35 34 33 CH5: 48 57 56 45 44 43 42 41 CH6: 56 55 54 53 52 51 50 49 CH7: 64 63 62 61 60 59 58 57

4.8 타임머의 현재 값 읽기(Read Timer Present Value) -

P.V.

명령 형식 (Command Format) R M n n *

nn: Timer1=00, ..... Timer16=0F.... Timer64=3F

응답 형식 (Response Format) R M 103 102 101 100 *

타임머의 현재 값 (Timer present value) – 10진수 값

특정 타임머의 현재 값(PV)은 0000~9999 (10진수 값) 사이의 값을 갖는

4 바이트의 ASCII 텍스트 문자를 응답한다.

4.9 타임머의 설정 값 읽기 (Read Timer Set Value)

- S.V.

명령 형식 (Command Format) R m n n *

nn: Timer1=00, ..... Timer16=0F.... Timer64=3F

응답 형식 (Response Format) R m 103 102 101 100 *

타임머의 설정 값 (Timer Set Value) – 10진수

70

특정 타임머의 설정 값(SV)은 0000~9999 (10진수 값) 사이의 값을 갖는

4 바이트의 ASCII 텍스트 문자를 응답한다. 이 명령 형식에서 타임머의

현재 값을 읽는 형식의 헤더에서 “ RM” 의 “ M” (대문자)를 사용하는

대신에 소문자 “ m” 을 헤더(명령:Rm)에 사용한다는 점을 유의하여야

한다.

4.10 카운터의 현재 값 읽기

(Read Counter Present Value) - P.V.

명령 형식 (Command Format) R U n n *

nn: Counter1=00, ..... Counter16=0F.... Counter64=3F

응답 형식 (Response Format) R U 103 102 101 100 *

카운터의 현재 값 (Counter present value) – 10진수

특정 카운터의 현재 값(PV)은 0000~9999 (10진수 값) 사이의 값을 갖는

4 바이트의 ASCII 텍스트 문자를 응답한다.

4.11 카운터의 설정 값 읽기

(Read Counter Set Value) - S.V.

명령 형식 (Command Format) R u n n *

nn: Counter1=00, ..... Counter16=0F.... Counter64=3F

응답 형식 (Response Format) R u 103 102 101 100 *

카운터의 설정 값 (Counter Set Value) – 10진수

특정 카운터의 설정 값(SV)은 0000~9999 (10진수 값) 사이의 값을 갖는

71

4 바이트의 ASCII 텍스트 문자를 응답한다. 이 명령 형식에서 카운터의

현재 값을 읽는 형식의 헤더에서 “ RU” 의 “ U” (대문자)를 사용하는

소문자 “ u” 를 헤더(명령: Ru)에 사용한다는 점을 유의하여야 한다.

4.12 정수 변수(A~Z) 값 읽기

(Read Variable) – Integers(A to Z))

명령 형식 (Command Format) R V I 알파벳 *

A,B.C....Z

응답 형식 (Response Format) R V I 167 166 165 164 163 162 161 160 *

32비트의 정수 값을 위해 8개의 16진수 값을 리턴함.

예) 변수 “K” 값을 읽기 위해서는 호스트링크 명령 “RVIK*”를 보내야

한다. 만일 변수 K 값이 12345610(=1E24016)이라면 PLC는 이

명령에 대한 응답 문자열로 “RVI0001E240*”를 보낸다.

4.13 문자열 변수(A$~Z$) 값 읽기

(Read Variable) – Strings (A$ to Z$)

명령 형식 (Command Format) R V $ 알파벳 *

A,B.C....Z

응답 형식 (Response Format) R V $ a a a ... ... a a a *

ASCII 문자열 (변수길이) 예) 문자열 변수 “M$” 값을 읽기 위해서는 호스트링크 명령

“RV$M*”를 보내야 한다. 만일 변수 M$ 이 문자열 “Hello

World”이라는 값을 가지고 있다면 PLC는 이 명령에 대한 응답

72

문자열로 “RV$Hello World*”를 보낸다.

4.14 변수 값 읽기 - Data Memory

(DM[1] ~ DM[4000])

명령 형식 (Command Format)

R V D 163 162 161 160 * 0001 to 0FA0 (400010)

Response Format R V D 163 162 161 160 *

16 비트 정수 값을 표현하기위한 4개의 16진수 디지트 예) DM[3600]의 값을 읽기 위해 호스트링크 명령 “ RVD0E10*”

을 보내야 한다. 변수 DM[3600]의 값이 1234510 (=303916)이

라면 PLC는 응답 문자열로 “ RVD3039*” 를 보낸다.

4.15 변수 값 읽기 – 시스템 변수

이 명령은 M-시리즈 PLC의 inputs[ ], outputs[ ], relays[ ],

counters[ ], timers[ ], timers’ P.V., counter의 P.V., CLK[ ] 그리고

DATE[ ] 등의 16 비트의 모든 시스템 변수 값들 읽을 수 있게 지원한

다. 입력(INPUT), 출력(OUTPUT) 등의 값을 읽기 위해 “ RI” ,

“ RO” , “ RR” ...등과 같은 명령을 사용하나 8 비트의 바이트 단위로

값을 읽는 대신에 RVS 명령을 사용하면 16 비트 워드 단위로 이들 값

(입력(INPUT), 출력(OUTPUT) 등의 값)을 읽을 수 있다. 32 비트의

시스템 변수 값 HSCPV[ ]를 읽기 위해서는 다음 절에 설명되어지는

“ RVH” 명령을 사용하여야 한다. SCADA 또는 HMI / MMI 소프트웨

어의 IO 드라이버 개발을 위해서는 각기 다른 I/O 타입의 값을 읽기

위해 단지 “ 타입(TYPE)” 에 해당하는 번호 만을 사용하면 “ RVS”

명령 하나로 모든 I/O 값을 읽을 수 있기 때문에 “ RVS” 헤더 명령

이 더 편리할 수도 있다.

또한 RVS 명령은 TBASIC 프로그램에서 정의된 ADC(), setDAC 또는

73

setPWM 문에 의해 수집되어 저장된 ADC, DAC 및 PWM 등의 내부

변수 값을 읽는데 사용될 수 있다. RVS 명령에 사용되어지는 변수 명

은 TBASIC에서 사용되는 변수 명과는 동일하지 않다. 예를 들면

TBASIC에서 ADC 채널 #2번의 값을 읽기 위해서 ADC[2]를 사용하

면 에러가 발생한다. TBASIC에서는 ADC(2)라고 표현을 하여야 한다.

아래 표와 같이 8 비트의 16진수 번호가 시스템 변수의 “ 타입

(TYPE)” 으로서 사용된다

시스템 변수(System Variable)

타입(type)

시스템 변수(System Variable)

타입(type)

input[ ] 01 clk[ ] 08 output[ ] 02 date[ ] 09 relay[ ] 03 - 0A timer[ ] 04 ADC* 0B ctr[ ] 05 DAC* 0C

timerPV[ ] 06 PWM* 0D ctrPV[ ] 07 * TBASIC에서의 사용용법은 다름

명령 형식 (Command Format) R V S n n 161 160 *

type Index

type (01 to 0D) - 읽고자 하는 시스템 변수의 타입 번호 index (01 to 1F) - 01부터 시작하는 변수의 배열 인덱스 번호

응답 형식 (Response Format)

R V S 163 162 161 160 *

16 비트 정수 값을 표현하기위한 4개의 16진수 디지트

예) DATE[2] 변수 값(RTC(Real Time Clock)의 현재 월(달))을 읽기

위해서는 “ RVS0902*” 명령을 보내면 된다. 만일 PLC가

“ RVS0005” 라는 문자 열로 응답을 하면 이것은 5월이라는 것을

의미한다.

74

4.16 변수 읽기 – 고속 카운터 HSCPV[ ]

명령 형식 (Command Format) R V H n *

채널: 1 또는 2

응답 형식 (Response Format) R V H 167 166 165 164 163 162 161 160 *

32 비트의 정수 값을 표현하기 위한 8개의 16진수 디지트

예) HSCPV[2] 값을 읽기 위해서는 “RVH2*” 호스트링크 명령을

PLC로 보내야 한다. HSCPV[2] 변수가 12345610 (=1E24016)

값을 가지고 있다면 PLC는 “RVH0001E240*”이라는 문자열로 응

답을 하게 된다.

4.17 입력 쓰기 (Write Inputs)

– 디지털 입력(Digital Input)

명령 형식 (Command Format) W I n n 161 160 *

채널 # 데이터 (00 ~ 0F)

응답 형식 (Response Format) W I *

4.18 출력 쓰기 (Write Outputs)

– 디지털 출력(Digital Output)

명령 형식 (Command Format) W O n n 161 160 *

채널 # 데이터 (00 ~ 0F)

응답 형식 (Response Format) W O *

75

4.19 내부 릴레이 쓰기 (Write Relays)

명령 형식 (Command Format) W R n n 161 160 *

Channel # Data 응답 형식 (Response Format)

W R *

4.20 타임머 접점 쓰기 (Write Timer-contacts)

명령 형식 (Command Format) W T n n 161 160 *

채널 # 데이터 (00 ~ 07)

응답 형식 (Response Format) W T *

4.21 카운터 접점 쓰기 (Write Counter-contacts)

명령 형식 (Command Format) W C n n 161 160 *

채널 # 데이터 (00 ~ 07)

응답 형식 (Response Format) W C *

4.22 타임머 현재 값 쓰기 (Write Timer Present Value) -

P.V.

76

명령 형식 (Command Format) W M n n 103 102 101 100 *

Timer1=00, 새로운 timer PV 값 ........ Timer64=3F (16진)

응답 형식 (Response Format) W M *

타임머 번호는 00부터 시작한다는 점을 유의하여야 한다. 즉, 00는 타

임머#1 (timer#1), 01은 타임머#2 (timer#2) … 등을 의미한다.

4.23 타임머 설정 값 쓰기 (Write Timer Set Value)

- S.V.

명령 형식 (Command Format) W m n n 103 102 101 100 *

Timer1=00, 새로운 타임머 설정 값(timer SV) .... Timer64=3F (16진)

응답 형식 (Response Format) W m *

Note: 2번째 문자는 “ WM” 명령어의 대문자 “ M” 대신에 소문자인

“ m” 을 사용한다는 점을 유의 하기 바람.

4.24 카운터 현재 값 쓰기 (Write Counter Present Value)

- P.V.

명령 형식 (Command Format) W U n n 103 102 101 100 *

77

Counter1=00, 새로운 PV 값 .... Counter64=3F (16진)

응답 형식 (Response Format) W U *

4.25 카운터 설정 값 쓰기 (Write Counter Set Value)

- S.V.

명령 형식 (Command Format)

W u n n 103 102 101 100 *

Counter1=00, 새로운 카운터 설정 값(Counter SV) .... Counter64=3F (16진)

응답 형식 (Response Format) W u *

Note: 2번째 문자는 “ WU” 명령어의 대문자 “ U” 대신에 소문자인

“ u” 을 사용한다는 점을 유의 하기 바람.

4.26 변수 값 쓰기 (Write Variable) – 정수 (A ~ Z)

명령 형식 (Command Format) W V I 알파벳 167 166 165 164 163 162 161 160 *

A,B.C....Z 32 비트 정수 값을 표현하기위한 8개의 16진수 디지트

응답 형식 (Response Format) W V I *

예) 변수 “K”에 5678910(=0DD516) 값을 쓰기 위해서는

“WVIK00000DD5*” 호스트링크 명령어를 보내야 한다.

78

4.27 변수 값 쓰기(Write Variable) – 문자열 (A$ ~ Z$)

명령 형식 (Command Format ) W V $ 알파벳 a a ... ... a a *

A,B.C....Z 문자열의 ASCII 문자 (변수길이)

응답 형식 (Response Format) W V $ *

예) 문자열 변수 “P$”에 “T100MD+ Super PLC” 문자열이라는 값을

쓰기 위해서는 “WV$PT100MD+ Super PLC* 호스트링크 명령를

보내야 한다.

4.28 변수 값 쓰기 - Data Memory (DM[1] ~ DM[4000])

명령 형식 (Command Format) W V D 163 162 161 160 163 162 161 160 *

0001 ~ 0FA0 (400010) 16 비트 정수 데이터를 표현을 위한 16 비트 인덱스

응답 형식 (Response Format)

W V D *

예) DM[1000] 16비트 정수 데이터 메모리 변수에 123410 (=4D216)

값을 쓰기 위해서는 “WVD03E804D2*” 호스트링크 명령를 보내

야 한다. (100010 = 3E816)

4.29 변수 값 쓰기 (Write Variable) – 시스템 변수

시스템 변수(System Variable)

타입(type)

시스템 변수(System Variable)

타입(type)

input[ ] 01 clk[ ] 08 output[ ] 02 date[ ] 09 relay[ ] 03 - 0A

79

timer[ ] 04 ADC* 0B ctr[ ] 05 DAC* 0C

timerPV[ ] 06 PWM* 0D ctrPV[ ] 07 * TBASIC에서의 사용용법은 다름

명령 형식 (Command Format)

W V S n n 161 160 163 162 161 160 *

type Index 16-bit Integer Data

type (01 to 0D) - 읽고자 하는 시스템 변수의 타입 번호 index (01 to 1F) - 01부터 시작하는 변수의 배열 인덱스 번호

응답 형식 (Response Format) W V S *

예) clk[1] 변수 값(RTC(Real Time Clock))에 현재 시(Hour))에 14

(14시)를 쓰기 위해서는 “WVS0801000E*” 명령을 PLC로 보내면

된다.

4.30 변수 쓰기 (Write Variable) – 고속 카운터 HSCPV[ ]

명령 형식 (Command Format)

W V H n 167 166 165 164 163 162 161 160 *

1 또는 2 32비트의 정수 값을 표현하기 위한 8개의 16진수 디지트

응답 형식 (Response Format) W V H *

예) HSCPV[2] 변수 값을 초기화(0: Zero) 시키려면 호스트링크 명령

“WVH200000000*”을 PLC로 보내면 된다.

80

4.31 RTC(Real Time Clock) 모듈의 갱신

명령 형식 (Command Format) W r *

응답 형식 (Response Format) W r *

배터리 백업 MX-RTC 모듈이 설치가 되어져 있을 때 이 명령은 PLC에

게 강제로 TIME[ ] 및 DATE[ ] 변수의 값들을 RTC 모듈에 쓰도록 한

다. 이 명령은 RTC 모듈이 없는 PLC에서는 무시가 된다

4.32 PLC의 일시 정지

명령 형식 (Command Format) C 2 *

응답 형식 (Response Format) C 2 *

PLC에 이 명령을 보내면 현재 스캔 다음에 PLC의 래더(Ladder) 프로

그램의 실행을 일시적으로 정지시킨다. 그러나 PLC는 I/O의 스캔은 계

속 실행을 하고 호스트 컴퓨터로 현재의 I/O 데이터 및 내부 변수 값들

에 대한 정보를 호스트 컴퓨터로 보내어 주며 호스트링크 명령에 대하여

서도 응답을 한다.

4.33 PLC 운전의 재 실행

명령 형식 (Command Format) C 1 *

응답 형식 (Response Format)

C 1 *

81

PLC로 이 명령을 보내면 “ C2” 명령에 의해 일시 정지가 되어진 PLC

의 래더(Ladder) 프로그램을 재 실행시킨다. PLC가 일시 정지되어있지

않은 상태라면 이 명령은 PLC에 아무런 영향을 주지 않는다.

4.34 호스트 통신 프로그램의 예

TRiLOGI 4.1x에 내장된 “ 호스트링크 명령(Host Link Command)”

을 주 메뉴의 “ Controller” 에서 이 장에 설명된 모든 호스트링크 명

령을 사용할 수 있다. 인터넷 TRiLOGI 버전 5.x에서는 이러한 기능은

TLServer의 시리얼 통신 설정 (Serial Communication Setup) 화면에

서 실행시킨다. 1:1 (Point-to-Point)통신 또는 복수(Multi-point) 통신

의 명령 문자열을 입력하여 실행하고 이에 해당하는 응답 문자열이 어

떻게 되는지 시도를 하여 보는 것은 호스트링크 명령에 대한 통신을

익히는데 많은 도움이 될 것이다. 쓰기 명령을 사용하여 몇 가지의 데

이터 값을 변경시키고 이것을 “ 온라인 모니터링(On-line Monitoring)

의 “ View Variables(변수 값 보기)” 창을 통해 변경된 값을 확인하

여 볼 수 있다.

비쥬얼 베이직으로 작성된 시리얼 통신 샘플 프로그램은

www.SuperPLC.com 사이트에서 다운로드 받을 수 있다. 이 프로그램

은 SuperPLC와의 통신 프로그램을 개발하고자 하는 프로그램머들에게

쉽고 빠르게 SuperPLC와의 인터페이스 프로그램을 작성할 수 있도록

모든 소스 프로그램 소스를 제공하고 있다. 또한 이 프로그램은 다음과

같은 주요 기능들을 제공하고 있다.

(a) PC의 키보드를 통해 원하는 명령 문자열을 입력할 수 있는 프롬

프트 창을 제공한다.

(b) 통신을 초기화 시키고 PLC에 명령 문자열을 전송한다.

(c) PLC로부터의 응답 문자열을 기다리고 PC의 화면에 응답 문자열

을 표시하여 준다.

이 프로그램은 1:1 (Point-to-Point)통신 또는 복수(Multi-point) 통신

프로토콜 양쪽 모드에서 M-시리즈 PLC들과 성공적으로 통신하기 위

해 필요한 모든 명령 코드들을 지원한다. 또한 이 프로그램은 PLC의

COMM1 (RS232) 포트는 물론 COMM3 (RS485) 포트 모두 지원한다.

프로그램머는 이 샘플 프로그램을 활용하여 자신의 어플리케이션 프

82

로그램을 쉽게 개발할 수 있다.

4.35 NETCMD$ 명령을 사용한 내부 네트워킹

모든 M-시리즈 PLC는 내장된 TBASIC 함수인 NETCMD$()를 사용하

여 호스트링크 명령을 다른 M-시리즈 또는 H-시리즈 PLC에게 보낼

수 있다. 이 함수는 복수(Multi-point) 통신 형식의 호스트링크 명령을

지원하며 자동의 FCS (Frame Check Sequence)를 계산하여 FCS 계산

결과 값을 명령 문자열에 붙이고 명령 문자열 마지막에 종단어

(Terminator)를 붙인 전체 명령 문자열을 전송한다. 이 함수는 올바른

응답 문자열을 수신하였을 때만이 명령 문자열에 대한 문자열을 리턴

하여 준다. 이 함수에 대한 상세한 사항은 iTRiLOGI 사용자 설명서 중

TBASIC의 함수에 대한 설명서를 참조하시기 바랍니다.

NETCMD$() 함수는 PLC간의 네트워크 통신을 위한 프로그램밍을 대

단히 간단하고 빠르게 작성할 수 있도록 하여 준다. 프로그래머는 PLC

간의 데이터 통신을 위해 이 장의 앞부분에서 설명한 형식에 따라 준

비가 된 호스트링크 명령 문자열을 NETCMD$() 함수 내에 삽입하여

보내고 이에 대한 응답 문자열을 확인하면 된다. 원격 I/O로서 사용하

기 위해 다른 PLC들의 I/O 값들을 내부 릴레이 등으로 연결시키기 위

해 NETCMD$() 함수를 적용한다.

“ RemoteIO-Mseries.PC5” “ RemoteIO-Hseries.PC5”

“ TRILOGI\TL5\usr\samples” 폴더 안에 슬래이브 PLC의 I/O를

마스터로 연결하는 NETCMD$()의 사용에 대한 두 가지의 예

(“ RemoteIO-Mseries.PC5” 와 “ RemoteIO-Hseries.PC5” )

가 들어 있다. 이 두 가지의 예제 프로그램을 통해 PLC간의 I/O 연결

방법에 대한 좋은 방식에 대한 아이디어를 얻을 수 있다.

“ RemoteIO-Hseries.PC5” TRiLOGI 프로그램은 슬래이브 PLC로

H-시리즈 및 M-시리즈 PLC 양쪽 모두에 적용하여 사용할 수 있다.

“ REMOTE-M.PC4” TRiLOGI 프로그램은 M-시리즈 PLC에만 적용

할 수 있다. M-시리즈의 호스트링크 명령 세트는 H-시리즈의 호스트

링크 명령 세트보다 더 많은 기능을 가지고 있기 때문에 .

“ REMOTE-M.PC4” TRiLOGI 예제 프로그램은 M-시리즈 PLC에만

적용되는 것이며 M-시리즈 PLC간의 내부 네트워킹을 위해 16-비트

데이터를 읽고/쓰는데 있어 M-시리즈 호스트링크 명령이 더 효율적이

다.

83

4.36 MODBUS 프로토콜을 사용한 내부 네트워킹

T100MD PLC는 NETCMD$보다 사용하기에 더 간단한 MODBUS 명

령을 사용하여 PLC간의 데이터 통신을 할 수 있다. 하지만 MODBUS

프로토콜의 주소 구조에 따른 데이터 통신의 제한으로 인하여

T100MD PLC의 변수를 읽고 쓰는데 약간의 제한이 있다. MODBUS

명령인 READMODBUS, READMB2, WRITEMODBUS, WRITEMB2 등

의 명령 사용법에 대한 상세한 내용은 인터넷 TRiLOGI 매뉴얼의

TBASIC 부분과 본 매뉴얼의 다음 장을 참고하시기 바랍니다.

84

5장 MODBUS / OMRON 프로토콜 지원

T100MD PLC는 SCADA 소프트웨어, 터치 판넬, PLC 등과 같은 타사의 제

어 소프트웨어/하드웨어와 쉽고 간단하게 데이터 통신을 할 수 있도록

OMRONTM 및 MODBUSTM ASCII/RTU와 호환되는 통신 프로토콜을 지원

한다. T100MD+ PLC는 통신 명령 프로토콜의 타입을 자동으로 인식하며

이에 따른 네트워크 명령에 대하여 해당 프로토콜로 응답을 한다. 이러한

기능은 사용자의 어떠한 개입 또는 PLC의 특정한 설정 없이 이루어진다.

MODBUS 및 OMRON 프로토콜 양쪽 모두 3장에서 설명한 자체 프로토콜

(Native Protocol)과 같은 기기 ID 주소 (Device ID Address: 00 ~ FF)를

사용한다. T100MD+ PLC의 I/O 및 내부 변수들의 주소는 OMRON 또는

MODICON PLC와는 다른 방식으로 구성되므로 T100MD+ PLC의 I/O 및

내부 변수들의 주소를 OMRON 또는 MODBUS 프로토콜에 의해 쉽고 간단

하게 읽고 쓸 수 있도록 T100MD+ PLC의 각종 I/O 및 내부 변수들을 각

프로토콜에 맞게 사전 맵핑(Mapping) 시켜 놓았다. 모든 I/O, 타임머, 카운

터, 내부 릴레이 및 데이터 메모리(DM[1] ~ DM[4000])은 MODBUS의 홀

딩 레지스터(Holding Register) 영역에 할당 시켜 놓았다. 아울러 입력, 출

력, 릴레이, 타임머 및 카운터의 비트들은 MODBUS Function 이 01, 02,

또는 05 중 어떠한 타입이더라도 항상 표5.1에 따라 MODBUS의 주소가

적용하여야 한다.

하지만 32비트 변수 및 문자열 변수들은 PLC에 따라 사용하는 방식이 제

각기 다를 수 있기 때문에 OMRON 및 MODBUS 프로토콜의 주소에 할당

하여 놓지 않았다. 이러한 프로토콜에 맵핑(Mapping)되어 있지 않은 변수

들은 사용하지 않은 데이터 메모리(DM[n])등에 이러한 변수 값들을 복제

(소프트웨어적인 연결)하여 OMRON 또는 MODBUS 프로토콜에 의하여 쉽

게 데이터 통신을 할 수 있다.

85

5.1 MODBUS ASCII 프로토콜의 지원

T100MD+ PLC는 다음과 같은 명령 및 응답 형식의 MODBUS ASCII

프로토콜을 지원한다.

시작 주소 기능(Function) 데이터 LRC 검사 CRLF

: 2 문자 2 문자 # 문자 2 문자 2 문자

T100MD+ PLC는 MODBUS ASCII의 다음의 기능 코드(Function

Code)를 지원한다.

01/02 I/O 비트 읽기 (표5.1의 비트 주소 맵핑 사용) 03/04 I/O 워드 레지스터 읽기

05 I/O 쓰기 (표5.1의 비트 주소 맵핑 사용)

06 사전 설정 단일 워드 레지스터 (Preset Single Word Register)

16 사전 설정 복수 워드 레지스터 (Preset Multiple Word Registers)

MODBUS 명령 및 응답의 데이터 형식과 주소에 대한 더 상세한 사항

에 대해서는 슈나이더 그룹의 http://www.modicon.com 사이트에서

참조하시기 바랍니다.

86

표 5.1: T100MD+ PLC의 메모리 맵핑

T100M+ I/O # OMRON MODBUS

워드 주소 맵핑 (Word Addr. Mapping)

MODBUS 비트 주소 맵핑

(Bit Addr. Mapping)Input n n 1 to 16 IR00.0 to IR00.15 40001.1 to 40001.16 1 to16 17 to 32 IR01.0 to IR01.15 40002.1 to 40002.16 17 to 32 33 to 48 IR02.0 to IR02.15 40003.1 to 40003.16 33 to 48 49 to 64 IR03.0 to IR03.15 40004.1 to 40004.16 49 to 64 65 to 80 IR04.0 to IR04.15 40005.1 to 40005.16 65 to 80 81 to 96 IR05.0 to IR05.15 40006.1 to 40006.16 81 to 96 Output n 256 + n 1 to 16 IR16.0 to IR16.15 40017.1 to 40017.16 257 to 272 17 to 32 IR17.0 to IR17.15 40018.1 to 40018.16 273 to 288 33 to 48 IR18.0 to IR18.15 40019.1 to 40019.16 289 to 304 49 to 64 IR19.0 to IR19.15 40020.1 to 40020.16 305 to 320 65 to 80 IR20.0 to IR20.15 40021.1 to 40021.16 321 to 336 81 to 96 IR21.0 to IR21.15 40022.1 to 40022.16 337 to 352 Timer n 512+n 1 to 16 IR32.0 to IR32.15 40033.1 to 40033.16 513 to 528 17 to 32 IR33.0 to IR33.15 40034.1 to 40034.16 529 to 544 33 to 48 IR34.0 to IR34.15 40035.1 to 40035.16 545 to 560 49 to 64 IR35.0 to IR35.15 40036.1 to 40036.16 561 to 576 Counter n 768 + n 1 to 16 IR48.0 to IR48.15 40049.1 to 40049.16 769 to 784 17 to 32 IR49.0 to IR49.15 40050.1 to 40050.16 785 to 800 33 to 48 IR50.0 to IR50.15 40051.1 to 40051.16 801 to 816

49 to 64 IR51.0 to IR51.15 40052.1 to 40052.16 817 to 832

Relay n 1024 + n 1 to 16 IR64.0 to IR64.15 40065.1 to 40065.16 1025 to 1040 17 to 32 IR65.0 to IR65.15 40066.1 to 40066.16 1041 to 1056 33 to 48 IR66.0 to IR66.15 40067.1 to 40067.16 1057 to 1072 49 to 64 IR67.0 to IR67.15 40068.1 to 40068.16 1073 to 1088 65 to 80 IR68.0 to IR68.15 40069.1 to 40069.16 1089 to 1104 81 to 96 IR69.0 to IR69.15 40070.1 to 40070.16 1105 to 1120 97 to 112 IR70.0 to IR70.15 40071.1 to 40071.16 1121 to 1136 113 to 128 IR71.0 to IR71.15 40072.1 to 40072.16 1137 to 1152 129 to 144 IR72.0 to IR72.15 40073.1 to 40073.16 1153 to 1168 145 to 160 IR73.0 to IR73.15 40074.1 to 40074.16 1169 to 1184 161 to 176 IR74.0 to IR74.15 40075.1 to 40075.16 1185 to 1200 177 to 192 IR75.0 to IR75.15 40076.1 to 40076.16 1201 to 1216 193 to 208 IR76.0 to IR76.15 40077.1 to 40077.16 1217 to 1232 209 to 224 IR77.0 to IR77.15 40078.1 to 40078.16 1233 to 1248 .. .. .. .. 497 to 512 IR96.0 to IR96.15 40097.1 to 40097.16 1521 to 1536

87

T100M+ I/O # OMRON MODBUS

워드 주소 맵핑 (Word Addr. Mapping)

MODBUS 비트 주소 맵핑

(Bit Addr. Mapping)Timer 현재값

1 to 64 IR128 to IR191 40129 to 40192

Counter 현재값

1 to 64 IR256 to IR319 40257 to 40320

Clock TIME[1] TIME[2] TIME[3]

IR512 IR513 IR514

40513 40514 40515

Date DATE[1] DATE[2] DATE[3] DATE[4]

IR516 IR517 IR518 IR519

40517 40518 40519 40520

Data Memory

DM[1] DM[2] …. DM[4000]

DM[1] DM[2] …. DM[4000]

41001 41002 …. 45000

* MODBUS는 슈나이더 그룹의 등록된 상표입니다. OMRON은 OMRON사의 등록된 상표입니다.

5.2 MODBUS RTU 프로토콜의 지원

T100MD+ 및 T100MX PLC의 Rev.D 이후의 버전부터 MODBUS

RTU 프로토콜을 지원하고 있다. MODBUS ASCII와 RTU 프로토콜의

차이점은 ASCII 프로토콜은 명령 및 응답 형식에 2개의 ASCII 문자를

사용하는데 반해 RTU 프로토콜은 1-바이트의 바이너리(2진수) 데이터

를 사용한다는 점이다. 하나의 메시지 프레임은 COM 포트에서 수신되

어진 문자 사이에 3.5문자에 해당하는 통신 시간의 침묵 간격(무통신

시간)에 의해 구분되어진다. 기타 기능코드(Function Code) 및 메모리

맵핑 등은 표5.1에 있는 바와 같이 MODBUS ASCII와 동일하다.

MODBUS RTU의 명령 및 응답 형식은 다음과 같다.

시작 주소 기능(Function) 데이터 CRC 16 끝

3.5 문자 시간 동안 침묵 1 바이트 1 바이트 # 바이트 2 바이트 3.5 문자 시간

동안 침묵

T100MD+ PLC는 MODBUS RTU의 다음의 기능 코드(Function

88

Code)를 지원한다.

01/02 I/O 비트 읽기 (표5.1의 비트 주소 맵핑 사용) 03/04 I/O 워드 레지스터 읽기

05 I/O 쓰기 (표5.1의 비트 주소 맵핑 사용)

06 사전 설정 단일 워드 레지스터 (Preset Single Word Register)

16 사전 설정 복수 워드 레지스터 (Preset Multiple Word Registers)

5.3 OMRON 호스트링크 명령의 지원

명령 타입 헤더 (Header) 지원 수준

a) TEST TS Full support b) STATUS READ MS Full support c) ERROR Read MF Dummy (항상 good) d) IR Area READ RR Full support (0000 to 1000) e) HR, AR, LR Area & TC Status READ

RH Dummy (항상 “0000”을 리턴)

f) DM AREA READ RD Full support g) PV READ RC Dummy (항상 “0000”을 리턴) h) Status Write SC Dummy (항상 OK) l) IR Area WRITE WR Full Support j) HR, AR, LR Area & TC Status WRITE

WH, WJ,WL, WG

Dummy (항상 OK)

k) DM Area WRITE WD Full Support (DM0001 ~ DM4000) l) FORCED SET KSCIO

KRCIO Full Support (IR 영역만 해당) Dummy (IR 영역을 제외한 다른 영역의

경우) m) Registered I/O Read for Channel or Bit

QQMR/ QQIR

Full Support (IR 및 DM영역에만 해당) Dummy (IR 및 DM영역을 제외한 다른

영역의 경우) -----(항상 0000)

각각의 OMRON 호스트링크 명령에 대한 명령 및 응답 형식의 상세한

설명은 OMRON사에서 발행한 C20H/C28H/C40H PLC 운전 매뉴얼을

참조하시기 바랍니다.

89

5.4 어플리케이션 예제: SCADA 소프트웨어와의 인터페이스

SCADA(HMI/MMI) 소프트웨어 또는 LCD 터치 스크린 판넬 등은 일반

적으로 오브젝트 기반(Object-oriented)의 프로그램밍 방식을 사용한

다. 스위치, 지시계, 램프, 또는 미터계 등과 같은 그래픽 오브젝트들은

소프트웨어의 라이브러리에서 선택하여 사용하고 이 그래픽 오브젝트

에 PLC의 특정 I/O 또는 내부 데이터 주소를 할당(연결)한다. SCADA

소프트웨어를 설계할 때 사용자는 먼저 PLC의 타입을 정의하여야 한

다. 사용자는 T100MD+ PLC를 위해 MODBUS ASCII, MODBUS RTU

또는 OMRON C20H 중 하나를 PLC타입으로 사용할 수 있다. 그래픽

오브젝트를 생성하였을 때 PLC의 특정 I/O 또는 내부 데이터 주소를

할당하여야 하는데 이때 표5.1에 맵핑되어 있는 주소를 참조하여 선택

하면 된다.

예제 1: 그래픽 지시램프를 PLC의 입력 채널#9에 연결

OMRON 프로토콜을 사용하는 경우 이 램프는 IR00.8 로 I/O

연결 주소를 설정하여야 한다. 만일 PLC를 MODBUS타입으로

정의하여 놓았다면 이 지시 램프를 I/O 주소 4001.9로 연결하

여야 한다. (표5.1 참조) 양쪽 경우 모두 사용자는 프로토콜

자체에 대한 실제 명령 형식에 대하여 알아둘 필요는 없다. 사

용자가 이 그래픽 오브젝트를 선택하면 SCADA 소프트웨어는

해당 입력 주소를 악세스(ACCESS)하기 위하여 요구되는 명령

을 자동적으로 생성한다.

예제 2: ADC#3에서 읽어드린 아날로그 값을 SCADA 화면의 바 그래

프로 표시

ADC#3으로부터 읽어드린 데이터는 표5.1 상의 MODBUS 또

는 OMRON 프로토콜로 직접적으로 맵핑(Mapping)되어 있지

않기 때문에 ADC#3을 읽는 Custom Function(TBASIC)의 프

로그램 문에 다음과 같이 ADC#3의 값을 데이터 메모리에 연

결하여 주어야 한다.

DM[100] = ADC(3)

SCADA 화면 상의 바 그래프의 I/O 주소는 표5.1에서 보는 바

와 같이 OMRON 프로토콜을 사용하는 경우에는 DM[100]으

로 연결 시키면 되고 만일 MODBUS 프로토콜을 사용하는 경

우에는 MODBUS 주소 41100 으로 연결시켜 주면 된다.

90

5.5 MODBUS 마스터로서 T100M+ PLC

T100MD+ PLC는 MODBUS의 슬래이브(Slave) 뿐만이 아니라

MODBUS 마스터(MASTER) 모드를 지원한다. 다른 T100MD+ PLC

또는 타사의 MODBUS 슬래이브 기기들과의 통신을 위해서 TBASIC의

READMODBUS, READMB2, WRITEMODBUS, WRITEMB2

(READMB2 및 WRITEMB2 명령은 Revision r44 이상에서 지원) 명령

을 사용하면 된다. READMODBUS 또는 READMB2 명령은 슬래이브

기기들의 데이터를 읽기 위하여 MODBUS 기능(Function) 03를 사용하

고 WRITEMODBUS 또는 WRITEMB2 명령은 슬래이브 기기에 데이터

를 쓰기 위하여 MODBUS 기능(Function) 16를 사용한다.

MODICON에서 I/O 채널은 주소 40001에서부터 시작하는 것으로 정의

되어져 있음에도 불구하고 MODICON은 MODBUS 명령에서 Zero

Offset 주소를 사용하는 것으로 정의되어져 있다. TBASIC의

READMODBUS, READMB2, WRITEMODBUS 또는 WRITEMB2 명령

을 사용할 때 표 5.1에 표시된 MODBUS 주소 40001은 주소 0000로

명기하여 주어야 하고 40002는 0001로 …. 41001은 1000 등으로 명

기하여 주어야 한다. 이러한 Zero Offset 주소 방식은 약간 익숙하지

않은 방식이지만 MODBUS 규격에 의해 호환성을 유지하기 위하여 이

러한 정의를 따를 수 밖에 없다.

MODBUS RTU 마스터(Master)로서의 T100MD+ PLC

T100MD+ PLC의 Rev.D 버전 이상부터는 MODBUS RTU 마스터

(MASTER) 모드를 지원한다. ASCII방식의 READMODBUS, READMB2,

WRITEMODBUS 및 WRITEMB2 명령을 MODBUS RTU에서도 똑같이

사용한다. T100MD+ PLC의 MODBUS RTU 프로토콜 모드로 설정하

는 것은 COMM 포트 번호에 10 (10진수)을 더하여 주기만 하면 된다.

예를 들면, COMM1에 RTU 명령을 사용하기를 원하면 포트 번호 #11

를 명기하면 되고 COMM3에 RTU 명령을 사용한다면 포트 번호 #13

으로 명기하면 된다. 예제로서, TBASIC 문 DM[10] = READMODBUS

(13, 8, 16)은 통신 포트 COMM3를 경유하여 ID = 08을 갖는 슬래이

브의 레지스터 #16번 값을 읽는 명령이다. 이 레지스터 (#16)은

MODBUS 주소 40017를 의미하며 또한 이는 T100MD+ 슬래이브

PLC의 OUTPUT[1]를 의미한다.

91