KR20170030262A - 이더캣 기반 모션 제어 시스템의 프레임 전송 시점을 정밀하게 보정하기 위한 장치, 이를 위한 방법 및 이 방법이 기록된 컴퓨터 판독 가능한 기록매체 - Google Patents

이더캣 기반 모션 제어 시스템의 프레임 전송 시점을 정밀하게 보정하기 위한 장치, 이를 위한 방법 및 이 방법이 기록된 컴퓨터 판독 가능한 기록매체 Download PDF

Info

Publication number
KR20170030262A
KR20170030262A KR1020150127587A KR20150127587A KR20170030262A KR 20170030262 A KR20170030262 A KR 20170030262A KR 1020150127587 A KR1020150127587 A KR 1020150127587A KR 20150127587 A KR20150127587 A KR 20150127587A KR 20170030262 A KR20170030262 A KR 20170030262A
Authority
KR
South Korea
Prior art keywords
offset
motion
time
motion control
range
Prior art date
Application number
KR1020150127587A
Other languages
English (en)
Other versions
KR101731045B1 (ko
Inventor
김태현
김익환
Original Assignee
서울시립대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 서울시립대학교 산학협력단 filed Critical 서울시립대학교 산학협력단
Priority to KR1020150127587A priority Critical patent/KR101731045B1/ko
Publication of KR20170030262A publication Critical patent/KR20170030262A/ko
Application granted granted Critical
Publication of KR101731045B1 publication Critical patent/KR101731045B1/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1679Programme controls characterised by the tasks executed
    • B25J9/1692Calibration of manipulator
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/006Controls for manipulators by means of a wireless system for controlling one or several manipulators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1679Programme controls characterised by the tasks executed
    • B25J9/1689Teleoperation

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Programmable Controllers (AREA)

Abstract

본 발명은 이더캣 기반 모션 제어 시스템의 프레임 전송 시점을 보정하기 위한 장치, 이를 위한 방법 및 이 방법이 기록된 컴퓨터 판독 가능한 기록매체에 관한 것이다. 이러한 본 발명은 모터 드라이브로 제어 명령을 포함하는 프레임을 전송하는 전송 단계(Publish Phase)를 포함하는 모션 제어 태스크(
Figure pat00158
)를 수행하는 모션 제어기와의 통신을 위한 통신부와, 상기 통신부를 통해 상기 모션 제어기가 상기 모션 제어 태스크를 실행하면서 상기 모션 제어 태스크 수행 시간과 관련된 파라미터인 측정 데이터를 수집하도록 하는 프리런타임 실행 파일을 생성하여 상기 모션 제어기로 전송하는 데이터수집모듈과 상기 통신부를 통해 상기 모션 제어기가 수집한 상기 측정 데이터를 상기 모션 제어기로부터 수신하고, 수신된 측정 데이터를 분석하여 상기 프레임을 전송하는 시점 간의 간격의 차이가 최소가 되도록 상기 전송 단계의 시작 시점을 지연하는 오프셋의 범위를 도출하는 데이터분석모듈과 오프셋의 범위 내에서 오프셋을 결정하고, 결정된 오프셋만큼 전송 단계의 시작 시점을 지연하여 실행하도록 하는 모션 제어 태스크를 실행하도록 하는 실행 파일을 생성하여 모션 제어기로 전송하는 전송시점반영모듈을 포함하는 것을 특징으로 하는 프레임 전송 시점을 보정하기 위한 장치와, 이를 위한 방법 및 이 방법이 기록된 컴퓨터 판독 가능한 기록매체를 제공한다.

Description

이더캣 기반 모션 제어 시스템의 프레임 전송 시점을 정밀하게 보정하기 위한 장치, 이를 위한 방법 및 이 방법이 기록된 컴퓨터 판독 가능한 기록매체{Apparatus for precise-adjustment of frame transmission time in the motion control system based on EtherCAT, method thereof and computer recordable medium storing the method}
본 발명은 이더캣 기반 모션 제어 시스템에 관한 것으로, 보다 상세하게는, 이더캣 기반 모션 제어 시스템의 프레임 전송 시점을 정밀하게 보정하기 위한 장치, 이를 위한 방법 및 이 방법이 기록된 컴퓨터 판독 가능한 기록매체에 관한 것이다.
수술용 로봇 및 다양한 산업 자동화 분야에 널리 사용되고 있는 모션 제어 시스템은 일반적으로 산업용 필드버스 기술을 활용하여 각 컴포넌트들이 물리적, 논리적으로 강하게 결합되어 동작하는 시스템이다. 적용되는 응용 분야에 따라 시간적인 요구사항들이 각각 다르나, 일반적으로 높은 수준의 동기화가 요구된다. 대표적인 실시간 제약조건으로는 바운드(Bound)된 종단 간 지연시간 및 종단간 지연시간의 편차가 있다.
종단 간 지연시간은 모션 제어기로부터 제어 명령이 발생되는 시간부터 이에 해당하는 모터 드라이브에서의 동작이 발생하기까지의 시간을 의미하며, 이 값이 작을수록 단축의 정밀도(Precision)가 높아진다. 종단 간 지연시간으로부터 모션 제어 시스템의 최소 제어 주기(Minimum Cycle Time: MCT)를 산정할 수 있다. 종단간 지연시간의 편차는 동일 주기(Control cycle) 내에 여러 드라이브들 간의 동작 시간의 편차를 의미하며, 이 값이 작을수록 다축에 대한 동시성(Synchronicity)이 높아진다.
모션 제어 시스템의 핵심 컴포넌트 중의 하나인 모션 제어기는 IT 기술의 발전과 더불어 외부 네트워크와 연결되는 관리 시스템(MES, ERP)과의 연동 등과 같이 다양한 부가기능을 제공해야 한다는 시장의 요구사항에 따라 점차 범용 데스크탑과 운영체제를 사용하는 PC 기반 제어기가 널리 사용되고 있는 추세이며, 이에 따라 점차 소프트웨어의 중요성이 커지고 있다. 한편, PC 환경에서 널리 사용되고 있는 이더넷(Ethernet) 기술 기반의 실시간 이더넷 기술(RTE: Real-Time Ethernet)들이 높은 대역폭과 확장성, 그리고 상대적으로 저렴한 유지보수 비용 등을 장점으로 모션 제어 시스템의 기반 네트워크로 주목받고 있다. RTE 네트워크 기술 중의 하나인 이더캣(EtherCAT)은 결정적인 메시지 통신 지연, 빠른 메시지 전달, 전역시계 기반의 동기화 및 네트워크 토폴로지의 유연성과 상대적으로 낮은 가격으로 인해 주목을 받고 있다.
하지만, 이더캣의 장점 중의 하나인 하드웨어 기반 프레임 스위칭 기법은 확정적인 데이터 전송 시간을 보장할 수 있으나 오직 통신 네트워크 수준에서의 실시간 제약 조건을 만족할 수 있을 뿐, 전체 모션 제어 시스템 측면에서 종단간 지연시간 및 편차를 산정하기 위해서는 모션 제어기 및 모터 드라이브 내부의 지연시간, 그리고 네트워크를 통한 메시지 전달 시간을 고려해야 한다. 이와 더불어 1μs 미만의 종단간 지연시간의 편차를 제공하는 것으로 알려져 있는 이더캣의 분산시계 동기화 기법(DC: Distributed Clock)의 경우 전송 주기 내에서 분산시계 동기화 이벤트가 발생할 시점(Shift Time)을 판단하는 것이 중요하며, 이를 위해서는 모션 제어기 및 모터 드라이브 내부 소프트웨어에 의한 지연시간은 시간 결정적 (Time-deterministic)이어야 한다는 조건을 가진다. 실제로, 이더캣 기반 제어 네트워크상에서 종단간 지연시간에 영향을 미치는 가장 큰 요소는 제어기 내부의 소프트웨어에 의한 프로세싱 지연이다.
한국공개특허 제2014호 2014년 02월 06일 공개 (명칭: 이더넷 통신 시스템 및 시간 동기화 방법)
모션 제어 시스템은 모션 제어기 내의 제어 메시지 계산 및 제어기와 모든 드라이브간의 데이터 교환 시간이 미리 정해진 수행 주기(Tcycle) 내에서 완료되어야 하며, 정확한 모션을 생성하기 위해 모터가 동작하고 센싱하는 시점이 일정 간격으로 이루어져야 한다는 요구 조건(Isochronous Control)을 가진다. 이더캣은 프레임 기반 동기화 (Frame-based synchronized) 와 분산 시계 기반 동기화 (DC-based synchronization) 두 가지의 기법을 제공한다. 프레임 기반 동기화는 모션 제어기로부터 전송된 프레임의 도착 이벤트에 동기화되어 모터 드라이브가 모터를 구동시키는 기법이며, 분산 시계 기반 동기화는 모션 제어 시스템 내 전역 시계를 두어 모든 모터 드라이브가 이 시점에 동기화 되어 모터를 구동시키는 방법이다. 이더캣을 지원하는 장치는 상기 서술한 2 가지 동기화 기법을 모두 지원하는 장치와 프레임 기반 동기화 기법만을 지원하는 장치로 구분된다. 분산 시계 기반 동기화를 위해서는 적절한 시프트 타임(제어 사이클 내 특정 시점)을 선택해야 하며 기본적으로는 모션 제어기와 모터 드라이브 사이에 데이터 교환 시퀀스가 동일하도록 각 모터 드라이브에 프레임이 도착한 이후 시점으로 정해야 하며, 이를 위해서는 프레임 도착 시점의 간격이 일정해야 한다. 따라서 본 발명의 목적은 모션 제어기와 다수의 모터 드라이브들로 구성된 이더캣 기반 모션 제어 시스템에서 균일한 프레임 전송 시점을 제공함에 있다.
상술한 바와 같은 목적을 달성하기 위한 본 발명의 바람직한 실시예에 따른 프레임 전송 시점을 보정하기 위한 장치는 모터 드라이브로 제어 명령을 가지는 프레임을 전송하는 전송 단계(Publish Phase)를 포함하는 모션 제어 태스크(
Figure pat00001
)를 수행하는 모션 제어기와의 통신을 위한 통신부와, 상기 통신부를 통해 상기 모션 제어기가 상기 모션 제어 태스크를 실행하면서 상기 모션 제어 태스크 수행 시간과 관련된 파라미터를 포함하는 측정 데이터를 수집하도록 하는 프리런타임 실행 파일을 생성하여 상기 모션 제어기로 전송하는 데이터수집모듈과, 상기 통신부를 통해 상기 모션 제어기가 수집한 상기 측정 데이터를 상기 모션 제어기로부터 수신하고, 수신된 측정 데이터를 분석하여 상기 프레임을 전송하는 시점 간의 간격의 차이가 최소가 되도록 상기 전송 단계의 시작 시점을 지연하는 오프셋(
Figure pat00002
)의 범위를 도출하는 데이터분석모듈과, 상기 오프셋의 범위 내에서 오프셋(
Figure pat00003
)을 결정하고, 결정된 오프셋(
Figure pat00004
) 만큼 상기 전송 단계의 시작 시점을 지연하여 실행하도록 하는 실행 파일을 생성하여 상기 모션 제어기로 전송하는 전송시점반영모듈을 포함한다.
상기 모션 제어 태스크(
Figure pat00005
)는 상기 모터 드라이브와 연결된 모터에서 이루어진 모션에 대한 정보인 피드백 정보를 상기 모터 드라이브로부터 수집하는 수집 단계(Retrieve Phase), 상기 피드백 정보를 기초로 다음 모션을 계산하는 계산 단계(Computation Phase) 및 상기 계산된 모션을 기초로 제어 명령을 포함하는 프레임을 전송하는 상기 전송 단계(Publish Phase)를 포함하며, 상기 데이터분석모듈은 상기 전송 단계의 시작 시점이 상기 계산 단계가 종료된 후 이루어지도록 상기 오프셋의 범위의 하한을 도출하는 것을 특징으로 한다.
상기 데이터분석모듈은 두 개의 연속된 상기 모션 제어 태스크의 수행 시점이 겹치지 않도록 상기 오프셋의 범위의 상한을 도출하는 것을 특징으로 한다.
상기 데이터분석모듈은 상기 오프셋의 범위의 상한이 상기 오프셋의 범위의 하한 보다 길도록(
Figure pat00006
) 상기 오프셋의 범위를 도출하는 것을 특징으로 한다.
상기 데이터수집모듈은 스텁 코드(stub code)에 상기 모션 제어 태스크에 대한 시간 측정을 위한 측정 코드와 상기 측정 코드에 따라 측정된 측정 데이터를 저장하는 저장 코드를 생성하여, 상기 프리런타임 실행 파일을 생성하여 생성된 프리런타임 실행 파일을 상기 모션 제어기로 전송하는 것을 특징으로 한다.
상기 오프셋의 범위는 수학식
Figure pat00007
에 따라 도출되며,
상기
Figure pat00008
는 상기 오프셋 범위의 하한이며, 상기
Figure pat00009
는 상기 오프셋 범위의 상한이며, 상기
Figure pat00010
는 모션 제어 태스크의 릴리즈 지터이며, 상기
Figure pat00011
는 상기 모션 제어 태스크의 계산 단계(Computation Phase)가 종료되는 시점이며, 상기
Figure pat00012
은 상기 모션 제어 태스크의 수행 주기이며, 상기
Figure pat00013
는 또한 현재 태스크 인스턴스의 제어 시퀀스 수행시간과 제어 명령이 모든 모터 드라이브를 순회하여 업데이트 된 모터드라이브의 정보를 모션 제어기에 업데이트하는 시간이며, 그리고 상기
Figure pat00014
는 상기 모션 제어 태스크 인스턴스가 예정된 시점 보다 일찍 시작되는 경우 중의 최대값인 것을 특징으로 한다.
상술한 바와 같은 목적을 달성하기 위한 본 발명의 바람직한 실시예에 따른 프레임 전송 시점을 보정하기 위한 방법은 모터 드라이브로 제어 명령을 포함하는 프레임을 전송하는 전송 단계(Publish Phase)를 포함하는 모션 제어 태스크(
Figure pat00015
)를 수행하는 모션 제어기가 상기 모션 제어 태스크를 수행 중 상기 모션 제어 태스크 수행 시간과 관련된 파라미터인 측정 데이터를 수집하도록 하는 프리런타임 실행 파일을 생성하여 상기 모션 제어기로 상기 생성된 프리런타임 실행 파일을 전송하는 단계와, 상기 모션 제어기가 수집한 상기 측정 데이터를 상기 모션 제어기로부터 수신하여 상기 수신된 측정 데이터를 분석하여 상기 프레임을 전송하는 시점 간의 간격의 차이가 최소가 되도록 상기 전송 단계의 시작 시점을 지연하는 오프셋(
Figure pat00016
)의 범위를 도출하는 단계와, 상기 오프셋의 범위 내에서 오프셋(
Figure pat00017
)을 결정하는 단계와, 상기 결정된 오프셋() 만큼 상기 전송 단계의 시작 시점을 지연하여 실행하도록 하는 상기 모션 제어 태스크를 실행하도록 하는 런타임 실행 파일을 생성하여 상기 모션 제어기로 전송하는 단계를 포함한다.
상기 모션 제어 태스크(
Figure pat00019
)는 상기 모터 드라이브와 연결된 모터에서 이루어진 모션에 대한 정보인 피드백 정보를 상기 모터 드라이브로부터 수집하는 수집 단계(Retrieve Phase), 상기 피드백 정보를 기초로 다음 모션을 계산하는 계산 단계(Computation Phase) 및 상기 계산된 모션을 기초로 제어 명령을 포함하는 프레임을 전송하는 상기 전송 단계(Publish Phase)를 포함하며, 상기 오프셋(
Figure pat00020
)의 범위를 도출하는 단계는 상기 전송 단계의 시작 시점이 상기 계산 단계가 종료된 후 이루어지도록 상기 오프셋의 범위의 하한을 도출하는 것을 특징으로 한다. 상기 오프셋(
Figure pat00021
)의 범위를 도출하는 단계는 두 개의 연속된 상기 모션 제어 태스크의 수행 시점이 겹치지 않도록 상기 오프셋의 범위의 상한을 도출하는 것을 특징으로 한다.
상기 오프셋(
Figure pat00022
)의 범위를 도출하는 단계는 상기 오프셋의 범위의 상한이 상기 오프셋의 범위의 하한 보다 길도록(
Figure pat00023
) 상기 오프셋의 범위를 도출하는 것을 특징으로 한다.
상기 프리런타임 실행 파일을 전송하는 단계는 스텁 코드에 상기 모션 제어 태스크에 대한 시간 측정을 위한 측정 코드와 상기 측정 코드에 따라 측정된 측정 데이터를 저장하는 저장 코드를 생성하여 상기 프리런타임 실행 파일을 생성하고, 상기 생성된 프리런타임 실행 파일을 상기 모션 제어기로 전송하는 것을 특징으로 한다.
상기 오프셋의 범위는 수학식
Figure pat00024
에 따라 도출되며, 상기
Figure pat00025
는 상기 오프셋 범위의 하한이며, 상기
Figure pat00026
는 상기 오프셋 범위의 상한이며, 상기
Figure pat00027
는 모션 제어 태스크의 릴리즈 지터이며, 상기
Figure pat00028
는 상기 모션 제어 태스크의 계산 단계(Computation Phase)가 종료되는 시점이며, 상기
Figure pat00029
은 상기 모션 제어 태스크의 수행 주기이며, 상기
Figure pat00030
는 또한 현재 태스크 인스턴스의 제어 시퀀스 수행시간과 제어 명령이 모든 모터 드라이브를 순회하여 업데이트된 모터드라이브의 정보를 모션 제어기에 업데이트하는 시간이며, 상기
Figure pat00031
는 상기 모션 제어 태스크가 예정된 시점 보다 일찍 시작되는 경우 중의 최대값인 것을 특징으로 한다.
본 발명의 또 다른 견지에 따르면, 전술한 프레임 전송 시점을 보정하기 위한 방법을 실행하는 명령어가 기록된 컴퓨터 판독 가능한 기록매체를 제공한다.
상술한 바와 같은 본 발명에 따르면, 모션 제어기와 다수의 모터 드라이브들로 구성된 이더캣 기반 모션 제어 시스템에서 수신된 측정 데이터를 분석하여 상기 프레임을 전송하는 시점 간의 간격의 차이가 최소가 되도록 제어 명령을 포함하는 프레임의 전송하는 시점을 오프셋(
Figure pat00032
) 만큼 지연한다. 이에 따라, 균일한 프레임 전송 시점을 제공함으로써, 이더캣 기반 모션 제어 시스템에서 단축 모션 정밀도(Precision)와 다축 모션의 동시성(Synchroneity)을 제공할 수 있다.
도 1은 본 발명의 실시예에 다른 모션 제어 시스템의 구성을 설명하기 위한 블록도이다.
도 2는 본 발명의 실시예에 따른 보정 장치의 구성을 설명하기 위한 블록도이다.
도 3 및 도 4는 본 발명의 실시예에 따른 모션 제어 수행 시퀀스를 설명하기 이한 도면이다.
도 5는 본 발명의 실시예에 따른 오프셋의 범위를 도출하는 방법을 설명하기 위한 도면이다.
도 6은 본 발명의 실시예에 따른 모션 제어 시스템의 프레임 전송 시점을 보정하기 위한 방법을 설명하기 위한 흐름도이다.
도 7은 본 발명의 실시예에 따른 측정 데이터를 분석하여 도출된 분석 데이터를 설명하기 위한 화면 예이다.
본 발명의 상세한 설명에 앞서, 이하에서 설명되는 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념으로 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 실시예에 불과할 뿐, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 이때, 첨부된 도면에서 동일한 구성 요소는 가능한 동일한 부호로 나타내고 있음을 유의해야 한다. 또한, 본 발명의 요지를 흐리게 할 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략할 것이다. 마찬가지의 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 또는 개략적으로 도시되었으며, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다.
먼저, 본 발명의 실시예에 다른 모션 제어 시스템의 구성에 대해서 설명하기로 한다. 도 1은 본 발명의 실시예에 다른 모션 제어 시스템의 구성을 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명의 실시예에 따른 모션 제어 시스템은 모션제어기(100)와 다수의 동형(Homogenous) 모터드라이브(200) 및 보정장치(300)를 포함하며, 모션 제어기(100)와 모터 드라이브(200)들이 이더캣 네트워크로(Line topology) 연결된다. 또한, 보정 장치(300)와 모션 제어기(100)는 무선 혹은 유선의 네트워크로 연결된다.
모션 제어기(100)는 주기적으로 목적 속도, 토크 값들을 포함하는 제어 명령을 생성하고, 이를 이더캣 프레임에 포함시켜 모터 드라이브(200)에게 전달한다. 모터 드라이브(200)는 기본적으로 모션 제어기(100)로부터 수신한 제어 명령을 바탕으로 내부 제어 루프를 수행하여 모터를 동작시킨다. 그리고 모터 드라이브(200)는 엔코더와 같은 센서를 이용하여 모터의 현재 위치, 속도 값 등의 모터에서 이루어진 모션에 대한 정보인 피드백 정보를 모션 제어기(100)로 리포트한다. 그러면 모션 제어기(100)는 이러한 피드백 정보를 기초로 다시 제어 명령을 모터 드라이브(200)에 전송한다. 이러한 일련의 절차를 수행하는 소프트웨어 컴포넌트를 모션 제어 태스크라고 하며, 모션 제어기(100)는 주기(
Figure pat00033
)적으로 모션 제어 태스크를 수행한다. 즉, 한 주기의 모션 제어 태스크는 모션 제어기(100)가 모터 드라이브(200)와 연결된 모터에서 이루어진 모션에 대한 정보인 피드백 정보를 모터 드라이브(200)로부터 수집하는 수집 단계(Retrieve Phase), 피드백 정보를 기초로 다음 모션을 계산하는 계산 단계(Computation Phase) 및 계산된 모션을 기초로 제어 명령을 포함하는 프레임을 전송하는 전송 단계(Publish Phase)를 포함한다. 이러한 모션 제어 태스크는 단일 태스크 또는 각 부분을 여러 개의 서브 태스크로 나누어 책임지는 형태로 구현 될 수 있다. 하지만, 본 발명의 실시예에서는 단일 태스크로 가정하여 설명이 이루어질 것이다.
보정 장치(300)는 본 발명의 실시예에 따라 프레임의 전송 시점을 보정하기 위한 것이다. 보정 장치(300)는 모션 제어기(100)로부터 모션 제어 태스크를 수행할 때 모션 제어 태스크 수행 시간과 관련된 파라미터인 측정 데이터를 수신하고, 그 측정 데이터를 분석하여 제어 명령을 포함하는 프레임을 전송하는 시점 간의 간격의 차이가 최소가 되도록 전송 단계(Publish Phase)의 시작 시점을 지연하는 오프셋(
Figure pat00034
)의 범위를 도출한다. 그런 다음, 보정 장치(300)는 사용자의 입력에 따라 오프셋의 범위 내에서 오프셋(
Figure pat00035
)을 결정한다. 그런 다음, 보정 장치(300)는 모션 제어기(100)가 결정된 오프셋(
Figure pat00036
)을 적용하여 모션 제어 태스크를 실행하도록 모션 제어기(100)를 제어한다. 이러한 보정 장치(300)의 구성 및 동작에 대해서는 아래에서 더 상세하게 설명하기로 한다.
그러면, 본 발명의 실시예에 따른 보정 장치의 구성에 대해서 설명하기로 한다. 도 2는 본 발명의 실시예에 따른 보정 장치의 구성을 설명하기 위한 블록도이다.
도 2를 참조하면, 본 발명의 실시예에 따른 보정 장치(300)는 기본적으로, 자체로 동작하는 스탠드얼론(stand-alone) 장치가 될 수 있다. 대표적으로, 보정 장치(300)는 퍼스널 컴퓨터를 예시할 수 있다. 그 밖에, 보정 장치(300)는 태블릿 PC, 패블릿 PC, 노트북 등을 예시할 수 있다. 이러한 보정 장치(300)는 통신부(310), 입력부(320), 표시부(330), 저장부(340) 및 제어부(350)를 포함한다.
통신부(310)는 모션 제어기(100)와의 통신을 위한 것이며, 이러한 통신은 무선 혹은 유선을 통해 이루어질 수 있다. 통신부(310)가 무선 통신을 수행하는 경우 모션 제어기(100)와 무선의 신호(Radio Frequency Signal)를 통해 데이터를 전송하고 수신하는 기능을 수행한다. 이러한 경우, 통신부(310)는 송신되는 신호의 주파수를 상승 변환 및 증폭하는 RF 송신기와, 수신되는 신호를 저 잡음 증폭(LNA: Low Noise Amplifying)하고 주파수를 하강 변환하는 RF 수신기 등으로 구성될 수 있다. 또한, 통신부(310)가 유선 통신을 수행하는 경우, 통신부(310)는 유선 통신을 위한 입/출력 포트, 모뎀 등을 포함하여 구성될 수 있다.
입력부(320)은 보정 장치(300)을 제어하기 위한 사용자의 키 조작을 입력받고 입력 신호를 생성하여 제어부(350)에 전달한다. 입력부(320)은 전원 on/off를 위한 전원 키를 비롯한 각 종 키 등을 포함할 수 있다. 입력부(320)의 각 종 키들의 기능이 표시부(330)에서 이루어질 수 있으며, 이와 같이, 표시부(330)만으로 모든 기능을 수행할 수 있는 경우, 입력부(320)는 생략될 수도 있다.
표시부(330)는 보정 장치(300)의 메뉴, 입력된 데이터, 기능 설정 정보 및 기타 다양한 정보를 사용자에게 시각적으로 제공한다. 표시부(330)는 보정 장치(300)의 부팅 화면, 대기 화면, 메뉴 화면, 기타 애플리케이션 화면을 출력하는 기능을 수행할 수 있다. 특히, 표시부(330)는 본 발명의 실시예에 따른 태스크의 릴리즈 지터(
Figure pat00037
)와 수행 시간(
Figure pat00038
) 및 제어 명령이 포함된 프레임이 전송 될 시점(
Figure pat00039
)의 평균값, 최소값, 최대값 및 표준 편차 등의 각 종 정보를 화면으로 표시할 수 있다. 표시부(330)는 액정표시장치(LCD, Liquid Crystal Display), 유기 발광 다이오드(OLED, Organic Light Emitting Diodes), 능동형 유기 발광 다이오드(AMOLED, Active Matrix Organic Light Emitting Diodes) 등으로 형성될 수 있다. 한편, 표시부(330)는 터치스크린으로 구현될 수 있다. 이러한 경우, 표시부(330)는 터치센서를 포함한다. 터치센서는 사용자의 터치 입력을 감지한다. 터치센서는 정전용량 방식(capacitive overlay), 압력식, 저항막 방식(resistive overlay), 적외선 감지 방식(infrared beam) 등의 터치 감지 센서로 구성되거나, 압력 감지 센서(pressure sensor)로 구성될 수도 있다. 상기 센서들 이외에도 물체의 접촉 또는 압력을 감지할 수 있는 모든 종류의 센서 기기가 본 발명의 터치센서로 이용될 수 있다. 터치센서는 사용자의 터치 입력을 감지하고, 감지 신호를 발생시켜 제어부(350)로 전송한다. 이러한 감지 신호에는 사용자가 터치를 입력한 좌표 데이터가 포함될 수 있다. 사용자가 터치 위치 이동 동작을 입력한 경우에 터치센서는 터치 위치 이동 경로의 좌표 데이터를 포함한 감지 신호를 발생시켜 제어부(350)로 전송할 수 있다.
저장부(340)는 보정 장치(300)의 동작에 필요한 프로그램 및 데이터를 저장하는 역할을 수행하며, 프로그램 영역과 데이터 영역으로 구분될 수 있다. 프로그램 영역은 보정 장치(300)의 전반적인 동작을 제어하는 프로그램 및 보정 장치(300)을 부팅시키는 운영체제(OS, Operating System), 본 발명의 실시예에 따른 제어 태스크를 실행하기 위한 애플리케이션 등을 저장할 수 있다. 데이터 영역은 보정 장치(300)의 사용에 따라 발생하는 사용자 데이터가 저장되는 영역이다. 또한, 저장부(340)는 모션 제어기(100)로부터 보정 장치(300)가 수신하는 각 종 데이터를 저장할 수 있다. 저장부(340)에 저장되는 각 종 데이터는 사용자의 조작에 따라, 삭제, 변경, 추가될 수 있다.
제어부(350)는 보정 장치(300)의 전반적인 동작 및 보정 장치(300)의 내부 블록들 간 신호 흐름을 제어하고, 데이터를 처리하는 데이터 처리 기능을 수행할 수 있다. 이러한 제어부(350)는 중앙 처리 장치(Central Processing Unit : CPU), 애플리케이션 프로세서(Application Processor) 등이 될 수 있다.
제어부(350)는 데이터수집모듈(351), 데이터분석모듈(353) 및 전송시점반영모듈(357)을 포함한다. 데이터수집모듈(351)은 모션 제어 태스크 수행 시간과 관련된 파라미터인 측정 데이터를 수집하도록 하는 프리런타임 실행 파일을 생성하여 통신부(310)를 통해 모션 제어기(100)로 전송한다. 이에 따라, 모션 제어기(100)는 측정 데이터를 수집할 것이다. 데이터분석모듈(353)은 모션 제어기(100)가 수집한 측정 데이터를 모션 제어기(100)로부터 수신하고, 수신된 측정 데이터를 분석하여 프레임을 전송하는 시점 간의 간격의 차이가 최소가 되도록 모션 제어 태스크의 전송 단계의 시작 시점을 지연하는 오프셋(
Figure pat00040
)의 범위를 도출한다. 전송시점반영모듈(357)은 오프셋의 범위 내에서 모션 제어 태스크에 반영할 오프셋(
Figure pat00041
)을 결정한다. 이때, 모션 제어 태스크에 반영할 오프셋의 결정은 사용자의 선택 혹은 미리 설정된 알고리즘에 따라 이루어질 수 있다. 일 실시예에 따르면 전송시점반영모듈(357)은 표시부(330)를 통해 오프셋의 범위를 사용자에게 표시할 수 있다. 이에 따라, 사용자가 입력부(320)를 통해 이러한 오프셋의 범위 내에서 오프셋을 선택하면, 전송시점반영모듈(357)은 사용자가 선택한 오프셋을 모션 제어 태스크에 반영할 오프셋으로 결정할 수 있다. 다른 실시예에 따르면 전송시점반영모듈(357)은 미리 설정된 바에 따라 오프셋의 범위에서 최소값, 최대값, 평균값 혹은 중간값을 모션 제어 태스크에 반영할 오프셋으로 결정할 수 있다. 오프셋이 결정되면, 전송시점반영모듈(357)은 결정된 오프셋만큼 모션 제어 태스크의 전송 단계의 시작 시점을 지연하여 실행하도록 하는 모션 제어 애플리케이션의 실행 파일을 생성한다. 즉, 전송시점반영모듈(357)은 결정된 오프셋에 따라 전송 시점이 보정되는 모션 제어 애플리케이션의 런타임 코드에 반영한다. 그런 다음, 전송시점반영모듈(357)은 그 실행 파일을 모션 제어기(100)로 전송한다.
다음으로, 본 발명의 실시예에 따른 모션 제어 수행 시퀀스를 설명하기로 한다. 도 3 및 도 4는 본 발명의 실시예에 따른 모션 제어 수행 시퀀스를 설명하기 위한 도면이다.
본 발명의 실시예에 따른 모션 제어 수행 시퀀스는 도 3과 같이 단일 태스크의 형태로 구현된 것을 가정하며, 단일 모션 제어 태스크는 모션 제어기(100) 내에서 가장 높은 우선순위를 갖는 사용자 수준 태스크로 가정한다. 따라서 제어 태스크의 수행은 운영체제 내의 시스템 유지보수 서비스 또는 I/O 인터럽트 처리 태스크에 의해서만 지연되거나 선점 될 수 있다. 또한, 동형의 복수의 모터 드라이브(200) 사용으로 인해 모터 드라이브(200) 내 소프트웨어에 의한 지연시간은 동일하다고 가정한다.
모션 제어 태스크(
Figure pat00042
)는 모터 드라이브(200)로부터 네트워크를 이용한 피드백 정보를 수집하는 수집 단계(Retrieve Phase), 취득한 정보를 토대로 모션을 계산하는 계산 단계(Computation Phase), 그리고 제어 프레임을 전송하는 전송 단계(Publish Phase)를 포함하는 제어 시퀀스로 구성된다. 이러한 모션 제어 태스크는 기 설정된 주기(
Figure pat00043
)를 갖고 동작한다. 각 단계에서 수행하는 동작은 다음과 같다. 수집 단계(Retrieve Phase)에서 모션 제어기(100)는 모터 드라이브(200)가 EtherCAT 통신을 사용하여 모션 제어기(100)에게 리포팅한 모터의 상태 정보(위치, 속도, 토크 등)를 수집한다. 계산 단계(Computation Phase)에서 모션 제어기(100)는 의도한 모션 궤적(Motion trajectory)과 수집한 모터의 상태 정보를 비교하여 모션 궤적이 상이 할 때 이를 교정하는 계산을 수행한다. 전송 단계(Publish Phase)에서 모션 제어기(100)는 계산을 기초로 생성된 제어 명령을 모터 드라이브(200)로 전송한다.
일반적인 실시간 시스템 이론에 따르면 각 태스크 인스턴스(
Figure pat00044
)가 정주기마다 릴리즈된다고 가정한다. 그러면, 태스크 인스턴스의 릴리즈 시간은
Figure pat00045
로 정의된다. 하지만, 실제의 모션 제어기(100)의 타이머 해상도(Timer resolution)나 커널 수준의 태스크들에 의해 간섭이 발생하여 실제 릴리즈 시간(
Figure pat00046
)은
Figure pat00047
,
Figure pat00048
,
Figure pat00049
으로 정의할 수 있다. 시스템 내 다른 소프트웨어들에 의한 간섭 때문에 모션 제어 태스크 릴리즈 시점(
Figure pat00050
)은 예정된 시점(기 설정된 모션 제어 태스크의 주기에 따른 모션 제어 태스크 릴리즈 시점)보다 늦거나, 빨리 시작될 수 있다. 예정된 릴리즈 시점과 실제 릴리즈 시점의 차이를 태스크 릴리즈 지터(
Figure pat00051
)라고 한다.
Figure pat00052
> 0은 태스크가 정해진 시점보다 늦게 시작한 경우,
Figure pat00053
< 0(도 2에서
Figure pat00054
< 0)은 태스크가 정해진 시점보다 일찍 시작된 경우를 나타낸다. 모션 제어 태스크 인스턴스의 응답 시간(
Figure pat00055
)은 태스크 인스턴스가 수행이 시작된 시점으로부터 제어 시퀀스가 끝나는 시점(Publish phase 종료)의 차이로 정의한다. 따라서 모든 모션 태스크 인스턴스의 수행 완료 시점, 즉, 제어 명령을 포함하는 제어 프레임이 모션 제어기(100)에서 릴리즈되는 시점(
Figure pat00056
)은 i 번째 태스크 인스턴스 릴리즈 시점(
Figure pat00057
)과 태스크 응답시간(
Figure pat00058
)의 합으로 나타낼 수 있으며, 다음의 수학식 1과 같이 나타낼 수 있다.
Figure pat00059
Figure pat00060
Figure pat00061
Figure pat00062
Figure pat00063
결국, k번째 모터 드라이브(200)에서 관찰된 i 번째 제어 명령 관찰 시점 (
Figure pat00064
)은 모션 제어기(100)에서 i 번째 제어 프레임이 릴리즈되는 시점(
Figure pat00065
)과 해당 모터 드라이브(200)까지의 제어 프레임 전송 지연(
Figure pat00066
)의 합으로 나타낼 수 있다.
제어 프레임 전송 지연은 링크 계층에 의한 지연시간(
Figure pat00067
)과 모터 드라이브(200)에서의 프레임 스위칭 시간(
Figure pat00068
), 그리고 케이블에 의한 전송 시간 (
Figure pat00069
)의 합으로 계산 가능하다. 프레임 스위칭 시간과 케이블에 의한 전송 시간(
Figure pat00070
+
Figure pat00071
)은 1μs로 간주되며,
Figure pat00072
역시 상수로 표현된다. 따라서 해당 모터 드라이브(200)까지의 제어 프레임 전송 지연(
Figure pat00073
)은 상수이며, 결국 k번째 모터 드라이브(200)에서 관찰된 i 번째 제어 명령 관찰 시점(
Figure pat00074
)은 다음의 수학식 2와 같이 표현할 수 있다.
Figure pat00075
모터 드라이브(200) 각각에 부착된 각 모터가 제어 명령을 수신하여 동작하는 시점이 정확하게 균일하기 위해서는, 특정 모터 드라이브(200)에서 관찰된 두 개의 연속된 제어 명령의 도착 시점이 모션 제어 태스크의 수행 주기(
Figure pat00076
)와 같아야 한다. 수학식 3은 이를 나타낸다. 앞서 설명된 바와 같이, 제어 프레임 전송 지연(
Figure pat00077
)이 상수이며, 수학식 1에 의해 수학식 3은 수학식 4와 같이 정리 된다.
Figure pat00078
Figure pat00079
결국 수학식 4와 같이 첫 번째 태스크 인스턴스를 제외한 모든 태스크 인스턴스에 대해 태스크 릴리즈 지터(
Figure pat00080
)가 0이어야 하고, 현재 태스크 인스턴스의 응답 시간과 이전 태스크 응답 시간의 차이(
Figure pat00081
)가 없어야 함을 나타낸다. 수학식 4는 수학식 1과 수학식 3으로부터 도출 할 수 있다. 하지만, 커스터마이즈 된 하드웨어 또는 실시간 운영체제를 사용한다 하더라도 이들 값을 0 으로 만드는 것은 현실적으로 매우 어려운 문제이다.
따라서 본 발명은 이들 값을 0으로 만드는 대신, 수학식 4를 최대한 만족하는 조건, 즉, 모션 제어기(100)의 두개의 연속된 제어 명령을 포함하는 제어 프레임 릴리즈 시간 차이(
Figure pat00082
)를 최대한 적게 만드는 것을 목표로 한다.
실제로는 모션 제어기(200)에서 제어 명령을 포함하는 제어 프레임이 릴리즈되는 시점(
Figure pat00083
)은 네트워크 장치가 패킷을 외부 포트로 전송하기 시작하는 시점이나 이를 조정하는 것은 매우 어려우며, 네트워크 장치 드라이버 스택을 수정하는 것 마찬가지로 모션 제어기(100) 플랫폼에 탑재되는 운영체제의 버전별, 네트워크 장치별로 구현이 상이하므로 이 역시 확장성이 떨어져 비효율적인 측면이 있다.
따라서 본 발명은 모션 제어 태스크의 각 인스턴스의 전송 단계(Publish Phase)의 시작 시점을 조정하여 모션 제어기(100)로부터 제어 명령이 릴리즈되는 시간 간격을 균일하게 한다. 이로 인해 네트워크 장치의 종류에 상관없이 높은 이식성(Portability)을 가지고 모션의 정밀도와 정확도를 손쉽게 확보할 수 있다.
다음의 수학식 5는 전송 단계(Publish Phase)의 시작 시점을 나타내며,
Figure pat00084
는 i 번째 태스크 인스턴스의 계산 단계(Computation Phase)가 완료된 시점을 나타낸다.
Figure pat00085
도 3을 참조하면, 본 발명의 실시예에 따른 각 태스크 인스턴스의 전송 단계(Publish Phase)의 시작은 오프셋(
Figure pat00086
)을 가지고 지연되어 실행된다. 다음의 수학식 6은 오프셋(
Figure pat00087
)이 적용되어 지연 실행되는 전송 단계(Publish Phase)의 수행 시점(
Figure pat00088
)을 나타낸다.
Figure pat00089
본 발명에 따르면, 첫 번째 태스크 인스턴스의 전송 단계(Publish Phase) 수행 시점은 본 발명의 실시예에 따른 오프셋(
Figure pat00090
) 후에 시작이 되도록 하고, 그 후 모든 태스크 인스턴스의 전송 단계(Publish Phase) 수행 시점은 예정된 릴리즈 시점 이후에 지연되어 시작되며, 최대한 고정된 간격(
Figure pat00091
)을 가지고 실행되도록 한다. 즉, 본 발명은 제어 명령을 포함하는 제어 프레임을 전송하는 시점 간의 간격의 차이가 최소가 되도록 태스크 인스턴스의 전송 단계를 오프셋(
Figure pat00092
)을 적용하여 지연시킨 후 수행한다.
제안된 본 발명의 실시예에 따른 의사 코드는 다음의 표 1과 같다.
while (! PLC_shutdown )
retrieving sensed values ;
computing motion command ;
/* Pseudo Code start from here */
if first_iter :
/* Delay transmission time at first task instance */
time2transmit = first_release_time +
Figure pat00093
;
else
/* Next transmission time is determined by
sum of previous transmission time and task period */
time2transmit += TSK_PERIOD ;
endif

now = get current system time ;
/* Waiting for the time to transmit */
while (now < time2transmit )
now = get current system time ;
endwhile
time2transmit = now;
/* Pseudo Code end here */
publishing motion command ;
wait until next task activation ;
endwhile
그러면, 본 발명의 실시예에 따른 오프셋(
Figure pat00094
)에 대해서 보다 상세하게 설명하기로 한다. 도 5는 본 발명의 실시예에 따른 오프셋(
Figure pat00095
)의 범위를 도출하는 방법을 설명하기 위한 도면이다.
도 5를 참조하면, 전송 단계(Publish Phase) 수행 시점을 결정하는 오프셋(
Figure pat00096
)을 결정하기 위해서 다음과 같은 3가지 조건을 만족해야 한다.
첫째, 모든 제어 사이클에 대해
Figure pat00097
를 만족해야 한다. 즉, 이는 모든 태스크 인스턴스에 대해 전송 단계(Publish Phase) 수행 시점은 계산 단계(Computation phase)가 종료된 이후에 이루어지도록 보정되어야 하는 것을 나타낸다. 이 조건은 오프셋(
Figure pat00098
)의 하한선이며
Figure pat00099
로 나타낸다.
둘째, 연속된 두 개의 제어 사이클의 수행이 겹치(Overlapped)지 않도록 한다. 즉, 조정된 전송 단계(Publish Phase) 수행 후, 다음 태스크 인스턴스가 릴리즈될 때까지 여유 시간이 있어야 한다. 해당 조건을 만족하지 못할 경우 다음 제어 사이클은 모터 드라이브(200)로부터 전송된 피드백 정보의 도착을 기다려야 한다. 이 조건은 오프셋(
Figure pat00100
)의 상한선이며
Figure pat00101
로 표현한다.
셋째,
Figure pat00102
를 만족해야 한다. 이 조건을 만족하지 못할 경우 모션 제어 시퀀스(Retrieve, Computation 및 Publish Phase)를 제어 주기 내에 마칠 수 있는 충분한 시간이 없다는 것을 의미한다.
지터(
Figure pat00103
)와 계산 단계(Computation Phase)가 완료된 시점(
Figure pat00104
)은 랜덤한 분포를 보이기 때문에 정확한 오프셋 하한선(
Figure pat00105
)을 결정하는 것은 어렵다. 또한, 오프셋 상한선(
Figure pat00106
)의 결정을 위해서는 최악 태스크 릴리즈 지터가 발생하는 상황(다음 태스크 인스턴스가 예정된 시점보다 일찍 시작되는 경우 중의 최대 값:
Figure pat00107
)을 고려하여 현재 태스크 인스턴스의 제어 프레임 릴리즈 시점과 다음 태스크 인스턴스의 릴리즈 시점 사이에 충분한 시간이 있어야 한다. 따라서 전송 시점 오프셋 상/하한선(
Figure pat00108
,
Figure pat00109
)의 결정은 실제 애플리케이션 수행전의 선행 분석(Pre-runtime analysis)을 통해 추정한다.
또한 현재 태스크 인스턴스의 제어 시퀀스 수행 시간과 제어 명령을 포함하는 모든 제어 프레임이 N 개의 모터 드라이브(200)를 순회한 후, 업데이트된 모터 드라이브(200)의 정보를 모션 제어기(100)에 업데이트하는 시간(
Figure pat00110
)까지를 포함한다.
결국 위의 3가지 제약 조건을 만족하는 전송 시점 오프셋의 범위는 다음의 수학식 7과 같다.
Figure pat00111
그러면, 전술한 오프셋의 범위를 구하고, 구해진 오프셋의 범위에서 오프셋을 선택하여 모션 제어 태스크에 반영하는 방법에 대해서 설명하기로 한다. 도 6은 본 발명의 실시예에 따른 모션 제어 시스템의 프레임 전송 시점을 보정하기 위한 방법을 설명하기 위한 흐름도이다. 도 7은 본 발명의 실시예에 따른 측정 데이터를 분석하여 도출된 분석 데이터를 설명하기 위한 화면 예이다.
본 발명의 실시예에 따른 모션 제어 애플리케이션은 사용자에 의해 사용자의 필요 또는 의도에 따라 작성된 것이다. 이러한 모션 제어 애플리케이션은 보정 장치(300)를 이용하여 작성되어 저장부(340)에 저장된 상태라고 가정한다. 본 발명의 실시예에 따르면, 모션 제어 애플리케이션을 소정 시간 동안 미리 실행시켜 보고 이에 따라 오프셋(
Figure pat00112
)을 결정하기 위한 데이터를 얻는다. 이를 위하여, 제어부(350)의 데이터수집모듈(351)은 S110 단계에서 사용자에 의해 작성된 모션 제어 애플리케이션에 대해 시간 측정용 코드 및 측정 데이터 저장용 코드를 포함시켜 프리런타임(Pre-runtime) 실행 파일을 생성한다. 이때, 데이터수집모듈(351)은 모션 제어 애플리케이션의 소스 코드를 실행 파일로 빌드(bulid)하면서 런타임 코드 스터프(runtime code stub)를 기반으로 운영체제에서 제공하는 시간 측정용 코드 및 측정 데이터 저장용 코드가 포함된 프리런타임(Pre-runtime) 실행 파일을 생성한다. 한편, 사용자는 이러한 프리런타임 실행 파일의 실행 시간을 입력부(320)를 통해 입력하여 미리 설정할 수 있다. 그러면, 데이터수집모듈(351)은 입력부(320)를 통해 사용자의 프리런타임 실행 파일의 실행 시간을 한정하는 입력을 감지하고, 이러한 프리런타임 실행 파일의 실행 시간을 한정하는 코드를 시간 측정용 코드 및 측정 데이터 저장용 코드 외에 추가로 프리런타임 실행 파일에 포함시킬 수 있다.
다음으로, 데이터수집모듈(351)은 S120 단계에서 프리런타임(Pre-runtime) 실행 파일을 모션 제어기(100)에 통신부(310)를 통해 제공한다. 이에 따라, 모션 제어기(100)는 프리런타임 실행 파일을 보정 장치(300)로부터 수신한 후, S130 단계에서 수신된 프리런타임 실행 파일을 소정 기간 동안 실행시킨다. 모션 제어기(100)는 프리런타임 실행 파일에 따라 수집 단계(Retrieve Phase), 계산 단계(Computation Phase) 및 전송 단계(Publish Phase)를 포함하는 모션 제어 태스크(
Figure pat00113
)를 수행할 것이다. 이때, 더욱이, 모션 제어기(100)는 프리런타임 실행 파일에 포함된 시간 측정용 코드 및 측정 데이터 저장용 코드에 따라 매 태스크 인스턴스의 실행 시점(
Figure pat00114
)과 계산 단계(Computation phase)의 완료 시간(
Figure pat00115
)을 측정하고, 이러한 태스크 인스턴스의 실행 시점(
Figure pat00116
)과 계산 단계(Computation phase)의 완료 시간(
Figure pat00117
)을 포함하는 측정 데이터를 모션 제어기(100)의 데이터 저장 공간(예컨대, 메모리)에 저장한다. 게다가, 모션 제어기(100)는 프리런타임 실행 파일에 포함된 측정 데이터 저장용 코드에 따라 프리런타임 실행 파일이 종료될 때, 저장 공간에 저장된 측정 데이터를 텍스트 파일 형식으로 저장할 수 있다.
다음으로, 모션 제어기(100)는 S140 단계에서 측정 데이터를 보정 장치(300)로 전송한다. 여기서, 측정 데이터는 텍스트 파일 형식이 될 수 있다. 보정 장치(300)의 데이터분석모듈(353)은 통신부(310)를 통해 측정 데이터를 수신한다. 그런 다음, 데이터분석모듈(353)은 S150 단계에서 상기 모션 제어 태스크 수행 시간과 관련된 파라미터인 측정 데이터를 분석하여 오프셋을 결정하기 위해 필요한 분석 데이터를 도출한다. 분석 데이터는 태스크의 릴리즈 지터(
Figure pat00118
), 계산 단계가 완료된 시점(
Figure pat00119
) 및 제어 명령이 포함된 프레임이 전송 될 시점(
Figure pat00120
)의 각 항목에 대한 평균값, 최소값, 최대값 및 표준 편차를 포함하며, 이들 데이터를 토대로 한 각 측정 항목에 대한 확률 밀도 함수를 더 포함한다. 특히, 분석 데이터는 수학식 7과 같은 오프셋의 범위를 더 포함한다.
현재 설정된 모션 응용의 제어 주기 상에서 모션의 정밀도와 동시성을 높일 수 있는 오프셋(
Figure pat00121
)은 측정된 모션 제어 태스크의 타이밍 정보와 모터 드라이브 수, 그리고 데이터 크기를 고려하여 계산된다.
또한, 데이터분석모듈(353)은 S160 단계에서 표시부(330)를 통해 분석 데이터를 포함하는 분석 화면을 표시할 수 있다. 이러한 화면 예를 도 7에 도시하였다. 도시된 바와 같이, 분석 화면은 태스크의 릴리즈 지터(
Figure pat00122
), 계산 단계가 완료 시점(
Figure pat00123
) 및 제어 명령이 포함된 프레임이 전송 될 시점(
Figure pat00124
)의 각 항목에 대한 평균값, 최소값, 최대값 및 표준 편차 통계값을 제시하며, 측정된 통계 값을 기반으로 각 측정항목에 대한 확률 밀도 함수의 그래프를 표시한다. 더욱이, 분석 화면은 수학식 7과 같은 오프셋의 범위를 표시할 수 있다. 한편, 데이터분석모듈(353)은 사용자의 입력에 따라 요청이 있는 경우 그래프 파일 및 통계 요약 테이블을 텍스트 파일 형태로 출력할 수 있다.
한편, 사용자는 이러한 화면을 통해 분석 데이터를 열람할 수 있다. 특히, 사용자는 오프셋의 범위를 열람할 수 있고, 입력부(320)를 통해 이러한 오프셋의 범위 내에서 오프셋을 선택할 수 있다. 사용자가 입력부(320)를 통해 자신이 선택한 오프셋(의 수치)을 입력하면, 전송시점반영모듈(357)은 입력부(320)를 통해 이를 감지하여, S170 단계에서 사용자가 입력한 오프셋을 사용자에 의해 작성된 모션 제어 애플리케이션에 적용될 오프셋으로 결정한다.
그런 다음, 전송시점반영모듈(357)은 S180 단계에서 결정된 오프셋(
Figure pat00125
)을 모션 제어 애플리케이션에 적용하여 실행 파일을 생성한다. 이때, 전송시점반영모듈(357)은 결정된 오프셋(
Figure pat00126
)을 모션 제어 애플리케이션의 소스 코드를 실행 파일로 빌드(bulid)하면서 런타임 코드 스터프(runtime code stub)에 치환시켜 실제 실행(deploy)용 실행 파일을 생성한다.
그런 다음, 전송시점반영모듈(357)은 S190 단계에서 실행 파일을 모션 제어기(100)로 전송한다. 그러면, 모션 제어기(100)는 S200 단계에서 오프셋이 적용된 모션 제어 애플리케이션의 실행 파일을 실행할 것이다.
한편, 앞서 설명된 실시예에서 보정 장치(300)는 오프셋의 범위를 표시하고, 사용자가 그 오프셋의 범위 내에서 오프셋을 선택하는 것으로 설명하였다. 이러한 실시예에 대한 대안으로 본 발명의 다른 실시예에 따르면, 데이터분석모듈(353)이 S150 단계에서 설명된 바와 같이 오프셋의 범위를 도출하면, 전송시점반영모듈(357)은 사용자의 입력 없이, 데이터분석모듈(353)이 도출한 오프셋의 범위에서 최대값, 최소값, 중간값 및 평균값 중 어느 하나를 자동으로 선택하여 모션 제어 애플리케이션에 적용할 오프셋으로 결정할 수 있다. 그리고 전송시점반영모듈(357)은 결정된 오프셋을 모션 제어 애플리케이션에 적용하여 실행 파일을 생성하고, 생성된 실행 파일을 모션 제어기(100)로 전송하여, 모션 제어기(100)가 결정된 오프셋이 적용된 실행 파일을 실행하도록 할 수 있다.
한편, 본 발명의 실시예에 따른 이더캣 기반 모션 제어 시스템의 프레임 전송 시점을 보정하기 위한 방법은 다양한 컴퓨터수단을 통하여 판독 가능한 프로그램 형태로 구현되어 컴퓨터로 판독 가능한 기록매체에 기록될 수 있다. 여기서, 기록매체는 프로그램 명령, 데이터 파일, 데이터구조 등을 단독으로 또는 조합하여 포함할 수 있다. 기록매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 예컨대 기록매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광 기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함한다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 와이어뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 와이어를 포함할 수 있다. 이러한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상 본 발명을 몇 가지 바람직한 실시예를 사용하여 설명하였으나, 이들 실시예는 예시적인 것이며 한정적인 것이 아니다. 이와 같이, 본 발명이 속하는 기술분야에서 통상의 지식을 지닌 자라면 본 발명의 사상과 첨부된 특허청구범위에 제시된 권리범위에서 벗어나지 않으면서 균등론에 따라 다양한 변화와 수정을 가할 수 있음을 이해할 것이다.
100: 모션 제어기 200: 모터 드라이버
300: 보정 장치 310: 통신부
320: 입력부 330: 표시부
340: 저장부 350: 제어부
351: 데이터수집모듈 353: 데이터분석모듈
355: 전송시점반영모듈

Claims (13)

  1. 프레임 전송 시점을 보정하기 위한 장치로서,
    모터 드라이브로 제어 명령을 가지는 프레임을 전송하는 전송 단계(Publish Phase)를 포함하는 모션 제어 태스크(
    Figure pat00127
    )를 수행하는 모션 제어기와의 통신을 위한 통신부;
    상기 통신부를 통해 상기 모션 제어기가 상기 모션 제어 태스크를 실행하면서 상기 모션 제어 태스크 수행 시간과 관련된 파라미터를 포함하는 측정 데이터를 수집하도록 하는 프리런타임 실행 파일을 생성하여 상기 모션 제어기로 전송하는 데이터수집모듈;
    상기 통신부를 통해 상기 모션 제어기가 수집한 상기 측정 데이터를 상기 모션 제어기로부터 수신하고, 수신된 측정 데이터를 분석하여 상기 프레임을 전송하는 시점 간의 간격의 차이가 최소가 되도록 상기 전송 단계의 시작 시점을 지연하는 오프셋(
    Figure pat00128
    )의 범위를 도출하는 데이터분석모듈; 및
    상기 오프셋의 범위 내에서 오프셋(
    Figure pat00129
    )을 결정하고, 결정된 오프셋(
    Figure pat00130
    ) 만큼 상기 전송 단계의 시작 시점을 지연하여 실행하도록 하는 실행 파일을 생성하여 상기 모션 제어기로 전송하는 전송시점반영모듈;을 포함하는 것을 특징으로 하는 프레임 전송 시점을 보정하기 위한 장치.
  2. 제1항에 있어서,
    상기 모션 제어 태스크(
    Figure pat00131
    )는
    상기 모터 드라이브와 연결된 모터에서 이루어진 모션에 대한 정보인 피드백 정보를 상기 모터 드라이브로부터 수집하는 수집 단계(Retrieve Phase), 상기 피드백 정보를 기초로 다음 모션을 계산하는 계산 단계(Computation Phase) 및 상기 계산된 모션을 기초로 제어 명령을 포함하는 프레임을 전송하는 상기 전송 단계(Publish Phase)를 포함하며,
    상기 데이터분석모듈은 상기 전송 단계의 시작 시점이 상기 계산 단계가 종료된 후 이루어지도록 상기 오프셋의 범위의 하한을 도출하는 것을 특징으로 하는 프레임 전송 시점을 보정하기 위한 장치.
  3. 제2항에 있어서,
    상기 데이터분석모듈은 두 개의 연속된 상기 모션 제어 태스크의 수행 시점이 겹치지 않도록 상기 오프셋의 범위의 상한을 도출하는 것을 특징으로 하는 프레임 전송 시점을 보정하기 위한 장치.
  4. 제3항에 있어서,
    상기 데이터분석모듈은
    상기 오프셋의 범위의 상한이 상기 오프셋의 범위의 하한 보다 길도록(
    Figure pat00132
    ) 상기 오프셋의 범위를 도출하는 것을 특징으로 하는 프레임 전송 시점을 보정하기 위한 장치.
  5. 제1항에 있어서,
    상기 데이터수집모듈은
    스텁 코드(stub code)에 상기 모션 제어 태스크에 대한 시간 측정을 위한 측정 코드와 상기 측정 코드에 따라 측정된 측정 데이터를 저장하는 저장 코드를 생성하여, 상기 프리런타임 실행 파일을 생성하여 생성된 프리런타임 실행 파일을 상기 모션 제어기로 전송하는 것을 특징으로 하는 프레임 전송 시점을 보정하기 위한 장치.
  6. 제1항에 있어서,
    상기 오프셋의 범위는
    수학식
    Figure pat00133
    에 따라 도출되며,
    상기
    Figure pat00134
    는 상기 오프셋 범위의 하한이며,
    상기
    Figure pat00135
    는 상기 오프셋 범위의 상한이며,
    상기
    Figure pat00136
    는 모션 제어 태스크의 릴리즈 지터이며,
    상기
    Figure pat00137
    는 상기 모션 제어 태스크의 계산 단계(Computation Phase)가 종료되는 시점이며,
    상기
    Figure pat00138
    은 상기 모션 제어 태스크의 수행 주기이며,
    상기
    Figure pat00139
    는 또한 현재 태스크 인스턴스의 제어 시퀀스 수행시간과 제어 명령이 모든 모터 드라이브를 순회하여 업데이트 된 모터드라이브의 정보를 모션 제어기에 업데이트하는 시간이며,
    상기
    Figure pat00140
    는 상기 모션 제어 태스크 인스턴스가 예정된 시점 보다 일찍 시작되는 경우 중의 최대값인 것을 특징으로 하는 프레임 전송 시점을 보정하기 위한 장치.
  7. 프레임 전송 시점을 보정하기 위한 방법으로서,
    모터 드라이브로 제어 명령을 포함하는 프레임을 전송하는 전송 단계(Publish Phase)를 포함하는 모션 제어 태스크(
    Figure pat00141
    )를 수행하는 모션 제어기가 상기 모션 제어 태스크를 수행 중 상기 모션 제어 태스크 수행 시간과 관련된 파라미터인 측정 데이터를 수집하도록 하는 프리런타임 실행 파일을 생성하여 상기 모션 제어기로 상기 생성된 프리런타임 실행 파일을 전송하는 단계;
    상기 모션 제어기가 수집한 상기 측정 데이터를 상기 모션 제어기로부터 수신하여 상기 수신된 측정 데이터를 분석하여 상기 프레임을 전송하는 시점 간의 간격의 차이가 최소가 되도록 상기 전송 단계의 시작 시점을 지연하는 오프셋(
    Figure pat00142
    )의 범위를 도출하는 단계;
    상기 오프셋의 범위 내에서 오프셋(
    Figure pat00143
    )을 결정하는 단계; 및
    상기 결정된 오프셋(
    Figure pat00144
    ) 만큼 상기 전송 단계의 시작 시점을 지연하여 실행하도록 하는 상기 모션 제어 태스크를 실행하도록 하는 런타임 실행 파일을 생성하여 상기 모션 제어기로 전송하는 단계;를 포함하는 것을 특징으로 하는 프레임 전송 시점을 보정하기 위한 방법.
  8. 제7항에 있어서,
    상기 모션 제어 태스크(
    Figure pat00145
    )는 상기 모터 드라이브와 연결된 모터에서 이루어진 모션에 대한 정보인 피드백 정보를 상기 모터 드라이브로부터 수집하는 수집 단계(Retrieve Phase), 상기 피드백 정보를 기초로 다음 모션을 계산하는 계산 단계(Computation Phase) 및 상기 계산된 모션을 기초로 제어 명령을 포함하는 프레임을 전송하는 상기 전송 단계(Publish Phase)를 포함하며,
    상기 오프셋(
    Figure pat00146
    )의 범위를 도출하는 단계는
    상기 전송 단계의 시작 시점이 상기 계산 단계가 종료된 후 이루어지도록 상기 오프셋의 범위의 하한을 도출하는 것을 특징으로 하는 프레임 전송 시점을 보정하기 위한 방법.
  9. 제8항에 있어서,
    상기 오프셋(
    Figure pat00147
    )의 범위를 도출하는 단계는
    두 개의 연속된 상기 모션 제어 태스크의 수행 시점이 겹치지 않도록 상기 오프셋의 범위의 상한을 도출하는 것을 특징으로 하는 프레임 전송 시점을 보정하기 위한 방법.
  10. 제9항에 있어서,
    상기 오프셋(
    Figure pat00148
    )의 범위를 도출하는 단계는
    상기 오프셋의 범위의 상한이 상기 오프셋의 범위의 하한 보다 길도록(
    Figure pat00149
    ) 상기 오프셋의 범위를 도출하는 것을 특징으로 하는 상기 프레임 전송 시점을 보정하기 위한 장치.
  11. 제7항에 있어서,
    상기 프리런타임 실행 파일을 전송하는 단계는
    스텁 코드에 상기 모션 제어 태스크에 대한 시간 측정을 위한 측정 코드와 상기 측정 코드에 따라 측정된 측정 데이터를 저장하는 저장 코드를 생성하여 상기 프리런타임 실행 파일을 생성하고, 상기 생성된 프리런타임 실행 파일을 상기 모션 제어기로 전송하는 것을 특징으로 하는 프레임 전송 시점을 보정하기 위한 장치.
  12. 제7항에 있어서,
    상기 오프셋의 범위는
    수학식
    Figure pat00150
    에 따라 도출되며,
    상기
    Figure pat00151
    는 상기 오프셋 범위의 하한이며,
    상기
    Figure pat00152
    는 상기 오프셋 범위의 상한이며,
    상기
    Figure pat00153
    는 모션 제어 태스크의 릴리즈 지터이며,
    상기
    Figure pat00154
    는 상기 모션 제어 태스크의 계산 단계(Computation Phase)가 종료되는 시점이며,
    상기
    Figure pat00155
    은 상기 모션 제어 태스크의 수행 주기이며,
    상기
    Figure pat00156
    는 또한 현재 태스크 인스턴스의 제어 시퀀스 수행시간과 제어 명령이 모든 모터 드라이브를 순회하여 업데이트된 모터드라이브의 정보를 모션 제어기에 업데이트하는 시간이며,
    상기
    Figure pat00157
    는 상기 모션 제어 태스크가 예정된 시점 보다 일찍 시작되는 경우 중의 최대값인 것을 특징으로 하는 프레임 전송 시점을 보정하기 위한 방법.
  13. 제7항 내지 제12항 중 어느 한 항에 따른 프레임 전송 시점을 보정하기 위한 방법을 실행하는 명령어가 기록된 컴퓨터 판독 가능한 기록매체.
KR1020150127587A 2015-09-09 2015-09-09 이더캣 기반 모션 제어 시스템의 프레임 전송 시점을 정밀하게 보정하기 위한 장치, 이를 위한 방법 및 이 방법이 기록된 컴퓨터 판독 가능한 기록매체 KR101731045B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150127587A KR101731045B1 (ko) 2015-09-09 2015-09-09 이더캣 기반 모션 제어 시스템의 프레임 전송 시점을 정밀하게 보정하기 위한 장치, 이를 위한 방법 및 이 방법이 기록된 컴퓨터 판독 가능한 기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150127587A KR101731045B1 (ko) 2015-09-09 2015-09-09 이더캣 기반 모션 제어 시스템의 프레임 전송 시점을 정밀하게 보정하기 위한 장치, 이를 위한 방법 및 이 방법이 기록된 컴퓨터 판독 가능한 기록매체

Publications (2)

Publication Number Publication Date
KR20170030262A true KR20170030262A (ko) 2017-03-17
KR101731045B1 KR101731045B1 (ko) 2017-04-27

Family

ID=58502096

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150127587A KR101731045B1 (ko) 2015-09-09 2015-09-09 이더캣 기반 모션 제어 시스템의 프레임 전송 시점을 정밀하게 보정하기 위한 장치, 이를 위한 방법 및 이 방법이 기록된 컴퓨터 판독 가능한 기록매체

Country Status (1)

Country Link
KR (1) KR101731045B1 (ko)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101492910B1 (ko) * 2013-02-15 2015-02-12 서울시립대학교 산학협력단 이더캣 기반의 분산 시계 동기화를 위한 방법 및 시스템

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
한국공개특허 제2014호 2014년 02월 06일 공개 (명칭: 이더넷 통신 시스템 및 시간 동기화 방법)

Also Published As

Publication number Publication date
KR101731045B1 (ko) 2017-04-27

Similar Documents

Publication Publication Date Title
EP3643017B1 (en) Structured schema for temporal graph storage and retrieval
US10061281B2 (en) Controller support device, method, and recording medium
US9740186B2 (en) Monitoring control system and control device
US8190941B2 (en) Field control system
US8977534B2 (en) Controller support apparatus, controller support program executed on the apparatus, storage medium storing the program, and method of estimating execution time of control program
JP2011028752A5 (ko)
CN106461709B (zh) 用于电源的数字频率响应分析系统和方法
EP3582036B9 (en) Control device
US11231700B2 (en) Communication system, communication method, and information storage medium
WO2019056947A1 (zh) 一种用于移动机器人的定时任务的方法及系统
EP3623952B1 (en) Operation data collection system, operation data collection method, and program
KR101731045B1 (ko) 이더캣 기반 모션 제어 시스템의 프레임 전송 시점을 정밀하게 보정하기 위한 장치, 이를 위한 방법 및 이 방법이 기록된 컴퓨터 판독 가능한 기록매체
US20220286267A1 (en) Control system, information processing device, and non-transitory computer readable medium
CN115102453A (zh) 一种位置控制系统及方法
US11640150B2 (en) Communication system, communication method, and information storage medium
JP2021144650A (ja) 生産システム、制御方法、及びプログラム
JP7230989B2 (ja) 通信システム、通信方法、及びプログラム
US20230256610A1 (en) Component management system and method
US20240165816A1 (en) Streaming input buffer for real-time robotic control
JP2021144651A (ja) 生産システム、データ送信方法、及びプログラム
JP2001290586A (ja) 座標獲得システムおよび座標獲得方法および座標入力装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant