KR20170104306A - 모듈 시스템 및 모듈기반 로봇 시스템, 그리고 모듈 시스템의 업데이트 방법 - Google Patents

모듈 시스템 및 모듈기반 로봇 시스템, 그리고 모듈 시스템의 업데이트 방법 Download PDF

Info

Publication number
KR20170104306A
KR20170104306A KR1020160027218A KR20160027218A KR20170104306A KR 20170104306 A KR20170104306 A KR 20170104306A KR 1020160027218 A KR1020160027218 A KR 1020160027218A KR 20160027218 A KR20160027218 A KR 20160027218A KR 20170104306 A KR20170104306 A KR 20170104306A
Authority
KR
South Korea
Prior art keywords
module
data
update
master
target
Prior art date
Application number
KR1020160027218A
Other languages
English (en)
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 KR1020160027218A priority Critical patent/KR20170104306A/ko
Priority to US15/146,189 priority patent/US20170255458A1/en
Priority to EP16199069.2A priority patent/EP3217279A1/en
Priority to CN201611014458.8A priority patent/CN107168143A/zh
Publication of KR20170104306A publication Critical patent/KR20170104306A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0423Input/output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/457Communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25257Microcontroller
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L2012/40208Bus networks characterized by the use of a particular bus standard
    • H04L2012/40215Controller Area Network CAN
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L2012/4026Bus for use in automation systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Automation & Control Theory (AREA)
  • Stored Programmes (AREA)

Abstract

서로 통신이 가능한 복수개의 모듈을 포함하는 모듈 시스템이 개시된다. 본 발명의 일 실시예에 따른 모듈 시스템은, 서로 통신이 가능한 복수개의 모듈을 포함하는 모듈 시스템으로서, 외부 기기와 통신이 가능한 마스터 모듈; 및 마스터 모듈과 데이터 통신이 가능하도록 네트워크로 연결되는 하나 이상의 서브 모듈을 포함하고, 마스터 모듈은, 하나 이상의 서브 모듈 중에서 서브 모듈의 운영과 관련된 데이터의 업데이트가 필요한 대상 서브 모듈에게 업데이트 데이터를 네트워크를 통해서 송신한다.

Description

모듈 시스템 및 모듈기반 로봇 시스템, 그리고 모듈 시스템의 업데이트 방법{MODULE SYSTEM, MODULE BASED ROBOT SYSTEM, AND UPDATE METHOD FOR MODULE SYSTEM}
본 발명은 모듈 시스템 및 모듈기반 로봇 시스템, 그리고 모듈 시스템의 업데이트 방법에 관한 것이다.
최근 교육, 취미, 연구, 생산 등 다양한 목적으로 하는 다양한 모듈 기반 시스템들이 제안되고 있다. 이러한 모듈 기반 시스템들에 포함된 모듈들은 각각 특정한 기능을 수행할 수 있으며, 모듈들끼리 서로 연결 되어 모듈 어셈블리를 형성할 수 있도록 제공된다. 이때, 각각의 모듈은 서로 전기적으로도 연결되어 에너지, 신호, 데이터 등을 주고 받을 수 있도록 제공될 수도 있다. 사용자는 제공된 매뉴얼 또는 스스로 창작한 방식에 따라 모듈들을 조립하여 특정한 목적을 수행하는 모듈 시스템을 제작할 수 있다.
이러한 종래의 모듈 시스템은 사용 목적을 변경시키거나, 보다 나은 버전으로 업그레이드하기 위하여 모듈 시스템을 구동하는 프로그램을 모듈별로 개별적으로 업데이트 할 필요가 있다. 이 경우, 모듈 시스템을 구성하는 모듈을 개별단위로 분리하여야 하고, 분리된 모듈마다 업데이트를 위한 작업이 필요하여 물리적으로 매우 불편하고, 상당한 시간이 소요된다.
또한, 종래의 모듈 시스템은 모듈 시스템 전체의 운영에 대한 프로그램을 한번에 개발하기 못하고, 모듈 단위의 프로그램을 개별적으로 개발하여 컴파일을 해야 하므로 개발에 어려움이 있다.
본 발명의 실시예는, 복수의 모듈을 포함하는 모듈 시스템에 있어서, 각 모듈의 데이터를 업데이트할 수 있는 모듈 시스템 및 모듈 시스템의 업데이트 방법을 제공하고자 한다.
본 발명의 실시예는, 네트워크로 연결된 복수개의 모듈을 포함하는 모듈 시스템에 있어서, 모듈 시스템 전체 프로그램 코드로부터 각 모듈별 실행코드를 생성할 수 있는 멀티 모듈 컴파일 시스템 및 멀티 모듈 컴파일 방법을 제공하고자 한다.
본 발명의 일 측면에 따르면, 서로 통신이 가능한 복수개의 모듈을 포함하는 모듈 시스템으로서, 외부 기기와 통신이 가능한 마스터 모듈; 및 상기 마스터 모듈과 데이터 통신이 가능하도록 네트워크로 연결되는 하나 이상의 서브 모듈을 포함하고, 상기 마스터 모듈은, 상기 하나 이상의 서브 모듈 중에서 상기 서브 모듈의 운영과 관련된 데이터의 업데이트가 필요한 대상 서브 모듈에게 업데이트 데이터를 상기 네트워크를 통해서 송신하는 것인 모듈 시스템이 제공될 수 있다.
또한, 상기 업데이트 데이터는, 상기 대상 서브 모듈의 펌웨어 소프트웨어 및 운영체계 소프트웨어 및 구동을 위한 데이터 중 하나 이상인 것인 모듈 시스템이 제공될 수 있다.
또한, 상기 네트워크를 통해 송신되는 데이터의 목적지 주소와 일치하는 모듈만 데이터를 수신하는 것인 모듈 시스템이 제공될 수 있다.
또한, 상기 네트워크는 동종 및 이종 통신이 가능한 것인 모듈 시스템이 제공될 수 있다.
또한, 상기 네트워크는 CAN(Controller Area Network) 버스를 이용하는 것인 모듈 시스템이 제공될 수 있다.
또한, 상기 마스터 모듈은 상기 대상 서브 모듈에게 상기 업데이트 데이터를 1차로 송신한 후, 2차로 재송신 하고, 상기 대상 서브 모듈은 상기 마스터 모듈로부터 상기 1차로 수신된 업데이트 데이터와 상기 2차로 수신된 업데이트 데이터를 비교하여, 상기 업데이트 데이터의 무결성을 검증하는 것인 모듈 시스템이 제공될 수 있다.
또한, 상기 마스터 모듈은, 상기 업데이트 데이터에 오류가 있는 경우에 상기 오류에 대응하는 상기 대상 서브 모듈에게 상기 업데이트 데이터를 재송신하는 것인 모듈 시스템이 제공될 수 있다.
또한, 상기 마스터 모듈은 상기 외부 기기로부터 상기 대상 서브 모듈을 위한 상기 업데이트 데이터를 수신하는 것인 모듈 시스템이 제공될 수 있다.
또한, 상기 마스터 모듈은, 상기 대상 서브 모듈 전부에 대한 상기 업데이트 데이터를 전부 수신한 후, 상기 대상 서브 모듈 각각에게 상기 대상 서브 모듈 각각에 대응하는 상기 업데이트 데이터를 송신하는 것인 모듈 시스템이 제공될 수 있다.
또한, 상기 마스터 모듈은, 상기 대상 서브 모듈에 대하여 하나씩 순차적으로, 각각의 상기 대상 서브 모듈에 대응하는 상기 업데이트 데이터를 수신하고 상기 대상 서브 모듈에게 송신하는 것인 모듈 시스템이 제공될 수 있다.
또한, 상기 마스터 모듈은 상기 외부 기기와 USB, IrDA, WiFi, UWB, 블루투스, Zigbee, CDMA, WCDMA, LTE, LTE-A 중 어느 하나의 방식으로 통신하는 것인 모듈 시스템이 제공될 수 있다.
또한, 상기 마스터 모듈은, 자신의 운영과 관련된 데이터의 업데이트도 가능한 것인 모듈 시스템이 제공될 수 있다.
또한, 상기 서브 모듈은 복수개가 마련되어, 제1 유선 네트워크로 연결된 제1 서브 시스템과, 제2 유선 네트워크로 연결된 제2 서브 시스템을 구성하고, 상기 제1 서브 시스템의 적어도 하나의 서브 모듈은, 상기 제2 서브 시스템의 적어도 하나의 서브 모듈과 무선통신으로 연결되는 것인 모듈 시스템이 제공될 수 있다.
본 발명의 일 측면에 따르면, 데이터 통신이 가능하도록 서로 네트워크로 연결된 복수개의 모듈을 포함하는 모듈 시스템의 업데이트 방법으로서, 데이터 업데이트 대상 서브 모듈에 대응하는 업데이트 데이터를 외부 기기로부터 마스터 모듈이 수신하는 단계; 상기 업데이트 데이터를 상기 마스터 모듈이 상기 대상 서브 모듈에게 송신하는 단계; 및 수신된 상기 업데이트 데이터를 이용하여 상기 대상 서브 모듈이 업데이트 하는 단계를 포함하는 것인 모듈 시스템의 업데이트 방법이 제공될 수 있다.
또한, 상기 업데이트 데이터는, 상기 대상 서브 모듈의 펌웨어 소프트웨어 및 운영체계 소프트웨어 및 구동을 위한 데이터 중 하나 이상인 것인 모듈 시스템의 업데이트 방법이 제공될 수 있다.
또한, 상기 네트워크를 통해 송신되는 데이터의 목적지 주소와 일치하는 모듈만 데이터를 수신하는 것인 모듈 시스템의 업데이트 방법이 제공될 수 있다.
또한, 상기 마스터 모듈은, 업데이트를 수행하는 상기 대상 서브 모듈의 개수를 확인하고, 각각의 상기 대상 서브 모듈에 대응하는 상기 업데이트 데이터를 순차적으로 상기 대상 서브 모듈에게 송신하는 단계를 더 포함하는 것인 모듈 시스템의 업데이트 방법이 제공될 수 있다.
또한, 상기 대상 서브 모듈이, 상기 업데이트 데이터의 무결성을 검증하고 상기 업데이트 데이터의 오류가 있는 경우, 상기 마스터 모듈에게 상기 업데이트 데이터의 재송신을 요청하는 단계; 및 상기 마스터 모듈이 상기 대상 서브 모듈로부터 상기 업데이트 데이터의 재송신을 요청 받으면, 상기 업데이트 데이터를 상기 대상 서브 모듈에게 재송신 하는 단계를 더 포함하는 것인 모듈 시스템의 업데이트 방법이 제공될 수 있다.
또한, 상기 마스터 모듈이 상기 대상 서브 모듈에게 모듈 업데이트에 대한 요청 메시지를 송신하고, 상기 대상 서브 모듈로부터 상기 모듈 업데이트에 대한 준비 완료 메시지를 수신하는 단계를 더 포함하는 것인 모듈 시스템의 업데이트 방법이 제공될 수 있다.
본 발명의 일 측면에 따르면, 서로 통신이 가능한 복수개의 모듈을 포함하는 모듈기반 로봇 시스템으로서, 외부 기기와 통신이 가능한 마스터 모듈; 상기 마스터 모듈과 데이터 통신이 가능하도록 네트워크로 연결되는 하나 이상의 서브 모듈; 및 상기 마스터 모듈과 상기 서브 모듈에 전원을 공급하기 위하여 상기 마스터 모듈 및 상기 서브 모듈에 전기적으로 연결되는 전원 모듈을 포함하고, 상기 마스터 모듈은, 상기 하나 이상의 서브 모듈 중에서 상기 서브 모듈의 운영과 관련된 데이터의 업데이트가 필요한 대상 서브 모듈에게 업데이트 데이터를 상기 네트워크를 통해서 송신하는 것인 모듈기반 로봇 시스템이 제공될 수 있다.
또한, 상기 업데이트 데이터는, 상기 대상 서브 모듈의 펌웨어 소프트웨어 및 운영체계 소프트웨어 및 구동을 위한 데이터 중 하나 이상인 것인 모듈기반 로봇 시스템이 제공될 수 있다.
또한, 상기 전원 모듈은 상기 마스터 모듈과 일체로 형성되는 것인 모듈기반 로봇 시스템이 제공될 수 있다.
본 발명의 일 실시예에 따른 모듈 시스템 및 모듈 시스템의 업데이트 방법에 따르면, 복수의 모듈 각각에 대한 데이터 업데이트를 개별적으로 수행하지 않고 전체적으로 수행할 수 있어, 간편하고 시간효율적으로 모듈 시스템을 구성하는 개별 모듈을 업데이트 할 수 있다.
본 발명의 일 실시예에 따른 멀티 모듈 컴파일 시스템 및 멀티 모듈 컴파일 방법에 따르면, 모듈 시스템 전체 프로그램 코드로부터 각 모듈별 실행코드를 빠르고 효과적으로 생성할 수 있다. 이에 따라, 복수의 모듈로 구성된 모듈 시스템에서 전체 프로그램 코드로부터 모듈별 코드를 생성하여 컴파일 함으로써 간편하고 효율적으로 각 모듈을 업데이트 할 수 있다.
도 1은 본 발명의 일 실시예에 따른 모듈 시스템의 개략적인 구성을 나타내는 블록도이다.
도 2는 본 발명의 일 실시예에 따른 모듈 시스템에서 모듈간의 데이터의 송수신을 설명하기 위한 블록도이다.
도 3은 모듈 시스템에서 모듈간 송수신되는 데이터 프레임을 나타내는 도면이다
도 4는 본 발명의 다른 실시예에 따른 모듈 시스템의 개략적인 구성을 나타내는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 모듈 시스템의 모듈별 업데이트에 있어서, 모듈 통신단의 수행단계를 도시하는 순서도이다.
도 6은 본 발명의 일 실시예에 따른 모듈 시스템의 모듈별 업데이트에 있어서, 마스터 모듈의 수행단계를 도시하는 순서도이다.
도 7은 본 발명의 일 실시예에 따른 모듈 시스템의 모듈별 업데이트에 있어서, 서브 모듈의 수행단계를 도시하는 순서도이다.
도 8은 본 발명의 일 실시예에 따른 모듈 시스템에서, 컴퓨터, 마스터 모듈, 대상 서브모듈들 간의 메시지 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 모듈기반 로봇 시스템의 구성을 도시하는 개략도이다.
도 10은 도 9에 있어서, 개별 모듈의 단면도이다.
도 11은 본 발명의 일 실시예에 따른 멀티 모듈 컴파일 시스템의 개략적인 구성을 나타내는 블록도이다.
도 12a 및 도 12b는 본 발명의 일 실시예에 따른 멀티 모듈 컴파일 시스템에서, 그래픽 사용자 인터페이스부를 설명하기 위한 도면이다.
도 13은 본 발명의 일 실시예에 따른 멀티 모듈 컴파일 방법의 수행단계를 도시하는 순서도이다.
도 14는 도 13에 있어서, 코드 제너레이터(모듈 코드 생성부)의 수행단계를 도시하는 순서도이다.
도 15는 도 14에 있어서, 코드 제너레이터(모듈 코드 생성부)의 이벤트 분석단계를 도시하는 순서도이다.
도 16a는 본 발명의 일 실시예에 따른 멀티 모듈 컴파일 시스템에서 컴파일되는 프로그램 코드에 있어서, 모듈에 대한 클래스를 나타내는 코드 리스트이다.
도 16b는 다른 모듈이 추가로 인식된 모듈에 대한 클래스를 나타내는 코드 리스트이다.
도 16c는 인식된 모듈간에 송수신되는 이벤트에 대한 처리를 나타내는 코드 리스트이다.
도 17a 및 도 17b는 본 발명의 일 실시예에 따른 멀티 모듈 컴파일 시스템을 통하여 생성된 모듈별 코드 리스트이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다.
본 명세서에서, "포함하다", "가지다" 또는 "구비하다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것으로서, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해될 수 있다.
또한, 이하의 실시예는 당 업계에서 평균적인 지식을 가진 자에게 보다 명확하게 설명하기 위해서 제공되는 것으로서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
이하 첨부된 도면을 참고하여 본 발명을 상세히 설명하기로 한다.
모듈 시스템
도 1은 본 발명의 일 실시예에 따른 모듈 시스템의 개략적인 구성을 나타내는 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 모듈 시스템(200)은, 서로 통신이 가능한 복수개의 모듈(210, 220, 230, 240, 250, 260, 270)을 포함하는 모듈 시스템(200)에 있어서, 각각의 모듈(210, 220, 230, 240, 250, 260, 270)에 대한 업데이트를 전체적으로 수행할 수 있다.
본 발명의 실시예들에서, '모듈'이란 모듈의 특정 기능을 수행하기 위한 기능적인 단위를 의미한다. 상기 '모듈'은 서로 통신이 가능하도록 네트워크로 연결되어 있으며, 물리적으로 별개로 분리될 수도 있고, 동일한 물리적 공간 내에 배치될 수도 있다.
본 발명의 실시예들에서, '마스터' 및 '서브'의 용어는 다양한 모듈들을 설명하는데 있어서, 서로 구별하는 목적으로 사용되는 것이지, '마스터'와 '서브'가 기능적으로 주종 관계에 있다는 것을 의미하지는 않는다.
본 발명의 실시예들에서, '업데이트'란 각각의 모듈의 운영과 관련된 데이터의 업데이트를 의미하며, 업데이트 데이터는 모듈의 펌웨어 소프트웨어, 모듈의 운영체계 소프트웨어, 및 모듈의 구동을 위한 데이터 중 어느 하나 이상일 수 있다.
상기 모듈 시스템(200)은, 마스터 모듈(210)과, 상기 마스터 모듈(210)과 데이터 통신이 가능하도록 네트워크 연결된 하나 이상의 서브 모듈(220, 230, 240, 250, 260, 270)을 포함할 수 있다.
상기 마스터 모듈(210)은 외부 기기(100), 예컨대, 랩탑, 데스크탑 또는 워크스테이션과 같은 컴퓨터 또는, 이동 전화기, PDA, 스마트, 탭북과 같은 모바일 기기와 통신이 가능하도록 연결될 수 있다. 상기 마스터 모듈(210)은 상기 외부 기기(100)와 통신이 가능하도록 연결되어, 상기 외부 기기(100)와 상호 데이터를 송수신하거나, 상기 서브 모듈(220, 230, 240, 250, 260, 270)에 대한 업데이트 데이터를 수신할 수 있다. 상기 마스터 모듈(210)은 상기 외부 기기(100)와 USB, IrDA, WiFi, UWB, 블루투스, Zigbee, CDMA, WCDMA, LTE, LTE-A 중 어느 하나의 방식으로 통신(150)할 수 있다. 즉, 상기 마스터 모듈(210)은 USB로 유선으로 상기 외부 기기(100) 에 연결될 수도 있고, WiFi를 통하여 직접 무선으로 연결될 수도 있으며, 액세스 포인트(AP)를 통하여 무선으로 연결될 수도 있다.
상기 서브 모듈(220, 230, 240, 250, 260, 270)은 상기 마스터 모듈(210)과 데이터 통신이 가능하도록 네트워크 연결되고, 각각 펌업데이트가 가능한 중앙처리장치(CPU)로서 마이크로 컨틀로러 유닛(MCU; Micro Controller Unit)이 내장될 수 있다. 상기 마이크로 컨트롤러 유닛은, 내부 메모리로서 예컨대 플래쉬 메모리에, 펌웨어가 저장되는 유저코드 영역과, 마이크로 컨트롤러 유닛을 부팅하기 위한 부트로더(Bootloader)영역을 포함할 수 있다. 본 실시예에서, 상기 서브 모듈(220, 230, 240, 250, 260, 270) 각각은, 서브 통신 모듈(220), 전원 모듈(230), 모터 모듈(240), 버튼 모듈(250), 센서 모듈(260), 디스플레이 모듈(270), 카메라 모듈 중 어느 하나일 수 있다. 상기 센서 모듈(260)은 적외선 센서, 촉각센서, 터치 센서, 이미지 센서, 초음파 센서, 지문인식 센서, 광 센서, 음향센서, 압력센서, 온도센서, 가속도 센서, 자이로 센서, 음성인식 센서 등 다양한 형태의 물리적 정보를 센싱하기 위한 수단일 수 있다.
상기 서브 모듈(220, 230, 240, 250, 260, 270)은 상기 마스터 모듈(210)과 서로 데이터를 송수신할 수 있도록 네트워크 버스(202)로 연결될 수 있는데, 본 실시예에서, 상기 네트워크는 버스(202)는, 상기 네트워크 버스(202)를 통해 송신되는 데이터의 목적지 주소와 일치하는 모듈만 데이터를 수신할 수 있는 브로드 캐스팅 방식일 수 있다. 상기 네트워크 버스(202)는 시리얼, LAN, CAN, USB, IrDA, WiFi, 블루투스, Zigbee, CDMA, WCDMA, LTE, LTE-A 등 다양한 유무선 통신방식으로 구성될 수 있으며, 이종의 통신도 가능할 수 있다.
본 실시예에서, 상기 네트워크 버스(202)는 CAN(Controller Area Network) 버스일 수 있다. CAN 통신을 이용하는 경우 모듈간 플러그 앤 플레이의 구현이 용이하며, 브로드 캐스팅 네트워크의 구현이 용이하고, 높은 신뢰도를 갖고서 시스템 제어 속도와 안전성을 향상시킬 수 있다.
상기 마스터 모듈(210)은, 상기 네트워크 버스(202)를 통해서 상기 서브 모듈(220, 230, 240, 250, 260, 270) 중에서 상기 서브 모듈의 마이크로 컨트롤러 유닛의 업데이트가 필요한 대상 서브 모듈에게, 업데이트에 필요한 업데이트 데이터를 송신할 수 있다.
상기 전원 모듈(230)은 상기 모듈 시스템(200) 전체의 전원을 공급하기 위해 마련된 것으로, 상기 마스터 모듈(210)과 다른 서브 모듈(220, 240, 250, 260, 270)에 전기적으로 연결되어 상기 마스터 모듈(210)과 다른 서브 모듈(220, 240, 250, 260, 270)에게 모듈의 작동에 필요한 전원을 공급할 수 있다. 상기 전원 모듈(230)은 외부전원과 연결되어 상기 모듈 시스템(200)에 전원을 공급하거나, 내부에 리튬 이온 배터리를 탑재하여, 상기 배터리에 축적된 전력을 공급할 수도 있다.
각각의 모듈(210, 220, 230, 240, 250, 260, 270)은 블록형상의 하우징 케이스를 구비할 수 있고, 이웃하는 모듈끼리 서로 직접 물리적으로 연결될 수도 있고, 별도의 커넥터를 이용하여 연결될 수도 있다. 또한, 상기 전원 모듈(230)은 상기 마스터 모듈(210)과 별도로 마련될 수도 있고, 상기 마스터 모듈(210)과 함께 하나의 하우징 내에 일체로 형성되어 마련될 수도 있다.
한편, 상기 모듈 시스템(200)과 통신 가능하게 연결되는 외부 기기(100) 에는, 상기 모듈 시스템(200)의 각각의 모듈(210, 220, 230, 240, 250, 260, 270)의 실행코드를 생성하기 위한 통합개발환경 시스템(IDE; Integrated Development Environment)이 구축될 수 있다. 상기 통합개발환경 시스템(IDE)은 사용자 인터페이스부(110), 모듈 코드 생성기(120), 컴파일러(130) 및 모듈 통신단(140)을 포함할 수 있다. 사용자는 상기 통합개발환경 시스템 상에서, 상기 모듈 시스템(200)의 각 모듈(210, 220, 230, 240, 250, 260, 270)의 작동을 위한 프로그램을 생성하거나 수정할 수 있다. 상기 사용자 인터페이스부(110)는 문자 사용자 인터페이스(CUI; Character User Interface) 또는 그래픽 사용자 인터페이스(GUI; Graphic User Interface) 중 하나일 수도 있고, CUI와 GUI가 상호 전환 가능한 인터페이스일 수도 있다. 상기 통합개발환경은 JAVA, C++과 같은 객체지향 프로그래밍 개발환경을 지원할 수 있다.
상기 모듈 코드 생성기(120)는, 상기 사용자 인터페이스부(110)에서 작성된 프로그램 코드를 각 모듈(210, 220, 230, 240, 250, 260, 270)별 프로그램 코드로 분할 및 수정한 후, 상기 컴파일러(130)를 통하여 각 모듈에 대응하는 업데이트 데이터 코드를 생성할 수 있다. 생성된 상기 업데이트 데이터 코드는 모듈 통신단(140)을 통하여 유선 또는 무선방식으로 통신가능하게 연결(150)된 상기 모듈 시스템(200)의 마스터 모듈(210)로 송신될 수 있다.
도 2는 본 발명의 일 실시예에 따른 모듈 시스템에서 모듈간의 데이터의 송수신을 설명하기 위한 블록도이고, 도 3은 모듈 시스템에서 모듈간 송수신되는 데이터 프레임을 나타내는 도면이다
도 2 및 도 3을 참조하면, 본 발명의 일 실시예에 따른 모듈 시스템(200)은, 마스터 모듈(210)을 통하여 외부 기기(100)로부터 데이터를 수신할 수 있다. 상기 모듈 시스템(200)을 구성하는 마스터 모듈(210)과 서브 모듈(220, 230, 240, 250, 260, 270) 각각은 고유의 식별자로서 주소값을 갖고 있다. 상기 식별자는 MAC 주소 (Medium Access Control Address)일 수 있고, 상기 모듈 각각이 제조될 때 부여된 고유한 시리얼 번호일 수도 있다. 일례로 본 실시예에서, 상기 마스터 모듈(210)은 주소값으로 001을 가질 수 있으며, 서브 통신 모듈(220)은 주소값으로서 002를 가질 수 있다. 마찬가지로, 상기 서브 모듈(230, 240, 250, 260, 270)은 각각 주소값으로 003, 004, 005, 006. 007을 가질 수 있다. 외부 기기(100)로부터 상기 모듈 시스템(200)의 모터 모듈(240)에게 특정 데이터를 송신하려는 경우, 상기 외부 기기(100)는 전송하고자 하는 상기 특정 데이터에 모터 모듈(240)의 주소값인 004를 추가한 데이터 패킷 형태로 전송할 수 있다. 상기 모듈 시스템(200)의 마스터 모듈(210)은 상기 데이터 패킷을 수신한 후, 상기 데이터 패킷을 네트워크 버스(203)의 프로토콜에 맞도록 변환하고, 변환된 상기 데이터 패킷을 상기 네트워크 버스(203)를 통하여 상기 네트워크 버스(203)에 연결된 모든 서브 모듈(220, 230, 240, 250, 260, 270)에 송신할 수 있다. 본 실시예에서, 상기 네트워크 버스(203)는 데이터의 목적지 주소와 일치하는 모듈만 상기 데이터를 수신하는 브로드 캐스팅 방식일 수 있다. 상기 네트워크 버스(203)는 시리얼, LAN, CAN, USB, IrDA, WiFi, 블루투스, Zigbee, CDMA, WCDMA, LTE, LTE-A 등 다양한 유무선 통신방식으로 구성될 수 있으며, 이종의 통신도 가능할 수 있다.
본 실시예에서, 상기 네트워크 버스(203)는 CAN(Controller Area Network) 버스일 수 있다. CAN 통신을 이용하는 경우 모듈간 플러그 앤 플레이의 구현이 용이하며, 브로드 캐스팅 네트워크의 구현이 용이하고, 높은 신뢰도를 갖고서 시스템 제어 속도와 안전성을 향상시킬 수 있다.
상기 서브 모듈(220, 230, 240, 250, 260, 270) 각각은 상기 데이터 패킷에 포함된 목표 주소값과 자신의 주소값을 비교하여, 상기 데이터 패킷이 자신의 모듈에 전달된 것인지를 판단한다. 본 실시예에서, 상기 데이터 패킷의 목표 모듈 주소값은 004이므로, 모터 모듈(240)은 상기 데이터 패킷이 자신에게 송신되었다고 판단하고 이를 수신할 수 있다. 반면에, 다른 서브 모듈들(220, 230, 250, 260, 270)은 상기 네트워크 버스(202)를 통하여 송신된 상기 데이터 패킷의 목표 주소값이 자신의 주소값과 다르기 때문에, 이를 수신하지 않는다.
도 3은 상기 네트워크 버스(202)를 통하여 전송되는 데이터 프레임(300)의 구조를 도시한다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 네트워크 버스(202)를 통하여 전송되는 데이터 프레임(300)은 프레임의 시작을 알리는 SOF(Start Of Frame; 302)영역, 중재영역(210), 제어영역(320), 데이터 영역(330), 데이터 프레임을 체크하는 CRC(Cyclic Redundancy Check; 340)영역, 데이터의 수신에 대한 응답을 알리는 ACK 영역(350) 및 프레임의 끝을 알리는 EOF(End Of Frame; 360) 영역을 포함할 수 있다.
상기 중재영역(210)은 데이터 프레임(300)의 전송의 목표가 되는 모듈의 주소 정보를 포함하는 ID 주소(312)와, 상기 모듈의 메모리 주소(314)와, CMD(Command; 316) 정보를 포함할 수 있다. 상기 CMD 정보(316)는 목표 모듈에 대한 업데이트 시작 또는 종료에 대한 정보를 포함하여, 상기 목표 모듈에 대한 명령어 정보를 포함할 수 있다. 상기 제어영역(320)은 상기 데이터 영역(330)에 포함된 데이터의 바이트의 개수를 포함하는 DLC(Data Length Code) 정보를 포함한다. 상기 데이터 영역(330)은 상기 목표 모듈로 전송되는 유용한 데이터가 위치되는 곳이다. 도시된 바와 같이, 본 실시예에 따른 데이터 프레임(300)은 목표 모듈에 대한 ID 주소(312)와 데이터 패킷(330)을 포함하기 때문에, 네트워크 버스(202)에 연결된 모듈들 중에서, 상기 ID 주소(312)와 일치하는 상기 목표 모듈만이 데이터 패킷(330)을 수신할 수 있다.
도 4는 본 발명의 다른 실시예에 따른 모듈 시스템의 개략적인 구성을 나타내는 블록도이다.
도 4를 참조하면, 도시된 본 발명의 다른 실시예에 따른 모듈 시스템(400)은, 제1 모듈 시스템(200)과, 상기 제1 모듈 시스템(200)과 통신가능하게 연결되는 제2 모듈 시스템(420)을 포함할 수 있다.
상기 제1 모듈 시스템(200)은 도 1에 도시된 모듈 시스템(200)과 동일한 것으로, 외부 기기(100)와 통신가능하게 연결되는 마스터 모듈(210)과, 서브 모듈들로서 서브 통신 모듈(220), 전원 모듈(230), 모터 모듈(240), 버튼 모듈(250), 센서 모듈(260) 및 디스플레이 모듈(270)을 포함할 수 있다. 상기 마스터 모듈(210)과 상기 서브 모듈들(220, 230, 240, 250, 260, 270)은 CAN 버스와 같은 브로드 캐스팅 방식의 네트워크 버스(202)와 연결될 수 있다.
상기 제2 모듈 시스템(420)은 상기 제1 모듈 시스템(200)의 상기 서브 통신 모듈(220)과 유선 또는 무선으로 통신가능하게 연결된 서브 통신 모듈(430), 카메라 모듈(450), 및 전원 모듈(440)을 포함할 수 있다.
상기 전원 모듈(440)은 상기 제2 모듈 시스템(420) 전체의 전원을 공급하기 위해 마련된 것으로, 다른 서브 모듈(430, 450)에 전기적으로 연결되어 각 모듈의 작동에 필요한 전원을 공급할 수 있다. 각각의 모듈(430, 440, 450)은 블록형상의 하우징 케이스를 구비하여, 이웃하는 모듈들끼리 서로 직접 물리적으로 연결될 수도 있고, 별도의 커넥터를 이용하여 연결될 수도 있다. 또한, 상기 전원 모듈(440)은 상기 서브 통신 모듈(430)과 별도로 마련될 수도 있고, 하나의 하우징 내에 일체로 형성되어 마련될 수도 있다.
상기 제1 모듈 시스템(200)과 동일한 방식으로, 상기 제2 모듈 시스템(420)은 서브 모듈들(430, 440, 450)과 브로드 캐스팅 방식의 네트워크 버스(422)와 연결될 수 있다. 이 경우, 상기 제2 모듈 시스템(420)의 서브 모듈들(430, 440, 450)은 각각 고유의 식별자로서 주소값을 가질 수 있다. 상기 식별자는 MAC주소(Medium Access Control Address)를 가질 수도 있으며, 상기 모듈 각각이 제조될 때 부여된 고유의 시리얼 번호일 수도 있다. 일례로 본 실시예에서, 서브 통신 모듈(430)은 주소값으로 008을 가질 수 있으며, 전원 모듈(440)은 주소값으로 009를, 카메라 모듈(450)은 주소값으로 010을 가질 수 있다.
상기 서브 통신 모듈(430)은 상기 제1 모듈 시스템(200)의 서브 통신 모듈(220)과 통신가능하게 연결될 수 있기 때문에, 상기 제1 모듈 시스템(200)과 상기 제2 모듈 시스템(420)은 서로 데이터를 주고 받을 수 있다. 만약, 상기 제1 모듈 시스템(200)과 상기 제2 모듈 시스템(420)이 서브 통신 모듈(220, 430)을 통하여 무선으로 데이터를 주고 받을 수 있다면, 상기 제1 모듈 시스템(200)과 상기 제2 모듈 시스템(420)은 물리적으로 떨어지고 연결되지 않은 위치에서도 서로 독립적으로 작업을 수행하면서 작업 처리 중에 발생하는 데이터를 공유할 수 있다. 또한, 상기 제1 모듈 시스템(200)과 상기 제2 모듈 시스템(420)은 상호 메시지를 송수신할 수 있으므로 유기적으로 협업을 할 수 있는 시스템을 구축할 수 있다. 이 경우, 상기 제1 모듈 시스템(200)의 네트워크 버스(202)와, 상기 제2 모듈 시스템(420)의 네트워크 버스(422)는 동일한 브로드 캐스팅 방식의 네트워크일 수 있으며, CAN 버스일 수 있다.
본 실시예에 따른 상기 제1 모듈 시스템(200)의 서브 통신 모듈(220)과, 상기 제2 모듈 시스템(420)의 서브 통신 모듈(430)은, 서로 상대방의 모듈 시스템에 포함된 모듈들에 대한 주소값을 사전에 송수신하여 저장할 수 있다. 즉, 제1 모듈 시스템(200)의 서브 모듈(220)은 제2 모듈 시스템(420)에 포함된 모듈(430, 440, 450)에 대한 주소를 파악하여, 가상으로 상기 제1 모듈 시스템(200)과 상기 제2 모듈 시스템(420)이 연결된 것처럼 인식할 수 있다. 마찬가지로, 제2 모듈 시스템(420)의 서브 모듈(430) 역시 상기 제1 모듈 시스템(200)에 포함된 모듈(210, 220, 230, 240, 250, 260, 270)에 대한 주소를 파악하여, 가상으로 상기 제1 모듈 시스템(200)과 상기 제2 모듈 시스템(420)이 연결된 것처럼 인식할 수 있다.
상기 외부 기기(100)로부터 상기 제2 모듈 시스템(420)의 카메라 모듈(450)에게 특정 데이터(메시지)를 송신하려는 경우, 상기 외부 기기(100)는 전송하고자 하는 상기 특정 데이터에 상기 카메라 모듈(450)의 주소값인 010을 추가한 데이터 패킷 형태로 상기 제1 모듈 시스템(200)의 마스터 모듈(210)에게 전송할 수 있다. 다음으로, 상기 제1 모듈 시스템(200)의 마스터 모듈(210)은 상기 데이터 패킷을 수신한 후, 상기 데이터 패킷을 상기 네트워크 버스(202)의 프로토콜에 맞도록 변환하고, 변환된 상기 데이터 패깃을 상기 네트워크 버스(202)를 통하여 상기 네트워크 버스(202)에 연결된 모든 서브 모듈(220, 230, 240, 250, 260, 270)에 송신할 수 있다. 이 경우, 상기 서브 모듈(220, 230, 240, 250, 260, 270)의 주소값은 010이 아니므로, 서브 모듈(230, 240, 250, 260, 270)은 상기 데이터 패킷의 목표 주소값이 자신의 주소와 다르기 때문에 상기 데이터 패킷을 수신하지 않는다. 다만, 상기 서브 통신 모듈(220)은 상기 제2 모듈 시스템(420)을 구성하는 모듈(430, 440, 450)에 대한 주소정보(008, 009, 010)를 사전에 알고 있으므로, 자신과 연결된 제2 모듈 시스템(420)의 카메라 모듈(450)의 주소가 010인 것을 알 수 있다. 따라서, 비록 상기 데이터 패킷의 목표 모듈 주소(010)가 자신의 주소(002)와 다를 지라도 상기 데이터 패킷을 수신하고, 상기 제2 모듈 시스템(420)의 서브 통신 모듈(430)에 송신할 수 있다. 상기 서브 통신 모듈(220, 430) 사이의 통신(402)은 USB, IrDA, WiFi, UWB, 블루투스, Zigbee, CDMA, WCDMA, LTE, LTE-A 중 어느 하나의 방식일 수 있다.
상기 마스터 모듈(210)은 상기 외부 기기(100)로부터 상기 제2 모듈 시스템(420)에 포함된 모듈(430, 440, 450)에 대한 업데이트 데이터 코드를 수신하여 저장할 수 있다. 상기 마스터 모듈(210)은 수신된 상기 업데이트 데이터 코드를 상기 서브 통신 모듈(220, 430)을 통하여 상기 제2 모듈 시스템(420)에 송신할 수 있다. 따라서, 상기 제1 모듈 시스템(200)의 마스터 모듈(210)과 물리적으로 이격된 상기 제2 모듈 시스템(420)에 대한 모듈별 데이터 업데이트가 수행될 수 있다.
도 5는 본 발명의 일 실시예에 따른 모듈 시스템의 모듈별 업데이트에 있어서, 모듈 통신단의 수행단계를 도시하는 순서도이다. 도 6은 본 발명의 일 실시예에 따른 모듈 시스템의 모듈별 업데이트에 있어서, 마스터 모듈의 수행단계를 도시하는 순서도이다.
도 7은 본 발명의 일 실시예에 따른 모듈 시스템의 모듈별 업데이트에 있어서, 서브 모듈의 수행단계를 도시하는 순서도이다. 도 8은 본 발명의 일 실시예에 따른 모듈 시스템에서, 컴퓨터, 마스터 모듈, 대상 서브모듈들 간의 메시지 흐름도이다.
도 1, 도 5 및 도 8을 참조하여, 모듈 통신단의 업데이트의 수행단계에 대하여 설명하기로 한다. 먼저, 상기 컴파일러(130)에 의해 모듈별로 생성된 업데이트 데이터 코드는 2진수의 기계어 코드 형태이다. 상기 모듈 통신단(140)은 N개 모듈에 대한 각각의 업데이트 데이터 코드를 상기 컴파일러(130)로부터 수신한다(510). 다음으로, 상기 모듈 통신단(140)은 업데이트의 타깃이 되는 각각의 모듈 주소를 상기 모듈별 업데이트 데이터 코드를 포함하는 데이터 프레임의 통신 헤더에 추가한다. 예컨대, 모듈의 MAC 주소 또는 고유한 시리얼 넘버의 일부를 모듈 주소로서 통신 헤더에 추가할 수 있다(520).
다음으로, 상기 모듈 통신단(140)은 상기 모듈 통신단(140)과 상기 마스터 모듈(210) 사이의 통신 프로토콜에 맞도록 상기 데이터 프레임을 인코딩할 수 있다(530). 즉, 무선의 Wifi 또는 블루투스 방식, 또는 유선의 USB 통신 프로토콜에 맞도록 전송할 각각의 데이터를 인코딩할 수 있다. 이 경우, 복수 모듈의 업데이트 데이터 코드를 전송하기 위하여 상기 모듈 통신단(140)은 내부에 마련된 FIFO 메모리(First In First Out Memory)에 상기 업데이트 데이터 코드를 업로드 할 수 있다(540). 즉, 상기 모듈 통신단(140)은, 인코딩된 상기 모듈별 업데이트 데이터 코드를 선입선출 방식으로 내부 메모리에 저장한 후, 상기 마스터 모듈(210)로 송신할 수 있다. 예컨대, 상기 모듈 통신단(140)이 N개 모듈의 모듈별 업데이트 데이터 코드를 송신하려는 경우, 상기 FIFO 메모리에 처음으로 업로드 된 제1 모듈을 위한 업데이트 데이터 코드가 상기 마스터 모듈(210)에 첫번째로 송신된다(550).
다음으로, 상기 모듈 시스템(200)의 제1 모듈은 상기 마스터 모듈(210)로부터 상기 네트워크 버스(202)를 통하여 상기 업데이트 데이터 코드를 수신할 수 있다. 이 경우, 무결성 확인을 위해 상기 모듈 통신단(140)은 상기 마스터 모듈(210)에게 상기 업데이트 데이터 코드를 재송신할 수 있고, 상기 마스터 모듈(210) 역시 2번째로 수신된 상기 업데이트 데이터 코드를 상기 제1 모듈에게 재송신할 수 있다(560). 다음으로, 상기 제1 모듈은 2번 수신된 상기 업데이트 데이터 코드를 서로 비교하여 무결성을 검증할 수 있다(570). 만약 무결성 검증(570)의 오류가 없는 경우, 상기 제1 모듈은 완료 메시지를 생성하여 상기 마스터 모듈(210)로 송신한다. 만약, 무결성 검증하는 과정에서 오류가 발생하는 경우, 상기 제1 모듈은 오류 메시지를 생성하여 상기 마스터 모듈(210)로 송신한다. 이에 따라, 상기 마스터 모듈(210)은 상기 모듈 통신단(140)에게 상기 오류 메시지를 송신하여, 오류가 있는 해당부분의 데이터를 재송신할 것을 요청할 수 있고, 이에 따라 상기 모듈 통신단(140)은 오류가 있는 해당부분의 데이터를 재송신할 수 있다. 상기 마스터 모듈(210)이 상기 모듈 통신단(140)에게 완료 메시지를 송신함으로써, 제1 모듈에 대한 업데이트가 오류없이 진행되었음을 알려준다.
다음으로, 상기 모듈 통신단(140)은 상기 FIFO 메모리에서 제1 모듈을 위한 업데이트 데이터 코드를 제거하고, 차선의 모듈에 해당하는 업데이트 데이터 코드를 업로드할 수 있다(540). 또한, 상기 모듈 통신단(140)은 상기 FIFO 메모리에 2번째로 업로드된 제2 모듈의 업데이트 데이터 코드를 상기 모듈 시스템(200)의 마스터 모듈(210)에 송신한다(550). 마찬가지로, 무결성 확인을 위해 상기 모듈 통신단(140)은 상기 제2 모듈의 업데이트 데이터 코드를 재송신할 수 있다(560). 다음으로, 상기 모듈 시스템(200)의 제2 모듈은 2번 수신된 상기 업데이트 데이터 코드를 서로 비교하여 무결성을 검증할 수 있다 (570). 만약 무결성 검증(570)의 오류가 없는 경우, 완료 메시지를 생성하여 상기 마스터 모듈(210)로 송신한다. 만약 무결성 검증하는 과정에서 오류가 발생하는 경우, 상기 제2 모듈은 오류 메시지를 생성하여 상기 마스터 모듈(210)로 송신한다. 이에 따라, 상기 마스터 모듈(210)은 상기 모듈 통신단(140)에게 상기 오류 메시지를 송신하여, 오류가 있는 해당부분의 데이터를 재송신할 것을 요청할 수 있다. 이에 따라 상기 모듈 통신단(140)은 오류가 있는 해당부분의 데이터를 재송신할 수 있다. 상기 마스터 모듈(210)이 상기 모듈 통신단(140)에게 완료 메시지를 송신함으로써, 제2 모듈에 대한 업데이트가 오류없이 진행되었음을 알려준다.
이와 동일한 방식으로, 상기 모듈 통신단(140)은 제N 번째 모듈의 업데이트 데이터 코드를 송신한 수 오류가 없음을 확인함으로써 상기 모듈 시스템(200)의 각각의 모듈에 대한 업데이트를 완료하게 된다.
도 1, 도 6 및 도 8을 참조하여, 마스터 모듈의 업데이트 수행단계에 대하여 설명하기로 한다.
도 1, 도 6 및 도 8을 참조하면, 먼저, 상기 모듈 시스템(200)의 마스터 모듈(210)은 자신의 펌웨어에 따른 특정 프로세스를 진행하고 있으면서(610), 상기 모듈 통신단(140)으로부터 데이터가 수신되는 지를 체크한다(620). 상기 마스터 모듈(210)은 상기 모듈 통신단(140)으로부터 모듈 시스템(200)의 모듈별 업데이트 데이터 코드를 수신할 수 있다. 만약, 상기 마스터 모듈(210)이 데이터를 수신하는 경우(620), 상기 마스터 모듈(210)은 통신 프로토콜을 디코딩하여(622), 수신된 데이터의 내용을 해석한다. 상기 수신된 데이터는 모듈 시스템(200)의 모듈에 대한 업데이트 명령일 수 있다(630). 만약, 상기 수신된 데이터가 업데이트 명령이 아닌 경우(630), 상기 마스터 모듈(210)은 해당 명령에 따른 별도의 작업을 수행할 수 있다(632). 만약, 상기 수신된 데이터가 업데이트 명령인 경우(630), 상기 마스터 모듈(210)은 업데이트를 할 모듈의 개수(N)를 확인한다(640).
다음으로, 상기 마스터 모듈(210)은 상기 네트워크 버스(202)를 통하여, 제1 모듈에 대한 업데이트 요청 메시지를 송신할 수 있다(642). 이 경우, 만약 상기 제1 모듈이 상기 업데이트 요청 메시지를 정상적으로 수신하고 이에 대한 응답으로 준비완료 메시지를 송신하고, 이에 따라 상기 마스터 모듈(210)이 상기 준비완료 메시지를 정상적으로 수신하는 경우(650), 상기 마스터 모듈(210)은 1차로 제1 모듈에 대한 업데이트 데이터 코드를 송신한다(660). 이 경우, 무결성 확인을 위해 상기 마스터 모듈(210)은 상기 제1 모듈에게 상기 업데이트 데이터 코드를 재송신할 수 있다(662). 다음으로, 상기 마스터 모듈(210)은 상기 제1 모듈로부터 무결성을 검증하고(670)하고 무결성 검증하는 과정에서 오류가 없는 경우, 제2 모듈에게 업데이트 요청 메시지를 송신하고(642), 제1 모듈에 대한 동일한 과정으로 제2 모듈에 대하여 업데이트를 진행한다. 만약, 상기 무결성 검증(670) 과정에서 오류가 있는 경우, 상기 제1 모듈은 상기 마스터 모듈(210)에게 오류 메시지를 송신할 수 있고(672), 이에 따라 상기 마스터 모듈(210)은 상기 제1 모듈에 대한 업데이트 데이터 코드를 재송신한다(660).
한편, 상기 마스터 모듈(210)이 제1 모듈에 대한 업데이트 준비완료 메시지를 수신하지 못하고(650), 소정의 시간이 경과하면(652), 상기 마스터 모듈(210)은 상기 모듈 통신단(140)에 업데이트 에러 메시지를 송신하고(654), 자신의 원래의 메인 프로세스를 진행할 수 있다(610).
도 1, 도 7 및 도 8을 참조하여, 서브 모듈의 업데이트 수행단계에 대하여 설명하기로 한다.
도 1, 도 7 및 도 8을 참조하면, 먼저, 모듈 시스템(200)의 서브 모듈(220, 230, 240, 250, 260, 270)은 펌웨어에 따른 특정 프로세스를 진행하고 있으면서(710), 상기 마스터 모듈(210)로부터 데이터가 수신되는 지를 체크한다(720). 서브 모듈(220, 230, 240, 250, 260, 270) 각각은 상기 모듈 마스터 모듈(210)로부터 업데이트 데이터 코드를 수신할 수 있다. 만약, 상기 서브 모듈(220, 230, 240, 250, 260, 270) 각각이 데이터를 수신하는 경우(720), 상기 서브 모듈(220, 230, 240, 250, 260, 270) 각각은 통신 프로토콜을 디코딩하여(730), 수신된 데이터의 내용을 해석한다. 일례로, 상기 모듈 시스템(200)의 네트워크 버스(202)가 CAN 버스인 경우, 상기 서브 모듈(220, 230, 240, 250, 260, 270) 각각은 상기 마스터 모듈(210)로부터 수신된 데이터로부터 통신 프로토콜에 관한 헤더를 제거하고, 수신된 데이터의 CMD(316)가 업데이트를 요청하는 메시지인지를 확인할 수 있다. 만약, 상기 수신된 데이터가 업데이트 명령이 아닌 경우(740), 상기 서브 모듈(220, 230, 240, 250, 260, 270) 각각은 해당 명령에 따른 별도의 작업을 수행할 수 있다(742). 만약, 상기 수신된 데이터가 업데이트 명령인 경우(740), 상기 서브 모듈(220, 230, 240, 250, 260, 270) 각각은 업데이트를 하기 위하여, 진행중인 프로세스를 멈추고, 프로그램 카운터(Program Counter)를 부트로더로 점프한다(740).
다음으로, 상기 서브 모듈(220, 230, 240, 250, 260, 270) 각각은 상기 마스터 모듈(210)에 업데이트를 위한 준비가 완료되었다는 준비완료 메시지를 송신할 수 있다(760). 다음으로, 상기 서브 모듈(220, 230, 240, 250, 260, 270) 각각은 상기 마스터 모듈(210)로부터 수신된 업데이트 데이터 코드를 유저코드 영역에 파싱한다(770). 이 경우, 상기 서브 모듈(220, 230, 240, 250, 260, 270) 각각은 상기 업데이트 데이터 코드의 무결성을 확인하기 위하여, 상기 마스터 모듈(210)로부터 상기 업데이트 데이터를 한번 더 수신하여(780), 이전에 유저코드 영역에 파싱한 데이터와 비교하는 검증과정을 진행할 수 있다(790). 만약, 상기 무결성 검증(790) 과정에서 오류가 있는 경우, 상기 서브 모듈(220, 230, 240, 250, 260, 270) 각각은 상기 마스터 모듈(210)에게 오류 메시지를 송신할 수 있고(794), 이에 따라 상기 마스터 모듈(210)은 상기 서브 모듈(220, 230, 240, 250, 260, 270) 각각에 대한 업데이트 데이터 코드를 재송신한다(770). 만약, 상기 무결성 검증(790) 과정에서 오류가 없으면, 상기 서브 모듈(220, 230, 240, 250, 260, 270) 각각은 자신의 소프트웨어를 리셋하여 재작동 시킨다(792).
상술한 실시예들에 있어서, 마스터 모듈이 서브 모듈의 운영과 관련된 업데이트 데이터를 송신하는 것을 예를 들어 설명하였으나, 상기 마스터 모듈은, 자신의 모듈의 운영과 관련된 데이터의 업데이트도 가능한 것은 물론이다.
상술한 바와 같이 본 발명의 일 실시예에 따른 모듈 시스템 및 모듈 시스템의 업데이트 방법에 따르면, 복수의 모듈 각각에 대한 업데이트를 개별적으로 수행하지 않고 전체적으로 수행할 수 있어, 간편하고 시간효율적으로 모듈 시스템을 구성하는 개별 모듈의 데이터를 업데이트 할 수 있다.
또한, 모듈 시스템을 구성하는 다양한 모듈을 다양한 방식으로 결합하고 연결시킴으로써, 다양한 목적의 모듈 시스템을 구축할 수 있다. 예컨대, 전원 모듈과 카메라 모듈 및 마스터 모듈을 결합하여, 감시용 모듈 시스템을 구축할 수도 있고, 전원 모듈, 마스터 모듈, 모터 모듈 및 카메라 모듈을 이용하여 이동식 모듈 시스템을 구축할 수도 있다. 또한, 동일한 모듈로 구성된 모듈 시스템을 다른 용도로 활용하려는 경우, 상기 모듈 시스템을 구성하는 각각의 모듈에 대한 데이터를 개별적으로 개발하고 개별적으로 업데이트를 할 필요 없이, 전체 시스템에 대하여 전체적으로 한번에 업데이트를 수행할 수 있다.
따라서, 모듈 시스템을 구성하는 모듈의 재사용이 가능하고, 기존의 모듈 시스템의 데이터를 간단히 교체하여 다양한 다른 목적의 모듈 시스템으로 용이하게 구축할 수 있다.
모듈기반 로봇 시스템
도 9는 본 발명의 일 실시예에 따른 모듈기반 로봇 시스템의 구성을 도시하는 개략도이고, 도 10은 도 9에 있어서 개별 모듈의 단면도이다.
도 9 및 도 10을 참조하면, 본 발명의 일 실시예에 따른 모듈기반 로봇 시스템(900)은 도 1에 도시된 모듈 시스템의 응용 어플리케이션으로서, 기본적인 구성은 도 1의 실시예와 동일하므로, 이하에서는 모듈기반 로봇 시스템(900)의 특징적인 사항에 대해서만 설명하기로 한다.
본 발명의 일 실시예에 따른 모듈기반 로봇 시스템(900)은, 서로 통신이 가능한 복수개의 모듈(910, 920, 930, 940, 950)을 포함하는 모듈기반 로봇 시스템(900)에 있어서, 각각의 모듈(910, 920, 930, 940, 950)에 대한 데이터를 업데이트할 수 있다.
상기 모듈기반 로봇 시스템(900)은, 마스터 모듈(910)과, 상기 마스터 모듈(910)과 데이터 통신이 가능하도록 네트워크 연결된 하나 이상의 서브 모듈(920, 930, 940, 950)을 포함할 수 있다. 본 실시예에서는, 마스터 모듈(910), 전원 모듈(920), 버튼 모듈(930), 서브 통신 모듈(940), 및 모터 모듈(950)이 순차적으로 통신가능하게 연결되어 모듈 시스템(900)을 구성한다. 상기 각각의 모듈(910, 920, 930, 940, 950)은 규격화된 직육면체의 케이스(911) 형상으로서, 본체 케이스(911b)와 이를 덮는 커버 케이스(911a)를 포함한다. 상기 본체 케이스(911b) 내에는 각각의 모듈(910, 920, 930, 940, 950)의 특정 기능을 수행시키기 위한 마이크로 컨트롤러 유닛(990)이 탑재되어 있다. 각각의 상기 모듈(910, 920, 930, 940, 950)의 4측면에는, 인접된 모듈과 결합을 하기 위한 결합기구(980)와, 인접한 모듈과 전기적으로 연결되어 데이터 통신을 위한 버스 핀(970)과, 전원을 공급하기 위한 전원공급 핀(970)이 마련될 수 있다. 마스터 모듈(910), 전원 모듈(920), 버튼 모듈(930) 및 서브 통신 모듈(940)은 상기 결합기구(980)에 의해 서로 인접한 상태로 결합될 수 있는데, 이 경우 각 모듈에 형성된 버스 핀(970)과 전원공급 핀(970)은 결합된 다른 모듈에 형성된 버스 핀(970)과 전원공급 핀(970)에 각각 접촉될 수 있다. 따라서, 서로 결합된 모듈끼리는, 전원을 공급할 수 있고 네트워크를 형성하여 데이터를 주고받을 수 있다. 한편, 본 실시예에서, 상기 모터 모듈(950)은 상기 서브 통신 모듈(940)과 결합기구(980)에 의한 결합이 아니라, 별도의 커넥터(940)에 의해 연결될 수도 있다. 상기 커넥터(940)는 전원공급 라인과 데이터 송수신을 위한 데이터 라인을 포함할 수 있다.
상기 결합기구(980)는 인접한 2개의 모듈을 서로 연결시키기 위해 마련된 것이다. 본 실시예에서는, 상기 결합기구(980)로서 본체 케이스(911b)의 측면에 마련된 결합핀(982)과, 상기 결합핀(982)을 자력으로 끌어당기기 위한 자석(981)이 마련될 수 있다. 상기 결합핀(982)과 상기 자석(981) 덕분에, 인접한 위치에 배치된 2개의 모듈은 서로 자력에 의해 끌어당겨져 결합이 될 수 있다. 본 실시예에서는, 상기 결합기구(980)로서 결합핀(982)과 자석(981)을 예로 들어 설명하였으나 이에 한정되는 것은 아니며, 다른 방식의 결합기구가 사용될 수도 있음은 물론이다. 예컨대, 상기 본체 케이스(911b)에는 돌출부와 상기 돌출부를 수용하는 만입부가 마련되어, 2개의 이웃하는 모듈의 상기 돌출부와 상기 만입부가 서로 결합되는 방식으로 2개의 모듈을 결합시킬 수도 있다.
상기 마스터 모듈(910)은 외부기기(100), 예컨대, 랩탑, 데스크탑 또는 워크스테이션과 같은 컴퓨터 또는, 이동 전화기, PDA, 스마트, 탭북과 같은 모바일 기기와 통신이 가능하도록 연결될 수 있다. 본 실시예에서 상기 마스터 모듈(910)은 상기 컴퓨터 또는 상기 모바일 기기와 Wifi 통신이 가능하도록 연결되어, 사용자의 컴퓨터 또는 모바일과 같은 외부 기기(100)와 상호 데이터를 송수신하거나 상기 서브 모듈(920, 930, 940, 950)에 대한 업데이트 데이터를 수신할 수 있다. 물론, 상기 마스터 모듈(910)은 상기 컴퓨터 또는 상기 모바일 기기와 USB, IrDA, WiFi, UWB, 블루투스, Zigbee, CDMA, WCDMA, LTE, LTE-A 중 어느 하나의 방식으로 통신가능하게 연결(150)할 수 있다.
상기 서브 모듈(920, 930, 940, 950)은 상기 마스터 모듈(910)과 서로 데이터를 송수신할 수 있도록 네트워크 버스(970)로 연결될 수 있는데, 본 실시예에서, 상기 네트워크는 버스(970)는, 네트워크 버스(970)를 통해 송신되는 데이터의 목적지 주소와 일치하는 모듈만 데이터를 수신하는 브로드 캐스팅 방식일 수 있다.
상기 네트워크 버스(970)는 시리얼, LAN, CAN, USB, IrDA, WiFi, 블루투스, Zigbee, CDMA, WCDMA, LTE, LTE-A 등 다양한 유무선 통신방식으로 구성될 수 있으며, 이종의 통신도 가능할 수 있다.
본 실시예에서, 상기 네트워크 버스(970)는 CAN(Controller Area Network) 버스일 수 있다. CAN 통신을 이용하는 경우 모듈간 플러그 앤 플레이의 구현이 용이하며, 브로드 캐스팅 네트워크의 구현이 용이하고, 높은 신뢰도를 갖고서 시스템 제어 속도와 안전성을 향상시킬 수 있다.
상기 마스터 모듈(910)은 상기 네트워크 버스(970)를 통해서 상기 서브 모듈(920, 930, 940, 950) 중에서, 서브 모듈의 마이크로 컨트롤로 유닛(990)의 업데이트가 필요한 대상 서브 모듈에게 업데이트에 필요한 데이터를 송신할 수 있다.
상술한 바와 같이 본 발명의 일 실시예에 따른 모듈기반 로봇 시스템에 따르면, 복수의 네트워크로 연결된 모듈 각각에 대한 업데이트를 개별적으로 수행하지 않고 전체적으로 수행할 수 있어, 간편하고 시간효율적으로 모듈기반 로봇 시스템을 구성하는 개별 모듈의 데이터를 업데이트 할 수 있다.
또한, 모듈 시스템을 구성하는 다양한 모듈을 다양한 방식으로 결합하고 연결시킴으로써, 다양한 목적의 로봇 시스템을 구축할 수 있다. 예컨대, 전원 모듈과 카메라 모듈 마스터 모듈을 결합하여, 감시용 로봇 시스템을 구축할 수도 있고, 전원 모듈, 마스터 모듈과, 모터 모듈 및 카메라 모듈을 이용하여 이동식 로봇 시스템을 구축할 수도 있다. 또한, 동일한 모듈로 구성된 모듈기반 로봇 시스템을 다른 용도로 활용하려는 경우, 로봇 시스템을 구성하는 각각의 모듈에 대한 데이터를 개별적으로 개발하고 개별적으로 업데이트를 할 필요 없이, 전체 시스템에 대하여 전체적으로 한번에 업데이트를 수행할 수 있다.
멀티 모듈 컴파일 시스템
도 11은 본 발명의 일 실시예에 따른 멀티 모듈 컴파일 시스템의 개략적인 구성을 나타내는 블록도이다.
도 11을 참조하면, 본 발명의 일 실시예에 따른 멀티 모듈 컴파일 시스템(1120)은 복수개의 모듈을 포함하는 모듈 시스템(1140)에 포함된 각각의 모듈(1141, 1142, 1143, 1144, 1145, 1146, 1147)별 실행코드를 생성하기 위해 마련된 것이다. 본 실시예에서, 상기 복수개의 모듈(1141, 1142, 1143, 1144, 1145, 1146, 1147)은 네트워크로 서로 연결될 수 있다.
상기 멀티 모듈 컴파일 시스템(1120)은, 랩탑, 데스크탑, 또는 워크스테이션과 같은 컴퓨터 또는, 이동 전화기, PDA, 스마트, 탭북과 같은 모바일 기기 내에 탑재될 수 있다.
상기 모듈 시스템(1140)은, 서로 통신이 가능한 복수개의 모듈(1141, 1142, 1143, 1144, 1145, 1146, 1147)을 포함하는 모듈 시스템(1140)에 있어서, 각각의 모듈(1141, 1142, 1143, 1144, 1145, 1146, 1147)을 업데이트할 수 있다. 상기 모듈 시스템(1140)은 도 1에 도시된 모듈 시스템(200)과 동일한 구성을 가진다.
상기 모듈 시스템(1140)은, 마스터 모듈(1141)과, 상기 마스터 모듈(1141)과 데이터 통신이 가능하도록 네트워크 연결된 하나 이상의 서브 모듈(1142, 1143, 1144, 1145, 1146, 1147)을 포함할 수 있다.
상기 마스터 모듈(1141)은 랩탑, 데스크탑 또는 워크스테이션과 같은 컴퓨터 또는, 이동 전화기, PDA, 스마트, 탭북과 같은 모바일 기기와 같은 외부기기와 통신이 가능하도록 연결될 수 있다. 보다 구체적으로, 상기 마스터 모듈(1141)은 상기 컴퓨터 또는 상기 모바일 기기의 모듈 통신단(1130)과 통신이 가능하도록 연결될 수 있다. 이에 따라, 상기 마스터 모듈(1141)은 사용자의 컴퓨터 또는 모바일 기기와 같은 외부기기와 상호 데이터를 송수신하거나, 상기 서브 모듈(1142, 1143, 1144, 1145, 1146, 1147)에 대한 업데이트 데이터를 수신할 수 있다. 상기 마스터 모듈(1141)은 상기 컴퓨터 또는 상기 모바일 기기와 USB, IrDA, WiFi, UWB, 블루투스, Zigbee, CDMA, WCDMA, LTE, LTE-A 중 어느 하나의 방식으로 통신(1132)할 수 있다. 즉, 상기 마스터 모듈(1141)은 USB로 유선으로 모듈 통신단(1130)에 연결될 수도 있고, WiFi를 통하여 직접 무선으로 연결될 수도 있으며, 액세스 포인트(AP)를 통하여 무선으로 연결될 수도 있다.
상기 서브 모듈(1142, 1143, 1144, 1145, 1146, 1147)은 상기 마스터 모듈(1141)과 데이터 통신이 가능하도록 네트워크로 연결되고, 각각 업데이트가 가능한 중앙처리장치(CPU)로서 마이크로 컨틀로러 유닛(MCU; Micro Controller Unit)이 내장될 수 있다. 상기 마이크로 컨트롤러 유닛은, 내부 메모리로서 예컨대 플래쉬 메모리에, 펌웨어가 저장되는 유저코드 영역과, 마이크로 컨트롤러 유닛을 부팅하기 위한 부트로더(Bootloader)영역을 포함할 수 있다. 본 실시예에서, 상기 서브 모듈(1142, 1143, 1144, 1145, 1146, 1147) 각각은, 서브 통신 모듈(1142), 전원 모듈(1143), 모터 모듈(1144), 버튼 모듈(1145), 센서 모듈(1146), 디스플레이 모듈(1147), 카메라 모듈 중 어느 하나일 수 있다.
상기 서브 모듈(1142, 1143, 1144, 1145, 1146, 1147)은 상기 마스터 모듈(1141)과 서로 데이터를 송수신할 수 있도록 네트워크 버스(1148)로 연결될 수 있다. 본 실시예에서, 상기 네트워크는 버스(1148)는, 네트워크 버스(1148)를 통해 송신되는 데이터의 목적지 주소와 일치하는 모듈만 데이터를 수신하는 브로드 캐스팅 방식일 수 있다. 상기 네트워크 버스(1148)는 시리얼, LAN, CAN, USB, IrDA, WiFi, 블루투스, Zigbee, CDMA, WCDMA, LTE, LTE-A 등 다양한 유무선 통신방식으로 구성될 수 있으며, 이종의 통신도 가능할 수 있다.
본 실시예에서, 상기 네트워크 버스(1148)는 CAN(Controller Area Network) 버스일 수 있다. CAN 통신을 이용하는 경우 모듈간 플러그 앤 플레이의 구현이 용이하며, 브로드 캐스팅 네트워크의 구현이 용이하고, 높은 신뢰도를 갖고서 시스템 제어 속도와 안전성을 향상시킬 수 있다.
상기 마스터 모듈(1141)은 상기 네트워크 버스(1148)를 통해서 상기 서브 모듈(1142, 1143, 1144, 1145, 1146, 1147) 중에서 서브 모듈의 중앙처리장치의 업데이트가 필요한 대상 서브 모듈에게 업데이트에 필요한 데이터를 송신할 수 있다.
상기 전원 모듈(1143)은 상기 모듈 시스템(1140) 전체의 전원을 공급하기 위해 마련된 것으로, 상기 마스터 모듈(1141)과 다른 서브 모듈(1142, 1144, 1145, 1146, 1147)에 전기적으로 연결되어 각 모듈의 작동에 필요한 전원을 공급할 수 있다. 각각의 모듈(1141, 1142, 1143, 1144, 1145, 1146, 1147)은 블록형상의 하우징 케이스를 구비하여, 인접한 모듈끼리 서로 직접 물리적으로 연결될 수도 있고, 별도의 커넥터를 이용하여 연결될 수도 있다. 또한, 상기 전원 모듈(1143)은 상기 마스터 모듈(1141)과 별도로 마련될 수도 있고, 하나의 하우징 케이스 내에 일체로 형성되어 마련될 수도 있다.
상기 멀티 모듈 컴파일 시스템(1120)은 모듈 식별부(1122), 이벤트 분석부(1123), 모듈 코드 생성부(1124), 컴파일러부(1126)를 포함할 수 있다. 상기 모듈 식별부(1122)는 모듈 시스템(1140)을 구동시키기 위한 전체 프로그램 코드를 실행하는 대상 모듈을 식별할 수 있다. 상기 프로그램 코드는 적어도 일부가 C++, C#, JAVA와 같은 객체지향 프로그래밍 언어(Object Oriented Program Language)로 작성될 수 있다. 예컨대, 상기 전체 프로그램 코드가 모듈 시스템(1140)의 버튼 모듈(1145)과 모터 모듈(1144)의 구동과 관련된 프로그램 코드일 경우, 상기 모듈 식별부(1122)는 상기 전체 프로그램 코드를 분석하여, 상기 버튼 모듈(1145)과 상기 모터 모듈(1144)이 프로그램의 대상 모듈인 것을 파악할 수 있다.
상기 이벤트 분석부(1123)는, 상기 모듈 시스템(1140)의 전체 프로그램 코드를 분석하여 상기 대상 모듈(1145, 1144)에 발생하는 다양한 이벤트를 분석할 수 있다.
상기 이벤트는 모듈 시스템(1140)을 구성하는 모듈 간에 전송되는 통신 데이터 패킷, 하나의 모듈이 다른 모듈에게 전송하는 작동 명령 또는 메시지 및 일반적인 테이터의 송수신을 포함할 수 있다. 또한, 상기 이벤트는 다른 모듈과 상관없이 자기 자신의 모듈의 작동에 있어서 특정 조건의 변경 등에 의한 작동의 변경도 포함할 수 있다. 예시적으로, 상기 전체 프로그램이 상기 버튼 모듈(1145)의 온-오프에 따른 상기 모터 모듈(1144)의 작동에 대한 것이라면, 상기 이벤트 분석부(1123)는 상기 전체 프로그램 코드 내에서 상기 버튼 모듈(1145)과 상기 모터 모듈(1144) 간에 이벤트가 있음을 파악할 수 있다.
상기 모듈 코드 생성부(1124)는, 상기 모듈 식별부(1122)에서 파악된 상기 대상 모듈과 상기 이벤트 분석부(1123)에서 파악된 상기 대상 모듈간의 이벤트와의 관련성을 분석하여, 상기 전체 프로그램 코드를 상기 대상 모듈별 모듈 코드로 분할하여 생성할 수 있다. 예컨대, 상기 모듈 시스템(11140)이, 마스터 모듈(1141), 모터 모듈(1144), 전원 모듈(1143) 및 디스플레이 모듈(1147)의 4개의 모듈로 구성되는 경우, 사용자는 이들 4대의 모듈이 상호 연관되어 작동하는 모듈 시스템의 전체 프로그램 코드를 개발할 수 있다. 그리고, 상기 모듈 코드 생성부(1124)는 사용자가 개발한 전체 프로그램 코드를 분석하여, 각각의 모듈, 즉 마스터 모듈(1141)의 수행동작에 대한 제1 모듈 코드, 모터 모듈(1144)의 수행동작에 대한 제2 모듈 코드, 전원 모듈(1143)의 수행동작에 대한 제3 모듈 코드, 및 디스플레이 모듈(1147)의 동작에 대한 제4 모듈 코드로 분할하여 모듈 코드를 생성할 수 있다. 본 실시예에서는 상기 이벤트 분석부(1123)과 상기 모듈 코드 생성부(1124)가 별도로 마련된 것을 예를 들어 설명하였으나, 상기 모듈 코드 생성부(1124)가 상기 이벤트 분석부(1123)를 포함할 수도 있음은 물론이다. 이 경우, 상기 모듈 코드 생성부(1124)는, 상기 대상 모듈(1145, 1144)에 발생하는 이벤트와 상기 대상 모듈(1145, 1144)과의 연관성에 기초하여 상기 전체 프로그램 코드를 상기 대상 모듈별 모듈 코드로 분할하여 생성할 수 있다.
상기 컴파일러부(1126)는 상기 모듈 코드 생성부(1124)에서 생성된 상기 대상 모듈별 모듈 코드를 컴파일하여, 상기 대상 모듈별 실행코드(1127)를 생성할 수 있다. 상기 컴파일러부(1126)는 C++, C#, JAVA와 같은 고급언어를 컴파일링하여 상기 대상 모듈의 마이크로 컨트롤로 유닛에 적합한 바이너리 코드인 기계어 코드(1127)를 생성할 수 있다. 생성된 상기 기계어 코드(1127)은 통신부로서 모듈 통신단(1130)을 통하여, 상기 모듈 시스템(1140)의 마스터 모듈(1141)로 송신될 수 있다.
한편, 상기 멀티 모듈 컴파일 시스템(1120)은 상기 모듈 코드 생성부(1124)에서 생성된 대상 모듈별 모듈 코드 또는 상기 프로그램 코드를 저장하는 코드 데이터베이스부(1125)를 포함할 수 있다. 이에 따라, 사용자는 기존에 생성된 모듈별 모듈 코드를 프로그래밍 개발 시 재활용하거나 참조할 수 있다.
한편, 상기 멀티 모듈 컴파일 시스템(1120)은 사용자가 상기 프로그램 코드를 작성 시 이용할 수 있는 응용 프로그램 프로그래밍 인터페이스(API: Application Programming Interface)를 제공할 수 있다.
한편, 상기 멀티 모듈 컴파일 시스템(1120)은 상기 모듈 시스템(1140)의 전체 프로그램 코드를 생성하고 사용자가 편집할 수 있도록 사용자 인터페이스를 제공하는 사용자 인터페이스부(1200)를 포함할 수 있다. 상기 사용자 인터페이스부(1200)는, 컴퓨터에 연결된 키보드나 마우스를 통하여 사용자의 입력을 받고 해당 내용을 보여주는 디스플레이를 포함할 수 있다. 상기 사용자 인터페이스부(1200)는 문자 사용자 인터페이스(CUI; Character User Interface)와 그래픽 사용자 인터페이스(GUI; Graphic User Interface)를 상호 전환가능한 것일 수 있다. 따라서, 사용자는 프로그램 코드를 직접 키보드를 통하여 작성할 수도 있고, 그래픽 이미지를 선택하여 기존에 생성된 표준 코드를 선택하여 작성할 수도 있으며, 프로그램 대상 모듈의 객체 이미지들을 디스플레이상에서 연결하거나 수정 또는 편집함으로써 새로운 프로그램 코드를 생성할 수도 있다.
또한, 상기 멀티 모듈 컴파일 시스템(1120)은 상기 모듈 시스템(1140)과 상기 모듈 통신단(1130)이 통신가능하게 연결되는 경우, 상기 모듈 시스템(1140)을 구성하는 모듈의 종류와 개수를 자동으로 인식하는 모듈 인식부(미도시)를 더 포함할 수 있다.
도 12a 및 도 12b는 본 발명의 일 실시예에 따른 멀티 모듈 컴파일 시스템에서, 그래픽 사용자 인터페이스부를 설명하기 위한 도면이다.
도 11 및 도 12a 및 도 12b를 참조하면, 본 발명의 일 실시예에 따른 그래픽 사용자 인터페이스부(1200)는, 컴퓨터 그래픽을 이용하여 모듈 시스템을 구성하는 모듈(1250, 1260, 1270)을 디스플레이 장치에 표시할 수 있다. 또한, 마우스나 키보드, 또는 사용자의 손가락 터치를 입력 받아 모듈을 연결하거나 재조합 함으로써, 모듈 시스템(1140)의 전체 프로그램 코드가 생성될 수 있다.
상기 그래픽 사용자 인터페이스부(1200)는, 모듈 시스템을 구성하는 모듈을 선택하고 편집하며, 각 모듈의 기능을 설정할 수 있는 메인 윈도우(1202)와, 모듈 시스템을 구성하는 여러 종류의 모듈을 아이콘 형태로 표시하는 모듈 선택 윈도우(1210)와, 프로그램 코드 파일의 생성, 저장 및 편집 등 다양한 메뉴를 디스플레이 하는 메뉴 윈도우(1204)를 포함할 수 있다. 또한, 상기 메인 윈도우(1202) 내에는 모듈을 선택하거나 삭제하거나, 이전 편집 내용을 되돌리는 편집 아이콘(1206)들이 표시될 수 있다. 예컨대, 사용자가 새로운 모듈을 추가하여 프로그래밍 하려는 경우, 사용자는 모듈 선택 윈도우(1210)에서 새로운 모듈을 선택할 수 있고, 이때 프로그램 코드 상에는 해당 모듈에 대한 클래스 변수가 선언될 수 있다. 또한, 메인 윈도우(1202) 내에 있는 모듈을 선택하는 경우, 각각의 모듈이 수행 가능한 액션 리스트를 디스플레이 할 수 있다. 이 경우, 디스플레이되는 모듈별 액션 리스트는 표준의 리스트를 제공하는 것을 기본으로 하고, 사용자가 모듈별 액션 아이템을 추가하여 리스트를 업데이트 하거나, 리스트에 제공되지 않더라도 CUI환경으로 전환하여 사용자가 직접 프로그래밍할 수도 있다.
본 실시예에서, 실 세계(1201)에서 버튼 모듈(1260)과 모터 모듈(1270)이 상호 연결됨으로써, 메인 윈도우(1202) 내에는 상기 버튼 모듈(1260)에 대한 액션 리스트로서, 버튼 클릭에 대한 액션을 리스트도 디스플레이 할 수 있다. 사용자가 상기 버튼 클릭을 선택하게 되면, 상기 프로그램 코드의 상기 버튼 클래스 내에는 상기 버튼 모듈(1260)의 버튼 클릭 시 발생하게 될 이벤트에 대한 내용을 설정하기 위한 버튼 클릭 이벤트 핸들러가 생성될 수 있다. 그리고, 상기 버튼 클릭 이벤트 핸들러 내에는 상기 버튼 클릭 시 수행하여야 모듈 시스템의 작동에 대한 내용이 프로그램 될 수 있다. 예를 들어, 사용자가 상기 버튼 모듈(1260)의 버튼 클릭 시, 상기 모터 모듈(1270)의 모터가 0도에서 180도로 회전하도록 프로그래밍을 하려는 경우, 사용자는 상기 버튼 클래스 내에 생성된 버튼 클릭 이벤트 핸들러 부분에 모터 모듈(1270)에게 타깃 회전각도 값을 전송하는 내용의 프로그램을 작성할 수 있다. 한편, 상기 모터 모듈(1270)의 입장에서는, 상기 모터 모듈(1270)에 관한 클래스 내의 모터 이벤트 핸들러 내에, 상기 모터 모듈(1270)이 상기 버튼 모듈(1260)로부터 타깃 회전각도에 대한 정보를 수신하는 이벤트가 발생하였을 때, 상기 모터 모듈(1270)의 모터를 180도로 회전시키는 것에 대한 프로그래밍을 작성할 수 있다.
한편, 상기 모듈 시스템(1140)이 상기 모듈 통신단(1130)을 통하여 상기 사용자 인터페이스부(1200)에 연결되는 경우, 상기 모듈 인식부(미도시)는 상기 모듈 시스템(1140)을 구성하는 모듈의 종류와 개수를 자동으로 파악할 수 있다. 이 경우, 도 12a에서와 같이, 실 세계(1201)에서 모듈 시스템을 구성하는 모듈이 마스터 모듈(1250), 버튼 모듈(1260) 및 모터 모듈(1270)로 구성되고, 이들 모듈(1250, 1260, 1270)이 아직 네트워크 연결되지 않은 경우에는, 상기 모듈 인식부는 모듈 통신단(1130)과 통신가능하게 연결된 마스터 모듈(1250)만을 인식할 수 있다. 따라서, 상기 메인 윈도우(1202) 상에는 상기 마스터 모듈(1250)만이 디스플레이 될 수 있다. 한편 도 12b에서와 같이, 실 세계(1201)에서 모듈 시스템을 구성하는 모듈 시스템이 마스터 모듈(1250), 버튼 모듈(1260) 및 모터 모듈(1270)로 구성되고 이들 모듈(1250, 1260, 1270)이 네트워크 커넥터(1252, 1262)로 연결된 경우에는, 상기 모듈 인식부는 상기 모듈 통신단(1130)과 통신가능하게 연결된 상기 마스터 모듈(1250)을 인식할 수 있고, 추가적으로 상기 마스터 모듈(1250)과 네트워크 연결된 상기 버튼 모듈(1260) 및 상기 모터 모듈(1270)도 함께 인식할 수 있다. 또한, 상기 모듈 시스템을 구성하는 상기 모듈(1250, 1260, 1270)의 연결구조에 대해서도 인식할 수 있다. 따라서, 상기 메인 윈도우(1202) 상에는 상기 마스터 모듈(1250), 상기 버튼 모듈(1260) 및 상기 모터 모듈(1270)이 모두 디스플레이 될 수 있고, 이들 모듈(1250, 1260, 1270)의 연결구조를 나타내는 가상의 네트워크 연결선(1252a, 1262a)도 디스플레이 될 수 있다. 한편, 프로그램 코드 상에는 인식된 상기 모듈들(1250, 1260, 1270)에 대한 클래스 변수가 플러그 앤 플레이 방식과 같이 자동으로 선언될 수 있다.
한편, 상기 모듈 시스템(1140)이 상기 모듈 통신단(1130)에 통신가능하게 연결되는 경우 상기 모듈 인식부는, 상기 모듈 시스템을 구성하는 모듈(1250, 1260, 1270) 각각에 저장된 실행코드를 수신하여, 상기 사용자 인터페이스부(1200)로 송신할 수 있다. 이에 따라, 사용자는 현재 모듈 시스템의 각각의 모듈(1250, 1260, 1270)에 저장된 실행코드를 검토하고 수정할 수 있다.
멀티 모듈 컴파일 방법
이하, 본 발명의 일 실시예에 따른 멀티 모듈 컴파일 방법에 대해서 살명하기로 한다.
도 13은 본 발명의 일 실시예에 따른 멀티 모듈 컴파일 방법의 수행단계를 도시하는 순서도이고, 도 14는 도 13에 있어서, 코드 제너레이터(모듈 코드 생성부)의 수행단계를 도시하는 순서도이다.
도 11 및 도 13을 참조하여 본 발명의 일 실시예에 따른 멀티 모듈 컴파일 방법의 수행단계에 대하여 설명하기로 한다. 먼저, 사용자는 컴퓨터 또는 모바일 기기와 같은 외부 기기에서 모듈 시스템 전체를 구동하기 위한 프로그램 코드를 생성한다(1310). 상기 모듈 시스템(1140)은 네트워크로 연결된 복수개의 모듈을 포함한다. 이 경우, 사용자는 기존에 작성되어 코드 데이터베이스부(1125)에 미리 저장된 프로그램 코드를 불러와서 재사용하거나, 이를 편집하여 새로운 프로그램 코드를 작성할 수 있다. 다음으로, 코드 제너레이터(1320)는 전체 모듈 시스템(1140)에 대한 프로그램 코드를 분석하고 재 조합하여, 상기 모듈 시스템(1140)을 구성하는 각 모듈별 프로그램 코드를 생성한다(1330). 다음으로, 생성된 모듈별 프로그램 코드를 상기 모듈 시스템(1140)으로 전송하고, 상기 모듈 시스템(1140)은 새로운 모듈별 프로그램 코드를 각각의 모듈에 업데이트 한다(1340).
도 11 및 도 14를 참조하여, 도 13에 도시된 코드 제너레이터의 수행 단계에 대하여 상세히 설명하기로 한다. 먼저, 코드 제너레이터(모듈 코드 생성부; 1320)는 사용자에 의해 작성된 상기 모듈 시스템(1140) 전체에 대한 프로그램 코드를 분석하여 상기 프로그램 코드를 실행하는 대상 모듈을 식별한다(1410). 다음으로, 상기 코드 제너레이터는 상기 모듈 시스템 전체의 프로그램 코드를 분석하여 상기 대상 모듈에 발생하는 이벤트의 종류와 개수를 분석한다(1420). 이 경우, 상기 코드 제너레이터는 상기 대상 모듈의 종류와, 상기 대상 모듈 간에 송수신되는 메시지에 기초하여 이벤트를 분석할 수 있다(1420).
다음으로, 상기 코드 제너레이터는 각각의 상기 대상 모듈과 상기 이벤트와의 관련성을 분석하여, 상기 프로그램 코드를 분할하고 재 조합하여 상기 대상 모듈별 코드를 생성한다(1440). 이후, 상기 코드 제너레이터는 상기 대상 모듈별 코드를 컴파일링하여 상기 대상 모듈에서 작동할 수 있는 바이너리 타입의 기계어 코드인 모듈별 실행코드를 생성한다(1450).
한편, 본 발명의 일 실시예에 따른 멀티 모듈 컴파일 방법은 상기 모듈 시스템과 상기 컴퓨터 또는 상기 모바일 기기가 통신가능하게 연결되는 경우, 상기 모듈 시스템을 구성하는 모듈의 종류와 개수를 자동으로 인식하는 모듈 인식단계를 더 포함할 수 있고, 상기 모듈 인식단계에서 인식된 모듈의 종류와 개수를 상기 컴퓨터 또는 상기 모바일 기기에 표시하는 모듈 디스플레이단계를 더 포함할 수 있다.
도 15는 도 14에 있어서, 코드 제너레이터의 이벤트 분석단계를 도시하는 순서도이다.
도 11 및 도 15를 참조하여 도 14에 도시된 코드 제너레이터의 이벤트 분석단계에 대하여 상세히 설명하기로 한다. 본 실시예에서는 이해의 편의를 위하여, 총 모듈의 개수는 3개로서, 제1 모듈인 마스터 모듈, 제2 모듈인 모터 모듈, 제3 모듈인 버튼 모듈로 구성된 모듈 시스템을 예를 들어 설명하기로 한다. 사용자는 상기 버튼 모듈의 버튼을 클릭 시, 제1 이벤트로서 상기 모터 모듈의 모터가 180도 회전하는 프로그램을 GUI 또는 CUI 환경 내에서 프로그래밍 할 수 있다. 이 경우 상기 코드 제너레이터는 상기 모듈 시스템의 전체 프로그램 코드를 분석하여, 전체 프로그램 코드 내에서 사용된 모듈의 개수(N)와 종류를 카운트하고(1510), 이벤트의 개수(K)를 카운트한다(1520). 설명의 편의를 위해 본 실시예에서는, 모듈에서 발생하는 이벤트로서, 제1 이벤트 한 개가 있는 것을 예를 들어 설명하기로 한다.
다음으로 상기 코드 제너레이터는 순차적으로 제1 모듈부터 제N 모듈까지, 또한 각각의 모듈이 제1 이벤트부터 제K 이벤트까지, 제n 모듈과 제k 이벤트와의 관련성을 확인한다(1530). 본 실시예에서는, 상기 제1 이벤트와 상기 제1 모듈인 마스터 모듈과의 관련성을 먼저 체크한다. 상기 제1 이벤트와 상기 마스터 모듈이 관련성이 없다는 것이 확인되면, 상기 제2 모듈인 버튼 모듈과 상기 제1 이벤트와의 관련성을 체크한다. 만약, 상기 코드 제너레이터가 상기 제2 모듈인 버튼 모듈과 상기 제1 이벤트와 관련성이 있는 것을 확인하면, 상기 코드 제너레이터는 상기 전체 프로그램 코드 내에서 상기 제1 이벤트와 상기 버튼 모듈과의 관련 코드 블록을 분석하여 상기 버튼 모듈에 해당하는 프로그램 모듈 부분에 관련된 프로그램 코드를 생성한다(1540).
다음으로, 상기 코드 제너레이터는 다음의 이벤트로 넘어가서(1542), 상기 제2 모듈인 상기 버튼 모듈과 다음의 이벤트가 관련이 있는지를 체크한다(1530). 만약, 추가적인 관련 이벤트가 없는 것이 확인되면(1550), 상기 코드 제너레이터는 다음의 모듈, 즉 제3 모듈로 넘어가서(1552), 제3 모듈인 상기 모터 모듈이 상기 제1 이벤트와 관련성이 있는지를 체크한다(1530). 상기 코드 제너레이터는 상기 모터 모듈이 상기 제1 이벤트와 관련성이 있는 것을 확인한 후, 상기 전체 프로그램 코드 내에서 상기 제1 이벤트와 상기 모터 모듈과의 관련 코드 블록을 분석하여 상기 모터 모듈에 해당하는 프로그램 모듈 부분에 관련된 프로그램 코드를 생성한다(1540).
이상과 동일한 방식으로, 상기 코드 제너레이터는 N개의 모듈에 대한 K개의 이벤트가 있는 전체 프로그램 코드에 대해 각각의 이벤트와 각각의 모듈과의 관련성을 분석함으로써, 최종적으로 N개의 모듈별 프로그램 코드를 생성할 수 있다(1570). 본 실시예의 경우, 상기 제1 모듈인 마스터 모듈은 상기 제1 이벤트와 관련성이 없으므로, 이미 제1 모듈에 저장된 펌웨어 프로그램과 비교할 때 변경된 부분이 없을 것이다. 따라서, 모듈별 업데이트 과정에서, 상기 제1 모듈은 펌웨어 프로그램을 업데이트할 필요가 없다. 반면에, 상기 제2 모듈과 상기 제3 모듈은 상기 제1 이벤트와 관련성이 있으므로, 이미 모듈에 저장된 펌웨어 프로그램과 비교할 때 변경된 부분이 존재할 것이다. 따라서, 모듈별 업데이트 과정에서, 상기 제2 모듈과 상기 제3 모듈은 펌웨어 프로그램이 업데이트 될 수 있다.
멀티 모듈 프로그램 예시
도 16a는 본 발명의 일 실시예에 따른 멀티 모듈 컴파일 시스템에서 컴파일되는 프로그램 코드에 있어서, 모듈에 대한 클래스를 나타내는 코드 리스트이고, 도 16b는 다른 모듈이 추가로 인식된 모듈에 대한 클래스를 나타내는 코드 리스트이며, 도 16c는 인식된 모듈간에 송수신되는 이벤트에 대한 처리를 나타내는 코드 리스트이다. 도 17a 및 도 17b는 본 발명의 일 실시예에 따른 멀티 모듈 컴파일 시스템을 통하여 생성된 모듈별 코드 리스트이다.
먼저, 도 12a 및 도 16a를 참조하면, 마스터 모듈(1250), 버튼 모듈(1260)과 모터 모듈(1270)은 서로 연결된 상태가 아니므로, 통합개발환경 시스템(IDE)에서의 모듈 시스템에 대한 프로그램 코드(1600) 상에는, 상기 통합개발환경 시스템과 통신하는 마스터 모듈(1250)에 대한 클래스(1602)만이 표시될 수 있다.
만약, 도 12b에서와 같이, 마스터 모듈(1250), 버튼 모듈(1270) 및 모터 모듈(1270)이 연결되는 경우에는, 도 16b에서와 같이, 통합개발환경 시스템(IDE)에서의 모듈 시스템에 대한 프로그램 코드(1620) 상에는, 상기 통합개발환경 시스템과 통신하는 마스터 모듈(1250)에 추가하여, 상기 버튼 모듈(1260)에 대한 클래스와 상기 모터 모듈(1270)에 대한 클래스가 생성되고, 상기 마스터 모듈(1250)의 클래스(1602) 내에는 상기 버튼 모듈(1260)의 액션에 대한 프로그램 코드(1622), 상기 모터 모듈(1270)에 대한 프로그램 코드(1624), 및 상기 버튼 모듈(1260)의 버튼 클릭시 발생하는 이벤트에 대한 프로그램 코드(1626)가 생성될 수 있다. 즉, 상기 마스터 모듈(1250)에 통신가능하게 연결된 서브 모듈(1260, 1270)들에 대한 가능한 액션을 정의하는 프로그램 코드를 생성할 수 있다. 예시적으로, 도 16c에 도시된 바와 같이 프로그램 코드(1640) 상에는, 상기 버튼 모듈(1260)의 버튼 클릭시 상기 모터 모듈(1270)의 모터가 0도에서 180도로 회전하는 내용의 프로그램 코드(1642)를 생성할 수 있다.
본 실시예에서, 상기 버튼 모듈(1650)과 상기 모터 모듈(1270)이 상호 연결됨으로써, 상기 메인 윈도우(1202) 내에는 상기 버튼 모듈(1260)에 대한 액션 리스트로서, 버튼 클릭에 대한 액션을 리스트로 디스플레이 할 수 있다. 사용자가 상기 버튼 클릭을 선택하게 되면, 상기 버튼 클래스 내에는 상기 버튼 모듈(1260)의 버튼 클릭 시 발생하게 될 이벤트에 대한 내용을 설정하기 위한 버튼 클릭 이벤트 핸들러가 생성될 수 있다. 그리고, 상기 버튼 클릭 이벤트 핸들러 내에는 상기 버튼 클릭 시 수행하여야 모듈 시스템의 작동에 대한 내용이 프로그램 될 수 있다. 예를 들어, 사용자가 상기 버튼 모듈(1260)의 버튼 클릭 시, 상기 모터 모듈(1270)의 모터가 0도에서 180도로 회전하도록 프로그래밍을 하려는 경우, 사용자는 상기 버튼 클래스 내에 생성된 버튼 클릭 이벤트 핸들러 부분에 상기 모터 모듈(1270) 에게 타깃 회전각도 값을 전송하는 내용의 프로그램을 작성할 수 있다. 한편, 상기 모터 모듈(1270)의 입장에서는, 상기 모터 모듈(1270)에 관한 클래스 내의 모터 이벤트 핸들러에는, 상기 모터 모듈(1270)이 상기 버튼 모듈(1260)로부터 타깃 회전각도에 대한 정보를 수신하는 이벤트가 발생하였을 때, 모터를 180도 회전시키는 것에 대한 프로그래밍을 작성할 수 있다.
다음으로, 상기 모듈 시스템 전체에 대한 프로그램 코드가 완성이 되면, 상기 코드 제너레이터는 상기 모듈 시스템 전체 프로그램 코드를 분석하여, 대상 모듈과 상기 대상 모듈에 대한 이벤트와의 관련성을 분석하여, 상기 전체 프로그램 코드를 분할하고 재조합 함으로써 도 17a에 도시된 바와 같은 상기 버튼 모듈(1260)에 대한 프로그램 코드(1720)와, 도 17b에 도시된 바와 같은 상기 모터 모듈(1270)에 대한 프로그램 코드(1760)를 생성할 수 있다.
도 17a을 참조하면, 상기 버튼 모듈(1260)에 대한 프로그램 코드(1720)는, 기본적으로 생성되는 모듈별 템플릿 코드(1722)와, 상기 코드 제너레이터에 의해 추가적으로 생성되는 추가 코드(1724)를 포함할 수 있다. 상기 추가 코드(1724)는 제1 이벤트가 발생시 전달할 메시지에 대한 정의 부분(1726)과, 상기 제1 이벤트가 발생하는 경우 전달할 메시지 부분(1728)을 포함할 수 있다. 도 17b를 참조하면, 상기 모터 모듈(1270)에 대한 프로그램 코드(1760)는, 기본적으로 생성되는 모듈별 템플릿 코드(1762)와, 상기 코드 제너레이터에 의해 추가적으로 생성되는 추가코드(1764)를 포함할 수 있다. 상기 추가 코드(1764)는 모터의 초기 위치에 대한 부분(1765)과, 자신의 ID 수신설정부분(1766)과, 상기 제1 이벤트와 관련된 메시지가 수신되는 조건부분(1768)과, 이 경우 상기 모터 모듈 수행해야하는 동작부분 (1769)을 포함할 수 있다.
본 발명의 일 실시예에 따른 멀티 모듈 컴파일 시스템 및 멀티 모듈 컴파일 방법에 따르면, 모듈 시스템 전체 프로그램 코드로부터 각 모듈별 실행코드를 빠르고 효과적으로 생성할 수 있다. 이에 따라, 복수의 모듈로 구성된 모듈 시스템에서 전체 프로그램 코드로부터 모듈별 코드를 생성하여 컴파일 함으로써 간편하고 효율적으로 각 모듈의 펌웨어를 업데이트 할 수 있다.
따라서, 동일한 모듈로 구성된 모듈 시스템을 다른 용도로 활용하려는 경우, 상기 모듈 시스템을 구성하는 각각의 모듈에 대한 펌웨어를 개별적으로 다시 개발할 필요없이, 전체 모듈 시스템에 대하여 프로그램을 수정하고 멀티 모듈 컴파일을 통하여 모듈별 실행코드를 생성함으로써, 전체적으로 한번에 업데이트를 수행할 수 있다.
또한, 모듈 시스템을 구성하는 모듈을 다양한 용도로 재사용 할 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 청구범위에 의하여 나타내어지며, 청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 외부 기기 110, 1200: 사용자 인터페이스부
120: 모듈 코드 생성기 130: 컴파일러
140, 1130: 모듈 통신단 200, 400, 900, 1140: 모듈 시스템
202: 네트워크 버스 210, 910, 1141: 마스터 모듈
230, 440, 920, 1143: 전원 모듈(배터리 모듈)
240, 950, 1144: 모터 모듈 250, 930, 1145: 버튼 모듈
260, 1146: 센서 모듈 270, 1147: 디스플레이 모듈
300: 데이터 프레임 310: 중재영역
320: 제어영역 330: 데이터 영역
420: 제2 모듈 시스템 422: 네트워크 버스
430, 940: 서브 통신 모듈 450: 카메라 모듈
970: 버스 및 전원 핀 980: 결합기구
981: 자석 982: 결합핀
990: 마이크로 컨트롤러 유닛(MCU) 1120: 멀티 모듈 컴파일 시스템
1122: 모듈 식별부 1123: 이벤트 분석부
1124: 모듈 코드 생성부 1125: 코드 데이터베이스부
1126: 컴파일러부 1142: 서브 통신 모듈
1148: 네트워크 버스 1202: 메인 윈도우
1204: 메뉴 윈도우 1210: 모듈 선택 윈도우

Claims (22)

  1. 서로 통신이 가능한 복수개의 모듈을 포함하는 모듈 시스템으로서,
    외부 기기와 통신이 가능한 마스터 모듈; 및
    상기 마스터 모듈과 데이터 통신이 가능하도록 네트워크로 연결되는 하나 이상의 서브 모듈을 포함하고,
    상기 마스터 모듈은, 상기 하나 이상의 서브 모듈 중에서 상기 서브 모듈의 운영과 관련된 데이터의 업데이트가 필요한 대상 서브 모듈에게 업데이트 데이터를 상기 네트워크를 통해서 송신하는 것인
    모듈 시스템.
  2. 제1항에 있어서,
    상기 업데이트 데이터는, 상기 대상 서브 모듈의 펌웨어 소프트웨어 및 운영체계 소프트웨어 및 구동을 위한 데이터 중 하나 이상인 것인
    모듈 시스템.
  3. 제1항에 있어서,
    상기 네트워크를 통해 송신되는 데이터의 목적지 주소와 일치하는 모듈만 데이터를 수신하는 것인
    모듈 시스템.
  4. 제1항에 있어서,
    상기 네트워크는 동종 및 이종 통신이 가능한 것인
    모듈 시스템.
  5. 제1항에 있어서,
    상기 네트워크는 CAN(Controller Area Network) 버스를 이용하는 것인
    모듈 시스템.
  6. 제1항에 있어서,
    상기 마스터 모듈은 상기 대상 서브 모듈에게 상기 업데이트 데이터를 1차로 송신한 후, 2차로 재송신 하고,
    상기 대상 서브 모듈은 상기 마스터 모듈로부터 상기 1차로 수신된 업데이트 데이터와 상기 2차로 수신된 업데이트 데이터를 비교하여, 상기 업데이트 데이터의 무결성을 검증하는 것인
    모듈 시스템.
  7. 제6항에 있어서,
    상기 마스터 모듈은, 상기 업데이트 데이터에 오류가 있는 경우에 상기 오류에 대응하는 상기 대상 서브 모듈에게 상기 업데이트 데이터를 재송신하는 것인
    모듈 시스템.
  8. 제1항에 있어서,
    상기 마스터 모듈은 상기 외부 기기로부터 상기 대상 서브 모듈을 위한 상기 업데이트 데이터를 수신하는 것인
    모듈 시스템.
  9. 제8항에 있어서,
    상기 마스터 모듈은, 상기 대상 서브 모듈 전부에 대한 상기 업데이트 데이터를 전부 수신한 후, 상기 대상 서브 모듈 각각에게 상기 대상 서브 모듈 각각에 대응하는 상기 업데이트 데이터를 송신하는 것인
    모듈 시스템.
  10. 제8항에 있어서,
    상기 마스터 모듈은, 상기 대상 서브 모듈에 대하여 하나씩 순차적으로, 각각의 상기 대상 서브 모듈에 대응하는 상기 업데이트 데이터를 수신하고 상기 대상 서브 모듈에게 송신하는 것인
    모듈 시스템.
  11. 제1항에 있어서,
    상기 마스터 모듈은 상기 외부 기기와 USB, IrDA, WiFi, UWB, 블루투스, Zigbee, CDMA, WCDMA, LTE, LTE-A 중 어느 하나의 방식으로 통신하는 것인
    모듈 시스템.
  12. 제1항에 있어서,
    상기 마스터 모듈은, 자신의 운영과 관련된 데이터의 업데이트도 가능한 것인
    모듈 시스템.
  13. 제1항에 있어서,
    상기 서브 모듈은 복수개가 마련되어, 제1 유선 네트워크로 연결된 제1 서브 시스템과, 제2 유선 네트워크로 연결된 제2 서브 시스템을 구성하고, 상기 제1 서브 시스템의 적어도 하나의 서브 모듈은, 상기 제2 서브 시스템의 적어도 하나의 서브 모듈과 무선통신으로 연결되는 것인
    모듈 시스템.
  14. 데이터 통신이 가능하도록 서로 네트워크로 연결된 복수개의 모듈을 포함하는 모듈 시스템의 업데이트 방법으로서,
    데이터 업데이트 대상 서브 모듈에 대응하는 업데이트 데이터를 외부 기기로부터 마스터 모듈이 수신하는 단계;
    상기 업데이트 데이터를 상기 마스터 모듈이 상기 대상 서브 모듈에게 송신하는 단계; 및
    수신된 상기 업데이트 데이터를 이용하여 상기 대상 서브 모듈이 업데이트 하는 단계를 포함하는 것인
    모듈 시스템의 업데이트 방법.
  15. 제14항에 있어서,
    상기 업데이트 데이터는, 상기 대상 서브 모듈의 펌웨어 소프트웨어 및 운영체계 소프트웨어 및 구동을 위한 데이터 중 하나 이상인 것인
    모듈 시스템의 업데이트 방법.
  16. 제14항에 있어서,
    상기 네트워크를 통해 송신되는 데이터의 목적지 주소와 일치하는 모듈만 데이터를 수신하는 것인
    모듈 시스템의 업데이트 방법.
  17. 제14항에 있어서,
    상기 마스터 모듈은, 업데이트를 수행하는 상기 대상 서브 모듈의 개수를 확인하고, 각각의 상기 대상 서브 모듈에 대응하는 상기 업데이트 데이터를 순차적으로 상기 대상 서브 모듈에게 송신하는 단계를 더 포함하는 것인
    모듈 시스템의 업데이트 방법.
  18. 제14항에 있어서,
    상기 대상 서브 모듈이, 상기 업데이트 데이터의 무결성을 검증하고 상기 업데이트 데이터의 오류가 있는 경우, 상기 마스터 모듈에게 상기 업데이트 데이터의 재송신을 요청하는 단계; 및
    상기 마스터 모듈이 상기 대상 서브 모듈로부터 상기 업데이트 데이터의 재송신을 요청 받으면, 상기 업데이트 데이터를 상기 대상 서브 모듈에게 재송신 하는 단계를 더 포함하는 것인
    모듈 시스템의 업데이트 방법.
  19. 제14항에 있어서,
    상기 마스터 모듈이 상기 대상 서브 모듈에게 모듈 업데이트에 대한 요청 메시지를 송신하고, 상기 대상 서브 모듈로부터 상기 모듈 업데이트에 대한 준비 완료 메시지를 수신하는 단계를 더 포함하는 것인
    모듈 시스템의 업데이트 방법.
  20. 서로 통신이 가능한 복수개의 모듈을 포함하는 모듈기반 로봇 시스템으로서,
    외부 기기와 통신이 가능한 마스터 모듈;
    상기 마스터 모듈과 데이터 통신이 가능하도록 네트워크로 연결되는 하나 이상의 서브 모듈; 및
    상기 마스터 모듈과 상기 서브 모듈에 전원을 공급하기 위하여 상기 마스터 모듈 및 상기 서브 모듈에 전기적으로 연결되는 전원 모듈을 포함하고,
    상기 마스터 모듈은, 상기 하나 이상의 서브 모듈 중에서 상기 서브 모듈의 운영과 관련된 데이터의 업데이트가 필요한 대상 서브 모듈에게 업데이트 데이터를 상기 네트워크를 통해서 송신하는 것인
    모듈기반 로봇 시스템.
  21. 제20항에 있어서,
    상기 업데이트 데이터는, 상기 대상 서브 모듈의 펌웨어 소프트웨어 및 운영체계 소프트웨어 및 구동을 위한 데이터 중 하나 이상인 것인
    모듈기반 로봇 시스템.
  22. 제20항에 있어서,
    상기 전원 모듈은 상기 마스터 모듈과 일체로 형성되는 것인
    모듈기반 로봇 시스템.


