(57)【要約】      （修正有）【課題】ＨＭＩ（ヒューマンマシンインターフェイス）プログラムの実行を停止せずにＵＩ（ユーザインターフェイス）部品のオブジェクトコードを変更する装置を提供する。【解決手段】情報処理装置１００、２００は、ＨＭＩプログラムを構成するＵＩ部品に紐付けられたオブジェクトコードを格納する格納手段（ライブラリ）１１３と、ＵＩ部品のソースコードから実行可能なオブジェクトコードを生成するコンパイラ１１６３と、ＨＭＩプログラムを実行する手段と、を備える。実行する手段は、ＨＭＩプログラムを実行する場合に、当該ＨＭＩプログラムを構成するＵＩ部品のオブジェクトコードとして、コンパイラにより生成されたオブジェクトコードおよび当該ＵＩ部品に紐付けられたオブジェクトコードのうちの一方を選択する。【選択図】図１
2020030621.tif 000002
【特許請求の範囲】
【請求項１】
ＦＡ（ファクトリオートメーション）のためのヒューマンマシンインターフェイス（ＨＭＩ）プログラムを実行する情報処理装置であって、
前記ＨＭＩプログラムを構成するユーザインターフェイス（ＵＩ）部品に紐付けられたオブジェクトコードを格納する格納手段と、
ＵＩ部品のソースコードから実行可能なオブジェクトコードを生成するコンパイラと、
前記ＨＭＩプログラムを実行する手段と、を備え、
前記実行する手段は、
前記ＨＭＩプログラムを実行する場合に、当該ＨＭＩプログラムを構成するＵＩ部品のオブジェクトコードとして、前記コンパイラにより生成されたオブジェクトコードおよび当該ＵＩ部品に紐付けられたオブジェクトコードのうちの一方を選択する手段を含む、情報処理装置。
【請求項２】
前記情報処理装置に対するユーザ操作を受付ける手段を、さらに備え、
前記選択する手段は、
受付けたユーザ操作内容を示す値が設定される入力パラメータと、前記入力パラメータに設定された値に従い、前記コンパイラにより生成されたオブジェクトコードおよび前記ＵＩ部品に紐付けられたオブジェクトコードのうちの一方の選択を指示する指令コードを有する関数を実行する、請求項１に記載の情報処理装置。
【請求項３】
前記関数は、前記ＵＩ部品から呼出される、請求項２に記載の情報処理装置。
【請求項４】
前記関数は、さらに、
前記入力パラメータに設定された値に従い前記コンパイラの起動を指示する指令コードを有する、請求項２または３に記載の情報処理装置。
【請求項５】
前記ユーザ操作を受付ける手段は、
前記情報処理装置のディスプレイに表示されるオブジェクトに対するユーザ操作を受付ける手段を含む、請求項２から４のいずれか１項に記載の情報処理装置。
【請求項６】
前記選択する手段により選択された前記一方が、前記コンパイラにより生成されたオブジェクトコードおよび当該ＵＩ部品に紐付けられたオブジェクトコードのうちのいずれであるかに従い、前記オブジェクトの表示態様を変化させる手段を、さらに備える、請求項５に記載の情報処理装置。
【請求項７】
前記関数は、さらに、
前記コンパイラにより生成されたオブジェクトコードが格納されているとの条件が満たされないときは、前記格納手段の前記オブジェクトコードの選択を指令するコードを有する、請求項２から６のいずれか１項に記載の情報処理装置。
【請求項８】
前記コンパイラにより生成されたオブジェクトコードが格納されているとの前記条件が満たされない場合に、その旨を記録する手段を、さらに備える、請求項７に記載の情報処理装置。
【請求項９】
前記コンパイラにより生成されたオブジェクトコードを用いて、前記格納手段の紐付けられたオブジェクトコードを上書きする、請求項１から８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記ソースコードを作成または編集するエディタを、さらに備える、請求項１から９のいずれか１項に記載の情報処理装置。
【請求項１１】
ＦＡ（ファクトリオートメーション）のためのヒューマンマシンインターフェイス（ＨＭＩ）プログラムを、コンピュータに実行させるためのプログラムであって、
前記コンピュータは、前記ＨＭＩプログラムを構成するユーザインターフェイス（ＵＩ）部品に紐付けられたオブジェクトコードを格納する格納手段を備え、
前記実行させるためのプログラムは、前記コンピュータに、
ＵＩ部品のソースコードから実行可能なオブジェクトコードを生成するコンパイラを起動させるステップと、
前記ＨＭＩプログラムを実行する場合に、当該ＨＭＩプログラムを構成するＵＩ部品のオブジェクトコードとして、前記コンパイラにより生成されたオブジェクトコードおよび当該ＵＩ部品に紐付けられたオブジェクトコードのうちの一方を選択させるステップとを含む、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置に関し、特に、プログラマブルコントローラ（以下、ＰＬＣという）などに代表されるような制御装置に適用されるヒューマンマシンインターフェイス（以下、ＨＭＩと略す）装置などの情報処理装置に関する。
【背景技術】
【０００２】
様々な生産および製造現場において、ＰＬＣなどの制御装置を用いたＦＡ（ファクトリオートメーション）技術が広く普及している。このような制御装置は、一種のコンピュータであり、製造装置や製造設備などのＦＡ機器に応じて、これらを制御するように設計された制御プログラムを実行する。また、ＦＡの分野に適用されるＨＭＩ装置は、制御プログラムとの間で変数のデータを遣り取りするＨＭＩプログラムを実行する。ＨＭＩプログラムが実行されることにより、ＦＡ機器の状態を表す変数のデータが、ＨＭＩプログラムを構成するＵＩ（ユーザインターフェイス）部品を用いて表示される。また、生産管理者などのユーザがＵＩ部品を操作して、制御プログラムが参照する変数にデータを設定することもできる。このようにＨＭＩプログラムは、制御プログラムとの間でデータを遣り取りする機能を備える。
【０００３】
このような背景のもと、製造現場では、ＨＭＩプログラムの実行を停止することなく、ＨＭＩプログラムを構成するＵＩ部品を変更し、変更後のＨＭＩプログラムの実行結果をその場で確認したいとの要望がある。しかし、従来は、開発環境で予め作成された実行可能なコードであるＵＩ部品のオブジェクトコード(拡張子がexeまたはdll)群を対象のＨＭＩ装置にロードすることにより、ＨＭＩ装置にＨＭＩプログラムが提供されていたので、製造現場でＵＩ部品を変更しようとする場合は、ＨＭＩプログラムの実行を停止して、全てのオブジェクトをＨＭＩ装置にロードしなおす必要があった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１２−５１２４８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１は、デバッギングのためのユーザ・スクリプト・コードの変換方法を開示するが、ＨＭＩプログラムの実行停止を伴わずに、ＵＩ部品の変更を可能にする方法は提供しない。
【０００６】
本開示は、ＨＭＩプログラムの実行を停止することなく、ＵＩ部品のオブジェクトコードを変更することができる環境を提供することを一つの目的としている。
【課題を解決するための手段】
【０００７】
本開示の一例にかかる情報処理装置は、ＦＡ（ファクトリオートメーション）のためのヒューマンマシンインターフェイス（ＨＭＩ）プログラムを実行する情報処理装置であって、ＨＭＩプログラムを構成するユーザインターフェイス（ＵＩ）部品に紐付けられたオブジェクトコードを格納する格納手段と、ＵＩ部品のソースコードから実行可能なオブジェクトコードを生成するコンパイラと、ＨＭＩプログラムを実行する手段と、を備え、実行する手段は、ＨＭＩプログラムを実行する場合に、当該ＨＭＩプログラムを構成するＵＩ部品のオブジェクトコードとして、コンパイラにより生成されたオブジェクトコードおよび当該ＵＩ部品に紐付けられたオブジェクトコードのうちの一方を選択する手段を含む。
【０００８】
この開示によれば、情報処理装置でＨＭＩプログラムを実行する場合に、当該ＨＭＩプログラムを構成するＵＩ部品のオブジェクトコードとして、コンパイラにより生成されたオブジェクトコードおよび当該ＵＩ部品に紐付けられたオブジェクトコードのうちの一方が選択される。これにより、ＨＭＩプログラムの実行を停止することなく、ＵＩ部品のオブジェクトコードを変更することが可能な環境が提供される。
【０００９】
上述の開示において、情報処理装置に対するユーザ操作を受付ける手段を、さらに備え、選択する手段は、受付けたユーザ操作内容を示す値が設定される入力パラメータと、入力パラメータに設定された値に従い、コンパイラにより生成されたオブジェクトコードおよびＵＩ部品に紐付けられたオブジェクトコードのうちの一方の選択を指示する指令コードを有する関数を実行する。
【００１０】
この開示によれば、ユーザは情報処理装置に対する操作により、いずれのオブジェクトコードを選択するかを示す値を関数の入力パラメータに設定することができる。このような入力パラメータの設定値に従い、関数が実行されることにより、コンパイラにより生成されたオブジェクトコードおよびＵＩ部品に紐付けられたオブジェクトコードのうちユーザ操作により指定された一方を選択することができる。
【００１１】
上述の開示において、関数は、ＵＩ部品から呼出される。
この開示によれば、関数は、ＨＭＩプログラムのＵＩ部品を実行するタイミングで呼出して実行することができる。
【００１２】
上述の開示において、関数は、さらに、入力パラメータに設定された値に従いコンパイラの起動を指示する指令コードを有する。
【００１３】
この開示によれば、関数を実行中にコンパイラが起動されて、コンパイラにより生成されたオブジェクトコードを取得することができる。
【００１４】
上述の開示において、ユーザ操作を受付ける手段は、情報処理装置のディスプレイに表示されるオブジェクトに対するユーザ操作を受付ける手段を含む。
【００１５】
この開示によれば、ユーザは、ディスプレイに表示されるオブジェクトを操作することにより、いずれのオブジェクトコードを選択するかを示す値を関数の入力パラメータに設定することができる。
【００１６】
上述の開示において、選択する手段により選択された一方が、コンパイラにより生成されたオブジェクトコードおよび当該ＵＩ部品に紐付けられたオブジェクトコードのうちのいずれであるかに従い、オブジェクトの表示態様を変化させる手段を、さらに備える。
【００１７】
この開示によれば、ユーザはディスプレイに表示されるオブジェクトを操作した場合、選択する手段により実際に選択された一方のオブジェクトが何であるかを、当該オブジェクトの表示態様の変化から確認することができる。
【００１８】
上述の開示において、関数は、さらに、コンパイラにより生成されたオブジェクトコードが格納されているとの条件が満たされないときは、格納手段のオブジェクトコードの選択を指令するコードを有する。
【００１９】
この開示によれば、関数が実行されることにより、コンパイラによるオブジェクトコードが存在しないと判定される場合は紐付けられたオブジェクトコードの方を選択させることができる。
【００２０】
上述の開示において、コンパイラにより生成されたオブジェクトコードが格納されているとの条件が満たされない場合に、その旨を記録する手段を、さらに備える。
【００２１】
この開示によれば、関数が実行されることにより、コンパイラによるオブジェクトコードが存在しないと判定される場合は、コンパイラにより生成されたオブジェクトコードが格納されていないとの情報を記録することができる。したがって、例えば、コンパイラが起動されたにもかかわらずコンパイラにより生成されるべきオブジェクトコードが格納されていないとのケースを記録しておくことができる。
【００２２】
上述の開示において、コンパイラにより生成されたオブジェクトコードを用いて、格納手段の紐付けられたオブジェクトコードを上書きする。
【００２３】
この開示によれば、紐付けられるオブジェクトコードを、コンパイラにより生成されたオブジェクトコードを用いて上書きすることで、紐付けられるオブジェクトコードを更新することができる。
【００２４】
上述の開示において、情報処理装置は、ソースコードを作成または編集するエディタを、さらに備える。
【００２５】
この開示によれば、ユーザは、コンパイラによりコンパイルされるＵＩ部品のソースコードを、エディタを用いて編集または作成することができる。
【００２６】
本開示の一例によれば、ＦＡ（ファクトリオートメーション）のためのヒューマンマシンインターフェイス（ＨＭＩ）プログラムを、コンピュータに実行させるためのプログラムが提供される。
【００２７】
上記のコンピュータは、ＨＭＩプログラムを構成するユーザインターフェイス（ＵＩ）部品に紐付けられたオブジェクトコードを格納する格納手段を備える。上記の実行させるためのプログラムは、コンピュータに、ＵＩ部品のソースコードから実行可能なオブジェクトコードを生成するコンパイラを起動させるステップと、ＨＭＩプログラムを実行する場合に、当該ＨＭＩプログラムを構成するＵＩ部品のオブジェクトコードとして、コンパイラにより生成されたオブジェクトコードおよび当該ＵＩ部品に紐付けられたオブジェクトコードのうちの一方を選択させるステップとを含む。
【００２８】
この開示によれば、ＨＭＩプログラムを実行する場合に、当該ＨＭＩプログラムを構成するＵＩ部品のオブジェクトコードとして、コンパイラにより生成されたオブジェクトコードおよび当該ＵＩ部品に紐付けられたオブジェクトコードのうちの一方が選択される。これにより、ＨＭＩプログラムの実行を停止することなく、ＵＩ部品のオブジェクトコードを変更することが可能な環境が提供される。
【発明の効果】
【００２９】
本開示の一例によれば、ＨＭＩプログラムの実行を停止することなく、ＵＩ部品のオブジェクトコードを変更可能な環境を提供することができる。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施の形態に係るシステム１の構成を模式的に示す図である。
【図２】本発明の実施の形態にかかるＩＰＣ１００のハードウェア構成の一例を模式的に示す図である。
【図３】本発明の実施の形態にかかるＨＭＩ装置２００のハードウェア構成の一例を模式的に示す図である。
【図４】本発明の実施の形態に係るＩＰＣ１００のソフトウェア構成の一例を示す模式図である。
【図５】本発明の実施の形態にかかるＵＩ部品のオブジェクトコードの生成と選択の概要を模式的に示す図である。
【図６】本発明の実施の形態にかかる関数５００の指令コードの内容を、オブジェクトコードの生成と選択の流れと関連付けて模式的に示す図である。
【図７】本発明の実施の形態にかかる関数５００の指令コードの記述の一例を示す図である。
【図８】本発明の実施の形態にかかる処理の一例を示す概略フローチャートである。
【図９】本発明の実施の形態にかかるディスプレイ１１７における画面の表示例を模式的に示す図である。
【図１０】本発明の実施の形態にかかる切替ＧＵＩ１１７２の表示態様の切替えの一例を模式的に示す図である。
【発明を実施するための形態】
【００３１】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００３２】
＜Ａ．適用例＞
まず、図１を参照して、本発明が適用される場面の一例について説明する。図１は、本発明の実施の形態に係るシステム１の構成を模式的に示す図である。システム１は、ＦＡの製造装置や製造設備などの制御対象である１または複数のデバイス３００、デバイス３００の制御装置に相当するＩＰＣ（産業用コンピュータ）１００およびＰＬＣ１０１、ＨＭＩ装置２００、および汎用コンピュータに相当するサポート装置４を備える。デバイス３００は、ＥｔｈｅｒＣＡＴ（登録商標）などのネットワークを介してＩＰＣ１００およびＰＬＣ１０１と通信する。ＰＬＣ１００はデバイス３００の制御プログラム１１１を実行する。ＨＭＩ装置２００は、ＰＬＣ１００で実行される制御プログラム１１１とデータを遣り取りするＨＭＩプログラム１１２を実行する。ＩＰＣ１００は制御プログラム１１１を実行するとともに、当該制御プログラム１１１とデータを遣り取りするＨＭＩプログラム１１２を実行する。したがって、ＩＰＣ１００は、制御装置とＨＭＩ装置２００の両方の役割を有する。
【００３３】
サポート装置４は、制御プログラム１１１およびＨＭＩプログラム１１２を開発し、開発された制御プログラム１１１をＩＰＣ１００およびＰＬＣ１０１に転送（ロード）し、また開発されたＨＭＩプログラム１１２をＨＭＩ装置２００に転送する。ＩＰＣ１００とＨＭＩ装置２００は、ＨＭＩプログラム１１２を実行する情報処理装置の一例である。また、サポート装置４は、ＨＭＩプログラム１１２を構成するＵＩ部品５０１を開発し、ＵＩ部品５０１のオブジェクトコードをＩＰＣ１００およびＨＭＩ装置２００に転送する。ＩＰＣ１００およびＨＭＩ装置２００は、ＵＩ部品５０１に紐付けられたオブジェクトコードを格納する格納手段に相当するライブラリ１１３を備える。なお、この紐付けは、例えば、ＵＩ部品５０１のＩＤコードを用いて実現される。
【００３４】
本開示では「ＨＭＩプログラム」１１２は、ＩＰＣ１００のディスプレイ１１７またはＨＭＩ装置２００のディスプレイ２１４に表示させる画面に対応する１または複数のページを記載するアプリケーションプログラムである。ＨＭＩプログラム１１２の各ページのプログラムが実行されるとディスプレイに画面が表示される。ＨＭＩプログラム１１２の画面は、１または複数のＵＩ部品５０１から構成される。本開示では、ＨＭＩプログラム１１２の実行により表示される画面を「ＨＭＩ画面」とも称する。
【００３５】
また、「ＵＩ部品」５０１は、画像データ、テキストデータ、プログラムコードなどを含む。ＨＭＩプログラム１１２が実行されて画面が表示されるとき、ＵＩ部品５０１が実行されることによって、画面を構成する画面部品が表示される。画面部品は、絵、文字列などの各種オブジェクトを含む。また、ＵＩ部品５０１のプログラムコードが実行されることによる機能（画面部品の表示、データ入出力、操作受付などの機能）が提供される。プログラムコードは、例えばスクリプトコードを含むが、プログラムコードの種類はスクリプトコードに限定されない。ＵＩ部品５０１のうち画面部品を提供する部品を、ＧＵＩ（グラフィカルユーザインターフェイス）部品とも称する。
【００３６】
「ライブラリ」１１３は、ＨＭＩプログラム１１２で利用（再利用）できるＵＩ部品５０１のライブラリ（ファイル）である。ライブラリ１１３には、ＵＩ部品５０１が、ＩＰＣ１００またはＨＭＩ装置２００で実行可能なオブジェクトコードの形式で格納される。
【００３７】
ＩＰＣ１００またはＨＭＩ装置２００でＨＭＩプログラム１１２が実行されると、当該ＨＭＩプログラム１１２を構成するＵＩ部品５０１に紐付けられたオブジェクトコードがライブラリ１１３から呼出されて、呼出されたオブジェクトコードが実行される。これにより、ディスプレイ１１７，２１４にＵＩ部品５０１を含むＨＭＩ画面が表示される。
【００３８】
ＩＰＣ１００またはＨＭＩ装置２００では、ＵＩ部品５０１に紐づけられたオブジェクトコードを実行することで実現される機能を、ＨＭＩプログラム１１２の実行を停止させることなく、動的に変更することができる。
【００３９】
具体的には、ＩＰＣ１００またはＨＭＩ装置２００が備えるテキストエディタ１１６２を用いて、ＵＩ部品５０１が備える機能を記述するプログラムコードであるソースコードが作成または編集される。コンパイラ１１６３はＵＩ部品５０１のソースコードを受付けて、受付けたソースコードをコンパイルして、実行可能なオブジェクトコードを生成する。ＩＰＣ１００またはＨＭＩ装置２００は、ＨＭＩプログラム１１２を実行する場合に、ＨＭＩプログラム１１２を構成するＵＩ部品５０１のオブジェクトコードとして、コンパイルによって生成されたオブジェクトコードおよび当該ＵＩ部品５０１に紐付けられたライブラリ１１３のオブジェクトコードのうちの一方を選択する。
【００４０】
このように、コンパイラ１１６３および参照するオブジェクトコードを選択するための機能がＩＰＣ１００またはＨＭＩ装置２００において実装される。
【００４１】
これにより、ＩＰＣ１００またはＨＭＩ装置２００で実行されるＨＭＩプログラム１１２を構成するＵＩ部品５０１のオブジェクトコードを変更する場合に、ＨＭＩプログラム１１２の実行を停止して、サポート装置４から当該オブジェクトを再ロードする必要はない。
【００４２】
また、ＩＰＣ１００またはＨＭＩ装置２００では、作成または編集されたＵＩ部品５０１のソースコードをコンパイルして得られたオブジェクトコードが実行された場合、ディスプレイ１１７（またはディスプレイ２１４）のＨＭＩ画面を構成する画面部品の表示態様の変化として提示することが可能となる。これにより、ＩＰＣ１００またはＨＭＩ装置２００は、ＵＩ部品５０１のソースコードに関するデバッグを含む開発環境も提供し得る。
【００４３】
また、ＩＰＣ１００またはＨＭＩ装置２００では、コンパイラ１１６３により生成されたオブジェクトコードを用いて、ＵＩ部品５０１に紐付けられたライブラリ１１３中のオブジェクトコードが上書きされる。この上書きは、例えばＩＰＣ１００またはＨＭＩ装置２００の再起動時などに実施され得る。これにより、ＵＩ部品５０１に紐付けされるオブジェクトコードを、コンパイラ１１６３により生成されたオブジェクトコードに変更することが可能となる。
【００４４】
また、上記に述べたオブジェクトコードの選択は、ＩＰＣ１００またはＨＭＩ装置２００が受付けたユーザ操作内容を示す値が設定される入力パラメータを有した関数５００が実行されることで実現され得る。関数５００は、入力パラメータに設定された値に従い、コンパイラ１１６３により生成されたオブジェクトコードおよびＵＩ部品５０１に紐付けられたライブラリ１１３のオブジェクトコードのうちの一方の選択を指示する指令コードを有する。
【００４５】
コンパイラ１１６３により生成されたオブジェクトコードは、紐付けされたオブジェクトコードが格納される記憶領域（すなわちライブラリ１１３）とは異なる領域に格納される。これにより、上記のオブジェクトコードの選択は、オブジェクトコードを呼出すための参照先の記憶領域を異ならせることでも実現することができる。
【００４６】
また、関数５００は、さらに、入力パラメータに設定された値に従いコンパイラ１１６３を起動させる指令コードも有する。これにより、関数５００が呼出されたときに限り、コンパイラ１１６３を起動させることが可能となる。したがって、予めコンパイラ１１６３を起動させてオブジェクトコードを作成し格納しておくケースに比較して記憶領域を節約することができる。
【００４７】
以下、本開示のより具体的な応用例を詳細に説明する。なお、応用例では、ＩＰＣ１００においてＨＭＩプログラム１１２を実行するケースを例に説明するが、ＨＭＩ装置２００においてＨＭＩプログラム１１２を実行するケースであっても同様の実施例を適用することができるので、説明は繰返さない。
【００４８】
＜Ｂ．ＩＰＣ１００のハードウェア構成例＞
図２は、本発明の実施の形態にかかるＩＰＣ１００のハードウェア構成の一例を模式的に示す図である。図２を参照して、ＩＰＣ１００は、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro-Processing Unit）などのプロセッサ１０２と、チップセット１０４と、メインメモリ１０６と、フラッシュメモリ１０８と、外部ネットワークコントローラ１１６と、メモリカードインターフェイス１１８と、ディスプレイ１１７を制御する表示ドライバ１１９と、入力インターフェイス１２１と、内部バスコントローラ１２９と、フィールドバスコントローラ１２４とを含む。入力インターフェイス１２１は、ＩＰＣ１００に対するユーザ操作を受付ける操作受付部の一実施列であるキーボード１２２を制御する。ここでは、ディスプレイ１１７とキーボード１２２は、一体的に構成されたタッチパネルとして提供されてもよい。
【００４９】
プロセッサ１０２は、フラッシュメモリ１０８に格納されたシステムプログラム１１０およびユーザプログラムを読み出して、メインメモリ１０６に展開して実行することで、デバイス３００またはフィールド機器などの制御対象に対する制御処理またはＨＭＩ処理を実現する。
【００５０】
システムプログラム１１０は、データの入出力処理や実行タイミング制御などの、ＩＰＣ１００の基本的な機能を提供するための命令コードを含む。ユーザプログラムは、制御プログラム１１１、ＨＭＩプログラム１１２、Runtime６００およびライブラリ１１３を含む。制御プログラム１１１は、シーケンス制御を実行するためのシーケンスプログラムおよびモーション制御を実行するためのモーションプログラムなどを含む。Runtime６００は、ＨＭＩプログラム１１２を実行する手段の一実施例であって、実行されるとＨＭＩプログラム１１２を実行するための環境を提供する。
【００５１】
ライブラリ１１３には、ＵＩ部品５０１および制御プログラム１１１を構成する各種の関数などが、実行可能コード（例えば、中間コード）であるオブジェクトコードの態様で登録される。本実施の形態では、ＨＭＩプログラム１１２を構成するＵＩ部品５０１は、ライブラリ１１３のＵＩ部品オブジェクトコード５０２と紐付けされる。
【００５２】
フラッシュメモリ１０８は、さらにシステム変数、デバイス変数およびユーザ変数などを含む変数テーブル１１４６を格納する。プロセッサ１０２は、変数テーブル１１４６の変数に設定された制御指令値などを参照しながら制御プログラム１１１を実行し、デバイス３００の状態値などを変数テーブル１１４６の変数に設定する。また、プロセッサ１０２は、変数テーブル１１４６の変数に設定された値を参照しながらＨＭＩプログラム１１２を実行し、また、ＵＩ部品５０１の画面部品から受付けたユーザ操作内容に従う値を変数テーブル１１４６の変数に設定する。これにより、変数テーブル１１４６の変数を介して、デバイス３００の状態値をＵＩ部品５０１の画面部品で表示することができ、また、画面部品から受付けたユーザ操作に従う値による制御指令値を用いてデバイス３００を制御することが可能となる。
【００５３】
また、フラッシュメモリ１０８は、コンパイラ１１６３が生成したＵＩ部品５０１のオブジェクトコードであるコンパイル後オブジェクトコード７０１（後述する）を格納するためのオブジェクトコード格納領域Ｅ１を有する。
【００５４】
チップセット１０４は、各コンポーネントを制御することで、ＩＰＣ１００全体としての処理を実現する。
【００５５】
内部バスコントローラ１２９は、ＩＰＣ１００と内部バスを通じて連結されるＩ／Ｏユニット１４との間でデータを遣り取りするインターフェイスである。フィールドバスコントローラ１２４は、ＩＰＣ１００と図示しないフィールドバスを通じて連結されるＩ／Ｏユニット１６との間でデータを遣り取りするインターフェイスである。内部バスコントローラ１２９およびフィールドバスコントローラ１２４は、対応のＩ／Ｏユニット１４および１６にそれぞれ入力される状態値を取得するとともに、プロセッサ１０２での演算結果を対応のＩ／Ｏユニット１４および１６から制御指令値としてそれぞれ出力する。
【００５６】
外部ネットワークコントローラ１１６は、各種の有線／無線ネットワークを通じたデータの遣り取りを制御する。メモリカードインターフェイス１１８は、メモリカード１２０を着脱可能に構成されており、メモリカード１２０に対してデータを書込み、メモリカード１２０からデータを読出すことが可能になっている。ＩＰＣ１００は、外部ネットワークコントローラ１１６またはメモリカードインターフェイス１１８を介してサポート装置４または他の制御装置（ＰＬＣ１０１など）とデータを遣り取りする。
【００５７】
ＰＬＣ１００がプログラムを実行することで提供される機能の一部または全部を専用のハードウェア回路として実装してもよい。
【００５８】
＜Ｃ．ＨＭＩ装置２００のハードウェア構成例＞
次に、ＨＭＩ装置２００のハードウェア構成例について説明する。図３は、本発明の実施の形態にかかるＨＭＩ装置２００のハードウェア構成の一例を模式的に示す図である。図３を参照して、ＨＭＩ装置２００は、据え置き型でもよく、または製造現場では可搬性に優れたノート型のパーソナルコンピュータの形態で提供されてもよい。
【００５９】
ＨＭＩ装置２００は、ＯＳ（Operating  System）を含む各種プログラムを実行するＣＰＵ２０２と、ＢＩＯＳや各種データを格納するＲＯＭ（Read  Only  Memory）１０４と、ＣＰＵ２０２でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ（Random  Access  Memory）２０６と、ＣＰＵ２０２で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）２０８とを含む。
【００６０】
ＨＭＩ装置２００は、さらに、ＨＭＩ装置２００に対するユーザの操作を受付けるキーボード２１０およびマウス２１２を含む入力部２１１と、情報をユーザに提示するためのディスプレイ２１４とを含む。ＨＭＩ装置２００は、ＰＬＣ１０１またはサポート装置４と通信するための通信インターフェイス２１８を含む。入力部２１１は、ディスプレイ２１４と一体的に構成されるタッチパネルとして提供されてもよい。
【００６１】
ＨＭＩ装置２００は、記録媒体２５０からそれに格納されているプログラムを読み取るための記録媒体読取装置２１７を含む。
【００６２】
＜Ｄ．ＩＰＣ１００のソフトウェア構成＞
図４は、本発明の実施の形態に係るＩＰＣ１００のソフトウェア構成の一例を示す模式図である。図４を参照して、ＩＰＣ１００では、ハイパーバイザがＩＰＣ１００のハードウェアリソースを管理するとともに、リアルタイムＯＳ１１４およびWindows（登録商標）などの汎用ＯＳ１１６１に対して、これらのハードウェアリソースを調停しながら割当てることで、共通のハードウェアリソース上で、互いに独立したリアルタイムＯＳ１１４および汎用ＯＳ１１６１を実行させる。すなわち、ハイパーバイザを用いて、異なる種類のＯＳを実行する仮想化環境を実現する。リアルタイムＯＳ１１４と汎用ＯＳ１１６１との間は、ハイパーバイザを介して、論理的なネットワークが構成されている。
【００６３】
リアルタイムＯＳ１１４では、制御プログラム１１１が実行される。制御プログラム１１１の実行にあたって、変数マネージャ１１４２と、タスクスケジューラ１１４３と、プログラムマネージャ１１４４と、Ｉ／Ｏ（Input/Output）制御プログラム１１４５とが連係する。このような連携により、制御対象であるデバイス３００からの信号の取得、制御ロジックの実行、実行結果の反映（アクチュエータの制御）を繰返す。制御プログラム１１１の実行時において、変数マネージャ１１４２は、Ｉ／Ｏユニット１４または１６を介して入出力する状態値または制御指令値を変数テーブル１１４６の変数に設定する。
【００６４】
一方、汎用ＯＳ１１６１の下では、任意のユーザアプリケーションである例えばＨＭＩプログラム１１２を含むユーザアプリケーション１１６４、汎用アプリケーション１１６５、テキストエディタ１１６２、コンパイラ１１６３およびRuntime６００を備える。汎用アプリケーション１１６５は、汎用ＯＳ１１６１で実行可能な標準的なアプリケーションであり、ＨＭＩプログラム１１２などのユーザアプリケーションと連係することで、汎用的な処理や機能を用いて、より少ない工数でシステムを構築することができる。
【００６５】
テキストエディタ１１６２は、キーボード１２２を介して受付けたユーザ操作に従いＵＩ部品５０１のソースコードを作成または編集する。ソースコードとして、本実施の形態では、例えばJava（登録商標）スクリプトを例示するが、ソースコードの種類はスクリプトに限定されない。
【００６６】
コンパイラ１１６３は、ソースコードを受付けて、受付けたソースコードをコンパイルし、オブジェクトコードを生成する。コンパイラ１１６３は、フラッシュメモリ１０８の記憶領域からソースコード７００を読出すことにより、ソースコード７００を受付ける。または、フラッシュメモリ１０８の記憶領域に格納されるソースコード７００は、テキストエディタ１１６２により作成または編集されたソースコードを含むが、テキストエディタ１１６２により作成または編集されたソースコードに限定されない。例えば、ソースコードを格納したメモリカード１２０から、メモリカードインターフェイス１１８を介して読出されたソースコードであってもよい。
【００６７】
これにより、コンパイル後オブジェクトコード７０１が取得される。ソースコードがスクリプトである場合、コンパイラ１１６３としてスクリプトに適合したスクリプトコンパイラが適用される。
【００６８】
Runtime６００は、ＨＭＩプログラム１１２の実行時に呼出し可能な関数５００を備える。関数５００のコードは、ＨＭＩプログラム１１２を構成するＵＩ部品５０１のオブジェクトコードとして、コンパイル後オブジェクトコード７０１およびＵＩ部品５０１に紐付けられたライブラリ１１３のＵＩ部品オブジェクトコード５０２のうちの一方の選択を指示する指令コードを含む。関数５００の指令コードの詳細は後述する。
【００６９】
＜Ｅ．ＵＩ部品のオブジェクトコードの生成と選択＞
図５は、本発明の実施の形態にかかるＵＩ部品のオブジェクトコードの生成と選択の概要を模式的に示す図である。図５を参照して、ＩＰＣ１００の汎用ＯＳ（Windows）の下でテキストエディタ１１６２と、Runtaime６００が実行可能である。Runtime６００が実行されることにより、ＨＭＩプログラム１１２を実行するための実行環境が提供される。実行環境の下では、コンパイラ１１６３を実行することができる。
【００７０】
図５を参照して、テキストエディタ１１６２は、キーボード１２２を介したユーザの操作内容を受付けて、受付けた操作内容に従いＵＩ部品のスクリプトを作成または編集する。作成または編集されたスクリプトを含むソースコード７００はフラッシュメモリ１０８の予め定められた記憶領域に格納される。
【００７１】
Runtime６００は、キーボード１２２を介して予め定められたユーザ操作を受付けたときフラグ６０２に操作内容に従う値を設定する。フラグ６０２は、ＨＭＩプログラム１１２を構成するＵＩ部品５０１のオブジェクトコードとして、コンパイル後オブジェクトコード７０１およびライブラリ１１３の中の紐付けされたＵＩ部品オブジェクトコード５０２のいずれを実行するべきかを指示する値が設定される。フラグ６０２には、例えば「True」または「false」の値が設定される。
【００７２】
また、Runtime６００は、ＨＭＩプログラム１１２を構成するＵＩ部品５０１のオブジェクトコードを実行するとき、当該オブジェクトコードの実行により関数５００が呼出される。Runtime６００は、呼出された関数５００を実行するとき、フラグ６０２の値を、関数５００の入力パラメータの値として設定し、入力パラメータの値に基き当該関数５００の指令コードを実行する。この指令コードは、Runtime６００が実行可能なコードを表す。
【００７３】
関数５００が実行される場合、入力パラメータの値に従いコンパイラ１１６３が起動される。コンパイラ１１６３が起動されると、コンパイラ１１６３は、対象のソースコード７００を受付けて、受付けたソースコード７００をコンパイルし、コンパイル後オブジェクトコード７０１を生成する。
【００７４】
コンパイル後オブジェクトコード７０１は、フラッシュメモリ１０８のオブジェクトコード格納領域Ｅ１に格納される。これにより、ＩＰＣ１００では、ＨＭＩプログラム１１２のＵＩ部品５０１のオブジェクトコードとして、ライブラリ１１３中の紐付けられたＵＩ部品オブジェクトコード５０２およびオブジェクトコード格納領域Ｅ１のコンパイル後オブジェクトコード７０１を備えることができる。
【００７５】
ＨＭＩプログラム１１２の実行中にＵＩ部品５０１を実行する場合は、関数５００が実行されることにより、フラグ６０２に値に従い、ＵＩ部品５０１のオブジェクトコードとして、ライブラリ１１３中のＵＩ部品５０１に紐付けられたＵＩ部品オブジェクトコード５０２およびオブジェクトコード格納領域Ｅ１のコンパイル後オブジェクトコード７０１のうちの一方が選択的に読出されて実行される。
【００７６】
＜Ｆ．関数の処理内容と指令コード＞
図６は、本発明の実施の形態にかかる関数５００の指令コードの内容を、オブジェクトコードの生成と選択の流れと関連付けて模式的に示す図である。図７は、本発明の実施の形態にかかる関数５００の指令コードの記述の一例を示す図である。図７を参照して、関数５００はスクリプト形式による指令コード５１１〜５１６を含む。指令コード５１１〜５１６のそれぞれが実行されると、図６中に示す対応の処理Ｐ５１１〜Ｐ５１６が実現される。
【００７７】
図６を参照して、Windowsの実行環境のもとで各種アプリケーションを実行する.ＮＥＴ環境が提供される。.ＮＥＴ環境のもとでRuntime６００を実行することによりＨＭＩプログラムの実行環境であるＨＭＩ実行環境が提供される。ＨＭＩ実行環境においては、関数５００などの各種スクリプトを処理するスクリプト処理部６０１が動作する。
【００７８】
まず、スクリプト処理部６０１は、ディスプレイ１１７に表示される画面部品である切替ＧＵＩ１１７２を介して受付けたユーザ操作内容に基づく値をフラグ６０２に設定する。切替ＧＵＩ１１７２については後述する。なお、当該ユーザ操作内容は、キーボード１２２を介して受付けてもよい。
【００７９】
ＨＭＩプログラム１１２のＵＩ部品５０１が実行されると、スクリプト処理部６０１が呼出される。スクリプト処理部６０１は関数５００を実行する。
【００８０】
関数５００が実行されると、フラグ６０２の値がチェックされる（処理Ｐ５１１）。チェックによりフラグ６０２は「True」と判定されると、スクリプト処理部６０１はコンパイラ１１６３を起動する。コンパイラ１１６３は、予め記憶されたスクリプトパス６０３に基づきフラッシュメモリ１０８からソースコード７００をアクセス（抽出）する（処理Ｐ５１２）。コンパイラ１１６３は、アクセスされたソースコード７００をコンパイルすることにより、コンパイル後オブジェクトコード７０１を生成する（処理Ｐ５１３）。コンパイル後オブジェクトコード７０１は、フラッシュメモリ１０８のオブジェクトコード格納領域Ｅ１に格納される。
【００８１】
次に、呼出し部のコードが実行される（処理Ｐ５１４）。呼出し部は、フラグ６０２の値に基き、ライブラリ１１３のＵＩ部品５０１に紐付けられたＵＩ部品オブジェクトコード５０２の呼出し（処理Ｐ５１６）およびオブジェクトコード格納領域Ｅ１のコンパイル後オブジェクトコード７０１の呼出し（処理Ｐ５１５）のうちの一方を選択する。スクリプト処理部６０１は、選択された方の記憶領域からオブジェクトコードを呼出し実行する。
【００８２】
これにより、スクリプト処理部６０１の呼出し元であるＨＭＩプログラム１１２のＵＩ部品５０１のオブジェクトコードが実行される。その実行結果は、例えばＵＩ部品５０１による画面部品の表示態様の変更などにより出力される。
【００８３】
なお、図６では、スクリプト呼出し部５０４は、フラグ６０２の値に基き、紐付けられたＵＩ部品オブジェクトコード５０２の呼出し（処理Ｐ５１６）およびコンパイル後オブジェクトコード７０１の呼出し（処理Ｐ５１５）のうちの一方を選択したが、選択の基準はフラグ６０２の値に限定されない。例えば、図７の指令コード５１４に示されるように、オブジェクトコード格納領域Ｅ１にコンパイル後オブジェクトコード７０１が格納（ロード）されているか否かの判断に基づき、紐付けられたＵＩ部品オブジェクトコード５０２の呼出し（処理Ｐ５１６）およびコンパイル後オブジェクトコード７０１の呼出し（処理Ｐ５１５）のうちの一方を選択するとしてもよい。
【００８４】
＜Ｇ．処理フローチャート＞
図８は、本発明の実施の形態にかかる処理の一例を示す概略フローチャートである。図８に従い処理を説明する。まず、テキストエディタ１１６２はキーボード１２２を介して受付けるユーザ操作内容に基づくスクリプト形式のソースコード７００を編集または作成する（ステップＳ３）。ソースコード７００はファイル形式でフラッシュメモリ１０８に格納される。
【００８５】
スクリプト処理部６０１は、ソースコード７００のファイルの格納場所を示すファイルパスをスクリプトパス６０３に設定する（ステップＳ５）。また、スクリプト処理部６０１は、切替ＧＵＩ１１７２を介して受付けたユーザ操作内容に従う値をフラグ６０２に設定する（ステップＳ７）。
【００８６】
スクリプト処理部６０１は、コンパイラ１１６３を呼出し（ステップＳ９）、呼出されたコンパイラ１１６３はスクリプトパス６０３に設定されたファイルパスに従い、フラッシュメモリ１０８からソースコード７００を読出し、読出されたソースコード７００をコンパイルする（ステップＳ１１）。これにより、コンパイル後オブジェクトコード７０１が生成されて、オブジェクトコード格納領域Ｅ１に格納される。
【００８７】
なお、ステップＳ９におけるコンパイラ１１６３を呼出す時期は、ＨＭＩプログラム１１２の実行中にＵＩ部品５０１が実行されるタイミング（時期）に限定されず、他のタイミングであってもよい。他のタイミングとしては、例えば、ソースコード７００が編集または作成されたタイミング、またはユーザが指定したタイミングなどを含み得る。
【００８８】
スクリプト処理部６０１は関数５００を呼出し、関数５００の指令コードを実行する。まず、フラグ６０２の値を判定し（ステップＳ１３）、その判定結果に基く、オブジェクトのコードの呼出しが実施される。
【００８９】
スクリプト処理部６０１は、フラグ６０２の値が「True」ではないと判定すると（ステップＳ１３でＮＯ）、スクリプト処理部６０１はライブラリ１１３のＵＩ部品５０１に紐付けられたＵＩ部品オブジェクトコード５０２を呼出す（ステップＳ２１）。
【００９０】
一方、フラグ６０２の値が「True」であると判定すると（ステップＳ１３でＹＥＳ）、スクリプト処理部６０１は、コンパイル後オブジェクトコード７０１が存在するか否か、すなわちオブジェクトコード格納領域Ｅ１にコンパイル後オブジェクトコード７０１が格納されているかを判定する（ステップＳ１５）。
【００９１】
スクリプト処理部６０１は、コンパイル後オブジェクトコード７０１が存在する、すなわちオブジェクトコード格納領域Ｅ１にコンパイル後オブジェクトコード７０１が格納されていると判定すると（ステップＳ１５でＹＥＳ）、スクリプト処理部６０１はオブジェクトコード格納領域Ｅ１からコンパイル後オブジェクトコード７０１を呼出す（ステップＳ１７）。
【００９２】
スクリプト処理部６０１は、コンパイル後オブジェクトコード７０１を呼出したとき、ディスプレイ１１７の切替ＧＵＩ１１７２である画面部品を所定の表示態様に変更する（ステップＳ１９）。これにより、ユーザに対して、ＵＩ部品５０１のオブジェクトコードとしてコンパイル後オブジェクトコード７０１が選択されて、オブジェクトコード格納領域Ｅ１から呼出されて実行される旨の通知を出力することができる。
【００９３】
ステップＳ１５に戻り、スクリプト処理部６０１は、コンパイル後オブジェクトコード７０１が存在しない、すなわちオブジェクトコード格納領域Ｅ１にコンパイル後オブジェクトコード７０１が格納されていないと判定すると（ステップＳ１５でＮＯ）、スクリプト処理部６０１は、ＵＩ部品５０１に紐付けられたライブラリ１１３のＵＩ部品オブジェクトコード５０２を呼出すとともに、フラッシュメモリ１０８の読出し可能なログファイルに異常のデータを記録する（ステップＳ２３）。
【００９４】
この異常のデータは、例えば、その時のフラグ６０２の値（「True」）と、コンパイル後オブジェクトコード７０１が無かった旨のデータを含む。したがって、ユーザは、その後にログファイルを出力して解析することで、異常を知ることができる。
【００９５】
＜Ｈ．表示例＞
図９は、本発明の実施の形態にかかるディスプレイ１１７における画面の表示例を模式的に示す図である。図９（Ａ）は、例えばテキストエディタ１１６２によりソースコード７００を編集または作成する時のディスプレイ１１７の画面例を示す。この画面は、例えばウインドウＷ１とＷ２に分割されて、ウインドウＷ１にはＨＭＩプログラム１１２が実行されることによるＨＭＩ画面が表示されて、ウインドウＷ２にはテキストエディタ１１６２が実行されることによるソースコード７００の編集または作成の画面が表示されている。
【００９６】
ソースコード７００の編集または作成が終了すると、ウインドウＷ２が消去されて、画面は、例えば図９（Ｂ）に切替わる。図９（Ｂ）の画面においては、スクリプト処理部６０１により切替ＧＵＩ１１７２と上書きＧＵＩ１１７３のアイコンも表示される。
【００９７】
切替ＧＵＩ１１７２がユーザにより操作されると、スクリプト処理部６０１は切替ＧＵＩ１１７２の操作内容を受付けて、受付けた操作内容に基づき、フラグ６０２に「True」または「False」を設定する。
【００９８】
このように、切替ＧＵＩ１１７２から受付けたユーザ操作内容に従う値がフラグ６０２に設定されることにより、ソースコード７００をコンパイルすることによるコンパイル後オブジェクトコード７０１の生成の指示、またはＵＩ部品５０１のオブジェクトコードとして、紐付けられたＵＩ部品オブジェクトコード５０２からコンパイル後オブジェクトコード７０１に切替えることの指示を、スクリプト処理部６０１に与えることができる。
【００９９】
ここで、図９（Ｂ）は、ＵＩ部品５０１のオブジェクトコードとしてコンパイル後オブジェクトコード７０１が実行されたＨＭＩ画面とすれば、図９（Ａ）の画面部品Ｖ１の表示色は、コンパイル後オブジェクトコード７０１が実行されることにより、図９（Ｂ）のように別の色に変化している。ユーザは、画面部品Ｖ１の表示色が変化したことから、生成または編集したソースコード７００の適否を判断する、すなわちデバッグするための判断指標を得ることができる。なお、画面部品Ｖ１の表示態様の変化は色に限定されず、例えば形状であってもよい。
【０１００】
これにより、サポート装置４などの開発環境を備えない環境であっても、例えば製造現場などのようにＨＭＩプログラム１１２の開発環境を備えない環境であっても、ＨＭＩプログラム１１２を構成するＵＩ部品５０１のソースコードまたはオブジェクトコードを作成または編集することで動的に変更し、変更後のコードによるＨＭＩプログラム１１２の実行結果をリアルタイムにモニタすることができる。このことは、ＩＰＣ１００またはＨＭＩ装置２００において、サポート装置４などと同様にＨＭＩプログラム１１２のエディトとデバッグを含む開発環境の提供を可能にする。
【０１０１】
図１０は、本発明の実施の形態にかかる切替ＧＵＩ１１７２の表示態様の切替えの一例を模式的に示す図である。例えば、スクリプト処理部６０１は、切替ＧＵＩ１１７２のスクリプトを実行することにより、切替ＧＵＩ１１７２の表示態様を切替える。例えば、紐付けられたＵＩ部品オブジェクトコード５０２が実行される場合は、切替ＧＵＩ１１７２の図１０（Ａ）のように表示されて、図８のステップＳ１９でコンパイル後オブジェクトコード７０１が実行される場合は、切替ＧＵＩ１１７２は図１０（Ｂ）のように表示される。切替ＧＵＩ１１７２の表示態様の切替えにより、ユーザに対し、紐付けられたＵＩ部品オブジェクトコード５０２およびコンパイル後オブジェクトコード７０１のいずれが実行されるかを示す通知を出力することができる。なお、切替ＧＵＩ１１７２の表示態様の切替えは図１０の態様に限定されない。
【０１０２】
＜Ｉ．オブジェクトコードの上書き＞
本発明の実施の形態では、ユーザは上書きＧＵＩ１１７３を操作した場合、ライブラリ１１３のＵＩ部品５０１に紐付けられたＵＩ部品オブジェクトコード５０２は、オブジェクトコード格納領域Ｅ１のコンパイル後オブジェクトコード７０１を用いて上書きされる。これにより、ライブラリ１１３のＵＩ部品５０１に紐付けされたＵＩ部品オブジェクトコード５０２を、サポート装置４からのオブジェクトコードのロードなしに、ＩＰＣ１００で生成したコンパイル後オブジェクトコード７０１を用いて更新することができる。この上書きを実施するタイミングは、例えば、ＩＰＣ１００の再起動時が含まれる。
【０１０３】
ここで、上記の（背景技術）でも述べたように、ＩＰＣ１００またはＨＭＩ装置２００のライブラリ１１３内のオブジェクトコードの一部を変更する場合であっても、ライブラリ１１３内の全てのオブジェクトコードを配置（ロード）し直す必要があったが、本実施の形態では、このような再ロードは必要ない。すなわち、上書きＧＵＩ１１７３を操作することで、ライブラリ１１３のＵＩ部品５０１に紐付けされたＵＩ部品オブジェクトコード５０２のみを対象に、コンパイル後オブジェクトコード７０１を用いて更新（上書き）することができる。このような利点は、ＵＩ部品５０１のコードがブラウザアーキテクチャ(ＨＴＭＬ（HyperText  Markup  Language）５/ＣＳＳ（Cascading  Style  Sheets)）で記述される環境においても同様に得ることができる。
【０１０４】
＜Ｊ．プログラム＞
本実施の形態に示したＩＰＣ１００においてＨＭＩプログラム１１２の開発環境を提供するRuntime６００は、フラッシュメモリ１０８などの記憶部に格納されている。プロセッサ１０２は、記憶部からRuntime６００を読出し、メインメモリ１０６を構成するＲＡＭなどに展開する。そして、プロセッサ１０２は、ＲＡＭに展開された当該プログラムを解釈及び実行して、ＩＰＣ１００の各構成要素を制御する。実行することにより、本実施の形態で説明した各種処理を実現することが可能となる。
【０１０５】
またRuntime６００は、ＩＰＣ１００に付属するフレキシブルディスク、ＣＤ−ＲＯＭ（Compact  Disk-Read  Only  Memory）、ＲＯＭ、ＲＡＭおよびメモリカード１２０などのコンピュータ読取り可能な記憶媒体にて記録させて、プログラム製品として提供することもできる。このような記憶媒体は、プロセッサその他装置、機械などが記憶されたプログラムなどの情報を読み取り可能なように、当該プログラムなどの情報を、電気的、磁気的、光学的、機械的または化学的作用によって蓄積する媒体である。ＩＰＣ１００は、この記憶媒体から、Runtime６００を取得してもよい。
【０１０６】
あるいは、Runtime６００は、ＩＰＣ１００に内蔵する図示しないＨＤＤ（Hard Disc Drive）などの記録媒体にて記録させて、プログラムを提供することもできる。また、図示しないネットワークから通信インターフェイスを介したダウンロードによって、プログラムを提供することもできる。
【０１０７】
また、ＨＭＩ装置２００においても、ＨＭＩプログラム１１２の開発環境を提供するRuntime６００が実行される。ＨＭＩ装置２００では、Runtime６００は、ＨＭＩ装置２００の記憶部（ＨＤＤ２０８、記録媒体２５０など）に格納されている。ＣＰＵ２０２は、記憶部からRuntime６００を読出し、ＲＡＭ２０６などに展開する。そして、ＣＰＵ２０２は、ＲＡＭ２０６に展開された当該プログラムを解釈及び実行して、ＨＭＩ装置２００の各構成要素を制御する。実行することにより、本実施の形態で説明した各種処理を実現することが可能となる。
【０１０８】
このようなRuntime６００はＨＭＩ装置２００に付属するフレキシブルディスク、ＣＤ−ＲＯＭ（Compact  Disk-Read  Only  Memory）、ＲＯＭ２０４、ＲＡＭ２０６および記録媒体２５０などのコンピュータ読取り可能な記録媒体にて記録させて、上記に述べたＩＰＣ１００の場合と同様にプログラム製品として提供することもできる。あるいは、ＨＭＩ装置２００に内蔵するＨＤＤ２０８などの記録媒体にて記録させて、プログラムを提供することもできる。また、図示しないネットワークから通信インターフェイスを介したダウンロードによって、プログラムを提供することもできる。
【０１０９】
＜Ｋ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
［構成１］ＦＡ（ファクトリオートメーション）のためのヒューマンマシンインターフェイス（ＨＭＩ）プログラム（１１２）を実行する情報処理装置（１００、２００）であって、
前記ＨＭＩプログラムを構成するユーザインターフェイス（ＵＩ）部品（５０１）に紐付けられたオブジェクトコード（５０２）を格納する格納手段（１１３）と、
ＵＩ部品のソースコード（７００）から実行可能なオブジェクトコード（７０１）を生成するコンパイラ（１１６３）と、
前記ＨＭＩプログラムを実行する手段（６００）と、を備え、
前記実行する手段は、
前記ＨＭＩプログラムを実行する場合に、当該ＨＭＩプログラムを構成するＵＩ部品のオブジェクトコードとして、前記コンパイラにより生成されたオブジェクトコードおよび当該ＵＩ部品に紐付けられたオブジェクトコードのうちの一方を選択する手段（６０１）を含む、情報処理装置。
［構成２]
前記情報処理装置に対するユーザ操作を受付ける手段（１２２、２１０）を、さらに備え、
前記選択する手段は、
受付けたユーザ操作内容を示す値が設定される入力パラメータ（６０２）と、前記入力パラメータに設定された値に従い、前記コンパイラにより生成されたオブジェクトコードおよび前記ＵＩ部品に紐付けられたオブジェクトコードのうちの一方の選択を指示する指令コードを有する関数（５００）を実行する、構成１に記載の情報処理装置。
［構成３］
前記関数は、前記ＵＩ部品から呼出される、構成２に記載の情報処理装置。
［構成４］
前記関数は、さらに、
前記入力パラメータに設定された値に従い前記コンパイラの起動を指示する指令コード（５１３）を有する、構成２または３に記載の情報処理装置。
［構成５］
前記ユーザ操作を受付ける手段は、
前記情報処理装置のディスプレイに表示されるオブジェクト（１１７２）に対するユーザ操作を受付ける手段を含む、構成２から４のいずれか１に記載の情報処理装置。
［構成６］
前記選択する手段により選択された前記一方が、前記コンパイラにより生成されたオブジェクトコードおよび当該ＵＩ部品に紐付けられたオブジェクトコードのうちのいずれであるかに従い、前記オブジェクトの表示態様を変化させる手段（Ｓ１９、図１０）を、さらに備える、構成５に記載の情報処理装置。
［構成７］
前記関数は、さらに、
前記コンパイラにより生成されたオブジェクトコードが格納されているとの条件が満たされないときは、前記格納手段の前記オブジェクトコードの選択を指令するコード（５１４、５１６）を有する、構成２から６のいずれか１に記載の情報処理装置。
［構成８］
前記コンパイラにより生成されたオブジェクトコードが格納されているとの前記条件が満たされない場合に、その旨を記録する手段（Ｓ２３）を、さらに備える、構成７に記載の情報処理装置。
［構成９］
前記コンパイラにより生成されたオブジェクトコードを用いて、前記格納手段の紐付けられたオブジェクトコードを上書きする（１１７３）、構成１から８のいずれか１に記載の情報処理装置。
［構成１０］
前記ソースコードを作成または編集するエディタ（１１６２）を、さらに備える、構成１から９のいずれか１に記載の情報処理装置。
［構成１１］
ＦＡ（ファクトリオートメーション）のためのヒューマンマシンインターフェイス（ＨＭＩ）プログラム（１１２）を、コンピュータ（１００、２００）に実行させるためのプログラム（６００）であって、
前記コンピュータは、前記ＨＭＩプログラムを構成するユーザインターフェイス（ＵＩ）部品（５０１）に紐付けられたオブジェクトコード（５０２）を格納する格納手段（１１３）を備え、
前記実行させるためのプログラムは、前記コンピュータに、
ＵＩ部品のソースコードから実行可能なオブジェクトコード（７０１）を生成するコンパイラを起動させるステップ（Ｓ９）と、
前記ＨＭＩプログラムを実行する場合に、当該ＨＭＩプログラムを構成するＵＩ部品のオブジェクトコードとして、前記コンパイラにより生成されたオブジェクトコードおよび当該ＵＩ部品に紐付けられたオブジェクトコードのうちの一方を選択させるステップ（Ｓ１３）とを含む、プログラム。
【０１１０】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１１１】
１  システム、４  サポート装置、１００  ＩＰＣ、１０２  プロセッサ、１０８  フラッシュメモリ、１１２  ＨＭＩプログラム、１１３  ライブラリ、１１７，２１４  ディスプレイ、１２２，２１０  キーボード、２００  ＨＭＩ装置、３００  デバイス、５００  関数、５０１  ＵＩ部品、５０２  ＵＩ部品オブジェクトコード、５０４  スクリプト呼出し部、５１１〜５１６  指令コード、６００  Runtime、６０１  スクリプト処理部、６０２  フラグ、６０３  スクリプトパス、７００  ソースコード、７０１  コンパイル後オブジェクトコード、１１６２  テキストエディタ、１１６３  コンパイラ、Ｅ１  オブジェクトコード格納領域、１１７２  切替ＧＵＩ、１１７３  上書きＧＵＩ、Ｐ５１１〜Ｐ５１６  処理、Ｖ１  画面部品、Ｗ１，Ｗ２  ウインドウ。
【図１】
2020030621.tif 000003
【図２】
2020030621.tif 000004
【図３】
2020030621.tif 000005
【図４】
2020030621.tif 000006
【図５】
2020030621.tif 000007
【図６】
2020030621.tif 000008
【図７】
2020030621.tif 000009
【図８】
2020030621.tif 000010
【図９】
2020030621.tif 000011
【図１０】
2020030621.tif 000012