Ladder + Basic

 
"PLC"의 의미를 알고 계신다면 산업분야에서 거의 대부분의 PLC는 "Ladder Logic"이라고 불리우는 매우 독특하고 쉽게 프로그램밍할 수 있고 산업현장에서 충분히 입증이된 프로그램 언어 중 하나라는 것을 이미 알고 계실 것입니다. 래더 로직 (Ladder Logic) 프로그램밍은 단일 비트의 디지털 I/O 프로그램밍을 다루는데 있어 그 자체가 대단한 강점을 가지고 있습니다. 그러나 아나로그 또는 수치적인 데이터를 조작하는 것이 필요한 응용 분야에서는 그러한 수치 또는 아나로그 데이터 처리에 최상의 솔루션이라 할 수는 없습니다.

다른 한편으로 데스크탑 컴퓨터는 일반적으로 베이직(BASIC), C, 파스칼(PASCAL), C++, 자바(Java)와 같은 고급 언어를 사용하여 프로그램 합니다. 이러한 강력한 프로그램밍 언어는 수치 또는 아나로그 데이터 처리를 위하여 개발되어졌습니다만 이들은 또한 단일 비트 디지털 I/O들을 처리하는 전문적인 용도로는 개발되어지지 않았습니다.

이러한 두 가지의 가장 중요한 프로그램밍 언어들을 이음새 없이 완벽하게 하나의 솔루션으로 결합하는 것에 의하여 TRi-PLC (M-시리즈 Super PLC)는 단지 간단한 몇 개의 명령어 라인으로 정교(精巧)하고 복잡한 어플리케이션을 매우 쉽게 다룰 수 있도록 산업계 최초로 완벽하게 통합된 언어인 " Ladder + BASIC" 언어를 출시하였습니다. 개발회사인 Triangle Research International 사는 또한 산업 현장에서 극찬을 받고 있는TRiLOGI PLC 프로그램밍 에디터, 컴파일러 및 시뮬레이터 소프트웨어등을 사용하고 "Ladder + BASIC" 언어로 프로그램밍하는 M-시리즈 Super PLC를 출시하고 있습니다. TRiLOGI소프트웨어에 대하여 좀더 상세하게 알고 싶으신 분은 다음 링크 중의 하나를 클릭하시기 바랍니다.

TRiLOGI 소프트웨어의 윈도우 버전은 근본적으로 네트워크를 통해 PLC를 프로그램밍할 수 있도록 설계된 "클라이언트-서버" 소프트웨어입니다. 이 소프트웨어는 "Client" 와 "Server" 두 부분으로 나뉘어 집니다. 서버는 PLC에 연결되어진 PC상에서 실행됩니다. 클라이언트는 서버와 같은 컴퓨터 내에서 동시에 또는 서버와는 다른 컴퓨터에서 실행할 수 있습니다. 따라서 네트워크(인터넷 포함)로 연결된 원격 컴퓨터일지라도 로칼에서 PLC를 프로그램 할 때와 똑같이 인터넷 또는 인트라넷을 경유하여 원격으로 PLC를 프로그램 할 수 있습니다.

현재 버전

클라이언트:   인터넷 TRiLOGI 버전 5.1
서버: TLServer 버전 2.0

OS (Operating System)

윈도우 98, ME, NT, 2000, XP

런타임 시스템 (Run-time System)

자바 환경 (Java Runtime Environment: JRE 1.3.1)이 요구됨

지원되는 Super PLC 모델*

1. T100MD+ PLCs
2. T100MX+ PLCs

도움말 파일 다운로드

Trilogi 설치가이드 및 도움말 (Korean)


* Note
:  인터넷TRiLOGI 버전5.1은 M-시리즈 PLC에서만 사용될 수 있습니다. H-시리즈 및 E-시리즈 PLC는
               DOS버전만 지원합니다.

 

( Ladder Example )

TBASIC 언어Components

1. 정수 값 (Integer Variables)

TRiLOGI 버전 4.0의 TBASIC 컴파일러는 32비트 정수 계산을 지원한다. 모든 정수 상수는 32비트로 처리가 되며 32비트의 길이를 갖는 26개의 변수(A부터 Z까지)가 있다. 이들 변수는 -231 ~ +231 (-2,147,483,648 ~ +2,147,483,648)사이의 수로 표현될 수 있다. 나머지 시스템 변수 및 데이터 메모리 DM[n]은 -32,768 ~ +32,767 사이의 숫자를 저장하는 16비트 변수 이다. 이러한 16비트 변수는 다음과 같다.

DM[1]..DM[4000] (Total = 4000), input[n], output[n], relay[n], timerbit[n], ctrbit[n], timerPV[n],ctrPV[n], HSCPV[n], (고속 카운터: High Speed Counter). TIME[n], DATE[n].