KR1020160027218A 2016-03-07 2016-03-07 모듈 시스템 및 모듈기반 로봇 시스템, 그리고 모듈 시스템의 업데이트 방법 KR20170104306A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020160027218A KR20170104306A (ko) 2016-03-07 2016-03-07 모듈 시스템 및 모듈기반 로봇 시스템, 그리고 모듈 시스템의 업데이트 방법
US15/146,189 US20170255458A1 (en) 2016-03-07 2016-05-04 Module system, module based robot system, and update method for module system
EP16199069.2A EP3217279A1 (en) 2016-03-07 2016-11-16 Module system, module-based robot system, and update method for module system
CN201611014458.8A CN107168143A (zh) 2016-03-07 2016-11-18 模块系统及其更新方法,并基于模块的机器人系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160027218A KR20170104306A (ko) 2016-03-07 2016-03-07 모듈 시스템 및 모듈기반 로봇 시스템, 그리고 모듈 시스템의 업데이트 방법

Publications (1)

Publication Number Publication Date
KR20170104306A true KR20170104306A (ko) 2017-09-15

Family

ID=57389207

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160027218A KR20170104306A (ko) 2016-03-07 2016-03-07 모듈 시스템 및 모듈기반 로봇 시스템, 그리고 모듈 시스템의 업데이트 방법

