JPWO2012023296A1 - 制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法 - Google Patents

制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法 Download PDF

Info

Publication number
JPWO2012023296A1
JPWO2012023296A1 JP2012529497A JP2012529497A JPWO2012023296A1 JP WO2012023296 A1 JPWO2012023296 A1 JP WO2012023296A1 JP 2012529497 A JP2012529497 A JP 2012529497A JP 2012529497 A JP2012529497 A JP 2012529497A JP WO2012023296 A1 JPWO2012023296 A1 JP WO2012023296A1
Authority
JP
Japan
Prior art keywords
program
control
information
pattern
control program
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2012529497A
Other languages
English (en)
Other versions
JP5536892B2 (ja
Inventor
紀之 久代
紀之 久代
成憲 中田
成憲 中田
善朗 伊藤
善朗 伊藤
吉秋 小泉
吉秋 小泉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2012529497A priority Critical patent/JP5536892B2/ja
Publication of JPWO2012023296A1 publication Critical patent/JPWO2012023296A1/ja
Application granted granted Critical
Publication of JP5536892B2 publication Critical patent/JP5536892B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B15/00Systems controlled by a computer
    • G05B15/02Systems controlled by a computer electric
    • 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/44Arrangements for executing specific programs
    • 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
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • 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
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23008Computer aided software engineering, program generation, case tools, CASE
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23261Use control template library
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/26Pc applications
    • G05B2219/2614HVAC, heating, ventillation, climate control

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

制御プログラム生成装置(100)は、制御モジュールを複数記憶する制御プログラム再利用ライブラリ(130)と、アーキテクチャパタンを表すパタン情報を複数記憶するアーキテクチャパタンライブラリ(120)とを備える。また、制御プログラム生成装置(100)は、アーキテクチャパタンライブラリ(120)から選択されたアーキテクチャパタンと当該アーキテクチャパタンを有する制御プログラムのプログラム構造と制御モジュールの実行時間と時間的制限とを対応付けて表示する。またさらに、制御プログラム生成装置(100)は、プログラム構造に基づいて制御プログラム再利用ライブラリ(130)の制御モジュールを連結する。

Description

本発明は、ハードウェアを制御する制御プログラムを生成する制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法に関する。
近年、短期間で多様な仕様の製品を開発するために、プロダクトライン開発が行われている。このプロダクトライン開発では、開発する製品の使用範囲をドメインとして特定し、特定されたドメインに属する他の複数製品に共通した機能を有する部分を再利用(つまり、流用)すると共に、共通しない機能を有する部分(つまり、差分)に限って開発を行うことで、製品の開発効率を向上させている。
このように開発済みのソフトウェアプログラムを新製品の開発に再利用するため、所定の電気機器に対して所定の動作を行わせるためのプログラムを複数記憶した記憶部から、当該電気機器に実行させる一連の動作手順に基づいて複数のプログラムを選択すると共に、選択した複数のプログラムを連結することで、当該電気機器を制御するマイクロプロセッサの実行プログラムを自動生成する方法が提案されている(例えば、特許文献1参照)。
また、プログラムの設計に用いられるダイアグラムの作成を支援するために、あるプログラムの設計に用いられたある種類のダイアグラムと、他のプログラムの設計に用いられた他の種類のダイアグラムとの間の関係知識に基づいて、異なる種類のダイアグラム間で生じる矛盾を検証するシステムが提案されている(例えば、特許文献2参照)。
さらに、生成された制御プログラムによって制御されるハードウェアを、コンピュータを用いて仮想的に形成すると共に、形成した仮想的なハードウェアの動作タイミングと、仮想的なハードウェアに対して実行させる制御プログラムの動作タイミングとを現実の動作タイミングに対応させるソフトウェア実行装置が提案されている(例えば、特許文献3参照)。
特開平04−283802号公報 特開平07−152544号公報 特開平10−161906号公報
しかしながら、特許文献1に開示された方法では、プログラムの基本設計(つまり、アーキテクチャ)に基づいてプログラムを生成していない。このため、既に生成されたプログラムとアーキテクチャのパタンが共通するプログラムを作成する場合であっても、既に作成され、実際に運用されるなどして信頼性が確保されたアーキテクチャパタンを再利用できないので、信頼性の高いプログラムを効率良く開発できなかった。
また、特許文献2に開示されたシステムでは、プログラムの構造を記述する方法が開示されていない。このため、プログラムの構造をプログラムの設計者が認識することが困難であり、プログラムモジュール及びアーキテクチャの再利用が困難であった。
さらに、特許文献3に開示されたソフトウェア実行装置では、制御プログラムに課せられる時間的制限と、制御プログラムを構成する制御モジュールの実行時間とを表示できない。このため、どのような制御モジュールを再利用して制御プログラムを作成すれば、時間的制限を満足できるプログラムを生成できるかを設計者が認識することが困難であり、プログラムモジュール及びアーキテクチャの再利用が困難であった。
本発明は、上記実情に鑑みてなされたものであり、その目的とするところは、プログラムモジュール及びアーキテクチャを再利用することで、信頼性の高いハードウェアの制御プログラムを効率的に生成できる制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法を提供することにある。
上記目的を達成するため、本発明の制御プログラム生成装置は、
ハードウェアの動作を制御する制御モジュールを複数記憶する制御モジュール記憶手段と、
前記複数の制御モジュールの1つ以上で構成される制御プログラムのアーキテクチャに共通したプログラム構造であるアーキテクチャパタンを表すパタン情報を複数記憶するパタン情報記憶手段と、
前記記憶されたパタン情報を選択するパタン選択情報を取得するパタン選択情報取得手段と、
前記パタン選択情報で選択されたパタン情報で表されるアーキテクチャパタンを有する制御プログラムの実行時間に課される時間的制限を表す制限情報を取得する制限情報取得手段と、
前記選択されたパタン情報で表されるアーキテクチャパタンと、前記アーキテクチャパタンを有する制御プログラムのプログラム構造と、前記制御プログラムを構成する制御モジュールの実行時間と、前記取得された制限情報で表される時間的制限と、を対応付けて表示部に表示させる表示制御手段と、
前記制御プログラムのプログラム構造に対する変更内容を記述する記述情報を取得する記述情報取得手段と、
前記取得された記述情報に基づいて、前記制御プログラムのプログラム構造を編集するプログラム編集手段と、
前記編集されたプログラム構造に基づいて前記制御モジュール記憶手段に記憶された制御モジュールを連結することで、ハードウェアを制御する制御プログラムを生成するプログラム生成手段と、を備える。
本発明に係る制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法によれば、信頼性の高いハードウェアの制御プログラムを効率的に生成できる。
(a)は、本発明の実施形態に係る制御プログラム生成装置で構成されるシステムの一例を表すシステム構成図である。(b)は、制御プログラム生成装置の一構成例を表すハードウェア構成図である。 制御プログラム生成装置が実行する制御プログラム生成処理の一例を表すフローチャートである。 (a)は、制御プログラム生成装置が有する機能の一例を表す機能ブロック図である。(b)は、プログラム編集部の一構成例を表す図である。 (a)は、ドメインパタンテーブルの一例を表す図である。(b)は、パタン構造記述テーブルの一例を表す図である。(c)は、構造記述テーブルの一例を表す図である。(d)は、仕様テーブルの一例を表す図である。(e)は、制御モジュールテーブルの一例を表す図である。 (a)は、編集画面の一例を表す図である。(b)は、構造テンプレート表示エリアの一例を表す図である。 プログラム構造の一例を表す図である。 言語オントロジー(仕様)の一例を表す図である。 (a)は、結合点仕様及び制限仕様について詳細に説明するための図である。(b)は、制御モジュールの実行時間の表示例を表す図である。(c)は、余裕時間の表示例を表す図である。 (a)は、処理の繰り返し構造を表す言語オントロジー(仕様)の一例を表す図である。(b)は、多入力処理又は多出力処理を表す言語オントロジー(仕様)の一例を表す図である。 制御プログラム生成装置が実行する制限情報表示制御処理の一例を表すフローチャートである。 (a)は、検証範囲の一例を表す図である。(b)は、解析結果表示画面の一例を表す図である。(c)は、解析結果表示画面の他例を表す図である。
以下、本発明の実施形態に係る制御プログラム生成装置100で構成される制御プログラム生成システム1について、添付図面を参照しつつ説明する。
制御プログラム生成システム1は、図1(a)に示すような制御プログラム生成装置100と、試験用実機200とを含んで構成される。
先ず、制御プログラム生成装置100について説明する前に、試験用実機200について説明する。
試験用実機200は、例えば、空調機器(以下、空調という)のコントローラで構成され、制御プログラム生成装置100と、不図示の空調とに接続されている。試験用実機200は、制御プログラム生成装置100で生成された制御プログラムを実行することでハードウェアである空調機器を制御する実機であって、制御プログラムの試験を行う機能が追加されている。この試験用実機200は、制御プログラム生成装置100から制御プログラムを受信すると、受信した制御プログラムを試験実行する。その後、試験用実機200は、実行が終了すると実行結果を表す試験結果情報を制御プログラム生成装置100へ返信する。この試験結果情報は、例えば、制御プログラムを構成する制御モジュールを識別するモジュールID又はモジュール名と、制御モジュールの実行時刻を表す実行時刻情報とを対応付けた情報を含む。
なお、制御モジュールの実行時刻は、実行開始時刻と実行終了時刻とを含み、試験結果は、制御モジュールを識別するモジュールID又はモジュール名と、制御モジュールの実行開始時刻から実行終了時刻までの実行期間を表す実行期間とを含む。また、試験結果は、実行時刻と、当該実行時刻における制御モジュールの変数値とをさらに含んでも良い。
また、実機は、空調のコントローラに限定されず、ビルで使用されるエレベータ、照明、駐車場、及びセキュリティ装置などのハードウェアを制御するコントローラであっても良いし、家庭(以下、ホームという)で使用される太陽光発電機、エアコン、床暖房、給湯機、換気装置、及びセキュリティ装置などのハードウェアを制御するコントローラであっても良い。
制御プログラム生成装置100は、図1(b)に示すように、CPU(Central Processing Unit)100a、ROM(Read Only Memory)100b、RAM(Random Access Memory)100c、ハードディスク100d、メディアコントローラ100e、LANカード(Local Area Network)100f、ビデオカード100g、LCD(Liquid Crystal Display)100h、キーボード100i、及びポインティングデバイス(以下単に、マウスという)100jを含んで構成される。
CPU100aは、ROM100b又はハードディスク100dに保存されたプログラムに従ってソフトウェア処理(つまり、情報処理)を実行することで、制御プログラム生成装置100の全体制御を行う。RAM100cは、CPU100aによるプログラムの実行時において、処理対象とする情報(つまり、データ)を一時的に記憶する。
ハードディスク100dは、後述するような、各種の情報(つまり、データ)を保存した表(つまり、テーブル)を記憶する。尚、制御プログラム生成装置100は、ハードディスク100dの代わりに、フラッシュメモリを備えても良い。
メディアコントローラ100eは、記録媒体から各種のデータ及びプログラムを読み出す。尚、記録媒体は、フラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disc)、及びブルーレイディスク(Blu-ray Disc)を含む。
LANカード100fは、通信網10を介して接続する試験用実機200との間でデータ及びコマンドを送受信する。
ビデオカード100gは、CPU100aから出力されたデジタル信号に基づいて画像を描画(つまり、レンダリング)すると共に、描画された画像を表す画像信号を出力する。LCD100hは、ビデオカード100gから出力された画像信号に従って画像を表示する。尚、制御プログラム生成装置100は、LCD100hの代わりに、PDP(Plasma Display Panel)又はEL(Electroluminescence)ディスプレイを備えても良い。
キーボード100i及びマウスjは、ユーザの操作に応じた信号を入力する。尚、制御プログラム生成装置100は、キーボード100i及びマウスjの代わりにタッチパネルを備えても良い。
次に、制御プログラム生成装置100が実行する処理について説明する。
制御プログラム生成装置100のCPU100aが、図2の制御プログラム生成処理を実行することで、図3(a)に示すプログラム編集部110、アーキテクチャパタンライブラリ(以下、パタン情報記憶部という)120、制御プログラム再利用ライブラリ(以下、制御モジュール記憶部という)130、制御プログラム構造記述言語仕様ライブラリ(以下、記述情報記憶部)140、ドメイン選択情報取得部151、パタン選択情報取得部152、制限情報取得部153、記述情報取得部154、検証範囲情報取得部155、表示制御部160、プログラム生成部170、情報通信部180、プログラム模擬部190、及び動作解析部195として機能する。
図2の制御プログラム生成処理の実行を開始すると、プログラム編集部110は、図3(a)のパタン情報記憶部(つまり、アーキテクチャパタンライブラリ)120に記憶された複数のテーブルの1つである、図4(a)に示すようなドメインパタンテーブルから、プログラム生成部170で生成される制御プログラムで制御されるハードウェアのドメインを表すドメイン情報を取得する(ステップS01)。
ここで、ドメインとは、ハードウェアが使用される範囲をいう。例えば、ハードウェアがエレベータ、空調、照明、駐車場、又はセキュリティ装置であれば、これらのハードウェアは、ビルで使用される。このため、これらのハードウェアのドメインは、ビル分野を含む。また例えば、ハードウェアが太陽光発電機、エアコン、換気装置、給湯器、又はセキュリティ装置であれば、これらのハードウェアは、一般家庭で使用される。このため、これらのハードウェアのドメインは、ホーム分野を含む。なお、図4(a)のドメインパタンテーブルは、ドメイン情報としてドメイン名を表す情報とドメインを識別するドメインIDとを保存し、ドメイン名には、ビル分野及びホーム分野が含まれる。
次に、図3(a)の表示制御部160は、プログラム編集部110が取得したドメイン情報で表されるドメイン名を一覧表示するように、図1(a)のLCD100hを制御する(ステップS02)。
次に、図3のドメイン選択情報取得部151は、ユーザ(つまり、制御プログラムの開発者)に操作されたキーボード100i及びマウス100jの1つ以上(以下、入力部という)から、表示されたドメイン名のドメインであって、生成する制御プログラムのドメインとして選択されたドメイン(以下、選択ドメインという)を表すドメイン選択情報を取得する(ステップS03)。例えば、一般家庭で使用されるハードウェアを制御する制御プログラムを生成する場合には、ホーム分野をドメインとして選択する。
次に、プログラム編集部110は、ステップS03で取得された選択ドメインを表すドメイン情報(以下、選択ドメイン情報という)と対応付けられたパタン情報を、図4(a)のドメインパタンテーブルから1以上検索する(ステップS04)。ここで、パタン情報は、パタンを識別するパタンIDと、パタン名を表す情報と、パタン内容を表す情報とを含む。
なお、本明細書で使用されるパタンという語は、あるドメインで使用される制御プログラムのアーキテクチャに共通したプログラム構造(以下、共通構造という)であるアーキテクチャパタンをいう。また、アーキテクチャとは、プログラムの構造的な基本設計をいう。
プログラム編集部110は、ステップS04において、選択ドメイン情報に基づいてパタンIDを検索し、検索されたパタンIDと対応付けられたパタン名を表す情報及びパタン内容を表す情報を、図3(a)のパタン情報記憶部(つまり、アーキテクチャパタンライブラリ)120に記憶された複数のテーブルの1つである、図4(b)のパタン構造記述テーブルから検索する。
図2のステップS04の後、図3(a)の表示制御部160は、プログラム編集部110が検索した情報に基づいて、選択ドメインのドメインIDと対応付けられたパタンIDで識別される1以上のパタンのパタン名及びパタン内容の一覧を生成した後、生成した一覧を、図5(a)に示すような編集画面Fの構造テンプレート表示エリアFSに表示するようにLCD100hを制御する(ステップS05)。あるドメインで使用される複数のハードウェアは、共通の機能を有することが多いため、それらのハードウェアを制御する制御プログラムは、基本的な設計を共通にする(つまり、共通のアーキテクチャを有する)ことが多いためである。
なお、編集画面Fは、制御プログラムのプログラム構造及びプログラム構造の編集内容が表示される画面である。また、編集画面Fの構造テンプレート表示エリアFSは、図5(b)に示すような、選択されたドメインに属する制御プログラムに共通のプログラム構造であって、見本(つまり、テンプレート)となるもの(つまり、アーキテクチャパタン)のパタン名及びパタン内容が表示される領域である。
なお、編集画面FのアイコンICは、例えば、編集画面Fを用いた制御プログラムの作成作業の手順を案内するナビゲーション表示、ヘルプ表示、又は後述するシミュレーション結果の要約表示を行うように命じるコマンドと関連付けられている。
図5(b)の構造テンプレート表示エリアFSに表示されたアーキテクチャパタンについて具体的に説明すると、「運転停止」というアーキテクチャパタンのパタン内容は、ハードウェアであるコントローラに制御画面などの所定の「画面」を表示させる処理を最初とし、制御画面に表示された運転停止ボタンに対するタッチ操作を検出した後に、運転停止状態を表すパラメタに運転停止を表す値を「格納」する処理を中番とし、運転停止を命じるコマンドをハードウェアへ「通信」する処理を最後とするプログラム構造である。
図2のステップS05の後に、パタン選択情報取得部152は、ユーザに操作された入力部から、表示されたパタン名のパタンであって、生成する制御プログラムのアーキテクチャとして使用するアーキテクチャパタンを選択するパタン選択情報を取得する(ステップS06)。
次に、プログラム編集部110は、ステップS06で取得されたパタン選択情報で選択された選択パタンのパタンIDと対応付けられた構造記述IDを、図4(b)のパタン構造記述テーブルから検索する。次に、プログラム編集部110は、検索した構造記述IDと対応付けられた構造記述情報を、図3(a)のパタン情報記憶部(つまり、アーキテクチャパタンライブラリ)120に記憶された複数のテーブルの1つである、図4(c)に示すような構造記述テーブルから検索する(ステップS07)。
ここで、構造記述IDとは、構造記述を識別する情報をいい、構造記述情報とは、構造記述を表す情報をいう。また、構造記述とは、本実施形態において、プログラム構造を記述する特別な言語であるプログラム構造記述言語を用いて表されたプログラム構造の記述をいう。
ここで、一旦、図6を参照して、プログラム構造記述言語で記述されたプログラム構造の一例について説明する。
図6のプログラム構造は、空調を制御するコントローラで実行される制御プログラムのプログラム構造を表す。この制御プログラムは、コントローラの立ち上げから10秒後に、スケジュールリストに保持された空調制御を1つずつ実行すると共に、空調の制御状態を表す変数を更新するプログラムである。
図6のプログラム構造は、言語オントロジー(以下単に、仕様という)N01からN11で表される。仕様N01は、プログラム関数の開始点を表す。仕様N01から仕様N02へ向かう矢印と連結された仕様N02は、関数の実行を開始すると、下部の四角形の中に記載された数字で表される秒(つまり、「10」秒)だけウェイト処理(以下、待機処理という)を行うことを表す。
仕様N02から仕様N03へ向かう矢印と連結された仕様N03は、仕様N02の処理の後に何らかの条件分岐を行うことを表す。同様に、仕様N04は、仕様N03の処理の後に何らかの条件分岐を行うこと表す。仕様N04と仕様N05とを結ぶ線分と連結された仕様N05は、スケジュールリストの要素番号を表す変数「Schedule」に対して仕様N04の条件分岐における判別処理で使用された変数値を格納(つまり、データストア)することを表す。
「N」の文字が右側に付された、仕様N04から仕様N03へ戻る矢印は、仕様N04の条件分岐における判別結果が「偽」の場合に、再度仕様N03の処理が繰り返されることを表す。これに対して、「Y」の文字が下側に付された、仕様N04から仕様N06へ向かう矢印と連結された仕様N06は、仕様N04の条件分岐における判別結果が「真」の場合に、空調の制御状態を更新する関数を実行することを表す。また、仕様N06と仕様N07とを結ぶ線分と連結された仕様N07は、変数「Schedule」に対して仕様N06の処理で使用される変数値を格納することを表す。仕様N08及びN09は、それぞれ仕様N07及びN04と同様であるので説明を省略する。
「N」の文字が左側に付された、仕様N09から仕様N10へ向かう矢印と連結された仕様N10は、仕様N09の条件分岐における判別結果が「偽」の場合に、変数「Schedule」の値を値「1」だけインクリメントする処理を表す。
仕様N10からN03へ向かう矢印は、仕様N10の処理の後に、仕様N03の処理が再度繰り返されることを表す。また、「Y」の文字が下側に付された、仕様N09から仕様N11へ向かう矢印と連結された仕様N11は、仕様N09の条件分岐における判別結果が「真」の場合に、関数処理の実行を終了することを表す。なお、仕様は、再帰的に記載されても良い。つまり、関数を表す仕様は、関数に含まれる複数の処理を表す複数の仕様で表されても良い。
ここで、プログラム構造を表す言語オントロジー(つまり、仕様)は、図6に示した仕様N01からN11に限定されるものではない。例えば、図7に示すような、値操作処理(つまり、データに対する演算処理)を表す仕様N25、初期化処理を表す仕様N26、メッセージ通信処理を表す仕様N28、例外処理を表す仕様N29、結合点(つまり、シンクロナイゼーションポイント)を表す仕様N30、制御プログラムの実行時間又は制御プログラムを構成する複数の制御モジュールの実行時間の総和に課せられる時間的制限を表す仕様N31及び時間的制限条件を表す仕様N32、並びにプロセスの制御を表す仕様N33を含む。なお、仕様N21からN24及び仕様N27については、図6を用いて既に説明したため繰り返しの説明を省略する。
次に、図7の結合点を表す仕様(以下、結合点仕様という)N30と、時間的制限を表す仕様(以下、制限仕様という)N31とについて、図8(a)を参照して詳細に説明する。
図8(a)に示すプログラム構造は、関数を表す仕様(以下、関数仕様という)N21aからN21c、結合点仕様N30a及びN30b、及び制限仕様N31で表される。
結合点仕様N30aからは、2本の矢印が生じているため、結合点仕様N30aは、2つのプロセスを生成するフォーク処理を表す。結合点仕様N30aから生じた上側の矢印は、関数仕様N21aに到達した後に、結合点仕様N30bに到達する。これに対して、結合点仕様N30aから生じた下側の矢印は、関数仕様N21b及びN21cに順に到達した後に、結合点仕様N30bに到達する。このため、結合点仕様N30bは、結合点仕様N30aの処理で生成された2つのプロセスが、それぞれ関数仕様N21aの処理、並びに関数仕様N21bの処理及び関数仕様N21cの処理を実行し終えるのを待つ(つまり、同期を取る)処理を表す。また、制限仕様N31は、結合点仕様N30aから延びる点線と結合点仕様N30bから延びる点線とを用いて、結合点仕様N30aの処理から、結合点仕様N30bの処理までを3ミリ秒で実行完了する(つまり、スループットが3ミリ秒となる)という時間的制限が制御プログラムに課せられていることを表す。
この構成によれば、制御対象とするハードウェアにより定まる制御プログラムの実行時間に課せられる制限(つまり、時間的制限)を明確にすることができる。
なお、プログラム構造を表す言語オントロジー(つまり、仕様)は、図9(a)に示す「while文」を表す仕様N41、「Do-while文」を表す仕様N42、及び「For文」を表す仕様N43のように、処理の繰り返し構造(つまり、ループ構造)を表しても良い。
また、言語オントロジーは、図9(b)に示すような、例えば、構造体(つまり、Structure Value)などを入力する処理(つまり、多入力処理)を表す仕様N51、及び構造体などを出力する処理(つまり、多出力処理)を表す仕様N52を含んでも良い。
ここで、図2に戻り、ステップS07から引き続き制御プログラム生成処理の説明を行う。
ステップS07で検索に用いられる図4(c)の構造記述テーブルは、構造記述IDと、構造記述IDで識別される構造記述を表す構造記述情報とを対応付けて保存するテーブルである。構造記述テーブルの構造記述情報は、仕様(つまり、言語オントロジー)を識別する仕様IDと、仕様から延びる矢印と連結する(つまり、連結先である)仕様の仕様ID(以下、連結先IDという)と、仕様が条件分岐を表す場合に、矢印の脇に記載される「Y」又は「N」を表す分岐条件情報などを含むその他の情報とを対応付けた情報である。
この仕様IDは、図3(a)の記述情報記憶部(つまり、制御プログラム構造記述言語仕様ライブラリ)140が記憶する複数のテーブルの1つである、図4(d)の仕様テーブルに、仕様を表す仕様情報と対応付けて保存されている。なお、仕様情報は、図6から図9を参照して説明した仕様の種類、及びそれぞれの仕様種類が処理を表すために必要なその他の情報をいう。例えば、仕様が関数を表す場合には、その他情報は関数名を表し、仕様が時間制限を表す場合には、その他情報は制限時間と、制限の課せられる複数の仕様とを表す。
ここで、図2に戻り、引き続き制御プログラム生成処理について説明を行う。
ステップS07の後に、図3(a)の表示制御部160は、プログラム編集部110が検索した構造記述情報に基づいて、選択パタンのプログラム構造を、図5(a)の編集画面Fの作業エリアFWに表示するように図1(b)のLCD100hを制御する(ステップS08)。
次に、例えば、図1(b)のマウス100jをユーザが操作することで、LCD100hに表示されたカーソルを、図5(a)の作業エリアFWに表示されたボタンBTに重ね合わせた後に、ユーザが行ったクリック操作に応じてマウス100jが入力した信号に基づいて、図3(a)のプログラム生成部170は、制御プログラムの生成を指示されたか否かを判別する(ステップS09)。
ステップS09において、制御プログラムの生成を指示されなかったとプログラム生成部170が判別すると(ステップS09;No)、プログラム編集部110は、ユーザに操作された入力部から、図3の制限情報取得部153が制限情報と、対象情報とを取得したか否かを判別する(ステップS10)。なお、制限情報とは、生成する制御プログラムの実行時間に課される時間的制限、若しくは、生成する制御プログラムを構成し、かつ順次実行される複数の制御モジュールで表される関数の総実行時間に対する時間的制限を表す情報をいう。また、対象情報は、時間的制限が課せられる制御プログラム又は関数を表す情報をいう。
ステップS10において、制限情報が取得されたとプログラム編集部110が判別すると、図10に示すような制限情報表示制御処理が実行される(ステップS11)。
図10の制限情報表示制御処理が開始されると、図3(b)に示すようなプログラム編集部110が有する実行時間推定部111は、取得された制限情報で表される時間制限が課せられるそれぞれの関数の関数ID又は関数名に基づいて、図4(e)に示すような制御モジュールテーブルから、関数処理を表す制御モジュールを特定する。なお、制御モジュールテーブルは、図3(a)の制御モジュール記憶部(つまり、制御プログラム再利用ライブラリ)130に記憶された複数のテーブルの1つである。
次に、実行時間推定部111は、例えば、特定した制御モジュールのそれぞれについて、制御モジュールのステップ数と、入力部から入力された情報で表される制御プログラムを実行する実機の性能(つまり、CPU性能など)とに基づいて、関数の実行時間を推定する(ステップS31)。次に、表示制御部160は、推定された実行時間を、制御モジュールに対応した関数仕様と対応付けて表示するようLCD100hを制御する(ステップS32)。その後、実行時間推定部111は、時間制限が課せられる1以上の制御モジュールの実行時間の総和を算出する(ステップS33)。
次に、図3(b)に示すプログラム編集部110が有する余裕時間算出部112は、制限情報で表される時間制限から、ステップS33で算出された総推定実行時間を減算することで、余裕時間を算出する(ステップS34)。次に、図3(b)に示すプログラム編集部110が有するプログラム構造編集部113は、算出された余裕時間が正の値であるか否かを判別する(ステップS35)。
ステップS35において、余裕時間が負の値であるとプログラム構造編集部113によって判別されると(ステップS35;No)、図3(a)の表示制御部160は、余裕時間を表示し、かつ時間的制限に違反する旨のエラーメッセージを表示するように、図1(b)のLCD100hを制御する(ステップS36)。その後、制限表示制御処理の実行が終了される。
ステップS35において、余裕時間が正の値であるとプログラム構造編集部113によって判別されると(ステップS35;Yes)、図3(a)の表示制御部160は、余裕時間を表示するように、図1(b)のLCD100hを制御する(ステップS37)。次に、プログラム構造編集部113は、制御対象とするハードウェアの制御を行わない処理、又はハードウェアを余裕時間だけ待機させる制御処理(つまり、待機処理)を行う制御モジュールを、図3(a)の制御モジュール記憶部(つまり、制御プログラム再利用ライブラリ)130から検索する。次に、プログラム構造編集部113は、検索した制御モジュールを用いて実行される関数を表す仕様を、時間的制限が課せられる複数の仕様の実行順序の先頭、中間、及び最後のいずれかに追加する。その後、表示制御部160は、追加された仕様を表示するようにLCD100hを制御する(ステップS38)。その後、制限表示制御処理の実行が終了される。
具体例としては、図8(b)に示すように、仕様N30aからN30bの間に仕様N21a及び仕様N21bが記述され、これらの仕様N21aで表される関数Aと、N21bで表される関数Bとが、総実行時間3ミリ秒で実行される必要があるという時間的制限が課せられている場合を例に挙げて説明する。この場合に、実行時間推定部111は、関数Aの実行時間と関数Bの実行時間とが共に「0.5」ミリ秒であると推定し、推定した実行時間の総和を「1」ミリ秒と算出する。次に、表示制御部160は、関数Aを表す仕様N21aよりも所定量だけ下の表示位置と関数Bを表す仕様N21bよりも所定量だけ下の表示位置に、推定された実行時間が「0.5」ミリ秒である旨の表示を行うようLCD100hを制御する。
次に、余裕時間算出部112は、時間的制限「3」ミリ秒から推定された関数Aの実行時間と関数Bの実行時間との和「1」ミリ秒を減算し、余裕時間を「2」ミリ秒であると算出する。なお、表示制御部160は、仕様N21aと関数Bと関連付けて、総実行時間が「1」ミリ秒である旨の表示を行うよう表示制御しても良い。
その後、プログラム構造編集部113は、図8(c)に示すように、「2」ミリ秒に亘って実行される待機処理を表す仕様N21cを、仕様N21a及び仕様N21bの後であって、仕様N30bの前に追加し、表示制御部160は、仕様N21cよりも所定量だけ下の表示位置に、余裕時間が「2」ミリ秒である旨の表示を行うようLCD100hを制御する。なお、待機処理を表す仕様N21cは、仕様N21aと仕様N21bとの前に追加されても良いし、仕様N21aと仕様N21bとの間に追加されても良い。
図2のステップS11の後に、プログラム編集部110は、ユーザに操作された入力部から、表示されたプログラム構造に対する変更内容を記述する記述情報を、図3(a)の記述情報取得部154が取得したか否かを判別する(ステップS12)。
なお、図5に示す編集画面の部品表示エリアFPには、図3(a)の記述情報記憶部(つまり、制御プログラム構造記述言語仕様ライブラリ)140に記憶された言語オントロジー(つまり、仕様)が表示される領域であり、ユーザは、入力部を操作することで、部品表示エリアFPに表示された言語オントロジーを、プログラム構造が表示された作業エリアFWにドラッグアンドドロップしたり、ドロップした仕様を編集するなどして、プログラム構造の変更内容を記述する記述情報を入力部に入力させる。
ステップS12において、プログラム編集部110は、記述情報が取得されなかったと判別すると(ステップS12;No)、ステップS09に戻り上記処理が繰り返される。これに対して、プログラム編集部110は、記述情報が取得されたと判別すると(ステップS12;Yes)、取得された記述情報に基づいて、表示されたプログラム構造を編集する(ステップS13)。その後、表示制御部160は、編集されたプログラム構造を表示するようLCD100hを制御する(ステップS14)。その後、ステップS09に戻り上記処理が繰り返される。
ステップS09において、制御プログラムの生成を指示されたとプログラム生成部170が判別すると(ステップS09;Yes)、プログラム生成部170は、表示されたプログラム構造(以下、表示プログラム構造)に用いられる制御モジュールを、既に説明した図4(d)の仕様テーブル及び図4(e)の制御モジュールテーブルを用いて、図3(a)の制御モジュール記憶部(つまり、制御プログラム再利用ライブラリ)130から取得する(ステップS15)。また、プログラム生成部170は、取得できない制御モジュール(つまり、再利用できない新しい制御モジュールなど)を、表示された仕様に基づいて生成する。次に、プログラム生成部170は、取得した制御モジュールを、表示プログラム構造に基づいて連結することで、制御プログラムを生成する(ステップS16)。
なお、プログラム生成部170は、例えば、表示された仕様に基づいて生成された制御プログラムを識別する識別情報又はプログラム名を表す情報と、表示された仕様で表された制限情報及び対象情報とを対応付けて、図3の記述情報記憶部140に保存する。
その後、図3(a)の情報通信部180は、生成された制御プログラムを試験用実機200へ送信する(ステップS17)。なお、試験用実機200は、送信された制御プログラムをインストールし、インストールしたプログラムを試験モードで実行する。試験用実機200は、試験モードで制御プログラムを実行すると、制御プログラムの実行状態と実行時刻とを対応付けた実行結果を表す試験結果情報を試験用実機200が有する記憶部に保存する。なお、本実施形態において、実行結果は、制御プログラムの実行時刻と、制御プログラムを構成する制御モジュールを識別する識別情報若しくは名称、又は当該制御モジュールの関数を識別する識別情報(つまり、関数ID)若しくは名称(つまり、関数名)と、当該制御モジュールが実行されたプロセスを識別するIDとを含む。その後、試験用実機200は、試験結果情報を情報通信部180へ返信する。
ステップS17の後に、図3(a)の検証範囲情報取得部155は、ユーザに操作された入力部から、制御プログラムの実行を検証する検証範囲を表す検証範囲情報を取得する(ステップS18)。
具体例として、生成した制御プログラムのプログラム構造が、図11(a)に示すような仕様N21aからN21hで表される場合を挙げて説明する。ユーザは、検証範囲を指定するために、入力部を操作することで、図11(a)に示すようなプローブを、仕様N21aからN21hの間の位置に挿入する。例えば、ユーザが、プローブPB1を仕様N21a、N21d、及びN21gの前に挿入し、プローブPB2を仕様N21e、及びN21hの後に挿入した場合には、検証範囲は、あるスレッドにおける仕様N21dで表される処理の開始から仕様N21eで表される処理の終了まで、及び他のスレッドにおける仕様N21gで表される処理の開始から仕様N21hで表される処理の終了までとなる。
また例えば、ユーザが、プローブPB1を仕様N21a、N21d、及びN21gの前に挿入し、プローブPB3を仕様N21c、及びN21fの後に挿入した場合には、検証範囲は、第1スレッドにおける仕様N21aの処理開始から仕様N21cの処理終了まで、第2スレッドにおける仕様N21dの処理開始から仕様N21fの処理終了まで、及び第3スレッドにおける仕様N21gの処理開始から仕様N21hの処理終了までとなる。
図2のステップS18の後に、図3(a)のプログラム模擬部190は、制御対象とするハードウェアを模擬するシミュレーションプログラムを実行することで仮想的なハードウェアを形成する。次に、プログラム模擬部190は、生成された制御プログラムを検証範囲情報で表される検証範囲で実行することで、仮想的なハードウェアを制御する制御動作を模擬する(ステップS19)。プログラム模擬部190は、制御プログラムの制御動作を模擬する際に、模擬結果を表す模擬結果情報を生成する。
具体的には、プログラム模擬部190は、ステップS18で取得された検証範囲情報で表される検証範囲に含まれる関数の内で、最も早い実行順序の関数と、最も遅い実行順序の関数を特定する。次に、プログラム模擬部190は、検証範囲において制御プログラムを実行するために使用される変数値に対して、ユーザに操作された入力部から取得された値を初期値として代入する。その後、プログラム模擬部190は、最も早い実行順序の関数をコールする処理又から、最も遅い実行順序の関数からリターンする処理までを模擬実行する。
この模擬結果情報は、試験結果情報と同様に、例えば、制御プログラムの実行時刻と、制御プログラムを構成する制御モジュールを識別する識別情報(つまり、モジュールID)若しくは名称(つまり、モジュール名)、又は当該制御モジュールの関数を識別する識別情報(つまり、関数ID)若しくは名称(つまり、関数名)と、当該制御モジュールが実行されたプロセスを識別するIDとを含む。なお、制御モジュールの実行時刻は、実行開始時刻と実行終了時刻とを含み、模擬結果は、制御モジュールのモジュールID又はモジュール名と、制御モジュールの模擬実行が開始された実行開始時刻から模擬実行が修了された実行終了時刻までの実行期間を含む。また、検証結果は、実行時刻と、当該実行時刻における制御モジュールの変数値をさらに含んでも良い。
ステップS19の後に、図3(a)の情報通信部180は、試験用実機200から試験結果情報を受信する(ステップS20)。その後、動作解析部195は、ステップS19で生成された模擬結果情報で表される模擬結果、又はステップS20で受信された試験結果情報で表される試験結果から、ステップS18で取得された検証範囲情報で表される検証範囲において、制御モジュール及び当該制御モジュールを構成する各関数が模擬実行又は試験実行された時刻と、当該制御モジュールを識別する識別情報又は名称と、当該制御モジュールの関数を識別する識別情報又は名称と、当該制御モジュールが実行されたプロセスを識別する識別情報とを解析する(ステップS21)。その後、表示制御部160は、ステップS21の解析結果を表示するよう、図1(b)のLCD100hを制御した後に(ステップS22)、制御プログラム生成処理の実行を終了する。
具体的には、LCD100hは、図11(b)に示すような解析結果表示画面FA1を表示する。図11(b)の解析結果表示画面FA1は、横軸で表される実行時間軸を有し、制御プログラムの実行により生成される第1プロセスで実行される制御モジュールの関数名「A」から「C」及び関数ID「F0001」から「F0003」、第2プロセスで実行される制御モジュールの関数名「D」から「F」及び関数ID「F0004」から「F0006」、第3プロセスで実行される制御モジュールの関数名「G」及び「H」及び関数ID「F0007」及び「F0008」を、画面の上側から順に表示する。つまり、第1プロセスで実行される関数ID「F0001」で識別される関数Aと、第2プロセスで実行される関数ID「F0002」で識別される関数Bとは、略同一の時刻に実行が開始されたことを表す。なお、解析結果表示画面FA1に表示される関数名及び関数IDは、それぞれモジュール名及びモジュールIDでも良い。
また、動作解析部195は、上記各関数の実行時刻に基づいて制御モジュール及び制御モジュールを構成する関数の実行時間を解析する。次に、動作解析部195は、試験実行又は模擬実行された制御プログラムの識別情報又は名称に基づいて、当該制御プログラムに課せられた制限を表す制限情報及び当該制限が課せられる対象を表す対象情報とを、図3の記述情報記憶部140から検索する。その後、動作解析部195は、検索した対象情報で表される関数の総実行時間又は制御モジュールの実行時間を算出し、算出した実行時間が検索された制限情報で表される時間的制限に違反するか(つまり、解析された試験実行時間又は模擬実行時間が制限時間よりも長いか)否かを判別する。
その後、表示制御部160は、動作解析部195の判別結果などを表す、図11(c)の解析結果表示画面FA2をLCD100hに表示させる。図11(c)の解析結果表示画面FA2は、図11(b)の解析結果表示画面FA1と同様に、横軸で表される実行時間軸を有する。また、図11(c)の解析結果表示画面FA2は、第1プロセスを識別するプロセスID「P0001」と、第1プロセスで実行される制御モジュールの関数名「A」及び関数ID「F0001」など、第2プロセスを識別するプロセスID「P0002」と、第2プロセスで実行される制御モジュールの関数名「D」及び関数ID「F0004」など、第3プロセスを識別するプロセスID「P0003」と、第3プロセスで実行される制御モジュールの関数名「G」及び関数ID「F0007」などを画面の上側から順に表示する。
また、解析結果表示画面FA2は、関数ID「F0001」から「F0008」でそれぞれ識別される関数の試験実行時間又は模擬実行時間を、関数名の下側に表示する。特に、関数ID「F0007」で識別される関数G及び関数ID「F0008」で識別される関数Hは、それぞれの試験実行時間又は模擬実行時間の下側に、関数G及び関数Hの総実行時間に課せられた時間制限を表示する。さらに、解析結果表示画面FA2は、関数G及び関数Hの総試験実行時間又は総模擬実行時間が時間制限を違反したか否かという動作解析部195の判定結果を、時間制限の表示から吹き出した文字で表示する。
これらの構成によれば、複数のタスク(つまり、マルチプロセス)が並行実行されることにより、複数のタスクが同じハードウェアを制御することなどにより発生するデッドロックなどの交互干渉をユーザが容易に把握できる。
これらの構成によれば、生成する制御プログラムのアーキテクチャのみならず、生成する制御プログラムに課せられる時間制限、及び制御プログラムを構成する制御モジュールの実行時間をも表示部に表示できる。このため、ハードウェアを制御する制御プログラムのプログラム構造だけでなく、制御プログラムを構成するそれぞれの制御モジュールに課せられる時間的制限をも、制御プログラムの設計者が容易に把握できる。よって、記憶された作成済みの制御モジュール及びアーキテクチャを再利用して、信頼性の高い新たな制御プログラムを効率的に生成できる。
また、これらの構成によれば、制御プログラムに課せられる実行時間の時間的制限と、時間的制限に対する余裕時間とを表示するため、ユーザは、生成する制御プログラムが時間的制限を満足するか否かを容易に確認できるので、制御プログラムを効率的に生成できる。さらに、これらの構成によれば、制御プログラムの試験実行又は模擬実行に要した時間と、当該制御プログラムに課せられた時間的制限とを表示するため、ユーザは、生成した制御プログラムが時間的制限を満足したか否かを容易に確認できるので、制御プログラムを効率的に試験できる。またさらに、これらの構成によれば、制御プログラムの試験実行又は模擬実行に要した時間が、当該制御プログラムに課せられた時間的制限に違反したか否かを表示するため、ユーザは、生成した制御プログラムが時間的制限に違反したか否かをより容易に確認できるので、制御プログラムをより効率的に試験できる。
さらに、これらの構成によれば、実行時間の長さが余裕時間の長さに等しい待機モジュールが時間的制限の課せられた複数の制御モジュールの実行順序の先頭、中間、及び最後のいずれかで実行されるように、制御プログラムのプログラム構造が編集されるため、時間的制限を満足する信頼性の高い制御プログラムを容易に生成できる。
またさらに、これらの構成によれば、検証範囲で制御プログラムの実行を模擬すると共に、模擬結果に基づいて制御モジュールの識別情報と、制御モジュールが模擬実行された時刻とを表示するため、少ない計算時間で制御モジュールの実行結果を容易に確認できる。
また、これらの構成によれば、選択ドメインで使用されるプログラムを制御する制御プログラムであって、選択ドメインで既に運用された制御プログラムに共通した1以上のアーキテクチャパタンを有する制御プログラムを、既に選択ドメインで運用された1以上の制御モジュールに連結して生成する。このように、既に選択ドメインで運用されたアーキテクチャ及び制御モジュールを再利用して制御プログラムを生成することで、選択ドメインで使用されるハードウェアの制御を行う信頼性の高い制御プログラムを短時間かつ少ない工数で効率的に生成できる。
さらに、これらの構成によれば、再利用したアーキテクチャパタンに基づいて制御プログラムを生成するため、制御モジュールのようなコンピュータプログラムのみならず、アーキテクチャパタンというプログラム構造の基本的な設計ノウハウをも再利用できる。
尚、本実施形態に係る機能を実現するための構成を予め備えた制御プログラム生成装置100として提供できることはもとより、プログラムの適用により、既存の制御プログラム生成装置を本実施形態に係る制御プログラム生成装置100として機能させることもできる。すなわち、上記の実施形態で例示した制御プログラム生成装置100による各機能構成を実現させるための制御プログラムを、既存の制御プログラム生成装置を制御するコンピューター(CPUなど)が実行できるように適用することで、本実施形態に係る制御プログラム生成装置100として機能させることができる。また、本発明に係る制御プログラム生成方法は、制御プログラム生成装置100を用いて実施できる。
また、上述の機能を、OS(Operating System)が分担して実現する場合又はOSとアプリケーションとの協働により実現する場合等には、OS以外の部分のみを媒体に格納して配布してもよく、また、ダウンロード等しても良い。
このようなプログラムの配布方法は任意であり、例えば、メモリカード、CD−ROM、又はDVD−ROMなどの記録媒体に格納して配布できる他、インターネットなどの通信媒体を介して配布することもできる。
また、本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
以上本発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
本出願は、2010年8月16日に出願された日本国特許出願2010−181897号に基づく。本明細書中に日本国特許出願2010−181897号の明細書、特許請求の範囲、図面全体を参照として取り込むものとする。
本発明は、ハードウェアを制御する制御プログラムを生成する制御プログラム生成装置において、ビル分野又はホーム分野で使用される設備機器を制御する制御プログラムを生成する制御プログラム生成装置に適する。
1 制御プログラム生成システム
100 制御プログラム生成装置
100a CPU
100b ROM
100c RAM
100d ハードディスク
100e メディアコントローラ
100f LANカード
100g ビデオカード
100h LCD
100i キーボード
100j マウス
110 プログラム編集部
111 実行時間推定部
112 余裕時間算出部
113 プログラム構造編集部
120 アーキテクチャパタンライブラリ
130 制御プログラム再利用ライブラリ
140 制御プログラム構造記述言語仕様ライブラリ
151 ドメイン選択情報取得部
152 パタン選択情報取得部
153 制限情報取得部
154 記述情報取得部
155 検証範囲情報取得部
160 表示制御部
170 プログラム生成部
180 情報通信部
190 プログラム模擬部
195 動作解析部
200 試験用実機
上記目的を達成するため、本発明の第1の観点に係る制御プログラム生成装置は、
ハードウェアの動作を制御する制御モジュールを複数記憶する制御モジュール記憶手段と、
前記複数の制御モジュールの1つ以上で構成される制御プログラムのアーキテクチャに共通したプログラム構造であるアーキテクチャパタンを表すパタン情報を複数記憶するパタン情報記憶手段と、
前記記憶されたパタン情報を選択するパタン選択情報を取得するパタン選択情報取得手段と、
前記パタン選択情報で選択されたパタン情報で表されるアーキテクチャパタンを有する制御プログラムの実行時間に課される時間的制限であって、前記制御プログラムを構成する複数の制御モジュールの総実行時間の制限を表す制限情報を取得する制限情報取得手段と、
前記制限情報で表される総実行時間の制限が課せられた複数の制御モジュールのそれぞれに対して実行時間を推定する実行時間推定手段と、
前記制限情報で表される総実行時間の制限と、前記実行時間推定手段で推定された実行時間と、に基づいて、前記制限に対する余裕時間を算出する余裕時間算出手段と、
前記選択されたパタン情報で表されるアーキテクチャパタンと、前記アーキテクチャパタンを有する制御プログラムのプログラム構造と、前記制御プログラムを構成する制御モジュールの推定された実行時間と、前記取得された制限情報で表される時間的制限と、前記余裕時間算出手段で算出された余裕時間と、を対応付けて表示部に表示させる表示制御手段と、
前記制御プログラムのプログラム構造に対する変更内容を記述する記述情報を取得する記述情報取得手段と、
前記取得された記述情報に基づいて、前記制御プログラムのプログラム構造を編集するプログラム構造編集手段と、
前記編集されたプログラム構造に基づいて前記制御モジュール記憶手段に記憶された制御モジュールを連結することで、ハードウェアを制御する制御プログラムを生成するプログラム生成手段と、を備え、
前記制御モジュールは、前記ハードウェアの制御を行わない、又は前記ハードウェアを待機させる制御を行う待機モジュールを含み、
前記プログラム構造編集手段は、前記余裕時間算出手段で算出された余裕時間が正の値である場合に、前記複数の制御モジュールの実行順序の先頭、中間、及び最後のいずれかにおいて、実行時間の長さが前記余裕時間の長さに等しい待機モジュールが実行されるように、前記制御プログラムのプログラム構造を編集する。
本発明の第2の観点に係る制御プログラム生成装置は、
ハードウェアの動作を制御する制御モジュールを複数記憶する制御モジュール記憶手段と、
前記複数の制御モジュールの1つ以上で構成される制御プログラムのアーキテクチャに共通したプログラム構造であるアーキテクチャパタンを表すパタン情報を複数記憶するパタン情報記憶手段と、
前記記憶されたパタン情報を選択するパタン選択情報を取得するパタン選択情報取得手段と、
前記パタン選択情報で選択されたパタン情報で表されるアーキテクチャパタンを有する制御プログラムの実行時間に課される時間的制限を表す制限情報を取得する制限情報取得手段と、
前記制御モジュールの実行時間を推定する実行時間推定手段と、
前記選択されたパタン情報で表されるアーキテクチャパタンと、前記アーキテクチャパタンを有する制御プログラムのプログラム構造と、前記制御プログラムを構成する制御モジュールの推定された実行時間と、前記取得された制限情報で表される時間的制限と、を対応付けて表示部に表示させる表示制御手段と、
前記制御プログラムのプログラム構造に対する変更内容を記述する記述情報を取得する記述情報取得手段と、
前記取得された記述情報に基づいて、前記制御プログラムのプログラム構造を編集するプログラム構造編集手段と、
前記編集されたプログラム構造に基づいて前記制御モジュール記憶手段に記憶された制御モジュールを連結することで、ハードウェアを制御する制御プログラムを生成するプログラム生成手段と、を備える。

