(57)【要約】【課題】  アドレスやサイズを予め決めておかなくてもモーションコントローラ装置がＣ言語オブジェクトをロードできるようにする。【解決手段】  Ｃ言語リロケータブルファイルを使い、ロード時に動的に確保したアドレスでリンクしてオブジェクトを生成し、確保したアドレスへロードする。【選択図】図１
2006113929.tif 000002
【特許請求の範囲】
【請求項１】
Ｃ言語プログラムを格納する記憶メモリとＣ言語プログラムを実行する中央演算装置と入出力装置を備えたモーションコントローラ装置と、Ｃ言語ソースプログラムとＣ言語コンパイラとリロケータブルファイルとリンカと実行オブジェクトを備えたホスト装置からなるモーションコントローラシステムにおいて、
前記Ｃ言語コンパイラがＣ言語ソースプログラムをコンパイルしてリロケータブルファイルに変換し、
前記ホスト装置がリロケータブルファイルのサイズ分のエリアを前記モーションコントローラ装置に要求して格納エリアを確保し、
その格納エリアのアドレスを前記ホスト装置に通知し、
取得した格納エリアのアドレスを用いて前記リンカが前記リロケータブルファイルをリンクして実行オブジェクトを生成し、
前記ホスト装置が生成された実行オブジェクトを前記格納エリアのアドレスへロードする、
という手順でＣ言語プログラムのオブジェクトをロードすることを特徴とするＣ言語オブジェクトロード方法。
【請求項２】
Ｃ言語プログラムを格納する記憶メモリとＣ言語プログラムを実行する中央演算装置と入出力装置を備えたモーションコントローラ装置と、Ｃ言語ソースプログラムとＣ言語コンパイラとリロケータブルファイルとリンカと実行オブジェクトを備えたホスト装置からなるモーションコントローラシステムにおいて、
前記Ｃ言語コンパイラがＣ言語ソースプログラムをコンパイルしてリロケータブルファイルに変換し、
前記ホスト装置がリロケータブルファイルのサイズ分のエリアを前記モーションコントローラ装置に要求して格納エリアを確保し、
その格納エリアのアドレスを前記ホスト装置に通知し、
取得した格納エリアのアドレスを用いて前記リンカが前記リロケータブルファイルをリンクして実行オブジェクトを生成し、
前記ホスト装置が生成された実行オブジェクトを前記格納エリアのアドレスへロードしてＣ言語プログラムのオブジェクトが前記モーションコントローラ装置にロードされることを特徴とするモーションコントローラシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｃ言語で作成したプログラムを実行させるモーションコントローラシステムに関し、特にＣ言語オブジェクトをロードするときのＣ言語オブジェクトロード方法に関する。  
【背景技術】
【０００２】
従来のモーションコントローラシステムについて図３と図４を用いて説明する。図３は従来のモーションコントローラシステムの概念ブロック図であり、図４はＣ言語オブジェクトをロードするときの手順を示すステップ図である（例えば特許文献１参照）。
図３において、モーションコントローラシステムはモーションコントローラ装置１とホスト装置２から構成されており、モーションコントローラ装置１は中央演算装置１１と記憶メモリ１２，入出力装置１３から構成されている。またホスト装置２はＣ言語ソースプログラム２１とＣ言語コンパイラ２２、リロケータブルファイル２３、リンカ２４，実行オブジェクト２５から構成されている。モーションコントローラ装置１では、中央演算装置１１が記憶メモリ１２の中のシステム格納エリア１２１に格納された実行コードを読み出して演算する。演算するときは、必要に応じてワークデータ格納エリア１２２も使われる。システム格納エリア１２１に格納された実行コードには、アプリケーション格納エリア１２３に格納されたＣ言語以外で記述されたアプリケーションとＣ言語データ格納エリア１２４に格納されたＣ言語オブジェクトをそれぞれ実行する命令が含まれている。アプリケーション格納エリア１２３の格納対象は、モーションコントローラ装置１によるアドレス解決が可能なアプリケーションとなるため、モーションコントローラ装置１は動的に必要なエリアを確保することが可能となっている。一方、Ｃ言語で記述されたプログラムは実行オブジェクトに変換されるときに絶対アドレスを使うため、モーションコントローラ装置１はアドレス解決をすることができない。このため、あらかじめモーションコントローラ装置１とホスト装置２のいずれもＣ言語実行オブジェクトを格納するエリアを決めておかなければならない。したがって、Ｃ言語データ格納エリア１２４について動的に必要なエリアを確保することはできない。
【０００３】
ホスト装置２は、ユーザ３の入力にしたがってＣ言語ソースプログラム２１が作成され（図４のステップ１）、Ｃ言語コンパイラ２２によってリロケータブルファイル２３へ変換される（図４のステップ２）。次にあらかじめ決めておいた絶対アドレス４１を用いてリンカ２４がアドレスを確定し、実行オブジェクト２５を出力する（図４のステップ３）。そして実行オブジェクト２５がモーションコントローラ装置１の予め決められた絶対アドレス４１のエリアに格納され（図４のステップ４）、中央演算装置１１による実行が可能となる。
【０００４】
実行オブジェクトの一部を後から取り込んで実行する方法として従来よりダイナミックローディングやダイナミックリンクと呼ばれる方式が知られており、実行側のオペレーティングシステム（以下ＯＳとする）が再配置可能なリロケータブルファイルをアドレス解決した上で格納することにより実現されている。
ダイナミックローディング機能を有していないＯＳを用いた場合は、前述したように、予め決められた絶対アドレス４１を情報としてリンカ２４に与えることによってホスト装置２がアドレス解決された実行オブジェクト２５を生成し、絶対アドレス４１と一致するＣ言語データ格納エリア１２４に格納して実行可能とされる。
このように、従来のモーションコントローラ装置では、ダイナミックローディング機能を有していないＯＳを用いて絶対アドレスを持つＣ言語オブジェクトプログラムを実行するときは、予め決められたアドレスでコンパイルした実行オブジェクトをロードしてから実行するという手順がとられていた。
【特許文献１】特開２００４−１３９４５８
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが従来のモーションコントローラ装置は、予め決められたアドレスでコンパイルした実行オブジェクトをロードしてから実行しているので、モーションコントローラ装置に固定アドレスのＣ言語オブジェクトロード用メモリを確保しておかなければならないという問題があった。また、他のエリアへの影響を避けるためには記憶メモリのサイズが有限であるから固定サイズの限定をしなくてはならないという問題もあった。さらに、固定アドレス固定サイズのメモリを確保しておかなければならないため、確保したメモリエリアを他の用途に使うことができず、ロードする実行オブジェクトのサイズにも制限があるという問題もあった。
本発明はこのような問題点に鑑みてなされたものであり、専用のメモリエリアを用いることなく、実行オブジェクトのサイズを制限せずにロードすることができる方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記問題を解決するため、本発明は、Ｃ言語プログラムを格納する記憶メモリとＣ言語プログラムを実行する中央演算装置と入出力装置を備えたモーションコントローラ装置と、Ｃ言語ソースプログラムとＣ言語コンパイラとリロケータブルファイルとリンカと実行オブジェクトを備えたホスト装置からなるモーションコントローラシステムにおいて、前記Ｃ言語コンパイラがＣ言語ソースプログラムをコンパイルしてリロケータブルファイルに変換し、前記ホスト装置がリロケータブルファイルのサイズ分のエリアを前記モーションコントローラ装置に要求して格納エリアを確保し、その格納エリアのアドレスを前記ホスト装置に通知し、取得した格納エリアのアドレスを用いて前記リンカが前記リロケータブルファイルをリンクして実行オブジェクトを生成し、前記ホスト装置が生成された実行オブジェクトを前記格納エリアのアドレスへロードする、という手順でＣ言語プログラムのオブジェクトをロードすることを特徴としている。
【発明の効果】
【０００７】
請求項１および２に記載の発明によると、モーションコントローラ装置に専用のメモリエリアを確保することなく、実行オブジェクトのサイズを制限せずにＣ言語オブジェクトをモーションコントローラ装置へロードすることができるという効果がある。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の方法の具体的実施例について、図に基づいて説明する。
【実施例１】
【０００９】
図１は、本発明の方法を実施するモーションコントローラシステムの構成を示す概念ブロック図である。図１が図３と異なるのは、図３のＣ言語データ格納エリア１２４を備えていない点と、絶対アドレス４１に代えて確保したアドレス４２を使う点だけである。図１によると、ユーザ３はホスト装置２を用いてモーションコントローラ装置１を動作させるためのアプリケーションをＣ言語で作成することができる。モーションコントローラ装置１の記憶メモリ１２にあるアプリケーション格納エリア１２３は、格納するデータのサイズを指定されれば、データを格納するためのエリアを確保できるようになっている。また、確保したアドレス４２をホスト装置２へ伝達できるようになっている。ユーザ３が作成したＣ言語ソースプログラム２１はＣ言語コンパイラ２２により再配置可能なリロケータブルファイル２３に変換され、リンカ２４でアドレス解決され実行オブジェクト２５が生成される。
また、モーションコントローラ装置１は、アプリケーション格納エリア１２３内で指定されたアドレスへデータを格納できるようになっている。
【００１０】
図２はモーションコントローラ装置１がＣ言語オブジェクトをロードするときの処理手順を示すステップ図である。この図を用いて本発明の方法を説明する。
（ステップ１）まず初めにユーザがコーディングしてＣ言語ソースプログラム２１が作成される。
（ステップ２）作成されたＣ言語ソースプログラム２１をＣ言語コンパイラ２２がコンパイルしてリロケータブルファイル２３に変換する。このときリロケータブルファイル２３はアドレスが確定すれば実行オブジェクトになるため、サイズとしては実行オブジェクトと同一となる。
（ステップ３）ホスト装置２がリロケータブルファイル２３のサイズ分のエリアをモーションコントローラ装置１に要求し、格納エリアを確保する。
（ステップ４）モーションコントローラ装置１が確保された格納エリアのアドレスをホスト装置に通知する。
（ステップ５）取得した格納エリアのアドレスを用いてリンカがリロケータブルファイル２３をリンクし、実行オブジェクト２５を生成する。
（ステップ６）ホスト装置２が生成された実行オブジェクト２５を、ステップ４で取得した格納エリアのアドレスへロードする。
【００１１】
以上の手順により、モーションコントローラ装置１は、ステップ３で確保した格納エリアへ実行オブジェクト２５を格納し、実行オブジェクト２５を実行する。
このように、Ｃ言語リロケータブルファイルを使い、ロード時にモーションコントローラ装置で動的に確保したアドレスでリンクしてオブジェクトをロードするので、モーションコントローラ装置に専用のメモリエリアを予め確保することなく、実行オブジェクトのサイズを制限せずにＣ言語オブジェクトをモーションコントローラ装置へロードすることができるのである。
【図面の簡単な説明】
【００１２】
【図１】本発明の方法を適用するモーションコントローラ装置の構成を示す概念ブロック図
【図２】本発明の方法の処理手順を示すステップ図
【図３】従来のモーションコントローラ装置の構成を示す概念ブロック図
【図４】従来の方法の処理手順を示すステップ図
【符号の説明】
【００１３】
１  モーションコントローラ装置、   ２  ホスト装置、
３  ユーザ、                       １１  中央演算装置、
１２  記憶メモリ、                 １３  入出力装置、
２１  Ｃ言語ソースプログラム、            ２２  Ｃ言語コンパイラ、
２３  リロケータブルファイル、            ２４  リンカ、
２５  実行オブジェクト、           ４１  絶対アドレス、
４２  確保したアドレス、           １２１  システム格納エリア、
１２２  ワークデータ格納エリア、   １２３  アプリケーション格納エリア、
１２４  Ｃ言語データ格納エリア
【図１】
2006113929.tif 000003
【図２】
2006113929.tif 000004
【図３】
2006113929.tif 000005
【図４】
2006113929.tif 000006