Country Status (4)

Country Link
US (1) US20170255458A1 (ko)
EP (1) EP3217279A1 (ko)
KR (1) KR20170104306A (ko)
CN (1) CN107168143A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019035692A2 (ko) 2017-08-17 2019-02-21 주식회사 엘지화학 리튬 금속 표면의 패터닝 방법 및 이를 이용한 리튬 이차전지용 전극
WO2019146812A1 (ko) * 2018-01-25 2019-08-01 엘지전자 주식회사 차량용 업데이트 시스템 및 제어 방법
WO2022211204A1 (ko) 2021-03-31 2022-10-06 주식회사 럭스로보 모듈 어셈블리 및 그의 멀티 마스터 통신방법
US11726942B2 (en) 2021-03-31 2023-08-15 Luxrobo Co., Ltd. Module assembly and multi-master communication method thereof

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7110715B2 (ja) * 2018-05-14 2022-08-02 オムロン株式会社 モータ制御装置および設定装置
CN109150926A (zh) * 2018-11-19 2019-01-04 炬星科技(深圳)有限公司 一种数据通信方法及人机交互系统
CN110347412B (zh) * 2019-06-27 2023-05-30 中国第一汽车股份有限公司 电子控制单元固件升级管理方法、装置、设备和存储介质
CN110825395B (zh) * 2019-10-23 2023-04-07 中冶赛迪信息技术(重庆)有限公司 多插件分层部署系统、设备及介质
CN110837388B (zh) * 2020-01-09 2020-05-29 炬星科技(深圳)有限公司 机器人的软件升级方法、升级服务器、机器人及存储介质
CN111459522B (zh) * 2020-04-01 2021-09-14 珠海格力电器股份有限公司 一种空调及其通讯模块升级方法
EP4006718B1 (en) * 2020-11-30 2024-05-01 Carrier Corporation Failsafe update of bootloader firmware

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5941714A (en) * 1997-09-23 1999-08-24 Massachusetts Institute Of Technology Digital communication, programmable functioning and data transfer using modular, hinged processor elements
US6839242B2 (en) * 2003-02-13 2005-01-04 Rincon Research Corporation Reconfigurable circuit modules
US8713551B2 (en) * 2006-01-03 2014-04-29 International Business Machines Corporation Apparatus, system, and method for non-interruptively updating firmware on a redundant hardware controller
CN101009565B (zh) * 2006-01-25 2012-05-09 恩斯迈电子(深圳)有限公司 机器人数据安全更新的系统及其方法
US8621446B2 (en) * 2010-04-29 2013-12-31 International Business Machines Corporation Compiling software for a hierarchical distributed processing system
CN102289981A (zh) * 2011-06-02 2011-12-21 朱鼎新 一种可编程学习型机器人
CN104039406B (zh) * 2011-10-31 2017-05-24 模块化机器人公司 模块式运动学构造套件
KR101357951B1 (ko) * 2012-03-02 2014-02-04 엘에스산전 주식회사 디지털 보호 계전기의 펌웨어 유지보수방법 또는 이를 수행하는 디지털 보호 계전기
KR101675444B1 (ko) * 2012-03-29 2016-11-11 한화테크윈 주식회사 펌웨어 업데이트 장치 및 펌웨어 업데이트 방법.
AU347408S (en) * 2012-08-24 2013-03-04 Littlebits Electronics Inc Connector for modular electronic building system
CN103297275B (zh) * 2013-06-08 2016-08-17 烽火通信科技股份有限公司 Web网管客户端模块动态发现与加载方法
CN203705858U (zh) * 2013-11-26 2014-07-09 深圳市诺为汽车电子有限公司 一种基于汽车原车屏升级解码器的主板控制系统
KR101520785B1 (ko) * 2013-12-26 2015-05-15 금오공과대학교 산학협력단 모듈형 로봇 키트
KR20160149631A (ko) * 2015-06-18 2016-12-28 삼성전자주식회사 전자 장치 및 전자 장치의 동작 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019035692A2 (ko) 2017-08-17 2019-02-21 주식회사 엘지화학 리튬 금속 표면의 패터닝 방법 및 이를 이용한 리튬 이차전지용 전극
WO2019146812A1 (ko) * 2018-01-25 2019-08-01 엘지전자 주식회사 차량용 업데이트 시스템 및 제어 방법
WO2022211204A1 (ko) 2021-03-31 2022-10-06 주식회사 럭스로보 모듈 어셈블리 및 그의 멀티 마스터 통신방법
KR20220135775A (ko) 2021-03-31 2022-10-07 주식회사 럭스로보 모듈 어셈블리 및 그의 멀티 마스터 통신방법
US11726942B2 (en) 2021-03-31 2023-08-15 Luxrobo Co., Ltd. Module assembly and multi-master communication method thereof

