KR101562380B1 - 복수의 장치를 포함하는 네트워킹된 제어 시스템을 위한 컴파일러 및 컴파일링 방법 - Google Patents

복수의 장치를 포함하는 네트워킹된 제어 시스템을 위한 컴파일러 및 컴파일링 방법 Download PDF

Info

Publication number
KR101562380B1
KR101562380B1 KR1020097026706A KR20097026706A KR101562380B1 KR 101562380 B1 KR101562380 B1 KR 101562380B1 KR 1020097026706 A KR1020097026706 A KR 1020097026706A KR 20097026706 A KR20097026706 A KR 20097026706A KR 101562380 B1 KR101562380 B1 KR 101562380B1
Authority
KR
South Korea
Prior art keywords
devices
executable
executable code
control logic
assigning
Prior art date
Application number
KR1020097026706A
Other languages
English (en)
Other versions
KR20100032384A (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 코닌클리케 필립스 엔.브이.
Publication of KR20100032384A publication Critical patent/KR20100032384A/ko
Application granted granted Critical
Publication of KR101562380B1 publication Critical patent/KR101562380B1/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 발명은 네트워킹된 제어 시스템의 복수의 장치에 대한 제어 논리를 컴파일링하기 위한 컴파일러 및 방법에 관한 것으로서, 특히 장치들에 대한 제어 논리의 자동화된 할당에 관한 것이다. 본 발명은 컴파일링과 더불어, 네트워킹된 제어 시스템의 장치들에 대한 실행 가능 실행시간 코드의 자동 할당 절차를 제공한다. 장치들에 대한 제어 논리의 할당 프로세스는 다양한 최적화 기준들을 고려할 수 있는데, 이러한 다양한 최적화 기준들은 다양한 분배 양태들, 예를 들어 네트워크 링크들의 이용 가능 대역폭 또는 신뢰성과 같은 네트워크 자원들 또는 능력들, 및 장치 자원들 또는 능력들, 예컨대 CPU, 메모리, 전원, 또는 예컨대 전송 지연 또는 데이터 패킷 손실로 인해 장치들의 관측되는 거동에 영향을 미칠 수 있는 슬립핑(sleeping) 거동을 포함한다.
Figure R1020097026706
네크워킹된 제어 시스템, 컴파일러, 제어 논리, 자동 할당, 실행 가능 코드

Description

복수의 장치를 포함하는 네트워킹된 제어 시스템을 위한 컴파일러 및 컴파일링 방법{COMPILER AND COMPILING METHOD FOR A NETWORKED CONTROL SYSTEM COMPRISING A PLURALITY OF DEVICES}
본 발명은 네트워킹된 제어 시스템의 복수의 장치에 대한 제어 논리를 컴파일링하기 위한 컴파일러 및 방법에 관한 것으로서, 특히 장치들에 대한 제어 논리의 자동화된 할당에 관한 것이다.
장치들의 네트워킹은 상업, 산업 및 기관 사업 시장들에서, 또한 소비자 시장들에서의 유비쿼터스 트렌드이다. 네트워킹된 제어 시스템들의 예는 예를 들어 조명, 난방 및 환기 또는 안전을 위한 빌딩 자동화 시스템들이다. 네트워킹된 제어 시스템은 광 안정기(light ballast), 스위치, 일광 또는 실내 센서(occupancy sensor), 원격 제어기, 액추에이터, 밸브, 서모스탯 또는 미터와 같은 장치들로 구성될 수 있다. 장치들은 바람직하게는 무선으로, 즉 RF(radio frequency) 기술을 통해 접속된다. 제어 네트워크는 다수의 장치를 포함할 수 있다. 이러한 장치들은 작은 공간을 차지할 수 있으며, 접근 불가능한 장소들에 설치되고(예를 들어, 천장에 숨겨진 광 안정기), 자원에 의해 제한될 수 있으며, 이러한 장치들 상에서 잠재적으로 매우 복잡한 애플리케이션 논리가 실행될 수 있다. 이러한 조건들은 네트워크 관리를 제어하기 위하여 새로운 접근법들을 필요로 한다.
본 발명의 목적은 복수의 장치를 포함하는 네트워킹된 제어 시스템을 위한 개량된 컴파일러 및 컴파일링 방법을 제공하는 것이다.
이러한 목적은 독립 청구항(들)에 의해 해결된다. 추가 실시예들은 종속 청구항(들)에 의해 설명된다.
본 발명은 컴파일링과 더불어, 네트워킹된 제어 시스템의 장치들에 대한 실행 가능 실행시간 코드의 자동 할당 절차를 제공한다. 장치들에 대한 제어 논리의 할당 프로세스는 다양한 최적화 기준들을 고려할 수 있는데, 이러한 다양한 최적화 기준들은 다양한 분배 양태들, 예를 들어 네트워크 링크들의 이용 가능 대역폭 또는 신뢰성과 같은 네트워크 자원들 또는 능력들, 및 장치 자원들 또는 능력들, 예컨대 CPU, 메모리, 전원, 또는 예컨대 전송 지연 또는 데이터 패킷 손실로 인해 장치들의 관측되는 거동에 영향을 미칠 수 있는 슬립핑(sleeping) 거동을 포함한다.
본 명세서에서 사용되는 몇 가지 중요한 용어들이 아래에 설명된다.
"네트워킹된 제어 시스템"이라는 용어는 특히, 복수의 접속된 장치들 또는 심지어 노드들을 포함하는 시스템을 의미한다. 장치들은 통신 시스템, 예를 들어 무선 통신 시스템에 의해 접속될 수 있다. 네트워킹된 제어 시스템은 실내 및 일광 센서들, 및 예를 들어 주중 및 주말, 근무 및 근무외 시간에 대한 사전 정의된 규칙들을 갖는 복잡한 조명 제어 시스템일 수 있다. 또한, 네트워킹된 제어 시스템은 빌딩 자동화 시스템, 홈 제어 시스템, 분위기 조명 시스템, 또는 산업, 소매, 기관 및 주거를 포함하는 임의의 다른 제어 및 자동화 환경일 수 있다.
본 명세서에서, "장치"라는 용어는 네트워킹된 제어 시스템의 임의의 장치 또는 노드를 의미할 수 있다. 장치들은 광 안정기, 스위치, (일)광 또는 실내 센서, 원격 제어기, 액추에이터, 서모스탯, 밸브, 미터 및/또는 (네트워크) 라우터, 브리지, 게이트웨이, 수집기(aggregator) 및 콘솔과 같은 추가적인 장치들을 포함할 수 있다. 장치는 네트워킹된 제어 시스템에 제어 파라미터들 또는 기능들을 제공할 수 있다. 통상적으로, 장치는 대응 장치의 하드웨어 또는 소프트웨어 상태들의 속성들을 표현하고 장치 상태 및 국지적인 장치 기능들을 정의할 수 있는 장치 논리를 포함한다. 장치 논리는 장치의 하드웨어 및 소프트웨어 상태의 속성들을 표현하는 장치 "상태 변수들"에 의해 표현될 수 있다. 상태 변수는 그가 실행 가능 코드에 의해 판독되거나 변경되는 경우에 실행 가능 코드에 "관련된" 것으로 간주할 수 있다. 실행 가능 코드에 의해 판독되는 상태 변수는 입력 상태 변수이다. 실행 가능 코드에 의해 변경되는 상태 변수는 출력 상태 변수이다. 마스터 장치가 상태 변수에 할당될 수 있는데, 이것은, 실행 시간 동안에 마스터 장치가 상태 변수의 인스턴스(instance)를 유지하고, 이러한 인스턴스의 값이 상태 변수에 대한 "마스터" 값으로서 처리될 것임을 의미한다. 장치는 그가 실행 가능 코드에 "관련된" 적어도 하나의 상태 변수의 마스터인 경우에 실행 가능 코드에 "관련된" 것으로 간주될 수 있다.
"제어 논리"라는 용어는 하나 또는 복수의 장치의 실행시간 거동을 기술하는 장치 독립적 프로그램을 정의할 수 있다. 제어 논리는 기본적으로, 프로그래밍 언어로 작성된 상태 변수들에 대한 연산들로 구성될 수 있다.
"실행 가능 코드" 또는 실행기라는 용어는 대응 제어 논리의 번역인 장치 고유 소프트웨어 프로그램을 정의할 수 있다. 실행시간 환경이 실행 가능 코드를 실행하도록 구성될 수 있다. 실행 가능 코드의 실행은 네트워킹된 제어 시스템의 적어도 하나의 장치의 실행시간 거동의 제어를 가능하게 할 수 있다.
본 발명의 일 실시예에 따르면, 복수의 장치를 포함하는 네트워킹된 제어 시스템용의 컴파일러가 제공되는데, 이 컴파일러는
- 제어 논리를 복수의 기능적 제어 논리 프로그램으로 분할하기 위한 수단;
- 상기 복수의 기능적 제어 논리 프로그램을 복수의 실행 가능 코드로 번역하기 위한 수단; 및
- 배치 규칙에 따라 상기 복수의 실행 가능 코드를 상기 복수의 장치 중 지정된 장치들에 할당하기 위한 수단
을 포함한다.
상기 분할하기 위한 수단은 상기 배치 규칙에 의존하는 분할 규칙에 따라 상기 제어 논리를 분할하도록 구성될 수 있다. 이는 실행 가능 코드들 및 그에 대응하는 제어 논리 프로그램들의 최적 할당을 가능하게 한다.
상기 지정된 장치는 상기 복수의 실행 가능 코드 중 하나와 관련된 장치일 수 있다. 이는 상기 실행 가능 코드들에 의해 제공되는 필요한 기능을 상기 기능을 필요로 하는 장치들에 가까이 배치하는 것을 가능하게 한다.
상기 할당하기 위한 수단은 상기 적어도 하나의 실행 가능 코드와 관련된 상태 변수의 마스터 인스턴스를 호스트하는 지정된 장치에 상기 복수의 실행 가능 코 드 중 적어도 하나를 할당하도록 구성될 수 있다. 특히, 상기 상태 변수는 상기 실행 가능 코드의 출력 상태 변수일 수 있다.
상기 할당하기 위한 수단은 상기 할당되는 실행 가능 코드들을 실행하기 위한 충분한 자원들을 포함하는 지정된 장치들에 상기 실행 가능 코드들을 할당하도록 구성될 수 있다. 이것은 상기 실행 가능 코드가 자원이 제한된 장치들에 할당되는 것을 방지하는 것을 가능하게 한다.
또한, 상기 할당하기 위한 수단은 제한된 자원들을 포함하는 장치와 충분한 자원들을 포함하는 장치를 구별하기 위한 수단을 포함할 수 있으며, 상기 할당하기 위한 수단은 충분한 자원들을 포함하는 장치가 이용 가능하지 않은 경우에만 제한된 자원들을 포함하는 장치에 실행 가능 코드를 할당하도록 구성될 수 있다. 따라서, 실행 가능 코드는 바람직하게도 제한된 능력들 또는 자원들을 갖는 장치들에는 제공되지 않는다.
또한, 상기 할당하기 위한 수단은 제한된 자원들을 포함하는 장치와 충분한 자원들을 포함하는 장치를 구별하기 위한 수단을 포함할 수 있고, 상기 할당하기 위한 수단은 (예를 들어, 다른 실행 가능 코드에 의한 물리적 자원 제한 또는 자원 고갈로 인해) 관련된 제한된 자원의 장치에서 충분한 자원들이 이용 가능하지 않은 경우에만 관련없는 장치에 실행 가능 코드를 할당하도록 구성될 수 있다. 부모-자식 관계를 이용하는 802.15.4/ZigBee 또는 유사한 기술에 기초하는 네트워킹된 제어 시스템들 및/또는 ZigBee 단말 장치들과 유사한 제한된 자원의 장치들에 대한 일 실시예에서, 충분한 자원들을 포함하는 장치는 자원 제한 자식 장치의 부모 장 치일 수 있다. 다른 실시예에 따르면, 충분한 자원들을 포함하는 장치는 관련 장치들 사이의 통신 라우트 상의 라우터일 수 있다.
일 실시예에 따르면, 상기 할당하기 위한 수단은 제한된 자원들을 포함하는 장치에서의 통신 비용을 최소화하기 위하여 상기 지정된 장치들에 상기 복수의 실행 가능 코드를 할당하도록 구성될 수 있다. 이것은 제한된 자원의 장치들의 제한된 자원들을 절약하는 것을 가능하게 한다.
또한, 상기 할당하기 위한 수단은 상기 복수의 장치 모두에 대한 통신 비용을 최소화하기 위하여 상기 지정된 장치들에 상기 복수의 실행 가능 코드를 할당하도록 구성될 수 있다. 이것은 네트워킹된 제어 시스템의 에너지 소비를 줄이는 것을 가능하게 한다.
또한, 상기 할당하기 위한 수단은 다수의 배치 규칙에 따라 상기 지정된 장치들에 상기 복수의 실행 가능 코드를 할당하도록 구성될 수 있으며, 따라서 하나의 배치 규칙을 사용할 경우에 상기 지정된 장치들 상에 충분한 자원들이 존재하지 않으면, 적어도 하나의 실행 가능 코드에 대해 다른 배치 규칙이 사용된다.
상기 컴파일러는 부모-자식 관계를 이용하는 802.15.4/ZigBee 또는 유사한 기술에 기초하는 네트워킹된 제어 시스템에 적응될 수 있으며, 상기 복수의 장치는 적어도 하나의 자식 장치, 및 상기 자식 장치와 연관되는 적어도 하나의 부모 장치를 포함하고, 상기 할당하기 위한 수단은 상기 복수의 실행 가능 코드 중 적어도 하나가 실행될 때 상기 자식 장치가 관련되는 경우에 상기 부모 장치에 상기 복수의 실행 가능 코드 중 적어도 하나를 할당하도록 구성된다.
상기 네트워킹된 제어 시스템은 적어도 하나의 라우터를 포함할 수 있으며, 상기 할당하기 위한 수단은 상기 라우터가 상기 복수의 실행 가능 코드 중 적어도 하나가 실행될 때 관련되는 적어도 하나의 장치에 접속되는 경우에 상기 라우터에 상기 복수의 실행 가능 코드 중 적어도 하나를 할당하도록 구성될 수 있다.
본 발명의 추가 실시예에 따르면, 복수의 장치를 포함하는 네크워킹된 제어 시스템용의 컴파일러가 제공되는데, 이 컴파일러는
- 제어 논리를 실행 가능 코드 프로그램으로 번역하기 위한 수단;
- 상기 실행 가능 코드 프로그램을 복수의 실행 가능 코드로 분할하기 위한 수단; 및
- 배치 규칙에 따라 상기 복수의 실행 가능 코드를 상기 복수의 장치 중 지정된 장치들에 할당하기 위한 수단
을 포함한다.
본 발명의 추가 실시예에 따르면, 네크워킹된 제어 시스템이 제공되는데, 이 시스템은
- 복수의 장치; 및
- 본 발명의 일 실시예에 따른 컴파일러
를 포함한다.
본 발명의 추가 실시예에 따르면, 복수의 장치를 포함하는 네트워킹된 제어 시스템용의 컴파일링 방법이 제공되는데, 이 방법은
- 사용자 지정 제어 논리를 복수의 기능적 제어 논리 프로그램으로 분할하는 단계;
- 상기 복수의 기능적 제어 논리 프로그램을 복수의 실행 가능 코드로 번역하는 단계; 및
- 배치 규칙에 따라 상기 복수의 실행 가능 코드를 상기 복수의 장치 중 지정된 장치들에 할당하는 단계
를 포함한다.
상기 분할, 번역 및 할당 단계들은 반복적으로 수행될 수 있다. 이것은 컴파일링 프로세스의 최적화를 가능하게 한다.
일 실시예에 따르면, 상기 반복적으로 수행되는 단계들은 상기 사용자 지정 제어 논리의 컴파일링 프로세스 동안에, 상기 실행 가능 코드들의 설치 프로세스 동안에 그리고/또는 상기 실행 가능 코드들의 실행 동안에 수행될 수 있다. 이것은 컴파일링, 설치 또는 실행 동안에 수집된 정보를 컴파일링 프로세스에 포함시키는 것을 가능하게 한다.
본 발명의 추가 실시예에 따르면, 복수의 장치를 포함하는 네크워킹된 제어 시스템용의 컴파일링 방법이 제공되는데, 이 방법은
- 제어 논리를 실행 가능 코드 프로그램으로 번역하는 단계;
- 상기 실행 가능 코드 프로그램을 복수의 실행 가능 코드로 분할하는 단계; 및
- 배치 규칙에 따라 상기 복수의 실행 가능 코드를 상기 복수의 장치 중 지정된 장치들에 할당하는 단계
를 포함한다.
본 발명의 일 실시예에 따르면, 컴퓨터에 의해 실행될 때, 본 발명에 따른 상기 방법들을 수행하도록 인에이블되는 컴퓨터 프로그램이 제공될 수 있다. 이것은 컴파일러 프로그램에서 본 발명의 접근법을 실현하는 것을 가능하게 한다.
본 발명의 추가 실시예에 따르면, 본 발명에 따른 컴퓨터 프로그램을 저장하는 기록 캐리어, 예를 들어 CD-ROM, DVD, 메모리 카드, 디스켓, 또는 전자적 액세스를 위해 컴퓨터 프로그램을 저장하는 데 적합한 유사한 데이터 캐리어가 제공될 수 있다.
본 발명의 이들 및 다른 양태들은 아래에 기술되는 실시예(들)로부터 명확할 것이며, 그들과 관련하여 설명될 것이다.
본 발명은 실시예들을 참조하여 아래에 더 상세히 설명될 것이다. 그러나, 본 발명은 이러한 실시예들로 한정되지 않는다.
도 1은 본 발명에 따른 네크워킹된 제어 시스템의 컴파일러를 나타내는 도면.
도 2는 본 발명에 따른 예시적인 네트워킹된 제어 조명 시스템을 나타내는 도면.
아래에서, 기능적으로 유사하거나 동일한 요소들은 동일한 참조 번호들을 가질 수 있다.
도 1은 컴파일러(100) 및 복수의 장치(102, 104, 106, 108, 112)를 포함하는 네크워킹된 제어 시스템을 나타낸다. 장치(102)는 부모 장치이고, 장치(108)는 부모 장치(102)에 접속된 자식 장치이다. 장치(112)는 라우터이다. 장치들(104, 106)은 라우터(112)에 의해 접속된다. 장치(102)는 장치(104)에 접속된다. 장치들(102, 104, 106, 108, 122) 및 컴파일러는 무선 통신 링크와 같은 통신 시스템에 의해 접속된다.
컴파일러(100)는 컴파일러 프로그램에 의해 기술되는 컴파일링 방법을 수행하도록 구성되는 컴파일링 장치이다. 컴파일러(100)는 제어 논리를 수신하고 실행 가능 코드를 출력하도록 구성된다. 제어 논리는 사용자 지정 제어 논리이다. 실행 가능 코드는 컴파일러에 의해 제어 논리로부터 생성된다. 컴파일러는 생성된 실행 가능 코드를 복수의 장치(102, 104, 106, 108, 112) 중 적어도 하나의 지정된 장치에 할당하도록 더 구성된다. 컴파일러(100)는 분할 수단(122), 번역 수단(124) 및 할당 수단(126)을 포함한다.
분할 수단(122)은 제어 논리를 수신하고, 제어 논리를 복수의 기능적 제어 논리 프로그램으로 분할하도록 구성된다. 예를 들어, 분할 수단은 제어 논리를 둘 이상의 기능적 제어 논리 프로그램으로 분할한다. 분할 수단(122)은 기능적 제어 논리 프로그램들을 번역 수단(124)에 제공하도록 더 구성된다.
번역 수단(124)은 기능적 제어 논리 프로그램들을 수신하고, 각각의 수신된 기능적 제어 논리 프로그램을 대응하는 실행 가능 코드로 번역하도록 구성된다. 번역 수단(124)은 생성된 실행 가능 코드들을 할당 수단(126)에 제공하도록 더 구성된다.
할당 수단(126)은 실행 가능 코드들을 수신하고, 각각의 실행 가능 코드를 복수의 장치(102, 104, 106, 108, 112) 중 적어도 하나에 할당하도록 구성된다. 할당 수단(126)은 배치 규칙에 따라 실행 가능 코드를 할당할 지정된 장치를 선택하도록 구성된다. 배치 규칙은 복수의 장치(102, 104, 106, 108, 112) 중 어느 장치가 실행 가능 코드들의 모든 코드 또는 특정 코드에 대해 지정된 장치인지를 정의한다. 배치 규칙은 하나 또는 복수의 최적화 기준에 따를 수 있다. 이를 위해, 컴파일러는 시스템, 애플리케이션들 및/또는 특정 장치들에 관한 상세한 정보에 액세스할 수 있다.
분할 수단(122)은 분할 규칙에 따라 제어 논리를 분할하도록 구성된다. 분할 규칙은 배치 규칙에 의존한다. 이것은 할당 수단(126)에 의해 대응하는 실행 가능 코드 또는 실행 가능 코드들을 할당할 지정 장치 또는 복수의 지정 장치에 의존하여 특정 제어 논리를 분할하는 것을 가능하게 한다. 지정 장치가 예를 들어 충분한 자원들을 포함하는 경우, 분할 수단(122)은 수신된 제어 논리를 전혀 분할하지 않고, 수신된 제어 논리로부터 단일의 기능적 제어 논리 프로그램을 생성할 수 있다.
일 실시예에서, 할당 수단(126)은 실행 가능 코드에 관련된 지정 장치에 실행 가능 코드를 할당하도록 구성된다. 예를 들어, 장치들(104, 106)은 특정 실행 가능 코드에 관련되는데, 이는 장치(104)가 입력 상태 변수(들)의 마스터이고, 장치(106)가 출력 상태 변수(들)의 마스터이기 때문이다. 따라서, 할당 수단(126)은 배치 규칙에 따르기 위하여 특정 실행 가능 코드를 장치(104) 또는 장치(106)에 할당한다.
할당 수단(126)은 또한, 할당되는 실행 가능 코드를 실행하기에 충분한 자원들을 포함하는 지정 장치에 실행 가능 코드를 할당하도록 구성될 수 있다. 할당 수단(126)은 제한된 자원들을 포함하는 장치와 충분한 자원들을 포함하는 장치를 구별하기 위한 수단(도 1에 도시되지 않음)을 포함할 수 있다. 예를 들어, 부모-자식 관계를 이용하는 802.15.4/ZigBee 또는 유사한 기술에 기초하여 네트워킹된 제어 시스템에서, 부모 장치(102)는 충분한 자원들을 포함할 수 있다. 이와 달리, 자식 장치(108)는 제한된 자원들 또는 능력들을 포함하는 장치일 수 있다. 할당 수단(126)은 바람직하게도 실행 가능 코드를 자식 장치(108)가 아니라 부모 장치(102)에 할당할 수 있다. 할당 수단(126)은 특히, 자식 장치(108)가 실행 가능 코드 출력 상태 변수의 마스터 인스턴스를 호스트하는 경우에 실행 가능 코드를 부모 장치(102)에 할당할 수 있다.
추가 실시예에 따르면, 할당 수단(126)은 실행 가능 코드를 라우터(112)에 할당하도록 구성될 수 있다. 특히, 할당 수단(126)은 라우터(122)에 접속되는 장치들(104, 106) 중 적어도 하나가 대응 실행 가능 코드에 관련되는 경우에 실행 가능 코드를 라우터(112)에 할당할 수 있다.
추가 실시예에 따르면, 할당 수단(126)은 특정 장치의 통신 비용을 최소화하도록 실행 가능 코드를 할당하도록 구성될 수 있다. 특히, 제한된 자원들을 포함하는 장치의 통신 비용을 최소화하는 것이 유리할 수 있다. 또한, 할당 수단(126)은 모든 장치(102, 104, 106, 108, 112)의 통신 비용을 최소화하도록 실행 가능 코드들을 할당하도록 구성될 수 있다.
추가 실시예에 따르면, 규칙들의 (배열된) 조합이 할당 수단(126)에 의해 사용될 수 있다.
도 1에 도시된 네크워킹된 제어 시스템은 단지 예시적으로 선택된 것이다. 네트워킹된 제어 시스템은 그가 의도하는 동작 분야의 요구들에 따르는 데 필요한 임의의 구성을 포함할 수 있다.
추가 실시예에 따르면, 번역 수단(124) 및 분할 수단(122)의 위치는 컴파일러(100) 내에서 교환될 수 있다. 따라서, 번역 수단은 수신된 제어 논리를 실행 가능 코드 프로그램으로 번역할 수 있다. 이어서, 분할 수단은 실행 가능 코드 프로그램을 복수의 실행 가능 코드로 분할할 수 있고, 할당 수단은 배치 규칙에 따라 복수의 실행 가능 코드를 복수의 장치 중 지정된 장치들에 할당할 수 있다.
또 다른 실시예에 따르면, 번역, 분할 및 할당 단계들은 반복적으로 수행될 수 있다.
본 발명에 따른 네트워킹된 제어 시스템은 네크워킹된 제어 시스템들에 대한 간단하고, 간결하고, 유연성 있는 제어 논리 설계를 가능하게 하는 시스템에 기초할 수 있다. 이것은 간단하고, 애플리케이션 코드 자체에 투명한 제어 관련 데이터의 전송으로 인해 가능할 수 있다. 제어 논리는 통신 관련 양태들을 고려할 필요 없이, 목적으로 하는 네트워킹된 제어 시스템 내의 모든 또는 선택된 장치들의 집합에 대해 사용자에 의해 지정될 수 있다. 이어서, 논리 컴파일링의 일부로서, 목표로 하는 네트워킹된 제어 시스템을 장치 및/또는 네트워크 능력들 또는 자원들과 관련하여 최적화하는 컴퓨터 제어 또는 자동화된 프로세스에 의해 실행 가능 실행시간 코드가 장치들에 할당될 수 있다. 이어서, 분배 양태들을 커버하는 지원 논리가 자동으로 추가될 수 있다.
즉, 본 발명에 따른 네트워킹된 제어 시스템은 분배 양태들과 무관한 제어 애플리케이션들의 개발 및 확보를 가능하게 하는 시스템을 포함할 수 있으며, 따라서 사용자가 볼 때, 제어 논리 및 논리 설계 프로세스의 복잡성을 줄일 수 있다. 또한, 장치들에 대한 제어 논리의 자유로운 할당이 가능하게 되며, 이는 애플리케이션 개발 후에 컴퓨터 제어 또는 자동화된 시스템의 최적화를 가능하게 한다. 그러한 시스템은 비전문적 사용자들이 제어 논리를 쉽고 최적의 방식으로 정의하고 셋업하는 것을 가능하게 할 수도 있다.
제어 논리를 설계하고 시스템을 셋업하는 프로세스는 다음 단계들에서 수행될 수 있다.
사용자 또는 설계자에 의한 논리 설계는, 관련된 실행시간 코드를 실행시간 시스템에서 실행할 장치를 지정하지 않고, 목표 시스템 내의 모든 장치 논리의 집합에 대한 제어 논리의 개발을 포함할 수 있다("설계 보기(design view)"). 논리 설계는 그래픽 도구들을 이용하여 수행될 수 있다.
자동으로 수행될 수 있는 컴파일링은, 실행 가능 코드들을 동작 중에 실행해야 하는 장치들에 대한 실행 가능 코드들의 할당을 포함하여, 제어 논리 프로그램들의 실행시간 시스템에 대한 실행 가능 (제어 논리) 코드(실행기라고 함), 예를 들어 바이트 코드로의 변환을 포함할 수 있다. 컴파일링은 실행 가능 코드들을 실행하는 데 필요한 정보의 통신을 구현하는 지원 논리의 인스턴스화를 더 포함할 수 있다.
시스템 셋업은, 네트워크 및 애플리케이션 구성의 통상적인 단계들 외에, 실행 가능 코드들의 할당된 장치들로의 업로드도 포함할 수 있다.
시스템 유지는, 새로운 제어 논리를 이용하여 상기 단계들을 간단히 반복하고, 시스템 내의 기존 제어 논리를 변경할 필요 없이, 그에 따라 새로운 제어 논리를 다운로드함으로써, 시동 후에 목표 시스템에 새로운 제어 논리를 쉽게 추가하는 것을 포함할 수 있다.
설명의 목적으로, 네크워킹된 제어 조명 시스템에 대한 2개의 예시적인 스크립트가 도 2에 도시된 예시적인 시스템에 대해 아래에 설명된다.
예들은 기술적인 사용자 판독 가능 언어로 표현된다. 사용자 판독 가능 언어는 단지 더 나은 이해를 위해 선택되며, 결코 논리 설계 스크립팅 언어의 신택스를 지시하지는 않는다.
예 1: "방(200) 안의 실내 센서(208)가 램프들(202, 204)을 턴 온/오프하며, 스위치(206)가 디밍(dimming) 레벨을 정의한다".
스위치(206), 센서(208) 및 램프들(202, 204)은 도 1에 도시된 바와 같은 장치들일 수 있다.
의도된 장치 거동은 장치 논리 위치와 무관하다. 예를 들어, 네트워킹된 제어 조명 시스템에서, "방(200) 안의 실내 센서(208)가 램프들(202, 204)을 턴 온/오프하며, 스위치(206)가 디밍(dimming) 레벨을 정의한다"라는 스크립트가 실행 시간에 실행될 하나의 실행 가능 코드 또는 다수의 파생적인 실행 가능 코드로서 할당될 수 있다. 예를 들어, 실행 가능 코드 또는 실행 가능 코드들은, 제어되는 장치들의 의도된 거동을 변경하지 않고, 스위치(206) 상에, 실내 센서(208) 상에, 램프들(202, 204) 중 어느 하나 상에, 방(200) 안 또는 밖의 임의의 다른 장치, 예를 들어 중앙 장치 상에, 또는 이들의 임의 선택 세트 상에 배치될 수 있다.
분배 양태들을 고려하지 않고, 전체 시스템 상에서 지정된 설계된 제어 논리(사용자의 스크립트)에 대해, 컴파일링은 논리 분할, 장치들로의 특정 부분들의 논리 할당 및 논리 컴파일링, 즉 실행시간 코드로의 번역의 단계들을 포함한다.
컴파일러는 스크립트 단위로 작업할 수 있다.
스크립트의 분할은 논리 분할의 단계에서 제어 논리 프로그램들이라고 하는, 특정 규칙, 거동 또는 위치와 관련된, 논리의 일관된 부분들을 분리하는 목표를 가질 수 있다.
제어 논리 프로그램의 분리가 필요한지의 여부는 규칙들, 예를 들어 장치 상에서 이용 가능한 메모리 단위 크기, 예를 들어 64B 페이지에 의해 정의될 수 있다. 예를 들어, 원하는 기능 또는 관련된 장치들에 따라, 논리의 분할을 위한 다양한 기준들이 존재할 수 있다. 예를 들어, 예 1의 예시적인 스크립트는 아래의 방법들 중 하나에서 2개의 개별적으로 할당 가능한 스크립트들로 더 분할될 수 있다.
예 1.1: "방(200) 안의 실내 센서(208)가 램프들(202, 204)을 턴 온/오프한다" 및 "스위치(206)가 램프들(202, 204)의 디밍 레벨을 정의한다".
예 1.2: "방(200) 안의 실내 센서(208)가 램프(202)를 턴 온/오프하고, 스위치(206)가 디밍 레벨을 정의한다" 및 "방(200) 안의 실내 센서(208)가 램프(204)를 턴 온/오프하고, 스위치(206)가 디밍 레벨을 정의한다".
제어 논리 프로그램들은 논리 할당 단계에서 실행 시간 코드를 실행해야 하는 장치들로 할당된다. 논리 할당은 모든 또는 일부 제어 논리 프로그램들에 대해 사용자에 의해 정의될 수 있다.
일 실시예에서, 논리 할당을 위한 디폴트 규칙들이 정의될 수 있다. 예를 들어, 애플리케이션 논리는 관련 장치들, 즉 관련된 상태 변수들 중 하나의 상태 변수의 마스터 인스턴스를 유지하는 장치들에만 할당될 수 있다. 관련 상태 변수들은 애플리케이션 논리에 의해 사용되는 입력 또는 출력 상태 변수들일 수 있다. 또한, 디폴트로서, 논리는 항상, 예를 들어 실행 가능 코드 출력 상태 변수들의 마스터 인스턴스를 유지하는 장치에 할당될 수 있다.
예 1.2.1: 위의 선행 조건들과 더불어, 예 1.2로부터의 2개의 스크립트는 각각 램프(202, 204)에 할당되어야 할 것이다.
다른 실시예에서, 장치들의 능력들 또는 자원들은 논리 할당 프로세스에 의해 고려될 수 있다. 이를 위해, 각각의 개별 장치의 능력들에 대한 상세한 정보가 요구된다.
컴파일러에 의해 고려될 장치 특성들은 CPU 전력, 비휘발성 메모리, 프로그램 메모리 및 랜덤 액세스 메모리를 포함하는 이용 가능한 메모리, 슬립핑 거동, 프록싱(proxying) 능력 또는 요구, 또는 전원을 포함할 수 있다.
전원 평가를 위해, 규칙은 실행 가능 코드들이 메인 급전 장치들에 바람직하게 할당된다는 것일 수 있다.
예 1.2.2: 스위치(206) 및 실내 센서(208) 양자가 배터리 급전 장치들인 경우, 예 1.2로부터의 스크립트들은 램프들(202, 204)에만 할당될 수 있다.
일 실시예에서, 장치들의 능력들 또는 자원들에 관한 정보는 논리 할당 전에, 예를 들어 시스템 자원 조사(system inventory)의 결과로서 컴파일러에 의해 이용 가능할 수 있다.
다른 실시예에서, 메모리와 같은 소정의 장치 특성들에 대해, 논리 분할-할당-컴파일링-설치 단계들의 체인은 반복 프로세스일 수 있다. 이러한 실시예에 따르면, 컴파일러는 먼저 소정의 일반 규칙들, 예를 들어 관련 장치의 타입에 따라 논리를 할당한다.
예를 들어, 설치시, 실행 가능 코드가 이용 가능한 장치 메모리에 맞는지를 결정하기 위하여 결과적인 실행 가능 코드의 크기가 검사될 수 있다. 이러한 검사 단계는 컴파일러 또는 장치 자체에 의해 수행될 수 있다. 메모리 크기를 초과하는 경우, 논리 분할-할당-컴파일링-설치 프로세스가 반복될 수 있다.
또 다른 실시예에서, 논리 할당은, 패킷을 전송하고, 수신될 수령 확인 프레임들을 자지 않고 기다려서 듣는 에너지 비용들 및 결과적인 재전송 비용들을 포함하는 장치당 통신 비용과 관련하여 최적화될 수 있다. 통신 비용에 관한 최적화는 추가 정보를 필요로 할 수 있다. 그러한 추가 정보는 802.15.4 또는 ZigBee와 같이 어느 기술이 사용되는지, 이용 가능한 대역폭이 얼마인지 및 예상 지연을 포함할 수 있다. 또한, ZigBee 라우터(ZR) 또는 ZigBee 단말 장치(ZED)와 같은 장치 역할, 부모-자식 관계들에 관한 정보를 포함하는 이웃 장치들의 리스트, 특정 링크들의 품질(LQI) 또는 라우팅 경로의 길이 및 비용에 관한 정보가 중요할 수 있다. 라우팅 경로의 길이는 다수의 홉(hop)에 의해 정의될 수 있다.
예 1.2.3: 예 1.2.1에서, 배터리 급전 장치들(206, 208)의 각각은 램프들(202, 204)에 대해 하나씩, 2개의 갱신을 전송한다. 배터리 급전 장치(206, 208)당 전력 소비는, 예 1.2로부터의 양 스크립트가 하나의 램프, 예컨대 램프(202)에 할당되는 경우에, 전송되는 패킷들의 수를 제한함으로써 더 제한될 수 있다. 따라서, 배터리 급전 장치들(206, 208)의 각각은 램프(202)에 하나의 패킷을 전송하면 되고, 이어서 램프(202)는 램프(204)를 제어할 것이다.
장치 통신 비용들의 최적화를 위해, 장치의 능력들 또는 자원들 외에도, 고려되는 기준들은 애플리케이션 논리에 의해 정의되는 바와 같은 의도된 장치 거동, 예를 들어 속성 갱신들을 전송하는 주파수를 포함할 수 있다.
예 1.2.4: 예 1로부터의 실내 센서(208)가 50ms마다 실내 상태를 측정하고 보고하도록 예정되는 경우, 이 센서에 의해 생성되는 트래픽의 양을 제한하는 것이 매우 바람직할 것이다. 적어도, 예 1.2.3에서 설명되는 바와 같은 해법이 이용될 수 있는데, 즉 센서는 램프들 중 하나에만 보고하고, 램프는 실질적인 광 레벨 변경시에만 다른 램프를 갱신할 것이다. 대안으로, 예 1에서의 스크립트로부터 결과되는 실행기들은 실내 센서 자체에 할당될 수 있으며, 따라서 센서는 실질적인 광 레벨 변경시 및 광 스위치 온 시에만 양 램프를 갱신할 것이다.
설명되는 장치 통신 비용 최적화는 시스템 설계자가 이용할 수 있는 임의의 성능 좌우 수단 위에서 수행된다. 예를 들어, 이것은 예를 들어 절대 또는 상대적 속성 값 변화 또는 최대 변화 통지 주파수에 기초하는 조건부 갱신들을 도입함으로써 수행된다.
또 다른 실시예에서, 전체 시스템에 대한 애플리케이션 및 지원 논리 실행의 총 비용이 최적화될 수 있다. 애플리케이션 및 지원 논리를 저장하기 위하여 모든 장치 상에서 필요한, 예를 들어 KB 단위의 총 메모리 크기, 예를 들어 CPU 사이클 또는 전력 소비에 있어서의 전체 애플리케이션 및 지원 논리 실행 비용 또는 예를 들어 패킷 홉들의 수에 있어서의 모든 장치에 대한 전체 통신 비용과 같은 최적화 기준들에 대해, 필요한 전송 시간(지연) 및/또는 대역폭이 최적화를 위해 고려될 수 있다.
최적화 기준들의 선택은 가장 중요한 시스템 양태에 의존할 수 있다. 예를 들어, 대역폭이 가장 중요한 시스템 자원인 경우, 대역폭 사용이 최적화되어야 한다. 이것은 20 또는 40kbps의 대역폭을 제공하는 900MHz 주위의 하위 802.15.4 주파수 대역의 경우일 수 있다. 한편, 250kbps의 대역폭을 제공하는 상위 802.15.4 주파수 대역들(2400MHz 주위)은 예를 들어 배터리 수명을 위해 최적화될 수 있다.
예 1.2.5: 예 1.2로부터의 2개의 스크립트가 하나의 램프(204, 206)에 각각 할당되는 것으로 가정하면, 총 4개의 갱신 메시지가 전송되어야 하며, 따라서 2개의 실행 가능 코드가 트리거될 것이다. 예 1.2로부터의 논리가 램프들 중 하나에 할당되는 경우, 하나의 실행 가능 코드만이 트리거되고, 총 3개의 메시지가 전송되어야 할 것이다.
또 다른 실시예에서, 위의 논리 할당 접근법들은 조합될 수 있다. 예를 들어, 디폴트로서, 논리는 관련된 장치들 중 어느 하나에 할당되는데, 이는 그 장치의 능력들 또는 자원들을 고려하여 이루어진다. 이것이 불가능한 것으로 판명되는 경우, 논리는 전체 제어 시스템에 대한 총 비용이 최적화되는 방식으로, 예를 들어 시스템에서 갱신들이 이동해야 하는 홉들의 총 수를 제한하는 방식으로 임의의 제3의 관련없는 장치에 할당된다. 후자는 예를 들어, 애플리케이션 논리를, 예를 들어 ZigBee 환경에서 관련 ZigBee 단말 장치의 부모 또는 관련 장치들 사이의 라우트 상의 임의의 라우터에 할당함으로써 달성될 수 있다.
실행 가능 실행시간 코드 생성 절차의 일부로서, 논리 컴파일링 단계에서 실행 가능 실행시간 코드를 생성하기 위해 애플리케이션 논리가 컴파일링되어야 한다.
일 실시예에서, 애플리케이션 논리의 실행 가능 실행시간 코드들로의 컴파일링은 애플리케이션 논리가 분할되고 할당된 후에 이루어질 수 있다. 이것은, 애플리케이션 지원 논리, 예를 들어 가입 정보의 인스턴스화가 또한 컴파일러에 의해 수행되어야 하는 경우에, 그러한 인스턴스화를 간략화한다.
다른 실시예에서, 애플리케이션 논리의 실행 가능 실행시간 코드들로의 컴파일링은 애플리케이션 논리가 분할되고 할당되기 전에 이루어질 수 있다. 따라서, 각각의 특정 실행기의 정확한 크기가 알려지며, 이는 예를 들어 장치의 이용 가능 메모리와 관련하여 논리 할당을 최적화하는 데 사용될 수 있다.
요약된 본 발명의 특정 실시예들을 설명한다.
컴파일러 프로그램이 자동으로
- 사용자 지정 제어 논리를, 실행 가능 코드로 번역되는 기능적 제어 논리 프로그램들로 분할하고,
- 장치 능력들/자원들을 고려하는 최적화된 방식으로 실행 가능 코드를 (실행 시간에 실행 가능 코드를 실행할) 장치들에 할당하는
네트워킹된 제어 시스템.
다음과 같은 할당 최적화 기준들, 즉
- 실행 가능 코드를 관련 장치들 중 하나에 바람직하게 배치하고,
- 실행기 출력 상태 변수의 마스터 인스턴스를 호스팅하는 장치에 실행 가능 코드를 바람직하게 배치하고,
- 그 밖에, 부모-자식 관계들을 이용하는 802.15.4/ZB 또는 유사한 기술이 사용되는 경우에, 기능이 축소된 관련 장치, 예를 들어 ZigBee 단말 장치 상에서, 특히 ZigBee 단말 장치가 실행기 출력 상태 변수의 마스터 인스턴스를 호스트하는 경우에,
- 그 밖에, 관련 장치들 사이의 라우트 상의 임의의 라우터 상에서,
- 전원, CPU 전력, 이용 가능 메모리(비휘발성 메모리를 포함함), 슬립핑 거동, 프록싱 능력/요구 등과 같은 제한된 능력들/자원들을 갖는 장치 상에 실행 가능 코드를 바람직하게 배치하지 않고,
- 자원이 제한된 장치들에 대한 통신 비용이 최소화되도록 실행 가능 코드를 바람직하게 배치하고,
- 모든 장치에 대한 전체 통신 비용(예를 들어, 에너지 소비, 지연 또는 대역폭과 관련하여)이 최소화되도록 실행 가능 코드를 바람직하게 배치하는
기준들을 이용하는 전술한 바와 같은 컴파일러 프로그램.
전술한 최적의 제어 논리 프로그램 할당이 가능하도록 사용자 지정 제어 논리를 분할하는 전술한 바와 같은 컴파일러 프로그램.
단계들이 반복적으로
- 컴파일링 시에 부분적으로, 설치 시에 부분적으로, 옵션으로서 또한 동작 시간에 부분적으로
수행되는 네트워킹된 제어 시스템용의 상기 컴파일러 프로그램.
본 발명의 기능의 적어도 일부는 하드웨어 또는 소프트웨어에 의해 수행될 수 있다. 소프트웨어에서의 구현의 경우, 본 발명을 구현하는 단일 또는 다수의 알고리즘을 처리하기 위해 단일 또는 다수의 표준 마이크로프로세서 또는 마이크로컨트롤러가 사용될 수 있다.
단어 "포함한다"는 다른 요소들 또는 단계들을 배제하지 않으며, 단어 "하나"는 복수를 배제하지 않는다는 점에 유의해야 한다. 또한, 청구항들 내의 임의의 참조 부호들은 본 발명의 범위를 한정하는 것으로 해석되지 않아야 한다.

Claims (19)

  1. 복수의 장치(102, 104, 106, 108, 112)를 포함하는 네트워킹된 제어 시스템을 위한 컴파일러 프로그램을 갖는 컴퓨터 판독가능 기록 매체로서, 상기 컴파일러 프로그램은, 컴퓨터에 의해 실행될 때,
    - 제어 논리를 복수의 기능적 제어 논리 프로그램으로 분할하는 단계;
    - 상기 복수의 기능적 제어 논리 프로그램을 복수의 실행 가능 코드로 번역하는 단계; 및
    - 배치 규칙에 따라 상기 복수의 실행 가능 코드를 상기 복수의 장치 중 지정된 장치들(102, 104, 106, 112)에 할당하는 단계
    를 포함하는 방법을 수행하고,
    상기 할당하는 단계는 적어도 하나의 실행 가능 코드와 관련된 상태 변수의 마스터 인스턴스를 호스트하는 지정된 장치에 상기 복수의 실행 가능 코드 중 상기 적어도 하나의 실행 가능 코드를 할당하는 단계를 포함하는 컴퓨터 판독가능 기록 매체.
  2. 제1항에 있어서, 상기 분할하는 단계는 상기 배치 규칙에 의존하는 분할 규칙에 따라 상기 제어 논리를 분할하는 단계를 포함하는 컴퓨터 판독가능 기록 매체.
  3. 삭제
  4. 제1항 또는 제2항에 있어서, 상기 할당하는 단계는 상기 할당되는 실행 가능 코드들을 실행하기 위한 충분한 자원들을 포함하는 지정된 장치들(102, 104, 106, 112)에 상기 실행 가능 코드들을 할당하는 단계를 포함하는 컴퓨터 판독가능 기록 매체.
  5. 삭제
  6. 삭제
  7. 802.15.4/ZigBee에 기초하는 네트워킹된 제어 시스템을 위한 제1항 또는 제2항의 컴퓨터 판독가능 기록 매체로서,
    상기 복수의 장치(102, 104, 106, 108, 112)는 적어도 하나의 자식 장치(108), 및 상기 자식 장치와 연관되는 적어도 하나의 부모 장치(102)를 포함하고, 상기 할당하는 단계는 상기 복수의 실행 가능 코드 중 적어도 하나가 실행될 때 상기 자식 장치가 관련되는 경우에 상기 부모 장치에 상기 복수의 실행 가능 코드 중 상기 적어도 하나를 할당하는 단계를 포함하는 컴퓨터 판독가능 기록 매체.
  8. 제1항 또는 제2항에 있어서, 상기 네트워킹된 제어 시스템은 적어도 하나의 라우터(112)를 포함하며, 상기 할당하는 단계는, 상기 라우터가 상기 복수의 실행 가능 코드 중 적어도 하나가 실행될 때 관련되는 적어도 하나의 장치(102, 104)에 접속되는 경우에, 상기 라우터에 상기 복수의 실행 가능 코드 중 적어도 하나를 할당하는 단계를 포함하는 컴퓨터 판독가능 기록 매체.
  9. 복수의 장치를 포함하는 네트워킹된 제어 시스템을 위한 컴파일러 프로그램을 갖는 컴퓨터 판독가능 기록 매체로서, 상기 컴파일러 프로그램은, 컴퓨터에 의해 실행될 때,
    - 제어 논리를 실행 가능 코드 프로그램으로 번역하는 단계;
    - 상기 실행 가능 코드 프로그램을 복수의 실행 가능 코드로 분할하는 단계; 및
    - 배치 규칙에 따라 상기 복수의 실행 가능 코드를 상기 복수의 장치 중 지정된 장치들에 할당하는 단계
    를 포함하는 방법을 수행하고,
    상기 할당하는 단계는 적어도 하나의 실행 가능 코드와 관련된 상태 변수의 마스터 인스턴스를 호스트하는 지정된 장치에 상기 복수의 실행 가능 코드 중 상기 적어도 하나의 실행 가능 코드를 할당하는 단계를 포함하는, 컴퓨터 판독가능 기록 매체.
  10. 네트워킹된 제어 시스템으로서,
    - 제1항, 제2항 또는 제9항 중 어느 한 항의 컴퓨터 판독가능 기록 매체
    를 포함하는 네트워킹된 제어 시스템.
  11. 컴퓨터에 의해 실행되는, 복수의 장치(102, 104, 106, 108, 112)를 포함하는 네트워킹된 제어 시스템을 위한 컴파일링 방법으로서,
    - 사용자 지정 제어 논리를 복수의 기능적 제어 논리 프로그램으로 분할하는 단계;
    - 상기 복수의 기능적 제어 논리 프로그램을 복수의 실행 가능 코드로 번역하는 단계; 및
    - 배치 규칙에 따라 상기 복수의 실행 가능 코드를 상기 복수의 장치 중 지정된 장치들에 할당하는 단계
    를 포함하고,
    상기 할당하는 단계는 적어도 하나의 실행 가능 코드와 관련된 상태 변수의 마스터 인스턴스를 호스트하는 지정된 장치에 상기 복수의 실행 가능 코드 중 상기 적어도 하나의 실행 가능 코드를 할당하는 단계를 포함하는 컴파일링 방법.
  12. 제11항에 있어서, 상기 분할, 번역 및 할당 단계들은 반복적으로 수행되며,상기 반복적으로 수행되는 단계들은 상기 사용자 지정 제어 논리의 컴파일링 프로세스 동안에, 상기 실행 가능 코드들의 설치 프로세스 동안에 또는 상기 실행 가능 코드들의 실행 동안에 수행되는 컴파일링 방법.
  13. 컴퓨터에 의해 실행되는, 복수의 장치를 포함하는 네트워킹된 제어 시스템을 위한 컴파일링 방법으로서,
    - 제어 논리를 실행 가능 코드 프로그램으로 번역하는 단계;
    - 상기 실행 가능 코드 프로그램을 복수의 실행 가능 코드로 분할하는 단계; 및
    - 배치 규칙에 따라 상기 복수의 실행 가능 코드를 상기 복수의 장치 중 지정된 장치들에 할당하는 단계
    를 포함하고,
    상기 할당하는 단계는 적어도 하나의 실행 가능 코드와 관련된 상태 변수의 마스터 인스턴스를 호스트하는 지정된 장치에 상기 복수의 실행 가능 코드 중 상기 적어도 하나의 실행 가능 코드를 할당하는 단계를 포함하는 컴파일링 방법.
  14. 컴퓨터에 의해 실행될 때, 제11항 내지 제13항 중 어느 한 항의 방법을 수행하는 컴퓨터 프로그램이 기록되어 있는 컴퓨터 판독가능한 기록 매체.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
KR1020097026706A 2007-05-22 2008-05-19 복수의 장치를 포함하는 네트워킹된 제어 시스템을 위한 컴파일러 및 컴파일링 방법 KR101562380B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP07108681.3 2007-05-22
EP07108681 2007-05-22

Publications (2)

Publication Number Publication Date
KR20100032384A KR20100032384A (ko) 2010-03-25
KR101562380B1 true KR101562380B1 (ko) 2015-10-22

Family

ID=39713964

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097026706A KR101562380B1 (ko) 2007-05-22 2008-05-19 복수의 장치를 포함하는 네트워킹된 제어 시스템을 위한 컴파일러 및 컴파일링 방법

Country Status (7)

Country Link
US (1) US9658840B2 (ko)
EP (1) EP2153322A1 (ko)
JP (1) JP5416694B2 (ko)
KR (1) KR101562380B1 (ko)
CN (1) CN101681266B (ko)
TW (1) TW200912753A (ko)
WO (1) WO2008142631A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8908513B2 (en) * 2009-02-13 2014-12-09 Koninklijke Philips N.V. Method for communicating in a network comprising a batteryless zigbee device, network and device therefor
US20130159122A1 (en) * 2011-12-15 2013-06-20 Microsoft Corporation Optimizer as an appstore service
JP6404751B2 (ja) * 2015-03-13 2018-10-17 株式会社東芝 制御プログラム分割装置、制御プログラム分割方法及びコンピュータプログラム
EP3082038A1 (en) * 2015-04-15 2016-10-19 Hybridserver Tec AG Method, device and system for creating a massively parallelized executable object
JP6769218B2 (ja) * 2016-09-30 2020-10-14 横河電機株式会社 アプリケーション開発環境提供システム、アプリケーション開発環境提供方法、アプリケーション開発環境提供プログラム、および情報処理装置
US20180275976A1 (en) * 2017-03-22 2018-09-27 Qualcomm Innovation Center, Inc. Link time optimization in presence of a linker script using path based rules
CN111858061B (zh) * 2020-07-27 2024-03-29 福州大学 一种分布式可编程交换机资源扩容方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0881568A2 (en) 1997-05-30 1998-12-02 Abb Sace Spa Procedure for partitioning control functions in distributed systems.
US20060041872A1 (en) 2002-10-31 2006-02-23 Daniel Poznanovic Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5535331A (en) * 1987-09-04 1996-07-09 Texas Instruments Incorporated Processor condition sensing circuits, systems and methods
US5241652A (en) * 1989-06-08 1993-08-31 Digital Equipment Corporation System for performing rule partitioning in a rete network
JP3658061B2 (ja) * 1995-12-20 2005-06-08 株式会社日立製作所 Faシステムの制御装置と方法、制御プログラム生成方法
US6161051A (en) * 1998-05-08 2000-12-12 Rockwell Technologies, Llc System, method and article of manufacture for utilizing external models for enterprise wide control
US6983463B1 (en) * 1998-10-02 2006-01-03 Microsoft Corporation Network independent profiling of applications for automatic partitioning and distribution in a distributed computing environment
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6292938B1 (en) * 1998-12-02 2001-09-18 International Business Machines Corporation Retargeting optimized code by matching tree patterns in directed acyclic graphs
US6708331B1 (en) * 2000-05-03 2004-03-16 Leon Schwartz Method for automatic parallelization of software
FR2820222B1 (fr) * 2001-01-26 2003-03-21 Schneider Automation Procede de programmation d'une application d'automatisme
US8843909B2 (en) * 2001-05-11 2014-09-23 Ca, Inc. Method and apparatus for transforming legacy software applications into modern object-oriented distributed systems
US7103881B2 (en) * 2002-12-10 2006-09-05 Intel Corporation Virtual machine to provide compiled code to processing elements embodied on a processor device
US7444632B2 (en) * 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
US8230408B2 (en) * 2004-06-30 2012-07-24 Coherent Logix, Incorporated Execution of hardware description language (HDL) programs
US20060028212A1 (en) * 2004-08-06 2006-02-09 Steiner J P System and method for graphically grouping electrical devices
US7555658B2 (en) * 2004-09-30 2009-06-30 Regents Of The University Of California Embedded electronics building blocks for user-configurable monitor/control networks
US7509244B1 (en) * 2004-12-22 2009-03-24 The Mathworks, Inc. Distributed model compilation
GB0509738D0 (en) * 2005-05-12 2005-06-22 Cambridge Consultants Processor and interface
WO2006124971A2 (en) * 2005-05-17 2006-11-23 The Board Of Trustees Of The University Of Illinois Method and system for managing a network of sensors
JP2006344017A (ja) * 2005-06-09 2006-12-21 Hitachi Ltd センサネットワークシステム及びセンサネットワークのデータ処理方法
WO2007065987A1 (fr) * 2005-12-05 2007-06-14 France Telecom Procede de reconstruction d'un reseau ad hoc et des nœuds du reseau correspondant
US7574379B2 (en) * 2006-01-10 2009-08-11 International Business Machines Corporation Method and system of using artifacts to identify elements of a component business model
US9038040B2 (en) * 2006-01-25 2015-05-19 International Business Machines Corporation Method for partitioning programs between a general purpose core and one or more accelerators
US20070258395A1 (en) * 2006-04-28 2007-11-08 Medtronic Minimed, Inc. Wireless data communication protocols for a medical device network
US8073008B2 (en) * 2006-04-28 2011-12-06 Medtronic Minimed, Inc. Subnetwork synchronization and variable transmit synchronization techniques for a wireless medical device network
US8381202B2 (en) * 2006-06-20 2013-02-19 Google Inc. Runtime system for executing an application in a parallel-processing computer system
US8443348B2 (en) * 2006-06-20 2013-05-14 Google Inc. Application program interface of a parallel-processing computer system that supports multiple programming languages
KR100825735B1 (ko) * 2006-09-29 2008-04-29 한국전자통신연구원 지그비 네트워크 상의 통신 불가 노드에 대한 주소 공간관리 방법
US8149748B2 (en) * 2006-11-14 2012-04-03 Raytheon Company Wireless data networking
JP4606404B2 (ja) 2006-12-01 2011-01-05 富士通株式会社 計算資源管理プログラムおよび計算資源管理装置
US8191052B2 (en) * 2006-12-01 2012-05-29 Murex S.A.S. Producer graph oriented programming and execution
US7991351B2 (en) * 2007-02-28 2011-08-02 Kuban Paul A Extension of wired controller area networks to wireless personal area networks
US20100250007A1 (en) * 2007-05-09 2010-09-30 Johnson Controls Technology Company Refrigeration system
US7860863B2 (en) * 2007-09-05 2010-12-28 International Business Machines Corporation Optimization model for processing hierarchical data in stream systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0881568A2 (en) 1997-05-30 1998-12-02 Abb Sace Spa Procedure for partitioning control functions in distributed systems.
US20060041872A1 (en) 2002-10-31 2006-02-23 Daniel Poznanovic Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
이와사키 외 1명. 분산협조형 제휴를 실현하는 소프트웨어의 세립도 자동분산화 수법. 제9회 프로그래밍 및 응용 시스템에 관한 워크숍 SPA2006, 일본 소프트웨어 과학회 소프트웨어 시스템 연구회, pp. 1-6, (2006.03.05.)*

Also Published As

Publication number Publication date
EP2153322A1 (en) 2010-02-17
TW200912753A (en) 2009-03-16
CN101681266A (zh) 2010-03-24
CN101681266B (zh) 2014-06-18
JP5416694B2 (ja) 2014-02-12
KR20100032384A (ko) 2010-03-25
JP2010528361A (ja) 2010-08-19
WO2008142631A1 (en) 2008-11-27
US20100306748A1 (en) 2010-12-02
US9658840B2 (en) 2017-05-23

Similar Documents

Publication Publication Date Title
KR101562380B1 (ko) 복수의 장치를 포함하는 네트워킹된 제어 시스템을 위한 컴파일러 및 컴파일링 방법
US20100106262A1 (en) Device for a networked control system
JP5389778B2 (ja) 論理的アドレスを用いるネットワーク化された制御システム
JP6067688B2 (ja) ネットワーク化された制御システムの装置の自動コミッショニング
US8819653B2 (en) Automated improvement of executable applications based on evaluating independent execution heuristics
Reijers et al. Design of an Intelligent Middleware for Flexible Sensor Configuration in M2M Systems.
JP5095934B2 (ja) アーキテクチャ非依存プログラミング及びネットワークアプリケーション合成システム及び方法
WO2012131631A1 (en) Automatically commissioning of devices of a networked control system
Jooris et al. Taisc: a cross-platform mac protocol compiler and execution engine
Marrón et al. Management and configuration issues for sensor networks
US20130114582A1 (en) Wireless mesh network device protocol translation
Zhang et al. Trump: Supporting efficient realization of protocols for cognitive radio networks
EP3286990B1 (en) A combination light, rfid and software radio assembly to replace standard or existing lighting with rfid enabled lighting
Valck et al. Exploiting programmable architectures for WiFi/ZigBee inter-technology cooperation
CN113286313A (zh) 一种硬件设备布局方法及装置
Shih et al. Out-of-box device management for large scale cyber-physical systems
Guerrieri et al. A WSN-based building management framework to support energy-saving applications in buildings
KR20110064623A (ko) 고정분산 방식으로 채널 할당하는 멀티채널/멀티인터페이스 메쉬 라우터 및 그 방법
Michalski Design and Evaluation of Deadline-Based Scheduling Algorithms for the Industrial Internet of Things
CN114741238A (zh) 数据一致性方法、装置及计算机可读存储介质
WO2011079424A1 (zh) 并行化自动控制程序的方法及编译器
Bósa et al. Specification Document and Installation Guide of the Supercomputing API for the Grid (DRAFT)
JP2006074400A (ja) ソフトウェア無線端末装置、プログラム及びソフトウェア無線端末装置の機能構成方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
LAPS Lapse due to unpaid annual fee