그러나 TBASIC에서 모든 수치 계산은 수자로 표현되는 변수들의 비트 길이(16비트 또는 32비트)와 관계없이 32비트의 부호를 가진 정수로 처리가 된다. TBASIC에서 사용되어지는 모든 변수는 "GLOBAL" 변수이다. (모든 변수는 128개의 Custom Function 중 어떠한 Custom Function에서든 읽고 쓰기가 가능하도록 공유한다는 것을 의미한다.) 

2. 정수 연산자 (Integer Operators)

a) 산술 연산자(Arithmetic Operators): +, -, *, /, MOD
b) 비트단위의 로직 연산자 (Bitwise Logical Operators):

심볼

기능

사용예

&

로직의 AND

IF input[1] & &H02 ...

|

로직의 OR

output[1] = A | &H08

^

배타적인(Exclusive) OR

A = RELAY[2] ^ B

~

로직의 NOT

A = ~timerPV[1]

c) 관계형 연산자 (Relational Operators) : "IF [표현문] THEN ....." 그리고 "WHILE [표현문] ...."과 같은 명령문장
    에서 [표현문]으로 사용되어지는 연산자.

심볼

기능

사용예

=

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 (관계형 AND)

IF A>B AND C<=D

OR

Relational OR (관계형 OR)

IF A<>0 OR B=1000

3. 문자열 데이터 (String Data)

문자열은 일련의 문자와 숫자(8비트 ASCII 코드)로 이루어진다. 문자열은 이중 인용 기호(" ")안에 포함되는 0~70개의 문자로 구성이된다.

(예)
"TBASIC made PLC numeric processing a piece of cake!"
"$102,345.00"

TBASIC은 최대 26개의 문자열 변수 (A$, B$ ... Z$)를 지원한다. 각 문자열 변수는 0 (Null)에서부터 최대 70 무자까지 포함할 수 있다.

4. 문자열 연산자 (String Operators)

a)  할당 연산자(Assignment Operator): 문자 변수 (A~Z, DM 및 시스템변수 등)는 다음과 같은 할당 표현식을 사용하여 문자열을 할당한다.

(예)
A$ = "Hello, Welcome To TBASIC"
Z$ = MID$(A$,3,5)

b) 문자 연결 연산자(Concatenation Operators): 두 개 이상의 문자를 합쳐야할 경우 다음 예와 같이  "+" 연산자를 사용하여 간단히 합칠 수가 있다.

(예)
M$ = "Hello " + A$ + ", welcome to " + B$
위의 예에서 만일 A$가 "James"라는 문자열을 가지고 있고 B$는 "TBASIC"이라는 문자열을 가지고 있다면 M$는 "Hello James, welcome to TBASIC" 이라는 문자열을 갖게 될 것이다.

c) 비교 연산자(Comparison Operators): 두 개의 문자열을 STRCMP(A$,B$)라는 Function을 사용하여 동일성 유무를 비교할 수 있다. 그러나 "=", "<>"등과 같은 정수 비교 연산자는 문자열 비교 연산자로 사용할 수 없다.

5. TBASIC 명령문 및 Function(Statements and Functions)

강력한 TBASIC 언어의 명령문 및 Function들의 대부분을 간략한 설명과 함께 아래 표에 설명하여 놓았다.
(하기 이외의 강력하고 간단하게 사용할 수 있는 TBASIC 명령어들은 프로그램머들에게 제어 설계 시간을 대폭 줄일 수 있도록 하여 준다.)

명령

목적

ABS(x)

x 의 절대 값을 구하기 위함

ADC(n)

A/D 변환기 #n 으로부터 값을 구하기 위함

ASC(x$,n)

x$의 n번째 문자의 ASCII코드 값을 구하기 위함

CALL n

CusFn #n 프로그램을 호출하기 위함

CHR$(n)

n 에 해당하는 ASCII문자를 구하기 위함.(n은 반드시 0에서 255 사이의 숫자이어야 함)

CLRBIT v,n