Claims (7)

  1. ハードウェアの動作を制御する制御モジュールを複数記憶する制御モジュール記憶手段と、
    前記複数の制御モジュールの1つ以上で構成される制御プログラムのアーキテクチャに共通したプログラム構造であるアーキテクチャパタンを表すパタン情報を複数記憶するパタン情報記憶手段と、
    前記記憶されたパタン情報を選択するパタン選択情報を取得するパタン選択情報取得手段と、
    前記パタン選択情報で選択されたパタン情報で表されるアーキテクチャパタンを有する制御プログラムの実行時間に課される時間的制限を表す制限情報を取得する制限情報取得手段と、
    前記選択されたパタン情報で表されるアーキテクチャパタンと、前記アーキテクチャパタンを有する制御プログラムのプログラム構造と、前記制御プログラムを構成する制御モジュールの実行時間と、前記取得された制限情報で表される時間的制限と、を対応付けて表示部に表示させる表示制御手段と、
    前記制御プログラムのプログラム構造に対する変更内容を記述する記述情報を取得する記述情報取得手段と、
    前記取得された記述情報に基づいて、前記制御プログラムのプログラム構造を編集するプログラム編集手段と、
    前記編集されたプログラム構造に基づいて前記制御モジュール記憶手段に記憶された制御モジュールを連結することで、ハードウェアを制御する制御プログラムを生成するプログラム生成手段と、を備える、
    制御プログラム生成装置。
  2. 前記制限情報は、前記制御プログラムを構成する複数の制御モジュールの総実行時間の制限を表し、
    前記プログラム編集手段は、前記制限情報で表される総実行時間の制限が課せられた複数の制御モジュールのそれぞれに対して実行時間を推定する実行時間推定手段と、
    前記制限情報で表される総実行時間の制限と、前記実行時間推定手段で推定された実行時間とに基づいて、前記制限に対する余裕時間を算出する余裕時間算出手段と、を有し、
    前記表示制御手段は、前記余裕時間算出手段で算出された余裕時間を表示するように前記表示部を制御する、
    請求項1に記載の制御プログラム生成装置。
  3. 前記制御モジュールは、前記ハードウェアの制御を行わない、又は前記ハードウェアを待機させる制御を行う待機モジュールを含み、
    前記プログラム編集手段は、前記余裕時間算出手段で算出された余裕時間が正の値である場合に、前記複数の制御モジュールの実行順序の先頭、中間、及び最後のいずれかにおいて、実行時間の長さが前記余裕時間の長さに等しい待機モジュールが実行されるように、前記制御プログラムのプログラム構造を編集するプログラム構造編集手段を、さらに有する、
    請求項2に記載の制御プログラム生成装置。
  4. 前記生成された制御プログラムの実行を検証する検証範囲を表す検証範囲情報を取得する検証範囲情報取得手段と、
    前記取得された検証範囲情報で表される検証範囲で、前記生成された制御プログラムの実行を模擬するプログラム実行模擬手段と、
    前記プログラム実行模擬手段の模擬結果から、前記生成された制御プログラムを構成する制御モジュールを識別する識別情報と、前記制御モジュールが模擬実行された時刻と、を解析する解析手段と、をさらに備え、
    前記表示制御手段は、前記解析手段による解析結果を表示するように前記表示部を制御する、
    請求項3に記載の制御プログラム生成装置。
  5. 前記パタン情報記憶手段は、ハードウェアが使用される範囲であるドメインを表すドメイン情報と、前記範囲で使用される複数のハードウェアをそれぞれ制御する複数の制御プログラムのアーキテクチャに共通したアーキテクチャパタンを表すパタン情報とを対応付けて複数記憶し、
    前記記憶されたドメイン情報を選択するドメイン選択情報を取得するドメイン選択情報取得手段、をさらに備え、
    前記パタン選択情報取得手段は、前記取得されたドメイン選択情報で選択されたドメイン情報に対応付けて記憶されたパタン情報を選択するパタン選択情報を取得する、
    請求項1から4のいずれか一項に記載の制御プログラム生成装置。
  6. コンピュータを、
    ハードウェアの動作を制御する制御モジュールを複数記憶する制御モジュール記憶手段、
    前記複数の制御モジュールの1つ以上で構成される制御プログラムのアーキテクチャに共通したプログラム構造であるアーキテクチャパタンを表すパタン情報を複数記憶するパタン情報記憶手段、
    前記記憶されたパタン情報を選択するパタン選択情報を取得するパタン選択情報取得手段、
    前記パタン選択情報で選択されたパタン情報で表されるアーキテクチャパタンを有する制御プログラムの実行時間に課される時間的制限を表す制限情報を取得する制限情報取得手段、
    前記選択されたパタン情報で表されるアーキテクチャパタンと、前記アーキテクチャパタンを有する制御プログラムのプログラム構造と、前記制御プログラムを構成する制御モジュールの実行時間と、前記取得された制限情報で表される時間的制限と、を対応付けて表示部に表示させる表示制御手段、
    前記制御プログラムのプログラム構造に対する変更内容を記述する記述情報を取得する記述情報取得手段、
    前記取得された記述情報に基づいて、前記制御プログラムのプログラム構造を編集するプログラム編集手段、
    前記編集されたプログラム構造に基づいて前記制御モジュール記憶手段に記憶された制御モジュールを連結することで、ハードウェアを制御する制御プログラムを生成するプログラム生成手段、として機能させる、
    制御プログラム生成プログラム。
  7. ハードウェアの動作を制御する1つ以上の制御モジュールでそれぞれ構成される複数の制御プログラムのアーキテクチャに共通したプログラム構造であるアーキテクチャパタンを表すパタン情報を、パタン情報記憶手段の記憶する複数のパタン情報から選択するパタン選択情報を取得するパタン選択情報取得ステップと、
    前記パタン選択情報で選択されたパタン情報で表されるアーキテクチャパタンを有する制御プログラムの実行時間に課される時間的制限を表す制限情報を取得する制限情報取得ステップと、
    前記選択されたパタン情報で表されるアーキテクチャパタンと、前記アーキテクチャパタンを有する制御プログラムのプログラム構造と、前記制御プログラムを構成する制御モジュールの実行時間と、前記取得された制限情報で表される時間的制限と、を対応付けて表示部に表示させる表示制御ステップと、
    前記制御プログラムのプログラム構造に対する変更内容を記述する記述情報を取得する記述情報取得ステップと、
    前記取得された記述情報に基づいて、前記制御プログラムのプログラム構造を編集するプログラム編集ステップと、
    前記編集されたプログラム構造に基づいて前記制御モジュールを連結することで、ハードウェアを制御する制御プログラムを生成するプログラム生成ステップと、を有する、
    制御プログラム生成方法。
