【文献】
松本 英彦,統合プラットフォームと最新のFA機器・産業加工機,三菱電機技報,三菱電機エンジニアリング株式会社,2007年 4月25日,第81巻/第4号,pp.29−32
(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
現在、多くの産業機器や民生機器に組み込みシステムが使用されている。組み込みシステムは特定の機能を実現するためのコンピュータシステムの総称であり、特に特定の機能を実現するための必要十分条件を満たす、選択および交換不可能なハードウエアとプログラムで構成されるコンピュータシステムであると言ってもよい。
【0003】
組み込みシステムのソフトウエア開発の流れの一例は大まかには以下の通りである。(1)プログラム構成の作成(2)プログラムのモジュール化と詳細仕様の作成(3)モジュールごとの設計(4)試作機による各モジュールの検証(5)モジュールごとの変更・修正(6)試作機によるプログラム全体の検証(7)プログラム全体の最終的な変更・修正。
【0004】
組み込みシステムのソフトウエアの開発は、通常、PC(Personal Computer)などを使用して行われ、開発されたソフトウエアはPCとは異なるターゲットハードウエアに導入され実行される。ソフトウエアの開発環境は一般に、C言語などの高級言語やアセンブリ言語によりソースプログラムを記述するためのエディタと、ソースプログラムをターゲットハードウエアのCPU(Central Processing Unit)に対応した機械語プログラムに変換するためのコンパイラと、を有する。
【0005】
本出願人は、プログラム開発効率の向上を目指して、特許文献1に記載される図的プログラム開発環境を提案している。この環境では、制御内容の図式化を伴う図的プログラミング言語が使用されている。
【発明の概要】
【発明が解決しようとする課題】
【0008】
このように組み込みシステムのソフトウエア開発では多くの種類のプログラミング言語が利用可能であり、それらが混在する状況も発生しうる。多数のプログラミング言語により記述された多数のプログラムから、ターゲットにダウンロードすべきプログラムを生成するためのひとつの手法は、リンケージエディタを使用してそれらのプログラムを静的にリンクさせることである。すなわち、多数のプログラムのそれぞれを対応するコンパイラまたはアセンブラにより処理し、得られるオブジェクトファイル(中間ファイル)全てをひとつのファイル(実行ファイル)に結合する。
【0009】
例えば、C言語とアセンブリ言語とが混在する場合、汎用のエディタを使用して、C言語により記述されたCソースプログラムとアセンブリ言語により記述されたアセンブラソースプログラムとを作成する。CソースプログラムをC言語のコンパイラで処理することにより第1中間ファイルを生成する。また、アセンブラソースプログラムをアセンブラで処理することにより、第2中間ファイルを生成する。そしてリンケージエディタを使用して第1中間ファイルと第2中間ファイルとを結合し、ひとつの実行ファイルを生成する。
【0010】
しかしながらこの場合、生成される実行ファイルは一括となり各モジュールの差し替えは難しい。したがって、オプション等のモジュール化は困難である。
【0011】
また例えば、特許文献1に記載されるような図的プログラミング言語を主として使用する開発環境において、C言語により開発された実績のあるプログラムを再利用しようとする場合、ユーザはそのプログラムを図的プログラミング言語により書き直す必要がある。しかしながら、このような書き直しは手間であり、また書き直す過程でミスが発生しうる。したがって、ユーザは、図的プログラミング言語以外のC言語等により記述されたプログラムを資産として保有していても、それを有効に活用しにくい。
【0012】
このような課題に対して、例えば非特許文献1に記載されるように組み込みシステムに多数のCPUを設けること(マルチCPUシステム)で対応することも考えられる。しかしながらこの場合、各言語を実行するユニットは分離されており、それらを密に結合させる構成をとることは困難である。したがって、複数の言語間での高速な相互アクセスを実現しにくい。
【0013】
本発明はこうした課題に鑑みてなされたものであり、その目的は、組み込みシステムのソフトウエアの開発環境において図的プログラミング言語とC言語等のテキスト形式のプログラミング言語とを併用可能とする実行環境の提供にある。
【課題を解決するための手段】
【0014】
本発明のある態様は制御装置に関する。この制御装置は、組み込みシステムの制御装置であって、制御内容の図式化を伴うプログラミング言語を使用して生成され、本制御装置によって実行可能な第1プログラムが配置される第1領域と、テキスト形式のプログラミング言語を使用して生成され、本制御装置によって実行可能な第2プログラムが配置される第2領域と、第1プログラムのリソースに関する第1リソース情報および第2プログラムのリソースに関する第2リソース情報を保持するミドルウエアが配置される第3領域と、を含むメモリと、第1プログラムおよび第2プログラムによって共用される演算装置と、を備える。第1プログラムまたは第2プログラムのいずれか一方のプログラムは他方のプログラムのリソースを使用する。ミドルウエアは、一方のプログラムからの他方のプログラムのリソースへのアクセスを仲介する。
【0015】
この態様によると、制御装置において第1プログラムと第2プログラムとを共存させることができる。
【0016】
なお、以上の構成要素の任意の組み合わせや、本発明の構成要素や表現を装置、方法、システム、コンピュータプログラム、コンピュータプログラムを格納した記録媒体などの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【0017】
本発明によれば、組み込みシステムのソフトウエアの開発環境において図的プログラミング言語とC言語等のテキスト形式のプログラミング言語とを併用可能とする実行環境を提供できる。
【発明を実施するための形態】
【0019】
以下、各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。
【0020】
実施の形態に係る組み込みシステムの制御装置には、図的プログラミング言語を使用して生成される実行プログラムとC言語等のテキスト形式のプログラミング言語を使用して生成される実行プログラムとの間の相互のリソース(例えば、変数や関数など)アクセスを提供するミドルウエアが導入される。このミドルウエアは、各実行プログラムのメモリ配置を実施することにより、両方の実行プログラムのリソース情報を管理する。
【0021】
これにより、開発環境の側では、各プログラミング言語により記述されたソースプログラムを実行ファイルに変換し、そのまま制御装置にダウンロードすることが可能となる。その結果、C言語で記述されたソースプログラムを図的プログラミング言語で書き直す必要がなくなるので、ユーザは図的プログラミング言語を使用することによるプログラム開発の高効率化の恩恵を享受しつつ、既存のプログラム資産をより有効に活用できる。
【0022】
図1は、実施の形態に係る組み込みシステムの制御装置100に導入されるプログラムの開発から実装までの流れを示す模式図である。この流れはホストPC上の開発環境2とターゲット上の実行環境4とにより実現される。
【0023】
開発環境2は、図的エディタ6と、図的コンパイラ10と、第1Cコンパイラ14と、Cエディタ18と、第2Cコンパイラ22と、を含む。
図的エディタ6は制御内容の図式化を伴う図的プログラミング言語を使用するエディタである。ユーザは、図的エディタ6を使用して、所望の制御内容が記述された図的ソースプログラム8を生成する。この際、ユーザは、図的ソースプログラム8に第2Cソースプログラム20のリソースへの参照を含めてもよい。図的コンパイラ10は図的ソースプログラム8をC言語で記述された第1Cソースプログラム12に変換する。図的エディタ6、図的ソースプログラム8、図的コンパイラ10に係る処理は、例えば特許文献1に記載される技術に基づき実現されてもよい。
【0024】
第1Cコンパイラ14は公知のC言語コンパイラであり、第1Cソースプログラム12を、制御装置100で実行可能な形式のオブジェクトファイルである図的実行ファイル16に変換する。図的コンパイラ10および第1Cコンパイラ14は協働して、図的実行ファイル16のリソースに関する図的リソース情報を図的実行ファイル16に組み込む。
【0025】
Cエディタ18は公知のテキストエディタである。ユーザはCエディタ18を使用して所望の制御内容をC言語で記述した第2Cソースプログラム20を生成する。
第2Cコンパイラ22は公知のC言語コンパイラであり、第2Cソースプログラム20を、制御装置100で実行可能な形式のオブジェクトファイルであるC実行ファイル24に変換する。第2Cコンパイラ22は、C実行ファイル24のシンボルに関するシンボル情報(例えば、シンボルテーブル)をC実行ファイル24に組み込む。
【0026】
実行環境4は実施の形態に係る組み込みシステムの制御装置100を含む。制御装置100は、メモリ102と、CPU104と、入出力インタフェース106と、それらを制御装置100内で互いに接続する制御装置バス108と、を備える。
【0027】
メモリ102は、図的実行ファイル16に対応する図的実行プログラム110が配置される第1領域と、C実行ファイル24に対応するC実行プログラム114が配置される第2領域と、図的実行プログラム110の図的リソース情報およびC実行プログラム114のシンボル情報を保持するミドルウエア112が配置される第3領域と、を含む。
【0028】
CPU104は図的実行プログラム110、C実行プログラム114およびミドルウエア112によって共用され、そのそれぞれに基づいて処理動作を行う。CPU104は、図的実行プログラム110、C実行プログラム114およびミドルウエア112のそれぞれに含まれる命令の流れにしたがって所定の処理を行う。
入出力インタフェース106は、制御装置100と制御装置100の外部の装置との間のデータの入出力を制御する。
【0029】
以下、(1)図的実行プログラム110がC実行プログラム114のリソースを使用する場合、(2)C実行プログラム114が図的実行プログラム110のリソースを使用する場合、のそれぞれについてミドルウエア112の機能を説明する。
【0030】
(1)図的実行プログラム110がC実行プログラム114のリソースを使用する場合、ミドルウエア112は図的実行プログラム110からのC実行プログラム114のリソースへのアクセスを仲介する。
【0031】
C実行ファイル24が制御装置100にダウンロードされてくると、ミドルウエア112は、C実行ファイル24に対応するC実行プログラム114をメモリ102の第2領域に配置する。この際、ミドルウエア112は、C実行ファイル24に組み込まれているC実行ファイル24のシンボル情報を取得する。
【0032】
図的実行ファイル16が制御装置100にダウンロードされてくると、ミドルウエア112は、図的実行ファイル16に対応する図的実行プログラム110をメモリ102の第1領域に配置する。この際、ミドルウエア112は、図的実行プログラム110におけるC実行プログラム114のリソースへのアクセスを、対応するシンボル情報で置き換える。すなわち、ミドルウエア112は、図的実行プログラム110にC実行プログラム114のリソースへのアクセスが含まれている場合、取得されたシンボル情報のなかからそのリソースに対応するシンボル情報を抽出する。ミドルウエア112は、図的実行プログラム110に含まれる、C実行プログラム114のリソースへのアクセスを抽出されたシンボル情報で置き換える。
【0033】
このように、ミドルウエア112は図的実行ファイル16のダウンロードの段階で、図的実行プログラム110からのC実行プログラム114のリソースへのアクセスを仲介する。なお、制御装置100において図的実行プログラム110が実行される際は、図的実行プログラム110はミドルウエア112に依らずに直接C実行プログラム114のリソースにアクセスする。
【0034】
(2)C実行プログラム114が図的実行プログラム110のリソースを使用する場合、ミドルウエア112はC実行プログラム114からの図的実行プログラム110のリソースへのアクセスを仲介する。
【0035】
図的実行ファイル16が制御装置100にダウンロードされてくると、ミドルウエア112は、図的実行ファイル16に対応する図的実行プログラム110をメモリ102の第1領域に配置する。この際、ミドルウエア112は、図的実行ファイル16に組み込まれている図的実行ファイル16の図的リソース情報を取得する。
【0036】
ミドルウエア112は、取得された図的リソース情報に関連するアプリケーションプログラミングインタフェース(以下、APIと称す)を含む。APIは、取得された図的リソース情報に基づき、図的実行プログラム110以外のプログラムからの図的実行プログラム110のリソースへのアクセスを可能とする。
【0037】
C実行ファイル24が制御装置100にダウンロードされてくると、ミドルウエア112は、C実行ファイル24に対応するC実行プログラム114をメモリ102の第2領域に配置する。制御装置100においてC実行プログラム114が実行される際、C実行プログラム114は、APIを通して図的実行プログラム110のリソースにアクセスする。
【0038】
本実施の形態に係る制御装置100によると、図的プログラミング言語により開発された図的実行プログラム110とC言語により開発されたC実行プログラム114とを同一の実行環境4で動作させることができる。また、それらの実行プログラム110、114の間で情報を共有させることができる。また、それらの実行プログラム110、114の間での、実行単位の呼び出しが可能となる。
【0039】
また、C言語をベースとした開発環境から図的プログラミング言語をベースとしたより高効率の開発環境へと移行する途中においては、開発環境に両言語が混在することが多い。そこで本実施の形態に係る制御装置100を使用すると、そのような開発環境でもスムーズにプログラムの開発を進めることができる。
【0040】
また、本実施の形態に係る制御装置100では、図的実行プログラム110とC実行プログラム114とはCPU104を共用しており、密結合が実現されている。したがって、それぞれが別のCPUを使用するような粗結合の場合と比較して、一方のプログラムから他方のプログラムのリソースにアクセスする際にCPUやメモリを切り替えなくてもよいのでより高速な動作が可能となる。
【0041】
(無人搬送台車への応用)
図2は、本実施の形態に係る技術的思想が適用された無人搬送台車の制御部システム構成を示す模式図である。第1コントローラ202および第2コントローラ204はシステムバス206に接続されている。第1コントローラ202には、C言語を使用して生成されたシーケンス制御プログラム208と、図的プログラミング言語を使用して生成された移載系サーボ制御プログラム210と、ミドルウエア214と、がインストールされている。
【0042】
シーケンス制御プログラム208および移載系サーボ制御プログラム210は第1コントローラ202内の同じCPU(不図示)を使用する。ミドルウエア214は、シーケンス制御プログラム208と移載系サーボ制御プログラム210との間のリソースの相互アクセスを制御する。これにより、シーケンス制御プログラム208と移載系サーボ制御プログラム210とが同じ第1コントローラ202内に共存することが可能となっている。
第2コントローラ204には、図的プログラミング言語を使用して生成された走行系サーボ制御プログラム212がインストールされている。
【0043】
図3は、本実施の形態に係る技術的思想が適用されない無人搬送台車の制御部システム構成を示す模式図である。第1コントローラ302、第2コントローラ304および第3コントローラ306はシステムバス308に接続されている。第1コントローラ302には、図的プログラミング言語を使用して生成された移載系サーボ制御プログラム310がインストールされている。第2コントローラ304には、図的プログラミング言語を使用して生成された走行系サーボ制御プログラム314がインストールされている。第3コントローラ306には、C言語を使用して生成されたシーケンス制御プログラム312がインストールされている。
【0044】
図3に示される構成では
図2に示されるようなミドルウエアが存在しないので、移載系サーボ制御プログラム310とシーケンス制御プログラム312とを同じコントローラ上で動作させることはできず、それぞれ別個のコントローラにインストールすることとなる。あるいはまた、シーケンス制御プログラム312を図的プログラミング言語により書き直す必要がある。
【0045】
このように、本実施の形態に係る技術的思想が適用された場合、言語の異なるプログラムを同じコントローラ上で動作させることができるので、必要なコントローラの数を低減できる。その結果、無人搬送台車の原価を低減できる。また、C言語を使用して生成された他の実績のあるプログラムを導入する場合に新たにコントローラを用意する必要はない。
【0046】
(射出成形機への応用)
図4は、本実施の形態に係る技術的思想が適用された射出成形機のソフトウエア構成を示す模式図である。このソフトウエア構成は、OS(Operating System)402と、ミドルウエア404と、共通制御プログラム406と、オプションAプログラム408と、オプションBプログラム410と、オプションCプログラム412と、を有する。ミドルウエア404はOS402上で動作する。共通制御プログラム406、オプションAプログラム408、オプションBプログラム410、オプションCプログラム412はいずれもミドルウエア404上で動作する。共通制御プログラム406はC言語を使用して生成され、オプションAプログラム408、オプションBプログラム410、オプションCプログラム412はいずれも図的プログラミング言語を使用して生成される。
【0047】
図4に示されるソフトウエア構成に対して、例えばオプションCプログラム412を交換する際には、オプションCプログラム412を削除し、図的プログラミング言語を使用して生成されたオプションC’プログラム414を新たにインストールすればよい。
図4に示されるソフトウエア構成に対して、例えばオプションを追加する際には、図的プログラミング言語を使用して生成されたオプションDプログラム416を新たにインストールすればよい。
【0048】
図5は、本実施の形態に係る技術的思想が適用されない射出成形機のソフトウエア構成を示す模式図である。このソフトウエア構成は、OS502と、共通制御プログラム504と、オプションAプログラム506と、オプションBプログラム508と、オプションCプログラム510と、を有する。共通制御プログラム504はOS502上で動作する。オプションAプログラム506、オプションBプログラム508、オプションCプログラム510はいずれも共通制御プログラム504上で動作する。共通制御プログラム504、オプションAプログラム506、オプションBプログラム508、オプションCプログラム510はいずれもC言語を使用して生成される。
図5に示されるソフトウエア構成に対して、図的プログラミング言語を使用して生成された新たなオプションプログラムを追加することは困難である。
【0049】
本実施の形態に係る技術的思想が適用された射出成形機のソフトウエア構成では、図的プログラミング言語とC言語との共存を可能とするミドルウエア404の存在により、オプション部分をプログラミングがより容易な図的プログラミング言語により作成することができる。これにより、例えば共通制御プログラムのアルゴリズムを隠蔽したままオプション部分を公開できる。また、海外などの前線のサービスパーソンによるオプション部分の追加や変更がより容易となる。これにより、より顧客に密着したサービスを提供することができる。
【0050】
以上、実施の形態に係る組み込みシステムの制御装置100について説明した。この実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0051】
図的プログラミング言語は機械装置の制御プログラムに比較的適している。一方でコンピュータ間の通信ソフトウエアにはC言語などの従来言語の資産が多く存在する。したがって、実施の形態に係る技術的思想は、機械装置をネットワークに接続するようなアプリケーションにより好適に適用されうる。
【0052】
実施の形態では、
図1を参照してプログラム開発時の実行形態を説明したが、これに限られない。
図6は、製品運用時の実行形態を示す模式図である。制御装置100はさらに2次記憶装置120を備える。2次記憶装置120はハードディスクドライブやflashディスクなどのディスク装置であってもよい。2次記憶装置120は制御装置バス108と接続される。2次記憶装置120は図的実行ファイル16とC実行ファイル24とを含む。製品運用時にはホストPCは存在せず、図的実行プログラム110およびC実行プログラム114をそれぞれ、2次記憶装置120に記憶される図的実行ファイル16およびC実行ファイル24からメモリ102に配置する。なお、オブジェクトファイルの所在が変わるだけであり、処理の流れは実施の形態のものと同様である。