(57)【特許請求の範囲】
【請求項１】
未解決のシンボルを含むオブジェクトファイルを記憶する第１の記憶部と、
更新可能な制御プログラムを記憶する第２の記憶部と、
前記オブジェクトファイルを受信する制御を行い、前記未解決のシンボルを解決してシンボル解決済みオブジェクトファイルを生成し、前記シンボル解決済みオブジェクトファイルを使って前記制御プログラムを更新する演算装置と、
を備え、
前記第２の記憶部は、前記演算装置が前記オブジェクトファイルに記載されたプログラムによりアクセスする関数および大域変数が定義されたシンボルテーブルを記憶し、
前記演算装置は、前記シンボルテーブルを用いて前記未解決のシンボルを解決する、
制御装置。
【請求項２】
前記第２の記憶部において前記シンボル解決済みオブジェクトファイルが記憶される領域を示すアドレスは固定アドレスとし、
前記演算装置は、前記第２の記憶部において、前記シンボル解決済みオブジェクトファイルの内容と対応する前記制御プログラムの領域に前記シンボル解決済みオブジェクトファイルを記憶させ、前記制御プログラムを更新する、
請求項１に記載の制御装置。
【請求項３】
前記演算装置は、規定されたサイズのブロックに分割されたオブジェクトファイルを受信し、前記オブジェクトファイルのブロックに含まれる未解決のシンボルを解決し、ブロック単位のシンボル解決済みのシンボル解決済みオブジェクトファイルを生成して前記第２の記憶部に記憶させる、
請求項１に記載の制御装置。
【請求項４】
前記第１の記憶部はランダムアクセスメモリであり、
前記第２の記憶部は不揮発性記憶装置である、
請求項１に記載の制御装置。
【請求項５】
制御対象機器の制御を行う制御装置におけるプログラム更新方法であって、
演算装置が、未解決のシンボルを含むオブジェクトファイルを受信する受信ステップと、
前記演算装置が、前記オブジェクトファイルを記憶する第１の記憶部において、前記未解決のシンボルを解決し、シンボル解決済みのシンボル解決済みオブジェクトファイルを生成する解決ステップと、
前記演算装置が、更新可能な制御プログラムを記憶する第２の記憶部において、前記シンボル解決済みオブジェクトファイルの内容と対応する前記制御プログラムの領域に前記シンボル解決済みオブジェクトファイルを記憶させ、前記制御プログラムを更新する更新ステップと、
を含み、
前記更新ステップにおいて、前記演算装置は、前記第２の記憶部に記憶され、前記オブジェクトファイルに記載されたプログラムによりアクセスする関数および大域変数が定義されたシンボルテーブルを用いて前記未解決のシンボルを解決する、
プログラム更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶されているプログラムを更新する制御装置およびプログラム更新方法に関する。
【背景技術】
【０００２】
従来、電子機器には、制御装置として組み込みマイコンが搭載される場合がある。組み込みマイコンでは、ＣＰＵ（Central  Processing  Unit）が、フラッシュＲＯＭ（Read  Only  Memory）に格納されたプログラムを実行して各種の制御を行う。ここで、フラッシュＲＯＭに記憶されたプログラムは更新することが可能である。特許文献１には、フラッシュＲＯＭの書換えプログラムを組み込みマイコン内のＲＡＭ（Random  Access  Memory）にコピーして、ＲＡＭ上で更新処理プログラムを動作させ、プログラムを書き換える技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−６９０４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の技術によれば、組み込みマイコンは、新プログラムに更新する処理を担う書換えプログラム、および書換えプログラムをＲＡＭに複写する処理を担う複写プログラムを除いた全プログラム（特許文献１に記載のシステム・プログラムに相当）を一度消去して、プログラムを全面的に書き換える必要がある。フラッシュＲＯＭへの書き替えは、一度消去と新規書き込みという作業を必要とするため、処理速度の制約が大きい組み込みマイコンでは、プログラムを更新する際に処理負荷がかかる、という問題があった。【０００５】
本発明は、上記に鑑みてなされたものであって、処理変更要求の多い一部のプログラムだけを更新することで処理負荷を抑制可能な制御装置を得ることを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明に係る制御装置は、未解決のシンボルを含むオブジェクトファイルを記憶する第１の記憶部と、更新可能な制御プログラムを記憶する第２の記憶部と、オブジェクトファイルを受信する制御を行い、未解決のシンボルを解決してシンボル解決済みオブジェクトファイルを生成し、シンボル解決済みオブジェクトファイルを使って制御プログラムを更新する演算装置と、を備える。第２の記憶部は、演算装置がオブジェクトファイルに記載されたプログラムによりアクセスする関数および大域変数が定義されたシンボルテーブルを記憶する。演算装置は、シンボルテーブルを用いて未解決のシンボルを解決する。
【発明の効果】
【０００７】
本発明に係る制御装置は、処理変更要求の多い一部のプログラムだけを更新することで処理負荷を抑制できる、という効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】制御システムの構成例を示す図
【図２】制御装置の構成例を示すブロック図
【図３】制御装置において定義されるメモリマップの例を示す図
【図４】制御装置の不揮発性記憶装置が記憶するシンボルテーブルのフォーマットの例を示す図
【図５】制御装置において一部の制御プログラムを更新する処理を示すフローチャート
【発明を実施するための形態】
【０００９】
以下に、本発明の実施の形態に係る制御装置およびプログラム更新方法を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１０】
実施の形態．
図１は、本発明の実施の形態に係る制御システム６の構成例を示す図である。制御システム６は、制御プログラムの記述に従って動作する電子機器４と、一部の制御プログラムを更新するためのデータであるオブジェクトファイルを送信する外部機器５と、を備える。電子機器４は、制御対象機器２と、制御プログラムの記述に従って制御対象機器２を制御する制御装置１と、外部機器５と接続する通信ポート３と、を備える。制御装置１は、通信ポート３を介して、外部機器５からオブジェクトファイルを受信する。
【００１１】
外部機器５は、例えば、パーソナルコンピュータなどの情報処理装置である。外部機器５は、電子機器４の制御装置１が記憶している更新対象の制御プログラムのソフトウェア（以下、アプリケーションと称する）のソースコードをコンパイルして得られる実行コード、および未解決のシンボルを含むオブジェクトファイルを生成する。未解決のシンボルとは、宣言されているが定義の無いシンボルのことである。外部機器５は、生成したオブジェクトファイルを電子機器４に送信する。外部機器５は、オブジェクトファイルのサイズが大きい場合、オブジェクトファイルを規定されたサイズ（機能単位たとえばサブルーチン・関数単位）のブロックに分割し、分割したオブジェクトファイルを電子機器４に送信する。
【００１２】
電子機器４は、例えば、エアコンなどの家電機器である。電子機器４が備える制御装置１は、例えば、組み込みマイコンである。制御装置１は、制御対象機器２の動作を制御するための制御プログラムを不揮発性記憶装置１３に記憶している。制御装置１において、演算装置１１は、不揮発性記憶装置１３に記憶されている制御プログラムの記述に従い、スタートアップ処理プログラム１３２の実行によりＲＡＭ１２に展開された大域変数を参照すなわちＲｅａｄおよびＷｒｉｔｅし、Ｉ／Ｏインタフェース１４を介して制御対象機器２の動作を制御する。また、演算装置１１は、通信コントローラ１５を制御して外部機器５との通信を行う。演算装置１１は、例えば、ＣＰＵである。
【００１３】
図２は、本実施の形態に係る制御装置１の構成例を示すブロック図である。制御装置１は、前述のように、演算装置１１と、ＲＡＭ１２と、不揮発性記憶装置１３と、Ｉ／Ｏインタフェース１４と、通信コントローラ１５と、を備える。ＲＡＭ１２は第１の記憶部であり、不揮発性記憶装置１３は第２の記憶部である。
【００１４】
演算装置１１は、プログラム領域１３１に記憶されたプログラム（スタートアップ処理プログラム１３２、リンク処理プログラム１３３、通信制御処理プログラム１３４、第１の制御プログラム１３５、および第２の制御プログラム１３６）を実行する機能、を備える。不揮発性記憶装置１３は、プログラム領域１３１および定義領域１３７の記憶領域を持つ。不揮発性記憶装置１３は、プログラム領域１３１の記憶領域において、スタートアップ処理プログラム１３２、リンク処理プログラム１３３、通信制御処理プログラム１３４、第１の制御プログラム１３５、および第２の制御プログラム１３６を記憶している。また、不揮発性記憶装置１３は、定義領域１３７の記憶領域において、シンボルテーブル１３８を記憶している。
【００１５】
電子機器４の電源がＯＮすると演算装置１１が動作し、演算装置１１は、不揮発性記憶装置１３のスタートアップ処理プログラム１３２を実行する。演算装置１１は、スタートアップ処理プログラム１３２の記述に従い、電子機器４内のハードウェアの初期化、新プログラムに更新する処理を担う書換えプログラム、およびプログラム書換え機能を有するリンク処理プログラムをＲＡＭ１２に複写する処理、各種ソフトウェア機能の起動処理を行う。
【００１６】
演算装置１１は、スタートアップ処理プログラム１３２から複写済みのＲＡＭ１２上のリンク処理プログラム１３３を実行する。演算装置１１は、リンク処理プログラム１３３の記述に従い、第２の制御プログラム１３６の内容を更新する処理を行う。第２の制御プログラム１３６の更新処理の詳細については後述する。
【００１７】
演算装置１１は、スタートアップ処理プログラム１３２から通信制御処理プログラム１３４を実行する。演算装置１１は、通信制御処理プログラム１３４の記述に従い、外部機器５との間でデータの送受信を行う。演算装置１１は、外部機器５によってソースコードがコンパイルされた実行コード、および未解決のシンボルを含むオブジェクトファイルを外部機器５から受信し、受信したオブジェクトをＲＡＭ１２上に展開することが可能である。
【００１８】
演算装置１１は、不揮発性記憶装置１３の第１の制御プログラム１３５および第２の制御プログラム１３６を実行する。演算装置１１は、第１の制御プログラム１３５および第２の制御プログラム１３６の記述に従い、制御対象機器２の制御を行う。第１の制御プログラム１３５および第２の制御プログラム１３６をまとめて制御プログラムとする。図２において、第１の制御プログラム１３５および第２の制御プログラム１３６を含む領域が制御プログラムとなる。
【００１９】
第１の制御プログラム１３５は、制御プログラムの本体であり、本実施の形態において、書き換え不可すなわち更新不可のプログラムである。第２の制御プログラム１３６は、制御プログラム全体のうちの一部の制御プログラムであるが、本実施の形態において、外部機器５によって書き換えすなわち更新することが可能なプログラムである。
【００２０】
シンボルテーブル１３８は、一部の制御プログラムを更新する処理すなわち第２の制御プログラム１３６の更新処理で、演算装置１１はリンク処理プログラム実行により未解決のシンボルを解決するときに参照するものである。シンボルテーブル１３８は、オブジェクトファイルに記載されたプログラムによりアクセスされる関数および大域変数が定義されたテーブルである。シンボルテーブル１３８には、第１の制御プログラム１３５内の関数、および第１の制御プログラム１３５が参照するＲＡＭ１２上に存在する大域変数のうち、第２の制御プログラム１３６が書き込みおよび読み込みを実行可能なシンボルと、制御装置１のメモリマップにおいて各シンボルの実体が存在するアドレスとの対応の一覧が定義されている。シンボルテーブル１３８は、定義の無い未解決のシンボルに定義を与えるためのものである。
【００２１】
ここで、制御装置１のメモリマップおよびシンボルテーブル１３８の構成について図を用いて説明する。
【００２２】
図３は、本実施の形態に係る制御装置１において定義されるメモリマップの例を示す図である。メモリマップは、制御装置１が備える全ての記憶部の記憶領域を通してアドレスを付与したものであって、演算装置１１から見えるプログラムなどの記憶領域を示したものである。ここでは、制御装置１のＩ／Ｏインタフェース１４、不揮発性記憶装置１３、およびＲＡＭ１２の記憶領域がメモリマップとして示される対象となる。図３の例では、メモリマップは、０番地からＡ−１番地のＩ／Ｏインタフェース１４のＩ／Ｏ領域、Ａ番地からＢ−１番地の不揮発性記憶装置１３の不揮発性記憶領域、およびＢ番地から０ｘＦＦＦＦＦＦＦＦ番地のＲＡＭ１２のＲＡＭ領域の３つの領域から構成される。これらのアドレスは、一般的に、組み込みマイコンすなわち制御装置１毎に固定されている。不揮発性記憶領域は、図２に示す不揮発性記憶装置１３が記憶している機能毎のプログラムにアドレスが割り当てられる。
【００２３】
図３において、第１の制御プログラム１３５の領域には更新不可の制御プログラムが配置されている。第１の制御プログラム１３５の領域で定義された関数、例えばｅｘｔｆｕｎｃ１（）、ｅｘｔｆｕｎｃ２（）の先頭アドレスとシンボル名との対応がシンボルテーブル１３８に定義されていれば、演算装置１１はリンク処理プログラム１３３実行により第２の制御プログラム１３６の関数から参照することが可能となる。第１の制御プログラム１３５の領域で定義された関数、例えば、ｉｎｆｕｎｃ１（）がシンボルテーブル１３８に定義されていなければ、演算装置１１がリンク処理プログラム１３３を実行しても、第２の制御プログラム１３６から参照できなくすることが可能となる。
【００２４】
図３において、第２の制御プログラム１３６の領域には更新可能な第２の制御プログラム１３６が配置され、固定番地に割り当てられている。図３の例では、１つ目のアプリケーションはＸ番地を先頭アドレスとする領域に記憶され、２つ目のアプリケーションはＹ番地を先頭アドレスとする領域に記憶されている。この場合、制御装置１において、演算装置１１は、シンボル解決処理を行うことなく、第１の制御プログラム１３５から第２の制御プログラム１３６の機能を関数コールすることが可能となる。演算装置１１はリンク処理プログラム１３３実行により、第２の制御プログラム１３６のプログラムの更新処理において、シンボル解決済みとなったブロック単位のオブジェクトファイルを、ブロック単位のオブジェクトファイルの内容に対応する第２の制御プログラム１３６の固定アドレスに配置することとする。
【００２５】
図３において、ＲＡＭ領域には第１の制御プログラム１３５で定義される大域変数がスタックおよびヒープ領域以外の領域に記憶されている。ＲＡＭ領域は、スタック領域、ビープ領域、および大域変数領域から構成されている。第１の制御プログラム１３５で定義される大域変数の領域で定義された大域変数、例えば、ｅｘｔｖａｌ１、ｅｘｔｖａｌ２などのアドレスとシンボル名との対応がシンボルテーブル１３８に定義されていれば、演算装置１１がリンク処理プログラム１３３実行により、第２の制御プログラム１３６の関数から参照することが可能となる。第１の制御プログラム１３５で定義される大域変数の領域で定義された大域変数、例えば、ｉｎｖａｌ１のアドレスとシンボル名との対応がシンボルテーブル１３８に定義されていなければ、演算装置１１がリンク処理プログラム１３３を実行しても、第２の制御プログラム１３６から参照できなくすることが可能となる。
【００２６】
なお、制御装置１において、演算装置１１は、第２の制御プログラム１３６から第１の制御プログラム１３５の機能を関数コールする際、図３の例ではｖｏｉｄ  ｅｘｔｆｕｎｃ１（）およびｖｏｉｄ  ｅｘｔｆｕｎｃ２（）については、後述するプログラム更新処理のシンボル解決の過程でアクセスすることが可能となる。
【００２７】
図４は、本実施の形態に係る制御装置１の不揮発性記憶装置１３が記憶するシンボルテーブル１３８のフォーマットの例を示す図である。シンボルテーブル１３８には、第１の制御プログラム１３５または第２の制御プログラム１３６に記載されたシンボル名、制御装置１が備える記憶領域にアドレスを付与したメモリマップ内において対応するアドレス、および各シンボルの属性の情報が定義されている。シンボルテーブル１３８には、演算装置１１がリンク処理プログラム１３３実行による第２の制御プログラム１３６を更新する処理において、参照が許される関数および大域変数のみが記載されている。
【００２８】
つづいて、制御装置１において、一部の制御プログラム、具体的には第２の制御プログラム１３６を更新する処理について説明する。図５は、本実施の形態に係る制御装置１において一部の制御プログラムを更新する処理を示すフローチャートである。
【００２９】
まず、制御装置１において、演算装置１１はスタートアップ処理プログラム１３２実行により、電子機器４の電源が投入すなわちＯＮされると（ステップＳ１）、スタートアップ処理（大域変数のＲＡＭ１２への展開含む）を実施する（ステップＳ２）。つぎに、演算装置１１がスタートアップ処理プログラム１３２実行により、ＲＡＭ１２に存在する規定された大域変数の値、具体的にはフラグの状態を読み取り、制御プログラムの更新モードであるか否かを判断する（ステップＳ３）。
【００３０】
制御プログラムの更新モードであるか否かは、ユーザによりあらかじめ設定されているとする。ここで、ユーザが制御プログラムの更新モードに設定するには、制御装置１が動作中に、以下の（１）または（２）のいずれかの方法により設定する。なお、更新フラグ「１」に設定されても、電子機器４を再起動されない限り、更新動作は実行されない。
【００３１】
（１）ユーザが電子機器４に付属するボタンを押下するなどによって制御装置１を制御プログラムの更新モードに設定する。電子機器４は、図１に示す制御対象機器２の１つとしてボタンを実装しているものとする。電子機器４の電源ＯＮからスタートアップ処理完了までの間にユーザがボタンを押下すると、制御装置１の演算装置１１が、Ｉ／Ｏインタフェース１４から信号を検知して、ＲＡＭ１２内に存在する規定された大域変数の値を変更し、制御プログラムの更新モードであることを示すフラグを立てる。演算装置１１は、例えば、更新モードのフラグの状態を示す値を「１」にする。
【００３２】
（２）ユーザが外部機器５からのメッセージによる指示によって制御装置１を制御プログラムの更新モードに設定する。電子機器４が電源ＯＮからスタートアップ処理完了までの間に外部機器５から前述のメッセージを受信すると、制御装置１の演算装置１１が、ＲＡＭ１２内に存在する規定された大域変数の値を変更し、制御プログラムの更新モードであることを示すフラグを立てる。
【００３３】
演算装置１１はスタートアップ処理プログラム１３２実行により、制御プログラムの更新モードではないと判断した場合（ステップＳ３：Ｎｏ）、通常通り、第１の制御プログラム１３５および第２の制御プログラム１３６の記述に従い、制御対象機器２の制御を行う（ステップＳ４）。演算装置１１は、第１の制御プログラム１３５および第２の制御プログラム１３６の記述に従い、電子機器４の電源がＯＦＦされるまでは制御対象機器２の制御を行い（ステップＳ５：Ｎｏ）、電子機器４の電源がＯＦＦされると（ステップＳ５：Ｙｅｓ）、処理を終了する。
【００３４】
演算装置１１はスタートアップ処理プログラム１３２実行により、制御プログラムの更新モードと判断した場合（ステップＳ３：Ｙｅｓ）、制御プログラムの更新モードであれば、通信制御処理プログラム１３４実行により、外部機器５から規定されたサイズ（機能単位。たとえばサブルーチン・関数単位）のブロックに分割されたブロック単位のオブジェクトファイルを受信する（ステップＳ６）。演算装置１１は通信制御処理プログラム１３４実行により、受信したブロック単位のオブジェクトファイルをＲＡＭ１２に展開する（ステップＳ７）。ＲＡＭ１２は、ブロック単位のオブジェクトファイルを記憶する。展開後、演算装置１１による通信制御処理プログラム１３４実行は終了し、演算装置１１はリンク処理プログラム１３３を実行する。
【００３５】
演算装置１１はリンク処理プログラム１３３実行により、受け取ったＲＡＭ１２上のブロック単位のオブジェクトファイルを確認し、不正なアクセスがあるか否かを判断する（ステップＳ８）。具体的に、演算装置１１は、受け取ったブロック単位のオブジェクトファイルに未解決のシンボルが含まれる場合、未解決のシンボルを解決するため、シンボルテーブル１３８を参照する。演算装置１１は、未解決のシンボルにシンボルテーブル１３８で定義されていないシンボルが含まれていた場合は不正なアクセスがあると判断する（ステップＳ８：Ｙｅｓ）。演算装置１１は、規定された大域変数（＝フラグ）の値を変更し、制御プログラムの更新モードであることを示すフラグを下げて（ステップＳ９）、処理を終了する。フラグを下げるとは、演算装置１１は、例えば、更新モードのフラグの状態を示す値を「０」にする。
【００３６】
演算装置１１はリンク処理プログラム１３３実行により、未解決のシンボルにシンボルテーブル１３８で定義されていないシンボルが含まれていない場合は不正なアクセスはないと判断する（ステップＳ８：Ｎｏ）。演算装置１１は、シンボルテーブル１３８を参照し、アドレス情報を取得して未解決のシンボルのシンボル名を実アドレスに置き換え、未解決のシンボルを解決する（ステップＳ１０）。
【００３７】
演算装置１１はリンク処理プログラム１３３実行により、ＲＡＭ１２に展開されているシンボル解決済みとなったブロック単位のオブジェクトファイルから、第２の制御プログラム１３６の領域内の指定された不揮発性記憶装置１３のアドレスに書き込む（配置する）（ステップＳ１１）。演算装置１１は、不揮発性記憶装置１３において、シンボル解決済みオブジェクトの内容と対応する第２の制御プログラム１３６の領域に新たなシンボル解決済みオブジェクトを記憶させ、第２の制御プログラム１３６を更新する。このように、演算装置１１は、生成したシンボル解決済みオブジェクトを使って第２の制御プログラム１３６を更新する。
【００３８】
制御装置１は、受信したブロック単位のオブジェクトファイルが最終ではない場合（ステップＳ１２：Ｎｏ）、ステップＳ６に戻ってステップＳ１１までの処理を繰り返し実施する。例えば、外部機器５において送信するブロック単位のオブジェクトファイルに分割数および何番目のブロックであるかを示す情報を付与することによって、制御装置１は、受信したブロック単位のオブジェクトファイルが最終か否かを判断できる。
【００３９】
受信したブロック単位のオブジェクトファイルが最終の場合（ステップＳ１２：Ｙｅｓ）、演算装置１１はリンク処理プログラム１３３実行により、規定された大域変数（＝フラグ）の値を変更することで、制御プログラムの更新モードであることを示すフラグを下げる（ステップＳ１３）。そして、ステップＳ４に移行し、演算装置１１は、第１の制御プログラム１３５および第２の制御プログラム１３６の記述に従い、制御対象機器２の制御を行う（ステップＳ４）。なお、制御装置１では、ステップＳ１２：Ｙｅｓの場合、ステップＳ１３の処理後、演算装置１１は、ステップＳ３から処理を行ってもよい。
【００４０】
ここで、制御装置１のハードウェア構成について説明する。制御装置１は、前述のように、組み込みマイコンで実現される。制御装置１では、メモリである不揮発性記憶装置１３に記憶されたプログラムをＣＰＵである演算装置１１が読み出して実行することにより、各機能を実現する。ここで、ＣＰＵは、処理装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、またはＤＳＰ（Digital  Signal  Processor）などであってもよい。また、メモリは、例えば、フラッシュメモリであるが、ＥＰＲＯＭ（Erasable  Programmable  ＲＯＭ）、ＥＥＰＲＯＭ（Electrically  ＥＰＲＯＭ）など書き換え可能なものであればよい。
【００４１】
以上説明したように、本実施の形態によれば、制御装置１では、外部機器５から実行コードおよび未解決のシンボルを含むオブジェクトを受信し、未解決のシンボルを解決し、シンボル解決済みのオブジェクトファイルを生成して、制御プログラムのうち更新可能な第２の制御プログラム１３６を更新することとした。これにより、制御装置１は、一部の制御プログラムだけを更新することが可能となり、一部の制御プログラムを更新するために全ての制御プログラムを更新する場合と比較して、処理負荷を抑制することができる。また、制御装置１は、一部の制御プログラムを更新するために全ての制御プログラムを更新する場合と比較して、一部の制御プログラムを更新する際の更新時間を短縮することができる。
【００４２】
制御装置１は、プログラムの部分更新または追加などで一般的に採用されているダイナミックすなわち動的なシンボル解決処理を実施しない。そのため、制御装置１は、機器制御中に処理負荷がかからず、機器制御についての性能を落とすことが無い。前述の動的なシンボル解決処理とは、例えば、ＤＬＬ（Dynamic  Link  Library）、プラグインなどである。また、制御装置１は、ＤＬＬなどのアプリケーションを格納しておくためのファイルシステムも不要である。
【００４３】
また、制御装置１は、スタティックすなわち静的な機能を用いて制御プログラムの部分更新または追加を実現する。制御装置１は、更新用の制御プログラムを配置する位置を不揮発性記憶装置１３において固定にすること、また、更新用の制御プログラムにアクセスを許可するシンボルの数をシンボルテーブル１３８によって絞ることでリンカ機能を制限している。リンカ機能をコンパクトにすることで、リンカ機能を制御装置１側に搭載することが可能となる。
【００４４】
リンカ機能を制御装置１側に搭載することで、制御装置１は、未解決のシンボルの解決を制御装置１が記憶しているシンボルテーブル１３８を用いて実施できる。制御装置１は、制御装置１内のアドレスと関数名および変数名などの各機能との関係を隠ぺいでき、不正なアドレスを参照させる第２の制御プログラム１３６の使用を防ぐことができる。この結果、制御装置１は、不正使用を防ぐことができ、セキュリティ面で効果を得ることができる。
【００４５】
一方、外部機器５側でシンボルテーブルを持ち未解決のシンボルを解決する場合、外部機器５は、制御装置１の制御プログラムのバージョンを意識してシンボルテーブルを選ぶ必要がある。制御装置１の制御プログラムのバージョンによって、シンボルとアドレスの関係に差がでるためである。そのため、外部機器５は、制御プログラムの部分更新用のオブジェクトファイル作成の際、シンボルテーブルの管理を正確に行わなければならない。仮に、外部機器５は、更新対象の制御装置１の制御プログラムに対応したシンボルテーブルを使用しないでシンボル解決を行うと、制御プログラムの不正アクセスにつながるおそれがある。制御装置１側で未解決のシンボルを解決することで、このような不正動作も防げる。
【００４６】
また、制御装置１における制御プログラムの基本部分、具体的には、スタートアップ処理プログラム１３２、リンク処理プログラム１３３、通信制御処理プログラム１３４、および第１の制御プログラム１３５は更新を不可とし、第２の制御プログラム１３６のみを更新可能とする。これにより、制御装置１は、第１の制御プログラム１３５部分の書き換え失敗による電子機器４の動作不全を防ぐことができる。
【００４７】
また、外部装置５は、規定されたサイズのブロックに分割したオブジェクトファイルを制御装置１に送信する。これにより、制御装置１は、ＲＡＭ１２の容量が小さくてオブジェクトファイル全体を展開できない場合でも、第２の制御プログラム１３６の部分更新が可能となる。
【００４８】
なお、外部機器５から送信するオブジェクトファイルのサイズが大きい場合、外部機器５がオブジェクトファイルを規定されたサイズのブロックに分割し、分割したオブジェクトファイルを電子機器４に送信していたが、これに限定されるものではない。外部機器５はサイズの大きいオブジェクトファイルを電子機器４に送信し、演算装置１１は通信制御処理プログラム１３４実行により、受信したオブジェクトファイルを、規定されたサイズのブロックに分割してもよい。
【００４９】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【００５０】
１  制御装置、２  制御対象機器、３  通信ポート、４  電子機器、５  外部機器、６  制御システム、１１  演算装置、１２  ＲＡＭ、１３  不揮発性記憶装置、１４  Ｉ／Ｏインタフェース、１５  通信コントローラ、１３１  プログラム領域、１３２  スタートアップ処理プログラム、１３３  リンク処理プログラム、１３４  通信制御処理プログラム、１３５  第１の制御プログラム、１３６  第２の制御プログラム、１３７  定義領域、１３８  シンボルテーブル。
【図１】
0006526357.tif 000002
【図２】
0006526357.tif 000003
【図３】
0006526357.tif 000004
【図４】
0006526357.tif 000005
【図５】
0006526357.tif 000006