JP2012529497A 2010-08-16 2011-01-26 制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法 Active JP5536892B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012529497A JP5536892B2 (ja) 2010-08-16 2011-01-26 制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010181897 2010-08-16
JP2010181897 2010-08-16
JP2012529497A JP5536892B2 (ja) 2010-08-16 2011-01-26 制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法
PCT/JP2011/051515 WO2012023296A1 (ja) 2010-08-16 2011-01-26 制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法

Publications (2)

Publication Number Publication Date
JPWO2012023296A1 true JPWO2012023296A1 (ja) 2013-10-28
JP5536892B2 JP5536892B2 (ja) 2014-07-02

Family

ID=45604964

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012529497A Active JP5536892B2 (ja) 2010-08-16 2011-01-26 制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法

Country Status (6)

Country Link
US (1) US9176490B2 (ja)
JP (1) JP5536892B2 (ja)
KR (1) KR101400657B1 (ja)
CN (1) CN103069386B (ja)
DE (1) DE112011102727T5 (ja)
WO (1) WO2012023296A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018010389A (ja) * 2016-07-12 2018-01-18 株式会社日立製作所 制御アプリケーション生成支援装置、及び制御アプリケーション生成支援方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4905597B1 (ja) * 2011-03-15 2012-03-28 オムロン株式会社 コントローラサポート装置、その装置において実行されるためのコントローラサポートプログラム、およびそのプログラムを格納する記録媒体
JP2015056153A (ja) * 2013-09-13 2015-03-23 三菱電機株式会社 ソフトウェア開発支援装置、仕様作成支援方法、及び、プログラム
DE102014112639C5 (de) * 2014-09-02 2020-07-02 Cavos Bagatelle Verwaltungs Gmbh & Co. Kg System zum Erstellen von Steuerungsdatensätzen für Roboter
WO2017023085A1 (ko) * 2015-08-04 2017-02-09 한국전력공사 패턴 기반 서비스 조합 방법을 이용한 애플리케이션 생성 장치 및 방법
CN105426200B (zh) 2015-10-30 2018-11-09 小米科技有限责任公司 通讯模组固件和插件生成方法及装置
JP6895803B2 (ja) * 2017-05-24 2021-06-30 三菱電機株式会社 プラント監視制御システムの保守計算機及び保守プログラム
US10747546B2 (en) * 2017-06-19 2020-08-18 Mitsubishi Electric Corporation Distributed allocation device, distributed allocation system, and distributed allocation method
JP6871207B2 (ja) * 2018-09-05 2021-05-12 ファナック株式会社 加工時間予測装置
JP7067406B2 (ja) * 2018-10-12 2022-05-16 オムロン株式会社 制御システム、制御装置および制御方法
AT522186B1 (de) * 2019-05-20 2020-09-15 Dipl Ing Dipl Ing Fh Markus Gruber Computerimplementiertes Verfahren zur rechnergestützten Erzeugung eines ausführbaren Steuerungsprogramms zur Steuerung und/oder Regelung eines technischen Prozesses
EP3835958A1 (de) 2019-12-10 2021-06-16 Siemens Aktiengesellschaft Verfahren und vorrichtung zur ansteuerung eines iot-geräts durch einen programmcode
JP6761158B1 (ja) 2019-12-16 2020-09-23 株式会社安川電機 プログラム作成装置、プログラム作成方法、及びプログラム

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1300265C (en) * 1987-06-22 1992-05-05 William Curtis Newman Block diagram simulator
JPH0322002A (ja) 1989-06-19 1991-01-30 Mitsubishi Electric Corp プログラミング装置
WO1991003791A1 (en) * 1989-09-01 1991-03-21 Amdahl Corporation Operating system and data base
JPH0438522A (ja) * 1990-06-05 1992-02-07 Mitsubishi Electric Corp ソフトウェアプログラムシミュレータ
JPH04283802A (ja) 1991-03-13 1992-10-08 Sanyo Electric Co Ltd マイクロプロセッサ用プログラムの自動生成方法
JP3140262B2 (ja) * 1993-06-16 2001-03-05 三菱電機株式会社 プログラム実行状態確認方法
JPH07152544A (ja) 1993-09-17 1995-06-16 Toshiba Corp ダイヤグラム作成支援システム及びダイアグラム作成支援方法
JPH08278804A (ja) * 1995-04-06 1996-10-22 Fanuc Ltd シーケンス・プログラムの診断方式
JPH10161906A (ja) 1996-11-29 1998-06-19 Toshiba Corp ソフトウェア実行装置及びソフトウェア実行方法
EP1122640A1 (en) * 2000-01-31 2001-08-08 BRITISH TELECOMMUNICATIONS public limited company Apparatus for automatically generating source code
JP2001216006A (ja) * 2000-02-04 2001-08-10 Meidensha Corp プログラミング支援方式
JP2002351509A (ja) * 2001-05-25 2002-12-06 Mitsubishi Electric Corp プログラミングツール及びプログラミング方法
JP2003067007A (ja) * 2001-08-27 2003-03-07 Mitsubishi Electric Corp エンジニアリングツール及びエンジニアリングシステム
US20040064804A1 (en) * 2002-09-26 2004-04-01 Daniels Bruce K. Generation of partitioned enterprise application using a high-level specification
JP2004272718A (ja) 2003-03-11 2004-09-30 Mitsubishi Electric Corp 制御プログラム作成装置および制御プログラム作成方法
US7809545B2 (en) * 2003-04-16 2010-10-05 The Mathworks, Inc. System and method for using execution contexts in block diagram modeling
US7574690B2 (en) * 2003-08-07 2009-08-11 National Instruments Corporation Graphical program which executes a timed loop
US7900188B2 (en) * 2006-09-01 2011-03-01 The Mathworks, Inc. Specifying implementations of code for code generation from a model
US20100281103A1 (en) * 2007-01-16 2010-11-04 Shigeru Imai Client terminal, application providing server, and application providing system
JP4963637B2 (ja) 2007-07-09 2012-06-27 キヤノン株式会社 表示処理装置及び表示処理方法
US7684892B2 (en) * 2007-10-30 2010-03-23 Gm Global Technology Operations, Inc. Process for generating control sequence of operations
JP5076967B2 (ja) * 2008-02-27 2012-11-21 富士通株式会社 情報処理システム、情報処理システムの制御方法、および情報処理システムの制御プログラム
CN101533349B (zh) 2009-04-15 2012-06-27 哈尔滨工业大学 一种大粒度构件的平台相关模型的代码自动生成方法
JP2010181897A (ja) 2010-03-08 2010-08-19 Seiko Epson Corp 光量制御装置およびプロジェクタ
WO2012070254A1 (ja) * 2010-11-26 2012-05-31 三菱電機株式会社 プログラム生成装置、プログラム生成プログラム、及びプログラム生成方法
JP5644642B2 (ja) * 2011-04-07 2014-12-24 富士通株式会社 コード変換方法、装置、プログラム、およびリクエストの残り時間応答方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018010389A (ja) * 2016-07-12 2018-01-18 株式会社日立製作所 制御アプリケーション生成支援装置、及び制御アプリケーション生成支援方法