Also Published As

Publication number Publication date
CN107168143A (zh) 2017-09-15
EP3217279A1 (en) 2017-09-13
US20170255458A1 (en) 2017-09-07

Similar Documents

Publication Publication Date Title
KR101906823B1 (ko) 멀티 모듈 컴파일 시스템 및 멀티 모듈 컴파일 방법, 그리고 컴파일러 프로그램을 갖는 컴퓨터 판독가능 저장매체
KR20170104306A (ko) 모듈 시스템 및 모듈기반 로봇 시스템, 그리고 모듈 시스템의 업데이트 방법
CN100449488C (zh) 真实及理想化硬件基装置的双模态装置虚拟化系统和方法
CN105477854B (zh) 应用于智能终端的手柄控制方法、装置及系统
CN107491329A (zh) Docker镜像构建方法、设备、存储介质以及电子装置
CN104756082A (zh) 用于数据库应用的智能错误恢复
KR20110076432A (ko) Can 통신을 이용한 다중 프로그램 업데이트 시스템 및 방법
CN102222017A (zh) 通过不可见接口实现不符合abi特征的方法和系统
CN108293199A (zh) 提供事件管理服务的电子装置和方法
CN114237676A (zh) 一种fpga逻辑更新方法、装置、设备及可读存储介质
CN113760332A (zh) 软件升级方法和电子设备
CN109074336A (zh) 用于对微控制器内的数据传输进行编程的系统和方法
KR20130079046A (ko) Hmi 시뮬레이터 및 plc 시뮬레이터간의 통신 시뮬레이션 시스템
CN103839398A (zh) 遥控器的键值信息处理方法及控制设备、遥控器
CN109696832B (zh) 用于支持自动化系统的安装过程的方法
CN110214042A (zh) 模块化电子系统
CN110457058A (zh) 控制节点在线升级方法、装置、上位机、系统及电子设备
US20200065236A1 (en) Testing devices and methods for testing a device driver software
CN111708568B (zh) 一种组件化开发解耦方法及终端
CN110971708B (zh) 安卓与Ubuntu系统信息传输方法及系统、设备、介质
CN110554966B (zh) 一种驱动调试方法、行为分析方法及驱动调试系统
Qian et al. ChDuino: A real-time controller for Arduino
CN103699424A (zh) 一种模拟仿真mtk软件的方法
CN110404253A (zh) 接口数据获取方法及装置、电子设备、存储介质
KR101127469B1 (ko) 네트워크 기반 로봇의 소프트웨어 개발 시스템 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application