정수 변수의 n번째 비트 (Bit #n)을 "0"로 만듬

FOR ... NEXT

루프안의 명령문을 지정된 숫자 만클 반복 실행함

GetCtrSV (n)

GetTimerSV (n)

카운터 또는n번째 타임머(Timer #n)의 설정값 (S.V :Set Value)을 구하기 위함

GETHIGH16(v)

32비트 정수 변수에서 상위 16비트를 구함

GOTO @ n

현재 Custom Function 내에서 지정한 @n 번 라인으로 조건없이 이동함

HEX$(n)

n의 16진 문자를 구함

HEXVAL(x$)

문자열 x$의 16진수를 구하기 위함

HSTIMER n

PLC 타임머(Timer) #1 에서부터 #n번까지의 타이머를 0.01초 분해능의 "고속 타임머 (HST: High Speed Timers)"로 지정하기 위함.

HSCDEF ch, fn,v

고속 카운터(High Speed Counter)의 채널 ch에대한 파라메터들을 활성화 시키고 셋업함

HSCOFF ch

고속 카운터 #ch를 사용 정지시킴

IF .. THEN .. ELSE .. ENDIF

표현문에 의해 리턴되는 결과에 따라 프로그램 흐름(순서)을 결정하는 명령어

INPUT$(ch)

통신 포트 ch로부터 문자열를 구함

INTRDEF ch, fn,e

인터럽트 입력 채널 ch와 인터럽트 서비스 루틴 CusFn #fn을 활성화 시킴

INTROFF ch

인터럽트 입력 채널 ch를 사용정지 시킴

LEN(x$)

x$안의 문자 갯수를 구함

LOAD_EEP(addr)

EEPROM으로부터 16비트 정수 값을 구하기 위함

LSHIFT i,n

16비트 정수 변수 값을 왼쪽으로 1비트 전체 이동 시킴

MID$(x$,n,m)

x$로부터 n번째 문자부터 시작하는m 문자의 열을 추출하기 위함

PAUSE

CusFn를 일시 정지 시킴

PIDdef ch, lmt, P,I,D

PID (비례, 미분, 적분) 제어기의 P.I.D 파라메터 값을 설정하기 위함

PIDcompute (ch,E)

PIDdef 명령에 의하여 설정된 P,I,D 값에 따라 에러 E에 대한 출력값을 계산함
(PID출력계산)

PRINT# n x$;.. y; z....

파라메터 리스트(x$; y; z)에 의해 구성된 문자열을 통신 포트 #n로 내보냄.

PMON ch

PMOFF ch

PMON은 채널 #ch에서 펄스측정기능(Pulse Measurement Function)을 활성화 시킴

PMOFF는 #ch을 사용 중지 시킴

PULSEFREQUENCY

PULSEPERIOD

PULSEWIDTH

마지막 입력 펄스의 주파수(Hz)를 구함 ;  

채널 ch에 입력되어진 입력 펄스의 주기를 1/1000 초 (milli-second)의 해상도로 구함.

채널 ch에 입력되어진 입력 펄스의 폭을 1/1000 초 (milli-second)의 해상도로 구함.

REFRESH

물리적인 출력값을 즉각적으로 새로 고침

RESET

PLC의 소프트웨 리셋을 실행함

RETURN

호출 기능(Caller Function)으로 조건 없이 리턴 시킴

REM (or ')

프로그램내에 설명문을 삽입함

RSHIFT i,n

정수 변수를 오른쪽으로 1비트 이동 시킴

SAVE_EEP data, addr

정수 데이터를 상용자의 정의 EEPROM 주소 add에 16비트에 저장함

SETBAUD ch, baud

PLC의 시리얼 통신 채널 #ch의 통신  “Baud Rate”(속도)를 설정함

SETBIT v,n

정수 변수 v의 비트 #n를 "1"로 설정한다.

SetCtrSV n, val

SetTimerSV n, val

카운터 #n 또는 타임머 (Timer) #n의 설정값 (S.V :Set Value)을 val 으로 변경시킴

SETDAC n, x

D/A 변환기 #n 값을 x 로 설정한다.

SETTHIGH16 v,d

32비트 변수 v의 상위 16비트을 d에 할당한다.

SETPWM n, x, y

PWM 채널 #n을 실행 싸이클(Duty Cycle) x%로 설정한다.

STEPCOUNT(ch)

STEPMOVE에 의해 진행된 스텝의 수를 확인한다.

STEPSPEED ch, pps, acc

PLC의 스텝퍼 모터 제어기 (펄스 발생기) 채널 #ch에 속도 pps 와 acc를 설정한다.

STEPMOVE ch, count, r

스텝퍼 모터 펄스 발생기 (스텝퍼 모터 제어기) 채널  #ch를 펄스 출력 카운트 수(count)만큼 동작시킨다.

STEPSTOP

스텝퍼 모터 제어기 #n를 즉각 중지 시킨다.

STR$(n)

수자 n을 문자열 표현으로 변환시킨다.

STRCMP(A$, B$)

두 문자열을 비교한다. A$ 와 B$.

STRUPR$(A$)

A$의 문자를 모두 대문자로 리턴한다.

STRLWR$(A$)

A$의 문자를 모두 소문자로 리턴한다.

TESTBIT (v,n)

변수 v의 #n비트의 로직 상태를 리턴한다.

WHILE expression .... ENDWHILE

주어진 조건이 진실(True)인 동안 루프안의 명령문들을 반복적으로 실행 한다.

VAL(x$)

문자열 x$ 의 문자 갯수를 리턴한다.