Also Published As

Publication number Publication date
US20130144409A1 (en) 2013-06-06
DE112011102727T5 (de) 2013-06-27
WO2012023296A1 (ja) 2012-02-23
KR101400657B1 (ko) 2014-05-28
CN103069386B (zh) 2016-06-22
US9176490B2 (en) 2015-11-03
KR20130040254A (ko) 2013-04-23
JP5536892B2 (ja) 2014-07-02
CN103069386A (zh) 2013-04-24

Similar Documents

Publication Publication Date Title
JP5536892B2 (ja) 制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法
US9754059B2 (en) Graphical design verification environment generator
JP2006024006A (ja) テストケース生成装置、テストケース生成プログラム、モデルベース開発プログラム、ソースコード生成妥当性診断装置、ソースコード生成妥当性診断プログラム、およびモデルベース開発方法。
CN112270149A (zh) 验证平台自动化集成方法、系统及电子设备和存储介质
JP4978233B2 (ja) シミュレータ開発システム及びシミュレータ開発方法
JP2009176186A (ja) プログラムテスト装置、およびプログラム
CN106484389A (zh) 动作流分段管理
JP4602312B2 (ja) 機器設定装置、機器設定方法、情報取得装置、情報取得方法、記録媒体及びプログラム
JP4767309B2 (ja) 情報処理装置、情報処理方法、及びコンピュータプログラム
JP7277694B2 (ja) 情報処理装置、その制御方法及びプログラム
JP7212238B2 (ja) 情報処理装置、その制御方法及びプログラム
WO2012053392A1 (ja) ソフトウェアプロダクトライン開発支援装置、その方法およびそのプログラム
JP2005301568A (ja) 表示情報記憶制御装置および表示情報記憶制御プログラム
JP2020144509A (ja) 自動コード生成方法、及び自動コード生成プログラム
JP7256353B2 (ja) 情報処理システム、その制御方法及びプログラム
JP7319516B2 (ja) プログラム、情報処理装置及びその制御方法
JP7219389B2 (ja) 情報処理装置、その制御方法及びプログラム
JPH08263130A (ja) シミュレーション方式
Wals Mastering iOS 12 Programming: Build professional-grade iOS applications with Swift and Xcode 10
JP2021177272A (ja) デバッグ支援装置、デバッグ支援方法およびプログラム
JP2001306352A (ja) 分析計システムおよび分析計検査プログラムを記録したコンピュータ読取可能な記録媒体
JP2019153264A (ja) 情報処理装置、その処理方法及びプログラム
JP2019197259A (ja) 情報処理装置、その制御方法及びプログラム
JP2019192133A (ja) 情報処理装置、その処理方法及びプログラム
JP2019197261A (ja) 情報処理装置、その制御方法及びプログラム

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140324

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140407

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140422

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140424

R150 Certificate of patent or registration of utility model

Ref document number: 5536892

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250