Delfoi Integrator는 simulation에
기반을 둔 시스템 통합을 위한 디자인 플랫폼이며, Simulation, DB, ERP
systems, web과의 범용적인 클라이언트, 서버방식의 통신 interface이다.
Delfoi Integrator는 가공을 위해 필요한 통합환경을 구축하는 시간을 줄여,
정확한 생산설계, ERP system의 스케줄링 솔루션을 가능케 한다. Delfoi Integrator의
특징은 다음과 같다. |
Distributed simulation |
Delmia simulation software
(예를 들면 QUEST)와 Delfoi Integrator를 이용한 통합환경구축은 여러
simulation 모델들이 넥트웍상에 한 모델처럼 구동되는 분산 simulation을
가능케하며, customer는 여러 개의 공장들을 각기 다른 컴퓨터에 구동시켜 하나의 시뮬레이션을
구축하는데 Delfoi Integrator는 사용되어진다. 이러한 방법을 사용하면 통합모델의
크기는 별로 중요하지 않은 문제가 되며, 여러 개의 작은 모델들, 실제현상에서 구현되는
여러공장들로 나누어 질 수 있다. 또한 시뮬레이션 모딜들은 웹 도구들을 이용하여 제어될
수 있으며, DB와 다른 IT system들과도 Integrator를 이용하여 상호 연계될
수 있다. |
MES development |
MES (Manufacturing Execution
System)과 Integrator를 이용한 통합환경 개발은 생산설계를 위한 새로운 개발
Platform이라 할 수 있다. Integrator를 이용하여 system integrators
시뮬레이션으로 control software를 테스트할 수 있고 그것을 개발시킬 수 있다.
즉, 실제로 존재하는 생산 시스템이 적용되기 전에 실제의 control system으로
customer를 교육시킬 수 있으며, 증명하는데에 사용되어 질 수 있는 특징이 있다.
|
PLC verification |
PLC (Programmable Logic
Controller)과 Integrator를 이용한 통합환경 개발은 일반적인 계획, 프로그래밍,
테스트 환경 설계에 필요한 로봇 프로그램들과 PLC 프로그램들이 사용되어지는 자동차 산업에
응용되어 질 수 있다. 가공업자들은 생산설계의 변화에 돈과 시간을 절약할 수 있는 장점을
가진다.
또한, delfoi integrator는 표준 TCP/IP protocol을 기반으로
사용하며, 표준 XML을 지원하는 미들웨어(MiddleWare) 응용프로그램이라 할 수
있다. |
|
Delfoi Integrator는
미들웨어의 개념으로 다음 그림의 왼쪽과 같이 산재되어 있는 복잡한 시스템의 구조를 오른쪽과
같이 Integrator를 중심 라인으로 하여 어느 시스템에서든 다른 시스템과의 communication을
안정적으로 보장해준다. 예를 들면, Delmia 제품인 Quest를 이용하여 시뮬레이션을
할 때, DB에 있는 입력데이터와 Robot Simulation인 IGRIP을 함께 사용하려
한다면 각기 다른 방법과 다소 복잡한 방법을 사용하여, 통신하여야만 한다. 하지만, Delfoi
Integrator를 이용하면, TCP/IP Protocol과 Message Queuing
방법을 사용하여 간단히 DB와 IGRIP과 통신할 수 있다. |
|
|
<얽혀있는 응용프로그램들> |
<Integrator를
이용하여 정리된 응용프로그램들> |
|
Delfoi Integrator의 기술적인 특징 및 사양은 다음과 같다. |
message broker built on TCP/IP sockets |
client name service (NOT Ips) |
priority based delivery and queueing |
delivery and response timeouts |
enquiries for available processes and messages |
C, Java, Pascal and Visual Basic APIs for programmers
not familiar with BSD sockets |
Delfoi Integrator는 다음과 같은 통신 Protocol의 특징을 가지고 있다. |
각각의 클라이언트는 서버와 TCP/IP stream 이용하여 통신한다. |
모든 메시지들은 TCP/IP stream을 이용하여 Queuing 된다. |
모든 통신은 비동기화식으로 이루어진다. |
서버와의 연결은 TCP/IP의 Socket이 닫혀야 접속이 끊긴다. |
접속이 끊기게 되면 서버는 클라이언트와 통신되어지고 있는 모든 메시지들을 소멸시킨다. |
통신모드에는 두가지 타입이 있다. 첫 번째로 active 모드인데 클라이언트가 서버에
새로운 메시지들을 요구할 때
사용하는 모드이다.
두 번째로는 passive 모드인데 클라이언트가 모든 메시지들을 언제나 다른 조건 없이
받는다
는 것을 의미한다.
또한 통신에 사용되어지는
각각의 메시지는 8가지의 fields를 가진다. 각 8개의 fields들은 다음과 같다.
priority(0부터
5까지 숫자이며, 5는 가장 작은 것이다.), delivery timeout, response
timeout, receiver name,
sender name,
message id, response id, data이다. 이러한 fields들은 하나의
메시지가 갖는 여러개의 속성들이
라 할 수 있으며,
항상 클라이언트는 메시지의 fields를 통해 메시지를 핸들링 할 수 있다. |
|
|
<
본 론 > |
다음 그림은 Delfoi Integrator의
주변 시스템과의 구성을 보이고 있다. Integrator는 기본적으로 중심에 모든 주변
시스템과의 communication을 연계해주는 Delfoi 서버를 축으로 하고 주변
각 시스템과의 접속을 위한 인터페이스 모듈들로 구성이 된다. 인터페이스 모듈들은 모두
Delfoi Integrator 서버를 사용하기 위한 일종의 서로 다른 Protocol이며,
IGRIP을 이용할땐 GSL API를 Quest는 SCL API를, Quest의 BCL(Batch
Control Language)을 사용하여 Quest를 사용할 수 있는 QBI(Quest
Batch Interface)가 있으며, ERP와 Integrator를 연계하기 위해
특별한 Interface를 구축할 수가 있다. 같은 방법으로 PLC나 MES와도 Interface를
구축할 수 있다. 또한 C API, Database, Active X Component,
VB API, ODBC를 이용하여 다른 응용프로그램과의 연계를 Delfoi Integrator는
가능케 한다.
|
|
<델포이
인테그레이터와 주변 시스템과의 연계를 위한 인터페이스 구성도> |
위 그림을 바탕으로 하여, 모든
주변 시스템과의 communication을 연계해주는 Delfoi 서버를 축으로 하는
주변 각 시스템과의 접속을 위한 인터페이스 모듈들을 소개하겠다. |
C API |
C API는 통합환경을 위해 통신 Interface
모듈을 C Language를 이용하여 구축한다. C API는 동적 라이브러리인 Syslnk32.dll를
System32 폴더에 넣어 시스템에 등록시킨 후, Microsoft Visual C/C++에서
Syslnk32.lib를 Import시켜서 사용한다. 또한 Integrator와의 통신을
위한 함수들을 사용하기 위해 syslink.h를 헤더화일에 첨부시키기만 하면 Integrator와의
통신을 가능케 한다. 아래의 예재 함수는 C API를 이용하여 Delfoi Server와
연결하는 함수이다. |
sl_handler_t SL_Open(
const char *name, int type, int mode, const char
*host, const char *port)
name The name of this process (or connection).
type The process (SL_ACTIVE or SL_PASSIVE).
mode The mode of communication (SL_BLOCKING or SL_NON_BLOCKING).
host The name (or address) of the Integrator server(Syslink)
host.
port The service name (or the number of the Integrator
server). |
|
Active X Component (VB) |
Integrator는 MS Windows
개발 도구들로부터 통합기능의 간단한 사용을 가능케한다.
Active X Conponent는 Visual Basic - also MS Office
development, Visual C++, Borland C++, Delphi, Visual
FoxPro에서 모두 사용이 가능하며, visual component, methods,
properties and events로 구성된다. 이는 매우 간단한 drag&drop
기능을 이용하여 VB project (.OCX)로 삽입될 수 있으며, 하나의 Passive
모드만을 가진다. |
|
<VB에서
Active X Control 추가> |
위 그림은 Delfoi Integrator와의 통신을 위해
Active X component를 사용하기 위한 VB에서의 Setting을 보여주고
있다. 단순히 SyslinkCtl.ocx를 선택하기만 하면 Integrator의 단순한
기능들을 모두 사용할 수 있으며, 그것은 Control의 Method, Event, Property를
이용함으로 Active X component Interface 모듈의 구현을 할 수 있다.
|
Excel Adapter |
Delfoi Integrator Excel
adapter는 MS Excel을 이용하여 Integrator 서버로 데이터를 읽거나
쓸때 사용되어 진다. Delfoi Integrator Excel adapter는 Delfoi
Integrator ActiveX control 이 먼저 인스톨되어 있어야 가능하다.
또한 Delfoi Integrator Excel adapter는 Excel VBA macros의
한 세트로서, SysLinkClient.xls Excel workbook에서 공급되어진다.
|
|
<Excel
Adapter > |
위 그림은 Syslink.xls를 실행하게 되면 나타나는 창이며,
Connect를 누르면 Integrator와 통신이 가능하게 된다. 이러한 Excel
Adapter를 사용하게 되면 수많은 입력 Data의 저장공간으로 사용되어지고 있는 MS
Excel을 Integrator를 통해 다른 Interface를 만들어야 하는 수고를
덜며, Integrator Server와의 통신 방법을 매우 간단히 할 수 있다. |
|
Using SCL
in Quest
Integrator는 QUEST와 다른 응용프로그램들과 Two-way 통신을 가능케하며,
QUEST와 다른클라이언트와의 통신은 다소 특별한 메시지 채널을 이용하여 이루어진다.
각 메시지 채널은 고유하고 독립된, 그리고 동적으로 업데이트 되는 메시지 버퍼를 가지고
있다.
서로 움직이는 메시지는 이벤트들에 의해서 다루어지며, 이 이벤트는 효율적이고 정확한 Operation임을
의미한다. 이렇게 사용되어지고 있는 메시지 채널들은 Quest Model 안에서 매우
간단하고 쉬운 방법으로 통신에 사용되어 질수 있다. 이러한 메시지 채널들과 이벤트들을
정의한 Logic과 configuration files들은 Example.scl(example
how to use SCL API functions)과 sl.cfg(example configuration
file)에서 정의되어져 있다. 또한 system 파일들은 sysl_att.inc, sysl_con.inc,
sysl_var.inc, sysl_str.inc, syslink.inc등인데 이러한 파일들을
사용하여 Quest 상에서 이벤트를 발생시킬 수 있으며 이러한 이벤트들은 Quest간의
통신을 위한 인터페이스 모듈을 구성하게 된다. 아래의 예제는 Quest에서 SCL(Simulation
Control Language)을 이용하여 인터페이스 모듈을 구성하기 위해 추가해야할
부분을 나타낸다. |
CONST
#include <sysl_con.inc>
#include <sysl_str.inc>
VAR
#include <sysl_var.inc>
USER_ATTRIB
my_cycle_time : real
#include <sysl_att.inc>
#include <sysl_hea_def.inc>
#include <syslink.inc>
#include <sysl_odbc.inc> |
PROCEDURE My_model_Init()
VAR
................sl_cfg
: string
..... ........_..ii
......: integer
BEGIN
................sl_cfg
= 'D:/training/Qeust_Test/DATA/sl.cfg'
................ii=SYSL_Connect(sl_cfg)
END |
위의 *.inc 파일들을 모두 Quest상에서 로딩되어진 후,
Procedure에서 Integrator와의 통신을 위해 모든 데이터가 내포되어 있는
sl.cfg를 로딩하게 된다. 이를 통해서 Quest와 Integrator간에 통신이
가능하게 된다. 다음의 예는 sl.cfg의 내용이다. |
|
SOCKET ...................localhost:5100
CHANNEL .................100
SERVER_INTERVAL ..._1
RECEIVER ............._..ChoonJaeLee
SENDER ...................Quest_Client
SYSLINK_ENV .........._d:/tmp/
DEBUG .....................OFF
SYNCH_INTERVAL ......1
RESOURCE ...............Machine1_1
................11
RESOURCE ...............Machine2_1
................12
RESOURCE .............._InitMachine1_1_1
.........13 ..........trainig_DB
GLOBAL ...................Report
................... ..._14
..........trainig_DB
|
OBDC Adapter |
|
<DIODBC
기본 모델> |
ODBC Adapter는 DB와 연계되기
위해서 표준 SQL(Standard Query Language)을 사용한다. 위 그림에서
일반적으로 연계되는 Integrator와 DB, Simulation 의 관계를 보여주고
있다. Simulation에서 필요한 Data에 접근하기 위해 SQL로 Integrator에
보내주면, Integrator는 DIODBC를 통해 DB에서 데이터를 읽거나 쓸수가 있으며,
이러한 작업에 대한 성공여부를 메시지 큐잉방법으로 Integrator를 통해 Simulation에
보내주게 된다. 이러한 표준 SQL을 사용하여 DB에 있는 데이터를 읽거나 쓸수 있으며
이러한 일련의 작업들, 즉, Data Source를 연계시키고 DB와의 데이터 교환에
필요한 제반사항들인 Connection과 Pooling 작업들을 이 DB Adapter에
모두 포함시켜놓았기 때문에 클라이언트는 이러한 DB Adapter만을 가지고 DB와 연계할
수 있게 된다. 단, 실제로 사용되어지는 Data Source는 Server에 등록이
되어 있어야 DB Adapter에서 사용할 수 있기 때문에 반드시, DB Adapter를
사용할시에는 사용할 DB를 Data Soruce로 server에 반드시 등록해야만 한다.
또한 DB Adapter는 DB에 동시에 여러 접속을 허용하며 특정한 시간과 날짜 포맷을
정할 수 있다. |
|
<DIODBC
화면> |
위의 그림은 ODBC Adapter의
초기 화면이다. Server에 등록되어진 DataSource를 Add하여 Adapter에
추가시키고, 클라이언트 이름과 DataSource의 사용자와 password를 입력한
후, Install Service를 하게 되면 Integrator를 통해 SQL을 사용하여
DB에 연결될 수 있다. |
|
QBI |
QBI(Quest Batch Interface)는
Quest에서의 일반적인 시스템 명령어들의 집합인 Batch Language들을 사용할
수 있게 Integrator 인터페이스 모듈로 개발한 것을 말한다.
QBI는 Quest를 원격제어할 수 있으며, Quest는 넥트워크를 통해 실행되고 제어될
수 있다. 그후 Quest로 BCL 명령어를 보내면 된다. 이때 클라이언트는 두개의 모드를
선택할 수 있는데 그것은 소켓모드와 Batch 모드이다. 소켓모드는 Quest가 실행되고
어느 특정한 포트가 열려지면 BCL command를 사용할 수가 있게 된다. 반면에 Batch
모드는 하나의 batch 파일에 명령어들을 저장해놓고 Quest가 Exit 명령어를 받아
Quest가 끝나기 전에 BCL command가 실행되어진다. |
GSL API |
Delfoi Integrator의 GSL
API 인터페이스 모듈은 4가지의 기본적인 Integrator Server의 함수들을
가지고 있다. Opening, closing a connection, reading messages,
writing messages등이며, 두가지의 파트를 가지고 있는데 그것은 메시지를 정의하는
부분과 (Sldef.gsl) 과 실제의 함수들이 구현되어 있는 부분으로 나누어져 있다.(slfunc.gsl)
이들의 인터페이스들은 다음과 같다. Sl_open_connection, sl_close_connection,
sl_write
sl_read의 기본적인 함수들로 구성되어 있다. |
STRUCT sl_message
STRUCT receiver
: string
STRUCT message :
string
STRUCT sender :
string
ENDSTRUCT
VAR
STRUCT DI_host
: string
STRUCT DI_port
: integer
STRUCT DI_def_receiver
: string
STRUCT DI_sender
: string
STRUCT DI_channel
: integer
SOCKET STRUCT localhost:5100
CHANNEL S........1
RECEIVER STRUCDemoClient
SENDER STRUCT igrip
|
|
동기화(Synchronization) |
|
<동기화
기본 모델> |
Delfoi Integrator는 두개
또는 여러개의 클라이언트를 함께 동기화시킬 수가 있다. 매우 큰 모델들은 더 작은 모델들로
나누어 질 수 있으며, 이 나누어진 모델들은 Integrator를 통해 동기화될 수 있다.
위의 그림을 보면 여러개의 독립된 Quest 모델들이 있다. 이러한 Quest 모델들은
예를 들어 순차적으로 동작되어진다고 보고, Quest 모델 1이 끝난 후 Quest 모델
2가 작동되고 그다음 모델이 작동된다고 생각해보면, 이러한 Quest Model들을 sl.cfg
파일을 다음과 같이 각각 세팅해준다. |
SOCKET dddddd
ddddddDSIC :5100
CHANNEL ddddd
dddddd100
SERVER_INTERVAL ddd.0.25
RECEIVER dddddd
dddd.SyncTest_model_quest
SENDER dddddd
ddddddChoonJaeLee
SYSLINK_ENV dddddd
,,d:/tmp/
DEBUG dddddd ddddd,_,OFF
SYNCH_INTERVAL dddd 10
RESOURCE dddddd
ddddBuffer1_1
dddddd dddddd11
RESOURCE dddddd
ddddSource2_1
dddddd ddddd12
ddddddSyncController
|
이와 같이 각기 다른 Quest 모델들에
대해 위의 sl.cfg화일에 적용시켜 로딩시키면 아래 오른쪽 그림과 같이 클라이언트로
각 모델들이 Integrator 동기화(Synchronization)에 로딩되어지는 것을
볼 수가 있다. 이러한 모델들을 모두 선택하고 아래의 Synchronize On/Off를
선택하면, 세 개의 모델이 하나의 채널을 이용하여 동기화된 것이다.
|
|
|
<동기화(Synchronization)
Integration> |
위와 같이 동기화된 Quest 모델들은
순차적으로 동작되어지는 모델이 된다. 하나가 끝나면 다음으로 세팅되어진 것이 동기화 메시지를
통해 작동되어지고 그다음도 같은 방법으로 작동되어 동기화된 Quest 모델이 완성되어
진다.
|
|