JP4054836B2 - プログラム生成処理プログラム、プログラムコード生成方法及びプログラム生成装置 - Google Patents
プログラム生成処理プログラム、プログラムコード生成方法及びプログラム生成装置 Download PDFInfo
- Publication number
- JP4054836B2 JP4054836B2 JP2006542947A JP2006542947A JP4054836B2 JP 4054836 B2 JP4054836 B2 JP 4054836B2 JP 2006542947 A JP2006542947 A JP 2006542947A JP 2006542947 A JP2006542947 A JP 2006542947A JP 4054836 B2 JP4054836 B2 JP 4054836B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- capsule
- public data
- computer
- execution
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Description
【0001】
本発明は、コンピュータプログラム、プログラム実行装置、プログラム生成処理プログラム、状況表示処理プログラム等の技術分野に関する。
【背景技術】
【0002】
装置特有の機能を実現するために、装置に組み込まれて、その制御を行うコンピュータシステムは、組み込みシステムと呼ばれている。組み込みシステムは、例えば、CPUと各種周辺機能が集積されたマイクロコントローラ(MCU(Micro Controller Unit))と、このマイクロコントローラに搭載される組み込み型ソフトウエアと呼ばれるコンピュータプログラム(以下、適宜プログラム、ソフトウエアとも称する。)により構成されている。
【0003】
電子制御装置やパワーエレクトロニクス装置のマイクロコントローラに搭載された装置専用のソフトウエアは、組み込み型ソフトウエアの中でも、高い信頼性が要求される分野である。
【0004】
近年、マイクロコントローラの機能性能が高くなってきているため、制御系やパワーエレクトロニクス系の装置の制御を組み込み型ソフトウエアで行うことが多くなった。つまり、マイクロコントローラに搭載されるCPU(Central Process Unit)はもとより、その周辺機能であるA/D(Analog/Digital)コンバータやPWM(Pulse Width Modulation)ジェネレータ、シリアル通信、RAM(Random Access Memory)、ROM(Read Only Memory)等が集積化、高性能化し、しかも、低価格が進んでいるため、従来ハードウエアで実現してきた高速な応答も可能となり、マイクロコントローラに置き換えられるようになってきているのである。
【0005】
そして、温暖化対策のための省エネ機器が増え始めており、パワーデバイスやシステムの制御に特化したソフトウエアの開発ツールが求められている。本発明は、特に、制御系やパワーエレクトロニクス系のソフトウエアの信頼性を高めるためのソフトウエアの単位であるカプセルプログラムの集合により構成されるコンピュータプログラム及びその開発方法等に関するものである。
【0006】
組み込みシステムは、例えば、パワーエレクトロニクス装置のように高度の信頼性、リアルタイム性が要求されるものが多く、更に、近年においては、組み込み型システムに要求される機能が複雑・高度化していることも相まって、そのオペレーティングシステムとしてRTOS(Real Time Operating System)を採用するケースが増加している。
【0007】
RTOSとは、複数の処理要求(イベントあるいは割込み)が発生した場合でも、課せられた時間制約を満たすように処理を完了させるための機構が備わったマルチタスクOSである。
【0008】
RTOS環境下におけるコンピュータプログラムは、実行処理単位としてのタスクが、タスク毎に設定された優先順位に基づいて、複数並列的に実行される。そして、各タスクは、タスク間同期(例えば、イベントフラグ、セマフォ等)やタスク間通信(例えば、メッセージキュー、メールボックス等)等の機能を用いて情報交換する等、他のタスクと協働することにより全体としての機能を実現するのである。
【0009】
また、組み込み型ソフトウエアにおけるソースプログラムの作成は、エディタプログラム等をコンピュータに実行させ、ユーザがソースファイルを編集する方法が従来から行われているが、近年においては、プログラム作成の効率化、手入力による誤り防止等を目的として、自動生成したソースプログラムの雛形にユーザが新たなプログラムコードを追加することによりソースプログラムを作成する方法が提案されている。
【0010】
例えば、特許文献1には、UML(Unified Modeling Language)表記に従って記述された設計モデルから、クラス定義情報ファイルと、ユーザがプログラムコードの追加編集等を行うヘッダファイル及びソースファイルの雛形とを生成する方法が記載されている。
【0011】
そして、組み込みシステムにおけるデバッグは、例えば、特許文献2に記載されたデバッグシステムのように、ICE(In-Circuit Emulator)を介して、ターゲットとなる装置にホストコンピュータを接続し、ホストコンピュータから、ブレークポイントの設定、変数の監視登録等のデバッグ用コマンドを入力し、プログラムの実行を停止させて、変数の内容等を表示させるという方法が基本的に採られている。
【特許文献1】
特開2003−216428号公報
【特許文献2】
特開2003−30003号公報
【発明の開示】
【発明が解決しようとする課題】
【0012】
エネルギーに関する制御のソフトウエアは、非常に高い信頼性が必要である。ソフトウエアのバグは、エネルギーの流れを止めるか、あるいは、エネルギーを制御できなくなる。その結果、エネルギー変換を行っている素子にエネルギーの集中や素子の定格を超えるエネルギーの流入が発生し、深刻な故障を引き起こす。
【0013】
ソフトウエアのバグは、装置の故障、全体のシステムの故障をもたらすのである。一方、地球温暖化へ向けて、省エネ機器の開発が世界中で進められている。制御系やパワーエレクトロニクス系のソフトウエアの設計量が増大し、しかも、多様化している。
【0014】
このように、制御系やパワーエレクトロニクス系の組み込み型ソフトウエアは、社会のニーズがますます高くなっている。それに応えるためには、制御系やパワーエレクトロニクス系のソフトウエアの技術者を育成する必要があるし、技術者同士が、互いに理解可能なソフトウエアである必要がある。また、経営者としては、技術者によって作成されたソフトウエアが、会社の資産となるように、別の技術者に容易に引き継がれる形態として管理し、技術資産として会社の力としたい。
【0015】
そのためには、この分野に特に適した組み込み型ソフトウエア及びその開発ツールが、ぜひとも必要である。
【0016】
しかしながら、同時並列的に複数のタスクが動作し、且つイベントも複数発生するようなRTOS環境における従来のコンピュータプログラムの構造では、その全ての組み合わせについて矛盾なく設計し、また、検証することは非常に困難である。
【0017】
また、タスク間における情報交換の態様により、最適なRTOSの機能(例えば、イベントフラグ、セマフォ、メッセージキュー等)を利用することはできるものの、情報交換の態様に応じて異なる機能を利用すると、タスクごとに異なる構造を持たせることとなり、設計ミスが生じ易く、保守性も悪くなる。
【0018】
しかも、タスク間同期やタスク間通信等による情報交換では、他のタスクが共有資源を解放するまで処理を中断し、または他のタスクに対して処理を要求し、あるいは他のタスクから情報が送信されてくるまで待機するというように、タスク同士が互いの処理に依存し合うことにより、全体として複雑な関係を有する構造となり、設計ミスが生じやすく、また、何らかの問題が生じた場合に、その原因がどのタスクにあるのかを追跡することが困難となる。
[0019]
また、エディタプログラムによるソースプログラムの作成では、自由にプログラミングすることが可能であるため、構造のばらばらなソースプログラムが作成されてしまい、他のユーザが作成したソースプログラムを理解することが困難となる。また、このように作成されたソースプログラムからは、タスクごとに異なる構造を有するプログラムが作成されてしまう可能性が高い。
[0020]
一方で、特許文献1に記載の技術のように、ソースプログラムをある程度自動生成することでプログラミングの手間を省くことはできるが、作成されるプログラムの信頼性を考慮したものとはなっておらず、また、変数の定義や情報交換等のプログラミングはユーザの自由である。
[0021]
また、特許文献2に記載されているように、ICE等を用いるデバッグにより、変数の内容を表示させるためにプログラムの実行を途中で停止させると、表示された変数の内容が、刻々と変化する装置の状態とずれてしまい、変数の内容を表示させる意義が失われてしまう場合があり、更に、プログラムの制御なしに装置が動作することにより、装置が故障する可能性がある。
【0022】
本発明は、以上の点に鑑みてなされたものであり、より信頼性の高いコンピュータプログラムを開発することができるプログラム生成処理プログラム、プログラムコード生成方法及びプログラム生成装置を提供することを目的とする。
【0023】
上記課題を解決するために、本発明の一つの観点では、同一構造を有する複数のカプセルプログラムの集合と、第1のコンピュータによる前記カプセルプログラムの実行を制御するための実行制御プログラムと、により構成され、且つ、前記第1のコンピュータにより実行されるコンピュータプログラムであって、各前記カプセルプログラムは、他の前記カプセルプログラムから取得可能である公開データが設定される公開データ領域手段として前記第1のコンピュータを機能させる公開データ部と、他の前記カプセルプログラムにおける前記公開データ領域手段に設定された前記公開データを取得する公開データ取得手段として前記第1のコンピュータを機能させる公開データ取得部と、前記公開データ取得手段により前記公開データを取得させて、当該公開データに対して予め定められた演算処理を実行するとともに、当該演算処理により得られた結果の少なくとも一部を前記公開データとして前記公開データ領域手段に設定する主処理手段として前記第1のコンピュータを機能させる主処理部と、により構成される構造を有し、前記複数のカプセルプログラムの実行単位は、繰り返し実行周期内における所定時間の経過ごとに対応して設定され、前記各カプセルプログラムは、夫々に設定された実行周期に基づいて複数の前記実行単位のうち少なくとも一つに対して夫々割り当てられ、前記実行制御プログラムは、前記所定時間が経過するごとに前記対応する実行単位に割り当てられた前記カプセルプログラムの前記主処理部を実行するとともに、その実行を繰り返し行う実行制御手段として前記第1のコンピュータを機能させるコンピュータプログラムを生成するプログラム生成装置に含まれる第2のコンピュータにより実行されるプログラム生成処理プログラムにおいて、前記第2のコンピュータを、前記カプセルプログラムごとに、そのプログラムコードを生成するカプセルコード生成手段、及び、入力手段を介してユーザにより入力された、前記カプセルプログラムごとの前記実行周期を示す実行周期情報に基づいて、前記実行制御プログラムのプログラムコードを生成する実行制御コード生成手段、として機能させ、前記カプセルコード生成手段としての前記第2のコンピュータを、前記入力手段を介してユーザにより入力された、前記公開データ領域手段に設定される公開データの定義内容を示す定義情報に基づいて、当該公開データ部のプログラムコードを生成する定義コード生成手段、他の前記カプセルプログラムにおいて定義された前記公開データのうち、前記入力手段を介してユーザにより選択された前記公開データを取得する前記公開データ取得部のプログラムコードを生成する取得コード生成手段、及び、前記入力手段を介してユーザにより入力されたプログラムコードを含めて、前記主処理部のプログラムコードを生成する主処理コード生成手段、として機能させることを特徴とする。
【0024】
よって、この発明に係るプログラム生成処理プログラムを第2のコンピュータにより読み出し実行することによって生成されたコンピュータプログラムによれば、カプセルプログラムが、公開データによるデータの公開と、公開データ取得手段によるデータの取得という規則を有し、この規則に基づいて主処理手段が演算処理を実行するため、データの安全性が確保される。
【0025】
しかも、各カプセルプログラムは、他のカプセルプログラムの処理に依存することなく、公開されているデータを自ら取得して演算処理を行い、その結果の少なくとも一部を公開するという、単純化された同一構造を有しているので、設計上のミスが生じ難くなり、コンピュータプログラムとしての信頼性が向上する。
そして、この発明に係るプログラム生成処理プログラムを第2のコンピュータにより読み出し実行することにより、コンピュータを公開データ領域手段、公開データ取得手段、主処理手段としてコンピュータを機能させるための同一構造を有するカプセルプログラムを容易に作成することができるとともに、これにより、異なる構造のプログラムを作成しようとするユーザのインセンティブが働かなくなるため、信頼性の高いコンピュータプログラムを作成することが可能となる。
【0026】
また、前記各カプセルプログラムは、前記公開データ部と、前記公開データ取得部と、前記主処理部と、前記公開データに係る情報を含む、所定周期ごとにおける前記主処理手段による前記演算処理の状況を示す状況情報を、前記コンピュータプログラムの処理状況を表示する状況表示装置に送信する状況送信手段として前記第1のコンピュータを機能させる状況送信部と、により構成される構造を有し、前記公開データを定義するプログラムコードの生成に用いられた前記定義情報に基づいて、当該公開データに係る情報を含む前記状況情報を前記状況表示装置に送信するための前記状況送信部のプログラムコードを生成する状況送信コード生成手段として、前記カプセルコード生成手段としての前記第2のコンピュータを更に機能させることを特徴とする。
【0027】
よって、この発明に係るプログラム生成処理プログラムを第2のコンピュータにより読み出し実行することによって生成されたコンピュータプログラムによれば、主処理手段による演算処理の状況を、コンピュータプログラムの実行を停止させることなく外部からリアルタイムに監視することが可能となるデバッグのための機能を各カプセルプログラム自身が予め有しているので、特に組み込みシステムにおけるコンピュータプログラムのデバッグが容易となり、コンピュータプログラムとしての信頼性が更に向上する。
そして、この発明に係るプログラム生成処理プログラムを第2のコンピュータにより読み出し実行することにより、コンピュータを公開データ領域手段、公開データ取得手段、主処理手段としてコンピュータを機能させるためのプログラムコードを容易に作成することができるとともに、公開データに係る情報を含む、主処理手段による演算処理の状況を示す状況情報を、コンピュータプログラムの処理状況を表示する状況表示装置に送信する状況送信手段としてコンピュータを機能させるためのプログラムコードが自動的に生成されるので、人手によりデバッグ用のプログラムコードをカプセルプログラムごとに作成するという手間を大幅に削減することが可能となる。
【0028】
また、前記コンピュータプログラムは、前記複数のカプセルプログラムの集合と、前記実行制御プログラムと、少なくとも一の前記カプセルプログラムの選択を示す選択情報を取得し、当該選択された前記カプセルプログラムの前記状況送信部を実行する状況送信選択実行手段として前記第1のコンピュータを機能させる状況送信選択実行プログラムと、により構成され、前記実行制御手段は、前記状況送信選択実行プログラムを前記所定周期ごとに実行し、前記状況送信選択実行プログラムのプログラムコードを生成する状況送信選択実行コード生成手段として、前記第2のコンピュータを更に機能させることを特徴とする。
【0029】
よって、この発明に係るプログラム生成処理プログラムを第2のコンピュータにより読み出し実行することによって生成されたコンピュータプログラムを第1のコンピュータが読み出し実行することにより、主処理手段による演算処理の状況を示す状況情報を状況表示装置に送信させるカプセルプログラムを外部から選択することが可能となるので、所望のカプセルプログラムに特化したデバッグが可能となる。
【0030】
また、前記状況送信手段としての前記第1のコンピュータを、前記状況送信選択実行手段により実行させられたごとに前記状況情報を蓄積する状況蓄積手段、及び、前記蓄積された前記状況情報を一括して前記状況表示装置に送信する状況一括送信手段、として機能させることを特徴とする。
【0031】
よって、この発明に係るプログラム生成処理プログラムを第2のコンピュータにより読み出し実行することによって生成されたコンピュータプログラムを第1のコンピュータが読み出し実行することにより、主処理手段による演算処理の状況を示す状況情報を一旦蓄積しておき、後に一括して状況表示装置に送信することで送信回数を減らすので、所定周期ごとに逐一提供した場合に時間制約を満たすことができないシビアなシステムにおいても、主処理手段による演算処理の状況を、コンピュータプログラムの実行を停止させることなく外部からリアルタイムに監視することが可能となる。
【0041】
また、前記選択された公開データに係る情報を含む前記状況情報を前記状況表示装置に送信するための前記状況送信部のプログラムコードを生成するように前記状況送信コード生成手段としての前記第2のコンピュータを機能させることを特徴とする。
よって、カプセルプログラムで定義された公開データのみでなく、他のカプセルプログラムから取得された公開データに関する情報も外部から監視することが可能となるカプセルプログラムを作成することができるので、人手によりデバッグ用のプログラムコードを作成するという手間を更に削減することが可能となる。
【0044】
上記課題を解決するために、本発明の更に他の観点では、同一構造を有する複数のカプセルプログラムの集合と、第1のコンピュータによる前記カプセルプログラムの実行を制御するための実行制御プログラムと、により構成され、且つ、前記第1のコンピュータにより実行されるコンピュータプログラムであって、各前記カプセルプログラムは、他の前記カプセルプログラムから取得可能である公開データが設定される公開データ領域手段として前記第1のコンピュータを機能させる公開データ部と、他の前記カプセルプログラムにおける前記公開データ領域手段に設定された前記公開データを取得する公開データ取得手段として前記第1のコンピュータを機能させる公開データ取得部と、前記公開データ取得手段により前記公開データを取得させて、当該公開データに対して予め定められた演算処理を実行するとともに、当該演算処理により得られた結果の少なくとも一部を前記公開データとして前記公開データ領域手段に設定する主処理手段として前記第1のコンピュータを機能させる主処理部と、により構成される構造を有し、前記複数のカプセルプログラムの実行単位は、繰り返し実行周期内における所定時間の経過ごとに対応して設定され、前記各カプセルプログラムは、夫々に設定された実行周期に基づいて複数の前記実行単位のうち少なくとも一つに対して夫々割り当てられ、前記実行制御プログラムは、前記所定時間が経過するごとに前記対応する実行単位に割り当てられた前記カプセルプログラムの前記主処理部を実行するとともに、その実行を繰り返し行う実行制御手段として前記第1のコンピュータを機能させるコンピュータプログラムを生成するプログラム生成装置におけるプログラムコード生成方法において、前記カプセルプログラムごとに、そのプログラムコードを前記プログラム生成装置のカプセルコード生成手段が生成するカプセルコード生成工程と、入力手段を介してユーザにより入力された、前記カプセルプログラムごとの前記実行周期を示す実行周期情報に基づいて、前記実行制御プログラムのプログラムコードを前記プログラム生成装置の実行制御コード生成手段が生成する実行制御コード生成工程と、を備え、前記カプセルコード生成工程は、前記入力手段を介してユーザにより入力された、前記公開データ領域手段に設定される公開データの定義内容を示す定義情報に基づいて、当該公開データ部のプログラムコードを前記プログラム生成装置の定義コード生成手段が生成する定義コード生成工程と、他の前記カプセルプログラムにおいて定義された前記公開データのうち、前記入力手段を介してユーザにより選択された前記公開データを取得する前記公開データ取得部のプログラムコードを前記プログラム生成装置の取得コード生成手段が生成する取得コード生成工程と、前記入力手段を介してユーザにより入力されたプログラムコードを含めて、前記主処理部のプログラムコードを前記プログラム生成装置の主処理コード生成手段が生成する主処理コード生成工程と、を備えることを特徴とする。
【0045】
上記課題を解決するために、本発明の更に他の観点では、前記プログラム生成処理プログラムを実行するプログラム生成装置であって、前記カプセルコード生成手段、及び、前記実行制御コード生成手段を備えることを特徴とする。
【0054】
本発明によれば、カプセルプログラムが、公開データによるデータの公開と、公開データ取得手段によるデータの取得という規則を有し、この規則に基づいて主処理手段が演算処理を実行するため、データの安全性が確保される。
【0055】
しかも、各カプセルプログラムは、他のカプセルプログラムの処理に依存することなく、公開されているデータを自ら取得して演算処理を行い、その結果の少なくとも一部を公開するという、単純化された同一構造を有しているので、設計上のミスが生じ難くなり、コンピュータプログラムとしての信頼性が向上する。
【0056】
よって、本発明により、制御系やパワーエレクトロニクス系のソフトウエアの開発は、教育段階から製品開発そして、メンテナンスに至る、あらゆるフェイズで大きく改善される。ソフトウエアの信頼性や品質の向上については、例えば、後述するACM(Analyzer Communication Method)等による状況提供手段と、例えば、後述するカプセルアナライザ等の状況表示処理プログラムにより効果を挙げることができる。ソフトウエアの生産性の向上やコード規則の継承、また、ソフトウエア完成後のメンテナンスや技術の引継ぎ、新しい技術者の育成は、例えば、後述するカプセルジェネレータ等のプログラム生成処理プログラムにより効果を挙げることができる。
【図面の簡単な説明】
【0057】
【図1】コンピュータプログラムPの概要構成の一例を示す図である。
【図2】スケルトンカプセル10の構造の一例を示す図である。
【図3】TSU2において、カプセル1が呼び出される様子の一例を示す図である。
【図4】本実施形態における開発システムSの概要構成の一例を示す図である。
【図5】カプセルジェネレータのメイン画面100の一例を示す図である。
【図6】ビジュアルコントローラウインドウ107の一例を示す図である。
【図7】アナライザ画面180の一例を示す図である。
【図8】スコープウインドウ190の一例を示す図である。
【図9】本実施形態において、ターゲットボードBを用いた開発の様子の一例を示す図である。
【図10】本実施形態において、シミュレータを用いた開発の様子の一例を示す図である。
【図11】新規カプセル作成ボックス102における操作手順を説明する図である。
【図12】スケルトンカプセルのヘッダファイル及びソースファイルの一例を示す図であり、(a)はヘッダファイル、(b)はソースファイルである。
【図13】データ公開用変数設定ウインドウ120の一例を示す図である。
【図14】生成されたACM14のプログラムコードの一例を示す図である。
【図15】(a)は、データ獲得用変数設定ウインドウ130の一例を示す図であり、図(b)は、その変形例である。
【図16】内部変数設定ウインドウ140の一例を示す図である。
【図17】メソッド関数定義ウインドウ150の一例を示す図である。
【図18】TSU組み込み設定ウインドウ160の一例を示す図である。
【図19】TSU2のソースファイルの一例を示す図である。
【図20】カプセル1の組織化の様子を表示した一例を示す図である。
【図21】デバッグ時におけるマイクロコントローラMの処理の一例を示すフローチャートである。
【図22】デバッグ時におけるマイクロコントローラM及び開発用端末Tの処理の一例を示すフローチャートである。
【図23】本実施例に係る開発システムS1の概要構成の一例を示すブロック図である。
【図24】本実施例に係るリレー制御プログラムP1のカプセル構成の一例を示す図である。
【図25】各カプセルの公開データをグラフ表示させた結果の一例を示す図であり、(a)は出力電圧値であり、(b)はノイズ除去された出力電圧値であり、(c)は整流電圧値であり、(d)は実効電圧値であり、(e)はアラーム値である。
【符号の説明】
【0058】
1、1A、1B、1X、1Y、1Z、1a、1b、1c、1d、1e、1f、1g、1h カプセル
2 TSU
3 ACC
4 燃料電池
5 系統
10 スケルトンカプセル
11 データ公開部
12 データ獲得メソッド
13 メインメソッド
14 ACM
21 制御部
22 記憶部
23 通信部
24 表示部
25 操作部
31 コンバータ
32 インバータ
33 アイソレーションアンプ
34 レベルシフタ
35 駆動回路
36 系統リレー
41 CPU
42 RAM
43 フラッシュROM
44 I/Oポート
45 A/Dコンバータ
46 通信回路
P コンピュータプログラム
S、S1 開発システム
B ターゲットボード
M、M1 マイクロコントローラ
T 開発用端末
K シリアル通信ケーブル
I 系統連係インバータ
【発明を実施するための最良の形態】
【0059】
以下、図面を参照して本発明の最良の実施形態について詳細に説明する。なお、以下に説明する実施の形態は、開発用のプログラム言語としてC++を用いた組み込み型のコンピュータプログラムの開発システムに対して本発明を適用した場合の実施形態である。
【0060】
[1.コンピュータプログラムPの基本構成]
先ず、本実施形態に係るコンピュータプログラムPの基本構成について説明する。
【0061】
コンピュータプログラムPは、後述するプログラム生成処理プログラムとしてのカプセルジェネレータで作成されるプログラムである。
【0062】
図1は、コンピュータプログラムPの概要構成の一例を示す図である。
【0063】
図1に示すように、コンピュータプログラムPは、複数のカプセルプログラム(以下、単にカプセルと称する。)1と、コンピュータを実行制御手段として機能させるためのTSU(Time Sharing Unit)2と、コンピュータを状況提供選択実行手段として機能させるためのACC(Analyzer Communication Capsule)3と、により構成されている。
【0064】
カプセル1は、ターゲットとなる装置に要求された特有の機能を実現するためのコードを有するプログラムであり、実行制御を司るTSU2により呼び出される。
【0065】
また、ACC3は、カプセル1における演算処理の状況を外部から監視することを可能とするために、後述するカプセルアナライザとカプセル1のACMとのインタフェースとなる特別なカプセルである。
【0066】
[1.1 カプセル1の構成及び機能等]
単純な構造を有するプログラムの単位をカプセルと呼び、各カプセル1は同一構造を有している。
【0067】
各カプセル1は、その機能としては夫々異なるものとすることができるが、その構造は基本的には全て同一であり、そのために用意されるのがスケルトンカプセル10である。
【0068】
図2は、スケルトンカプセル10の構造の一例を示す図である。
【0069】
図2に示すように、スケルトンカプセル10の構造は、夫々コンピュータを、公開データ領域手段として機能させるためのデータ公開部11と、公開データ取得手段として機能させるためのデータ獲得メソッド12と、主処理手段として機能させるためのメインメソッド13と、状況提供手段として機能させるためのACM(Analyzer Communication Method)14と、を有する。
【0070】
スケルトンカプセル10は、基本的にオブジェクト指向におけるクラスの概念によりカプセル化され、カプセル1の雛形のプログラムコードを有するソースファイル(例えば、処理命令が記述される:拡張子.cc)及びヘッダファイル(例えば、クラス定義、外部参照宣言等が記述される:拡張子.h)として用意される。
【0071】
カプセル1の作成は、スケルトンカプセル10をもとに、後述するカプセルジェネレータによりユーザがカスタマイズすることで行われる。
【0072】
従って、このスケルトンカプセル10を読み込んで新しいカプセル1が生成されるため、カプセル1も、データ公開部11、獲得メソッド12、メインメソッド13及びACM14という構造を有する。
【0073】
なお、全てのカプセル1の基礎となるスケルトンカプセル10は、予め検査が完了しており、信頼性が保障されていることが望ましい。
【0074】
[1.1.1 データ公開部11]
データ公開部11は、他のカプセル1から取得可能である公開データが設定される領域であって、後述するメインメソッドによる演算処理により得られた結果が設定される。
【0075】
この領域は、コンピュータプログラムPの実行時において、RAM等のメモリ上に確保される。
【0076】
カプセル1で演算処理した結果は、他のカプセル1が使用するために公開されるのであり、その結果を公開データとして他のカプセルに公開するため、カプセルジェネレータの機能により、そのデータが広域変数(パブリック変数)として宣言される。なお、公開データが設定される変数を、公開変数と呼ぶ。
【0077】
公開データ以外の他のデータは、カプセルジェネレータの機能により、他のカプセル1から隠蔽されることとなる。これにより、公開データ以外のデータの安全性が確保される。
【0078】
[1.1.2 データ獲得メソッド12]
データ獲得メソッド12は、現在実行しているカプセル1が、どのカプセル1の情報(公開データ)を参照しているのかを明確にするために用意された仕組みであり、後述するメインメソッド13から関数呼び出しにより呼び出され、他のカプセル1で公開されているデータの獲得収集を行う関数である(つまり、他のカプセル1のデータ公開部11に設定された公開データの取得処理を行う)。
【0079】
具体的には、カプセル1の内部変数である引継変数に、他のカプセル1の公開データを設定する処理を行う。このようにして、他のカプセル1の公開データを直接操作しないようにしているため、公開データの安全性が確保される。
【0080】
これにより、データ獲得メソッド12は、コンピュータを、他の前記カプセル1における公開データ領域に設定された公開データを取得する公開データ取得手段として機能させるのである。
【0081】
また、データ獲得メソッド12は、カプセルジェネレータの機能により、プライベート関数として宣言されることで、他のカプセル1から隠蔽される。
【0082】
[1.1.3 メインメソッド13]
メインメソッド13は、TSU2またはRTOSがカプセル1を実行するとき、呼び出される関数である。TSU2またはRTOSに、予めメインメソッドを組み込んでおく。カプセルの実行とは、メインメソッド13を呼び出すこと同じである。
【0083】
また、メインメソッド13は、カプセル1ごとに要求された機能を実現するために、コンピュータを、データ獲得メソッド12により取得された公開データに対して予め定められた演算処理(演算処理には、加減乗除算等の計算処理の他、変数から変数への代入等の設定処理も含まれる。)を実行するとともに、その演算処理により得られた結果の少なくとも一部を公開データとしてデータ公開部11に設定する主処理手段として機能させるための関数である。
【0084】
TSU2またはRTOS(RTOS環境下でコンピュータプログラムPを動作させる場合)は、カプセル1を実行する際に、このメインメソッド13を起動する。
【0085】
なお、メインメソッド13から、関数呼び出で直接または間接的に呼び出される同一カプセル1内の関数(つまり、同一クラスのメンバ関数等)もメインメソッド13とともにコンピュータを主処理手段として機能させるものである。
【0086】
[1.1.4 ACM14]
ACM14は、外部からのアクセスを行うことを可能とし、カプセル1を動作させならが検証するための仕組みであり、広域関数(パブリック関数)として宣言され、カプセル内部の変数とカプセルアナライザとの情報交換をするためのメソッドである。
【0087】
ACM14は、カプセル1の変数の内容を後述する外部のカプセルアナライザにより観測できる機能を有し、カプセルアナライザと通信し、カプセル1の変数の状態等をリアルタイムにカプセルアナライザへ転送する。これにより、ユーザは、カプセルアナライザに表示された内容を確認し、追跡して、不具合箇所を修正することができる。
【0088】
具体的にACM14は、変数基本情報表示用メソッド及び変数値一覧表示用メソッド、グラフ表示用メソッドにより構成されている。
【0089】
変数基本情報表示用メソッドは、カプセルアナライザにおいて、選択されたカプセル1の有するデータの基本的情報として変数名とコメントを表示させるために、これらの情報を転送するメソッドである。
【0090】
上記変数基本情報表示用メソッドにより、カプセルアナライザ側でカプセル1の変数に関する情報を持っていなくても、カプセル1の変数の情報を表示することが可能となるのである。
【0091】
変数値一覧表示用メソッドは、ACC3から関数呼び出しで所定周期ごと(例えば、10m秒)に実行され、その呼び出しごとにおける公開変数、引継ぎ変数、その他内部変数等のデータの内容(これらは、メインメソッド13における演算処理の状況を示す途中経過または結果等である。)をカプセルアナライザへ転送するメソッドである。転送されたデータの内容は、カプセルアナライザにより変数値の一覧として表示される。
【0092】
これにより、ACM14は、コンピュータを、所定周期ごとにおけるメインメソッド13における演算処理の状況を提供する状況提供手段として機能させるのである。なお、変数値一覧表示用メソッドの呼び出し周期は、カプセル1の呼び出し周期より長い周期にしても良い。それは、カプセル1の呼び出し周期が、例えば、100μ秒である場合に、変数値を100μ秒周期で転送し、カプセルアナライザにより表示させても、人間の視力が追いつかないからである。
【0093】
グラフ表示用メソッドは、カプセル1が呼び出されるたびにデータの内容を記憶する機能があり、この内容をカプセルアナライザへ転送し、カプセルスコープによってグラフ化することができる。ユーザは、グラフ化したデータを解析して、カプセル1の演算ミスや異常の発生をいち早く知ることができる。
【0094】
グラフ表示においては、上記変数値の一覧表示とは異なり、データの内容の変化等を詳細に把握するためには、カプセル1の呼び出しごとにおけるデータ内容をグラフに反映することが望ましいが、カプセル1の呼出し周期と同じ周期でデータの内容をカプセルアナライザへ転送していたのでは、この転送処理によりメインメソッド13の処理が圧迫され、リアルタイム処理が実現できない場合がある。そこで、グラフ表示用メソッドでは、呼び出されるたびにデータの内容を蓄積しておき、例えば、500回の呼び出しにつき1回の割合で、蓄積されたデータを一括してカプセルアナライザへ転送することによりACM14によるCPU占有率を下げるのである。
【0095】
これにより、ACM14は、コンピュータを、ACC3において実行させられた所定周期ごとのメインメソッド13における演算処理の状況(データの内容)を蓄積する蓄積手段及び当該蓄積された演算処理の状況を一括して提供する状況一括提供手段として機能させるのである。なお、リアルタイム処理が確保できるのであれば、データの内容を蓄積せず、逐一カプセルアナライザへ転送するようにしても良い。
【0096】
カプセルジェネレータにおいて、ユーザが、カプセルの変数を登録するとACM14のメソッド内に、変数の存在(変数名、コメント、変数値等)をカプセルアナライザへ転送するためのコードが生成される。このような変数登録時のACMコード生成機能により、デバック用のコードの設計を削減することができる。
【0097】
なお、デバッグが完了した後は、カプセルの構成からACM14を除いても良い。
【0098】
[1.2 TSU2]
【0099】
TSU2は、RTOSにおけるタスクの実行制御を司る部分に相当するプログラムであり、カプセル1のメインメソッド13を組み込んで、一定時間間隔(例えば、100μ秒)で呼び出す仕組みを提供している。つまり、カプセル1ごとに予め定められた周期で、各カプセル1のメインメソッド13による演算処理を順次繰り返して実行させるのである。
【0100】
図3は、TSU2において、カプセル1が呼び出される様子の一例を示す図である。
【0101】
図3に示すタイムスロットとは、繰り返し呼び出し周期の単位であり、例えば、1μ秒に設定されている。
【0102】
TSU2においては、タイムスロット0でカプセル1A、1B及び1Xが順次呼び出され、次のタイムスロット1でカプセル1A、1B及び1Yが順次呼び出される。そして、タイムスロット2で、カプセル1A、1B及び1Zが順次呼び出される。その後、タイムスロット3〜9までの間は、カプセル1A及び1Bのみが呼び出される。
【0103】
このようにして、タイムスロット1からタイムスロット10までの呼び出しが繰り返されることにより、カプセル1A及び1Bは、例えば、100μ秒周期で呼び出され、カプセル1X、1Y及び1Zは、例えば、1m秒周期で呼び出される。
【0104】
カプセル1を呼び出す周期は、例えば、カプセル1ごとの処理の緊急性、時間的制約等の条件からユーザが選択することができる。
【0105】
RTOSが、予め設定された優先順位に基づきタスクを切り替えながら並列的に実行する(つまり、あるタスクの演算処理の実行途中で他のタスクに実行制御が切り替わる)のに対し、TSU2は、ラウンドロビン方式で、各メインメソッド13をシーケンシャルに実行する(つまり、あるメインメソッド13の演算処理が終了するまでは他のメインメソッド13の演算処理は実行されない)ことにより、複数のメインメソッド13が並列的に実行される。
【0106】
このように、RTOSに比べて、極めて単純化された実行規則でカプセル1を実行させることにより、コンピュータによる並列的な処理が行われるので、設計、検証等が容易となる。
【0107】
ここで、TSU2に組み込まれる各カプセル1により適切なリアルタイム処理を行うためには、周期ごとにおけるカプセル1の実行時間の合計が、その周期内に収まるように各カプセル1を設計すべきである。
【0108】
例えば、図3の周期1においては、カプセル1A、1B及び1Xの実行時間の合計が100μ秒以下となるようにする。
【0109】
TSU2は、また、所定周期で(例えば、1μ秒)、ACC3を関数呼び出しで実行させる。これにより、後述するACC3によるACM14の選択実行処理を通じて、ACM14によりカプセル1のデータをリアルタイムにカプセルアナライザへ転送する。
【0110】
なお、カプセル1は、基本的には、TSU2に組み込み、一定時間間隔で常時動作することを前提としているが、これに限られるものではなく、RTOSに組み込んでも良い。この場合のコンピュータプログラムPは、複数のカプセル1と、RTOSのカーネルと、ACC3により構成され、カーネルから各カプセル1のメインメソッド13が起動されることとなる。
【0111】
[1.3 ACC3]
ACC3は、カプセルアナライザとACM14とのインタフェースとなる特別なカプセルである。
【0112】
ACC3は、カプセルアナライザとの通信を確立すると、先ず、コンピュータプログラムPが有する全カプセルのカプセル名、識別番号等をカプセルアナライザへ転送する。これにより、カプセルアナライザを通じて、ユーザが、監視したいカプセル1を選択することができる。
【0113】
そして、カプセルアナライザからカプセル1の選択要求を示す識別番号(本発明に係る選択情報の一例)を受信すると、ACC3は、識別番号が示すカプセル1のACM14を呼び出すセレクタとして動作することで、ACM14によりカプセル1の変数の情報(変数名、コメント、変数値等)をカプセルアナライザへ伝えることが可能となる。
【0114】
これにより、ACC3は、コンピュータを、少なくとも一のカプセル1の選択を示す識別番号を取得し、当該選択されたカプセルにおけるACM14による処理を所定周期ごとに実行させる状況提供選択実行手段として機能させるのである。
【0115】
上記のような構造を有するカプセル1は、データ公開部11とデータ獲得メソッド12とを有することにより、情報交換の規則を持っている。すなわち、各カプセル1は他のカプセル1が有するデータの内、公開データのみを取得可能であり、かつ、公開データは、他のカプセルからは取得するのみで変更されることはないので、データの安全性が確保されるとともに各カプセル1の独立性も確保されることとなり、全体としての信頼性が向上する。
【0116】
そして、コンピュータプログラムPにおいては、各カプセル1が、TSU2からラウンドロビン方式でシーケンシャルに呼び出されることにより、他のカプセル1において公開されたデータをデータ獲得メソッド12により自ら取得し、それを基にメインメソッド13で演算処理を行い、その演算処理により得られた結果を必要に応じて公開データとして他のカプセルから取得可能なデータ公開部11に設定するようにコンピュータが実行することで、各カプセル1は自律的に動作する。
【0117】
このようにして、カプセル1同士が情報交換しながら独立して並列的に動作することにより、各カプセル1の演算処理が相互に作用しあい、このカプセル1の集合により構成されたコンピュータプログラムPとしての機能が実現されるのである。
【0118】
従って、例えば、あるカプセル1から、タスク間通信等により他のカプセル1を起動することにより、その処理結果を得るような(つまり、カプセル1の処理が、他のカプセル1の処理に直接依存するような)プログラミングをする必要は基本的にはない。
【0119】
なお、カプセル1を構成する際においては、公開データを取得する側のカプセル1が、データ獲得メソッド12で直接公開データを引継変数に設定するのではなく、公開データを定義する側のカプセル1において、公開データの内容を提供するサービス関数を用意して、取得する側のカプセル1のデータ獲得メソッド12において、そのサービス関数を呼び出すようにしても良い。このように構成した場合は、公開データもプライベート変数として宣言することが可能となる。
【0120】
[2.開発システムSの構成]
次に、本実施形態における開発システムSの構成及び機能について説明する。
【0121】
図4は、本実施形態における開発システムSの概要構成の一例を示す図である。
【0122】
図4に示すように、開発システムSは、プログラム実行装置としてのターゲットボードBと、プログラム生成装置及び状況表示装置としての開発用端末Tとが、シリアル通信用ケーブルKに接続されて構成されている。
【0123】
ターゲットボードBと、開発用端末Tとは、シリアル通信用ケーブルKを介して、シリアル通信(例えば、RS-232C(Recommended Standard 232C)、Ethernet(登録商標)等)にて相互にデータの送受信が可能である
【0124】
[2.1 ターゲットボードBの構成]
ターゲットボードBは、コンピュータプログラムPを実装し、コンピュータプログラムPを実行するコンピュータとしてのマイクロコントローラMと、シリアル通信用ケーブルKを接続するシリアル通信用コネクタ等を搭載している。
【0125】
マイクロコントローラMは、CPU、データ等を一時的に記憶するRAM、各種プログラム(例えば、RTOS、コンピュータプログラムP等)等を記憶するフラッシュROM、通信コネクタに接続されたシリアル通信用ケーブルKを介して開発用端末Tとの通信状態を制御する通信回路(例えば、RS-232Cコントローラ、Ethernet(登録商標)コントローラ等)、外部から供給されたアナログ信号をデジタル信号に変換するA/Dコンバータ、ターゲットボードB上の周辺回路を制御するための入出力ポート等により構成されている。
【0126】
マイクロコントローラMは、CPUが、ROMに記憶された各種プログラムを読み出し実行することにより、ターゲットボードBを統括制御するとともに、本実施形態に係るプログラム実行装置として機能するようになっている。
【0127】
[2.2 開発用端末Tの構成]
開発用端末Tは、コンピュータプログラムPを生成するとともに、ターゲットボードBに組み込まれたコンピュータプログラムPをデバッグするための端末であり、例えば、パーソナルコンピュータ、ワークステーション等が適用可能である。
【0128】
開発用端末Tは、CPU、RAM、ROM等を備える制御部21と、各種プログラム(例えば、オペレーティングシステム、カプセルワークス(カプセルジェネレータ、カプセルアナライザ、カプセルスコープ)、コンパイラ等)及びデータ(例えば、カプセル1のソースファイル、スケルトンカプセル10のソースファイル等)等を記憶する記憶部22(例えば、ハードディスク、不揮発性メモリ等)と、シリアル通信用ケーブルKを介してターゲットボードBとの通信状態を制御する通信部23(例えば、RS-232C(Recommended Standard 232C)コントローラ、Ethernet(登録商標)コントローラ等)と、文字や画像等の情報を表示する表示部24(例えば、ディスプレイ等)と、ユーザからの操作指示を受け付ける操作情報入力手段としての操作部25(例えば、キーボード、マウス等)とを備え、バス28を介して相互に接続されている。
【0129】
制御部21は、CPUが、ROMまたは記憶部に記憶された各種プログラムを読み出し実行することにより、開発用端末Tを統括制御するとともに、本実施形態に係る定義コード生成手段、取得コード生成手段、主処理コード生成手段、状況提供コード生成手段、実行制御コード生成手段、状況提供指示手段、状況表示手段等として機能するようになっている。
【0130】
[2.3 カプセルワークス]
【0131】
カプセルワークスは、開発用端末Tにより実行されることによりコンピュータプログラムPを開発するためのソフトウエアであり、プログラム生成用プログラムとしてのカプセルジェネレータと、状況表示用プログラムとしてのカプセルアナライザ及びカプセルスコープと、により構成されている。
【0132】
[2.3.1 カプセルジェネレータ]
カプセルジェネレータは、信頼性、品質の高いカプセル1を生成するために専用に設計されたソフトウエア開発ツールである。
【0133】
カプセルジェネレータは、技術者をナビゲートする機能やコードの生成の機能を備えており、特に、検証用のACMのコードの自動生成機能を有している。
【0134】
制御系やパワーエレクトロニクス系のソフトウエアを実現することは、必要となるカプセル1を作成し、カプセル1を集めて組織化を行い、カプセル1とカプセル1とが情報交換しながら、装置に特化した仕事を、リアルタイムマルチタスクで行うことである。ソフトウエアの生産性、ソフトウエアのコードの理解、技術者の育成は、単純な構造のスケルトンカプセル10とカプセルジェネレータから生成する多くのカプセル1により大きく改善されるのである。
【0135】
図5は、カプセルジェネレータのメイン画面100の一例を示す図であり、図6は、ビジュアルコントローラウインドウ107の一例を示す図である。
【0136】
カプセルジェネレータが起動されると、図4に示すようなメイン画面100が表示部24に表示される。
【0137】
メイン画面100は、メニューバー101と、新規カプセル作成ボックス102と、変数設定ボックス103と、新規メソッド追加ボックス104と、選択されているカプセル1のヘッダファイル(拡張子が.h)の内容を表示するヘッダ表示エリア105と、選択されているカプセル1のメソッドのソースファイル(拡張子が.cpp)の内容を表示し、そのプログラムコードをユーザが編集するためのソース編集エリア106と、カプセル1のイメージ画像を利用して、カプセル1の編集操作をするためのビジュアルコントローラウインドウ107等により構成されている。
【0138】
メニューバー101をユーザが操作することにより、例えば、カプセルの保存、読み込み、カプセルのTSU2への組み込み、カプセルのプロジェクトの追加、コンパイル等が開発用端末Tの制御部21により実行される。
【0139】
カプセルを開発するために最初に行うことは、検証されたスケルトンカプセル10を読み込むことであり、新規カプセル作成ボックス102において、ユーザが、新しいカプセル名を入力すると、スケルトンカプセル10のソースファイル及びヘッダファイルから、入力されたカプセル名を有するカプセル1のソースファイル及びヘッダファイルが、制御部21により生成される(これを、新しいカプセルの誕生ともいう。)。
【0140】
その後、ユーザがプログラムコードを入力することで、制御部21により、生成されたソースファイルのメインメソッド13内にプログラムコードが追加さる。
【0141】
また、変数設定ボックス103において、ユーザがいずれかのボタンを選択すると、夫々のボタンに対応してデータ公開用変数設定ウインドウ、データ獲得用変数設定ウインドウまたは内部変数設定ウインドウのいずれかが表示され、そこで、ユーザが定義情報(例えば、変数名、変数の型、コメント、初期値等)や指定情報(例えば、カプセル名、変数名等)等を入力すると、公開データ定義用のプログラムコード、公開データ取得用のプログラムコード、内部データ定義用のプログラムコード等が制御部21により生成されるとともに、夫々のデータ用にACM14のプログラムコードが生成される。
【0142】
また、新規メソッド追加ボックス104において、ユーザによりボタンが選択されると、メソッド関数定義メニューが表示され、そこで、ユーザが関数名、関数の型等を入力すると、ソースファイル及びヘッダファイルに新しい関数用のプログラムコードが制御部21により追加される。
【0143】
その後、ユーザがプログラムコードを入力することで、制御部21により、ソースファイルの新規メソッド内にプログラムコードが追加される。
【0144】
また、図6に示すように、ビジュアルコントローラウインドウ107には、データ公開ボタン141、データ獲得メソッドボタン142、メインメソッドボタン143、ACMボタン144等が設けられており、カプセルジェネレータの操作性を向上させるために、カプセル1のイメージ画像を利用して、カプセル1の編集操作ができる。
【0145】
例えば、データ公開ボタン141を選択すると、データ公開用変数設定ウインドウが表示される。また、データ獲得ボタン142を選択するとデータ獲得用変数設定ウインドウが表示される。また、メインメソッドボタン143を選択するとソース編集エリア106にソースファイルのメインメソッド13のプログラムコードが表示される。
【0146】
[2.3.2 カプセルアナライザ及びカプセルスコープ]
カプセルアナライザは、ACM14を通じて、カプセル1の内容を表示することで、変数の状態を監視し、リアルタイムデバッグを実現するツールである。図7は、アナライザ画面180の一例を示す図である。
【0147】
カプセルアナライザが起動されると、図7に示すようなアナライザ画面180が表示部24に表示される。
【0148】
アナライザ画面180には、メニューバー181、複数のカプセル選択ボタン182、カプセル情報表示エリア183及び複数のグラフ選択ラジオボタン184等が設けられている。
【0149】
また、カプセルアナライザが起動すると、ACC3とアクセスを開始する。ACC3は、登録されているカプセル名カプセルアナライザへ転送する。
【0150】
そして、カプセル選択ボタン182には、ターゲットボードBのマイクロコントローラMに記憶されているコンピュータプログラムPのカプセル1の名称が表示される。
【0151】
カプセルアナライザから、いずれかのカプセル選択ボタン182をユーザが選択することにより、所望のカプセル1を選択することができる。そのとき、カプセルアナライザからACC3へ、選択されたカプセル1の情報として識別番号が転送される。
【0152】
ACC3は、識別番号から獲得したカプセル名から、該当するカプセル1のACM14を呼び出す。ACM14が選択されると、カプセルアナライザのカプセル情報表示エリア183には、変数名やコメントが表示されて、デバックがしやすい環境が整う。
【0153】
変数に関する情報(変数名やコメントの文字等)は、ACM14自身が持っていることが、開発システムSの大きな特徴となっている。
【0154】
カプセル情報表示エリア183に表示されている変数の値を最新の情報に更新するために、カプセルアナライザとACM14は、一定時間の間隔で情報交換を行う。これにより、変数の値をリアルタイムに表示することができる。
【0155】
このようにして、カプセルアナライザは、開発用端末Tの制御部21を、所定周期ごとにターゲットボードBにより提供された演算処理の状況を順次表示する状況提供手段として機能させるのである。
【0156】
グラフ選択ラジオボタン184は、データ内容を、カプセルスコープにおいてグラフ表示させる変数を選択するためのボタンである。
【0157】
カプセルスコープは、カプセル1が呼び出されるたびに変化する変数を、グラフで確認することができるビジュアルなツールである。カプセル1が呼び出されるたびに、ACM14により、変数を内部のメモリに一次時記憶しておき、カプセルアナライザへ転送する。そして、カプセルアナライザへ転送されたデータは、カプセルスコープによりグラフ表示される。
【0158】
図8は、スコープウインドウ190の一例を示す図である。
【0159】
カプセルアナライザの画面のグラフ選択ラジオボタン184から任意のボタンを、CH1、CH2、CH3夫々について選択することにより、グラフ表示させる変数の値を3つ選択することができる。そして、メニューバー181のツールメニューからカプセルスコープサブメニューを選択すると、図8(a)に示すようなスコープウインドウ190が表示される。
【0160】
スコープウインドウ190においては、横軸をコンテンツ呼び出し回数(ACM14が呼び出された回数)、縦軸には各呼び出し時における変数の値として、選択された変数(この例では3変数分)の値がグラフ表示エリア191にグラフ表示される。
【0161】
図8(a)においては、変数ごとに別々にグラフ表示しているが、図8(b)に示すように、複数のグラフを合成して表示することも可能である。
【0162】
なお、カプセルジェネレータ、カプセルアナライザ、カプセルスコープ等の各種プログラムは、例えば、ネットワークを介してサーバからダウンロードされるようにしても良いし、CD−ROM等の記録媒体に記録されてドライブを介して読み込まれるようにしても良い。
【0163】
[3.コンピュータプログラムPの開発方法]
次に、コンピュータプログラムPの開発方法の概要を説明する。図9は、本実施形態において、ターゲットボードBを用いた開発の様子の一例を示す図である。
【0164】
図9に示すように、先ず、カプセルジェネレータにより、スケルトンカプセル10(スケルトンカプセル10のヘッダファイル、ソースファイル)を読み込む。カプセル名を設定して、新規カプセルとする。そうすると、カプセル1のヘッダファイル、ソースファイルが新たに生成される。
【0165】
次いで、カプセルジェネレータで、変数(公開データの変数、データ獲得メソッド12で公開データを引き継ぐ変数、カプセル内部で使用される変数等)の登録を行う。これにより、カプセル1のソースファイルに各変数用のプログラムコードが自動生成される。その際に、ACM14に、変数転送用のプログラムコードも自動生成される。
【0166】
また、メインメソッドや新規メソッドを選択し、カプセル1のソースファイルに目的となるプログラムコードを書き加える。
【0167】
そして、カプセルジェネレータの組み込みコマンドを選択すると、TSUまたはOSへ組み込みを行うことができる。
【0168】
その後、一般的には、コンパイラのプロジェクトメニューにより、カプセル1を登録し、コンパイルを行う。これにより、コンピュータプログラムPが生成される。
【0169】
コンパイラで生成された実行ファイル(コンピュータプログラムP)は、書き込みツールを用いて、ターゲットボートBへ書き込む。これにより、ターゲットボードBは動作が可能となる。
【0170】
開発用端末TとターゲットボードBとをシリアル通信ケーブルKで接続する。カプセルアナライザ及びコンピュータプログラムPの双方を起動すると、カプセルアナライザの画面には、カプセル選択ボタンと該当するカプセルの変数名が表示される。これで、デバック作業を開始することができる。
【0171】
次に、コンピュータプログラムPをシミュレーションにより開発する様子の一例を説明する。図10は、本実施形態において、シミュレータを用いた場合の開発方法の概要構成の一例を示す図である。
【0172】
シミュレーションとは、コンピュータプログラムPを、マイクロコントローラMに実装する代わりに、既知のコンパイラで、仮想的な周辺装置を摸擬するプログラムを作成し、あたかも、ターゲットボードB上で動作しているかのような振る舞いをさせる方法である。
【0173】
このように、カプセル1の生成から検証までの一連の流れを、開発用端末Tのみでシミュレーションとして行い、ターゲットが完成していない状態やターゲットが無い場合に、開発用端末Tでカプセル1の動作を確認することができる。
【0174】
シミュレータは、既知のコンパイラで、開発用端末Tの実行ファイルとして作成される。シミュレータとして生成される実行ファイルは、カプセルアナライザとTCP/IP(Transmission Control Protocol/Internet Protocol)等の通信プロトコルにより接続可能な様に構成する。
【0175】
なお、シミュレータとしてのコンピュータプログラムPとカプセルアナライザとを別々のプログラムとするのではなく、コンピュータプログラムPにカプセルアナライザを組み込んで一体化させても良い。このような場合には、コンピュータプログラムPからカプセルアナライザに演算処理の状況を転送して、カプセルアナライザで表示するのではなく、転送を省いて直接表示させることが可能となる。
【0176】
図10に示すように、スケルトンカプセル10を読み込んでの新規カプセル1の生成、変数の登録、プログラムコードの追加及びTSU等への組み込みは上記と同様である。
【0177】
その後、コンパイラのプロジェクトメニューにより、カプセル1を登録し、シミュレータ用のコンパイルを行うと、コンピュータプログラムPとしてのシミュレータ実行ファイルが生成される。
【0178】
そして、カプセルアナライザとシミュレータ実行ファイルを起動すると、カプセルアナライザの画面には、カプセル選択ボタンと該当するカプセル1の変数名が表示される。これで、デバック作業を開始することができる。
【0179】
[4.開発システムSの動作]
[4.1 コンピュータプログラムP生成時]
次に、上記のような構造を有する開発システムSの動作について説明するが、まず、カプセルジェネレータにおいて、主にコンピュータプログラムPのプログラムコードを生成する場合の動作について、その内容ごとに分けて説明する。
【0180】
[4.1.1 新規カプセル1の生成]
先ず、スケルトンカプセル10を読み込んで、新規カプセル1を生成する場合の動作について説明する。図11は、新規カプセル作成ボックス102における操作手順を説明する図である。図12は、スケルトンカプセルのヘッダファイル及びソースファイルの一例を示す図であり、(a)はヘッダファイル、(b)はソースファイルである。
【0181】
カプセルジェネレータが開発用端末Tの制御部21により実行されることにより、図5に示すようなメイン画面100が表示部24に表示される。
【0182】
そして、図11に示すように、ユーザがキーボード操作等により、新規カプセル作成ボックス102のクラス名入力エリア111に対してカプセル1のクラス名(例えば、初期クラス名SkelCapsuleからUserCapsuleに変更)を設定し、マウス等により置換ボタン112を選択すると、制御部21は、記憶部22に記憶されているスケルトンカプセルのヘッダファイル(図12(a))とソースファイル(図12(b))とを読み出し、RAMに展開する。
【0183】
図12(a)に示すヘッダファイルの例においては、スケルトンカプセルのクラス定義のプログラムコードが記述されており、クラス宣言が_SkelCapsuleでなされ、コンストラクタ(_SkelCapsule)、メインメソッド13(SkelCapsule)及びACM14(Capsule_ACM)がパブリック宣言されている。また、データ獲得メソッド12(GetMessage_P)はプライベート宣言されている。
【0184】
図12(b)に示すソースファイルの例においては、メインメソッド13の骨格及びデータ獲得メソッド13を呼び出すプログラムコードと、”ここからメインメソッドのプログラムを書いてください”というコメントが記述されており、データ獲得メソッド12及びACM14については、その骨格のみが記述されている。
【0185】
制御部21は、RAM上に展開されたヘッダファイルのクラス定義のクラス名を変更し(例えば、_UserCapsule)、メインメソッドの関数名も変更する(例えば、UserCapsule)。
【0186】
そして、制御部21は、新規カプセルのヘッダファイル及びソースファイルを生成した後、RAM上に展開されたソースファイルのメインメソッドの関数名を変更する(例えば、UserCapsule)。
【0187】
制御部21は、このようにして生成したソースファイル及びヘッダファイルを記憶部22に記憶する。
【0188】
次いで、制御部21は、記憶部22に記憶されているACC3のソースファイルを読み出し、そのソースファイルに対して、新規カプセルのACM14を呼び出すプログラムコードを追加した後、そのソースファイルを記憶部22に記憶する。
【0189】
そして、制御部21は、現在編集中のカプセル1として、新規カプセルのヘッダファイルをメイン画面100のヘッダ表示エリア105に表示し、新規カプセルのソースファイルのメインメソッドの部分をソース編集エリア106に表示する。
【0190】
ユーザは、新しいカプセルのヘッダファイル及びソースファイルの内容を確認することができるようになるとともに、ソース編集エリア106において、プログラムコードをキーボード等で入力することで、ソースファイルのメインメソッド13の”ここからメインメソッドのプログラムを書いてください”のコメントの下からプログラムを記述することができる。
【0191】
なお、ユーザが、メイン画面100のメニューバー101のファイルメニューから保存サブメニューを選択することにより、制御部21は、カプセル1の内容(プログラムコードが追加されたヘッダファイルとソースファイル)を記憶部22に保存させる。
【0192】
[4.1.2 公開変数の追加]
次に、公開変数を追加する場合の動作について説明する。図13は、データ公開用変数設定ウインドウ120の一例を示す図である。また、図14は、生成されたACM14のプログラムコードの一例を示す図である。
【0193】
ユーザが、メイン画面100の変数設定ボックス103のData公開ボタンを選択すると、開発用端末Tの制御部21は、図13に示すようなデータ公開用変数設定ウインドウ120を表示部24に表示する。
【0194】
データ公開用変数設定ウインドウは、カプセル1において外部に取得可能な公開データの定義情報を設定し、データ公開用のプログラムコードを生成するためのウインドウであり、変数の型選択エリア121、変数名入力エリア122、初期値入力エリア123、コメント入力エリア124、ACMの生成オプションの各種チェックボックス125、コード生成ボタン等126が設けられている。
【0195】
ユーザは、定義情報として、各エリアに対して、変数の型(たとえば、int、short等)、変数名(例えばData1_i等)、初期値(例えば0等)、コメント(任意の文字)を設定し、必要に応じてACM生成オプションを選択する。
【0196】
その後、ユーザがコード生成ボタン126を選択すると、制御部21は、現在編集中のカプセル1のヘッダファイルのパブリック部に、メニューで設定された変数名の前にPut_が追加された変数名(例えば、Put_Data1_i等)で公開データの変数である公開変数を定義するプログラムコードを追加し(例えば、int Put_Data1_i;等)、更に、変数の定義のプログラムコードの後ろに、メニューで設定されたコメントを追加する。
【0197】
変数の前に追加されたPut_は、その変数が外部公開されていること示している。
【0198】
制御部21は、次いで、ソースファイルのコンストラクタ部に、メニューで設定された初期値の内容を公開変数に代入するプログラムコードを追加する(例えば、Put_Data1_i=0;等)。
【0199】
そして、制御部21は、公開変数の内容を外部に転送するためのプログラムコードを、ソースファイルのACM14の中に追加する。
【0200】
具体的に、制御部21は、変数基本情報表示用メソッドに、カプセルアナライザへ転送する内容として通し番号、コメント、変数名を設定するプログラムコードを追加する(図14(a)の点線で囲まれた部分)。
【0201】
そして、制御部21は、変数値一覧表示用メソッドにカプセルアナライザへ転送する内容として変数値を設定するプログラムコードが追加される(図14(b)の点線で囲まれた部分)。
【0202】
更に、制御部21は、グラフ表示用メソッドには、図14(c)に示すように、カプセルアナライザへ一括して転送する内容を記憶しておくための配列に変数値を設定するプログラムコードが追加される(図14(c)の点線で囲まれた部分)。
【0203】
なお、コンピュータプログラムPにカプセルアナライザを組み込んで一体化させる場合には、図14(d)に示すように、表示用の配列に通し番号、コメント、変数名、変数値を設定するプログラムコードを追加する。
【0204】
[4.1.3 データ獲得用のプログラムコード生成]
次に、データ獲得用のプログラムコードを生成する場合の動作について説明する。
【0205】
図15(a)は、データ獲得用変数設定ウインドウ130の一例を示す図であり、図15(b)は、その変形例である。
【0206】
ユーザが、メイン画面100の変数設定ボックス103のData獲得ボタンを選択すると、開発用端末Tの制御部21は、図15(a)に示すようなデータ獲得用変数設定ウインドウ130を表示部24に表示する。
【0207】
データ獲得用変数設定ウインドウ130は、他のカプセル1において定義されている公開データを指定する指定情報及び公開データを引き継ぐ変数の定義情報を設定し、データ獲得用のプログラムコードを生成するためのウインドウであり、データ公開用変数設定ウインドウ120と同様に、変数の型選択エリア131、変数名入力エリア132、初期値入力エリア133、コメント入力エリア134、ACMの生成オプションの各種チェックボックス135、コード生成ボタン136等が設けられている。
【0208】
ユーザは、各エリアに対して、公開データを引き継ぐための引継変数の定義情報として、変数の型、変数名(公開変数の変数名からPut_を除いたものを例えば、Data1_i等のように設定する。)、初期値、コメントを設定し、必要に応じてACM生成オプションを選択する。
【0209】
その後、ユーザがコード生成ボタン136を選択すると、制御部21は、現在編集中のカプセル1のヘッダファイルのプライベート部に、メニューで設定された変数名の前にGet_が追加された変数名で引継変数を定義するプログラムコードを追加し(例えば、int Get_Data1_i;等)、更に、変数を定義するプログラムコードの後ろに、メニューで設定されたコメントを追加する。
【0210】
変数の前に追加されたGet_は、その変数が外部のカプセル1から取得した変数を引き継いでいることを示している。
【0211】
制御部21は、次いで、ソースファイルのコンストラクタ部に、メニューで設定された初期値の内容を引継変数に代入するプログラムコードを追加する(例えば、Get_Data1_i=0;等)。
【0212】
そして、制御部21は、メニューで設定された変数名の前にPut_が追加された変数名の(例えば、Put_Data1_i等)の公開変数が定義されているヘッダファイルを検索し、そのヘッダファイルに定義されているカプセル名を取得する。
【0213】
このように、メニューで設定された変数名は、引継変数を定義するための定義情報の一部であるとともに、他のカプセル1で定義されている公開変数を指定するという意味で、指定情報でもある。
【0214】
次いで、制御部21は、ソースファイルのデータ獲得メソッド12に、公開変数を引継変数(例えば、Get_Data1_i等)に代入するプログラムコードを追加する(例えば、Get_Data1_i=_Capsule1.Put_Data1_i;等)。
【0215】
そして、制御部21は、データ取得後の引継変数の内容を外部に転送するためのプログラムコードを、ソースファイルのACMの中に追加するが、具体的な処理内容は、公開変数を追加する場合と同様である。
【0216】
なお、データ獲得用変数の設定ウインドウを図15(b)のように構成しても良い。
【0217】
この場合、変数の型選択エリア131、変数名入力エリア132、コメント入力エリア134、各種チェックボックス135については図15(a)と同様であるが、変数名入力エリア132の代わりに公開変数のカプセル選択エリア137と変数選択エリア138を設け、指定情報としてカプセル名と変数名とを設定することにより、他のカプセル1で既に定義されている公開変数を直接指定することができる。
【0218】
データ獲得用変数設定ウインドウ130をこのように構成することで、カプセル名をヘッダファイルから検索する処理が不要となる。
【0219】
[4.1.4 内部変数の追加]
次に、内部変数を追加する場合の動作について説明する。
【0220】
図16は、内部変数設定ウインドウ140の一例を示す図である。
【0221】
ユーザが、メイン画面100の変数設定ボックス103の変数追加ボタンを選択すると、開発用端末Tの制御部21は、図16に示すような内部変数設定ウインドウ140を表示部24に表示する。
【0222】
内部変数設定ウインドウ140は、カプセル1内部のみで使用される内部変数の定義情報を設定し、内部変数用のプログラムを生成するためのウインドウであり、図16に示すように、データ公開用変数設定ウインドウ120とほぼ同様の構成となっている。
【0223】
そして、ユーザが、表示された内部変数設定ウインドウ140の変数名入力エリア等に対して定義情報を設定し、コード生成ボタン146を選択すると、制御部21は、現在編集中のカプセル1のヘッダファイルのプライベート部に、メニューで設定された変数名で内部変数を定義するプログラムコードを追加し(例えば、short DelayTime_s;等)、更に、変数を定義するプログラムコードの後ろに、メニューで設定されたコメントを追加する。
【0224】
制御部21は、次いで、ソースファイルのコンストラクタ部に、メニューで設定された初期値の内容を内部変数に代入するプログラムコードを追加する(例えば、DelayTime_s =0;等)。
【0225】
そして、制御部21は、内部変数の内容を外部に転送するためのプログラムコードを、ソースファイルのACM14の中に追加するが、具体的な処理内容は、公開変数を追加する場合と同様である。
【0226】
[4.1.5 新規メソッドの追加]
次に、新規メソッドを追加する場合の動作について説明する。
【0227】
図17は、メソッド関数定義ウインドウ150の一例を示す図である。
【0228】
ユーザが、メイン画面100の新規メソッド追加ボックス104の開くボタンを選択すると、開発用端末Tの制御部21は、図17に示すようなメソッド関数定義メニュー150を表示部24に表示する。
【0229】
メソッド関数定義メニュー150は、関数呼び出しにより、メインメソッドから直接または間接的にて呼び出されるメソッドを新規に追加するためのウインドウである。
【0230】
メソッド関数定義メニュー150には、戻り値の型選択エリア151、メソッドの名前入力エリア152、引数の型選択エリア153、引数の変数名入力エリア154、コメント入力エリア155、コード生成ボタン156等が設けられている。
【0231】
ユーザは、各エリアに対して、新規メソッドの戻り値の型、メソッド名、引数の型、引数の変数名、コメントを設定し、最後にコード生成ボタン156を選択すると、制御部21は、編集中のカプセル1のヘッダファイルのクラス定義におけるプライベート部に、メニューで設定されたメソッド名の関数を定義するプログラムコードを追加し(例えば、void TempConv(int);等)、更に、関数を定義するプログラムコードの後ろに、メニューで設定されたコメントを追加する。
【0232】
そして、制御部21は、ソースファイルに新規メソッドの関数のプログラムコードを追加する(例えばvoid TempConv(int TempData_i){})。
【0233】
次いで、制御部21は、ソース編集エリア106に、新規メソッドの関数のプログラムコードを表示させる。
【0234】
ユーザは、ソース編集エリア106において、プログラムコードをキーボード等で入力することで、新規メソッドに対するプログラムコードの追加・編集が可能となる。
【0235】
なお、本実施形態に係る主処理部には、メインメソッドの他、メインメソッドから直接または間接的に呼び出されるメソッド(ただし、データ獲得メソッドは除く)も含まれる。
【0236】
[4.1.6 TSU2への組み込み]
次に、カプセル1をTSU2に組み込む場合の動作について説明する。図18は、組み込み設定ウインドウ160の一例を示す図である。また、図19は、TSU2のソースファイルの一例を示す図である。
【0237】
ユーザが、メニューバー101のTSU組み込みメニューを選択すると、開発用端末Tの制御部21は、図18に示すようなTSU組み込み設定ウインドウ160を表示部24に表示する。
【0238】
TSU組み込み設定ウインドウ160は、現在編集中のカプセル1を実行させるTSU2のプログラムコードを生成するためのウインドウである。
【0239】
TSU組み込み設定ウインドウ160には、変数値一覧表示用プログラムコード表示エリア161、変数基本情報表示用プログラムコード表示エリア162、ボタン表示用プログラムコード表示エリア163、プログラム実行用表示エリア164、開くボタン165、コンテンツ選択エリア166、タスクナンバー選択エリア167、書き込みボタン168等が設けられている。
【0240】
ユーザが、開くボタン165を選択すると、制御部21は、記憶部22からACC3のソースファイルを読み出し、プログラムコード表示用エリア161乃至163に、ACC3の変数値一覧表示用メソッド呼び出しメソッド、変数基本情報表示用メソッド呼び出しメソッド、ボタン表示用メソッドのプログラムコードを表示する。そして、制御部21は、記憶部22からTSU2TSU2のソースファイルを読み出し、プログラムコード表示用エリア164にTSU2のプログラムコードを表示する。
【0241】
コンテンツ選択エリア166に表示されているコンテンツは、例えば、0から3の4種類あり、夫々、TSU2による呼び出し周期100μ秒、1m秒、10m秒、100m秒を示している。
【0242】
そこで、ユーザが、コンテンツ選択エリア166に対して、所望のコンテンツ(周期)を選択し、タスクナンバー選択エリア167に対して、タスクナンバー(タイムスロット値)を適宜選択する。
【0243】
そして、ユーザが書き込みボタン168を選択すると、制御部21は、ACC3の変数値一覧表示用メソッド呼び出しメソッド、変数基本情報表示用メソッド呼び出しメソッド、ボタン表示用メソッド及びTSU2にプログラムコードを追加する。
【0244】
具体的に、制御部21は、現在編集中のカプセル1の変数値一覧表示用メソッドを呼び出すプログラムコード、現在編集中のカプセル1の変数表示メソッドを呼び出すプログラムコード、ボタン表示用として現在編集中のカプセル1のカプセル名を設定するプログラムコードを夫々ACC3のソースファイルに追加する(プログラムコード表示用エリア161〜163の点線で囲まれた部分)。
【0245】
更に、制御部21は、TSU2のソースファイルにおいて、設定されたコンテンツ及びタスクナンバー(タイムスロット値)に対応するカプセル呼び出しメソッドに、現在編集中のカプセル1を呼び出すプログラムコードを追加する(プログラムコード表示用エリア164の点線で囲まれた部分)。
【0246】
次いで、制御部21は、プログラムコードが追加されたメソッドのソースファイルを記憶部22に記憶する。
【0247】
図19に示すTSU2のソースファイルの例においては、各カプセルのヘッダファイルを読み込み、各カプセルを生成するプログラムコードが記述され、また、TSU2のコンストラクタが記述される。
【0248】
そして、コンテンツ0のカプセル1を呼び出すメソッド、コンテンツ1のタスク0に対応するカプセル1を呼び出すメソッド、コンテンツ1のタスク1に対応するカプセル1を呼び出すメソッドというように、コンテンツ3のタスク9まで、カプセル1を呼び出すメソッドが記述される。ここで、コンテンツ0のカプセル1は全て、同一の呼び出しメソッドにおいて呼び出され、その呼び出し順序は、TSU組み込み設定ウインドウ160において設定されたタスクナンバーの小さい順となる。その後、上記カプセル呼び出しメソッド順次呼び出すTSU2のメインメソッドが記述される。
【0249】
[4.1.7 組織化の様子の表示]
図20は、カプセル1の組織化の様子を表示した一例を示す図であり、カプセルジェネレータは、構造を表示するボタンを選択する事で、カプセル1同士の接続の全体構造を、ビジュアルに表現する機能を持っている。その際、図20のように常に20個のカプセル1が表示されるわけではなく、プロジェクトに含まれたカプセル1の数だけを表示する。また、各カプセル1の繋がりだけをデータとして保持するオブザーバーカプセルが存在する。
【0250】
プロジェクトファイルに追加されているカプセル1がアレイ状に表示され、プロジェクトにおけるカプセル間のつながり(カプセル1の公開データを、他のカプセルがデータ獲得メソッド12において取得していること)を線で繋ぐことで組織化の様子が表示される。
【0251】
具体的に、制御部21は、例えば、全カプセルのヘッダファイルから公開変数を定義するプログラムコードを検索することにより公開変数を取得した後、全カプセルのソースファイルのデータ獲得メソッドから、その公開変数を引継変数に代入するプログラムコードを検索することにより、カプセル間のつながりを検索し、その結果を表示部24に表示する。
【0252】
[4.2 コンピュータプログラムPのデバッグ時]
【0253】
次に、ターゲットボードBのマイクロコントローラMにて実行されているコンピュータプログラムPをカプセルアナライザ及びカプセルスコープを用いてデバッグする場合の動作について説明する。図21は、デバッグ時におけるマイクロコントローラMの処理の一例を示すフローチャートである。また、図22は、デバッグ時におけるマイクロコントローラM及び開発用端末Tの処理の一例を示すフローチャートである。
【0254】
ターゲットボードBの図示しない電源スイッチをユーザが押して、ターゲットボードBを起動させると、マイクロコントローラMは、ROMに記録されているプログラムPの
TSU2を実行する。
【0255】
TSU2において、マイクロコントローラMは、図21に示すように、全カプセル1を生成し、全カプセル1の各変数を初期化する(ステップS101)。
【0256】
そして、マイクロコントローラMは、コンテンツ1、コンテンツ2及びコンテンツ3用のタイムスロット値(以下、夫々、TS1、TS2、TS3と称する。)を0に初期化する(ステップS102)。
【0257】
次いで、マイクロコントローラMは、TSU組み込みにおいてコンテンツ0(100μ秒)に設定されたカプセル1のメインメソッド13を順番に実行する(ステップS103)。
【0258】
ここでは、各メインメソッド13をマイクロコントローラMが実行することにより、メインメソッド13からデータ獲得メソッド12が呼び出されて公開データを取得し、メインメソッド及び当該メソッドから呼び出されるメソッドにおいて、この取得された公開データに対してカプセル1ごとの機能に対応して予め設定された演算処理を行い、その結果の一部を、そのカプセル1の公開データとして公開データ部に設定する。
【0259】
そして、マイクロコントローラMは、ACC3(ステップS104)を実行するが、ACC3における動作については後述する。
【0260】
次いで、マイクロコントローラMは、コンテンツ1のカプセル1の中からTS1に設定されたタイムスロット値に対応するカプセル1のメインメソッド13を順番に実行する(ステップS105)。
【0261】
その後、マイクロコントローラMは、TS1が9以上であるか否かを判定し(ステップS106)、9未満である場合は(ステップS106:NO)、TS1に1を加算し(ステップS107)、コンテンツ0のカプセル1の実行、ACC3の実行、次のタイムスロット値に対応するコンテンツ1のカプセル1の実行を行う(ステップS103〜S105)。
【0262】
そして、ステップS106の判定において、TS1が9以上となった場合(ステップS106:YES)、マイクロコントローラMは、TS1に0を設定する(ステップS108)。
【0263】
次いで、マイクロコントローラMは、コンテンツ2についても同様に、TS2に設定されたタイムスロット値に対応するカプセル1の実行及びTS2が9以上であるか否かの判定を行い(ステップS109、S110)、TS2が9未満である場合は(ステップS110:NO)、TS2に1加算した後(ステップS111)、ステップS103に移行する。
【0264】
そして、TS2が9以上となった場合(ステップS110:YES)、マイクロコントローラMは、TS2に0を設定し(ステップS112)、コンテンツ3についても同様の処理を行う(ステップS113〜S116)。
【0265】
このようにして、カプセル1ごとに予め定められた周期で、ラウンドロビン方式でシーケンシャルに実行されるとともに、ACC3も所定周期で実行されることとなる。
【0266】
なお、上記の説明においては、カプセル1が呼び出される周期は4パターンであるが、パターン数を増減させても良い。
【0267】
また、コンテンツ0のカプセル1実行時にACC3を実行するのではなく、例えば、コンテンツ1のカプセル1実行時にACC3を実行しても良く、この場合、一定時間内におけるACC3呼び出し回数が10分の1となり、CPUの負荷が軽減される。
【0268】
ここで、開発用端末Tにおいて、ユーザが操作部25によりカプセルアナライザを起動させると、図22に示すように、制御部21は、表示部24にアナライザ画面180を表示し(ステップS301)、ターゲットボードBに対して、接続要求を送信する(ステップS302)。
【0269】
開発用端末Tとの通信は、ACC3において処理されるが(ステップS104)、具体的にマイクロコントローラMは、開発用端末Tと通信接続中か否か判定し(ステップS201)、接続中でない場合は(ステップS201:NO)、ステップS202に移行し、接続中である場合は(ステップS201:YES)、ステップS205に移行する。
【0270】
ステップS202において、マイクロコントローラMは、開発用端末Tからの接続要求を受信したか否かを判定し、受信していない場合は(ステップS202:NO)、ACC3の処理を終了し、受信した場合は(ステップS202:YES)、全カプセル1のカプセル名及び識別番号等を開発用端末Tに送信する(ステップS203)。
【0271】
開発用端末Tは、マイクロコントローラMから送信されたカプセル名及び識別番号を受信して、カプセル名をカプセル選択ボタン182に表示する(ステップS303)。
【0272】
そして、開発用端末Tは、選択するカプセル1の初期設定として、例えば、1番目に受信したカプセル1を選択し(ステップS304)、その識別番号をマイクロコントローラMに送信する(ステップS305)。
【0273】
マイクロコントローラMは、開発用端末Tから識別番号を受信したか否かを判定し(ステップS204)、受信した場合は(ステップS204:YES)、現在選択されているカプセル1を、受信した識別番号に対応するカプセル1に変更し(ステップS205)、ACM14の変数基本情報表示用メソッドを呼び出して、選択されたカプセル1の全データの変数名及びコメントを開発用端末Tに送信し(ステップS206)、ステップS208に移行する。
【0274】
一方、開発用端末Tから識別番号を受信していない場合(ステップS204:NO)、マイクロコントローラMは、現在いずれかのカプセル1が選択されているか否かを判定し(ステップS207)、選択されているカプセル1がある場合は(ステップS207:YES)、ステップS208に移行し、選択されていない場合は(ステップS207:NO)、ACC3の処理を終了する。
【0275】
開発用端末Tは、マイクロコントローラMから、選択されたカプセル1の変数名及びコメントを受信し、カプセル情報表示エリア183に表示する(ステップS306)。
【0276】
マイクロコントローラMは、ACM14の変数値一覧表示用メソッドを呼び出して、全データの現在の変数値を開発用端末Tに送信し(ステップS208)、ACC3の処理を終了する。
【0277】
開発用端末Tは、マイクロコントローラMから送信された変数値を受信して、カプセル情報表示エリア183に表示する(ステップS307)。
【0278】
そして、開発用端末Tは、ユーザの選択によりカプセルスコープが起動されているか否かを判定し(ステップS308)、起動されている場合は(ステップS308:YES)、受信した変数値により、グラフ表示エリア191に表示されているグラフを更新して再表示する(ステップS309)。
【0279】
次いで、開発用端末Tは、ユーザにより、いずれかのカプセル選択ボタン182が選択されたか否かを判定し(ステップS310)、選択された場合は(ステップS310:YES)、選択されたカプセル1の変数名、コメント、変数値を取得して、夫々表示していく(ステップS305〜S309)。
【0280】
一方、カプセル選択ボタン182が選択されていない場合(ステップS310:YES)、開発用端末Tは、ユーザによりメニューバー181から終了メニューが選択されたか否かを判定し(ステップS311)、選択されていない場合は(ステップS311:NO)、マイクロコントローラMから送信される変数値を順次表示していき(ステップS307〜S309)、選択された場合は、カプセルアナライザを終了させる。
【0281】
なお、マイクロコントローラMのCPU占有率を低下させつつ、リアルタイムに変数値をグラフ表示させる場合、マイクロコントローラMは、ACM14のグラフ表示用メソッドを呼び出して、現在の変数値をRAMに保存する。そして、グラフ表示用メソッドが500回呼び出されることにより、500回分の変数値が蓄積されたら、マイクロコントローラMは、これを一括して開発用端末Tに送信する。
【0282】
一方、開発用端末Tでは、マイクロコントローラMから一括して送信された変数値を受信し、この500回分の変数値により、グラフ表示エリア191に表示されているグラフを更新して再表示することとなる。
【実施例】
【0283】
次に、燃料電池を用いたコージェネレーションシステムに搭載された系統連係インバータを制御するマイクロコントローラに組み込まれたコンピュータプログラムの開発システムに本実施形態を適用した場合の実施例について説明する。
【0284】
コージェネレーションシステムは、都市ガス等の燃料ガスを改質器により水素に改質して燃料電池に供給し、燃料電池において水素と酸素とを反応させて発電するとともに、この発電による熱を利用して温水を供給する。そして、燃料電池で発電された電力を系統(または商用負荷)へ供給するために、これを昇圧し、直流から交流に変換する装置が系統連係インバータである。
【0285】
系統連係インバータにおいては、その供給電力によって系統に悪影響を及ぼさないように、系統の電圧変化に追従して電力供給を行うが、系統または系統連係インバータに異常が発生した場合には、電力供給を停止して系統を保護しなければならない。
【0286】
そこで、マイクロコントローラにより、系統連係インバータからの出力電圧を監視することにより系統連係インバータの異常の有無を感知して、系統への電力供給をオン/オフする系統リレーを制御させるのが、本実施例に係るコンピュータプログラムとしてのリレー制御プログラムである。
【0287】
先ず、本実施例に係る開発システムS1の構成について説明する。図23は、本実施例に係る開発システムS1の概要構成の一例を示すブロック図である。
【0288】
図23に示すように、開発システムS1は、大別して、系統連係インバータIと、開発用端末Tと、により構成されている。
【0289】
そして、系統連係インバータIは、コンバータ31と、インバータ32と、アイソレーションアンプ33と、レベルシフタ34と、駆動回路35と、系統リレー36と、マイクロコントローラM1と、により構成されている。
【0290】
コンバータ31は、燃料電池4から供給された数十V程度の低い直流電圧を、例えば、320V以上の直流電圧に昇圧し、インバータ32に供給する。
【0291】
インバータ32は、コンバータから供給された直流電力を、50Hzまたは60Hzの交流電力に変換し、これを出力電力として系統リレー36を介して系統5に供給するとともに、アイソレーションアンプ33にも供給する。インバータ32からの出力電圧値は、正常であれば200V程度(最小−280V〜最大+280V程度)である。
【0292】
アイソレーションアンプ33は、インバータ32から供給された交流電力を、マイクロコントローラM1に入力することができるように、例えば、100分の1程度に減衰し、レベルシフタ34に供給する。
【0293】
レベルシフタ34は、アイソレーションアンプ33から供給された交流電力を、例えば+5Vシフトさせ、これをマイクロコントローラM1に供給する。
【0294】
駆動回路35は、マイクロコントローラM1から供給される制御信号に基づいて、系統リレー36のスイッチを開閉させる駆動電流を系統リレー36に供給する。
【0295】
系統リレー36は、マイクロコントローラM1から供給される駆動電流に基づいてスイッチを開閉することにより、系統5に対して、インバータ32からの出力電力を供給し、または供給を停止する。
【0296】
マイクロコントローラM1は、CPU41と、データ等を一時的に記憶するRAM42と、各種プログラム(例えば、リレー制御プログラム等)等を記憶するフラッシュROM43と、外部から供給されたアナログ信号をデジタル値に変換するA/Dコンバータ45と、CPU41が周辺デバイスとのデータの交換を行うためのI/Oポート44と、開発用端末Tとの通信状態を制御する通信回路通信回路46と、を備え、システムバス47を介して相互に接続されている。
【0297】
マイクロコントローラM1は、CPU41が、フラッシュROM43に記録された各種プログラムを読み出し実行することにより、I/Oポート44を介してコンバータ31及びインバータ32を統括制御するとともに、レベルシフタ34から供給されたインバータ32の出力電圧をA/Dコンバータ45によりデジタル値に変換し、この情報に基づいて演算処理を行い、その結果に応じた制御信号をI/Oポート44を介して駆動回路35に供給することで、系統リレー36を制御する。
【0298】
次に、本実施例に係るリレー制御プログラムP1のカプセルの構成及び機能について説明する。図24は、本実施例に係るリレー制御プログラムP1のカプセル構成の一例を示す図である。
【0299】
リレー制御プログラムP1は、A/Dコンバータ45から入力した出力電圧の実効値を求めて、その実効値が、例えば、240V以上である場合には、系統5への電力供給を停止するよう、駆動回路35に制御信号を送信するためのプログラムである。
【0300】
リレー制御プログラムP1は、複数のカプセル1と、TSU2と、ACC3とにより構成されており、図24に示すように、センサカプセル1aと、フィルタカプセル1bと、周波数監視カプセル1cと、フィルタ係数選択カプセル1dと、全波整流カプセル1eと、平滑カプセル1fと、電圧監視カプセル1gと、リレー制御カプセル1hと、を有している。
【0301】
センサカプセル1aは、インバータ32の出力電圧値を読み取るためのプログラムである。
【0302】
具体的には、先ず、A/Dコンバータ45によりデジタル値に変換された出力電圧値を取得する。
【0303】
この出力電圧値は、アイソレーションアンプ33及びレベルシフタ34により+2.2V〜+7.8V程度に変換されているので、後の演算処理で扱いやすいように逆変換を行ってから(例えば、5V減算した後、100倍することにより、−280V〜+280V程度(系統連係インバータIが正常である場合)の電圧値にする)、公開データ部11に設定する。
【0304】
フィルタカプセル1bは、出力電圧信号から高周波ノイズを除去するためのプログラムである。
【0305】
具体的には、例えば、TSU2から呼び出されるごとに、センサカプセル1aの公開データである出力電圧値を取得・記憶するとともに、過去取得した一定個数の出力電圧値に対して、予め定められた重み付けに応じて、後述するフィルタ係数選択カプセル1dの公開データであるフィルタ係数を夫々の出力電圧値に乗じた後、その平均値を公開データ部11に設定する。
【0306】
周波数監視カプセル1cは、出力電圧の周波数(50Hzまたは60Hz)を監視し、これを公開するためのプログラムである。
【0307】
具体的には、フィルタカプセル1bで公開されているノイズ除去された出力電圧値を取得して0比較する。ここで出力電圧値が0である場合には、前回出力電圧値が0であった時からの経過時間を算出する(TSU2からの呼び出し回数と呼び出し周期により算出する)。そして、この経過時間に基づいて周波数を算出し公開データ部11に設定する。
【0308】
フィルタ係数選択カプセル1dは、出力電圧信号の周波数に応じて、信号からノイズ除去するためのフィルタ係数を決定する。
【0309】
具体的には、周波数監視カプセル1cの公開データである周波数を取得し、これに対応して予め定数として設定されているフィルタ係数をデータ公開部11に設定する。
【0310】
全波整流カプセル1eは、交流である出力電圧信号を直流に変換するためのプログラムである。
【0311】
具体的には、フィルタカプセル1bの公開データである出力電圧値を取得し、この出力電圧値の絶対値を整流電圧値として公開データ部11に設定する。
【0312】
平滑カプセル1fは、全波整流された出力電圧信号を平滑して、出力電圧の実行値を求めるためのプログラムである。
【0313】
具体的には、TSU2から呼び出されるごとに全波整流カプセル1eの公開データである整流電圧値を取得・記憶しておくとともに、周波数監視カプセル1cの公開データである周波数を取得して、この周波数の逆数である周期に対応するTSU2からの呼び出し回数分、過去に記憶しておいた整流電圧値の平均値を実効電圧値として公開データ部11に設定する。
【0314】
電圧監視カプセル1gは、出力電圧の異常を検出するためのプログラムである。
【0315】
具体的には、平滑カプセル1fの公開データである実効電圧値を取得し、この実行値が240V未満である場合は、アラーム値として、例えば、0(異常なしを意味する。)を公開データ部11に設定する。
【0316】
一方、実効電圧値が240V以上である場合は、その電圧値を異常と判定し、連続して電圧値が240V以上となった回数をカウントする。そして、カウントされた回数が、例えば、1秒分の回数に達した場合には、アラーム値として、例えば、1(異常ありを意味する。)を公開データ部11に設定する。
【0317】
リレー制御カプセル1hは、出力電圧の実行値が異常である場合に、系統リレー36のスイッチをオフさせる制御信号を、I/Oポート44を介して駆動回路35に送信するためのプログラムである。
【0318】
具体的には、電圧監視カプセル1gの公開データであるアラーム値を取得し、このアラーム値に対応して制御信号を送信するためのデータをI/Oポート44の所定のアドレスに出力する。
【0319】
次に、本実施例に係るリレー制御プログラムP1の作成方法の概要について説明する。
【0320】
上記のような機能を有するカプセルを作成するために、カプセルジェネレータの新規カプセル作成ボックス102により、各カプセルのヘッダファイル及びソースファイルを生成した。
【0321】
そして、データ公開部11に設定される公開データについて、公開用変数設定ウインドウにより公開データ用のプログラムコードを追加し、データ獲得メソッド12により取得するデータについては、データ獲得用変数設定ウインドウによりデータ獲得用のプログラムコードを追加した。その際、コメント名、変数名、データ型及び初期値は適宜設定した。
【0322】
次に、各カプセルの機能仕様に基づきメインメソッドのプログラムコードをソース編集エリアに対して入力することにより追加し、各カプセルのプログラムコードを作成した。その際、内部変数及び新規メソッドは適宜追加した。
【0323】
そして、各カプセルのヘッダファイル及びソースファイルを保存するとともに、TSU2への組み込みの際には、呼び出し周期をそれぞれ100μ秒とした。
【0324】
最後に、各カプセルをプロジェクトに追加した後、コンパイルすることにより、マイクロコントローラM1が実行可能であるリレー制御プログラムP1が生成された。
【0325】
次に、系統連係インバータIの動作について説明する。
【0326】
燃料電池4から供給された低電圧の電力をコンバータ31が昇圧した後、インバータ32が周波数50Hzまたは60Hzの交流に変換し、出力電力としてアイソレーションアンプ33及び系統リレー36に供給する。
【0327】
アイソレーションアンプ33は、供給された出力電圧を100分の1に減衰し、レベルシフタ34に供給すると、レベルシフタ34は、これを更に+5VレベルシフトしてマイクロコントローラM1のA/Dコンバータ45に供給する。
【0328】
マイクロコントローラM1は、リレー制御プログラムP1を実行することにより、TSU2からカプセル1a〜1hをシーケンシャルに呼び出し実行する。
【0329】
具体的に、マイクロコントローラM1は、センサカプセル1aにおいて、A/Dコンバータ45によりデジタル値に変換された出力電圧値を取得・変換し、フィルタカプセル1bにおいて、高周波ノイズを除去する。
【0330】
そして、周波数監視カプセル1cにおいて、ノイズ除去された電圧値に基づき現在の周波数を取得し、フィルタ係数選択カプセル1dにおいて、この周波数に基づきフィルタ係数を選択すると、次周期のフィルタカプセル1bにおける演算処理にフィードバックされる。
【0331】
次いで、マイクロコントローラM1は、ノイズ除去された電圧値を、全波整流カプセル1eにより絶対値に変換し、平滑カプセル1fにより電圧実効値を求める。
【0332】
そして、マイクロコントローラM1は、電圧監視カプセル1gにより、電圧実行値が異常であるか否かを判定することによりアラーム値を設定し、このアラーム値に基づいて、リレー制御カプセル1gによりI/Oポート44を介して制御信号を駆動回路35に供給する。
【0333】
マイクロコントローラM1は、上記のような演算処理を、TSU2から100μ秒周期で繰り返し実行することにより、各カプセルを並列的に実行するのである。
【0334】
駆動回路35は、マイクロコントローラM1から供給された制御信号に応じて駆動電流を系統リレー36に供給し、系統リレー36は、この駆動電流に基づいてスイッチを開閉する。
【0335】
ここで、インバータ32の出力電圧の実行値が240V未満である場合は、系統リレー36のスイッチはオンとなり、系統5に対して電力が供給される。
【0336】
一方、インバータ32の出力電圧の実行値が1秒間以上継続して240V以上となった場合は、系統リレー36のスイッチはオフとなり、系統5に対する電力の供給が停止する。
【0337】
このように、本実施例においては、ごく単純な機能を持たせた複数のカプセル1を集合させることにより、系統連係インバータIの系統リレーの制御という機能を比較的簡単に実現することができた。
【0338】
また、データ公開部11によるデータの公開とデータ獲得メソッド12によるデータの獲得という規則に基づき設計された各カプセル1は、他のカプセル1の処理からは独立しているため、例えば、機能追加するような場合でも、基本的に既存のカプセル1を変更する必要はなく、機能追加に必要なカプセル1を新たに追加すれば良い。
【0339】
次に、マイクロコントローラM1によるリレー制御プログラムP1の実行を、開発用端末Tのカプセルアナライザにより監視し、カプセルスコープによりグラフ表示させた結果について説明する。図25は、各カプセルの公開データをグラフ表示させた結果の一例を示す図であり、(a)は出力電圧値であり、(b)はノイズ除去された出力電圧値であり、(c)は整流電圧値であり、(d)は実効電圧値であり、(e)はアラーム値である。
【0340】
図25に示すように、カプセルスコープにより、出力電圧の波形、これをノイズ除去した波形、更に全波整流した波形、平滑した波形等をリアルタイムに表示することにより、現在の各カプセル1のメインメソッド13における演算処理の状況を一目で把握することができる。
【0341】
ここで、例えば、フィルタカプセル1bに問題があり、その公開データである出力電圧値が0になってしまったような場合には、全波整流カプセル1e乃至リレー制御カプセル1fにおいて設定されるデータの内容も異常な値となり、インバータ32の出力電圧の正常異常にかかわらず、常に系統5へ電力供給される。
【0342】
もし、ICE等を用いてデバッグを行った場合には、フィルタカプセル1bのメインメソッド13の所定のプログラムコードでブレークポイントを設定し、監視登録をすることにより、リレー制御プログラムP1の実行を停止させて、ノイズ除去された出力電圧値を表示させることとなるが、表示された値が0であったとしても、それだけでは、リレー制御プログラムP1が正常であるか否かは判断することはできないし、仮に、異常であると判断することができたとしても、その原因がフィルタカプセル1bにあるのか、またはセンサカプセル1aにあるのかを判断することはできない。
【0343】
そして、その原因がどこにあるかを探るためにリレー制御プログラムP1の実行を再開させたとしても、プログラムP1を停止している間に系統連係インバータIの状態が変化することにより、フィルタカプセル1bにおいて設定される出力電圧値が正常な値に戻ってしまった場合には、原因を追究することができない可能性もある。
【0344】
また、リレー制御プログラムP1の停止中に系統連係インバータIに異常が発生し、インバータ32の出力電圧が異常となった場合には、系統5に異常電圧の電力が供給されることで、系統5に悪影響を及ぼすこととなる。
【0345】
これに対し、本実施例においては、図25(a)に示すように、センサカプセル1aの公開データである出力電圧値が正常を示す波形を維持しているのに対し、図25(b)に示すように、ノイズ除去されたはずの出力電圧の正弦波形が脱落しているのが分かる。
【0346】
このようにして、フィルタカプセル1bに問題があることを的確に判断することが可能となる。
【0347】
以上説明したように、本実施形態によれば、各カプセル1が、マイクロコントローラMを、他のカプセル1から取得可能である公開データが設定される公開データ領域手段としてのデータ公開部11、他のカプセル1におけるデータ公開部11に設定された公開データをデータ獲得メソッド12において取得する公開データ取得手段、データ獲得メソッド12において取得された公開データに対して予め定められた演算処理を実行するとともに、当該演算処理により得られた結果の少なくとも一部を公開データとしてデータ公開部11に設定する主処理手段、及び所定周期ごとにおけるメインメソッド13における演算処理の状況をACM14において提供する状況提供手段、として機能させる同一構造を有している。
【0348】
従って、カプセル1が、データ公開部11によるデータの公開と、データ獲得メソッド12によるデータの取得という規則を有し、この規則に基づいてメインメソッドにおいて演算処理を実行するため、データの安全性が確保される。
【0349】
しかも、各カプセル1は、他のカプセル1の処理に依存することなく、公開されているデータを自ら取得して演算処理を行い、その結果の少なくとも一部を公開するという、単純化された同一構造を有しているので、設計上のミスが生じ難くなり、コンピュータプログラムPとしての信頼性が向上する。
【0350】
また、マイクロコントローラMのメインメソッドにおける演算処理の状況を、カプセルアナライザを実行する開発用端末によりリアルタイムに送信された演算処理の状況を順次表示することにより、コンピュータプログラムPの実行を停止させることなく外部からリアルタイムに監視することが可能となるACM14を各カプセル1自身が予め有しているので、特に組み込みシステムSにおけるコンピュータプログラムPのデバッグが容易となる。
【0351】
また、カプセルアナライザにおいて、ユーザに所望のカプセル1を選択させることにより、開発用端末Tが、カプセル1の識別番号をマイクロコントローラMに送信し、マイクロコントローラMが、コンピュータプログラムPのACC3において識別情報を受信し、当該識別番号が示すカプセル1におけるACM14による処理を所定周期ごとに実行させることにより、メインメソッド13における演算処理の状況を開発用端末Tに送信し、開発用端末Tは、この演算処理の状況を受信して、表示部24に順次表示するので、所望のカプセル1に特化したデバッグが可能となる。
【0352】
このように、ソフトウエアの信頼性や品質の向上については、カプセルを動作させながら検証するための仕組みが備わっている。カプセル1内部にACM14があり、ACM14は、外部のカプセルアナライザとコミニケーションし、カプセル1の変数の状態をリアルタイムにカプセルアナライザへ送る。開発者は、カプセルアナライザに表示される内容を確認し、追跡して、不具合箇所を修正することができる。
【0353】
また、開発用端末Tが、メインメソッド13における演算処理の状況を時系列で、しかも視覚的に解りやすいようにグラフ表示することにより、カプセル1に問題があるか否かを一目で判断することが可能となる。
【0354】
また、コンピュータプログラムPは、カプセル1ごとに予め定められた周期で、当該各カプセル1のメインメソッド13における演算処理を順次繰り返して実行させるTSU2を有しているので、各カプセル1のメインメソッド13における演算処理が、例えば、1μ秒周期でシーケンシャルに繰り返し実行されるという、より単純化された実行規則により並列的な処理が行われるので、コンピュータプログラムPの設計、検証等が容易となる。
【0355】
また、本実施形態によれば、開発用端末Tがカプセルジェネレータにより、ユーザにより入力された公開データの変数の型、変数名、初期値、コメント等の定義情報に基づいて、当該公開データを定義するプログラムコードを生成する定義コード生成し、ユーザにより入力された変数名等の指定情報に基づいて、データ獲得メソッド12のプログラムコードを生成し、ユーザにより入力されたプログラムコードに基づいて、メインメソッド13のプログラムコードを生成し、定義情報及び指定情報等に基づいて公開変数、引継変数及び内部変数用のACM14のプログラムコードを生成する。
【0356】
従って、データ公開部11、データ獲得メソッド12及びメインメソッド13を有するカプセル1のプログラムコードを容易に作成することができるとともに、ACM14のプログラムコードが自動的に生成されるので、人手によりデバッグ用のプログラムコードをカプセルプログラムごとに作成するという手間を大幅に削減することが可能となる。
【0357】
なお、本実施形態においては、コンピュータプログラムPをC++言語で開発していたが、同様に各変数及びメソッドを上述しようにカプセル化することができるのであれば、例えば、C言語等の非オブジェクト指向言語で開発しても良い。
【0358】
また、本実施形態においては、コンピュータプログラムPを、組み込みシステムに用いられる組み込み型プログラムに適用していたが、他のシステムに適用しても良い。
【0359】
このように、本発明は、上記実施形態に限定されるものではない。上記実施形態は、例示であり、本発明の請求の範囲に記載された技術的思想と実質的に同一な構成を有し、同様な作用効果を奏するものは、いかなるものであっても本発明の技術的範囲に包含される。
【0360】
また、2004年10月19日に出願された明細書、特許請求の範囲、図面、要約を含む日本の特許出願(No. 2004-332430)の全ての開示は、その全てを参照することよって、ここに組み込まれる。
Claims (7)
- 同一構造を有する複数のカプセルプログラムの集合と、第1のコンピュータによる前記カプセルプログラムの実行を制御するための実行制御プログラムと、により構成され、且つ、前記第1のコンピュータにより実行されるコンピュータプログラムであって、
各前記カプセルプログラムは、
他の前記カプセルプログラムから取得可能である公開データが設定される公開データ領域手段として前記第1のコンピュータを機能させる公開データ部と、
他の前記カプセルプログラムにおける前記公開データ領域手段に設定された前記公開データを取得する公開データ取得手段として前記第1のコンピュータを機能させる公開データ取得部と、
前記公開データ取得手段により前記公開データを取得させて、当該公開データに対して予め定められた演算処理を実行するとともに、当該演算処理により得られた結果の少なくとも一部を前記公開データとして前記公開データ領域手段に設定する主処理手段として前記第1のコンピュータを機能させる主処理部と、
により構成される構造を有し、
前記複数のカプセルプログラムの実行単位は、繰り返し実行周期内における所定時間の経過ごとに対応して設定され、
前記各カプセルプログラムは、夫々に設定された実行周期に基づいて複数の前記実行単位のうち少なくとも一つに対して夫々割り当てられ、
前記実行制御プログラムは、前記所定時間が経過するごとに前記対応する実行単位に割り当てられた前記カプセルプログラムの前記主処理部を実行するとともに、その実行を繰り返し行う実行制御手段として前記第1のコンピュータを機能させるコンピュータプログラムを生成するプログラム生成装置に含まれる第2のコンピュータにより実行されるプログラム生成処理プログラムにおいて、
前記第2のコンピュータを、
前記カプセルプログラムごとに、そのプログラムコードを生成するカプセルコード生成手段、及び、
入力手段を介してユーザにより入力された、前記カプセルプログラムごとの前記実行周期を示す実行周期情報に基づいて、前記実行制御プログラムのプログラムコードを生成する実行制御コード生成手段、として機能させ、
前記カプセルコード生成手段としての前記第2のコンピュータを、
前記入力手段を介してユーザにより入力された、前記公開データ領域手段に設定される公開データの定義内容を示す定義情報に基づいて、当該公開データ部のプログラムコードを生成する定義コード生成手段、
他の前記カプセルプログラムにおいて定義された前記公開データのうち、前記入力手段を介してユーザにより選択された前記公開データを取得する前記公開データ取得部のプログラムコードを生成する取得コード生成手段、及び、
前記入力手段を介してユーザにより入力されたプログラムコードを含めて、前記主処理部のプログラムコードを生成する主処理コード生成手段、
として機能させることを特徴とするプログラム生成処理プログラム。 - 請求項1に記載のプログラム生成処理プログラムにおいて、
前記各カプセルプログラムは、前記公開データ部と、前記公開データ取得部と、前記主処理部と、前記公開データに係る情報を含む、所定周期ごとにおける前記主処理手段による前記演算処理の状況を示す状況情報を、前記コンピュータプログラムの処理状況を表示する状況表示装置に送信する状況送信手段として前記第1のコンピュータを機能させる状況送信部と、により構成される構造を有し、
前記公開データを定義するプログラムコードの生成に用いられた前記定義情報に基づいて、当該公開データに係る情報を含む前記状況情報を前記状況表示装置に送信するための前記状況送信部のプログラムコードを生成する状況送信コード生成手段として、前記カプ セルコード生成手段としての前記第2のコンピュータを更に機能させることを特徴とするプログラム生成処理プログラム。 - 請求項2に記載のプログラム生成処理プログラムにおいて、
前記コンピュータプログラムは、前記複数のカプセルプログラムの集合と、前記実行制御プログラムと、少なくとも一の前記カプセルプログラムの選択を示す選択情報を取得し、当該選択された前記カプセルプログラムの前記状況送信部を実行する状況送信選択実行手段として前記第1のコンピュータを機能させる状況送信選択実行プログラムと、により構成され、
前記実行制御手段は、前記状況送信選択実行プログラムを前記所定周期ごとに実行し、
前記状況送信選択実行プログラムのプログラムコードを生成する状況送信選択実行コード生成手段として、前記第2のコンピュータを更に機能させることを特徴とするプログラム生成処理プログラム。 - 請求項3に記載のプログラム生成処理プログラムにおいて、
前記状況送信手段としての前記第1のコンピュータを、
前記状況送信選択実行手段により実行させられたごとに前記状況情報を蓄積する状況蓄積手段、及び、
前記蓄積された前記状況情報を一括して前記状況表示装置に送信する状況一括送信手段、
として機能させることを特徴とするプログラム生成処理プログラム。 - 請求項2乃至4の何れか1項に記載のプログラム生成処理プログラムにおいて、
前記選択された公開データに係る情報を含む前記状況情報を前記状況表示装置に送信するための前記状況送信部のプログラムコードを生成するように前記状況送信コード生成手段としての前記第2のコンピュータを機能させることを特徴とするプログラム生成処理プログラム。 - 同一構造を有する複数のカプセルプログラムの集合と、第1のコンピュータによる前記カプセルプログラムの実行を制御するための実行制御プログラムと、により構成され、且つ、前記第1のコンピュータにより実行されるコンピュータプログラムであって、
各前記カプセルプログラムは、
他の前記カプセルプログラムから取得可能である公開データが設定される公開データ領域手段として前記第1のコンピュータを機能させる公開データ部と、
他の前記カプセルプログラムにおける前記公開データ領域手段に設定された前記公開データを取得する公開データ取得手段として前記第1のコンピュータを機能させる公開データ取得部と、
前記公開データ取得手段により前記公開データを取得させて、当該公開データに対して予め定められた演算処理を実行するとともに、当該演算処理により得られた結果の少なくとも一部を前記公開データとして前記公開データ領域手段に設定する主処理手段として前記第1のコンピュータを機能させる主処理部と、
により構成される構造を有し、
前記複数のカプセルプログラムの実行単位は、繰り返し実行周期内における所定時間の経過ごとに対応して設定され、
前記各カプセルプログラムは、夫々に設定された実行周期に基づいて複数の前記実行単位のうち少なくとも一つに対して夫々割り当てられ、
前記実行制御プログラムは、前記所定時間が経過するごとに前記対応する実行単位に割り当てられた前記カプセルプログラムの前記主処理部を実行するとともに、その実行を繰り返し行う実行制御手段として前記第1のコンピュータを機能させるコンピュータプログラムを生成するプログラム生成装置におけるプログラムコード生成方法において、
前記カプセルプログラムごとに、そのプログラムコードを前記プログラム生成装置のカプセルコード生成手段が生成するカプセルコード生成工程と、
入力手段を介してユーザにより入力された、前記カプセルプログラムごとの前記実行周期を示す実行周期情報に基づいて、前記実行制御プログラムのプログラムコードを前記プログラム生成装置の実行制御コード生成手段が生成する実行制御コード生成工程と、を備え、
前記カプセルコード生成工程は、
前記入力手段を介してユーザにより入力された、前記公開データ領域手段に設定される公開データの定義内容を示す定義情報に基づいて、当該公開データ部のプログラムコードを前記プログラム生成装置の定義コード生成手段が生成する定義コード生成工程と、
他の前記カプセルプログラムにおいて定義された前記公開データのうち、前記入力手段を介してユーザにより選択された前記公開データを取得する前記公開データ取得部のプログラムコードを前記プログラム生成装置の取得コード生成手段が生成する取得コード生成工程と、
前記入力手段を介してユーザにより入力されたプログラムコードを含めて、前記主処理部のプログラムコードを前記プログラム生成装置の主処理コード生成手段が生成する主処理コード生成工程と、
を備えることを特徴とするプログラムコード生成方法。 - 請求項1乃至5の何れか1項に記載のプログラム生成処理プログラムを実行するプログラム生成装置であって、
前記カプセルコード生成手段、及び、前記実行制御コード生成手段を備えることを特徴とするプログラム生成装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004332430 | 2004-10-19 | ||
JP2004332430 | 2004-10-19 | ||
PCT/JP2005/018962 WO2006043480A1 (ja) | 2004-10-19 | 2005-10-14 | コンピュータプログラム、プログラム実行装置、プログラム生成処理プログラム、状況表示処理プログラム等 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP4054836B2 true JP4054836B2 (ja) | 2008-03-05 |
JPWO2006043480A1 JPWO2006043480A1 (ja) | 2008-05-22 |
Family
ID=36202897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006542947A Expired - Fee Related JP4054836B2 (ja) | 2004-10-19 | 2005-10-14 | プログラム生成処理プログラム、プログラムコード生成方法及びプログラム生成装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20080092114A1 (ja) |
JP (1) | JP4054836B2 (ja) |
WO (1) | WO2006043480A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8533689B2 (en) * | 2008-10-10 | 2013-09-10 | The Boeing Company | Method, apparatus and computer program product for creating inter-language interface |
JP5465745B2 (ja) * | 2012-03-23 | 2014-04-09 | 株式会社エヌ・ティ・ティ・データ | プログラム処理方法およびそのシステム |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03294926A (ja) * | 1990-04-12 | 1991-12-26 | Nissan Motor Co Ltd | プログラム開発支援装置 |
DE69317982T2 (de) * | 1992-10-09 | 1998-11-19 | Sun Microsystems, Inc., Mountain View, Calif. 94043-1100 | Verfahren und Anlage zur Realzeitdatensammlung und Anzeigevorrichtung |
JPH08314752A (ja) * | 1995-05-17 | 1996-11-29 | Ricoh Co Ltd | オブジェクト指向システムの開発支援装置 |
JPH0916382A (ja) * | 1995-06-30 | 1997-01-17 | Oki Electric Ind Co Ltd | プログラム開発支援システム |
US6718533B1 (en) * | 1999-02-26 | 2004-04-06 | Real-Time Innovations, Inc. | Method for building a real-time control system with mode and logical rate |
US7320121B2 (en) * | 2002-08-01 | 2008-01-15 | Sas Institute Inc. | Computer-implemented system and method for generating embedded code to add functionality to a user application |
US7441233B1 (en) * | 2002-12-20 | 2008-10-21 | Borland Software Corporation | System and method providing status indication for long-running modal tasks |
-
2005
- 2005-10-14 WO PCT/JP2005/018962 patent/WO2006043480A1/ja active Application Filing
- 2005-10-14 JP JP2006542947A patent/JP4054836B2/ja not_active Expired - Fee Related
- 2005-10-14 US US11/665,743 patent/US20080092114A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JPWO2006043480A1 (ja) | 2008-05-22 |
US20080092114A1 (en) | 2008-04-17 |
WO2006043480A1 (ja) | 2006-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112817872B (zh) | 开发测试系统及方法 | |
Wasserman et al. | The future of programming | |
US7979841B2 (en) | Programmatically determining calling information of a graphical program | |
CN108345265B (zh) | 硬件设备的编程方法、可视化编程平台、存储器和处理器 | |
US20060036799A1 (en) | Multi-platform development and execution of graphical programs | |
EP1734442A1 (en) | Modular code generation | |
US8117588B2 (en) | Spatial iteration node for a graphical program | |
WO2006071918A2 (en) | Architecture for control systems | |
US7568178B2 (en) | System simulation and graphical data flow programming in a common environment using wire data flow | |
CN107209490B (zh) | 供在工业控制环境中使用的控制层应用的供应 | |
CN106980597B (zh) | 片上系统验证方法及验证系统 | |
US8103914B2 (en) | Test file generation device and test file generation method | |
US6275955B1 (en) | Diagnostic software for facilitating flowchart programming | |
US7647578B2 (en) | Programmatic creation and management of tasks in a graphical program | |
JP4054836B2 (ja) | プログラム生成処理プログラム、プログラムコード生成方法及びプログラム生成装置 | |
Bicchierai et al. | Combining UML-MARTE and preemptive time Petri nets: An industrial case study | |
Ferreira et al. | Test coverage analysis of UML state machines | |
CN116737803B (zh) | 一种基于有向无环图的可视化数据挖掘编排方法 | |
Iida et al. | Hakoniwa: Monitor and navigation system for cooperative development based on activity sequence model | |
Hussein et al. | Scenario-based validation of requirements for context-aware adaptive services | |
JP4702194B2 (ja) | プログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラム | |
CN111078444A (zh) | 用于故障行为的安全分析的系统和方法 | |
Hartmann et al. | A UML-based approach for validating product lines | |
JP5212508B2 (ja) | デバッグ装置 | |
Kotzian et al. | Can based distributed control system modeling using UML |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20071120 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071210 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101214 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313117 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101214 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111214 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111214 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121214 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121214 Year of fee payment: 5 |
|
S201 | Request for registration of exclusive licence |
Free format text: JAPANESE INTERMEDIATE CODE: R314201 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121214 Year of fee payment: 5 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131214 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |