KR20180087446A - 컨트롤러 기반 원격 솔루션들을 생성 및 관리하기 위한 방법 및 장치 - Google Patents

컨트롤러 기반 원격 솔루션들을 생성 및 관리하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20180087446A
KR20180087446A KR1020187020693A KR20187020693A KR20180087446A KR 20180087446 A KR20180087446 A KR 20180087446A KR 1020187020693 A KR1020187020693 A KR 1020187020693A KR 20187020693 A KR20187020693 A KR 20187020693A KR 20180087446 A KR20180087446 A KR 20180087446A
Authority
KR
South Korea
Prior art keywords
controller
cvs
solution
agcp
gui
Prior art date
Application number
KR1020187020693A
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 시암벨라 리미티드
Publication of KR20180087446A publication Critical patent/KR20180087446A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Selective Calling Equipment (AREA)
  • Telephonic Communication Services (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

컨트롤러 기반 원격 솔루션을 생성 및 관리하기 위한 방법 및 장치가 제공된다. 본 방법은 그래픽 사용자 인터페이스(GUI)로부터 코드 가상화 서버(CVS)에서, 센서 및/또는 액추에이터와 통신 가능하게 커플링되어 이들을 제어하도록 동작 가능한 컨트롤러, 센서 및/또는 액추에이터에서의 조건, 조건이 충족될 때 컨트롤러에 의한 실행을 위한 동작, 및 솔루션에 대한 적어도 하나의 파라미터를 포함하는 솔루션의 입력을 수신하는 단계를 포함한다. 컨트롤러용 프로그램(AGCP)은 입력 솔루션을 기반으로 CVS에서 자동으로 생성된다. 프로그램은 조건이 충족되는지 확인하고 조건이 충족될 때 동작을 실행하는 코드를 포함한다. AGCP는 사용자 디바이스의 스토리지로 다운로드되거나, 또는 적어도 하나의 컨트롤러에 설치하기 위해 적어도 하나의 컨트롤러로 전송된다.

Description

컨트롤러 기반 원격 솔루션들을 생성 및 관리하기 위한 방법 및 장치
본 발명의 실시예들은 일반적으로 컨트롤러 기반 원격 솔루션들을 생성 및 관리하기 위한 방법 및 장치에 관한 것이다.
FPGA(field programmable gate array), 및 MCU, SoC, 이동 전화, 컴퓨터 등과 같은 다른 컨트롤러 기반 디바이스들(예를 들면, 마이크로컨트롤러 또는 마이크로프로세서 기반)의 사용이 상당히 대중화되고 있다. 컨트롤러의 낮은 제조 비용, 가용성, 및 커스터마이징으로 인해, 디바이스를 만드는데 있어 상업 회사 및 애호가 등이 사용하는 마이크로컨트롤러 및 SoC(Systems on a Chip)(예를 들면, PIC, ARDUINO, RASPBERRY PI 등)가 확산되었다. 컨트롤러 기반 디바이스는, 전자 디바이스들 또는 주변 디바이스들과의 통신으로 입/출력 데이터를 처리하도록 프로그래밍할 수 있는 프로세서 코어 및 메모리를 포함한다. 이러한 컨트롤러 기반 디바이스에는, 소수의 RAM(random access memory)뿐만 아니라 종종 NOR FLASH 또는 OTP ROM 형태의 프로그램 메모리도 포함된다. 이러한 복수의 컨트롤러 기반 디바이스들은 대형 디바이스들 내에 포함된 응용들을 위해 설계되었다. 이러한 컨트롤러 기반 디바이스들의 실제 응용들은 컨트롤러 기반 디바이스들을, 주변 장치들인 실제의 객체들 또는 시스템들과 연결하는 것을 잠재적으로 포함하며, 이에 따라 이러한 주변 장치들의 디지털화, 연결 및 심지어 원격 제어를 가능하게 할 수 있다. 그러나, 클라우드 기술과 하드웨어 및 소프트웨어 기술을 결합하는 복잡성으로 인해, 이러한 실제 응용들을 만드는데는 몇 가지 도전과제가 존재한다.
일반적으로, 컨트롤러 기반 디바이스들 또는 이들의 그룹들을 프로그래밍하는 것은 상당히 복잡하다. 또한, 이러한 컨트롤러 기반 디바이스들(또는 '컨트롤러 디바이스들' 또는 '컨트롤러들')이 종래의 시스템, 예를 들어 다양한 액추에이터 및 센서를 실제로 제어하는데 사용될 경우, 이러한 컨트롤러들을 프로그래밍하는 것은 훨씬 더 복잡한다. "IoT(Internet of Things)"가 증가함에 따라, 점점 더 많은 이러한 컨트롤러 기반 디바이스들이 서로 및/또는 인터넷에 연결되어, 프로그래밍의 복잡성을 크게 증가시키고 있다. 실제 시나리오에서, 이러한 컨트롤러 기반 디바이스들은 서로 간에 및/또는 게이트웨이와 통신하고, 게이트웨이는 소위 에지 디바이스(edge device)들에 대한 인터넷 통신을 위한 프록시가 될 수 있다. 에지 디바이스들은 하나 이상의 게이트웨이를 통해 통신하거나, 독립적인 디바이스들로서 직접 통신할 수 있다. 그룹 내에서, 상호 연동을 용이하게 하기 위해 모든 디바이스들(게이트웨이 및 에지)은 호환 가능하게 프로그래밍되어야 하며, 이로 인해 이러한 디바이스들을 프로그래밍하는 복잡성이 현저히 더 가중된다. 또한, 커스터마이징이 실시될 때마다 호환성을 관리하는데 과도한 시간이 걸릴 수도 있다. 컨트롤러 기반 디바이스들의 그룹을 프로그래밍하는 것은, 코딩 커맨드를 암기하고, 계층 구조를 이해하고, 적절한 호출 구문을 활용해야 등이 필요하기 때문에, 사용자에게 매우 어려운 도전과제이다. 하나의 디바이스가 잘못 프로그래밍되어 있을 경우에도, 그룹 내의 해당 또는 다른 컨트롤러 기반 디바이스를 위해 작성된 프로그램이 실행되지 않거나 오류를 발생시킬 수 있다.
따라서, 본 기술분야에서는, 컨트롤러 기반 디바이스들에 대한 프로그래밍을 단순화하고, 컨트롤러 기반 디바이스들의 그룹에 대해 프로그래밍을 자동화하는 요구가 있다.
본 발명의 실시예들은, 실질적으로는 도면들 중 적어도 하나와 관련해서 도시 및/또는 설명된 바와 같이, 보다 완전히는 청구범위에 제시되는 바와 같이, 일반적으로 컨트롤러 기반 원격 솔루션들을 생성 및 관리하기 위한 방법 및 장치에 관한 것이다.
본 발명의 이들 및 다른 특징들과 이점들은, 동일한 참조 번호가 전체적으로 동일한 부분을 나타내는 첨부된 도면들과 함께, 본 발명의 다음의 상세한 설명의 검토로부터 이해될 수 있다.
본 발명의 상술한 특징이 구체적으로 이해될 수 있게, 위에서 간략히 요약된 본 발명의 보다 구체적인 설명이 실시들을 참조해서 이루어질 수 있으며, 그 일부가 첨부 도면들에 도시되어 있다. 다만, 첨부 도면들은 본 발명의 전형적인 실시예들만을 도시하는 것뿐이므로, 본 발명의 범주를 제한하는 것으로 간주되어서는 안 되며, 본 발명은 다른 동등한 효과의 실시예들이 인정될 수 있다.
도 1은 본 발명의 일 실시예에 따른, 컨트롤러 기반 원격 솔루션을 생성 및 관리하기 위한 장치의 블록도.
도 2는 본 발명의 일 실시예에 따른, 도 1의 코드 가상화 서버의 블록도.
도 3은 본 발명의 일 실시예에 따른, 도 1의 코드 가상화 서버에 의해 실행되는 원격 솔루션들을 생성 및 관리하기 위한 방법의 흐름도.
도 4는 본 발명의 일 실시예에 따른, 도 1의 코드 가상화 서버에 의해 실행되는 원격 솔루션을 관리하기 위한 방법의 흐름도.
도 5는 본 발명의 일 실시예에 따른, 컨트롤러 디바이스, 코드 가상화 서버 및 원격 서비스 상에서의 원격 솔루션 동작 방법을 나타내는 흐름도.
도 6은 본 발명의 일 실시예에 따라 생성 및 관리되는 원격 솔루션의 도면.
본 발명의 실시예들은 컨트롤러 기반 원격 솔루션들을 생성 및 관리하기 위한 방법 및 장치에 관한 것이며, 보다 구체적으로는 응용 시스템(예를 들어, 물 탱크, 냉장고 등)에 배치된 컨트롤러 디바이스들(예를 들어, 마이크로컨트롤러, 마이크로프로세서, SoC, MCU 등과 같은 컨트롤러를 구비한 디바이스들)을 통합하는 원격 솔루션들을 생성, 배치 및 관리하기 위한 방법 및 장치에 관한 것이다. 컨트롤러 디바이스들은 센서들과 액추에이터들을 사용하여 응용 시스템을 모니터링 및 제어하도록 작동 가능하다. 본 발명의 실시예들은 사용자가 이용할 수 있는 그래픽 사용자 인터페이스(GUI)를 사용하여, 사용자로 하여금 하나 이상의 컨트롤러 또는 컨트롤러 그룹을 통해 분산된 다수의 애플리케이션들을 포함하는 솔루션을 구축할 수 있게 하며, 솔루션을 운용하기 위한 컨트롤러들에 대한 프로그램들을 자동으로 생성할 수 있게 한다. 솔루션의 응용들로는 응용 시스템(예를 들어, 센서 또는 액추에이터)과 관련된 특정 조건이 충족될 시에, 컨트롤러들에 의해 실행되는 하나 이상의 동작을 포함한다.
솔루션은 GUI 상에서 사전 정의된 솔루션 템플릿을 선택함으로써 구축된다. 대안적으로, 솔루션은 컨트롤러들, 응용 시스템, 액추에이터들 및 센서들 중의 하나 이상의 것에 대한 세부 사항들을 식별 또는 정의하여 응용 시스템들, 동작들, 컨트롤러들에 의한 동작들을 트리거하는 조건들, 컨트롤러들, 액추에이터들, 센서들 및 응용 시스템 간의 연결, 또는 솔루션에 대한 파라미터들을 모니터링 및 제어함으로써, 빈 템플릿에서 시작하여 GUI에 구축될 수 있다. 솔루션에 대한 파라미터들은 컨트롤러들, 응용 시스템들, 조건들, 동작들, 액추에이터들, 센서들, 연결(연결 프로파일, 연결 파라미터, 프로토콜) 및 컨트롤러들에 대한 프로그램들의 실행에 필요한 다른 동작 정보의 조작과 관련된 파라미터들 중의 하나 이상의 것을 포함할 수 있다. 설계된 솔루션을 기반으로, 응용 시스템들에 배치된 컨트롤러들용 프로그램(들)이 코드 가상화 서버(CVS) 상의 코드 생성기(SDK 생성기와 함께 작동하거나 SDK 생성기를 포함할 수 있음)에 의해서 자동으로 생성되며, 이 프로그램은 자동 생성 컨트롤러 프로그램(automatically generated controller program, AGCP)이라고 지칭된다.
예를 들어, GUI를 사용하여, 사용자는 사전 정의된 솔루션을 선택하거나, 또는 물 탱크, 냉장고 또는 보일러 시스템 등을 위한 컨트롤러 기반 솔루션과 같은 솔루션을 구축한다. 사용자는 GUI 상에서 관련 컨트롤러 디바이스(들)(사전 정의된 솔루션을 운용하기 위한 컨트롤러 및 다른 하드웨어, 예컨대 센서 및 액추에이터 등을 포함함)를 식별하고, 컨트롤러 디바이스(들), 응용 시스템 및 AGCP를 작동시키기 위한 파라미터들을 더 제공한다. 사용자 디바이스의 GUI에서 수신되는 이러한 입력들은 컨트롤러 디바이스(들)에 적합한 언어로, 및 컨트롤러 디바이스(들)의 처리 능력에 따라 컨트롤러 디바이스(들)에 대한 AGCP를 생성하기 위해 CVS로 전송된다. AGCP는 GUI를 통해 수신되는 사용자 입력에 기초하여 집성된, 사전 정의된 프로그램 코드를 포함한다. 또한, AGCP를 실행하기 위한 파라미터들은 GUI 상에서 사용자에 의해 입력될 수 있으며, CVS에서 수신될 수 있다. 그리고, AGCP가 컨트롤러 디바이스들 상에 배치됨으로써, 설계된 솔루션을 구현한다. 일부 실시예들에서는, AGCP와 함께, 예를 들어, SDK와 같은 AGCP를 실행하는데 도움이되는 소프트웨어 컴포넌트들이 또한 생성되며, 이러한 컴포넌트들은 AGCP에 포함되거나, 컨트롤러 디바이스 상에 개별적으로 배치되거나, 또는 컨트롤러 디바이스들에 대하여 원격이지만 액세스 가능한 디바이스 상에 배치된다(즉, 컴포넌트들이 가상화될 수 있음).
솔루션은, 실시간으로, 사전 정의된 시간 간격으로, 이벤트 발생 시에, 또는 다른 정의된 조건들에서 GUI로 상태 업데이트를 전송하는 것과 같은 추가 기능을 포함할 수 있으며, 이에 따라 배치된 솔루션의 원격 모니터링을 가능하게 할 수 있다. 또한, GUI를 사용하여, 사용자는 설계된 솔루션의 일부분을 수정하고, AGCP의 수정 또는 재생성을 행하여, 이러한 수정 또는 재생성된 AGCP를 컨트롤러들에 재배치함으로써, 설계 또는 구현된 솔루션을 수정할 수 있다. 이러한 수정은 실시간으로 구현될 수 있으며, 즉, AGCP의 수정 또는 재생은 수정이 지정되는 즉시 수행된다. 몇몇 경우들에 있어서는, 필수 수정이 컨트롤러 하드웨어와 관련된 조건들을 변경하지 않으며, 이러한 수정은 AGCP의 수정 또는 재생성을 필요로 하지 않는다.
또한, AGCP는 설계된 기능의 일부가 AGCP를 실행하는 컨트롤러 상에서가 아니라 가상적으로 실행되기 때문에, 컨트롤러들에 대하여 원격인 디바이스 상에서(즉, AGCP의 가상화 부분) 실행되는 가상 프로그램에 대한 원격 호출을 포함할 수 있다. AGCP의 기능은 컨트롤러가 실행하기에는 그 기능이 너무 많은 자원을 필요로 하기 때문에 가상 프로그램들로 추상화 또는 가상화된다. 몇몇 경우들에 있어서는, 컨트롤러가 이러한 기능 실행을 '처리'할 수 있더라도, 예를 들어 당업자가 생각할 수 있는 몇몇 다른 이유들 중에서도 특히 더 나은 안정성, 하나가 아닌 복수의 컨트롤러들에 대한 이러한 기능의 제공 등을 위해 컨트롤러에서 이러한 기능을 추상화하는 것이 바람직할 수 있다. 원격 디바이스는 AGCP를 자동으로 생성하는 디바이스와 동일하거나 또는 상이할 수 있다. 설명의 단순화를 위해, 이 디바이스를 코드 가상화 서버(CVS)라고 지칭하고, 이 가상 프로그램을 CVS에 저장되어 CVS에서 AGCP를 실행하는 컨트롤러로부터의 원격 호출 수신 시에 실행되는 CVS 프로그램(CVSP)이라고 지칭할 수 있다. 또한, AGCP에는 원격 서비스를 직접 제공하거나 CVSP를 통해 제공하는 코드가 포함될 수도 있다. CVSP를 통해 원격 서비스를 제공할 경우, CVS 상에서 CVSP가 실행되면 원격 서비스가 제공된다. 원격 서비스는 CVS 또는 컨트롤러들이 아닌 다른 디바이스에 의해 제공되는 서비스이다.
응용 시스템들에 있어서의 몇몇 컨트롤러의 배치는 원하는 솔루션을 구현하기 위해 그러한 컨트롤러들을 프로그래밍하고, 나아가 그러한 솔루션을 모니터링, 수정 및 관리하는 것과 관련하여 중요한 도전과제를 부여한다. 구체적으로, 응용 시스템들의 상이한 컴포넌트들은, 예를 들어 상이한 액추에이터들 및 센서들과 같은, 응용 시스템들을 제어하기 위한 상이한 주변 디바이스 또는 전자 디바이스를 필요로 한다. 따라서, 이러한 액추에이터들 및 센서들을 제어하는 컨트롤러들은 이러한 차이에 따라 프로그래밍되어야 할 필요가 있어서, 이러한 응용 시스템들을 위한 솔루션들을 생성하는 복잡성을 더욱 증가시키게 된다. 이러한 프로그래밍 및 유지 관리 문제는 특히 비전문가에게는 대응하기 힘든 것이다. 본 명세서에서 설명되는 실시예들은 사용자에게 GUI 인터페이스를 제공하여, 응용 시스템들에 배치된 컨트롤러 기반 원격 솔루션들을 간단하고 효과적인 방식으로 생성, 모니터링, 수정 및 관리하는 것을 비교적 간단하게 한다.
일반 양도된 미국 특허 번호들인 2011년 1월 28일에 출원된 제8,726,285호; 2014년 6월 17일에 출원된 제9,235,383호; 2014년 6월 17일에 출원된 제9,239,705호; 2014년 6월 17일에 출원된 제9,436,439호; 및 미국 특허 공개 번호들인 2007년 9월 11일에 출원된 제2009/0070121호; 2007년 9월 11일에 출원된 제2009/0070162호; 2015년 1월 9일에 출원된 제2015/0199088호; 2015년 4월 13일에 출원된 제2015/0286362호; 2016년 3월 8일에 출원된 제2016/0327925호; 및 2016년 5월 6일에 출원된 제2016/0328216호(이들 문헌 각각은 그 전체의 내용이 참조로서 본 명세서에 포함됨)에는 컨트롤러를 통합한 컨트롤러 디바이스용 소프트웨어를 개발하는 기술, 센서 또는 액추에이터와 같은 하드웨어의 사용을 그래픽 사용자 인터페이스를 사용하여 컨트롤러에 원격으로 맵핑하는 기술, 및 소프트웨어를 실행하여(예컨대, 원격으로) 정의된 워크플로우들에 따라서 이러한 컨트롤러 디바이스의 능력들을 확장하는 기술이 기재되어 있다.
이들 기술은 컨트롤러 디바이스의 메모리에 코드 및/또는 라이브러리의 스니펫(snippet)을 위치시킴으로써 기능을 수행하며, 이 스니펫은, 실행될 시에, 코드 가상화 서버에서 실행되기 위한 특정 프로세스 또는 프로세스들에 대한 호출을 전송하거나, 및/또는 (직접, 또는 코드 가상화 서버를 통해) 데이터를 원격 서비스 제공자에게 전송하거나, 및/또는 원격 서비스 제공자에 의해서 데이터에 대해 원격으로 수행될 기능을 더 호출한다. 본 발명의 실시예들은 이러한 기술들을 사용하여 종래의 원격 시스템에 커플링되어 있는 적어도 하나의 컨트롤러 디바이스를 포함하는 컨트롤러 기반 원격 솔루션들을 생성 및 관리(즉, 모니터링 및 제어)한다. 이러한 실시예들에서는, 동적 환경들, 예를 들어 컨트롤러들에 커플링되어 있는 종래의 응용 시스템들을 위한 원격 솔루션들이 생성될 수 있다. 다양한 실시예들은 코드 가상화 서버(또는 코드가 부분적으로 생성되어 실행될 수 있는 "코딩 서버"), 컨트롤러 디바이스들, 및 응용 시스템들에 대하여 원격인 사용자 컴퓨터를 사용하는 사용자에 의한, 코드 변경, 코드 입력, 필요한 출력 변경, 컨트롤러와 함께 사용하기 위한 추가 전자 디바이스(예를 들어, 센서, 액추에이터 등) 구성, 또는 솔루션 구성 변경 등을 가능하게 한다.
본 명세서에서 사용되는 용어 "응용 시스템(application system)"은 액추에이터를 사용한 컨트롤러 디바이스의 출력에 의해 제어될 수 있는 실제 시스템들 또는 응용들을 포함하며, 센서를 사용한 컨트롤러 디바이스에 대한 입력을 통해 모니터링될 수 있다. 이러한 응용 시스템들은 물 저장 탱크, 보일러, 냉동 시스템과 같은 종래에 공지된 시스템을 포함하고, 경우에 따라서는 "종래의 시스템(conventional system)"으로 지칭될 수도 있으며, "응용 시스템"이라는 용어와 상호 교환적으로 사용된다. 이러한 "응용 시스템"은 미래에 설계될 수 있는 시스템을 포함하며, 본 명세서에서 설명되는 기술들에 따라, 컨트롤러 디바이스들을 사용하여 응용 시스템에 내장되거나 응용 시스템에 설치된 센서 또는 액추에이터를 통해 이러한 시스템을 모니터링 및 제어할 수가 있다.
설명되는 다음의 실시예들에서, "프로세스" 또는 "프로그램" 또는 AGCP는, 문맥으로부터 명백히 다른 경우를 제외하고는, 실행 컨트롤러 디바이스 또는 컴퓨터 상에 이미 배치된 즉시 실행 가능한 코드 베이스 또는 사전 정의된 프로그램 코드를 지칭하는 것이다(예를 들어, 테스트를 위한 서버, 개인용 컴퓨터, 모바일 디바이스 등). 각 프로세스는 명칭, 프로세스 ID, 아이콘 또는 다른 식별자에 의해서 사용자에게 고유하게 식별된다. "실행"은 컨트롤러 디바이스 또는 컴퓨터(로컬 또는 원격 또는 클라우드 기반)에서의 프로세스 시작을 의미한다. "번들"은 공통 속성(API 명칭, 공통 파라미터, SDK, 파라미터 명칭, 원격 서버 등)으로 구성된 프로세스들의 모음을 의미한다. 본 명세서에서 논의되는 예들은 범위를 제한하려는 것이 아니며 오히려 설명의 목적을 위해 특정 실시예들을 나타내는 것이다.
본 명세서에서 설명된 기술들의 일 예로서, 응용 시스템은 주택용 빗물 집수 응용에 있어서의 물 탱크 시스템이며, 물 공급 그리드로(예를 들어, 물 유틸리티(water utility))의 공급 및 물 공급 그리드로부터의 공급을 제어하기 위한 펌프를 포함한다. 예를 들어, 탱크의 수위가 충분할 경우에는(즉, 사전 정의된 임계값을 초과하는 경우), 그리드로부터의 물 추가를 사용하지 않는 것이 바람직할 수 있다. 그러나, 수위가 임계값 수위보다 낮을 경우에는, 그리드로부터의 물 추가를 사용하여 탱크를 임계값 수위까지 채우게 된다. 이러한 작동은 물 탱크, 그리드 및 그 안에 설치된 펌프(들)와 연계하여 작동하는 센서들 및 액추에이터들을 통해 이루어진다. 원격, 컨트롤러 기반 관리 솔루션을 생성하기 위해, 사용자는 컨트롤러, 수위 센서, 펌프 및 펌프용 액추에이터에 적합한 하드웨어 구성을 설계하고, 올바른 연결로 하드웨어를 구성하고, 각 컨트롤러에 대한 프로그램을 생성하고 나서, 그러한 프로그램을 실행하기 위한 올바른 파라미터를 제공해야만 한다. 본 발명의 실시예들은 사용자가 솔루션을 생성 및/또는 수정할 수 있게 하는 GUI 기반 시스템을 제공한다.
보다 구체적으로, 본 발명의 실시예들은 사용자가 액세스할 수 있는 사용자 디바이스 상에 GUI를 제공하고, 이 GUI를 통해, 예를 들어 특정 솔루션을 선택하려는(본 예에서는, 사용자가 물 탱크를 선택함) 사용자에게 코드 가상화 서버에 저장되어 있는 몇몇 솔루션 템플릿을 제공한다. 일부 실시예들에서는, 물 탱크 솔루션이 이용 가능하지 않을 경우 물 탱크에 가장 가까운 솔루션이 선택되며, 또는 GUI에서 사용자에게 부여된 특정 질의들(예를 들어, 코드 가상화 서버에 저장된)에 대하여, GUI에서 사용자에 의해 제공되는 응답에 기초하여 사용자에게 솔루션이 제시된다. 일부 실시예들에서, 사용자는 솔루션의 모든 컴포넌트를 개별적으로 정의하며, 이에 따라 빈 템플릿으로부터 솔루션을 구축한다.
일부 실시예들에 따르면, 탱크 내의 수위에 기초하여 펌프 또는 그리드 물 공급장치를 작동시킬 수 있는 물 탱크 솔루션의 선택 시에, 사용자는 원하는 물 탱크 솔루션의 구성을 제공받는다. 예를 들어, 물 탱크 솔루션은, 물 탱크 및 펌프와는 별도로, 물 탱크 내의 수위를 나타내는 수위 센서, 펌프를 제어하기 위한 액추에이터, 시작, 정지 및 속도 변화들을 포함하는 액추에이터 기능들을 포함한다. 물 탱크 솔루션은 수위 센서, 펌프, 펌프용 액추에이터, 네트워크 및 선택적으로는 게이트웨이 디바이스 간의 무선 또는 유선 연결을 확립하기 위한 통신 디바이스들을 더 포함한다. 설치된 경우, 게이트웨이 디바이스는 한쪽에서는 네트워크와, 다른쪽에서는 수위 센서 및 펌프 액추에이터와 인터페이스한다. 일부 실시예들에서, GUI는 사용자가 응용 시스템(펌프, 센서)의 디바이스들과 컨트롤러 사이의 연결을 그래픽으로 지정할 수 있게 하며, 예를 들어 컨트롤러의 원하는 핀에 맵핑할 센서의 출력을 지정할 수 있게 하고, 또한 센서로부터 컨트롤러에 의해 수신될 판독 타입(예를 들어, 온도 또는 빛의 세기, 단위, 데이터 포맷 등과 같은 입력 타입)을 지정할 수 있게 한다. 마찬가지로, 컨트롤러의 핀들과, 핀의 출력 타입을 맵핑하여 펌프용 액추에이터를 제어하거나, 또는 펌프가 (액추에이터로서 작동하는) 디지털 제어들을 포함하는 경우, 펌프를 직접 제어할 수도 있다. 이러한 방식으로, 사용자는 GUI에서 사용자가 볼 수 있는 원격 물 탱크 솔루션을 정의한다. 일부 실시예들에 따르면, 사전 정의된 솔루션 템플릿의 선택 시에, 이러한 모든 구성이 자동으로 정의되어 GUI에 표시된다. 일부 실시예들에 따르면, GUI는 필요한 솔루션을 결정하고, 솔루션의 다른 요구 사항들 중에서도 특히 컨트롤러, 센서, 액추에이터, 이들 사이의 연결, 조건 및 동작과 같은 필요한 디바이스들을 식별시키도록 하기 위해 사용자에게 대화식 질문 세트를 제공할 수 있다. 사용자는 이 질문들에 답하여 솔루션을 설계할 수가 있으며, 또한 설계된 솔루션을 사용하여 필요한 하드웨어를 조립하여 솔루션에 필요한 구성을 완성할 수 있다. 일부 실시예들에 따르면, 사용자 디바이스는 하나 이상의 참조 라이브러리에서, 사전 정의된 솔루션 템플릿들, 솔루션의 개별 컴포넌트들, 솔루션 설계에 도움이 되는 질문들, 또는 솔루션 설계에 도움이 되는 기타 자원들을 포함하는 CVS와 통신한다. CVS의 참조 라이브러리는 사전 정의된 솔루션 템플릿들, 솔루션의 개별 컴포넌트들, 질문들 또는 기타 자원들을 GUI 상에서 사용자에게 표시하는 사용자 디바이스에 액세스할 수 있다.
사용자가 GUI를 통해 원하는 솔루션을 확인하면, 설계된 솔루션이 입력으로서 CVS에 전송된다. GUI 상에서 설계된 솔루션의 입력에 응답하여, CVS는 예를 들어 전술한 바와 같은 그리고 도면들을 참조하여 아래에서 상세히 설명되는 바와 같은 방식으로, 물 탱크 솔루션으로 설계된 모든 컨트롤러 디바이스들에 대한 프로그램(AGCP)을 자동으로 생성한다. GUI를 사용하여, CVS와 통신 가능하게 커플링된 사용자는 AGCP를 로컬로 다운로드하여 가상 컨트롤러 환경에서 코드를 테스트할 수 있다. 일부 실시예들에서, 사용자는 GUI를 통해 CVS로부터 각각의 컨트롤러들로 직접 AGCP를 배치하도록 지시할 수 있으며, 배치된 AGCP를 추가로 테스트할 수도 있다. 컨트롤러 디바이스들 상에 배치된 AGCP는 AGCP, 컨트롤러, 연결된 하드웨어(액추에이터, 센서 등), 연결, 동작, 조건, 및 설계된 솔루션의 다른 파라미터의 실행에 대한 상태 정보로 CVS에 의해 업데이트되는 GUI를 통해서 사용자에 의해 모니터링될 수 있다. 필요한 경우, 사용자는 솔루션 생성과 유사한 방식으로 GUI를 사용하여 솔루션을 수정할 수 있다. 수정된 솔루션을 GUI로부터의 입력으로서 수신할 시에, CVS는 필요에 따라 AGCP를 수정 또는 재생성할 수 있으며, 또는 CVS는 AGCP를 수정 또는 업데이트할 필요가 없는 경우 이미 배치된 AGCP에 의해 사용되는 파라미터들만 업데이트할 수 있다. AGCP가 수정 또는 재생성될 경우, 이것이 각각의 컨트롤러에 배치된다. 필요한 경우, 사용자는 GUI를 사용하여 디바이스들 및 이와 관련된 코드를 관리할 수 있으며, 예를 들어, 컨트롤러를 추가하고, 작동 조건이나 파라미터를 변경하고, 새로운 동작, 이러한 동작을 트리거하기 위한 추가 조건 등을 설계된 원격 솔루션 구성에 정의할 수 있다.
일부 실시예들에서, AGCP는 컨트롤러 디바이스들 상에 그러한 코드를 실행하는데 필요한 자원이 없음을 이유로, 컨트롤러 디바이스들 상에서 실행하기에 부적합한 코드의 실행을 위해, CVS에 대한 원격 호출들을 수행한다. 일부 실시예들에서, 이러한 컨트롤러 디바이스로부터의 호출은, 컨트롤러 또는 CVS에 의해서는 제공되지 못하는 FACEBOOK, TWITTER, AMAZON, 데이터 저장 서비스 등과 같은 하나 이상의 원격 서비스와의 상호 작용을 위해서 행해진다. 이러한 원격 호출들은 컨트롤러 디바이스로부터 원격 서비스들로의 직접 호출로서 구현되거나, 또는 CVS 프로그램(CVSP)에 대한 호출로서 구현될 수 있으며, 이것은 결국 원격 서비스들과 상호 작용하여 AGCP 코드의 추가 실행을 위해 컨트롤러 디바이스에게 데이터를 제공한다.
따라서, 본 발명의 실시예들은 사용자 디바이스 상의 GUI를 사용하여, 응용 시스템들에 설치된 하나 이상의 컨트롤러 디바이스 및 사용자 디바이스에 대하여 원격인 코드 가상화 서버를 포함하는 원격 솔루션을 설계, 배치, 모니터링, 수정 또는 재프로그래밍할 수 있다.
도 1은 본 발명의 하나 이상의 실시예들에 따른, 예를 들어 종래의 시스템들(130)(1301,...130q) 또는 시스템들(132)(1321,...132r)에 대한 컨트롤러 기반 원격 솔루션들을 생성 및 관리하기 위한 장치(100)의 개요도이다. 시스템(100)은 종래의 시스템들(130)에(일 대 일, 일 대 다, 또는 다 대 다 형태로) 연결된 다수의 컨트롤러 디바이스들 또는 에지 디바이스들(1021, 1022,...102n)(집합적으로 에지 디바이스들(102)로 지칭함), 종래의 시스템들(132)에(일 대 일, 일 대 다, 또는 다 대 다 형태로) 연결된 다수의 컨트롤러 디바이스들 또는 에지 디바이스들(1031,...103p)(집합적으로 에지 디바이스들(103)로 지칭함), 컨트롤러 디바이스인 게이트웨이(108), 네트워크(110), 사용자 디바이스(112) 또는 사용자 컴퓨터(112), 코드 가상화 서버(CVS)(114) 또는 코딩 서버(114) 및 원격 서비스(118)를 포함한다. 이하의 설명에서, 에지 디바이스들(102, 103) 및 게이트웨이(108)는 집합적으로 "컨트롤러 디바이스들" 또는 "컨트롤러들"로 지칭된다. 컨트롤러로는 ARDUINO, TEXAS INSTRUMENTS LAUNCHPAD, FREESCALE BOARD, KINETIS, ST MICROELECTRONICS STM32, INTEL EDISON 등과 같은 프로그래머블 서브 시스템을 포함한다. 또한, 컨트롤러는 RASPBERRY PI 등과 같은 SoC(System on a Chip)일 수 있다. 컨트롤러의 일부 실시예들은 NEST THERMOSTAT, PHILIPPS HUE, BELKIN, WITHINGS 등과 같은 다른 조립식 디바이스들 및 시스템들의 프로그래밍된 컨트롤러들을 포함한다.
에지 디바이스들(102) 및 게이트웨이(108)는 네트워크(110)에 연결되는 디바이스 그룹(또는 디바이스 그룹(116))을 형성한다. 디바이스 그룹(116)에서, 게이트웨이(108)는 내부적으로는 통신 경로들(1061, 1062,... 106n)을 따라 에지 디바이스들(102)과 통신하며, 외부적으로는 네트워크(110)와 통신한다. 일반적으로 통신 경로들이 무선 경로이지만, 일부 실시예들에서는, 경로들이 유선일 수도 있다. 또한, 일부 실시예들에서, 에지 디바이스들(102)은 파선 경로들(1041, 1042,... 104n)을 따라 그들 사이에서 통신할 수 있으며, 또는 직접 경로들(미도시)을 따라 예를 들어 메쉬 네트워크를 형성하는 모든 또는 일부 다른 에지 디바이스들(102)과 통신할 수 있다. 에지 디바이스들(103)은 네트워크(110)와 직접 통신하고, 파선 경로(109)를 따라 그들 사이에서 통신하며, 일부 실시예들에서는 각 에지 디바이스(103)가 예를 들어 메쉬 네트워크를 형성하는 다른 에지 디바이스(103)와 통신할 수 있다. 단일의 게이트웨이(108)가 도시되어 있지만, 복수의 게이트웨이가 그룹(116) 내에서 사용될 수 있으며, 또는 디바이스 그룹(116)과 유사한 다수의 그룹을 포괄할 수도 있다. 각각의 에지 디바이스(102), 각각의 에지 디바이스(103) 및 게이트웨이(108)는 원격으로 또는 사용자 컴퓨터(112)로부터의 직접 연결을 통해 프로그래밍될 수 있는 컨트롤러 디바이스이다(또는 그것을 포함한다). 일부 실시예들에서, 에지 디바이스들(102), 에지 디바이스들(103) 및 게이트웨이(108) 각각의 컨트롤러는 코드 가상화 서버(114)에 의해 프로그래밍될 수 있다.
각각의 디바이스(에지 디바이스들(102, 103) 및 게이트웨이(108))는 디바이스 컨트롤러(DC) 및 메모리를 포함하며, 전자 디바이스들(ED)을 포함할 수도 있다. 또한, 예를 들어 간략화를 위해, 각 디바이스(에지 디바이스들(102, 103) 및 게이트웨이(108))가 디바이스 컨트롤러 및 메모리를 포함하고 전자 디바이스들(ED)을 포함할 수 있지만, 에지 디바이스(103p)만이 디바이스 컨트롤러(120), 전자 디바이스들(122) 및 메모리(124)를 포함하는 것으로 도시되어 있다. 응용 시스템과 커플링되지 않거나 이를 제어하지 않는 일부 게이트웨이(미도시)에는 전자 디바이스들(ED)이 포함되지 않을 수도 있다. 디바이스 컨트롤러(120)는 마이크로컨트롤러(예를 들어, PIC, AVR 타입, ARM 타입 등)이거나 또는 SoC(예를 들어, RASPBERRY PI)이거나, 또는 본 기술 분야에 일반적으로 알려진 마이크로프로세서일 수 있다. 컨트롤러의 타입은 예를 들어 그러한 디바이스의 응용 및 요구되는 기능에 따라, 디바이스마다 다를 수 있다. 전자 디바이스들(122)은 센서, 라이트, 오디오 스피커, 액추에이터, 디스플레이, 프린터, 스캐너, I/O 디바이스 등을 포함하며, 이에 한정되지 않는다. 전자 디바이스들(122)은 시스템들(131, 132)과 같은 응용 시스템을 제어하거나 관리하기 위한 컴포넌트들을 포함한다. 메모리(124)는 데이터 및 실행 가능한 소프트웨어를 저장하는데 사용되는 임의의 형태의 디지털 스토리지일 수 있다. 이러한 메모리는 랜덤 액세스 메모리, 판독 전용 메모리, 디스크 스토리지, 광학 스토리지 등을 포함하며, 이에 한정되지 않는다. 일부 실시예들에서, 메모리(124)는 운영 체제(미도시)에 대응하는 컴퓨터 판독가능 명령어들을 저장한다. 메모리(124)는 자동 생성 컨트롤러 프로그램(automatically generated controller program, AGCP)(126) 또는 자동 생성 코드 스니펫(automatically generated code snippet)을 포함하는 프로그램, 호출(129), 예를 들어 코드 가상화 서버(114)와 같은 원격 서버 상에서 실행될 함수에 대한 호출, 및 AGCP(126)를 포함하는 코드를 실행하는데 필요한 프로그램 라이브러리들, SDK(software development kit)를 포함하는 다른 코드 컴포넌트들(128)을 더 포함하며, 이 호출(129)은 AGCP(126)에 포함된다. 일부 실시예들에 따르면, AGCP(126)는 코드 가상화 서버(114)로부터 수신되어 메모리(124)에 설치된다. 또한, 컴포넌트들(128)은 에지 디바이스가 게이트웨이(108)를 통해 코드 가상화 서버(114)와 통신하고 게이트웨이(108)가 그러한 통신을 허용할 수 있게 하는 것을 보장할 수 있다.
사용자 디바이스(112)는 CPU(140), 지원 회로들(142) 및 메모리(144)를 포함한다. CPU(140)는 상업적으로 이용 가능한 임의의 프로세서, 마이크로프로세서, 마이크로컨트롤러 등일 수 있다. 지원 회로들(142)은 사용자 인터페이스, 클럭 회로, 네트워크 통신, 캐시, 전원 공급 장치, I/O 회로 등과 같은 기능을 CPU에게 제공하는 잘 알려진 회로들을 포함한다. 일부 실시예들에서, 사용자 인터페이스는 키패드, 전자 버튼, 스피커, 터치스크린, 디스플레이, 또는 다른 사용자 상호 작용 메커니즘을 포함한다. 메모리(144)는 데이터 및 실행 가능한 소프트웨어를 저장하기 위해 사용되는 임의의 형태의 디지털 스토리지일 수 있다. 이러한 메모리는 랜덤 액세스 메모리, 판독 전용 메모리, 디스크 스토리지, 광학 스토리지 등을 포함하며, 이에 한정되지 않는다. 메모리(144)는 운영 체제(미도시)에 대응하는 컴퓨터 판독가능 명령어들, 그래픽 사용자 인터페이스(GUI)(146)를 저장하며, 또한 컨트롤러(103p)를 테스트하거나 배치하기 위해, CVS(114)로부터 다운로드된 AGCP(126)를 저장할 수도 있다. 사용자 디바이스(112)는 종래 시스템 또는 응용 시스템(130 및/또는 132)에 대한 원격 컨트롤러 디바이스 기반 솔루션을 설계, 배치, 수정 또는 관리할 때 네트워크(110)에 커플링된다. 일 실시예에서, 사용자 디바이스(112)는 또한 AGCP의 자동 생성 동안 네트워크(110)를 통해 코드 가상화 서버(114)에 통신 가능하게 커플링된다.
GUI(146)는 주어진 응용 시스템(131, 132)에 대한 원하는 솔루션의 선택 또는 설계, 에지 디바이스들 및/또는 게이트웨이에 대한 AGCP들을 자동으로 생성 또는 수정하기 위한 솔루션 세부 사항들의 CVS(114)에 전송, 에지 디바이스들(102, 103) 및/또는 게이트웨이들(108)에 대한 AGCP들의 테스트 및 배치를 용이하게 한다. 일부 실시예들에 따르면, GUI(146)는 CVS(114)로부터 사전 정의된 솔루션 템플릿, 솔루션을 설계하기 위한 개별 컴포넌트, 솔루션 설계에 도움이 되는 질문이나 노트, 또는 솔루션과 관련된 다른 세부 사항의 목록을 검색할 수 있다. GUI를 사용하여, 사용자는 컨트롤러 기반 원격 솔루션을 설계, 생성, 테스트 및 운용하고, 운용 솔루션을 모니터링하며, 이에 따라 생성된 원격 솔루션을 수정 및 관리한다.
설계된 솔루션은 응용 시스템과 통신 가능하게 커플링되어 이것을 모니터링 및 제어하도록 작동 가능한 하나 이상의 컨트롤러 디바이스를 포함한다. 컨트롤러 디바이스들은 하나 이상의 센서를 사용하여(예를 들어, 물 탱크 시스템의 수위 센서 사용) 응용 시스템을 모니터링하거나, 또는 센서 역할을 하는 응용 시스템의 하나 이상의 요소로부터(예를 들어, 보일러 온도를 전달하도록 구성된 디지털 서모스탯을 포함하는 보일러 시스템으로부터) 시스템 정보를 직접 수신한다. 마찬가지로, 컨트롤러 디바이스들은 하나 이상의 액추에이터(예를 들어, 펌프에 커플링된 액추에이터)를 사용하여 응용 시스템을 제어하거나, 또는 액추에이터 역할을 하는 응용 시스템의 하나 이상의 요소(펌프에 임베드된 디지털 컨트롤러)를 직접 제어한다. 설계된 솔루션은 또한 컨트롤러 디바이스들이 게이트웨이 모드인지 또는 에지 모드인지 여부, 응용 시스템을 모니터링하고 제어하기 위해 설치된 다양한 컨트롤러 디바이스들 간의 연결 세부 사항, 컨트롤러들과 센서들, 액추에이터들 또는 응용 시스템의 요소들 간의 연결 세부 사항에 대한 명세를 포함한다. 또한, 설계된 솔루션은 액추에이터들, 센서들 또는 응용 시스템의 요소들에 대한 명세를 포함할 수도 있다. 설계된 솔루션은 또한 응용 시스템의 조건들에 대한 명세들, 및 그 조건들이 충족될 때 수행될 동작들을 포함한다. 또한, 설계된 솔루션은 응용 시스템의 조건들(예를 들어, 응용 시스템에 커플링된 센서들 또는 액추에이터들에 의해 달성되는 것과 같은)에 대한 정의들 및 이러한 조건들이 충족될 때 컨트롤러 디바이스들에 의해 취해질 동작들을 포함한다. 또한, 설계된 솔루션은 컨트롤러 프로그램(AGCP)들을 실행하기 위한 파라미터들, 컨트롤러 디바이스들에 의해 배치되는 원격 호출들을 기반으로 CVS에서 실행될 함수들에 대한 파라미터들, 또는 원격 서비스들을 프로비저닝하기 위한 파라미터들을 포함할 수 있다. 또한, 설계된 솔루션은 솔루션의 다른 컴포넌트들에 대한 파라미터들, 예를 들어 컨트롤러, 응용 시스템, 조건, 동작, 액추에이터, 센서, 연결(연결 프로파일, 연결 파라미터, 프로토콜) 중 하나 이상의 것에 대한 파라미터들을 포함할 수 있다. 솔루션의 모든 컴포넌트들은 템플릿으로서 선택되거나, 또는 GUI를 사용하여 개별적으로 정의된다. 또한, 설계된 솔루션 또는 그 컴포넌트들은 GUI에서 솔루션을 구축 또는 설계하는 것과 유사한 방식으로, GUI를 사용하여 수정될 수 있다.
일부 실시예들에 따르면, AGCP는 컨트롤러 디바이스들에의 배치를 위해 전송되기 이전에, GUI를 사용하여 에뮬레이트된 컨트롤러 디바이스들을 사용하여 테스트될 수 있다. 일부 실시예들에 따르면, 컨트롤러 디바이스들에 AGCP를 배치한 이후에 GUI를 사용하여 AGCP가 테스트될 수 있다. 일부 실시예들에 따르면, GUI(146)는 또한 컨트롤러들로부터 원격 호출을 할 때 CVS(114) 상에서 실행될 수 있는 함수들의 목록을 검색할 수 있다. 일부 실시예들에서, GUI(146)는 컨트롤러 디바이스용 프로그램을 생성하기 위한 IDE(integrated development environment)를 포함한다. 일부 실시예들에서, GUI(146)는 CVS(114)에 상주하는 소프트웨어이며, 브라우저를 통해 사용자 디바이스(112) 상에 렌더링된다.
코드 가상화 서버(114)는 다양한 참조 라이브러리, API(Application Program Interface), SDK(software development kit), 코드 및 SDK 생성 소프트웨어를 저장한다. CVS(114)는, GUI(146)에서 설계되어 수신되는 솔루션의 입력에 기초하여, 에지 디바이스(102, 103) 및 게이트웨이(108)의 컨트롤러들 각각에 배치하기 위한 자동 생성 컨트롤러 프로그램(automatically generated controller programs, AGCP)(126)을 생성한다. AGCP는 응용 시스템과 관련된 조건이 충족될 경우, 컨트롤러에 의한 실행을 위한 동작을 트리거하는 것에 대응하는 코드를 포함한다. 예를 들어, 응용 시스템에 커플링된 센서 또는 액추에이터가 솔루션에서 조건으로 정의된 상태에 도달할 수 있으며, 이 경우 컨트롤러에 의해 실행하기 위한 동작이 트리거된다. 동작은 액추에이터의 상태를 변경하거나, 코드 가상화 서버(114) 상에서 실행하기 위해 또는 원격 서비스(118)와 상호 작용하기 위해, 프로세스들 또는 함수들에 하나 이상의 원격 프로세스 호출을 하는 것을 포함할 수 있다. 일부 실시예들에서, 코드 가상화 서버(114)는 솔루션과 관련된 파라미터들을 저장한다. 코드 가상화 서버(114)는 또한 GUI(146)로부터 수신되는 인가 또는 명령에 기초하여, 컨트롤러 디바이스들, 예를 들어, 에지 디바이스들(102, 103) 또는 게이트웨이(108) 상에 AGCP(126)를 배치한다. 이 인가는 공지 기술을 사용하여 컨트롤러 디바이스들 상의 AGCP 배치를 검증하기 위해 GUI(146)를 통해 제공되는 로그인 크리덴셜들의 검증을 포함한다. 일부 실시예들에서, 라이브러리는 솔루션 목록, 필요한 하드웨어, 프로세스, 종래의 시스템, 및 사전 정의된 동작 또는 기능의 목록을 포함한다. 일부 실시예들(미도시)에서는, 다른 구성 방식들 중에서, 예를 들어 각 서버가 상이한 디바이스들의 세트와 연관되거나 또는 각 서버가 상이한 함수 호출들의 세트를 실행하도록 지정되는 복수의 코드 가상화 서버들이 존재할 수 있다.
원격 서비스(118)는 제 3 자 서버들 또는 데이터베이스들에 의해 제공되는 사설 또는 공공 서비스들을 포함한다. 예를 들어, 원격 서비스(118)는 제 3 자 데이터베이스들 및 서비스들(예를 들어, AMAZON, EBAY, FACEBOOK, APPLE PUSH NOTIFICATION 서버, 텍스트 메시지 서버, 이메일 서버 등) 또는 내부 데이터 소스(예를 들어, DB, noSQL DB, 파일 등)를 포함한다. 원격 서비스(118)는 네트워크(110) 또는 다른 네트워크를 통해 코드 가상화 서버(114)에 액세스 가능하다. 일부 실시예들에서, 원격 서비스(118)는 컨트롤러 디바이스들(102, 103, 108) 상에서 실행되는 AGCP들에 의해서 직접 액세스될 수도 있다.
네트워크(110)는 인터넷 또는 광역 네트워크(WAN) 또는 그 조합을 포함하며, 하나 이상의 이러한 네트워크를 포함할 수 있다. 시스템(100)의 컨트롤러 에지 디바이스들(103), 게이트웨이(108), 사용자 디바이스(112), CVS(114) 및 원격 서비스(들)(118)는 네트워크(110)를 통해 통신 가능하게 커플링된다. 에지 디바이스들(102)이 예를 들어 도 1에 도시된 바와 같이, 공지된 기술들을 사용하여 서로에 대하여 및 게이트웨이(108)에 커플링되는 반면, 에지 디바이스들(103)은 서로에 대하여 통신 가능하게 커플링된다.
도 2는 본 발명의 일 실시예에 따른 코드 가상화 서버(CVS)(114)의 블록도를 도시한 것이다. 코드 가상화 서버(114)는 범용 컴퓨터이거나 또는 본 발명의 실시예들과 관련된 기능들을 수행하기 위한 특정 목적 컴퓨터가 되도록 프로그래밍된 다른 전자 처리 장치일 수 있다. 코드 가상화 서버(114)는 CPU(200), 지원 회로들(202), 및 명령어들과 알고리즘들을 포함하는 메모리(204)를 포함한다. CPU(200)는 디바이스들에 대한 입력 및 출력을 처리한다. CPU(200)는 상업적으로 이용 가능한 프로세서, 마이크로프로세서, 마이크로컨트롤러 등일 수 있다. 지원 회로들(202)은 사용자 인터페이스, 클럭 회로, 네트워크 통신, 캐시, 전원 공급 장치, I/O 회로 등과 같은 기능을 CPU에 제공하는 잘 알려진 회로들을 포함한다. 대안의 실시예들은 커스텀 ASIC(Application Specific Integrated Circuit) 상의 제어 알고리즘들을 사용할 수도 있다. 일부 실시예들에서, 사용자 인터페이스는 키패드, 전자 버튼, 스피커, 터치스크린, 디스플레이, 또는 다른 사용자 상호 작용 메커니즘을 포함한다. 메모리(204)는 데이터 및 실행 가능한 소프트웨어를 저장하기 위해 사용되는 임의의 형태의 디지털 스토리지일 수 있다. 이러한 메모리는 랜덤 액세스 메모리, 판독 전용 메모리, 디스크 스토리지, 광학 스토리지 등을 포함하며, 이에 한정되지 않는다.
메모리(204)는 운영 체제(미도시)에 대응하는 컴퓨터 판독가능 명령어들, 인터페이스(206), 프로세스 라이브러리(208), SDK 생성기(210), 코드 생성기(212), 솔루션 라이브러리(214), 실행 엔진(216), 및 파라미터 저장소(218)를 포함한다. 일부 실시예들에서, 인터페이스(206)는 예를 들어 GUI(들)(146)와 같은 사용자에게 제공하기 위해 사용자 컴퓨터(112)에 전송되는 GUI들(207)를 포함하는 포털을 생성한다. 사용자 컴퓨터(112) 상에 제공된 하나 이상의 GUI를 사용하여, 사용자는 코드 생성기(212) 및 SDK 생성기(210)에 의한 입력으로서 수신되는 하나 이상의 원하는 솔루션에 관한 입력들을 제공함으로써, 각 컨트롤러 디바이스들에 고유한 언어로 컨트롤러 디바이스들 상에서 실행하기 위한 프로그램(예를 들어, AGCP)을 자동으로 생성한다.
프로세스 라이브러리(208)는 AGCP를 실행하는 컨트롤러로부터 원격 호출을 수신할 시의 실행을 위한 함수들에 대응하는 프로그램들 또는 코드를 포함한다. 이러한 프로그램들을 코드 가상화 서버 프로그램(CVSP)(209)이라 지칭한다. 각각의 함수 또는 프로그램을 "코레오그래프(choreograph)" 또는 "코레오(choreo)"라고도 지칭한다. CVSP(209)는 컨트롤러 디바이스에 의해 호출될 시에, 코드 가상화 서버(114)에서 실행 엔진(216)을 통해 CVSP(209)의 실행을 야기한다. 예를 들어, CVSP(209)는 컨트롤러 디바이스가 달리 수행할 수 없는 특정 함수들을 수행한다. CVSP(209)는 코드 가상화 서버(114), 사용자 디바이스(112) 및 컨트롤러 디바이스들(102, 103 또는 108)에 대하여 원격인 디바이스 상의 하나 이상의 원격 서비스(들)(118)(예를 들어, AMAZON, FACEBOOK, TWITTER 등)의 실행 또는 프로비저닝을 위한 코드를 더 포함할 수 있다.
또한, 프로세스 라이브러리(208)는 종래 시스템에 적용 가능한 모든 프로세스들을 포함한다. 예를 들면, 프로세스 라이브러리(208)는 종래 시스템의 모니터링된 상태(즉, 조건)에 기초하여 액추에이터의 상태를 변경하기 위한 프로세스(프로그램 또는 코드)를 포함한다. 예를 들어, 물 탱크 솔루션의 예에서, 프로세스 라이브러리(208)는 그리드로부터의 공급을 차단하는 프로세스를 포함할 수 있으며, 이 프로세스는 물 탱크 내의 수위가 소정 레벨 이상이 되면 트리거될 수 있다.
SDK 생성기(210)는 컨트롤러 디바이스들 상에서의 AGCP들의 실행을 지원하기 위한 SDK를 생성한다. SDK는 AGCP와 함께 컨트롤러 디바이스들에게 배포될 수 있으며, 에지 디바이스들(102, 103) 또는 게이트웨이(108)의 컴포넌트들(128)에 포함될 수 있다.
코드 생성기(212)는 컨트롤러 디바이스들 상에서 실행하기 위해, 완전한 프로그램 코드를 생성하거나, 또는 완전한 프로그램 코드에 삽입될 코드의 스니펫들을 생성한다. 완전한 프로그램 코드 또는 코드 스니펫들은 사용자에 의해 정의되는 솔루션들의 입력에 응답하여 생성된다. 이러한 코드는 메모리(204)에 저장될 수 있는 자동 생성 컨트롤러 프로그램(AGCP)(126)으로 지칭된다. 사용자에 의해서 GUI를 사용하여 솔루션에 정의되는 경우, AGCP(126)는 코드 가상화 서버(114) 상의 CVSP(209)에 대한 호출을 포함한다. 일부 실시예들에 따르면, AGCP(126)는 GUI(146)로부터 수신되는 사용자 입력에 기초하여, 실행을 위해 컨트롤러 디바이스들에 직접 전송된다. 일부 실시예들에 따르면, AGCP는 GUI(146)로부터 수신되는 사용자 입력에 기초하여 사용자 디바이스(112)에 다운로드되며, 그 후에 사용자는 사용자 디바이스(112)로부터 컨트롤러 디바이스들로 AGCP를 배치할 수 있다.
솔루션 라이브러리(214)는 종래의 시스템들의 컨트롤러 기반 솔루션들에 대한 사전 정의된 정보를 포함한다. 솔루션 라이브러리(214)는 물 탱크 시스템, 냉장고, 보일러 시스템, 주거 가열 시스템 등과 같은 종래의 시스템들 또는 그 컴포넌트들(예를 들어, 도 1의 시스템들(131, 132))의 세부 사항들을 포함한다. 종래의 시스템들의 세부 사항들은 종래의 시스템을 모니터링하고 관리하는데 사용될 수 있는 센서, 액추에이터 등을 포함하는 다양한 전자 디바이스들을 포함한다. 또한, 솔루션 라이브러리(214)는 하드웨어 라이브러리(220)를 포함하며, 이것은 종래 시스템들의 전자 디바이스들과 인터페이스하는데 사용 가능한 컨트롤러 디바이스들의 목록을 포함한다.
솔루션 라이브러리(214)는 사용 가능한 솔루션들, 이러한 솔루션들의 서브 컴포넌트들, 사용자와 상호 작용하는 하드웨어 라이브러리(220)의 하드웨어를 포함하는 언어 프롬프트들 및 몇몇 다른 언어 구성들, 또는 질문들을 더 포함한다. 예를 들어, 솔루션들, 그 내부의 서브 컴포넌트들, 또는 하드웨어를 포함하는 다양한 언어 구성들 또는 질문들을 사용하여 GUI를 통한 적절한 입력들에 대하여 사용자에게 프롬프트하며, 예를 들어 적절한 원격 솔루션을 선택하고, 개별 컴포넌트들을 선택하는 것에 의하여, 또는 사용 가능한 목록에서 하드웨어를 선택 및/또는 식별하는 것에 의하여 그 솔루션을 설계하는 것과 관련하여 사용자에게 프롬프트한다. 입력 요청을 위한 질문들 또는 언어 구성들이 솔루션 라이브러리(214)에 하나 이상의 언어로 저장될 수 있거나, 또는 솔루션 라이브러리(214)가 본 기술 분야에 공지된 동적 언어 엔진을 통합하여 질문들 또는 언어 구성들을 실시간으로 생성할 수도 있으며, 또는 이들의 조합이 채용될 수도 있다. 라이브러리들은 사용자들에게 이해하기 쉬운 여러가지 언어 또는 질문들을 제시함으로써 사용자들이 제공하기 쉬운 입력들을 이끌어내며, 이에 따라 코드 및 기술 전문 용어의 복잡성을 저감 또는 제거한다. 이러한 질문들 또는 언어 구성들은 GUI를 통해, 예를 들어, 사용자 디바이스(112) 상의 GUI(146)를 통해 렌더링된다. 일부 실시예들에 따르면, GUI(146)는 CVS(114) 상의 라이브러리들에 대한 참조가 없는 독립형 GUI이며, 사전 정의된 솔루션 템플릿 세트를 포함하거나, 또는 사용자가 솔루션을 정의하도록 하는 빈 템플릿을 제공한다. GUI(146)에 대한 다양한 포맷들이 당업자에게 이루어질 수 있으며, 이러한 모든 포맷들이 본 명세서에서 고려된다.
물 탱크 솔루션의 예에서, 솔루션 라이브러리(214)는 사용자에게 사용 가능한 솔루션을 쉽게 식별할 수 있는 디스크립터 "물 탱크" 및 다른 동의어, 물 탱크 시스템의 컴포넌트들, 예를 들어 물 탱크, 하나 이상의 공급 그리드, 펌프, 관련 파이프, 적절한 컨트롤러 디바이스들의 목록, 및 전자 디바이스들 예를 들어 펌프에 대한 액추에이터들, 수위 센서들 등을 포함한다. 하드웨어 라이브러리(220)는 액추에이터들 및 수위 센서들과 같은 전자 디바이스들과 호환 가능한 컨트롤러 디바이스들의 목록, 및 컨트롤러 디바이스 및 전자 디바이스들에 관한 모든 파라미터들을 포함한다. 예를 들어, 파라미터들은 액추에이터의 상태들(펌프 "OFF", "LOW SPEED"에서 작동, "HIGH SPEED"에서 작동, 모니터링된 파라미터(예를 들어, 수위), 수위 상태(예를 들어 인치 단위로, 또는 "HIGH", "MEDIUM", "LOW"로))을 포함할 수 있다. 일부 실시예들에서, 컨트롤러 디바이스들 및 전자 디바이스들은 단일의 복합 디바이스로 제조될 수 있으며, 하드웨어 라이브러리(220)는 이러한 복합 디바이스들의 목록을 포함한다.
프로세스 라이브러리(208), 솔루션 라이브러리(214) 및 하드웨어 라이브러리(220)는 함께 "참조 라이브러리(reference libraries)"라고도 불리며, 종래의 시스템들, 이러한 종래의 시스템들의 컴포넌트들, 컨트롤러 디바이스들 및 이러한 종래의 시스템들과 인터페이스하기 위해 필요한 전자 디바이스들에 대해 사용 가능한 솔루션들, 컨트롤러 디바이스들을 작동시키는데 필요한 다양한 프로세스들, 및 이들의 파라미터들에 대한 완전한 풀을 형성한다. 프로세스 라이브러리(208), 솔루션 라이브러리(214) 및 하드웨어 라이브러리(220) 각각은 사용 가능한 솔루션들을 추가, 제거 또는 편집하도록 업데이트될 수 있다. 이러한 업데이트들을 사용하여 컨트롤러 디바이스들 자체에 대한 업그레이드 필요없이도, 컨트롤러 디바이스 기반 원격 솔루션들에 사용할 수 있는 기능들을 향상시킬 수가 있다.
파라미터 저장소(218)는 솔루션과 관련된 파라미터 데이터를 포함하며, 예를 들어 하나 이상의 프로그램들(AGCP들, CVSP들)을 실행하기 위한 파라미터들, 원격 서비스들을 제공하기 위한 파라미터들, 및 이러한 프로그램들 또는 서비스들의 동작을 제어하기 위한 파라미터들을 포함한다. 이러한 파라미터들은 AGCP들, CVSP들, 컨트롤러 디바이스들, 원격 서비스들, 또는 이들과 교환되는 데이터(예를 들어, 메시지)에 액세스하기 위한 인증 세부 사항들을 포함한다. 또한, 파라미터 저장소(218)는 연결 타입, 네트워크 인증 세부 사항 등을 포함하는 다양한 컨트롤러 디바이스들, 센서들 및 액추에이터들 사이의 연결과 관련된 파라미터들을 포함한다. 일부 실시예들에서, 파라미터 저장소(218)는 종래의 시스템의 동작과 관련된 파라미터들, 예를 들어 센서들(예를 들어, 특정 측정 값이 소정의 임계치에 도달하는 것) 또는 액추에이터들(예를 들어, 액추에이터에 의한 동작 완료시)에서의 종래의 시스템의 조건을 포함한다. 또한, 파라미터 저장소(218)는 컨트롤러 디바이스들과 관련된 파라미터들, 예를 들어 컨트롤러 모드(에지 또는 게이트웨이), 하드웨어 타입, 프로세서 타입, 핀 구성들 및 센서들 또는 액추에이터들에 대한 연결을 포함한다.
일부 실시예들에서, 파라미터 저장소(218)는 솔루션의 파라미터들에 대한 특정 값들을 포함한다. 몇몇 실시예들에 따르면, 솔루션의 동작은 파라미터 값들을, 예컨대 GUI(146)와 유사하거나 상이한 제 2 GUI 및 사용자 디바이스(112) 이외의 원격 GUI 디바이스(미도시) 상에서 수정함으로써 수정될 수 있다. 이러한 실시예들에서, 원격 GUI 디바이스들은 네트워크(110)에 통신 가능하게 커플링되며, 사용자들에 의해 수정될 수 있는 파라미터 값들을 제 2 GUI에 디스플레이한다. 또한, 제 2 GUI는 솔루션 데이터, 예를 들어 센서 및 액추에이터 데이터를 디스플레이할 수 있으며, 사용자들은 제 2 GUI를 사용하여 예를 들어 조건에 설정된 제한값들과 같은 파라미터 값들을 수정할 수 있다. 솔루션의 프로그래밍(AGCP, CVSP)을 변경하지 않아도, 솔루션이 해당 동작을 개시할 경우에는 조건에 설정된 제한값들이 변경된다. 마찬가지로, 제 2 GUI를 사용하는 사용자들은 액추에이터와 관련된 파라미터 값들을 수정할 수 있으며, 예를 들어 액추에이터의 출력을 변경시킬 수 있다. 액추에이터의 출력 변경은, 솔루션의 프로그래밍(AGCP, CVSP)을 변경함 없이도, 해당 조건이 충족될 경우 개시되는 동작을 변경한다.
일부 실시예들에 따르면, 값들이 변경될 수 있는 파라미터들 또는 제 2 GUI를 통한 모니터링을 필요로 하는 파라미터 값들이, 솔루션을 구축하는 동안에 또는 그 이후의 시간에 지정될 수 있다. 일부 실시예들에서는, 모니터링된 파라미터 데이터(예를 들어, 센서 데이터, 액추에이터 데이터)를 컨트롤러 디바이스들로부터 제 2 GUI로 전송하고, 모니터링된 파라미터 데이터와 연관된 파라미터 값들의 수정을 수신하기 위해, 네트워크(110)에 연결된 제 2 서버(미도시)가 사용된다. 이러한 실시예들에서는, (제 2 GUI를 사용하여 배치되거나 업데이트된) 파라미터 값들이 CVS(114)의 파라미터 저장소(218)와 유사한 방식으로 제 2 서버에 저장되며, 모니터링된 파라미터 데이터는 사전 정의된 시간 간격으로, 연속적으로, 스트리밍 모드에 있거나, 또는 응용 시스템의 조건이 충족되는 등의 이벤트에 기초하는 제 2 서버에 의해서 모니터링된다. 또한, 제 2 서버는 고정된 간격으로, 연속적으로 또는 스트리밍 모드 시에, 또는 응용 시스템의 조건이 충족되는 등의 이벤트에 기초하여, 이 데이터(모니터링된 파라미터 데이터)를 제 2 GUI에게 전송한다. 이러한 실시예들에서, AGCP 및/또는 CVSP는 제 2 서버에 저장된 파라미터 값들을 사용하여 실행된다. 일부 실시예들에서는, 제 2 GUI가 제 2 서버에 의해서 생성되어 원격 GUI 디바이스들에게 렌더링된다. 일부 실시예들에서, 제 2 서버는 CVS(114)의 일부로서 구현되며, 일부 실시예들에서는 제 2 서버가 원격 서비스(118)로서 구현된다.
프로파일(218)에 포함되는 파라미터들의 예(한정이 아님)가 표 1에 도시되어있다.
타입 파라미터 예/코멘트
일반 프로파일 이름 파라미터 세트 이름(서브-프로파일들 포함)
하드웨어 프로파일 하드웨어 타입 Arduino Uno, Arduino Yun, Texas Instruments CC3200, Raspberry PI 등
하드웨어 프로파일 프로세서 타입 AVR, ARM, PIC 등
하드웨어 프로파일 네트워크 하드웨어 Arduino Wifi Shield, Built-in Ethernet, Ethernet Shield, BLE Shield, Built-in BLE
크리덴셜 프로파일
사용자 이름

Facebook 등의 웹서비스를 위한 사용자 이름
크리덴셜 프로파일
패스워드

Facebook 등의 웹서비스를 위한 패스워드
크리덴셜 프로파일
API 키
Facebook 등의 웹서비스에 의해 주어진 개발자 API 키
다수의 API 키가 존재할 수 있음
크리덴셜 프로파일
API 시크릿
Facebook 등의 웹서비스에 의해 주어진 개발자 API 시크릿
다수의 API 시크릿이 존재할 수 있음
연결 프로파일 연결 프로파일 이름
상이한 연결 프로파일들을 선택하는 것을 허용
연결 프로파일
타입

Wifi, Bluetooth, Zigbee, Z-WAVE, THREAD, LORA, 6LOWPAN,...
연결 프로파일
보안 타입

WPA, WEP, unsecured,..
연결 프로파일
SSID

Wifi 네트워크 식별자
연결 프로파일
패스워드

네트워크 패스워드
연결 프로파일 전송 프로토콜
MQTT, CoAP, HTTP/S, TCP/IP..
연결 프로파일
역할

게이트웨이 또는 에지
셋업 프로파일
출력 핀
프로세서 상에 어느 출력 핀이 선택되는지를 표시함(복수의 출력 핀이 선택될 수 있음)
셋업 프로파일
입력 핀
프로세서 상에 어느 입력 핀이 선택되는지를 표시함(복수의 입력 핀이 선택될 수 있음)
셋업 프로파일
핀 규칙
주어진 핀(입력 또는 출력)에 어떤 규칙을 적용할지 지정.
예를 들어, 온도 = 19인 경우, 핀 12에 하이(High)를 기록함
입력 프로파일 필수적 입력 파라미터 호출된 변수일 수도 있음. 코레오가 실행될 필요가 있는 파라미터일 수 있음. 복수의 입력 파라미터일 수 있음. 예를 들어, 이메일을 전송하는 코레오는 이메일 주소, 제목, 본문, 첨부 파일 등과 같은 입력 파라미터들을 필요로 함
입력 프로파일 선택적 입력 파라미터 선택적 입력 파라미터들을 사용하여 필수적이지 않은 파라미터들을 추가함. 복수의 선택적 입력 파라미터들이 가능. 예를 들어, 이메일을 전송하는 코레오는 CC, BCC 또는 암호화 타입 등과 같은 선택적 입력 파라미터들을 가짐
파라미터 저장소(218)는 AGCP(126), 결국 호출된 CVSP(209) 및/또는 원격 서비스(118)의 원하는 동작에 따른 파라미터들을 포함한다. 본 발명의 일부 실시예들에 따르면, 파라미터 저장소(218)는 사용자 디바이스(112)의 GUI(146) 상에서 사용자에 의해 입력되어, 파라미터 저장소(218)에 전송된 파라미터들을 포함한다. 일부 실시예들에 따르면, AGCP 코드 자체를 변경하지 않고 특정 파라미터들을 수정함으로써 AGCP 코드의 동작을 제어할 수 있다. 예를 들어, 원격 서비스의 인증 세부 사항들과 관련된 파라미터들을 수정하는 경우 AGCP 코드를 수정하거나 재생성할 필요가 없다. 일부 실시예들에서는, 파라미터들의 수정 시에(예를 들어 컨트롤러 구성과 관련된 파라미터들) AGCP 코드를 수정하거나 재생성할 필요가 있을 수 있다.
실행 엔진(216)은 예를 들어 컨트롤러 디바이스들(112)에 의해 호출된 CVSP(choreo)를 실행하고, 또한 사용자 디바이스(112), 코드 가상화 서버(114) 및 컨트롤러 디바이스들(102, 103 또는 108)에 대하여 원격인 디바이스 상의 원격 서비스(118)를 실행하며, 시스템(100)의 다양한 컴포넌트들 간의 상호 연동을 용이하게 함으로써, 앞에서 설명한 모든 기능들을 지원한다. 실행 엔진(216)은 사용자가 사용자 디바이스(112) 상의 GUI(146)를 통해 컨트롤러 디바이스들을 프로그래밍하고, 코드 가상화 서버(114) 및 원격 서비스(118)를 통해 컨트롤러 디바이스들에게 확장 기능을 제공할 수 있도록 하기 위해 전술한 각 기능 블록들을 이용한다.
일부 실시예들에서는, CVSP를 실행한 이후에, CVS(114)가 추가 처리를 위해 호출 실행 결과 데이터를 컨트롤러 디바이스로 반환한다. 이 결과 데이터는 컨트롤러 디바이스 타입에 고유한 포맷으로 전송됨으로써, 컨트롤러 디바이스가 예를 들어 컨트롤러 디바이스에 저장된 AGCP의 실행을 계속하는 것에 의해 이러한 데이터를 더 처리할 수 있게 한다. CVS(114)는 공지의 기술을 사용하여 컨트롤러 디바이스 타입의 고유 포맷으로 결과 데이터를 생성하거나, 결과 데이터를 컨트롤러 디바이스 타입의 고유 포맷으로 변환한다. 다른 실시예들에서는, 결과 데이터가 그 동작을 계속하기 위해 컨트롤러 디바이스에서 요구되지 않으며, 이러한 실시예들에서, 코드 가상화 서버는 AGCP로부터의 호출에 응답하여 실행된 CVSP 코드(또는 추상화된 코드)의 실행이 완료되었다는 표시 또는 확인만을 전송하기만 한다.
설명의 단순화를 위해, 본 명세서에서 설명되는 실시예들은 코드 가상화 서버(114)가 솔루션을 모니터링하고 제어하기 위한 GUI들을 생성하는 것으로 나타낸다. 일부 실시예들에서는, 전술한 바와 같이, 솔루션들을 모니터링하고 제어하기 위한 GUI들이 코드 가상화 서버와는 다른 원격의 독립 서버 상에서 구현된다. 또한 전술한 바와 같이, 본 명세서에서 설명되는 코드 가상화 서버(114)의 몇몇 기능 중 임의의 하나 이상의 기능은 당업자가 쉽게 알 수 있는 코드 가상화 서버와는 독립적인 둘 이상의 서버를 통해 구현될 수 있으며, 이러한 모든 구현이 본 명세서에 고려된다.
도 3은 본 발명의 실시예들에 따른, 컨트롤러 기반 원격 솔루션을 생성하기 위해 코드 가상화 서버(CVS)(114)에 의해 실행되는 방법(300)의 흐름도를 도시한 것이다. 일부 실시예들에서, 방법(300)은 코드 가상화 서버(114)의 인터페이스(206)와 상호 작용하는 GUI, 예를 들어 사용자 디바이스(112)의 GUI(146)의 조작에 응답하여 실행된다. 일부 실시예들에서, GUI(146)는 예를 들어 사용자 디바이스 상의 INTERNET EXPLORER, GOOGLE CHROME, MOZILLA FIREFOX와 같은 네트워크 브라우저를 통해 구현되는 GUI(207)이다. 일부 실시예들에서, GUI(146)는 사용자 디바이스(112) 상의 독립형 GUI이다.
방법(300)은 단계(302)에서 시작하여 단계(304)로 진행하며, 이 단계(304)에서 방법(300)은, CVS(114)에서, GUI(146) 상에서 설계된 솔루션의 입력을 수신한다. 솔루션은 응용 시스템(예를 들어, 물 탱크, 보일러, 냉동 시스템)에 배치된 하나 이상의 센서들 및/또는 액추에이터들과 통신 가능하게 커플링되어 이들을 제어하도록 작동될 수 있는, 도 1의 컨트롤러들(102, 103 또는 108)과 같은 하나 이상의 컨트롤러를 포함한다. 이 센서들 및/또는 액추에이터들은 전자 디바이스들, 예를 들어 전자 디바이스들(122)로 지칭될 수도 있다. 컨트롤러들(103 및 108)이 CVS(114)에 직접 통신 가능하게 커플링되는 반면, 컨트롤러(102)는 컨트롤러(108)를 통해 CVS(114)에 통신 가능하게 커플링된다. 모든 컨트롤러들(102, 103, 108)은 CVS(114) 및 사용자 디바이스(112)에 대해 원격이다. 솔루션은 예를 들어, 센서들 및/또는 액추에이터들에서의 응용 시스템에 대한 조건의 명세를 더 포함한다. 이 조건은 센서의 상태(측정되는 양의 특정 임계값) 또는 액추에이터의 상태(동작 완료)를 포함할 수 있으며, 이 솔루션을 기반으로 추가 동작을 취하도록 설계될 수 있다. 이 솔루션은 지정된 조건이 충족될 경우 컨트롤러에 의해 실행될 동작의 정의를 포함한다. 이 솔루션은 또한 솔루션에 대한 하나 이상의 파라미터, 예를 들어 위에서 논의된 다양한 파라미터들을 포함한다. 이 솔루션이 CVS(114)에 저장되며, 다음과 같이 더 운용된다.
방법(300)은 단계(306)으로 진행하며, 이 단계(306)에서 방법(300)은, CVS(114) 상에서, 컨트롤러들(102, 103, 108)에 실행하기 위한 프로그램을 자동으로 생성한다. 자동 생성 컨트롤러 프로그램(AGCP)(126)은 솔루션에 지정된 조건이 충족되는지를 체크하기 위한 코드 및 솔루션에 지정된 동작을 실행하기 위한 코드를 포함한다. AGCP는 그것이 생성되는 컨트롤러에 고유한 언어로 생성된다. 또한, AGCP는 그 프로그램의 실행을 돕기 위한 SDK 또는 다른 코드 컴포넌트들을 포함할 수도 있다. 일부 실시예들에서, SDK 또는 코드 컴포넌트들은 개별적으로 생성될 수 있으며, AGCP에 포함되지 않을 수도 있다. AGCP에는 컨트롤러들의 입력 및 출력을 관리하면서, 액추에이터들 및 센서들과 데이터를 적절히 송수신하기 위해 센서들 또는 액추에이터들에게 이러한 입력 및 출력을 지정하는 코드가 포함된다. 예를 들어, AGCP는 GUI(146) 상에서 사용자에 의해 정의되는 솔루션에 따라, 센서들 또는 액추에이터들에서의 상태를 모니터링하고, 액추에이터들에게 지시하고, 다른 컨트롤러들(예를 들어, 게이트웨이), CVS(114)와 통신하거나 또는 원격 서비스(118)와 직접 통신하기 위한 컨트롤러들의 특정 입력 및 출력 포트들(예를 들어, 핀들)을 등록하기 위한 코드를 포함한다.
방법(300)은 단계(308)로 진행하며, 이 단계(308)에서 방법(300)은 예를 들어, GUI(146)를 사용하여 사용자가 컨트롤러 디바이스들 상에 AGCP를 설치하기 위해, 사용자 디바이스(112) 상의 스토리지(예를 들어, 메모리(144))로 AGCP를 다운로드한다. 대안적으로, 단계(308)에서, 방법(300)은 GUI(146)로부터 수신된 입력에 기초하여, 설치를 위해서 컨트롤러 디바이스들에 직접 AGCP를 전송한다. 방법(300)은 단계(310)로 진행하며, 이 단계(310)에서 방법(300)이 종료된다.
방법(300)에 따라 컨트롤러 디바이스들 상에 설치되는 AGCP는, 컨트롤러 디바이스들에 의해 실행될 때에, 지정된 솔루션의 조건이 충족되는지를 체크하고, 조건이 충족될 시에는, 솔루션에 지정된 동작을 실행하도록 기능한다. 이러한 동작들은 몇몇 다른 프로그램 가능한 동작들 중에서도, 특히 액추에이터가 추가적인 동작들을 취하도록 지시하고, CVS(114) 또는 다른 지정된 디바이스에게 상태 정보를 전송하고, 컨트롤러 디바이스들에 대하여 원격인 프로그램을 실행하기 위한 원격 호출을 하는 것을 포함할 수 있다.
도 4는 본 발명의 실시예들에 따른, 컨트롤러 기반 원격 솔루션을 관리하기 위해 코드 가상화 서버(CVS)(114)에 의해 실행되는 방법(400)의 흐름도를 도시한 것이다. 방법(300)과 유사하게, 방법(400)은 GUI(146)의 조작에 응답하여 실행된다. 임의의 시점에서, 필요에 따라 방법(400)의 단계들 중 단 하나의 단계 또는 몇몇 단계들이 구현될 수 있다. 솔루션을 관리(모니터링 및 수정)하기 위해, 방법(400)의 모든 단계들의 구현이 반드시 필요한 것은 아니다.
방법(400)은 단계(402)에서 시작하여, 선택적 단계(404)로 진행하며, 이 단계(404)에서 방법(400)은 컨트롤러 디바이스들로부터의 원격 호출에 기초하여, CVS(114) 상에서 실행되기 위한 사전 정의된 솔루션 템플릿, 컨트롤러, 센서, 액추에이터, 조건, 동작 또는 함수 중 하나 이상의 것에 대한 식별자들을, GUI(146)를 사용한 디스플레이를 위해서 사용자 디바이스(112)에 전송한다. 방법(400)은 단계(406)으로 진행하며, 이 단계(406)에서 방법(400)은 예를 들어 도 3의 방법(300)에 따라, GUI(146) 상에서 설계된 솔루션의 입력을 수신하고, 솔루션의 다양한 컨트롤러들에 대한 AGCP들을 생성함으로써, 응용 시스템을 위한 컨트롤러 기반 원격 솔루션을 생성한다.
방법(400)은 단계(408)로 진행하며, 이 단계(408)에서 방법(400)은 솔루션의 하나 이상의 컴포넌트, 예를 들어 컨트롤러, 센서, 액추에이터, 조건, 동작, 또는 파라미터에 대한 상태 정보를 컨트롤러들로부터 요청하고, 단계(410)에서, 방법(400)은 요청된 상태 정보를 수신한다. 일부 실시예들에 따르면, 컨트롤러들은 예를 들어 단계(408)에서 이루어진 바와 같은 방법으로부터의 요청을 필요로 함 없이, 상태 정보를 방법(400)으로 자동 전송한다. 예를 들어, 컨트롤러들은 조건이 충족된 것을 포함하는 시전 정의된 이벤트의 발생 시에, 사전 정의된 간격으로 상태 정보를 자동으로 전송할 수 있으며, 또는 상태 정보를 연속적으로 스트리밍할 수도 있다.
방법(400)은 선택적 단계(412)로 진행하며, 이 단계(412)에서 방법(400)은 솔루션의 하나 이상의 컴포넌트, 예를 들어 컨트롤러, 센서, 액추에이터, 조건, 동작 또는 파라미터의 상태 정보에 대한 요청을, 예를 들어 GUI(146)로부터 수신한다. 방법(400)은 단계(414)로 진행하며, 이 단계(414)에서 방법(400)은 상태 정보를 GUI(146) 상에서의 디스플레이를 위해 사용자 디바이스(112)에게 전송한다. 방법(400)은 예를 들어, 조건이 충족된 것을 포함하는 사전 정의된 이벤트의 발생 시에, 사전 정의된 간격으로 자동으로 상태 정보를 전송할 수 있거나, 또는 사용자 디바이스에 연속적으로 상태 정보를 스트리밍할 수 있다. 일부 실시예들에 따르면, 상태 정보는 선택적 단계(412)에서 수신된 요청에 응답하여 단계(414)에서 전송된다.
방법(400)은 단계(416)로 진행하며, 이 단계(416)에서 방법(400)은 GUI(146)로부터 솔루션의 하나 이상의 컴포넌트의 수정을 위한 입력을 수신한다. 방법(400)은 단계(418)로 진행하며, 이 단계(418)에서 방법(400)은 수신된 수정에 기초하여 파라미터 저장소(218) 내의 파라미터들을 자동으로 업데이트하거나, 또는 방법(400)은 수신된 수정에 기초하여 AGCP(126)를 수정 또는 재생성하고, 이 수정 또는 재생성된 AGCP(126)를 그 수정이 수신된 대응하는 컨트롤러들에게 전송한다. 솔루션 수정이 컨트롤러 또는 그 구성에 관한 것일 경우, 예를 들어 컨트롤러 타입 또는 프로세서 타입의 변경, 센서 또는 액추에이터와 관련된 핀의 변경에 관한 것일 경우, AGCP가 수정 또는 재생성된다. 컨트롤러, 센서 또는 액추에이터의 구성 변경과 관련이 없는 파라미터가 수정될 경우에는, 일반적으로 AGCP의 수정 또는 재생성이 필요하지 않다. 이러한 경우들에 있어서는, 파라미터들이 파라미터 저장소(218)에서 업데이트되며, 결과적으로 업데이트된 파라미터들이 AGCP에 액세스 가능하다.
방법(400)은 단계(420)로 진행하며, 이 단계(420)에서 방법은 공지된 기술을 사용하여, 컨트롤러들 상의 AGCP 실행을 위한 테스트를 개시한다. 이 테스트는 예를 들어 CVS(114)로부터 AGCP들을 배치한 이후에 물리적 컨트롤러들 상에서 수행되거나, 또는 예를 들어 사용자 디바이스(112)에 다운로드된 AGCP들 및 GUI(146)를 사용하여, 에뮬레이트된 컨트롤러들 상에서 수행될 수 있다. 단계(422)에서, 방법(400)은 테스트 결과를 GUI(146) 상에 표시하기 위해 사용자 디바이스(112)에 전송한다. 방법(400)은 단계(424)로 진행하며, 이 단계(424)에서 방법(400)이 종료된다.
도 5는 본 발명의 일 실시예에 따른, 컨트롤러 디바이스(디바이스들(102, 103) 또는 게이트웨이(108)), 코드 가상화 서버(114) 및 원격 서비스(118) 상에서의 원격 솔루션 동작을 위한 방법(500)을 도시하는 흐름도이다. 방법(500)은 컨트롤러 디바이스 상에서 단계(502)로 시작하여 단계(504)로 진행하며, 이 단계(504)에서 방법(500)은 컨트롤러 디바이스 상에 AGCP(126)를 설치한다. AGCP(126)는 컨트롤러 디바이스와 관련된 사전 정의된 프로그램 코드 또는 프로세스, 및 대응하는 SDK를 포함한다. AGCP(126)는 기능에 대응하는 프로그램을 실행하기 위한 원격 디바이스에 대한 호출을 포함한다. 예를 들어, 이 호출은 코드 가상화 서버(114) 상의 CVSP(209)에게 지시될 수도 있다. 단계(506)에서, 방법(500)은 컨트롤러 디바이스 상에서 AGCP(126)를 실행하기 시작한다. AGCP(126)의 설치 및/또는 실행은 코드 가상화 서버(114)에 의해 개시되거나 또는 사용자 디바이스(112) 상의 GUI(146)에 의해 개시될 수 있다. 실행 과정 중에, AGCP는 예를 들어, 도 3의 방법(300)에 따라, AGCP 생성의 기초가 된 솔루션에서 지정된 바와 같이, 커플링된 센서들 또는 액추에이터들에서의 조건이 충족되는지를 모니터링한다. 단계(508)에서, 조건이 충족될 경우, AGCP는 솔루션에서 지정된 동작을 실행한다. 일부 실시예들에 따르면, 이 동작은 액추에이터를 동작시키는 것, GUI에 디스플레이하기 위한 센서 또는 액추에이터 데이터를 전송하는 것, 또는 원격 디바이스, 예를 들어 CVS(114)에서 실행하기 위한 프로세스에 대한 원격 호출을 하는 것을 포함한다. 액추에이터를 동작시키는 것은 컨트롤러 상의 AGCP에 대한 통상적인 실행 과정에서 달성되며, 이러한 경우들에 있어서, 이 동작은 컨트롤러 상에서 방법(500)의 실행을 계속하는 것이다. 이러한 경우들에 있어서는, 원격 호출이 행해지지 않으며, 방법(500)의 실행이 컨트롤러 밖으로 시프트될 필요가 없는 경우, 방법(500)은 단계(518)로 직접 진행한다.
원격 호출을 하거나, GUI에 센서 데이터 또는 액추에이터 데이터를 전송하는 것은(GUI에 센서 데이터 또는 액추에이터 데이터를 전송하도록 행해진 원격 호출일 수도 있음), 컨트롤러로부터 CVS(114)로의 방법(500)의 실행 시프트를 필요로 하며, 이러한 경우들에 있어서, 이 동작은 CVS(114)에게 원격 호출을 하는 것이다. CVS(114)는 원격 호출에 대응하는 프로그램(CVSP)을 포함하며, 원격 호출의 수신 시에, 방법(500)은 CVS(114)에서의 단계(510)으로 진행하며, 이 단계(510)에서 방법(500)이 CVSP를 실행한다. 예를 들어, 방법(500)은 실행 엔진(216)을 사용하여 프로세스 라이브러리(208)로부터 CVSP(209)를 실행한다. 예를 들어, 단계(510)에서, 방법(500)은 GUI(146) 상에서의 디스플레이를 위해 컨트롤러로부터 사용자 디바이스로 센서 및/또는 액추에이터 데이터를 전송할 수 있다. 일부 실시예들에 따르면, CVSP(209) 및 원격 호출(129)의 실행 완료 시에, 방법(500)은 단계(512)로 진행한다.
일부 실시예들에서, AGCP(126) 및 원격 호출(129)은 원격 서비스(118)를 실행하도록 부가적으로 구성되며, 이러한 실시예들에서, 단계(510)는 선택적 단계들(514 및 516)을 더 포함한다. 단계들(514 및 516)에서, 방법(500)의 실행은 컨트롤러 디바이스들, 코드 가상화 서버 및 사용자 디바이스에 대하여 원격인 디바이스에 의해서 실행되는 원격 서비스(118)로 시프트된다. 방법(500)은 단계(514)에서 원격 서비스(118)를 실행하여 단계(516)로 진행하며, 이 단계(516)에서 방법(500)은, 원격 서비스(118)의 실행에 의해 생성되는 경우, 서비스 데이터를 단계(510)로 반환한다. 원격 서비스(118)의 실행을 포함하는 CVSP(209)의 실행은 단계(510)에서 완료된다. 방법(500)은 단계(512)로 진행하며, 이 단계(512)에서 방법(500)의 실행이 코드 가상화 서버(114)로부터 컨트롤러 디바이스로 복귀된다. 일부 실시예들에 따르면, 방법(500)의 실행과 함께 컨트롤러 디바이스에 반환되는 임의의 데이터는, 컨트롤러 디바이스의 언어에 고유하거나 호환 가능한 포맷으로 변환된다. 단계(518)에서, 방법(500)은 컨트롤러 디바이스 상에서의 AGCP(126)의 실행을 계속한다. 일부 실시예들에서는, 코드 실행이 코드 가상화 서버(114) 상의 단계(510)에서 완료될 수 있으며, 어떠한 추가적인 코드 실행도 단계들(512 및 518)에서 발생할 수 없다. 방법(500)은 단계(420)로 진행하며, 이 단계(420)에서 방법(500)이 종료된다.
도 6은 본 발명의 일 실시예에 따라 생성된 원격 솔루션(600)을 도시한 것이다. 종래의 시스템(630)은 탱크(632), 워터 그리드(water grid)(636)에 커플링된 펌프(622-B), 빗물 집수 공급장치(634) 및 수위 센서(622-A)를 포함한다. 본 발명의 실시예들에 따르면, 솔루션(600)은 도 1의 에지 디바이스(102), 게이트웨이 디바이스(108), 사용자 디바이스(112), 코드 가상화 서버(114) 및 원격 서비스(들)(118)과 각각 유사한, 에지 디바이스(602), 게이트웨이 디바이스(608), 네트워크(610), 사용자 디바이스(612), 코드 가상화 서버(614) 및 원격 서비스들(618-A, 618-B 및 618-C)을 포함한다. 에지 디바이스(602)는 사용자 디바이스(612) 상의 GUI(미도시)를 통해 사용자에 의해서 구성되며 코드 가상화 서버(614)에 의해 구현되는 솔루션에 따라 종래 시스템(630)을 관리하기 위해, 예를 들어 무선 수단(606)을 통해 게이트웨이 디바이스(608)에 통신 가능하게 커플링된다. 또한, 에지 디바이스(602)와 종래 시스템의 컴포넌트들, 예를 들어 센서(622-A) 또는 펌프(622-B) 간의 통신 연결은 유선 또는 무선일 수 있다.
게이트웨이 디바이스(608) 및 에지 디바이스(602) 각각은 방법(300)에 따른 각각의 AGCP로 구성된 컨트롤러 디바이스이다. AGCP는 에지 디바이스(602) 및 게이트웨이 디바이스(608)에 대하여 원격인 디바이스(예를 들어, 코드 가상화 서버(614))에 대한 호출을 포함한다. 게이트웨이 디바이스(608)는 네트워크(610)를 통해 에지 디바이스(602)로부터의 호출들을 적절히 라우팅하도록 구성된다. 통상적으로, 이 호출들은 AGCP에서의 호출에 따라 원하는 기능을 갖는 프로세스를 포함하는 코드 가상화 서버(614)에 대하여 이루어진다. 일부 실시예들에서, 코드 가상화 서버(614) 및 원격 서비스들(618-A, 618-B, 618-C)은 네트워크(610)를 통해 게이트웨이(608)에 통신 가능하게 커플링된다. 일부 실시예들에서, 코드 가상화 서버(614)는 CVSP 및 실행 엔진을 포함하는 프로세스 라이브러리를 포함한다. 일부 실시예들에서, 에지 디바이스(602)로부터의 호출은 게이트웨이(608)를 통해 코드 가상화 서버(614) 상의 CVSP(미도시)에 대하여 이루어지며, 이 코드 가상화 서버(614)는 CVSP를 실행하여 결국 원격 서비스, 예를 들어, NEXMO INC.에 의해 제공되는 바와 같은 전화 서비스(618-A), 또는 YAHOO! INC.에 의해 제공되는 바와 같은 날씨 예보 서비스(618-B), 또는 물 탱크 시스템(630)에 대한 관리 회사에 컴플레인 티켓을 발행하는 티켓팅 시스템 서비스(618-C) 중의 하나 이상의 것을 실행한다.
일부 실시예들에 따르면, 전화 서비스(618-A)는 물 탱크에서 문제가 감지되는 경우 또는 사용자가 설정한 특정 조건이 충족될 시에 사용자 또는 배관 회사에 통지하는데 사용된다. 예를 들어, 사용자는, 센서(622-A)에 의해 측정되는 탱크(632) 내의 수위가 낮을 경우, 에지 디바이스(602)가 전화 서비스(618-A)를 사용하여 호출을 함으로써 사용자에게 통지할 것을, 사용자 디바이스의 GUI를 사용하여 입력되는 파라미터들을 통해 지정할 수가 있다. 또한, 에지 디바이스(602)는 물을 그리드(636)로부터 탱크(632)로 공급하기 위해 펌프(622-B)를 작동시키도록 구성된다. 다른 예로서, 비가 예상되는 경우에 그리드 물 공급장치(636)를 사용하는 것을 지연시키기 위해서, 날씨 예보 서비스(618-B)가 본 발명의 실시예들에 의해 구현되는 솔루션(600)에 의해 사용될 수 있다. 예를 들어, 사용자는, 당일의 날씨 예측이 비가 올 것인 경우, 센서(622-A)에 의해 측정된 탱크(632) 내의 수위가 낮더라도, 그리드(636)로부터 탱크(632)로 물을 공급하지 않도록, AGCP 또는 CVSP에 조건을 지정할 수가 있다. 일부 실시예들에 따르면, 에지 디바이스(602)는 수위가 낮지만 예상되는 비 때문에 워터 그리드가 물을 공급하고 있지 않다는 것을 사용자에게 통지한다. 이러한 서비스 및 다른 서비스의 몇몇 유사한 응용들이 본 명세서에서 설명된, 그리고 청구범위에 규정된 실시예들의 범위 및 사상을 일탈하지 않는 범위 내에서 당업자에게 용이하게 이루어질 수 있다.
본 발명의 실시예들은 종래의 시스템들을 작동 및 관리하기 위한 컨트롤러 기반 원격 솔루션을 설계, 생성 및 배치하기 위한 솔루션 중심의 접근방식을 제공한다. 본 발명의 실시예들은 또한 이와 같이 생성된 원격 솔루션들의 관리를 제공한다. 본 발명의 실시예들은 또한 예를 들어 코드 가상화 서버로 업데이트함으로써 컨트롤러의 수정없이도 원격 솔루션의 용량을 향상시킬 수가 있다.
본 명세서에서 설명된 방법(300)이 사용자 컴퓨터(112) 상의 GUI(146)를 이용하여 코드 가상화 서버(114)에 원격으로 액세스함으로써 원격 솔루션들을 생성 및 관리하고 있지만, 이 원격 솔루션은 예를 들어 인터페이스(206) 또는 GUI(207)를 사용하여, 코드 가상화 서버(114)에 직접 액세스함으로써 생성 및 관리될 수도 있다. GUI(146)는 응용 시스템들에 대한 컨트롤러 기반 솔루션들을 설계, 테스트, 모니터링 및 수정하는 입력들을 수신하기 위한 툴들을 제공하기 위해 다양한 형태를 취할 수 있다. GUI(146)는 입력들을 수신하고 정보 또는 출력들을 제공하기 위해 GUI들에서 통상적으로 사용되는 몇몇 다른 요소들 중에서도 특히 선택 가능한 텍스트, 폼 필드, 솔루션의 요소들 또는 파라미터들을 나타내는 아이콘, 솔루션의 상태를 표시하는 그래프 및 테이블을 포함할 수 있다. 당업자라면 쉽게 알 수 있는 바와 같이, 이러한 다양한 GUI들의 변형을 사용하여, 본 발명의 범위 및 사상을 일탈하지 않는 범위 내에서 본 설명된 실시예들을 실시할 수가 있다. 실시예들이 IoT(Internet of things) 디바이스들과 관련하여 설명되었지만, 당업자는 개시된 실시예들에 의해 예시된 기술이 몇몇 다른 프로그래밍 환경에 적용 가능하다는 것을 용이하게 이해할 것이다.
본 명세서에서 설명된 방법들은 상이한 실시예들에서 소프트웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 본 방법들은 비일시적 컴퓨터 판독가능 매체 상에 저장되는 프로세서 실행 가능 명령어들에 통합될 수도 있다. 또한, 방법들의 순서가 변경될 수도 있으며, 다양한 요소들이 추가, 재정렬, 결합, 생략 또는 수정될 수도 있다. 본 명세서에서 설명된 모든 예들은 비제한적인 방식으로 제시된 것이다. 본 개시의 이득을 가지는 당업자에게는 명백한 바와 같이 다양한 수정 및 변경이 이루어질 수 있다. 실시예들에 따른 실현에 대하여 특정 실시예들과 관련하여 기술되었다. 이들 실시예는 한정이 아닌 예시를 위한 것이다. 다수의 변형, 수정, 추가 및 개선이 가능하다. 따라서, 단일의 인스턴스로서 본 명세서에서 설명되는 구성 요소들에 대한 복수의 인스턴스들이 제공될 수도 있다. 다양한 구성 요소들, 동작들 및 데이터 저장소들 간의 경계는 다소 임의적이며, 특정 동작들은 구체적인 예시 구성들과 관련하여 나타낸 것이다. 다른 기능 지정들이 상정될 수 있으며, 아래의 청구범위 내에 포함될 수도 있다. 마지막으로, 예시적인 구성들에서 별개의 구성 요소들로서 제시된 구조 및 기능은 조합된 구조 또는 구성 요소로서 구현될 수도 있다. 이들 및 다른 변형, 수정, 추가 및 개선은 아래의 청구범위에 정의된 실시예들의 범위 내에 포함될 수 있다.
전술한 내용이 본 발명의 실시예들에 관한 것이지만, 본 발명의 다른 실시예 및 추가 실시예가 본 발명의 기본 범위를 벗어남 없이 고안될 수도 있으며, 그 범위는 다음의 청구범위에 의해 결정된다.

Claims (15)

  1. 컨트롤러 기반 원격 솔루션을 생성 및 관리하기 위한 컴퓨터 구현 방법으로서,
    코드 가상화 서버(CVS)에서, 상기 CVS에 대하여 원격인 사용자 디바이스 상의 그래픽 사용자 인터페이스(GUI)로부터, 상기 GUI 상에서 설계된 솔루션의 입력을 수신하는 단계로서, 상기 솔루션은,
    센서 또는 액추에이터 중 적어도 하나와 통신 가능하게 커플링되어 그것을 제어하도록 동작 가능한 적어도 하나의 컨트롤러 - 상기 적어도 하나의 컨트롤러는 상기 CVS 및 상기 사용자 디바이스에 대하여 원격임 -,
    상기 센서 또는 상기 액추에이터 중 적어도 하나에서의 조건,
    상기 적어도 하나의 컨트롤러에 의한 실행을 위한 동작 - 상기 동작은 상기 조건이 충족될 경우에 실행됨 -, 및
    상기 솔루션을 위한 적어도 하나의 파라미터를 포함하는, 상기 수신하는 단계;
    상기 입력 솔루션에 기초하여, 상기 적어도 하나의 컨트롤러 상에서 실행하기 위한 프로그램을 상기 CVS 상에서 자동으로 생성하는 단계 - 상기 프로그램은 상기 조건이 충족되는지 여부를 체크하고 상기 조건이 충족될 경우 상기 동작을 실행하는 코드를 포함함 -; 및
    상기 CVS로부터 상기 사용자 디바이스 상의 스토리지로 자동 생성 컨트롤러 프로그램(automatically generated controller program, AGCP)을 다운로드하거나, 또는 상기 적어도 하나의 컨트롤러 상에 설치하기 위해, 상기 CVS로부터 상기 적어도 하나의 컨트롤러로 상기 AGCP를 전송하는 단계
    를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 GUI 상의 디스플레이를 위해 상기 CVS로부터 상기 사용자 디바이스로, 상기 CVS 상의 솔루션 라이브러리에 저장된 컨트롤러들, 센서들, 액추에이터들, 조건들, 동작들 또는 사전 정의된 솔루션 템플릿들 중 적어도 하나의 식별자들을 전송하는 단계를 더 포함하며,
    상기 솔루션은 사전 정의된 솔루션 템플릿으로부터 선택되거나, 또는 상기 솔루션은 상기 적어도 하나의 컨트롤러, 상기 센서 또는 상기 액추에이터 중 적어도 하나, 상기 조건, 상기 동작, 상기 적어도 하나의 파라미터 또는 이들 사이의 연결들 중 하나 이상을 개별적으로 정의함으로써 구축되는, 방법.
  3. 제 1 항에 있어서,
    상기 적어도 하나의 컨트롤러로부터, 상기 적어도 하나의 컨트롤러, 상기 적어도 하나의 센서 또는 상기 액추에이터, 상기 적어도 하나의 조건, 상기 동작 또는 상기 파라미터 중 적어도 하나에 대한 상태 정보를 요청하는 단계;
    상기 요청된 상태 정보를 수신하는 단계;
    상기 GUI로부터 상기 적어도 하나의 컨트롤러, 상기 적어도 하나의 센서 또는 상기 액추에이터, 상기 적어도 하나의 조건, 상기 동작 또는 상기 파라미터 중 적어도 하나의 상태 정보에 대한 요청을 수신하는 단계; 및
    상기 GUI에 디스플레이하기 위해 상기 요청된 상태 정보를 상기 사용자 디바이스에 전송하는 단계를 더 포함하는, 방법.
  4. 제 3 항에 있어서,
    상기 CVS에서 상기 GUI로부터, 상기 적어도 하나의 컨트롤러, 상기 적어도 하나의 센서 또는 상기 액추에이터, 상기 적어도 하나의 조건, 상기 동작 또는 상기 파라미터 중 적어도 하나의 수정에 대한 입력을 수신하는 단계 - 상기 수정은 상기 AGCP의 변경을 필요로 함 -;
    상기 수정된 입력에 기초하여 상기 AGCP를 자동으로 수정 또는 재생성하는 단계; 및
    상기 컨트롤러 상에 설치하기 위해 상기 수정 또는 재생성된 AGCP를 상기 적어도 하나의 컨트롤러로 전송하는 단계를 더 포함하는, 방법.
  5. 제 3 항에 있어서,
    상기 CVS에서 상기 GUI로부터, 상기 파라미터의 수정에 대한 입력을 수신하는 단계 - 상기 수정은 상기 AGCP의 수정 또는 재생성을 필요로 하지 않음 -; 및
    상기 수정에 기초하여 상기 적어도 하나의 파라미터를 자동으로 업데이트하는 단계를 더 포함하며,
    상기 파라미터의 수정은 상기 적어도 하나의 컨트롤러, 또는 상기 센서 또는 상기 액추에이터 중 적어도 하나의 구성의 변경과 관련되지 않는, 방법.
  6. 제 1 항에 있어서,
    상기 AGCP는 상기 적어도 하나의 컨트롤러 상의 실행에 적합한 언어로 자동으로 생성되는, 방법.
  7. 제 1 항에 있어서,
    상기 적어도 하나의 컨트롤러는 입력 또는 출력 중 적어도 하나를 포함하며,
    상기 방법은 상기 입력 또는 상기 출력 중 적어도 하나에 대한 상기 적어도 하나의 조건의 지정을 수신하는 단계를 더 포함하는, 방법.
  8. 제 1 항에 있어서,
    상기 적어도 하나의 원격 컨트롤러 상에서의 상기 AGCP의 실행을 테스트하는 단계; 및
    상기 GUI 상에 디스플레이하기 위해 상기 테스트 결과를 상기 사용자 디바이스에 전송하는 단계를 더 포함하는, 방법.
  9. 제 1 항에 있어서,
    상기 GUI 상에 디스플레이하기 위해 상기 CVS 상의 프로세스 라이브러리에 저장된 적어도 하나의 함수의 정의를 상기 사용자 디바이스에 전송하는 단계를 더 포함하며,
    상기 솔루션은 상기 적어도 하나의 컨트롤러에 대하여 원격으로 실행되도록 상기 적어도 하나의 컨트롤러에 의해 호출되는 함수를 더 포함하고,
    상기 적어도 하나의 컨트롤러에 대한 상기 프로그램을 자동으로 생성하는 것은, 상기 CVS 상에서 상기 함수를 실행하기 위한 상기 적어도 하나의 컨트롤러로부터 상기 CVS로의 원격 호출을 상기 AGCP에 임베드하는 것을 포함하며, 또한
    상기 동작은 상기 원격 호출을 하는 것, 디스플레이를 위한 센서 또는 액추에이터 데이터를 상기 GUI에 전송하는 것, 또는 상기 액추에이터를 작동시키는 것 중 적어도 하나를 포함하는, 방법.
  10. 제 9 항에 있어서,
    상기 CVS에서 상기 적어도 하나의 컨트롤러로부터, 상기 함수를 실행하기 위한 원격 호출을 수신하는 단계;
    상기 CVS 상에서 상기 함수를 실행하는 단계; 및
    상기 함수의 실행으로부터의 데이터를 상기 적어도 하나의 컨트롤러에 전송하는 단계를 더 포함하는, 방법.
  11. 제 10 항에 있어서,
    상기 함수를 실행하는 것은 원격 서비스를 제공하는 것을 더 포함하며, 상기 원격 서비스들은 상기 적어도 하나의 컨트롤러 또는 상기 CVS에 의해 제공되는 서비스가 아닌, 방법.
  12. 컨트롤러 기반 원격 솔루션을 생성 및 관리하기 위한 장치로서,
    프로세서; 및
    상기 프로세서를 사용하여 실행될 때에, 방법을 구현하는 실행 가능한 명령어들을 포함하는 메모리를 포함하며, 상기 방법은,
    코드 가상화 서버(CVS)에서, 상기 CVS에 대하여 원격인 사용자 디바이스 상의 그래픽 사용자 인터페이스(GUI)로부터, 상기 GUI 상에서 설계된 솔루션의 입력을 수신하는 단계로서, 상기 솔루션은,
    센서 또는 액추에이터 중 적어도 하나와 통신 가능하게 커플링되어 그것을 제어하도록 동작 가능한 적어도 하나의 컨트롤러 - 상기 적어도 하나의 컨트롤러는 상기 CVS 및 상기 사용자 디바이스에 대하여 원격임 -,
    상기 센서 또는 상기 액추에이터 중 적어도 하나에서의 조건,
    상기 적어도 하나의 컨트롤러에 의한 실행을 위한 동작 - 상기 동작은 상기 조건이 충족될 경우에 실행됨 -, 및
    상기 솔루션을 위한 적어도 하나의 파라미터를 포함하는, 상기 수신하는 단계;
    상기 입력 솔루션에 기초하여, 상기 적어도 하나의 컨트롤러 상에서 실행하기 위한 프로그램을 상기 CVS 상에서 자동으로 생성하는 단계 - 상기 프로그램은 상기 조건이 충족되는지 여부를 체크하고 상기 조건이 충족될 경우 상기 동작을 실행하는 코드를 포함함 -; 및
    상기 CVS로부터 상기 사용자 디바이스 상의 스토리지로 자동 생성 컨트롤러 프로그램(automatically generated controller program, AGCP)을 다운로드하거나, 또는 상기 적어도 하나의 컨트롤러 상에 설치하기 위해, 상기 CVS로부터 상기 적어도 하나의 컨트롤러로 상기 AGCP를 전송하는 단계
    를 포함하는, 장치.
  13. 제 12 항에 있어서,
    상기 방법은,
    상기 GUI로부터 상기 적어도 하나의 컨트롤러, 상기 적어도 하나의 센서 또는 상기 액추에이터, 상기 적어도 하나의 조건, 상기 동작 또는 상기 파라미터 중 적어도 하나의 상태 정보에 대한 요청을 수신하는 단계; 및
    상기 GUI에 디스플레이하기 위해 상기 요청된 상태 정보를 상기 사용자 디바이스에 전송하는 단계를 더 포함하는, 장치.
  14. 제 13 항에 있어서,
    상기 방법은,
    상기 CVS에서 상기 GUI로부터, 상기 적어도 하나의 컨트롤러, 상기 적어도 하나의 센서 또는 상기 액추에이터, 상기 적어도 하나의 조건, 상기 동작 또는 상기 파라미터 중 적어도 하나의 수정에 대한 입력을 수신하는 단계; 및
    상기 수정이 상기 AGCP의 변경을 필요로 하는 경우, 상기 수정된 입력에 기초하여 상기 AGCP를 수정 또는 재생성하고, 상기 컨트롤러 상에 설치하기 위해 상기 수정 또는 재생성된 AGCP를 상기 적어도 하나의 컨트롤러로 전송하는 것, 또는
    상기 수정이 상기 AGCP의 변경을 필요로 하지 않는 경우, 상기 수정에 기초하여 상기 적어도 하나의 파라미터를 업데이트하는 것 중 하나를 자동으로 구현하는 단계를 더 포함하는, 장치.
  15. 제 12 항에 있어서,
    상기 AGCP는 상기 CVS 상에서 함수를 실행하기 위해 상기 적어도 하나의 컨트롤러로부터 상기 CVS로 원격 호출을 하기 위한 코드를 포함하고, 상기 동작은 상기 원격 호출을 하는 것 중의 적어도 하나를 포함하며, 상기 방법은,
    상기 CVS에서 상기 적어도 하나의 컨트롤러로부터, 상기 함수를 실행하기 위한 원격 호출을 수신하는 단계;
    상기 CVS 상에서 상기 함수를 실행하는 단계; 및
    상기 함수의 실행으로부터의 데이터를 상기 적어도 하나의 컨트롤러에 전송하는 단계를 더 포함하는, 장치.
KR1020187020693A 2015-12-21 2016-12-21 컨트롤러 기반 원격 솔루션들을 생성 및 관리하기 위한 방법 및 장치 KR20180087446A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562270107P 2015-12-21 2015-12-21
US62/270,107 2015-12-21
US201662377963P 2016-08-22 2016-08-22
US62/377,963 2016-08-22
PCT/US2016/067944 WO2017112735A2 (en) 2015-12-21 2016-12-21 Method and apparatus for creating and managing controller based remote solutions

Publications (1)

Publication Number Publication Date
KR20180087446A true KR20180087446A (ko) 2018-08-01

Family

ID=59066616

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187020693A KR20180087446A (ko) 2015-12-21 2016-12-21 컨트롤러 기반 원격 솔루션들을 생성 및 관리하기 위한 방법 및 장치

Country Status (9)

Country Link
US (1) US10732969B2 (ko)
EP (1) EP3394743B1 (ko)
JP (1) JP6925365B2 (ko)
KR (1) KR20180087446A (ko)
CN (1) CN108604186B (ko)
CA (1) CA3009166A1 (ko)
HK (1) HK1254161A1 (ko)
SG (1) SG11201805215UA (ko)
WO (1) WO2017112735A2 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3034838A1 (en) * 2016-08-22 2018-03-01 Ciambella Ltd. Method and apparatus for creating and managing controller based remote solutions
US11269308B2 (en) 2017-12-01 2022-03-08 Ciambella Ltd. Method and apparatus for creating and managing smart programmable logic controller (PLC) solutions
CN109960570B (zh) 2017-12-14 2021-09-03 北京图森智途科技有限公司 一种多模块调度方法、装置及系统
CN109960571B (zh) * 2017-12-14 2022-03-25 北京图森智途科技有限公司 一种多模块调度方法、装置及系统
US11190513B2 (en) 2018-01-19 2021-11-30 Vmware, Inc. Gateway enrollment for internet of things device management
WO2020018525A1 (en) * 2018-07-17 2020-01-23 iT SpeeX LLC Method, system, and computer program product for an intelligent industrial assistant
US11005719B2 (en) * 2018-12-11 2021-05-11 Vmware, Inc. Internet of Things system topology generation
WO2023102604A1 (en) * 2021-12-07 2023-06-15 Max Finselbach System and method for remotely monitoring a contained volume of liquid
WO2023115159A1 (en) * 2021-12-23 2023-06-29 Max Finselbach System and method for remotely monitoring water quality
WO2023174535A1 (en) * 2022-03-17 2023-09-21 Robert Bosch Gmbh Method for configuration of a surveillance system, computer program and storage medium
WO2023174536A1 (en) * 2022-03-17 2023-09-21 Robert Bosch Gmbh Method for operating distributed solution modules for a surveillance system, computer program, storage medium and surveillance system
CN117376692A (zh) * 2023-04-24 2024-01-09 深圳云视智景科技有限公司 功能自定义方法、装置、存储介质及电子设备

Family Cites Families (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108715A (en) 1994-12-13 2000-08-22 Microsoft Corporation Method and system for invoking remote procedure calls
US6065053A (en) 1997-10-01 2000-05-16 Micron Electronics, Inc. System for resetting a server
US6158031A (en) 1998-09-08 2000-12-05 Lucent Technologies, Inc. Automated code generating translator for testing telecommunication system devices and method
US7376904B2 (en) 2000-06-13 2008-05-20 National Instruments Corporation Automatic generation of programs with GUI controls for interactively setting or viewing values
US6907446B1 (en) 2000-10-16 2005-06-14 Implicit Networks, Inc. Method and system for dynamic delivery of beads
US20020194608A1 (en) 2001-04-26 2002-12-19 Goldhor Richard S. Method and apparatus for a playback enhancement system implementing a "Say Again" feature
US7103641B2 (en) 2001-06-18 2006-09-05 Intel Corporation Method and apparatus for distributing computer platform firmware across a network
US8086664B2 (en) 2001-09-24 2011-12-27 Siemens Industry, Inc. Method and apparatus for programming programmable controllers and generating configuration data from a centralized server
US8082318B2 (en) 2001-09-28 2011-12-20 British Telecommunications Plc Controlling service requests transmitted from a client to a server
US6895573B2 (en) 2001-10-26 2005-05-17 Resultmaker A/S Method for generating a workflow on a computer, and a computer system adapted for performing the method
US7086014B1 (en) 2001-11-19 2006-08-01 Cypress Semiconductor Corporation Automatic generation of application program interfaces, source code, interrupts, and datasheets for microcontroller programming
US20030120707A1 (en) 2001-12-21 2003-06-26 Sander Bogdan Systems and methods for exporting functionality of a modularized system
US7346672B2 (en) 2002-03-12 2008-03-18 Hewlett-Packard Development Company, L.P. Automatic TFTP firmware download
US20030204560A1 (en) 2002-04-26 2003-10-30 Chen Thomas C.H. Programmable Logic Controller with embedded Intelligent Web Server
US8074201B2 (en) 2002-07-10 2011-12-06 National Instruments Corporation Deployment and execution of a program on an embedded device
WO2004006299A2 (en) 2002-07-03 2004-01-15 Tokyo Electron Limited Method for dynamic sensor configuration and runtime execution
SE524627C2 (sv) * 2002-10-07 2004-09-07 Abb Research Ltd Trådlös regulator och förfarande för styrning av en anordning anordnad relativt en robot
US7457815B2 (en) 2003-03-27 2008-11-25 Apple Inc. Method and apparatus for automatically providing network services
WO2005020021A2 (en) 2003-08-22 2005-03-03 Idx Systems Corporation Information system supporting customizable user interfaces and process flows
EP1530139A1 (en) 2003-11-05 2005-05-11 Sap Ag Method and computer system for workflow management
US8104043B2 (en) 2003-11-24 2012-01-24 Microsoft Corporation System and method for dynamic cooperative distributed execution of computer tasks without a centralized controller
US7331047B2 (en) 2003-11-25 2008-02-12 Microsoft Corporation Deterministic system and method for implementing software distributed between a desktop and a remote device
US7574512B2 (en) 2004-04-15 2009-08-11 Schneider Automation Sas MODBUS encapsulated transport interface
US20060036755A1 (en) 2004-05-07 2006-02-16 Abdullah Ibrahim S Meta-protocol
US7810099B2 (en) 2004-06-17 2010-10-05 International Business Machines Corporation Optimizing workflow execution against a heterogeneous grid computing topology
US7603562B2 (en) 2005-02-02 2009-10-13 Insyde Software Corporation System and method for reducing memory requirements of firmware
US7530059B2 (en) 2005-02-18 2009-05-05 International Business Machines Corporation Method for inlining native functions into compiled java code
US9317259B2 (en) 2005-05-12 2016-04-19 International Business Machines Corporation Apparatus, system, and method for automatically generating a reusable software component for interfacing with a web service
US8055386B2 (en) 2005-08-22 2011-11-08 Trane International Inc. Building automation system data management
US7481361B2 (en) 2005-09-29 2009-01-27 International Business Machines Corporation Method and system for identifying unsafe synthetic transactions and modifying parameters for automated playback
US20070174037A1 (en) 2005-11-10 2007-07-26 Chuan-Po Ling Multiple-microcontroller emulation system, multiple-microcontroller integrated development environment, and method for the same
KR100687762B1 (ko) 2006-03-07 2007-02-27 한국전자통신연구원 코드 해석 장치, 코드정보 제공 장치 및 이를 이용한 방법
JP4808558B2 (ja) 2006-07-12 2011-11-02 日本電信電話株式会社 連携シナリオ作成支援システム及びその方法並びにプログラム
US7886234B2 (en) 2006-10-13 2011-02-08 Mediatek Inc. Systems and methods for creating embedded target images
US8453104B2 (en) * 2006-10-27 2013-05-28 Microsoft Corporation Thin client software development environment
KR20080044576A (ko) 2006-11-17 2008-05-21 오종택 애드혹 통신 네트워크를 이용한 전력분산 장치 및 시스템과그 방법
CN201017215Y (zh) 2007-03-29 2008-02-06 王忠伟 一种终端控制器
JP2008276690A (ja) * 2007-05-07 2008-11-13 Ize:Kk 開発システム、開発システムのサーバ、開発方法
JP4582116B2 (ja) * 2007-06-06 2010-11-17 ソニー株式会社 入力装置、制御装置、制御システム、制御方法及びそのプログラム
US10997531B2 (en) 2007-09-11 2021-05-04 Ciambella Ltd. System, method and graphical user interface for workflow generation, deployment and/or execution
US20090198770A1 (en) 2008-02-04 2009-08-06 Universal Scientific Industrial Co., Ltd. System and method of updating codes in controller
US9311115B2 (en) 2008-05-13 2016-04-12 Apple Inc. Pushing a graphical user interface to a remote device with display rules provided by the remote device
US8099332B2 (en) 2008-06-06 2012-01-17 Apple Inc. User interface for application management for a mobile device
US8249950B2 (en) 2008-07-11 2012-08-21 Ebay Inc. Payment mechanism integration wizard
EP2329369A1 (en) 2008-08-25 2011-06-08 Power-One Italy S.p.a. A hardware virtualization system
CN101373441B (zh) 2008-09-19 2012-04-18 苏州壹世通科技有限公司 一种基于固件的虚拟化平台系统
DE102009011679A1 (de) 2009-02-23 2010-08-26 Pilz Gmbh & Co. Kg Verfahren und Vorrichtung zum Erstellen eines Anwenderprogrammes für eine Sicherheitssteuerung
WO2010102875A1 (en) * 2009-03-13 2010-09-16 Abb Technology Ag A method for control in a process control system implemented in part by one or more computer implemented run-time processes
US8948067B2 (en) 2009-04-23 2015-02-03 Honeywell International Inc. Wireless controller grids for process control and other systems and related apparatus and method
BRPI1010897A2 (pt) 2009-05-19 2019-02-19 Nholdings Sa método e sistema para prover um dispositivo local com serviços de computador de um provedor remoto e método e sistema para anunciar um usuário de uma máquina virtual hospedada por um servido remoto
JP2011150430A (ja) 2010-01-19 2011-08-04 Kyocera Mita Corp Sdk配布パッケージ生成装置、sdk配布パッケージ生成方法、およびsdk配布パッケージ生成プログラム
US8775781B2 (en) 2010-03-25 2014-07-08 Microsoft Corporation Intelligent boot device selection and recovery
CN102262557B (zh) 2010-05-25 2015-01-21 运软网络科技(上海)有限公司 通过总线架构构建虚拟机监控器的方法及性能服务框架
US8655461B2 (en) * 2010-05-25 2014-02-18 Siemens Product Lifecycle Management Software Inc. Method, system, and non-transitory computer readable storage medium for generating code for a closed-loop controller
US8959363B2 (en) 2010-06-03 2015-02-17 Intel Corporation Systems, methods, and apparatus to virtualize TPM accesses
US8479154B1 (en) 2010-08-20 2013-07-02 Google Inc. Interaction with partially constructed mobile device applications
CN102479079B (zh) 2010-11-29 2015-04-01 中兴通讯股份有限公司 应用生成方法和装置
US9250883B2 (en) 2011-06-02 2016-02-02 Open Invention Network, Llc System and method for pervasive software platform-based model driven architecture application generator
CN102999322A (zh) 2011-09-16 2013-03-27 深圳市吉阳自动化科技有限公司 一种工业控制器软件界面设计方法
DE112011105752T5 (de) 2011-10-21 2014-10-02 Hewlett-Packard Development Company, L.P. Webbasierte Schnittstelle zum Zugriff auf eine Funktion eines Basic Input/Output-Systems
US20130201316A1 (en) 2012-01-09 2013-08-08 May Patents Ltd. System and method for server based control
US20150045960A1 (en) * 2012-01-23 2015-02-12 Scl Elements Inc. Programmable peripheral unit
CA2870359C (en) 2012-04-12 2015-10-13 Absolute Software Corporation Configuration of third party applications in a sandboxed environment
FR2982722B3 (fr) * 2012-06-20 2014-03-14 Samsung Electronics Co Ltd Dispositif d'affichage, dispositif de commande a distance et fonction de commande connexe
SG11201501861VA (en) 2012-09-12 2015-04-29 Hitachi Systems Ltd Facility-user-interface distributing system
CN103415835B (zh) 2012-10-08 2016-08-03 华为终端有限公司 一种触屏装置用户界面的处理方法及触屏装置
CN103914018A (zh) 2012-12-31 2014-07-09 施耐德电器工业公司 可编程控制器的编程辅助系统及方法
SG11201510302XA (en) 2013-06-18 2016-01-28 Ciambella Ltd Method and apparatus for customized software development kit (sdk) generation
SG11201510304TA (en) 2013-06-18 2016-01-28 Ciambella Ltd Method and apparatus for code virtualization and remote process call generation
US20150127192A1 (en) 2013-11-06 2015-05-07 Hitachi, Ltd Wireless vehicle control system
US9201770B1 (en) * 2013-12-26 2015-12-01 Emc Corporation A/B testing of installed graphical user interfaces
SG11201605563YA (en) 2014-01-10 2016-08-30 Ciambella Ltd Method and apparatus for automatic device program generation
US9619122B2 (en) * 2014-01-10 2017-04-11 Ciambella Ltd. Method and apparatus for automatic device program generation
KR101872751B1 (ko) 2014-06-20 2018-06-29 후아웨이 테크놀러지 컴퍼니 리미티드 애플리케이션 인터페이스를 디스플레이하는 방법 및 장치, 그리고 전자 장치
JP6441061B2 (ja) 2014-12-16 2018-12-19 株式会社ダイヘン 機械制御システム及び機械制御システムのユーザインタフェース設定方法
US20170045981A1 (en) 2015-08-10 2017-02-16 Apple Inc. Devices and Methods for Processing Touch Inputs Based on Their Intensities
KR102622652B1 (ko) 2015-05-08 2024-01-10 시암벨라 리미티드 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 방법 및 장치
US10067490B2 (en) 2015-05-08 2018-09-04 Ciambella Ltd. Method and apparatus for modifying behavior of code for a controller-based device
US9547482B2 (en) 2015-06-02 2017-01-17 Sap Portals Israel Ltd. Declarative design-time experience platform for code generation

Also Published As

Publication number Publication date
HK1254161A1 (zh) 2019-07-12
CN108604186A (zh) 2018-09-28
CN108604186B (zh) 2021-11-16
US10732969B2 (en) 2020-08-04
US20170180462A1 (en) 2017-06-22
EP3394743A2 (en) 2018-10-31
EP3394743C0 (en) 2023-07-12
EP3394743B1 (en) 2023-07-12
JP2019503549A (ja) 2019-02-07
WO2017112735A2 (en) 2017-06-29
JP6925365B2 (ja) 2021-08-25
WO2017112735A3 (en) 2018-02-22
SG11201805215UA (en) 2018-07-30
CA3009166A1 (en) 2017-06-29
EP3394743A4 (en) 2020-04-15

Similar Documents

Publication Publication Date Title
KR20180087446A (ko) 컨트롤러 기반 원격 솔루션들을 생성 및 관리하기 위한 방법 및 장치
CA2984106C (en) Method and apparatus for automatic software development for a group of controller-based devices
US10798780B2 (en) Method and apparatus for creating and managing controller based remote solutions
EP3596593B1 (en) Method and apparatus for automatically generating and incorporating code in development environments
US10067490B2 (en) Method and apparatus for modifying behavior of code for a controller-based device
US11269308B2 (en) Method and apparatus for creating and managing smart programmable logic controller (PLC) solutions
CN107003836B (zh) 用于所连接的消费者设备的灵活设备模板
CN106170764A (zh) 用于自动设备程序生成的方法和装置
JP6626956B2 (ja) コントローラに基づくデバイスのためのコードの挙動を修正するための方法および装置
KR101399800B1 (ko) 인스턴스 호스팅을 위한 서비스 제공 방법 및 서비스 제공 시스템
EP3501160B1 (en) Method and apparatus for creating and managing controller based remote solutions

Legal Events

Date Code Title Description
A201 Request for examination