(57)【要約】【課題】ＨＭＩプログラムの構成要素に適合するＯＳの種類を多様化する。【解決手段】サポート装置（２００）はＦＡの対象の制御装置（１００-１、１００−２）で実行されるＨＭＩプログラム（１１２）を構成するＵＩ要素であって、第１種類のＯＳに適合するプログラムコードのＵＩ要素の指定を受付け、指定がなされたＵＩ要素から、第２種類のＯＳに適合するＵＩ要素のプログラムコードを生成し、第２種類のＯＳに適合するプログラムコードと、対象装置が有するＯＳは第１種類のＯＳではないとの条件が満たされる場合に当該プログラムコードを含む実行モジュールの生成を指令する指令コードとを含むラッパープログラムを生成する。ラッパープログラムが組込まれたＨＭＩプログラムから実行可能コードのプログラムが生成される。【選択図】図１
2020021155.tif 000002
【特許請求の範囲】
【請求項１】
ＦＡ（ファクトリオートメーション）の対象装置で実行されるＨＭＩ（ヒューマンマシンインターフェイス）プログラムの開発を支援するサポート装置であって、
前記ＨＭＩプログラムを構成するＵＩ（ユーザインターフェイス）要素であって、第１種類のＯＳに適合するプログラムコードのＵＩ要素の指定を受付ける受付手段と、
前記指定がなされたＵＩ要素から、第２種類のＯＳに適合するＵＩ要素のプログラムコードを生成するコード生成手段と、
生成された前記第２種類のＯＳに適合するプログラムコードと、前記対象装置が有するＯＳは前記第１種類のＯＳではないとの条件が満たされる場合に当該プログラムコードを含む実行モジュールの生成を指令する指令コードとを含むラッパープログラムを生成するラッパー生成手段と、を備え、
前記第１種類のＯＳに適合するプログラムコードのＵＩ要素として前記ラッパープログラムが組込まれた前記ＨＭＩプログラムから実行可能コードのプログラムを生成する、サポート装置。
【請求項２】
前記ラッパー生成手段は、さらに、
前記指令コードに、前記対象装置が有するＯＳは前記第１種類のＯＳであるとの条件が満たされる場合に前記第１種類のＯＳに適合するプログラムコードのＵＩ要素を含むＨＭＩプログラムの実行モジュールの生成を指令するコードを含める、請求項１に記載のサポート装置。
【請求項３】
前記コード生成手段は、
前記第１種類のＯＳに適合するプログラムコードのＵＩ要素のプロパティのうち前記第２種類のＯＳに適合するプログラムコードのＵＩ要素のプロパティに一致するプロパティを抽出し、抽出されたプロパティを含むＵＩ要素のプログラムコードから、前記第２種類のＯＳに適合するＵＩ要素のプログラムコードを生成する、請求項１または２に記載のサポート装置。
【請求項４】
前記ＵＩ要素の選択候補の一覧を出力する手段と、
前記一覧に、前記受付手段が受付ける前記第１種類のＯＳに適合するプログラムコードのＵＩ要素を登録する登録手段と、をさらに備え、
前記一覧からユーザが選択するＵＩ要素を用いて前記ＨＭＩプログラムを編集する、請求項１から３のいずれか１項に記載のサポート装置。
【請求項５】
前記ラッパー生成手段は、
前記実行可能コードのプログラムを生成するとき、前記ラッパープログラムを生成する、請求項４に記載のサポート装置。
【請求項６】
前記ラッパー生成手段は、
前記登録手段により前記第１種類のＯＳに適合するプログラムコードのＵＩ要素が前記一覧に登録されるとき、前記ラッパープログラムを生成する、請求項４に記載のサポート装置。
【請求項７】
前記対象装置が備えるＯＳの種類が前記第１種類でないとき、前記コード生成手段は、前記指定がなされたＵＩ要素から、第２種類のＯＳに適合するＵＩ要素のプログラムコードを生成する、請求項１から６のいずれか１項に記載のサポート装置。
【請求項８】
ＦＡ（ファクトリオートメーション）の対象装置で実行されるＨＭＩ（ヒューマンマシンインターフェイス）プログラムの開発を支援するサポートプログラムであって、
前記サポートプログラムは、コンピュータに、
前記ＨＭＩプログラムを構成するＵＩ（ユーザインターフェイス）要素であって、第１種類のＯＳに適合するプログラムコードのＵＩ要素の指定を受付けるステップと、
前記指定がなされたＵＩ要素から、第２種類のＯＳに適合するＵＩ要素のプログラムコードを生成するステップと、
生成された前記第２種類のＯＳに適合するプログラムコードと、前記対象装置が有するＯＳは前記第１種類のＯＳではないとの条件が満たされる場合に当該プログラムコードを含む実行モジュールの生成を指令する指令コードとを含むラッパープログラムを生成するステップと、
前記第１種類のＯＳに適合するプログラムコードのＵＩ要素として前記ラッパープログラムが組込まれた前記ＨＭＩプログラムから実行可能コードのプログラムを生成するステップを実行させる、サポートプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ＦＡ（ファクトリオートメーション）のプログラムの開発を支援するサポート装置および開発支援プログラムに関する。
【背景技術】
【０００２】
様々な生産現場において、ＰＬＣ（プログラマブルコントローラ）などの制御装置を用いたＦＡ技術が広く普及している。近年の情報通信技術（ＩＣＴ：Information and Communication Technology）の発展に伴って、このようなＦＡ分野における制御装置もますます高性能化および高機能化している。
【０００３】
これに伴い、ＦＡ制御に関する各種プログラムの開発においても、例えばWindows（登録商標）のＯＳに適合したアプリケーションプログラムの開発環境において提供される外部コントロールを、非WindowsであってＦＡ向けのＯＳに適合したアプリケーションプログラムを構成するＵＩ（ユーザインターフェイス）要素として利用したいとの要望がある。例えば、制御装置を介してフィールド機器の状態をモニタまたは制御するためのＵＩ画面を提供するためのＨＭＩ（ヒューマンマシンインターフェイス）プログラムを構成するＵＩ要素として、外部コントローラを利用したいとの要望がある。
【０００４】
特許文献１（特表２０１５−５２４１２６号公報）では、ソースコードのうちプラットフォーム非依存のソースコードが、異なるプラットフォーム及び／又はバージョンのために注釈を付されたソースコードの１又は複数の部分を用いて拡張されることを開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１５−５２４１２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１は、ソースコードの拡張を開示するが、汎用ＯＳに適合した外部コントロールを、非汎用ＯＳに適合したプログラムを構成するＵＩ要素として利用可能にする技術は開示しない。
【０００７】
本開示の一つの目的は、ＨＭＩプログラムの構成要素に適合するＯＳの種類を限定せず多様化することを可能にするプログラム開発の支援環境を提供することである。
【課題を解決するための手段】
【０００８】
この開示の一例にかかるサポート装置は、ＦＡ（ファクトリオートメーション）の対象装置で実行されるＨＭＩ（ヒューマンマシンインターフェイス）プログラムの開発を支援するサポート装置であって、ＨＭＩプログラムを構成するＵＩ（ユーザインターフェイス）要素であって、第１種類のＯＳに適合するプログラムコードのＵＩ要素の指定を受付ける受付手段と、指定がなされたＵＩ要素から、対象装置が備えるＯＳの種類を含む第２種類のＯＳに適合するＵＩ要素のプログラムコードを生成するコード生成手段と、生成された第２種類のＯＳに適合するプログラムコードと、対象装置が有するＯＳは第１種類のＯＳではないとの条件が満たされる場合に当該プログラムコードを含む実行モジュールの生成を指令する指令コードとを含むラッパープログラムを生成するラッパー生成手段と、を備え、第１種類のＯＳに適合するプログラムコードのＵＩ要素としてラッパープログラムが組込まれたＨＭＩプログラムから実行可能コードのプログラムを生成する。
【０００９】
この開示によれば、ＨＭＩプログラムの構成要素として、第１種類のＯＳに適合したＵＩ要素により構成されるＨＭＩプログラムと、ＯＳを含む第２種類のＯＳに適合したＵＩ要素により構成されるＨＭＩプログラムを並行して開発することを可能にするプログラム開発の支援環境を実現できる。
【００１０】
これにより、第１種類のＯＳが汎用のＯＳであれば、汎用ＯＳに適合するアプリケーションの開発環境において提供されるＵＩ要素を、ＦＡ分野のＨＭＩプログラムの開発にも利用することが可能となる。
【００１１】
上述の開示において、ラッパー生成手段は、さらに、指令コードに、対象装置が有するＯＳは第１種類のＯＳであるとの条件が満たされる場合に第１種類のＯＳに適合するプログラムコードのＵＩ要素を含むＨＭＩプログラムの実行モジュールの生成を指令するコードを含める。
【００１２】
この開示によれば、ＨＭＩプログラムが対象装置で実行される場合に、対象装置が第１種類のＯＳを備える場合は、第１種類のＯＳに適合するプログラムコードのＵＩ要素を含むＨＭＩプログラムの実行モジュールが生成され、また、対象装置が第２種類のＯＳを備える場合は、第２種類のＯＳに適合するプログラムコードのＵＩ要素を含むＨＭＩプログラムの実行モジュールが生成される。
【００１３】
これにより、１つのＨＭＩプログラムのプログラムコードから、第１種類のＯＳに適合する実行モジュールと、第２種類のＯＳに適合する実行モジュールとを生成することができる。したがって、第１種類のＯＳに適合したプログラム開発環境と第２種類のＯＳに適合したプログラム開発環境の両方を準備することなく、各種類のＯＳに適合した１つのＨＭＩプログラムを生成することができる。
【００１４】
上述の開示において、コード生成手段は、第１種類のＯＳに適合するプログラムコードのＵＩ要素のプロパティのうち第２種類のＯＳに適合するプログラムコードのＵＩ要素のプロパティに一致するプロパティを抽出し、抽出されたプロパティを含むＵＩ要素のプログラムコードから、第２種類のＯＳに適合するＵＩ要素のプログラムコードを生成する。
【００１５】
上述の開示によれば、第１種類のＯＳに適合するプログラムコードのＵＩ要素のプロパティを用いて、第２種類のＯＳに適合するＵＩ要素のプログラムコードが生成される。したがって、新たな情報を必要とせずに、第２種類のＯＳに適合するＵＩ要素のプログラムコードを生成することができる。
【００１６】
上述の開示において、ＵＩ要素の選択候補の一覧を出力する手段と、一覧に、受付手段が受付ける第１種類のＯＳに適合するプログラムコードのＵＩ要素を登録する登録手段と、をさらに備え、一覧からユーザが選択するＵＩ要素を用いてＨＭＩプログラムを編集する。
【００１７】
上述の開示によれば、ユーザは、第１種類のＯＳに適合するプログラムコードのＵＩ要素を、ＵＩ要素の選択候補の一覧に登録することで、当該ＵＩ要素を一覧から選択してＨＭＩプログラムを構成するＵＩ要素として用いることができる。
【００１８】
上述の開示において、ラッパー生成手段は、実行可能コードのプログラムを生成するとき、ラッパープログラムを生成する。
【００１９】
上述の開示によれば、編集されたＨＭＩプログラムの実行可能コードのプログラムを生成するときに、ラッパープログラムを生成することができる。
【００２０】
上述の開示において、ラッパー生成手段は、登録手段により第１種類のＯＳに適合するプログラムコードのＵＩ要素が一覧に登録されるとき、ラッパープログラムを生成する。
【００２１】
上述の開示によれば、第１種類のＯＳに適合するプログラムコードのＵＩ要素を一覧に登録するときに、ラッパープログラムを生成することができる。
【００２２】
上述の開示において、対象装置が備えるＯＳの種類が第１種類でないとき、コード生成手段は、指定がなされたＵＩ要素から、第２種類のＯＳに適合するＵＩ要素のプログラムコードを生成する。
【００２３】
上述の開示によれば、対象装置のＯＳの種類が第１種類に該当すればコード生成手段によるプログラムコードの生成およびラッパー生成手段によるラッパープログラムの生成を省略することができる。
【００２４】
この開示の一例にかかるサポートプログラムは、ＦＡ（ファクトリオートメーション）の対象装置で実行されるＨＭＩ（ヒューマンマシンインターフェイス）プログラムの開発を支援するサポートプログラムであって、コンピュータに、ＨＭＩプログラムを構成するＵＩ（ユーザインターフェイス）要素であって、第１種類のＯＳに適合するプログラムコードのＵＩ要素の指定を受付けるステップと、指定がなされたＵＩ要素から、第２種類のＯＳに適合するＵＩ要素のプログラムコードを生成するステップと、生成された第２種類のＯＳに適合するプログラムコードと、対象装置が有するＯＳは第１種類のＯＳではないとの条件が満たされる場合に当該プログラムコードを含む実行モジュールの生成を指令する指令コードとを含むラッパープログラムを生成するステップと、第１種類のＯＳに適合するプログラムコードのＵＩ要素としてラッパープログラムが組込まれたＨＭＩプログラムから実行可能コードのプログラムを生成するステップを実行させる、サポートプログラム。
【００２５】
この開示によれば、ＨＭＩプログラムの構成要素として、第１種類のＯＳに適合したＵＩ要素により構成されるＨＭＩプログラムと、ＯＳを含む第２種類のＯＳに適合したＵＩ要素により構成されるＨＭＩプログラムを並行して開発することを可能にするプログラム開発の支援環境を実現できる。
【００２６】
これにより、第１種類のＯＳが汎用のＯＳであれば、汎用ＯＳに適合するアプリケーションの開発環境において提供されるＵＩ要素を、ＦＡ分野のＨＭＩプログラムの開発にも利用することが可能となる。
【発明の効果】
【００２７】
この開示によれば、ＨＭＩプログラムの構成要素に適合するＯＳの種類を限定せずに多様化することを可能にするプログラム開発の支援環境を提供することができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の実施の形態に係るシステムの構成を模式的に示す図である。
【図２】本発明の実施の形態にかかる制御装置１００のハードウェア構成の一例を模式的に示す図である。
【図３】本発明の実施の形態にかかるサポート装置２００のハードウェア構成の一例を模式的に示す図である。
【図４】本発明の実施の形態にかかるプログラムの開発環境と実行環境の全体構成の一例を模式的に示す図である。
【図５】本発明の実施の形態にかかるサポート装置２００における開発環境と実行環境の具体的な構成例を模式的に示す図である。
【図６】本発明の実施の形態にかかる外部コントロールのコンバート処理のためのモジュール構成の一例を模式的に示す図である。
【図７】本発明の実施の形態にかかるツールボックス管理の処理の概要を模式的に示す図である。
【図８】本発明の実施の形態にかかるＩ／Ｆ変換ソースコードを生成する処理の一例を模式的に示す図である。
【図９】本発明の実施の形態にかかるＩ／Ｆ変換オブジェクトの一例を模式的に示す図である。
【図１０】本発明の実施の形態にかかるＨＭＩプログラムの編集（エディト）時の表示画面の一例を模式的に示す図である。
【図１１】本発明の実施の形態にかかるＨＭＩプログラム１１２の内部コードの一部を例示する図である。
【図１２】本発明の実施の形態にかかる外部コントロール５０１を開発環境４２に取込む処理の一例を概略的に示すフローチャートである。
【図１３】本発明の実施の形態に係るエディトおよびコンパイルの処理の一例を示すフローチャートである。
【図１４】本発明の実施の形態に係るＨＭＩプログラム実行時の外部コントロールの処理の一例を示すフローチャートである。
【図１５】本発明の実施の形態に係る制御装置１００のソフトウェア構成の一例を示す模式図である。
【発明を実施するための形態】
【００２９】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００３０】
＜Ａ．適用例＞
まず、図１を参照して、本発明が適用される場面の一例について説明する。図１は、本発明の実施の形態に係るシステムの構成を模式的に示す図である。本実施の形態に係るサポート装置２００は、ＦＡの対象装置で実行されるＨＭＩプログラムの開発を支援する装置であり、例えば汎用のコンピュータを適用することができる。対象装置は、制御装置としてのＩＰＣ（産業用コンピュータ）１００−１およびＰＬＣ１００−２を含む。制御装置は、任意の制御対象となるフィールドに設けられるデバイス３００（例えば、製造装置や設備）を制御する。
【００３１】
サポート装置２００は、ＨＭＩプログラム１１２の編集し、および編集後のＨＭＩプログラム１１２をコンパイルする。コンパイルにより、ＨＭＩプログラム１１２から、対象装置が実行可能プログラムコードからなる実行形式プログラムが生成される。対象装置は、サポート装置２００から転送された実行形式のＨＭＩプログラム１１２を実行することにより、ＨＭＩ画面を表示する。
【００３２】
サポート装置２００は、ＨＭＩプログラム１１２を構成するＵＩ（ユーザインターフェイス）要素であって、第１種類のＯＳに適合するプログラムコードのＵＩ要素の指定をユーザから受付けると、指定がなされたＵＩ要素から、第２種類のＯＳに適合するＵＩ要素のプログラムコードを生成する。サポート装置２００は、生成された第２種類のＯＳに適合するプログラムコードと、対象装置が有するＯＳは第１種類のＯＳではないとの条件が満たされる場合に当該プログラムコードを含む実行モジュールの生成を指令する指令コードとを含むラッパープログラムに相当するＩ／Ｆ変換オブジェクト４２５Ｂを生成する。サポート装置２００は、コンパイル時は、第１種類のＯＳに適合するプログラムコードのＵＩ要素として上記のラッパープログラム（Ｉ／Ｆ変換オブジェクト４２５Ｂ）が組込まれたＨＭＩプログラム１１２から実行可能形式のプログラムを生成する。
【００３３】
図１の構成においては、サポート装置２００からＨＭＩプログラム１１２が対象装置に転送されて、対象装置で実行される場合に、ラッパープログラムが実行されることにより、対象装置が第１種類のＯＳを備える場合は、例えばＩＰＣ１００−１では、第１種類のＯＳに適合するプログラムコードのＵＩ要素（例えば外部コントロール５０１）を含むＨＭＩプログラムの実行モジュール６００が生成される。また、対象装置が第２種類のＯＳを備える場合は、例えばＰＬＣ１００では、第２種類のＯＳに適合するプログラムコードのＵＩ要素（外部コントロール５０１の代替コントロール５０２）を含むＨＭＩプログラムの実行モジュール７００が生成される。
【００３４】
このようにラッパープログラムが実行されることにより、同一のＨＭＩプログラム１１２のソースコードから、外部コントロール５０１を含むWindowsに適合する実行モジュールと、外部コントロール５０１ではない代替コントロール５０２を含む非WindowsのＯＳに適合する実行モジュールとを生成することができる。
【００３５】
これにより、サポート装置２００において、第１種類のＯＳに適合したプログラム開発環境と第２種類のＯＳに適合したプログラム開発環境の両方を準備せずとも、対象装置が備える各種類のＯＳに適合可能なＨＭＩプログラム１１２を開発することができる。
【００３６】
上記の第１種類のＯＳは、典型的には、例えばWindows（登録商標）などの汎用のＯＳであり、第２種類のＯＳは、第１種類のＯＳとは異なる種類のＯＳであり、典型的には、ＦＡ向けのプログラムに適用されるＯＳである。例えば、非WindowsのLinux（登録商標）、UNIX（登録商標）などを含む。また、第１種類のＯＳと第２種類のＯＳは、バージョン違いのＯＳであってもよい。例えば、第１種類のＯＳはWindows10（登録商標）および第２種類のＯＳはWindowsCE（登録商標）であってもよい。
【００３７】
なお、本実施の形態では、ＯＳに適合するプログラム（またはプログラムコード）は、当該ＯＳの下で解釈および実行可能なコード体系を有するプログラムまたはプログラムコードを示す。
【００３８】
以下、本発明のより具体的な応用例として、本実施の形態にかかるサポート装置２００が提供するＨＭＩプログラムの開発環境を詳細に説明する。
【００３９】
＜Ｂ．システム構成＞
図１は、本発明の実施の形態に係るシステムの構成を模式的に示す図である。図１を参照して、ＦＡのシステム１は、制御装置としてのＩＰＣ（産業用コンピュータ）１００−１およびＰＬＣ１００−２、複数のデバイス３００、およびサポート装置２００をネットワーク接続する。制御装置は、一種のコンピュータであり、製造装置や製造設備などに応じて設計された制御プログラムなどのユーザプログラムが実行される。このようなユーザプログラムは、制御装置とは別に用意された開発環境としてのサポート装置２００で開発される。
【００４０】
サポート装置２００は、例えば汎用のコンピュータであり、システム１の各種プログラムを統合して開発する環境を提供するとともに、制御装置に対してユーザプログラムを転送する機能を提供する。以降では、ＩＰＣ１００−１およびＰＬＣ１００−２を制御装置１００と総称する。デバイス３００は、制御対象となる図示しないフィールド機器をネットワーク接続する。制御対象は、例えばセンサ、アクチュエータなどを含み得る。
【００４１】
サポート装置２００と制御装置１００の間は、例えばＵＳＢ（Universal Serial Bus）に従う伝送路が採用される。制御装置１００とデバイス３００の伝送路は、例えばＴＳＮ（Time-sensitive networking）規格に従いデータの到達時間が保証されるバスまたはネットワークを採用することが好ましい。例えばマシンコントロール用ネットワークの一例であるＥｔｈｅｒＣＡＴ（登録商標）が採用され得る。
【００４２】
サポート装置２００において開発されるユーザプログラムは、例えば制御装置１００がデバイス３００を制御するための制御演算を実施するための制御プログラムおよびＨＭＩ処理を実施するためのＨＭＩプログラムなどの各種のプログラムを含む。これらユーザプログラムは、例えばLinux（登録商標）、UNIX（登録商標）などの非Windowsに適合するプログラムまたはWindowsに適合するプログラムを含み得るが、ＯＳの種類はこれらに限定されない。開発されたプログラムは、サポート装置２００から制御装置１００に転送されて制御装置１００のプロセッサにより実行される。
【００４３】
制御演算は、デバイス３００がフィールド機器から収集したデータまたは生成したデータの処理、デバイス３００に対する指令などのデータを生成する処理（演算処理）、生成した出力データを対象のデバイス３００へ送信する処理（出力処理）などを含む。
【００４４】
ＨＭＩ処理は、ＦＡの各種機器（制御装置１００、デバイス３００およびフィールド機器）の状態などの情報を収集する、収集情報をＨＭＩ画面で出力する、および各種機器を操作するためのユーザ設定（指令、値などの設定）操作を、ＨＭＩ画面などを介して受付けるなどの処理を含む。
【００４５】
なお、図１に示すシステム１においては、サポート装置２００は、制御装置１００とは別体として備えられるが、サポート装置２００は、制御装置１００に一体的に備えられてもよい。すなわち、サポート装置２００が有する機能は、制御装置１００に内蔵され得る。
【００４６】
＜Ｃ．制御装置１００のハードウェア構成例＞
図２は、本発明の実施の形態にかかる制御装置１００のハードウェア構成の一例を模式的に示す図である。図２を参照して、制御装置１００は、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro-Processing Unit）などのプロセッサ１０２と、チップセット１０４と、メインメモリ１０６と、フラッシュメモリ１０８と、外部ネットワークコントローラ１１６と、メモリカードインターフェイス１１８と、内部バスコントローラ１２２と、フィールドバスコントローラ１２４とを含む。
【００４７】
プロセッサ１０２は、フラッシュメモリ１０８に格納されたシステムプログラム１１０およびユーザプログラムを読み出して、メインメモリ１０６に展開して実行することで、デバイス３００またはフィールド機器などの制御対象に対する制御処理またはＨＭＩ処理を実現する。
【００４８】
システムプログラム１１０は、データの入出力処理や実行タイミング制御などの、ＰＬＣ１００の基本的な機能を提供するための命令コードを含む。ユーザプログラムは、制御対象に応じて任意に設計される制御プログラム１１１およびＨＭＩプログラム１１２、およびライブラリ１１３を含む。制御プログラム１１１は、シーケンス制御を実行するためのシーケンスプログラムおよびモーション制御を実行するためのモーションプログラムなどを含む。ＨＭＩプログラム１１２は、例えば各ＨＭＩ画面に対応したプログラムを含む。ライブラリ１１３には、外部コントロール５０１、ＨＭＩプログラムを構成するＵＩ（User Interface）要素および制御プログラムを構成する関数などの単位プログラムなどが、実行可能コード（例えば、中間コード）の態様で登録される。ＵＩ要素は、後述する図５のユーザが定義したユーザ定義ＵＩ１１６３およびシステムにより定義されるシステム定義ＵＩ１１６２の実行可能コードを含む。
【００４９】
チップセット１０４は、各コンポーネントを制御することで、ＰＬＣ１００全体としての処理を実現する。
【００５０】
内部バスコントローラ１２２は、ＰＬＣ１００と内部バスを通じて連結されるＩ／Ｏユニット１４との間でデータを遣り取りするインターフェイスである。フィールドバスコントローラ１２４は、ＰＬＣ１００と図示しないフィールドバスを通じて連結されるＩ／Ｏユニット１６との間でデータを遣り取りするインターフェイスである。内部バスコントローラ１２２およびフィールドバスコントローラ１２４は、対応のＩ／Ｏユニット１４および１６にそれぞれ入力される状態値を取得するとともに、プロセッサ１０２での演算結果を対応のＩ／Ｏユニット１４および１６から指令値としてそれぞれ出力する。
【００５１】
外部ネットワークコントローラ１１６は、各種の有線／無線ネットワークを通じたデータの遣り取りを制御する。メモリカードインターフェイス１１８は、メモリカード１２０を着脱可能に構成されており、メモリカード１２０に対してデータを書込み、メモリカード１２０からデータを読出すことが可能になっている。制御装置１００は、外部ネットワークコントローラ１１６またはメモリカードインターフェイス１１８を介してサポート装置２００とデータを遣り取りする。
【００５２】
ＰＬＣ１００がプログラムを実行することで提供される機能の一部または全部を専用のハードウェア回路として実装してもよい。
【００５３】
＜Ｄ．サポート装置２００のハードウェア構成例＞
次に、サポート装置２００のハードウェア構成例について説明する。図３は、本発明の実施の形態にかかるサポート装置２００のハードウェア構成の一例を模式的に示す図である。図３を参照して、サポート装置２００は、据え置き型でもよく、または制御装置１００が配置される製造現場では可搬性に優れたノート型のパーソナルコンピュータの形態で提供されてもよい。
【００５４】
サポート装置２００は、ＯＳを含む各種プログラムを実行するＣＰＵ２０２と、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）１０４と、ＣＰＵ２０２でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ（Random Access Memory）２０６と、ＣＰＵ２０２で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）２０８とを含む。
【００５５】
サポート装置２００は、さらに、サポート装置２００に対するユーザの操作を受付けるキーボード２１０およびマウス２１２を含む入力部２１１と、情報をユーザに提示するためのディスプレイ２１４とを含む。サポート装置２００は、制御装置１００と通信するための通信インターフェイス２１８を含む。入力部２１１は、ディスプレイ２１４と一体的に構成されるタッチパネルとして提供されてもよい。
【００５６】
サポート装置２００は、記録媒体２５０からそれに格納されているサポートプログラムを読み取るための記録媒体読取装置２１７を含む。このサポートプログラムは、プログラム開発環境を実現するプログラムを含み得る。
【００５７】
＜Ｅ．制御装置１００のソフトウェア構成＞
図１５は、本発明の実施の形態に係る制御装置１００のソフトウェア構成の一例を示す模式図である。図１５は、例えばＩＰＣ１００−１の構成例を示す。
【００５８】
図１５を参照して、制御装置１００においては、ハイパーバイザが制御装置１００のハードウェアリソースを管理するとともに、リアルタイムＯＳ１１４およびWindows５１２などの汎用ＯＳ１１６１に対して、これらのハードウェアリソースを調停しながら割当てることで、共通のハードウェアリソース上で、互いに独立したリアルタイムＯＳ１１４および汎用ＯＳ１１６１を実行させる。すなわち、ハイパーバイザを用いて、異なる種類のＯＳを実行する仮想化環境を実現する。リアルタイムＯＳ１１４と汎用ＯＳ１１６１との間は、ハイパーバイザを介して、論理的なネットワークが構成されている。
【００５９】
リアルタイムＯＳ１１４では、シーケンスプログラムを含む制御プログラム１１１が実行される。制御プログラム１１１の実行にあたって、タスクスケジューラ１１４２と、プログラムマネージャ１１４４と、Ｉ／Ｏ（Input/Output）制御プロセス１１４６とが連係する。制御プログラム１１１は、予め実行可能コードに変換されて、実行時は、タスクスケジューラ１１４２、プログラムマネージャ１１４４、Ｉ／Ｏ制御プロセス１１４６と連係しつつ、制御対象からの信号の取得、制御ロジックの実行、実行結果の反映（アクチュエータの制御）を繰返す。
【００６０】
汎用ＯＳ１１６１の下では、任意のユーザアプリケーションである例えばＨＭＩプログラム１１２を含むユーザアプリケーション１１６４および汎用アプリケーション１１６２がライブラリ１１３の各種プログラムを呼出しながら実行される。汎用アプリケーション１１６２は、汎用ＯＳ１１６１で実行可能な標準的なアプリケーションであり、ＨＭＩプログラム１１２などのユーザアプリケーションと連係することで、汎用的な処理や機能を用いて、より少ない工数でシステムを構築することができる。
【００６１】
ライブラリ１１３は、システム定義ＵＩ１１６２、ユーザ定義ＵＩ１１６３および外部コントロール５０１を、実行可能コードからなる実行可能形式で備える。
【００６２】
また、汎用ＯＳ１１６１の下では、第１種類のＯＳ（汎用ＯＳ）に適合する実行モジュール６００または第２種類のＯＳ（非汎用ＯＳ）に適合する実行モジュール７００が生成され得る。
【００６３】
＜Ｆ．プログラム開発環境と実行環境＞
図４は、本発明の実施の形態にかかるプログラムの開発環境と実行環境の全体構成の一例を模式的に示す図である。図４を参照して、開発環境４２はサポート装置２００において提供されて、実行環境は制御装置１００で提供される。図４では、開発環境と実行環境は別の装置に備えられるが、同一の装置で提供されてもよい。なお、開発環境４２を構成する各種プログラムおよびデータは、サポート装置２００のＲＡＭ２０６などの記憶部に格納される。
【００６４】
図４を参照して、開発環境４２と実行環境は、Windows４０およびドットネット（.NET）のフレームワーク４１の上で提供される。開発環境４２は、例えばＶＢ．ＮＥＴ（ヴィジュアル ベーシック ドットネット）のスクリプトによるＨＭＩプログラム言語処理系４６、ＨＭＩ向けＵＩ要素の処理系４５、ＵＩ要素のコンパイラ４３およびＨＭＩプログラムのコンパイラ４４を含む。実行環境は、ＨＭＩプログラムを実行するためのライブラリなどの実行可能コードからなるアセンブリ４９を備える。本実施の形態では、開発環境において、ＨＭＩ言語処理系のエディタ３０９およびＨＭＩ向けＵＩ要素の処理系４５で生成されたプログラムソースコードは、ＵＩ要素のコンパイラ４３およびコンパイラ４４によりコンパイルされる。コンパイルによりソースコードは実行可能コード（中間コード）からなる実行可能形式のファイルとされる。コンパイル後のＨＭＩプログラムは、ＨＭＩ向けの実行環境において、アセンブリ４９を利用して実行モジュールとされて、実行モジュールが実行される。実行モジュールは、実行可能形式のＨＭＩプログラム１１２にＵＩ要素の実行可能形式のオブジェクトをリンクすることにより提供される。
【００６５】
図５は、本発明の実施の形態にかかるサポート装置２００における開発環境と実行環境の具体的な構成例を模式的に示す図である。図５を参照して、サポート装置２００では、ＰＣのハードウェアリソースの下で実行されるWindows４０と、Windows４０の下で提供されるＦＡ開発環境５０７の各種プログラムの下でＨＭＩプログラム１１２の開発環境４２を提供するプログラムが実行される。これらプログラムは、開発環境４２における外部コントロールコンバータ４２５、コンパイラ５０６およびエディタ３０９を含む。これらＨＭＩプログラム１１２の開発環境を実現するためのプログラムからなるサポートプログラム７１０は、ＲＡＭ２０６に格納される。
【００６６】
外部コントロールコンバータ４２５は、Windowsに適合するプログラムを構成するためのＵＩ要素として提供される外部コントロール５０１を、非WindowsのＯＳの下で実行可能にするためのコードに変換する。コンパイラ５０６は、図４のＵＩ要素のコンパイラ４３およびコンパイラ４４を含む。エディタ３０９は、ユーザ操作を受付けて、受付けた操作内容に従いＨＭＩプログラム１１２を編集（作成）する。また、ＦＡ開発環境５０７のもとでは、制御プログラム１１１を開発する環境も提供される。外部コントロール５０１、ＨＭＩプログラム１１２および制御プログラム１１１もＲＡＭ２０６に格納される。
【００６７】
制御プログラム１１１は、ＰＬＣのためのプログラミングの規格であるＩＥＣに従うプログラムと各種ライブラリを含む。ＨＭＩプログラム１１２は、当該ＨＭＩプログラム１１２を構成するＵＩ要素として、ユーザが定義したＵＩまたはシステムが定義したＵＩを含む。なお、ユーザは、エディト時に、ＨＭＩプログラム１１２を構成するＵＩ要素として外部コントロール５０１を選択することができる。
【００６８】
ＦＡ開発環境５０７の下でコンパイラ５０６が起動されると、ＨＭＩプログラム１１２はコンパイルされて、ＨＭＩプログラム１１２のソースコードから実行可能コードが生成される。実行可能コードのＨＭＩプログラム１１２は、制御装置１００に転送される。
【００６９】
制御装置１００の実行環境では、Windows５１２の下で起動されるRuntime（ランタイム）５１３により、実行可能コードのＨＭＩプログラム１１２の実行が支援される。Runtime５１３は、実行可能コードのＨＭＩプログラム１１２からWindows５１２に適合した実行モジュールを生成する。Windows５１２は、ＨＭＩプログラム１１２の実行モジュールのコードを解釈および実行することにより、各種ＵＩ要素を含むＨＭＩ画面を提示するなどのＨＭＩ処理が実施される。
【００７０】
また、コンパイルされた制御プログラム１１１の実行可能コードは、リアルタイムＯＳ１１４により解釈および実行されて、制御処理が実施される。
【００７１】
制御装置１００では、ＨＭＩ処理を実施するＨＭＩプログラム１１２と制御処理を実施する制御プログラムの間で、両者のＯＳおよび論理的なネットワーク（図１５参照）を介してデータを遣り取りすることができる。これにより、例えば、実行環境においては、制御処理によって取得される制御対象のフィールド機器の状態（センサの出力など）を、ＨＭＩ画面のＵＩ要素の表示態様（例えば、表示色など）により提示することが可能となる。また、ＨＭＩ画面のＵＩ要素を操作して入力されたデータを、制御処理により制御対象のフィールド機器の状態を変更するデータとして用いることができる。
【００７２】
＜Ｇ．外部コントロールコンバートのための構成＞
図６は、本発明の実施の形態にかかる外部コントロールのコンバート処理のためのモジュール構成の一例を模式的に示す図である。図６を参照して、開発環境４２は、入力部２１１を介したユーザ操作から受付けるコンパイル指示４２１Ａに従い、コンパイラ５０６を起動するコンパイル実行部４２１、ＯＳ種類保持部４２４、および外部コントロールコンバータ４２５を含む。コンパイラ５０６は、ＵＩ要素から構成されるＨＭＩプログラム１１２をコンパイルするＨＭＩコンパイラ４２２と、外部コントロール５０１をコンパイルするWinAppコンパイラ４２３を含む。
【００７３】
ＯＳ種類保持部４２４は、制御装置１００のＯＳ種類４２４Ａを取得しＲＡＭ２０６などのメモリに保持（記憶）する。ＯＳ種類保持部４２４は、ＯＳ種類４２４Ａを、入力部２１１を介したユーザ操作の内容から取得する、または制御装置１００から受信することで取得する。ＯＳ種類４２４Ａを取得するために、サポート装置２００は例えばＨＴＴＰ（Hypertext Transfer Protocol）などの通信プロトコルに従い制御装置１００と通信する。
【００７４】
外部コントロールコンバータ４２５は、入力部２１１を介したユーザ操作に従い、外部コントロール５０１の取込指示４２５Ｋを受付けている場合、ＲＡＭ２０６に格納されている外部コントロール５０１をアクセスし、外部コントロール５０１のコードからＩ／Ｆ（インターフェイス）変換ソースコード４２５Ａを生成しＲＡＭ２０６に格納する。Ｉ／Ｆ変換ソースコード４２５Ａでは、Windowsに適合した外部コントロール５０１のＩ／Ｆ部分のソースコードを非WindowsのＵＩ要素に適合したコードを含む。図６の各部の動作の詳細は、図１２の説明において後述する。
【００７５】
＜Ｈ．エディタ処理＞
図７は、本発明の実施の形態にかかるツールボックス管理の処理の概要を模式的に示す図である。図１０は、本発明の実施の形態にかかるＨＭＩプログラムの編集（エディト）時の表示画面の一例を模式的に示す図である。図１１は、本発明の実施の形態にかかるＨＭＩプログラム１１２の内部コードの一部を例示する図である。
【００７６】
（ｈ１．エディト処理）
本実施の形態では、エディタ３０９はＨＭＩプログラム１１２を編集する場合に、例えば図１０に示すエディタ画面をディスプレイ２１４に表示させる。本実施の形態では、ＨＭＩプログラム１１２はＨＭＩ画面に対応するページ毎のプログラムを含む。ＨＭＩプログラム１１２は複数ページから構成されて、エディタ画面では、ＨＭＩプログラのページ４６１と、ツールボックス４６２とが表示される。ツールボックス４６２のデータは、例えばＲＡＭ２０６に格納されて、ＨＭＩプログラムの編集時にエディタ３０９によりＲＡＭ２０６から読出されて表示される。
【００７７】
図１０を参照して、ツールボックス４６２は、ディスプレイ２１４に表示されることにより、ＵＩ要素の選択候補の一覧を出力する手段に相当する。具体的には、この一覧には、ＨＭＩプログラム１１２の編集に用いることができるＵＩ要素の名前などの識別子の一覧が含まれる。ツールボックス４６２に登録可能なＵＩ要素は、ＦＡのＨＭＩためのユーザ定義ＵＩまたはシステム定義ＵＩと、外部コントロール５０１を含み得る。ＵＩ要素には、例えばボタン、ランプなどのＧＵＩ要素を含み得る。
【００７８】
ページ４６１を編集する場合、ユーザは、入力部２１１を操作してツールボックス４６２の中からＵＩ要素を選択し、ページ４６１の所望の位置まで選択したＵＩ要素をドラッグ操作で移動させてドロップ操作する。エディタ３０９は、ドラッグ／ドロップ操作を受付けて、当該ページ４６１のＨＭＩプログラムに選択されたＵＩ要素が組込まれるようにページ４６１を編集（作成）する。ユーザは、ディスプレイ２１４のページ４６１の切替操作により、他のページ４６１に切替え表示して同様に編集することができる。このように、ユーザは、プログラムコードを入力せずとも、ページ４６１にＵＩ要素を配置する操作を行なうことで、ＨＭＩプログラム１１２を編集することができる。
【００７９】
例えば、ページ４６１を構成するＵＩ要素として外部コントロール５０１が選択された場合、ページ４６１のソースコードに、Ｉ／Ｆ変換後の外部コントロール５０１を呼出すためのコードが追加される。例えば、エディタ３０９は、図１１のように、外部コントロール５０１の名前にconverted_を追加した“converted_SampleControl”の名前を用い外部コントロール５０１の呼出コードが追加される。
【００８０】
（ｈ２．ツールボックス４６２の登録）
次に、上記のエディト処理で用いるツールボックス４６２に、外部コントロール５０１を登録するための構成を説明する。
【００８１】
図７を参照して、開発環境４２は、外部コントロールファイル選択部４２７、ラッパー生成部４２８を備える外部コントロールコンバータ４２５およびツールボックス管理部３９１を備える。ユーザは入力部２１１を操作して、機能メニュー４２６から外部コントロール５０１の取込機能を選択する。外部コントロールファイル選択部４２７は、ユーザの当該選択操作に従う外部コントロール取込指示４２５Ｋに基づき、ＲＡＭ２０６から選択された外部コントロール５０１の実行可能コードのファイル（“SampleControl.dll”）を検索する。
【００８２】
外部コントロールコンバータ４２５は、外部コントロール５０１のファイル名である“SampleControl”のツールボックス４６２への登録依頼を管理部３９１に出力する。ツールボックス管理部３９１は、ツールボックス４６２のＵＩ要素の候補の一覧に、入力部２１１を介したユーザ操作により受付けるWindowsに適合するプログラムコードのＵＩ要素、すなわち外部コントロール５０１を登録する登録手段に相当する。この場合、ツールボックス管理部３９１は、外部コントロール５０１の名前“SampleControl”をツールボックス４６２に登録する。これにより、ＨＭＩプログラム１１２の編集に用いることができるＵＩ要素の候補として、ユーザが選択した外部コントロール５０１を、ツールボックス４６２の一覧に登録することができる。
【００８３】
＜Ｉ．外部コントロールコンバート処理＞
図８は、本発明の実施の形態にかかるＩ／Ｆ変換ソースコードを生成する処理の一例を模式的に示す図である。図９は、本発明の実施の形態にかかるＩ／Ｆ変換オブジェクトの一例を模式的に示す図である。
【００８４】
（ｉ1．Ｉ／Ｆ変換ソースコードの生成）
外部コントロールコンバータ４２５は、Ｉ／Ｆ変換ソースコードの生成処理を実施する。具体的には、外部コントロールコンバータ４２５は、ツールボックス４６２に登録される外部コントロール５０１のファイル“SampleControl.dll”のコードから、Ｉ／Ｆ変換ソースコード４２５Ａを生成する。また、外部コントロールコンバータ４２５は、Ｉ／Ｆ変換ソースコード４２５Ａをコンパイルして、Ｉ／Ｆ変換オブジェクト４２５Ｂを生成する。Ｉ／Ｆ変換オブジェクト４２５Ｂは、外部コントロール５０１のファイル“SampleControl.dll”を呼出すための指令コード（スクリプトなど）を有する。
【００８５】
まず、図８を参照して、外部コントロールコンバータ４２５は、外部コントロール５０１のファイル“SampleControl.dll”のコードを解析し、コードからＩ／Ｆ（インターフェイス）４２５Ｃを抽出する。また、外部コントロールコンバータ４２５は、Ｉ／Ｆ４２５Ｃと、必要Ｉ／Ｆ４２５Ｄとを比較する。この「Ｉ／Ｆ」は、外部コントロール５０１またはＵＩ要素が有する属性であって、例えば表示の属性（色、サイズなど）または他のＵＩ要素や他のプログラムなどとデータを授受するため通信属性などを含み得る。必要Ｉ／Ｆ４２５Ｄは、ＦＡのＨＭＩのＵＩ要素として必要なプロパティを含むＩ／Ｆを示す。より典型的には、非WindowsのＯＳに適合したプログラムコードで示されるＵＩ要素が有するプロパティを含むＩ／Ｆを示す。なお、必要Ｉ／Ｆ４２５Ｄのデータは、ＲＡＭ２０６などに保持(格納）されている。
【００８６】
外部コントロールコンバータ４２５は、Ｉ／Ｆ比較の結果に基き、抽出Ｉ／Ｆ４２５Ｃが有するプロパティのうち、必要Ｉ／Ｆ４２５Ｄに含まれるプロパティと一致するプロパティ（属性の種類と数）を抽出する。外部コントロールコンバータ４２５は、抽出（一致）プロパティを用いて外部コントロール５０１をＦＡのＨＭＩのＵＩ要素として、すなわち非WindowsのＯＳに適合したＵＩ要素として提示するためのソースコード４２５Ｇを生成する。Ｉ／Ｆ変換ソースコード４２５Ａは、呼出し先の外部コントロール５０１の名前４２５Ｅと変換後のソースコード４２５Ｇを含む。
【００８７】
（ｉ２．Ｉ／Ｆ変換オブジェクト４２５Ｂの生成）
外部コントロールコンバータ４２５のラッパー生成部４２８は、Ｉ／Ｆ変換ソースコード４２５Ａをコンパイルすることにより例えば図９のＩ／Ｆ変換オブジェクト４２５Ｂを生成する。図９のＩ／Ｆ変換オブジェクト４２５Ｂはラッパープログラムの形式を有する。すなわち、Ｉ／Ｆ変換オブジェクト４２５Ｂは、Windowsが解釈および実行可能なソースコード４２５Ｈと、非WindowsのＯＳにより解釈および実行可能なソースコード４２５Ｇと、ラッパー部５００を含む。
【００８８】
ソースコード４２５Ｈは、Windows５１２の下でのRuntaime５１３に対して、呼出し先の外部コントロール５０１の名前と、当該外部コントロール５０１を呼出し実行することを指示するコードを含む。
【００８９】
ソースコード４２５Ｇは、非WindowsのＯＳの下でのRuntimeに対して、ソースコード４２５Ｈから非WindowsのＯＳに適合したＵＩ要素のオブジェクトモジュールを生成することを指示するコードを含む。
【００９０】
Ｉ／Ｆ変換オブジェクト４２５Ｂは、外部コントロール５０１の“SampleControl.dll”のようなＨＭＬプログラムの実行モジュールに対して動的にリンクされる実行可能コードからなるファイルではなく、ソースコード４２５Ｇが実行されることにより実行可能コードからなるオブジェクトモジュールに変換されるような、中間コードともいえる。
【００９１】
ラッパー部５００は、実行されると、制御装置１００のRuntimeにＯＳ種類を判断させ、判断されたＯＳ種類に基づき、ソースコード４２５Ｈによる実行モジュールを生成するか否かの切替えを指示するコードを含む。より具体的には、このコードが実行されると、ＯＳ種類がWindowsであるとの条件が満たされる場合は、制御装置１００のＯＳ（Windows５１２）により提供される外部コントロール５０１を含むＨＭＩプログラム１１２の実行モジュールが生成される。これに対し、判断されたＯＳ種類が非Windowsであるとの条件が満たされる場合は、ソースコード４２５Ｇが実行される。これにより、外部コントロール５０１を代替するコントロール（ＵＩ要素）を実現するためにソースコード４２５Ｇの実行可能コードを含むＨＭＩプログラム１１２の実行モジュールが生成される。
【００９２】
このようにラッパー部５００が実行されることにより、同一のＨＭＩプログラム１１２のソースコードから、外部コントロール５０１を含むWindowsに適合する実行モジュールと、外部コントロール５０１ではない代替の外部コントロールを含む非WindowsのＯＳに適合する実行モジュールと生成することができる。
【００９３】
なお、外部コントロールコンバータ４２５が、Ｉ／Ｆ変換オブジェクト４２５Ｂを生成する時期は特に限定されない。例えば、外部コントロールコンバータ４２５は、コンパイラ５０６によりＨＭＩプログラム１１２から実行形式プログラムが生成するとき、Ｉ／Ｆ変換オブジェクト４２５Ｂ（ラッパープログラム）を生成する。
【００９４】
これにより、Ｉ／Ｆ変換オブジェクト４２５Ｂの生成を１回でませることができる。つまり、ＨＭＩプログラム１１２の編集時は、ＨＭＩプログラム１１２を構成するＵＩ要素の変更が試行錯誤的に頻繁になされるとの背景がある。このような背景を考慮すると、編集時にＩ／Ｆ変換オブジェクト４２５Ｂを生成するとすれば当該生成は比較的頻繁に繰返されることになる。これに対して、ＨＭＩプログラム１１２をコンパイルするときにＩ／Ｆ変換オブジェクト４２５Ｂを生成する場合は、上記で述べたようにＩ／Ｆ変換オブジェクト４２５Ｂの生成をコンパイル時の１回で済ませることができる。
【００９５】
また、他の時期として、外部コントロールコンバータ４２５は、ツールボックス管理部３９１による外部コントロール５０１がツールボックス４６２に登録されるときに、Ｉ／Ｆ変換オブジェクト４２５Ｂを生成することもできる。この場合は、ＨＭＩプログラム１１２のコンパイル時にはＩ／Ｆ変換オブジェクト４２５Ｂの生成は不要であるから、コンパイルの所要時間を短くすることができる。
【００９６】
＜Ｊ．外部コントロール取込処理＞
図１２は、本発明の実施の形態にかかる外部コントロール５０１を開発環境４２に取込む処理の一例を概略的に示すフローチャートである。図１２のフローチャートに従い、図７を参照しながら、外部コントロール５０１を開発環境４２で利用可能なＵＩ要素として取り込む処理を説明する。
【００９７】
図１２を参照して、外部コントロールコンバータ４２５は、入力部２１１を介したユーザ操作から、外部コントロール取込指示４２５Ｋを受付けると（ステップＳ１）、ＯＳ種類保持部４２４により保持されている対象装置のＯＳ種類を取得し(ステップＳ３）、ＯＳ種類はWindowsを示すかを判断する（ステップＳ５）。外部コントロールコンバータ４２５は、ＯＳ種類は非Windowsを示すと判断すると（ステップＳ５でＹＥＳ）一連の処理を終了する。
【００９８】
一方、外部コントロールコンバータ４２５は、ＯＳ種類はWindowsを示すと判断すると（ステップＳ５でＮＯ）、外部コントロールコンバータ４２５は、図８の手順に従いＩ／Ｆ変換ソースコード４２５Ａを生成し、ＲＡＭ２０６に格納する（ステップＳ７）。
【００９９】
外部コントロールコンバータ４２５は、Ｉ／Ｆ変換ソースコード４２５Ａをコンパイルして、Ｉ／Ｆ変換オブジェクト４２５Ｂを取得する（ステップＳ９）。
【０１００】
外部コントロールコンバータ４２５は、ツールボックス管理部３９１に、Ｉ／Ｆ変換オブジェクト４２５Ｂの登録を依頼する（ステップＳ１１）。ツールボックス管理部３９１は、登録依頼を受けると、Ｉ／Ｆ変換オブジェクト４２５Ｂから外部コントロール５０１の名前を抽出し（ステップＳ１３）、抽出した外部コントロール５０１の名前を、ＲＡＭ２０６のツールボックス４６２のデータに追加（登録）する（ステップＳ１５）。その後、処理は終了する。なお、ツールボックス４６２に登録される外部コントロール５０１の名前には、ＲＡＭ２０６の対応のＩ／Ｆ変換オブジェクト４２５Ｂが紐付けされる。
【０１０１】
＜Ｋ．エディトおよびコンパイル処理＞
図１３は、本発明の実施の形態に係るエディトおよびコンパイルの処理の一例を示すフローチャートである。図１３のフローチャートに従い、開発環境４２におけるエディタ３０９によるＨＭＩプログラムの編集と、ＨＭＩプログラムのコンパイルとを説明する。エディタ時には、図１０のようにディスプレイ２１４には、ＨＭＩプログラム１１２とツールボックス４６２が表示される。
【０１０２】
図１３を参照して、エディタ３０９は、入力部２１１を介して、ツールボックス４６２からユーザが選択した名前の外部コントロールをＵＩ要素としてＨＭＩプログラムに組込むための、ドラッグ/ドロップ操作を受付ける（ステップＳ２１）。
【０１０３】
エディタ３０９は、受付けたユーザ操作内容に従い、ユーザが選択した外部コントロールに関連付けられたＲＡＭ２０６のＩ／Ｆ変換オブジェクト４２５Ｂが有するオブジェクト名を、呼出し先オブジェクト名として、ＨＭＩプログラム１１２のプロジェクトデータに反映する（ステップＳ２３）。これにより、ＨＭＩプログラム１１２を構成するＵＩ要素として外部コントロールを組込むことが可能となる。
【０１０４】
開発環境４２は、入力部２１１を介してユーザからＨＭＩプログラムのコンパイル指示４２１Ａを受付けると（ステップＳ２５）、コンパイル実行部４２１を起動する。
【０１０５】
コンパイル実行部４２１は、ＨＭＩプログラム１１２のプロジェクトデータをコンパイルするために、WinAppコンパイラ４２３とＨＭＩコンパイラ４２２を起動する。WinAppコンパイラ４２３は、ＨＭＩプログラムを走査し、ＨＭＩプログラムを構成するＵＩ要素のうち外部コントロール５０１のＩ／Ｆ変換ソースコードをコンパイルし、ＨＭＩコンパイラはＨＭＩプログラムのソースコードをコンパイルする（ステップＳ２７）。
【０１０６】
このように、ＨＭＩプログラムがコンパイルされることにより、ＨＭＩプログラムのソースコードから実行可能コードが生成される。コンパイル時において、コンパイラは、ＨＭＩプログラム１１２を走査し、外部コントロールの呼出命令を検出すると、呼出命令から外部コントローラの名前を抽出する。コンパイラは、抽出された外部コントロールの名前に紐付けされているＩ／Ｆ変換オブジェクト４２５ＢをＲＡＭ２０６から検索し、検索されたＩ／Ｆ変換オブジェクト４２５Ｂを含むＨＭＩプログラム１１２の実行可能コードを生成する。
【０１０７】
開発環境４２は、コンパイルにより取得された実行可能コードからなるＨＭＩプログラムを転送する（ステップＳ２９）。この転送は、対象装置である制御装置１００への伝送路を介した転送（ダウンロード）、またはＲＡＭ２０６または記憶媒体２５０などの記憶部への格納などの概念を示す。
【０１０８】
＜Ｌ．対象装置におけるＨＭＩプログラムの実行＞
図１４は、本発明の実施の形態に係るＨＭＩプログラム実行時の外部コントロールの処理の一例を示すフローチャートである。
【０１０９】
図１４を参照して、制御装置１００では、Runtime５１３は、実行可能コードであるＨＭＩプログラム１１２を起動し実行する（ステップＳ３１）。
【０１１０】
ＨＭＩプログラムを実行中に、外部コントロールの呼出命令が実行される場合、Runtime５１３は、外部コントロールのラッパープログラムの中のラッパー部５００を起動する（ステップＳ３３）。ラッパー部５００が起動されると、Runtime５１３は、ラッパー部５００の指令コードを解釈しながら、以降のステップＳ３５、Ｓ３７、Ｓ３９およびＳ４１の処理を実行する。これにより、ＨＭＩプログラム１１２の実行可能コードからなる実行モジュールが生成される。
【０１１１】
具体的には、Runtime５１３は、当該Runtime５１３を実行するＯＳの種類を取得する（ステップＳ３５）。例えば、ＯＳ種類は、予め定められた記憶領域から読出すことにより取得することができる。
【０１１２】
Runtime５１３は、取得されたＯＳ種類はWindowsであるか否かを判断する（ステップＳ３７）。Runtime５１３は、ＯＳ種類はWindowsであると判断すると（ステップＳ３７でＹＥＳ）、ラッパープログラムのＩ／Ｆ変換ソースコード４２５Ｇを呼出すことなく、外部コントロール５０１によるＵＩ要素を提示するための実行モジュール６００を生成する（ステップＳ３９）。
【０１１３】
一方、Runtime５１３は、ＯＳ種類は非Windowsであると判断すると（ステップＳ３７でＮＯ）、Ｉ／Ｆ変換ソースコード４２５Ｇを解釈し実行する（ステップＳ４１）。これにより、Runtime５１３は、Ｉ／Ｆ変換ソースコード４２５Ｇに従いＵＩ要素を提示するための実行モジュール７００を生成する（ステップＳ３９）。
【０１１４】
図１４の処理によれば、ＨＭＩプログラムを実行することにより、同一のＨＭＩプログラムのソースコードから、外部コントロール５０１を含むWindowsに適合した実行モジュール６００と、外部コントロール５０１を代替するＩ／Ｆ変換ソースコード４２５Ｇによる非Windowsに適合した実行モジュール７００とを生成することができる。
【０１１５】
＜Ｍ．プログラム＞
本実施の形態に示した各フローチャートの処理を含む開発環境４２の下の各種の処理を実行するためのサポートプログラムは、サポート装置２００の記憶部（ＲＯＭ２０４、ＲＡＭ２０６、ＨＤＤ２０８、記録媒体２５０など）に格納されている。ＣＰＵ２０２は、記憶部からサポートプログラムを読出し、実行することにより、本実施の形態で説明した開発環境４２における各種処理を実現することが可能となる。
【０１１６】
このようなサポートプログラムは、サポート装置２００に付属するフレキシブルディスク、ＣＤ−ＲＯＭ（Compact  Disk-Read  Only  Memory）、ＲＯＭ、ＲＡＭおよび記録媒体２５０などのコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、サポート装置２００に内蔵するＨＤＤ２０８などの記録媒体にて記録させて、プログラムを提供することもできる。また、図示しないネットワークから通信インターフェイスを介したダウンロードによって、プログラムを提供することもできる。
【０１１７】
＜Ｎ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
［構成１］
ＦＡ（ファクトリオートメーション）の対象装置（１００）で実行されるＨＭＩ（ヒューマンマシンインターフェイス）プログラム（１１２）の開発を支援するサポート装置（２００）であって、
前記ＨＭＩプログラムを構成するＵＩ（ユーザインターフェイス）要素であって、第１種類のＯＳに適合するプログラムコードのＵＩ要素の指定を受付ける受付手段（２１１）と、
前記指定がなされたＵＩ要素から、第２種類のＯＳに適合するＵＩ要素のプログラムコード（４２５Ａ）を生成するコード生成手段（４２５）と、
生成された前記第２種類のＯＳに適合するプログラムコードと、前記対象装置が有するＯＳは前記第１種類のＯＳではないとの条件が満たされる場合に当該プログラムコードを含む実行モジュールの生成を指令する指令コード（５００）とを含むラッパープログラム（４２５Ｂ）を生成するラッパー生成手段（４２８）と、
前記第１種類のＯＳに適合するプログラムコードのＵＩ要素として前記ラッパープログラムが組込まれた前記ＨＭＩプログラムから前記実行可能コードのプログラムを生成する、サポート装置。
［構成２]
前記ラッパー生成手段は、さらに、
前記指令コードに、前記対象装置が有するＯＳは前記第１種類のＯＳであるとの条件が満たされる場合に前記第１種類のＯＳに適合するプログラムコードのＵＩ要素を含むＨＭＩプログラムの実行モジュールの生成を指令するコード（４２５Ｅ）を含める、構成１に記載のサポート装置。
［構成３]
前記コード生成手段は、
前記第１種類のＯＳに適合するプログラムコードのＵＩ要素のプロパティのうち前記第２種類のＯＳに適合するプログラムコードのＵＩ要素のプロパティに一致するプロパティを抽出し、抽出されたプロパティを含むＵＩ要素のプログラムコードから、前記第２種類のＯＳに適合するＵＩ要素のプログラムコードを生成する、構成１または２に記載のサポート装置。
［構成４]
前記ＵＩ要素の選択候補の一覧を出力する手段（４６２）と、
前記一覧に、前記受付手段が受付ける前記第１種類のＯＳに適合するプログラムコードのＵＩ要素を登録する登録手段（３９１）と、をさらに備え、
前記一覧からユーザが選択するＵＩ要素を用いて前記ＨＭＩプログラムを編集する、構成１から３のいずれか１に記載のサポート装置。
［構成５]
前記ラッパー生成手段は、
前記実行形式生成手段により前記実行可能コードのプログラムを生成するとき、前記ラッパープログラムを生成する、構成４に記載のサポート装置。
［構成６]
前記ラッパー生成手段は、
前記登録手段により前記第１種類のＯＳに適合するプログラムコードのＵＩ要素が前記一覧に登録されるとき、前記ラッパープログラムを生成する、構成４に記載のサポート装置。
［構成７]
前記対象装置が備えるＯＳの種類が前記第１種類にでないとき、前記コード生成手段は、前記指定がなされたＵＩ要素から、第２種類のＯＳに適合するＵＩ要素のプログラムコードを生成する、構成１から６のいずれか１に記載のサポート装置。
［構成８]
ＦＡ（ファクトリオートメーション）の対象装置（１００）で実行されるＨＭＩ（ヒューマンマシンインターフェイス）プログラム（１１２）の開発を支援するサポートプログラム（７１０）であって、
前記サポートプログラムは、コンピュータ（２００）に、
前記ＨＭＩプログラムを構成するＵＩ（ユーザインターフェイス）要素であって、第１種類のＯＳに適合するプログラムコードのＵＩ要素の指定を受付けるステップ（Ｓ２１）と、
前記指定がなされたＵＩ要素から、第２種類のＯＳに適合するＵＩ要素のプログラムコードを生成するステップ（Ｓ７）と、
生成された前記第２種類のＯＳに適合するプログラムコードと、前記対象装置が有するＯＳは前記第１種類のＯＳではないとの条件が満たされる場合に当該プログラムコードを含む実行モジュールの生成を指令する指令コードとを含むラッパープログラムを生成するステップ（Ｓ９）と、
前記第１種類のＯＳに適合するプログラムコードのＵＩ要素として前記ラッパープログラムが組込まれた前記ＨＭＩプログラムから実行可能コードのプログラムを生成するステップ（Ｓ２７）を含む、サポートプログラム。
【０１１８】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１１９】
１  システム、４２  開発環境、１００  制御装置、２００  サポート装置、３０９  エディタ、３９１  ツールボックス管理部、４２１  コンパイル実行部、４２１Ａ  コンパイル指示、４２４  種類保持部、４２４Ａ  ＯＳ種類、４２５  外部コントロールコンバータ、４２５Ａ，４２５Ｇ  １／Ｆ変換ソースコード、４２５Ｂ  １／Ｆ変換オブジェクト、４２８  ラッパー生成部、４６２  ツールボックス、５００  ラッパー部、５０１  外部コントロール、５０２  代替コントロール、６００，７００  実行モジュール、７１０  サポートプログラム。
【図１】
2020021155.tif 000003
【図２】
2020021155.tif 000004
【図３】
2020021155.tif 000005
【図４】
2020021155.tif 000006
【図５】
2020021155.tif 000007
【図６】
2020021155.tif 000008
【図７】
2020021155.tif 000009
【図８】
2020021155.tif 000010
【図９】
2020021155.tif 000011
【図１０】
2020021155.tif 000012
【図１１】
2020021155.tif 000013
【図１２】
2020021155.tif 000014
【図１３】
2020021155.tif 000015
【図１４】
2020021155.tif 000016
【図１５】
2020021155.tif 000017