KR102213046B1 - 설계 지원 장치, 설계 지원 방법 및 기록 매체에 저장된 프로그램 - Google Patents

설계 지원 장치, 설계 지원 방법 및 기록 매체에 저장된 프로그램 Download PDF

Info

Publication number
KR102213046B1
KR102213046B1 KR1020207017751A KR20207017751A KR102213046B1 KR 102213046 B1 KR102213046 B1 KR 102213046B1 KR 1020207017751 A KR1020207017751 A KR 1020207017751A KR 20207017751 A KR20207017751 A KR 20207017751A KR 102213046 B1 KR102213046 B1 KR 102213046B1
Authority
KR
South Korea
Prior art keywords
processing
execution environment
execution
code
communication
Prior art date
Application number
KR1020207017751A
Other languages
English (en)
Other versions
KR20200081502A (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 KR20200081502A publication Critical patent/KR20200081502A/ko
Application granted granted Critical
Publication of KR102213046B1 publication Critical patent/KR102213046B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • 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/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/457Communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13004Programming the plc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/04Manufacturing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Abstract

설계 지원 장치(10)는 처리 장치(20)에 처리를 실행시키기 위한 설계를 지원하고, 취득부(11)와 분할부(131)와 통신 코드 생성부(132)와 출력부(15)를 구비한다. 취득부(11)는 처리의 내용을 기술한 처리 코드(102)를 취득한다. 분할부(131)는 처리 코드(102)를 복수의 모듈로 분할하고, 분할한 모듈 각각에 대해서, 처리 장치(20)에 구축되는 복수의 실행 환경 중 어느 것에서 실행할지를 결정한다. 통신 코드 생성부(132)는 모듈에, 해당 모듈을 실행하는 것이 결정된 하나의 실행 환경과는 상이한 다른 실행 환경에서 실행하는 것이 우선되는 부분 처리가 포함되는 경우에, 하나의 실행 환경과 다른 실행 환경의 사이에서 통신하여 부분 처리를 상기 다른 실행 환경에서 실행시키기 위한 통신 코드를 생성한다. 출력부(15)는 복수의 모듈과 통신 코드를 처리 장치(20)에 출력한다.

Description

설계 지원 장치, 설계 지원 방법 및 기록 매체에 저장된 프로그램
본 발명은 설계 지원 장치, 설계 지원 방법 및 기록 매체에 저장된 프로그램에 관한 것이다.
PLC(Programmable Logic Controller)로 대표되는 컨트롤러로서, 근래, 복수의 OS나 복수의 프로세서와 같은 복수의 실행 환경을 구비하는 컴퓨터가 채용되는 케이스가 많아지고 있다. 이러한 케이스에 있어서, 설계자는 이용 가능한 라이브러리, 연산 성능 등의, 실행 환경의 특성을 고려하여, 각 실행 환경에서 동작하는 애플리케이션을 설계할 필요가 있어, 설계 작업이 번잡하게 되어 있었다.
이에, 상이한 실행 환경에 대응하기 위해, 소스 코드에 있어서의 실행 환경에 의한 차이를 자동적으로 변경하는 방법이 제안되어 있다(예를 들면, 특허 문헌 1을 참조). 특허 문헌 1에는, 생성한 소스 코드에 대해, 사용하는 플랫폼에 대응한 가공 룰에 기초한 가공을 실시하여, 플랫폼에 대응하는 소스 코드를 출력하는 장치가 기재되어 있다.
특허 문헌 1: 일본 특개 2008-165342호 공보
그렇지만, 특허 문헌 1에 기재된 기술은, 사용하는 1개의 플랫폼 상에서 동작하도록 소스 코드를 변경하는 것이었다. 따라서, 복수의 실행 환경을 구비하는 컴퓨터로의 적용에 대해서는, 고려되지 않고, 적용하는 경우는, 어느 처리를 어느 실행 환경에서 실행시킬지 등을 고려할 필요가 있어, 설계자의 부담 경감은 충분하지 않았다.
본 발명은 상기의 사정에 감안하여 이루어진 것으로, 복수의 실행 환경이 포함되는 시스템에 있어서, 애플리케이션의 설계를 용이하게 하는 것을 목적으로 한다.
상기 목적을 달성하기 위해, 본 발명의 설계 지원 장치는 처리 장치에 처리를 실행시키기 위한 설계를 지원하는 설계 지원 장치로서, 처리의 내용을 기술(記述)한 처리 코드를 취득하는 취득 수단과, 처리 코드를 복수의 모듈로 분할하고, 분할한 모듈 각각에 대해서, 처리 장치에 구축되는 복수의 실행 환경 중 어느 것에서 실행할지를 결정하는 분할 수단과, 모듈에, 해당 모듈을 실행하는 것이 결정된 하나의 실행 환경과는 상이한 다른 실행 환경에서 실행하는 것이 우선되는 부분 처리가 포함되는 경우에, 하나의 실행 환경과 다른 실행 환경의 사이에서 통신하여 부분 처리를 다른 실행 환경에서 실행시키기 위한 통신 코드를 생성하는 통신 코드 생성 수단과, 복수의 모듈과 통신 코드를 처리 장치에 출력하는 출력 수단을 구비한다.
본 발명에 의하면, 처리 코드로부터 분할된 모듈 각각에 대해서, 복수의 실행 환경 중 어느 것에서 실행할지가 결정되고, 모듈에, 해당 모듈을 실행하는 실행 환경과는 상이한 다른 실행 환경에서 실행하는 것이 우선되는 부분 처리가 포함되는 경우에는, 이 부분 처리를 다른 실행 환경에서 실행시키기 위한 통신 코드가 생성된다. 이 때문에, 처리 코드를 구성하는 모듈을 복수의 실행 환경으로 배분하는 것에 더하여, 모듈에 포함되는 부분 처리를, 보다 적당한 실행 환경에서 실행할 수 있다. 따라서, 복수의 실행 환경이 포함되는 시스템에 있어서, 설계자는 실행 환경의 차이를 의식하는 일 없이 애플리케이션을 설계하면 되어, 애플리케이션의 설계를 용이하게 할 수 있다.
도 1은 본 발명의 실시 형태에 따른 처리 시스템의 블록도이다.
도 2는 실시 형태에 따른 처리 코드의 일례를 나타내는 도면이다.
도 3은 실시 형태에 따른 처리 코드의 분할, 실행 환경의 결정, 및 통신 코드의 생성의 흐름을 나타내는 도면이다.
도 4는 실시 형태에 따른 처리 장치의 구성을 나타내는 도면이다.
도 5는 실시 형태에 따른 설계 지원 장치 및 처리 장치의 하드웨어 구성을 나타내는 도면이다.
도 6은 설계 지원 장치 및 처리 장치의 하드웨어 구성의 변형예를 나타내는 도면
도 7은 실시 형태에 따른 설계 지원 처리의 순서도이다.
도 8은 실시 형태에 따른 실행 환경 선택 테이블의 일례를 나타내는 도면이다.
도 9는 실시 형태에 따른 통신 방법 선택 테이블의 일례를 나타내는 도면이다.
도 10은 실시 형태에 따른 모듈 마다의 라이브러리의 사용 상황의 예를 나타내는 제1 도이다.
도 11은 실시 형태에 따른 모듈 마다의 라이브러리의 사용 상황의 예를 나타내는 제2 도이다.
도 12는 실시 형태에 따른 모듈 마다의 라이브러리의 사용 상황의 예를 나타내는 제3 도이다.
도 13은 실시 형태에 따른 처리 장치가 다수 있는 변형예를 나타내는 도면이다.
도 14는 실시 형태에 따른 가중합(weighted sum)이 설계되는 실행 환경 선택 테이블의 변형예를 나타내는 도면이다.
이하, 본 발명의 실시 형태에 따른 처리 시스템(1000)에 대해서, 도면을 참조하면서 상세하게 설명한다.
실시 형태.
도 1에는 본 실시 형태에 따른 처리 시스템(1000)의 개요가 도시되어 있다. 처리 시스템(1000)은 공장에서 구축되는 생산 시스템으로서, 재료 가공 장치, 리플로 로(reflow furnace) 및 벨트 컨베이어로 대표되는 기기에 의해 일련의 생산 처리를 실행하여 제품을 생산한다. 이러한 생산 처리는 다수의 생산 기계를 제어하는 처리 장치(20)가 유저(100)에 의해서 설계된 원하는 처리를 실행함으로써 달성된다. 다만, 처리 시스템(1000)은, 이것으로 한정되지 않고, 공장 이외의 시설에 설치되어도 되고, 생산 시스템 이외의 시스템이어도 된다.
처리 시스템(1000)은 처리 장치(20)에 특정의 처리를 실행시키기 위한 응용 프로그램의 설계를 지원하는 설계 지원 장치(10)와, 프로세서를 가지며 복수의 실행 환경이 구축되는 처리 장치(20)와, 설계 지원 장치(10)에 의해서 참조되는 서버(40)를 가지고 있다. 설계 지원 장치(10)와 처리 장치(20)는, 전용선을 통해서 접속되어 유선 통신을 행한다. 다만, 설계 지원 장치(10)와 처리 장치(20)는, 서로 무선 통신을 행해도 된다. 또, 설계 지원 장치(10)는 인터넷으로 대표되는 네트워크를 통해서 서버(40)에 접속된다.
설계 지원 장치(10)는 유저(100)로부터 미리 입력된 설계 정보(101)에 기초하여, 유저(100)로부터 입력되는 처리 코드(102)에 기술되는 처리를 처리 장치(20)에 효율 좋게 실행시키는 장치이다. 설계 지원 장치(10)는, 도 1에 도시되는 것처럼, 그 기능으로서, 유저(100)에 의해서 입력되는 데이터를 취득하는 취득부(11)와, 입력된 처리 코드(102)를 해석하는 해석부(12)와, 처리 장치(20)에 실제로 실행시키는 코드를 생성하는 코드 생성부(13)와, 생성된 코드를 실행에 적합한 형식으로 변환하는 변환부(14a, 14b, 14c)와, 코드를 처리 장치(20)에 출력하는 출력부(15)와, 설계 정보(101)가 기억되는 기억부(16)를 가지고 있다.
취득부(11)는 유저 인터페이스에 상당하며, 유저(100)가 정보를 입력하기 위한 입력 디바이스와 유저에게 정보를 제시하는 출력 디바이스를 포함한다. 취득부(11)는 외부 기억장치로부터 유저에 의해서 지정된 데이터를 읽어내기 위한 단자 또는 통신 인터페이스 회로를 포함해도 된다. 또한, 취득부(11)는 유저 인터페이스의 기능을 발휘하는 일 없이, 외부의 유저 인터페이스 단말과 통신하기 위한 통신 인터페이스 회로여도 된다. 취득부(11)는 유저(100)에 의해서 입력된 설계 정보(101)를 취득하여, 기억부(16)에 격납한다. 설계 정보(101)의 상세에 대해서는 후술한다. 또, 취득부(11)는 유저(100)에 의해서 입력된 처리 코드(102)를 취득하여, 해석부(12)에 출력한다. 처리 코드(102)는 처리 장치(20)에 실행시키는 응용 프로그램의 내용을 기술한 소스 코드이다. 처리 코드(102)에 기술되는 처리는, 설계자에 의해서 설계된다. 다만, 처리 코드(102)는 소스 코드로 한정되지 않고, 다른 코드여도 되고 데이터를 포함하고 있어도 된다. 취득부(11)는 청구항의 취득 수단으로서 기능한다.
해석부(12)는 처리 코드(102)를 읽어내어 해석하여, 해석 결과를 출력한다. 상세하게는, 해석부(12)는 처리 코드(102)를 구성하는 복수의 모듈 각각을 해석하여, 각 모듈을 처리 장치(20)에 구축되는 복수의 실행 환경 중 어느 것에 할당하기 위한 지표를 구한다. 상세하게는, 해석부(12)는 처리 코드(102)에 포함되는 함수를 모듈로서 다루고, 복수의 모듈 각각에서 참조되고 있는 라이브러리의 사용 횟수를 지표로서 카운트한다. 라이브러리에는, 그 종류에 따라 실행에 적합한 실행 환경이 있기 때문에, 모듈에 기술되는 처리에 있어서의 라이브러리의 사용 횟수는, 모듈을 실행 환경에 할당하기 위한 지표가 된다. 도 2에는, 처리 코드(102)를 구성하는 모듈로서의 함수의 일례가 도시되어 있고, 함수에 있어서 라이브러리를 사용하고 있는 행이 화살표로 도시되어 있다. 덧붙여, 모듈은, 함수로 한정되지 않고, 다른 모듈이어도 된다.
여기서, 처리 장치(20)에 구축되는 실행 환경은, 프로그램을 실행하는 환경을 의미하며, OS(Operating System)와 프로세서의 조합이 실행 환경에 상당한다. 즉, 처리 장치(20)에서 복수의 OS가 동시에 기동하여, OS를 실행하는 프로세서가 해당 OS 상에서 애플리케이션 및 프로그램을 실행한다. 단일의 프로세서가 상이한 OS를 동시에 실행하는 경우에는, 이들 OS는 상이한 실행 환경을 형성하게 된다. 또, 동일한 OS가 상이한 프로세서에 의해서 실행되는 경우에는, OS가 실질적으로 동일하더라도, 상이한 실행 환경이 형성되게 된다. 실행 환경은 플랫폼이라고도 한다.
또, 라이브러리는 처리 코드(102)에 기술되는 처리를 실행하는 프로세서가 호출하여 사용하는 외부 프로그램이다. 처리 코드(102)에는 라이브러리의 구체적인 내용은 기술되지 않고, 라이브러리를 호출하기 위한 라이브러리 식별자, 명칭, 또는 어드레스가 기술된다. 라이브러리는 OS에 포함되어 있는 경우도 있고, 후술의 소프트웨어 컴포넌트(41)로서 외부로부터 제공되는 경우도 있다.
도 1로 돌아가, 코드 생성부(13)는 처리 코드(102)를 분할하는 분할부(131)와, 통신 코드를 생성하는 통신 코드 생성부(132)를 가지고 있다.
분할부(131)는, 도 3에 도시되는 것처럼, 처리 코드(102)를 복수의 모듈로 분할하고, 해석부(12)에 의한 해석의 결과에 기초하여, 분할한 모듈 각각에 대해서, 처리 장치(20)의 복수의 실행 환경 중 어느 것에서 실행할지를 결정한다. 본 실시 형태에 따른 분할부(131)는, 모듈에 있어서 가장 많이 사용되는 라이브러리에 적합한 실행 환경을, 해당 모듈을 실행하는 실행 환경으로서 결정한다. 또, 설계 정보(101)에 의해 라이브러리에 대응하는 실행 환경이 지정된다. 분할부(131)는 청구항의 분할 수단으로서 기능한다.
통신 코드 생성부(132)는, 도 3에 도시되는 것처럼, 통신 코드를 생성한다. 모듈을 실행하는 실행 환경은, 복수의 실행 환경 중 어느 하나의 실행 환경으로 결정되지만, 이 하나의 실행 환경에서 모듈에 포함되는 처리 모두를 실행하면 효율이 나쁜 케이스, 및 이 하나의 실행 환경에서는 모듈의 모두를 실행할 수 없는 케이스가 있다. 이에, 결정된 하나의 실행 환경과는 상이한 다른 실행 환경에서 실행하는 것이 우선되는 부분적인 처리가 모듈에 포함되어 있는 경우에, 통신 코드 생성부(132)는, 이러한 부분 처리를 다른 실행 환경에서 실행하기 위한 통신 코드를 생성한다. 부분 처리는 다른 실행 환경에서 실행하는 것이 설계 정보(101)에 의해 설계되어 있는 라이브러리를 사용하는 처리이다. 통신 코드는 모듈에 포함되는 처리 중, 다른 실행 환경에서 실행하는 부분 처리를 특정하기 위한 정보를 포함한다. 또, 통신 코드는 하나의 실행 환경과 다른 실행 환경의 사이에서 통신을 실현하여, 특정된 부분 처리를 다른 실행 환경에서 실행시키기 위한 소스 코드로서, 후술의 통신 방법의 지정 및 래퍼 함수의 기술을 포함한다. 모듈과 통신 코드를 조합하면, 모듈의 대부분을 하나의 실행 환경에서 실행하면서, 부분 처리를 다른 실행 환경에서 실행할 수 있다. 통신 코드 생성부(132)는 청구항의 통신 코드 생성 수단으로서 기능한다.
도 1로 돌아가, 변환부(14a, 14b, 14c)는 각각, 처리 장치(20)에 구축되는 복수의 실행 환경 각각에 대응한다. 이하에서는, 변환부(14a, 14b, 14c)를 총칭하여 변환부(14)로 표기한다. 변환부(14)는 대응하는 실행 환경에서 실행되는 모듈 및 통신 코드를 코드 생성부(13)로부터 취득하고, 그 형식을 실행 형식으로 변환한다. 본 실시 형태에 따른 변환부(14)는, 소스 코드로부터 오브젝트 형식의 코드를 생성하는 컴파일러이다. 이하에서는, 처리 장치(20)에서 직접 실행되는 코드를 실행 파일이라고 한다. 변환부(14)로부터 출력되는 모듈 및 통신 코드가 실행 파일에 상당한다. 변환부(14)는 청구항의 변환 수단으로서 기능한다.
출력부(15)는 복수의 모듈과 통신 코드를 처리 장치(20)에 출력한다. 그 때에, 출력부(15)는 기억부(16)에 격납되어 있는 설계 정보(101)를 읽어내고, 유저(100)에 의해 지정된 내용에 기초하여, 변환부(14)로부터 출력된 코드를 처리 장치(20)에 실행시키기 위한 소프트웨어 컴포넌트 및 OS의 이미지 파일을 서버(40)로부터 취득한다. 출력부(15)는 처리 장치(20) 상에 복수의 실행 환경을 구축하고, 모듈, 통신 코드, 소프트웨어 컴포넌트 및 OS를, 복수의 실행 환경 각각에 배치한다. 상세하게는, 출력부(15)는 실행 환경 각각을 구축하기 위해서 필요한 소프트웨어 컴포넌트 및 OS와 함께, 실행 환경 각각을 구축하기 위한 프로세서를 지정하는 정보와, 구축을 지시하는 제어 명령을 처리 장치(20)에 출력함으로써, 처리 장치(20)에 복수의 실행 환경을 구축시킨다. 또한, 출력부(15)는 모듈 및 통신 코드를 포함하는 실행 파일을 처리 장치(20)에 실행시킨다. 출력부(15)는 청구항의 출력 수단으로서 기능한다.
처리 장치(20)에는, 도 4에 도시되는 것처럼, 출력부(15)에 의해서 복수의 실행 환경(21a, 21b, 21c)이 구축된다. 실행 환경(21a, 21b, 21c)은 각각, 1 또는 복수의 모듈이 집약된 실행 파일(22)과, 서버(40)로부터 다운로드된 소프트웨어 컴포넌트(41) 및 OS(42)와, 통신 코드가 실행됨으로써 실현되는, 실행 환경 사이에서 통신하기 위한 통신부(23)를 가지고 있다. 덧붙여, 도 4에서는, 실행 파일(22)과 통신부(23)를 구별하고 있지만, 실행 파일(22)에 포함되는 통신 코드를 실행함으로써 통신부(23)가 기능한다. 실행 환경(21a, 21b, 21c)은 처리 장치(20)의 하이퍼바이저(24) 상에 형성된다. 이 하이퍼바이저(hypervisor, 24)는 처리 장치(20)의 하드웨어(25)가 협동함으로써 실현된다.
도 5에는 설계 지원 장치(10) 및 처리 장치(20)의 하드웨어 구성의 일례가 도시되어 있다. 도 5에 도시되는 것처럼, 설계 지원 장치(10) 및 처리 장치(20)는, 프로세서(31), 주 기억부(32), 보조 기억부(33), 입력부(34), 출력부(35) 및 통신부(36)를 가지는 컴퓨터 장치로서 구성된다. 주 기억부(32), 보조 기억부(33), 입력부(34), 출력부(35) 및 통신부(36)는 모두, 내부 버스(37)를 통해서 프로세서(31)에 접속되어 있다.
프로세서(31)는 CPU(Central Processing Unit) 또는 MPU(Micro Processing Unit)를 포함한다. 프로세서(31)는 보조 기억부(33)에 기억되는 프로그램(P1)을 실행함으로써, 다양한 기능을 실현하여, 후술의 처리를 실행한다.
주 기억부(32)는 RAM(Random Access Memory)을 포함한다. 주 기억부(32)에는 보조 기억부(33)로부터 프로그램(P1)이 로드된다. 그리고, 주 기억부(32)는 프로세서(31)의 작업 영역으로서 이용된다.
보조 기억부(33)는 하드 디스크 및 플래쉬 메모리로 대표되는 불휘발성 메모리를 포함한다. 보조 기억부(33)는 프로그램(P1) 외에, 프로세서(31)의 처리에 이용되는 다양한 데이터를 기억한다. 보조 기억부(33)는 프로세서(31)의 지시에 따라서, 프로세서(31)에 의해서 이용되는 데이터를 프로세서(31)에 공급하고, 프로세서(31)로부터 공급된 데이터를 기억한다.
입력부(34)는 입력 키 및 포인팅 디바이스로 대표되는 입력 디바이스를 포함한다. 입력부(34)는 유저(100)에 의해서 입력된 정보를 취득하고, 취득한 정보를 프로세서(31)에 통지한다.
출력부(35)는 LCD(Liquid Crystal Display) 및 스피커로 대표되는 출력 디바이스를 포함하여 구성된다. 출력부(35)는 프로세서(31)의 지시에 따라서, 다양한 정보를 설계 지원 장치(10) 및 처리 장치(20)의 유저에게 제시한다.
통신부(36)는 외부의 장치와 통신하기 위한 NIC(Network Interface Controller)를 포함한다. 통신부(36)는 외부의 장치로부터 신호를 수신하고, 이 신호에 포함되는 데이터를 프로세서(31)로 출력한다. 또, 통신부(36)는 프로세서(31)로부터 출력된 데이터를 나타내는 신호를 외부의 장치로 송신한다.
덧붙여, 도 6에 도시되는 것처럼, 입력부(34) 및 출력부(35)를 생략하고 설계 지원 장치(10) 및 처리 장치(20)를 구성해도 된다. 입력부(34) 및 출력부(35)가 생략되는 경우에는, 입력부(34) 및 출력부(35)를 대신하여, 통신부(36)가 외부의 유저 인터페이스 단말과 통신함으로써, 입력부(34) 및 출력부(35)의 기능을 발휘할 수 있다.
또, 도 5에서는, 프로세서(31)가 1개인 예가 도시되어 있었다. 처리 장치(20)의 프로세서(31)가 1개인 경우에도, 도 4에 도시되는 것처럼 복수의 실행 환경을 구축할 수 있다. 다만, 이것으로는 한정되지 않고, 도 6에 도시되는 것처럼, 설계 지원 장치(10) 및 처리 장치(20)는, 복수의 프로세서(31)를 가지고 있어도 되고, 처리 장치(20)에 있어서 각 프로세서를 1개의 실행 환경에 대응시켜, 복수의 실행 환경을 실현해도 된다.
도 1에 도시되는 설계 지원 장치(10)의 기능은, 도 5, 6에 도시되는 프로세서(31)가 프로그램(P1)을 실행하여, 하드웨어 구성이 협동함으로써 실현된다. 도 5를 예로 상세를 설명하면, 도 1 중의 취득부(11)는, 주로 도 5 중의 입력부(34) 및 출력부(35)에 의해서 실현된다. 또, 해석부(12), 코드 생성부(13) 및 변환부(14)는, 주로 프로세서(31)에 의해서 실현된다. 출력부(15)는 주로 프로세서(31) 및 통신부(36)에 의해서 실현된다. 기억부(16)는 주로 보조 기억부(33)에 의해서 실현된다.
이어서, 설계 지원 장치(10)에 의해서 실행되는 처리에 대해 도 6~12를 이용하여 상세하게 설명한다. 설계 지원 장치(10)는 유저에 의해서 프로그램(P1)이 실행되면(도 5, 6 참조), 도 7에 도시되는 설계 지원 처리를 개시한다.
설계 지원 처리에서는, 설계 지원 장치(10)는 유저(100)로부터 설계 정보(101)를 취득한다(스텝 S1). 구체적으로는, 취득부(11)가 유저(100)에 대해서 설계 정보(101)의 입력을 촉구함으로써, 설계 정보(101)를 취득하여, 기억부(16)에 격납한다.
설계 정보(101)에는, 도 8에 예시되는 실행 환경 선택 테이블과, 도 9에 예시되는 통신 방법 선택 테이블이 포함된다.
실행 환경 선택 테이블은 실행 환경을 선택하기 위한 테이블로서, 도 8에 도시되는 것처럼, 라이브러리명과, 라이브러리에 적합한 실행 환경의 OS와, 라이브러리에 적합한 실행 환경의 프로세서와, 라이브러리에 적합한 실행 환경의 식별자를 관련지은 테이블이다. 예를 들면, 도 8에 도시되는 테이블의 1행째는, 「모션 제어 라이브러리」를 실행하는데 적합한 실행 환경이, OS가 「OS1」이며 프로세서가 「Pr1」인 실행 환경(21a)인 것을 의미한다. 덧붙여, 실행 환경의 식별자 중 21a~21c는, 도 1에 도시되는 부호에 대응하고 있다.
통신 방법 선택 테이블은, 모듈의 일부에서 사용되는 라이브러리를, 해당 모듈을 실행하는 실행 환경과는 상이한 다른 실행 환경에서 실행하기 위한 통신 방법을 선택하기 위한 테이블이다. 통신 방법 선택 테이블은, 도 9에 도시되는 것처럼, 라이브러리명과, 해당 라이브러리를 실행하기 위해서 실행 환경 사이에서 통신하는 방법을 관련지은 테이블이다. 예를 들면, 도 9에 도시되는 테이블의 1행째는, 「모션 제어 라이브러리」를 사용하기 위해서는, 실행 환경 사이에서 「공유 메모리」를 이용한 통신 방법을 채용하는 것이 도시되어 있다. 덧붙여, 도 8에서는, 「모션 제어 라이브러리」를 실행하는 것은 실행 환경(21a)인 것이 지정되어 있기 때문에, 「모션 제어 라이브러리」를 사용하기 위해서, 다른 실행 환경으로부터 실행 환경(21a)에 통신하여, 실행 환경(21a)에 있어서 「모션 제어 라이브러리」가 실행되게 된다.
실행 환경 선택 테이블 및 통신 방법 선택 테이블에 도시되는 것처럼, 유저(100)는, 미리, 다양한 라이브러리를 사용하는 실행 환경의 구성으로서 OS 및 프로세서를 지정하여, 실행 환경 사이에서 통신할 때의 통신 방법을 지정한다.
도 7로 돌아가, 스텝 S1에 이어서, 설계 지원 장치(10)는 처리 코드(102)를 취득한다(스텝 S2). 구체적으로는, 취득부(11)가 유저에 대해서 처리 코드(102)의 입력을 촉구함으로써, 처리 코드(102)를 취득한다.
다음에, 설계 지원 장치(10)는 모듈마다 실행 환경을 결정하기 위한 지표값을 산출한다(스텝 S3). 구체적으로는, 해석부(12)가 처리 코드(102)에 포함되는 모듈을 읽어내고, 모듈마다, 라이브러리의 사용 횟수를 지표값으로서 계수한다. 도 10에는, 본 실시 형태에 있어서 1개의 모듈에 대해 산출된 지표값의 일례가 도시되어 있다. 이 예에서는, 지표값은 9종의 라이브러리 각각의 사용 횟수를 포함하기 때문에, 벡터값에 상당하게 된다. 이러한 지표값이, 각 모듈에 대해 산출된다.
다음에, 설계 지원 장치(10)는 처리 코드(102)를 모듈 단위로 분할하고, 지표값에 기초하여 각 모듈을 실행하는 실행 환경을 선택한다(스텝 S4). 구체적으로는, 분할부(131)가, 각 모듈의 지표값으로부터, 각 모듈을 실행하는 실행 환경을 결정한다. 도 10에 도시되는 지표값에 대해서는, 「I/O 액세스 라이브러리」의 사용 횟수가 최대로 되어 있다. 또, 도 8의 실행 환경 선택 테이블을 참조하면, 「I/O 액세스 라이브러리」에는 실행 환경(21a)이 적합한 것을 알 수 있다. 이에, 분할부(131)는, 도 10에 도시되는 지표값이 산출된 모듈을 실행 환경(21a)에서 실행하는 것을 결정한다. 이와 같이, 분할부(131)는 실행 환경 선택 테이블을 기억부(16)로부터 읽어내어, 사용 횟수가 최대인 라이브러리에 적합한 실행 환경을 선택한다.
다음에, 설계 지원 장치(10)는 통신 코드를 생성한다(스텝 S5). 도 10에 도시되는 지표값이 산출된 모듈은, 상술된 것처럼 실행 환경(21a)에서 실행되는 것이 결정되었다. 이 모듈에서는, 「I/O 액세스 라이브러리」이외에도, 「데이터베이스 라이브러리」 및 「GUI 라이브러리」도 사용되고 있다. 그렇지만, 도 8의 실행 환경 선택 테이블을 참조하면, 「데이터베이스 라이브러리」는 실행 환경(21b)에서의 사용이 지정되어 있고, 「GUI 라이브러리」는 실행 환경(21c)에서의 사용이 지정되어 있다. 이에, 통신 코드 생성부(132)는 모듈을 실행 환경(21a)에서 실행하면서, 「데이터베이스 라이브러리」를 실행 환경(21b)에서 사용하기 위한 환경 간 통신 처리의 기술 및 래퍼 함수를 포함하는 통신 코드를 생성하고, 「GUI 라이브러리」를 실행 환경(21c)에서 사용하기 위한 환경 간 통신 처리의 기술 및 래퍼 함수를 포함하는 통신 코드를 생성한다.
여기서, 「데이터베이스 라이브러리」를 실행 환경(21b)에서 사용하기 위한 통신 방법에 관해서, 도 9의 통신 방법 선택 테이블을 참조하면, TCP(Transmission Control Protocol) 통신을 이용하는 것이 지정되어 있다. 이에, 통신 코드 생성부(132)는 실행 환경(21a)과 실행 환경(21b)의 사이에서 TCP 통신을 하기 위한 통신 코드를 생성한다. 또, 「GUI 라이브러리」를 실행 환경(21c)에서 사용하기 위한 통신 방법에 관해서, 도 9를 참조하면, UDP(User Datagram Protocol) 통신을 이용하는 것이 지정되어 있다. 이에, 통신 코드 생성부(132)는 실행 환경(21a)과 실행 환경(21c)의 사이에서 UDP 통신을 하기 위한 통신 코드를 생성한다.
덧붙여, 모듈이 실행되는 실행 환경과 다른 실행 환경의 사이에서 통신할 필요가 없는 경우에는, 통신 코드 생성부(132)는 통신 코드를 생성하지 않는다. 예를 들면, 도 11에 도시되는 지표값이 산출된 모듈에서는, 「I/O 액세스 라이브러리」만이 사용되고 있고, 다른 라이브러리는 사용되고 있지 않다. 이 때문에, 이 모듈에 기술되는 처리는 모두, 「I/O 액세스 라이브러리」에 적합한 실행 환경(21a)에서 실행하면 된다(도 8 참조). 또, 도 12에 도시되는 지표값이 산출된 모듈에서는, 「I/O 액세스 라이브러리」외에 「모션 제어 라이브러리」도 사용되고 있다. 그렇지만, 도 8을 참조하면, 「I/O 액세스 라이브러리」 및 「모션 제어 라이브러리」모두를 실행 환경(21a)에서 실행하는 것이 지정되어 있기 때문에, 이 모듈에 기술되는 처리는 모두 실행 환경(21a)에서 실행하면 된다.
도 7로 돌아가, 스텝 S5에 이어서, 설계 지원 장치(10)는 모듈 및 통신 코드의 형식을 변환하고, 형식이 변환된 모듈 및 통신 코드를 집약한 실행 파일(22)을 생성한다(스텝 S6). 구체적으로는, 변환부(14)가 모듈 및 통신 코드를 컴파일한다.
다음에, 설계 지원 장치(10)는 처리 장치(20)에 실행 환경을 구축한다(스텝 S7). 구체적으로는, 출력부(15)가 도 8에 도시되는 실행 환경 선택 테이블을 참조하여, 실행 환경의 구축에 필요한 데이터로서 소프트웨어 컴포넌트 및 OS를 서버(40)로부터 다운로드하여, 처리 장치(20) 상에 실행 환경을 구축한다. 예를 들면, 출력부(15)는 실행 환경 선택 테이블에 있어서 지정된 OS가 대응하는 프로세서에 의해서 실행되고 있는지 여부를 처리 장치(20)에 문의함으로써, 이미 구축되어 있는 실행 환경을 확인한다. 미구축 실행 환경이 있으면, 출력부(15)는 서버(40)로부터 필요한 OS의 최신판을 다운로드하여, 처리 장치(20)에 출력한다. 또, 출력부(15)는 실행 환경 선택 테이블에 도시되는 각종 프로세서를 처리 장치(20)가 하드웨어로서 가지고 있는지를 처리 장치(20)에 문의함으로써 확인한다. 처리 장치(20)가 하드웨어로서 가지고 있지 않은 프로세서가 있으면, 출력부(15)는 유저(100)에게 확인한 다음, 처리 장치(20) 상에서 프로세서를 에뮬레이트하기 위한 소프트웨어 컴포넌트를 서버(40)로부터 다운로드한다.
다음에, 설계 지원 장치(10)는 모듈과 통신 코드를 처리 장치(20)에 출력하여, 처리 코드(102)에 기술된 처리를 처리 장치(20)에 실행시킨다(스텝 S8). 구체적으로는, 출력부(15)가 실행 파일을 복수의 실행 환경 각각에 배치하여, 각각의 실행 환경에서 실행 파일을 실행시킨다.
이상, 설명한 것처럼, 분할부(131)가 처리 코드(102)로부터 분할된 모듈 각각에 대해서, 복수의 실행 환경 중 어느 것에서 실행할지를 결정한다. 그리고, 모듈에, 해당 모듈을 실행하는 실행 환경과는 상이한 다른 실행 환경에서 실행하는 것이 우선되는 부분 처리가 포함되는 경우에는, 통신 코드 생성부(132)가, 이 부분 처리를 다른 실행 환경에서 실행시키기 위한 통신 코드를 생성한다. 이 때문에, 처리 코드(102)를 구성하는 모듈을 복수의 실행 환경으로 배분하는 것에 더하여, 모듈에 포함되는 부분 처리를, 보다 적당한 실행 환경에서 실행할 수 있다. 따라서, 복수의 실행 환경이 포함되는 처리 시스템(1000)에 있어서, 설계자는 실행 환경의 차이를 의식하는 일 없이 애플리케이션을 설계하면 되어, 애플리케이션의 설계를 용이하게 할 수 있다. 또한, 부하 분산의 효율을 향상시킬 수 있다.
또, 분할부(131)가 처리 코드(102)를 분할하여, 모듈에 기술되는 처리의 내용으로부터 얻은 지표값으로부터, 해당 모듈을 복수의 실행 환경 중 어느 것에서 실행할지를 결정했다. 이 때문에, 유저(100)가 처리 코드(102)를 분할하여 모듈을 실행하는 실행 환경을 결정할 필요가 없고, 유저(100)는 실행 환경의 특성을 의식하는 일 없이 애플리케이션을 설계할 수 있다. 따라서, 유저(100)가 개발 작업에 숙련될 필요가 없어진다. 또, 개발 공정수를 삭감시킬 수 있다.
본 실시 형태에 따른 분할부(131)는 모듈에 있어서의 라이브러리의 사용 빈도를 지표값으로 하고, 이 사용 빈도가 가장 높은 라이브러리가 최적으로 동작하는 실행 환경을, 해당 모듈을 실행하는 실행 환경으로서 결정했다. 일반적으로, 처리 코드(102)에는 처리의 개요적인 흐름을 기술하고, 비교적 부하가 높은 처리는 라이브러리를 사용하여 달성하는 케이스가 많다. 이 때문에, 라이브러리의 사용 빈도에 따라 실행 환경을 선택하면, 적당한 실행 환경에서 모듈을 실행하는 것을 기대할 수 있다. 또, 유저(100)가 실행 환경의 특성을 의식하는 일 없이, 애플리케이션을 용이하게 개발할 수 있다. 여기서, 실행 환경의 특성에는, 예를 들면, OS 마다의 사용 가능한 라이브러리, 리얼타임성, 연산 성능이 포함된다.
또, 통신 코드 생성부(132)는 통신 코드를 생성한다. 구체적으로는, 통신 코드 생성부(132)는 부분 처리에서 사용되는 라이브러리와 통신 방법 선택 테이블에서 관련지어진 통신 방법에 의해 통신하기 위한 통신 코드를 생성한다. 이 때문에, 유저(100)는 실행 환경 간에 있어서의 제휴 처리를 실현하는 코드를 작성할 필요가 없다. 따라서, 유저(100)가 개발 작업에 숙련될 필요가 없어진다. 또, 개발 공정수를 삭감시킬 수 있다.
또, 출력부(15)는 실행 파일(22)을 처리 장치(20)에 실행시키기 위해서 필요한 데이터로서, 소프트웨어 컴포넌트 및 OS를 준비한다. 이 때문에, 유저(100)에 의한 소프트웨어 컴포넌트 및 OS의 준비, 및 배치 설정이 불필요해진다. 따라서, 유저(100)가 개발 작업에 숙련될 필요가 없어진다. 또, 개발 공정수를 삭감시킬 수 있다.
이상, 본 발명의 실시 형태에 대해서 설명했지만, 본 발명은 상기 실시 형태에 의해서 한정되는 것은 아니다.
예를 들면, 상기 실시 형태에 따른 처리 시스템(1000)은 공장에 설치되는 생산 시스템이었지만, 이것으로는 한정되지 않는다. 처리 시스템(1000)은 병원 및 학교로 대표되는 공공 시설, 주택, 또는 오피스 빌딩에 있어서 구축되어도 된다. 또, 처리 시스템(1000)은 생산 시스템과는 상이한 가공 시스템, 검사 시스템, 제어 시스템, 또는 그 외의 처리 시스템이어도 된다.
예를 들면, 상기 실시 형태에서는, 처리 장치(20)가 1대인 것이 상정되어 있었지만, 이것으로는 한정되지 않는다. 도 13에 도시되는 것처럼, 처리 장치(20)에 구축되는 실행 환경(21a, 21b, 21c)과, 처리 장치(20a)에 구축되는 실행 환경(21d, 21e, 21f)에 처리 코드(102)의 내용을 실행시켜도 된다.
또, 상기 실시 형태에서는, 처리 시스템(1000)이 서버(40)를 포함하고 있었지만, 이것으로는 한정되지 않는다. 실행 환경의 구축에 필요한 소프트웨어 컴포넌트 및 OS를 유저(100)가 준비할 수 있으면, 서버(40)를 생략하고 처리 시스템(1000)을 구성해도 된다.
또, 상기 실시 형태에 따른 통신 코드 생성부(132)가 생성한 통신 코드는, 소스 코드였지만, 이것으로는 한정되지 않고, 소프트웨어 컴포넌트여도 된다.
또, 상기 실시 형태에서는, 설계 지원 장치(10)는 코드의 형식을 변환하는 변환부(14)를 가지고 있었지만, 이것으로는 한정되지 않고, 변환부(14)를 생략하고 설계 지원 장치(10)를 구성해도 된다. 예를 들면, 처리 코드(102)가 인터프리터형 언어로 기술되는 경우, 및 처리 코드(102)가 저급 언어로 기술되는 경우에 있어서는, 변환부(14)를 생략하더라도, 설계 지원 장치(10)는, 상기 실시 형태와 마찬가지의 효과를 달성하는 것이 된다.
또, 상기 실시 형태에서는, 설계 지원 장치(10)의 출력부(15)가 설계 정보(101)에 기초하여 실행 환경을 구축했지만, 이것으로는 한정되지 않는다. 미리 구축된 복수의 실행 환경을 구비하는 처리 장치(20)에, 설계 지원 장치(10)가 실행 파일을 출력해도 된다.
또, 상기 실시 형태에 따른 설계 지원 처리에서는, 처리 코드(102)를 입력할 때마다, 사전에 설계 정보(101)를 입력하는 플로우가 나타내졌지만, 이것으로는 한정되지 않는다. 한 번 설정한 설계 정보(101)를 유용하여, 처리 코드(102)에 관한 스텝 S2 이후의 처리를 반복하여 실행해도 된다(도 7 참조).
또, 상기 실시 형태에서는, 사용 횟수가 최대인 라이브러리에 대응하는 실행 환경이, 모듈을 실행하는 실행 환경으로서 선택되었지만, 이것으로는 한정되지 않는다. 예를 들면, 라이브러리마다 가중 계수를 설정하여, 실행 환경마다 가중합을 구하여, 가중합이 최대가 되는 실행 환경을 선택해도 된다. 도 14에는 라이브러리마다 가중 계수를 설정한 예가 도시되어 있다. 도 10에 도시되는 지표값에서는, 「I/O 액세스 라이브러리」, 「데이터베이스 라이브러리」 및 「GUI 라이브러리」각각의 사용 횟수가 6, 3, 2이다. 도 14를 참조하여, 실행 환경마다 가중합을 구하면, 실행 환경(21a)의 가중합이 6.0(=6×1.0), 실행 환경(21b)의 가중합이 4.5(=3×1.5), 실행 환경(21c)의 가중합이 7.6(=2×3.8)이 된다. 덧붙여, 실행 환경 21d의 가중합는 제로이다. 이에, 분할부(131)는 가중합이 최대인 실행 환경(21c)을 선택해도 된다.
또, 상기 실시 형태에서는, 라이브러리의 사용 횟수가 지표값으로 되었지만, 이것으로는 한정되지 않는다. 예를 들면, 모듈의 행수 혹은 문자수를 지표값으로 해도 된다.
또, 상기 실시 형태에서는, 처리 코드(102)에 포함되는 함수가 모듈로서 다루어졌지만, 이것으로는 한정되지 않는다. 처리 코드(102)가, 소스 코드가 기술된 복수의 파일을 포함하고, 각각의 파일에 복수의 함수가 기술되어 있는 경우에는, 이 파일을 모듈로서 다루는 것도 생각할 수 있다.
또, 상기 실시 형태에 따른 처리 코드(102)는 소스 코드였지만, 이것으로는 한정되지 않는다. 예를 들면, 처리 코드(102)는 래더로 대표되는 제어용 언어, 또는 프로파일이어도 된다.
또, 상기 실시 형태에서는, 모듈 중 다른 실행 환경에서 실행되는 것이 우선되는 부분 처리는, 설계 정보(101)에 의해 지정되었지만, 이것으로는 한정되지 않는다. 예를 들면, 통신 코드 생성부(132)가 실행 환경의 사양을 참조하여, 모듈을 실행하는 실행 환경에서는 실행이 불가능으로 되는 라이브러리를 추출함과 아울러, 추출한 라이브러리의 실행이 가능한 다른 실행 환경을 판별해도 된다.
또, 상기 실시 형태에서는, 실행 환경 간에 있어서의 통신 방법이, 설계 정보(101)에 의해 지정되었지만, 이것으로는 한정되지 않는다. 예를 들면, 처리 장치(20)가 충분한 용량의 RAM을 구비하는 경우에는, 모든 통신을 공유 메모리에서 행해도 된다.
또, 설계 지원 장치(10)의 기능은 전용의 하드웨어에 의해서, 또 통상의 컴퓨터 시스템에 의해서도 실현할 수 있다.
예를 들면, 프로세서(31)에 의해서 실행되는 프로그램(P1)을, 컴퓨터 판독 가능한 비일시적인 기록 매체에 격납하여 배포하고, 그 프로그램(P1)을 컴퓨터에 인스톨함으로써, 상술한 처리를 실행하는 장치를 구성할 수 있다. 이러한 기록 매체로서는, 예를 들면 플렉서블 디스크, CD-ROM(Compact Disc Read-Only Memory), DVD(Digital Versatile Disc), MO(Magneto-Optical Disc)를 생각할 수 있다.
또, 프로그램(P1)을 인터넷으로 대표되는 통신 네트워크 상의 서버 장치가 가지는 디스크 장치에 격납해 두고, 예를 들면, 반송파에 중첩시켜, 컴퓨터에 다운로드하도록 해도 된다.
또, 통신 네트워크를 통해서 프로그램(P1)을 전송하면서 기동 실행하는 것에 의해서도, 상술된 처리를 달성할 수 있다.
또한, 프로그램(P1)의 전부 또는 일부를 서버 장치 상에서 실행시켜, 그 처리에 관한 정보를 컴퓨터가 통신 네트워크를 통해서 송수신하면서 프로그램을 실행하는 것에 의해서도, 상술된 처리를 달성할 수 있다.
덧붙여, 상술한 기능을, OS(Operating System)가 분담해서 실현하는 경우 또는 OS와 애플리케이션의 협동에 의해 실현하는 경우 등에는, OS 이외의 부분만을 매체에 격납하여 배포해도 되고, 또 컴퓨터에 다운로드해도 된다.
또, 설계 지원 장치(10)의 기능을 실현하는 수단은, 소프트웨어로 한정되지 않고, 그 일부 또는 전부를 회로를 포함하는 전용의 하드웨어에 의해서 실현해도 된다.
본 발명은 본 발명의 광의의 정신과 범위를 일탈하는 일 없이, 다양한 실시 형태 및 변형이 가능하게 되는 것이다. 또, 상술한 실시 형태는 본 발명을 설명하기 위한 것이며, 본 발명의 범위를 한정하는 것은 아니다. 즉, 본 발명의 범위는 실시 형태가 아니며, 청구 범위에 의해서 나타내진다. 그리고, 청구 범위 내 및 그것과 동등한 발명의 의의의 범위 내에서 실시되는 다양한 변형이, 본 발명의 범위 내로 간주된다.
[산업상의 이용 가능성]
본 발명은 처리 장치에 실행시키는 처리를 복수의 실행 환경으로 분산시키는 것에 적합하다.
1000: 처리 시스템 100: 유저
101: 설계 정보 102: 처리 코드
10: 설계 지원 장치 11: 취득부
12: 해석부 13: 코드 생성부
131: 분할부 132: 통신 코드 생성부
14, 14a, 14b, 14c: 변환부 15: 출력부
16: 기억부 20, 20a: 처리 장치
21, 21a, 21b, 21c, 21d, 21e, 21f: 실행 환경
22: 실행 파일 23: 통신부
24: 하이퍼바이저 25: 하드웨어
31: 프로세서 32: 주 기억부
33: 보조 기억부 34: 입력부
35: 출력부 36: 통신부
37: 내부 버스 40: 서버
41: 소프트웨어 컴포넌트 42: OS
P1: 프로그램

Claims (8)

  1. 처리 장치에 처리를 실행시키기 위한 설계를 지원하는 설계 지원 장치로서,
    상기 처리의 내용을 기술한 처리 코드를 취득하는 취득 수단과,
    상기 처리 코드를 복수의 모듈로 분할하고, 분할한 상기 모듈 각각에 대해서, 상기 처리 장치에 구축되는 복수의 실행 환경 중 어느 것에서 실행할지를 결정하는 분할 수단과,
    상기 모듈에, 해당 모듈을 실행하는 것이 결정된 하나의 실행 환경과는 상이한 다른 실행 환경에서 실행하는 것이 우선되는 부분 처리가 포함되는 경우에, 상기 하나의 실행 환경과 상기 다른 실행 환경의 사이에서 통신하여 상기 부분 처리를 상기 다른 실행 환경에서 실행시키기 위한 통신 코드를 생성하는 통신 코드 생성 수단과,
    상기 복수의 모듈과 상기 통신 코드를 상기 처리 장치에 출력하는 출력 수단을
    구비하는 설계 지원 장치.
  2. 청구항 1에 있어서,
    상기 모듈 및 상기 통신 코드의 형식을 실행 형식으로 변환하는 변환 수단을 추가로 구비하고,
    상기 처리 코드 및 상기 통신 코드는, 소스 코드인
    설계 지원 장치.
  3. 청구항 1에 있어서,
    서버에 접속되는 설계 지원 장치로서,
    상기 출력 수단은 상기 처리 코드에 기술되는 처리를 상기 처리 장치에 실행시키기 위한 데이터를 상기 서버로부터 취득하고, 상기 데이터와 상기 복수의 모듈과 상기 통신 코드를 상기 처리 장치에 출력하는
    설계 지원 장치.
  4. 청구항 1에 있어서,
    상기 분할 수단은 상기 모듈에 기술되는 처리의 내용으로부터 얻는 지표값으로부터, 상기 모듈을 상기 복수의 실행 환경 중 어느 것에서 실행할지를 결정하는
    설계 지원 장치.
  5. 청구항 4에 있어서,
    상기 지표값은 상기 모듈에 기술되는 처리에 있어서의 라이브러리의 사용 빈도인
    설계 지원 장치.
  6. 청구항 1 내지 청구항 5 중 어느 한 항에 있어서,
    상기 부분 처리는 라이브러리를 사용하는 처리이며,
    상기 취득 수단은 라이브러리와 통신 방법을 관련지은 설계 정보를 취득하고,
    상기 통신 코드 생성 수단은 상기 부분 처리에서 사용되는 라이브러리와 관련지어진 통신 방법에 의해 통신하기 위한 통신 코드를 생성하는
    설계 지원 장치.
  7. 컴퓨터가, 처리의 내용을 기술한 처리 코드를 복수의 모듈로 분할하고, 분할한 상기 모듈 각각에 대해서, 복수의 실행 환경 중 어느 것에서 실행할지를 결정하는 스텝과,
    컴퓨터가, 상기 모듈에, 해당 모듈을 실행하는 것이 결정된 하나의 실행 환경과는 상이한 다른 실행 환경에서 실행하는 것이 우선되는 부분 처리가 포함되는 경우에, 상기 하나의 실행 환경과 상기 다른 실행 환경의 사이에서 통신하여 상기 부분 처리를 상기 다른 실행 환경에서 실행시키기 위한 통신 코드를 생성하는 스텝과,
    컴퓨터가, 상기 복수의 모듈과 상기 통신 코드를 출력하는 스텝을
    포함하는 설계 지원 방법.
  8. 컴퓨터에,
    처리의 내용을 기술한 처리 코드를 복수의 모듈로 분할하고, 분할한 상기 모듈 각각에 대해서, 복수의 실행 환경 중 어느 것에서 실행할지를 결정하고,
    상기 모듈에, 해당 모듈을 실행하는 것이 결정된 하나의 실행 환경과는 상이한 다른 실행 환경에서 실행하는 것이 우선되는 부분 처리가 포함되는 경우에, 상기 하나의 실행 환경과 상기 다른 실행 환경의 사이에서 통신하여 상기 부분 처리를 상기 다른 실행 환경에서 실행시키기 위한 통신 코드를 생성하고,
    상기 복수의 모듈과 상기 통신 코드를 출력하는
    것을 실행시키기 위한 기록 매체에 저장된 프로그램.
KR1020207017751A 2017-12-25 2017-12-25 설계 지원 장치, 설계 지원 방법 및 기록 매체에 저장된 프로그램 KR102213046B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/046454 WO2019130396A1 (ja) 2017-12-25 2017-12-25 設計支援装置、設計支援方法及びプログラム

Publications (2)

Publication Number Publication Date
KR20200081502A KR20200081502A (ko) 2020-07-07
KR102213046B1 true KR102213046B1 (ko) 2021-02-05

Family

ID=65020494

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207017751A KR102213046B1 (ko) 2017-12-25 2017-12-25 설계 지원 장치, 설계 지원 방법 및 기록 매체에 저장된 프로그램

Country Status (5)

Country Link
US (1) US10977032B2 (ko)
JP (1) JP6452904B1 (ko)
KR (1) KR102213046B1 (ko)
CN (1) CN111512285A (ko)
WO (1) WO2019130396A1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008186357A (ja) * 2007-01-31 2008-08-14 Renesas Technology Corp データ処理装置
JP2011198027A (ja) * 2010-03-19 2011-10-06 Fujitsu Ltd 仮想マシンシステムおよび仮想マシン管理方法
JP2016170707A (ja) * 2015-03-13 2016-09-23 株式会社東芝 制御プログラム分割装置、制御プログラム分割方法、コンピュータプログラム及び分割ソースコード生産方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07114516A (ja) * 1993-07-06 1995-05-02 Hitachi Ltd プログラム並列化方法
US7260794B2 (en) * 2002-12-20 2007-08-21 Quickturn Design Systems, Inc. Logic multiprocessor for FPGA implementation
JP2004264914A (ja) 2003-02-24 2004-09-24 Intellaset:Kk システム性能測定分析装置
JP2008165342A (ja) 2006-12-27 2008-07-17 Hitachi Software Eng Co Ltd ソースコード生成方法及び装置並びにプログラム
JP4929121B2 (ja) 2007-10-16 2012-05-09 株式会社東芝 ソースプログラム解析装置、ソースプログラム解析方法及びコンピュータプログラム
US8799554B1 (en) * 2010-10-27 2014-08-05 Amazon Technologies, Inc. Methods and system for swapping memory in a virtual machine environment
JP2012118715A (ja) 2010-11-30 2012-06-21 Fuji Electric Co Ltd Plcシステム、その開発支援装置、プログラム
EP2689327B1 (en) * 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US9811367B2 (en) * 2014-11-13 2017-11-07 Nsp Usa, Inc. Method and apparatus for combined hardware/software VM migration
US9652225B1 (en) * 2016-01-04 2017-05-16 International Business Machines Corporation Development community assessment via real-time workspace monitoring
US10223317B2 (en) * 2016-09-28 2019-03-05 Amazon Technologies, Inc. Configurable logic platform
US10642492B2 (en) * 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US11115293B2 (en) * 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008186357A (ja) * 2007-01-31 2008-08-14 Renesas Technology Corp データ処理装置
JP2011198027A (ja) * 2010-03-19 2011-10-06 Fujitsu Ltd 仮想マシンシステムおよび仮想マシン管理方法
JP2016170707A (ja) * 2015-03-13 2016-09-23 株式会社東芝 制御プログラム分割装置、制御プログラム分割方法、コンピュータプログラム及び分割ソースコード生産方法

Also Published As

Publication number Publication date
CN111512285A (zh) 2020-08-07
US20200394022A1 (en) 2020-12-17
WO2019130396A1 (ja) 2019-07-04
US10977032B2 (en) 2021-04-13
KR20200081502A (ko) 2020-07-07
JP6452904B1 (ja) 2019-01-16
JPWO2019130396A1 (ja) 2019-12-26

Similar Documents

Publication Publication Date Title
RU2729209C1 (ru) Уровни абстракции для приложений автоматизации
JP2012118715A (ja) Plcシステム、その開発支援装置、プログラム
JP7047068B2 (ja) メディア作品にカスタムアルゴリズムを実行するための拡張可能な手法
US10579036B2 (en) Apparatus for program management of programmable logic controller
JP6950665B2 (ja) エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
US10416976B2 (en) Deployment device, deployment method, and recording medium
JP2018129020A (ja) インダストリアル・インターネットオペレーティングシステムに基づくインダストリアル・プロセス制御管理方法と装置
US20210150389A1 (en) Inference system, inference device, and inference method
KR102258542B1 (ko) 프로그래머블 컨트롤러, 관리 장치 및 제어 시스템
CN110457044A (zh) Haxe应用程序的编译方法、装置及电子设备
JP5655448B2 (ja) Plcシステム、その開発支援装置
KR102213046B1 (ko) 설계 지원 장치, 설계 지원 방법 및 기록 매체에 저장된 프로그램
JPH03229352A (ja) プログラム変更方法
JP2015215865A (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ
US11640152B2 (en) Method and device for providing service for a programmable logic controller
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
JP2017204213A (ja) 設定サーバ、設定方法および設定プログラム
JPWO2016189834A1 (ja) パラメータ決定装置、パラメータ決定方法、および、プログラム
JP6295914B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ
KR20200108789A (ko) Dnn 프레임워크를 이용하는 단일 가속기용 프로그램을 복수의 가속기에서 처리하는 방법 및 컴퓨터 프로그램
JP7403732B1 (ja) 翻訳プログラム、翻訳装置及び翻訳方法
JP2015035174A (ja) 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体
CN112639730A (zh) 用于程序文件编写和运行处理的方法及装置、系统
JP2008299763A (ja) 分散オブジェクト開発ツール
CN108304188B (zh) 一种数据类型转换方法及终端

Legal Events

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