(57)【要約】【課題】編集がなされたプログラムの転送を簡単化する。【解決手段】ＦＡに設けられる対象装置で実行されるプログラムの開発を支援するサポート装置（２００）は、プログラムを対象装置へ転送するための転送処理を実施する。プログラムは、機器を制御するための制御プログラム（１１１）と、制御プログラムが用いる変数を処理するＨＭＩプログラム（１１２）とを含む。制御プログラムまたはＨＭＩプログラムの編集がなされると、サポート装置は、制御プログラムおよびＨＭＩプログラムを、それぞれ、制御装置（１００）とＨＭＩ装置（４）に同時に転送する。【選択図】図１
2020021157.tif 000002
【特許請求の範囲】
【請求項１】
ＦＡ（ファクトリオートメーション）に設けられる対象装置で実行されるプログラムの開発を支援するサポート装置であって、
前記対象装置は、前記ＦＡの機器を制御する制御装置とＨＭＩ（ヒューマンマシンインターフェイス）装置とを含み、
前記プログラムを編集する編集手段と、
編集された前記プログラムを前記対象装置へ転送するための転送処理を実施する転送管理手段と、を備え、
前記プログラムは、
前記機器を制御するための制御プログラムと、前記制御プログラムが用いる変数を処理するＨＭＩプログラムとを含み、
前記転送管理手段は、
前記編集手段により前記制御プログラムまたは前記ＨＭＩプログラムの編集がなされた場合に、前記制御プログラムおよび前記ＨＭＩプログラムを、それぞれ、前記制御装置と前記ＨＭＩ装置に同時に転送するよう前記転送処理を実施する手段を含む、サポート装置。
【請求項２】
前記編集手段により編集された前記制御プログラムまたは前記ＨＭＩプログラムの各プログラムを、前記対象装置で実行されている当該プログラムと比較し、比較の結果から、前記編集された各プログラムが前記実行されている当該プログラムから変更されたかを判定する手段を、さらに備え、
前記転送管理手段は、さらに、
前記編集手段により編集された前記制御プログラムまたは前記ＨＭＩプログラムの各プログラムのうち、前記変更の判定がなされた一方または両方を転送するよう前記転送処理を実施する手段を含む、請求項１に記載のサポート装置。
【請求項３】
前記判定する手段による判定結果に基づく情報をディスプレイに表示させる通知手段と、
前記サポート装置に対するユーザ操作を受付ける操作受付手段と、をさらに備え、
前記転送管理手段は、
前記編集手段により編集された前記制御プログラムまたは前記ＨＭＩプログラムの各プログラムのうち、受付けるユーザ操作内容が示す一方または両方を転送するよう前記転送処理を実施する手段を含む、請求項２に記載のサポート装置。
【請求項４】
前記転送管理手段により前記制御プログラムまたは前記ＨＭＩプログラムの転送処理が実施されるとき、前記対象装置に、転送後の各プログラムを起動させるための起動指示を送信する、請求項１から３のいずれか１項に記載のサポート装置。
【請求項５】
前記起動指示は、転送後の各プログラムを起動させる時間の情報を含む、請求項４に記載のサポート装置。
【請求項６】
前記プログラムの転送が完了した旨の通知を前記対象装置から受信したときに、前記起動指示を前記対象装置に送信する、請求項４に記載のサポート装置。
【請求項７】
前記ＨＭＩプログラムの編集は、当該ＨＭＩプログラムを構成するプログラムであって前記変数を処理するＵＩ（ユーザインターフェイス）部品の編集を含み、
前記ＨＭＩプログラムの編集は、前記ＵＩ部品の編集を含む、請求項１から６のいずれか１項に記載のサポート装置。
【請求項８】
前記制御プログラムは、変数と、前記変数を用いた処理内容を示すプログラムコードとを含み、
前記比較の結果が、前記変数の変更なしに前記プログラムコードの変更があることを示す場合、予め定められた通知を前記ＨＭＩ装置のディスプレイに出力させる、請求項１から７のいずれか１項に記載のサポート装置。
【請求項９】
ＦＡ（ファクトリオートメーション）に設けられる対象装置で実行されるプログラムの開発を支援するサポートプログラムであって、
前記対象装置は、前記ＦＡに設けられる機器を制御する制御装置とＨＭＩ（ヒューマンマシンインターフェイス）装置とを含み、
前記サポートプログラムは、コンピュータに、
前記プログラムを編集するステップと、
編集された前記プログラムを前記対象装置へ転送するための転送処理を実施するステップと実行させ、
編集される前記プログラムは、
前記機器を制御するための制御プログラムと、前記制御プログラムが用いる変数を処理するＨＭＩプログラムとを含み、
前記転送処理を実施するステップは、
前記制御プログラムまたは前記ＨＭＩプログラムの編集がなされた場合に、前記制御プログラムおよび前記ＨＭＩプログラムを、それぞれ、前記制御装置と前記ＨＭＩ装置に同時に転送するよう前記転送処理を実施するステップを含む、サポートプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ＦＡ（ファクトリオートメーション）のプログラムの開発を支援するサポート装置および開発支援プログラムに関する。
【背景技術】
【０００２】
様々な生産および製造現場において、ＰＬＣ（プログラマブルロジックコントローラ）などの制御装置を用いたＦＡ技術が広く普及している。このような制御装置は、一種のコンピュータであり、製造装置や製造設備などのＦＡ機器に応じて、これらを制御するように設計された制御プログラムを実行する。また、ＦＡの分野に適用されるＨＭＩ（ヒューマンマシンインターフェイス)装置は、ＨＭＩプログラムを実行することにより、ＰＬＣなどから得られるＦＡ機器に関する情報を画面で表示する。また、ＨＭＩプログラムは、生産管理者などのオペレータがＨＭＩの画面をタッチなど操作して、ＨＭＩの画面を介し制御プログラムが参照するデータを設定することもできる。
【０００３】
このように、ＨＭＩプログラムと、制御プログラムは互いに関連しているので、制御プログラムに関して新規プログラムまたは変数を追加するよう変更がなされた場合、追加変数の値を表示するなど画面構成を変更するためにＨＭＩプログラムを変更するケースが多い。このようなプログラムの変更がなされた場合、変更後のＨＭＩプログラムおよび制御プログラムを、それぞれ、ＨＭＩ装置およびＰＬＣへ転送する必要がある。
【０００４】
一般的に、ＨＭＩプログラムと制御プログラムとの開発環境が統合されていても、転送先（ＨＭＩ装置とＰＬＣ）は異なるために、更新後のＨＭＩプログラムおよび制御プログラムの転送に手間と時間がかかる。したがって、このような転送を簡単化して手間と時間を節約したいとの要望がある。
【０００５】
特許文献１（特開平１０−１０５１４７号公報）では、ＰＬＣを接続可能なプログラム式表示装置に対する操作画面データの転送を開示する。具体的には、各単位画面ファイルを特定するデータと更新時期を特定するデータを比較することにより、同一のプロジェクトで且つ変更処理が加えられたデータファイルのみを選択的にデータ転送する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−１０５１４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１は、変更処理が加えられた単位画面ファイルのデータファイルを転送する構成を開示するが、画面のデータファイルの転送に併せてＰＬＣ側で実行されるプログラムを転送することは開示しない。
【０００８】
本開示の一つの目的は、ＨＭＩプログラムまたは制御プログラムの編集がなされた場合のＨＭＩプログラムまたは制御プログラムの転送を簡単化するプログラム開発の支援環境を提供することである。
【課題を解決するための手段】
【０００９】
この開示の一例にかかるサポート装置は、ＦＡ（ファクトリオートメーション）に設けられる対象装置で実行されるプログラムの開発を支援するサポート装置であって、対象装置は、ＦＡの機器を制御する制御装置とＨＭＩ（ヒューマンマシンインターフェイス）装置とを含み、サポート装置は、プログラムを編集する編集手段と、編集されたプログラムを対象装置へ転送するための転送処理を実施する転送管理手段と、を備える。
【００１０】
プログラムは、機器を制御するための制御プログラムと、制御プログラムが用いる変数を処理するＨＭＩプログラムとを含み、転送管理手段は、編集手段により制御プログラムまたはＨＭＩプログラムの編集がなされた場合に、制御プログラムおよびＨＭＩプログラムを、それぞれ、制御装置とＨＭＩ装置に同時に転送するよう転送処理を実施する手段を含む。
【００１１】
上述の開示によれば、ＨＭＩプログラムまたは制御プログラムの編集がなされた場合に、両プログラムはそれぞれ対象装置に同時に転送される。したがって、ＨＭＩプログラムまたは制御プログラムを修正するなどの編集がなされる場合に対象装置へプログラムが自動的に転送されて、対象装置へのプログラムの転送漏れを防止することができる。
【００１２】
上述の開示において、編集手段により編集された制御プログラムまたはＨＭＩプログラムの各プログラムを、対象装置で実行されている当該プログラムと比較し、比較の結果から、編集された各プログラムが実行されている当該プログラムから変更されたかを判定する手段を、さらに備え、転送管理手段は、さらに、編集手段により編集された制御プログラムまたはＨＭＩプログラムの各プログラムのうち、変更の判定がなされた一方または両方を転送するよう転送処理を実施する手段を含む。
【００１３】
上述の開示によれば、編集されたプログラムと、対象装置で実行中の当該プログラムとが比較されることとで、転送対象とすべきプログラムを決定することができる。
【００１４】
上述の開示において、判定する手段による判定結果に基づく情報をディスプレイに表示させる通知手段と、サポート装置に対するユーザ操作を受付ける操作受付手段と、をさらに備え、転送管理手段は、編集手段により編集された制御プログラムまたはＨＭＩプログラムの各プログラムのうち、受付けるユーザ操作内容が示す一方または両方を転送するよう転送処理を実施する手段を含む。
【００１５】
上述の開示によれば、ユーザは、変更の判定結果を参照して、転送するべきプログラムを選択的に指定することができる。
【００１６】
上述の開示において、転送管理手段により制御プログラムまたはＨＭＩプログラムの転送処理が実施されるとき、対象装置に、転送後の各プログラムを起動させるための起動指示を送信する。
【００１７】
上述の開示によれば、対象装置へのプログラムの転送に併せて、各対象装置に対して、転送後の当該プログラムを起動させるための指示を与えることができる。
【００１８】
上述の開示において、起動指示は、転送後の各プログラムを起動させる時間の情報を含む。
【００１９】
上述の開示によれば、起動指示を用いて、対象装置に対して、転送後のプログラムを起動させる時間を指示することができる。
【００２０】
上述の開示において、プログラムの転送が完了した旨の通知を対象装置から受信したときに、起動指示を対象装置に送信する。
【００２１】
上述の開示によれば、対象装置にプログラムの転送が完了したことが確認されたときに、当該対象装置に起動指示を与えることができる。
【００２２】
上述の開示において、ＨＭＩプログラムの編集は、当該ＨＭＩプログラムを構成するプログラムであって変数を処理するＵＩ（ユーザインターフェイス）部品の編集を含み、ＨＭＩプログラムの編集は、ＵＩ部品の編集を含む。
【００２３】
上述の開示によれば、ＵＩ部品が編集された場合は、上述の転送管理手段による転送処理を、ＵＩ部品を対象に実施することができる。
【００２４】
上述の開示において、制御プログラムは、変数と、変数を用いた処理内容を示すプログラムコードとを含み、比較の結果が、変数の変更なしにプログラムコードの変更があることを示す場合、予め定められた通知をＨＭＩ装置のディスプレイに出力させる。
【００２５】
上述の開示によれば、制御プログラムのプログラムコードに変更がある場合、ＨＭＩプログラムによる変数の処理結果が変化する場合があり、その旨の通知をユーザに出力することができる。
【００２６】
この開示の一例にかかるサポートプログラムは、ＦＡ（ファクトリオートメーション）に設けられる対象装置で実行されるプログラムの開発を支援するサポートプログラムであって、対象装置は、ＦＡに設けられる機器を制御する制御装置とＨＭＩ（ヒューマンマシンインターフェイス）装置とを含み、サポートプログラムは、コンピュータに、プログラムを編集するステップと、編集されたプログラムを対象装置へ転送するための転送処理を実施するステップと実行させ、編集されるプログラムは、機器を制御するための制御プログラムと、制御プログラムが用いる変数を処理するＨＭＩプログラムと、を含み、転送処理を実施するステップは、制御プログラムまたはＨＭＩプログラムの編集がなされた場合に、制御プログラムおよびＨＭＩプログラムを、それぞれ、制御装置とＨＭＩ装置に同時に転送するよう転送処理を実施するステップを含む。
【００２７】
上述の開示によれば、サポートプログラムがコンピュータにより実行されることで、ＨＭＩプログラムまたは制御プログラムの編集がなされた場合に、両プログラムはそれぞれ対象装置に同時に転送される。したがって、ＨＭＩプログラムまたは制御プログラムを修正するなどの編集がなされる場合に対象装置へプログラムが自動的に転送された対象装置へのプログラムの転送漏れを防止することができる。
【発明の効果】
【００２８】
この開示によれば、ＨＭＩプログラムまたは制御プログラムの編集がなされた場合のＨＭＩプログラムまたは制御プログラムの転送を簡単化するプログラム開発の支援環境を提供することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の実施の形態に係るシステムの構成を模式的に示す図である。
【図２】本発明の実施の形態にかかるＰＬＣ１００のハードウェア構成の一例を模式的に示す図である。
【図３】本発明の実施の形態にかかるサポート装置２００のハードウェア構成の一例を模式的に示す図である。
【図４】本発明の実施の形態にかかるＨＭＩ装置４のハードウェア構成の一例を模式的に示す図である。
【図５】本発明の実施の形態にかかるＨＭＩプログラム１１２の利用態様を模式的に示す図である。
【図６】本発明の実施の形態にかかるサポート装置２００におけるプログラムの開発環境４２の一例を概略的に示す図である。
【図７】本発明の実施の形態にかかる転送マネージャ２３１による転送処理の一例を模式的に説明する図である。
【図８】本発明の実施の形態にかかる転送マネージャ２３１が参照する転送順番テーブル２３４の一例を模式的に示す図である。
【図９】本発明の実施の形態にかかる開発環境４２の他の構成例を模式的に示す図である。
【図１０】本発明の実施の形態にかかる変数チェッカ２３７による処理の一例を模式的に示す図である。
【図１１】本発明の実施の形態にかかる転送順番テーブル２３４に従う転送処理の一例を示すフローチャートである。
【図１２】本発明の実施の形態にかかるユーザ操作に基づく転送処理の一例を示すフローチャートである。
【図１３】本発明の実施の形態にかかる変数の変更に基づく転送処理の一例を示すフローチャートである。
【図１４】本発明の実施の形態にかかる起動処理の一例を模式的に説明する図である。
【発明を実施するための形態】
【００３０】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００３１】
＜Ａ．適用例＞
まず、図１を参照して、本発明が適用される場面の一例について説明する。図１は、本発明の実施の形態に係るシステムの構成を模式的に示す図である。図１を参照して、ＦＡのシステム１は、複数のデバイス３００と通信する１または複数のＰＬＣ（プログラマブルコントローラ）１００、１または複数のＨＭＩ装置４およびサポート装置２００をネットワーク接続する。
【００３２】
ＰＬＣ１００は、「制御装置」の一実施例である。ＰＬＣ１００は、一種のコンピュータであり、製造装置や製造設備などの各デバイス３００に応じて設計された制御対象の機器を制御するための制御プログラム１１１などのユーザプログラムを実行する。
【００３３】
制御プログラム１１１は、変数プログラムに対応し、典型的には、シーケンスプログラムを含み得る。シーケンスプログラムは、例えば国際電気標準会議（International Electrotechnical Commission：ＩＥＣ）によって規定された国際規格ＩＥＣ６ １１３１−３に従って記述された１または複数の命令からなる、いわゆるＩＥＣプログラムを包含する。シーケンスプログラムには、シーケンス命令および／またはモーション命令を含む各種命令を含み得る。なお、シーケンスプログラムとしては、国際規格ＩＥＣ６１１３１−３に従って記述された命令に限らず、ＰＬＣの製造メーカまたはベンダなどが独自に規定した命令を含むようにしてもよい。本実施の形態では、制御プログラム１１１は、ＩＥＣプログラムと称する場合がある。
【００３４】
また、ＨＭＩ装置４も、一種のコンピュータであり、ユーザプログラムであるＨＭＩプログラム１１２を実行する。このような制御プログラム１１１およびＨＭＩプログラム１１２は、プログラム開発環境を提供するサポート装置２００において、サポートプログラム７００が実行されることにより開発される。
【００３５】
サポート装置２００は、例えば汎用のコンピュータであり、システム１の各種プログラムを統合して開発する環境を提供するとともに、開発された各種プログラムをＨＭＩ装置４およびＰＬＣ１００に対して転送する。デバイス３００は、制御対象となる図示しないＦＡに設けられるフィールド機器をネットワーク接続する。制御対象は、例えばセンサ、アクチュエータなどを含み得る。
【００３６】
サポート装置２００は、制御プログラム１１１または制御プログラム１１１が用いる変数を処理するＨＭＩプログラム１１２と、サポート装置２００に対するユーザ操作内容が示す指示に従い編集する。サポート装置２００は、制御プログラム１１１またはＨＭＩプログラム１１２の編集がなされた場合に、制御プログラム１１１およびＨＭＩプログラム１１２を、それぞれ、ＰＬＣ１００とＨＭＩ装置４に同時に転送するよう転送処理を実施する。
【００３７】
このように、サポート装置２００では、ＨＭＩプログラム１１２と制御プログラム１１１の開発環境が統合されている。本実施の形態の背景として、ＨＭＩプログラム１１２は、実行されることにより、制御プログラム１１１が用いる変数を処理する。このように両プログラムは相互に関連している。具体例として、プログラムの開発環境においては、例えばＨＭＩプログラム１１２のＵＩ部品を用いる画面構成を更新した場合、ＰＬＣ側も画面に対応する新規プログラムおよび変数を追加するケースがある。このように、ＨＭＩプログラム１１２と制御プログラム１１１とは互いに関連するから、ＨＭＩプログラム１１２または制御プログラム１１１の編集がなされた場合は、ＨＭＩプログラム１１２および制御プログラム１１１の両プログラムを、それぞれ、ＨＭＩ装置４およびＰＬＣ１００に転送したいとの要望がある。サポート装置２００では、プログラムの編集がなされた場合に、ＨＭＩプログラム１１２と制御プログラム１１１の転送を同時に行うことで当該要望に応える。これにより、サポート装置２００に対象装置（ＨＭＩ装置４またはＰＬＣ１００）をつなぎなおして（または、開発環境上でユーザが選択しなおして）転送処理を実施する必要はなく、転送にかかる手間と時間を省くことができる。
【００３８】
上記に述べた転送処理に際しては、編集された制御プログラム１１１またはＨＭＩプログラム１１２の各プログラムを、対象装置で実行されている当該プログラムと比較し、比較の結果から、編集された各プログラムが実行されている当該プログラムから変更されたかを判定する比較／判定を実施する。転送処理では、編集された制御プログラム１１１またはＨＭＩプログラム１１２の各プログラムのうち、比較/判定により変更の判定がなされた一方または両方のプログラムを転送する処理が実施される。これにより、編集により対象装置で実行中のプログラムから何らかの変更がなされたプログラムのみを、転送処理の対象とすることができる。
【００３９】
上記に述べた比較／判定におけるプログラムどうしの比較の基準は、例えばファイル名、作成（編集）日付、プログラムコード（例えばオブジェクトコード）のサイズ、およびプログラムコードから算出されるハッシュ値などを含み、比較の基準として、これら基準のうちの１つ、または複数の組合せを用いることができる。
【００４０】
システム１では、サポート装置２００とＰＬＣ１００の間は、例えばＵＳＢ（Universal Serial Bus）に従う伝送路が採用される。ＰＬＣ１００とデバイス３００の伝送路は、例えばＴＳＮ（Time-sensitive networking）規格に従いデータの到達時間が保証されるバスまたはネットワークを採用することが好ましい。例えばマシンコントロール用ネットワークの一例であるＥｔｈｅｒＣＡＴ（登録商標）が採用され得る。
【００４１】
サポート装置２００において開発されるユーザプログラムは、サポート装置２００からＰＬＣ１００またはＨＭＩ装置４に転送されてＰＬＣ１００またはＨＭＩ装置４のプロセッサにより実行される。
【００４２】
制御プログラム１１１による変数を用いた制御演算は、デバイス３００がフィールド機器から収集した状態値などのデータまたは生成したデータの処理、デバイス３００に対する制御指令などのデータを生成する処理（演算処理）、生成した出力データを対象のデバイス３００へ送信する処理（出力処理）などを含む。
【００４３】
ＨＭＩプログラム１１２により実施されるＨＭＩ処理は、制御プログラム１１１が用いる変数の値の処理を含む。このような変数の値の処理は、例えば、制御演算に用いられる変数が示す値を収集する、収集情報を画面で出力する、および画面などを介しユーザ操作を受付ける処理などを含む。収集される変数の値は、制御対象の状態値（例えば、センサの検出による出力値、例えばモータの回転数、回転方向、回転角度など）などを含む。また、ユーザ操作は、例えば各種機器への制御指令、制御のための設定値などを変数に設定するための操作を含む。
【００４４】
以下、本発明のより具体的な応用例として、本実施の形態にかかるサポート装置２００がサポートプログラム７００を実行することで提供するプログラムの開発環境を詳細に説明する。
【００４５】
＜Ｂ．ＰＬＣ１００のハードウェア構成例＞
図２は、本発明の実施の形態にかかるＰＬＣ１００のハードウェア構成の一例を模式的に示す図である。図２を参照して、ＰＬＣ１００は、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro-Processing Unit）などのプロセッサ１０２と、チップセット１０４と、メインメモリ１０６と、フラッシュメモリ１０８と、外部ネットワークコントローラ１１６と、メモリカードインターフェイス１１８と、内部バスコントローラ１２２と、フィールドバスコントローラ１２４とを含む。
【００４６】
フラッシュメモリ１０８には、システムプログラム１１０およびユーザプログラムが格納される。システムプログラム１１０は、データの入出力処理や実行タイミング制御などの、ＰＬＣ１００の基本的な機能を提供するための命令コードを含む。
【００４７】
ユーザプログラムは、制御プログラム１１１と、制御プログラム１１１で呼出される関数などが格納されるライブラリを含む。
【００４８】
プロセッサ１０２は、フラッシュメモリ１０８に格納されたシステムプログラム１１０およびユーザプログラムを読み出して、メインメモリ１０６に展開して実行することで、デバイス３００またはフィールド機器などの制御対象に対する制御処理を実現する。
【００４９】
チップセット１０４は、各コンポーネントを制御することで、ＰＬＣ１００全体としての処理を実現する。
【００５０】
内部バスコントローラ１２２は、ＰＬＣ１００と内部バスを通じて連結されるＩ／Ｏユニット１４との間でデータを遣り取りするインターフェイスである。フィールドバスコントローラ１２４は、ＰＬＣ１００と図示しないフィールドバスを通じて連結されるＩ／Ｏユニット１６との間でデータを遣り取りするインターフェイスである。内部バスコントローラ１２２およびフィールドバスコントローラ１２４は、対応のＩ／Ｏユニット１４および１６にそれぞれ入力される状態値を取得するとともに、プロセッサ１０２での演算結果を対応のＩ／Ｏユニット１４および１６から指令値としてそれぞれ出力する。
【００５１】
外部ネットワークコントローラ１１６は、各種の有線／無線ネットワークを通じたデータの遣り取りを制御する。メモリカードインターフェイス１１８は、メモリカード１２０を着脱可能に構成されており、メモリカード１２０に対してデータを書込み、メモリカード１２０からデータを読出すことが可能になっている。ＰＬＣ１００は、外部ネットワークコントローラ１１６またはメモリカードインターフェイス１１８を介してサポート装置２００とデータを遣り取りする。また、ＰＬＣ１００は、外部ネットワークコントローラ１１６を介してＨＭＩ装置４とデータを遣り取りする。
【００５２】
ＰＬＣ１００がプログラムを実行することで提供される機能の一部または全部を専用のハードウェア回路として実装してもよい。
【００５３】
＜Ｃ．サポート装置２００のハードウェア構成例＞
次に、サポート装置２００のハードウェア構成例について説明する。図３は、本発明の実施の形態にかかるサポート装置２００のハードウェア構成の一例を模式的に示す図である。図３を参照して、サポート装置２００は、据え置き型でもよく、またはＰＬＣ１００が配置される製造現場では可搬性に優れたノート型のパーソナルコンピュータの形態で提供されてもよい。
【００５４】
サポート装置２００は、ＯＳ（Operating System）を含む各種プログラムを実行するＣＰＵ２０２と、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）２０４と、ＣＰＵ２０２でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ（Random Access Memory）２０６と、ＣＰＵ２０２で実行されるサポートプログラム７００などを含む各種プログラムを不揮発的に格納するＨＤＤ（ハードディスク）２０８とを含む。サポートプログラム７００は、実行されることにより、サポート装置２００におけるユーザプログラムのプログラム開発環境を実現するとともに、ユーザプログラムの開発を支援する機能を提供する。
【００５５】
サポート装置２００は、さらに、サポート装置２００に対するユーザの操作を受付けるキーボード２１０およびマウス２１２を含む入力部２１１と、情報をユーザに提示するためのディスプレイ２１４とを含む。サポート装置２００は、ＰＬＣ１００およびＨＭＩ装置４を含む外部装置と通信するための通信インターフェイス２１８を含む。入力部２１１は、ディスプレイ２１４と一体的に構成されるタッチパネルとして提供されてもよい。サポート装置２００の各部は内部バス２２０により相互に通信する。
【００５６】
サポート装置２００は、記録媒体２５０が脱着自在に装着されて、装着された記録媒体２５０からそこに格納されているサポートプログラム７００を読み取るための記録媒体読取装置２１７を含む。読み取られたサポートプログラム７００は、ＨＤＤ２０８に格納される。サポートプログラム７００は、プログラム開発環境を実現するプログラムを含み得る。記録媒体２５０は、サポート装置２００で実行されるサポートプログラム７００などが格納された状態で流通し得る。なお、記録媒体２５０は、ＣＦ（Compact  Flash）、ＳＤ（Secure  Digital）などの汎用的な半導体記憶デバイスや、フレキシブルディスク（Flexible  Disk）などの磁気記憶媒体や、ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）などの光学記憶媒体などからなる。
【００５７】
＜Ｄ．ＨＭＩ装置４のハードウェア構成例＞
図４は、本発明の実施の形態にかかるＨＭＩ装置４のハードウェア構成の一例を模式的に示す図である。ＨＭＩ装置４は、据え置き型でもよく、またはＰＬＣ１００が配置される製造現場では可搬性に優れたノート型のパーソナルコンピュータの形態で提供されてもよい。
【００５８】
図４を参照して、ＨＭＩ装置４は、ＣＰＵ４１１、ＲＯＭ（Read Only Memory）４１２、ＲＡＭ（Random Access Memory）４１３、各種のプログラムおよびデータを不揮発的に格納するためのフラッシュＲＯＭ４１４、ユーザの操作を受付けるための操作キー４１６、データリーダ/ライタ４１７、タッチスクリーン４１８および通信インターフェイス４１９を備える。なお、これらの各部は、内部バスを介して互いに接続される。
【００５９】
フラッシュＲＯＭ４１４は、例えば、ＨＭＩプログラム１１２と、ＨＭＩプログラム１１２を構成する１または複数のＵＩ部品５０１を含むライブラリ１１３を格納する。ＨＭＩプログラム１１２およびＵＩ部品５０１は、ＨＭＩ装置４で実行可能なコードからなる。「ＵＩ部品」は、ＨＭＩプログラム１１２を構成する画像データ、テキストデータ、プログラムコードなどを含む。ＨＭＩプログラム１１２が実行されて画面が表示されるとき、ＵＩ部品によって、絵、文字列などが表示されるとともに、プログラムコードが実行されることによる機能が提供される。提供される機能は、制御プログラム１１１が用いる変数の値に基く画像表示、当該変数に値を設定するユーザ操作受付などを含み得る。
【００６０】
タッチスクリーン４１８は、表示部として機能するディスプレイ４８１、ユーザの入力を受付けるためのタッチパネル４８２を含む。通信インターフェイス４１９は、ＰＬＣ１００およびＨＭＩ装置４を含む外部装置と通信する。
【００６１】
データリーダ／ライタ４１７は、ＣＰＵ４１１と外部記憶媒体の一例であるメモリカード４２０との間のデータ伝送を仲介する。また、ＨＭＩ装置４には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。
【００６２】
＜Ｅ．ＨＭＩプログラムの利用態様の例示＞
図５は、本発明の実施の形態にかかるＨＭＩプログラム１１２の利用態様を模式的に示す図である。ＨＭＩ装置４は、サポート装置２００により作成されたＨＭＩプログラム１１２を実行することにより、ＨＭＩプログラム１１２の各ページを実行してディスプレイ４８１に画面を表示する。画面を表示するときに当該画面を構成するＵＩ部品のプログラムコードが実行されることで、ＨＭＩ装置４は、ネットワークを介して制御プログラム１１１が用いる変数の値の要求を送信する。ＨＭＩ装置４は、ＰＬＣ１００から要求した変数の値を応答として受信し、受信した値を、画面のＵＩ部品に関連付けて表示する。これにより、オペレータ（ユーザ）は、制御対象の状態値をモニタすることができる。
【００６３】
また、オペレータが画面のＵＩ部品を操作して値を入力した場合、ＵＩプログラムのコードが実行されることで、ＨＭＩ装置４は、ネットワークを介して制御プログラム１１１が用いる変数への入力値（例えば、閾値、目標値など）の設定要求を送信する。ＰＬＣ１００は設定要求された値を変数に設定し、設定後の値を用いて制御プログラム１１１を実行する。これにより、オペレータは、制御対象を制御するための値をＨＭＩ画面を操作して指定することができる。
【００６４】
＜Ｆ．プログラムの開発環境＞
図６は、本発明の実施の形態にかかるサポート装置２００におけるプログラムの開発環境４２の一例を概略的に示す図である。図６を参照して、開発環境４２は、ＵＩ部品５０１および各種関数などのデータを有したライブラリ２１３および開発ツール２２１を備える。開発ツール２２１は、ＨＭＩエディタ１０Ａ、ＩＥＣエディタ１０Ｂ、ＨＭＩコンパイラ１０ＣおよびＩＥＣコンパイラ１０Ｄを含む。
【００６５】
ＨＭＩエディタ１０Ａは、入力部２１１からのユーザ操作に従いＨＭＩプログラム１１２およびライブラリ２１３のＵＩ部品５０１を作成（編集）することにより、ＨＭＩプログラム１１２を構成するための情報であるＨＭＩプロジェクト２２５を生成する。同様に、ＩＥＣエディタ１０Ｂは、入力部２１１からのユーザ操作に従い制御プログラム１１１、ライブラリ２１３の制御プログラムのための各種関を作成（編集）することにより、制御プログラム１１１（ＩＥＣプログラム）を構成するための情報であるＩＥＣプロジェクト２２２を生成する。
【００６６】
ＨＭＩプロジェクト２２５はＨＭＩプログラム１１２、ＨＭＩプログラム１１２を構成するＵＩ部品５０１が用いる変数の定義（変数名、データ型、当該変数が用いられる機器の識別子など）を示すＨＭＩ変数定義２２８、およびＨＭＩ-ＩＥＣ変数マップ２２６などを含む。ＩＥＣプロジェクト２２２はＩＥＣプログラムである制御プログラム１１１、および制御プログラム１１１および制御プログラム１１１中で呼出される関数などが用いる変数の定義（変数名、データ型、当該変数が用いられる機器の識別子など）を示すＩＥＣ変数定義２２７などを含む。ＨＭＩ-ＩＥＣ変数マップ２２６には、ＨＭＩ変数定義２２８で定義される各ＨＭＩ変数のうち、ＩＥＣ変数定義２２７で定義されるＩＥＣ変数と対応付けされる各ＨＭＩ変数が、当該ＩＥＣ変数と紐付けされた組として登録されている。
【００６７】
コンパイラが起動されると、プロジェクトはコンパイルされる。具体的には、ＨＭＩコンパイラ１０Ｃは、ＨＭＩプロジェクト２２５をコンパイルし、実行可能なコードに変換されたＨＭＩオブジェクト２２９を出力する。ＩＥＣコンパイラ１０Ｄは、ＩＥＣプロジェクト２２２をコンパイルし、実行可能なコードに変換されたＩＥＣオブジェクト２３０を出力する。本実施の形態では、実行可能なコードは、例えばバイナリコードを含む。
【００６８】
サポート装置２００は、ＨＭＩオブジェクト２２９をＨＭＩ装置４に転送し、また、ＩＥＣオブジェクト２３０をＰＬＣ１００に転送する。
【００６９】
ＨＭＩ装置４では、サポート装置２００から受信するＨＭＩプログラム１１２（ＨＭＩオブジェクト２２９）に、ライブラリ１１３の実行可能なコードであるＵＩ部品５０１をリンクさせることにより、ＨＭＩ装置４で実行可能なＨＭＩモジュール２２９−１を生成する。また、ＰＬＣ１００でも、サポート装置２００から受信する制御プログラム１１１（ＩＥＣオブジェクト２３０）に、ライブラリ１１３の実行可能コードである各種関数をリンクさせることにより、ＰＬＣ１００で実行可能なＩＥＣモジュール２３０−１を生成する。ＰＬＣ１００で制御プログラム１１１（ＩＥＣモジュール２３０−１）が実行されることで対象機器の制御がなされ、ＨＭＩ装置４ではＨＭＩプログラム１１２（ＨＭＩモジュール２２９−１）が実行される。このとき、ＨＭＩ装置４でＨＭＩプログラム１１２の各ページの画面が表示されるごとに、当該ページを構成するＵＩ部品が用いる変数の値がＰＬＣ１００に要求され、その応答としてＰＬＣ１００から受信した値は各当該ページの画面のＵＩ部品として表示される（図５参照）。
【００７０】
＜Ｇ．転送マネージャによる転送の構成＞
図７は、本発明の実施の形態にかかる転送マネージャ２３１による転送処理の一例を模式的に説明する図である。図７を参照して、開発環境４２は、図６の構成に加えて「転送管理手段」の一実施例である転送マネージャ２３１、ＨＭＩオブジェクト２２９を通信インターフェイス４１９を介しＨＭＩ装置４に転送するＨＭＩ転送部２３２、およびＩＥＣオブジェクト２３０を通信インターフェイス４１９を介しＰＬＣ１００に転送するコントローラ転送部２３３を備える。転送マネージャ２３１は、後述する比較／判定部２３５および通知部２３６を有する。
【００７１】
図８は、本発明の実施の形態にかかる転送マネージャ２３１が参照する転送順番テーブル２３４の一例を模式的に示す図である。図８を参照して、転送順番テーブル２３４は、転送順番に従い登録される機器の情報（ＰＬＣ１００またはＨＭＩ装置４の識別子）と、各機器の情報に対応した転送機能が登録される。転送機能は、対応の機器がＰＬＣ１００であればコントローラ転送部２３３が登録されて、ＨＭＩ装置４であればＨＭＩ転送部２３２が登録される。
【００７２】
転送マネージャ２３１は、ＨＭＩ装置４に接続される機器のうちから、ＨＭＩオブジェクト２２９およびＩＥＣオブジェクト２３０の転送先となる機器（ＨＭＩ装置４、ＰＬＣ１００）を抽出する。転送マネージャ２３１は、抽出した機器ごとに、当該機器にプログラムを転送する順番を決定し、決定した順番に従い当該機器の識別子を転送順番テーブル２３４に格納する。
【００７３】
具体的には、転送マネージャ２３１は、転送対象のプロジェクト（ＨＭＩプロジェクト２２９、ＩＥＣプロジェクト２３０）のコードを走査して、当該プロジェクトを実行する機器の識別子を抽出する。この機器の識別子は、例えば、ＨＭＩ変数定義２２８またはＩＥＣ変数定義２２７を走査することにより抽出される。
【００７４】
一般的には、ＨＭＩ装置４はＰＬＣ１００に依存して動作するので、転送マネージャ２３１は、抽出した機器の識別子を登録する場合に、ＰＬＣ１００→ＨＭＩ装置４の順番に転送が実施されるよう、転送順番テーブル２３４に機器の識別子を登録する。さらに、転送マネージャ２３１は転送順番テーブル２３４に登録される各機器の識別子に対応して、当該機器の種類（ＰＬＣ１００またはＨＭＩ装置４）に応じた転送機能（ＨＭＩ転送部２３２またはコントローラ転送部２３３の識別子）を登録する。
【００７５】
なお、転送順番テーブル２３４に登録される接続機器の情報（識別子）は、接続機器（ＨＭＩ装置４またはＰＬＣ１００）のネットワークアドレスなどを含む。ＨＭＩ転送部２３２およびコントローラ転送部２３３は、それぞれ、転送マネージャ２３１から出力される接続機器の情報が示すネットワークアドレスを宛先にして、ＨＭＩオブジェクト２２９およびＩＥＣオブジェクト２３０を宛先の機器に送信する。
【００７６】
転送マネージャ２３１は、転送対象機器からの「転送完了」レスポンスを、ＨＭＩ転送部２３２またはコントローラ転送部２３３を介して受信する。
【００７７】
（Ｇ１．変更に基づく転送対象データの決定）
転送マネージャ２３１は、ＨＭＩ装置４およびＰＬＣ１００への転送対象データを決定する。具体的には、転送マネージャ２３１の比較／判定部２３５は、ＩＥＣエディタ１０Ｂにより編集された制御プログラム１１１またはＨＭＩエディタ１０Ａにより編集されたＨＭＩプログラム１１２の各プログラムを、対象装置であるＰＬＣ１００またはＨＭＩ装置４で実行されている当該プログラムと比較する。この場合、比較／判定部２３５は、ＰＬＣ１００またはＨＭＩ装置４から実行中のＩＥＣプログラムまたはＨＭＩプログラムを受信する。比較／判定部２３５は、比較の結果から、編集された各プログラムが対象装置で実行されている当該プログラムから変更されたかを判定する。
【００７８】
このプログラムどうしの比較の基準は、限定されないが、例えばファイル名、作成（編集）日付、プログラムコード（例えばオブジェクトコード）のサイズ、およびプログラムコードから算出されるハッシュ値などを含む。比較の基準として、これら基準のうちの１つ、または複数の組合せを用いることができる。
【００７９】
転送マネージャ２３１は、編集がなされた制御プログラム１１１またはＨＭＩプログラム１１２の各プログラムのうち、比較／判定部２３５により変更されたとの判定がなされた一方または両方を、転送順番テーブル２３４に従い、ＨＭＩ転送部２３２またはコントローラ転送部２３３を介して転送処理を実施する。
【００８０】
通知部２３６は、比較／判定部２３５の判定結果に基づく情報、例えば変更の判定がなされたプログラムの情報および転送オプションなどをディスプレイ２１４に表示させる。例えば、判定結果が、制御プログラム１１１およびＨＭＩプログラム１１２の両方が変更されていることを示す場合、通知部２３６は、制御プログラム１１１およびＨＭＩプログラム１１２を同時転送する旨のオプションを提示し、制御プログラム１１１のみが変更されていることを示す場合、制御プログラム１１１のみを転送する旨のオプションを提示し、ＨＭＩプログラム１１２のみが変更されていることを示す場合、ＨＭＩプログラム１１２のみを転送する旨のオプションを提示し、制御プログラム１１１およびＨＭＩプログラム１１２の両方とも変更されていないことを示す場合、両プログラムを転送しない、即ち転送とりやめの旨のオプションを提示する。
【００８１】
ユーザは、入力部２１１を操作して、提示されたオプションのうちから選択する。転送マネージャ２３１は、入力部２１１を介して受付けるユーザ操作内容が示す選択されたオプションを含むプログラムの転送依頼に従い、ＨＭＩ転送部２３２またはコントローラ転送部２３３を制御し、転送処理を実施する。
【００８２】
（Ｇ２．変数の相違によるプログラム転送）
上記に述べた処理では、プログラムどうしの比較は、ファイル名、作成日付、サイズ、ハッシュ値などの基準による比較であったが、比較の基準はプログラム中で用いられる変数であってもよい。
【００８３】
図９は、本発明の実施の形態にかかる開発環境４２の他の構成例を模式的に示す図である。図９の開発環境４２は、図７の構成に追加して変数チェッカ２３７を備えるが、他の構成は図７に示すものと同様なので説明は繰り返さない。図１０は、本発明の実施の形態にかかる変数チェッカ２３７による処理の一例を模式的に示す図である。変数チェッカ２３７は、制御プログラム１１１とＨＭＩプログラム１１２との間においてプログラムが用いる変数を比較する。比較／判定部２３５は、変数チェッカ２３７の出力に基づき、編集された各プログラムは対象装置で実行されている当該プログラムから変更されたか否かを判定する。
【００８４】
本実施の形態では、ＨＭＩプログラム１１２は、主に、変数と、当該変数を用いたＵＩ部品５０１の呼び出しを含むＨＭＩ処理のプログラムコードとを含む。また、制御プログラム１１１は変数と、当該変数を用いた制御演算などのプログラムコードとを含む。このような変数は、異なるプログラム間でデータを遣り取りするために共通に用いられるグローバル変数と、各プログラム内でのみ扱われるローカル変数とを含む。プログラムが変更されたか否かの判定は、変数の相違または処理内容を示すプログラムコードの相違に基づき実施される。本実施の形態にかかる変数チェッカ２３７は、グローバル変数の相違を検出する。
【００８５】
図１０を参照して、変数チェッカ２３７による変数チェック処理の具体例を説明する。変数チェック処理では、まず、変数チェッカ２３７はＨＭＩプロジェクト２２５のＨＭＩ変数定義２２８が示すＨＭＩ変数一覧を、ＨＭＩ装置４で実行されているＨＭＩプログラム１１２が用いるＨＭＩ変数一覧（ＨＭＩモジュール２２９−１が有するＨＭＩ変数定義が有する変数一覧）と比較し、比較の結果から、今回の編集によりＨＭＩ変数定義２２８に追加された変数を示すＨＭＩ追加変数一覧２３８を生成する。また、変数チェッカ２３７は、ＩＥＣプロジェクト２２２のＩＥＣ変数定義２２７が示すＩＥＣ変数一覧を、ＰＬＣ１００で実行されている制御プログラム１１１が用いるＩＥＣ変数一覧（ＩＥＣ２３０−１が有するＩＥＣ変数定義が有する変数一覧）と比較し、比較の結果から、今回の編集によりＩＥＣ変数定義２２７に追加された変数を示すＩＥＣ追加変数一覧２３９を生成する。
【００８６】
変数チェッカ２３７は、さらに、ＨＭＩ追加変数一覧２３８の変数に基づき、ＨＭＩ-ＩＥＣ変数マップ２２６を検索することにより、編集によって追加されたＨＭＩ変数のうちＨＭＩ-ＩＥＣ変数マップ２２６に登録されているＨＭＩ変数を抽出する。変数チェッカ２３７は、このように抽出されたＨＭＩ変数から追加ＩＥＣ参照変数一覧２４１を作成し、追加ＩＥＣ参照変数一覧２４１をＩＥＣ追加変数一覧２３９と比較する。変数チェッカ２３７は、当該比較の結果を出力する。
【００８７】
転送マネージャ２３１は、変数チェッカ２３７からの比較結果が、追加ＩＥＣ参照変数一覧２４１とＩＥＣ追加変数一覧２３９の変数の一致を示す場合は、ＨＭＩコンパイラ１０ＣおよびＩＥＣコンパイラ１０Ｄを起動させ、ＨＭＩオブジェクト２２９およびＩＥＣオブジェクト２３０を生成させ、その後、転送順番テーブル２３４に従う順番で当該オブジェクトが転送されるよう、コントローラ転送部２３３とＨＭＩ転送部２３２を制御する。
【００８８】
このように、変数チェッカ２３７が、制御プログラム１１１に追加された変数が、ＨＭＩプログラム１１２でも変数として追加されていることを判定した場合は、転送マネージャ２３１は、コンパイラを起動させて、編集後のプロジェクトに基づくＨＭＩオブジェクト２２９およびＩＥＣオブジェクト２３０の両方を転送させることができる。
【００８９】
この場合に、転送順番テーブル２３４に従い転送がなされることで、ＰＬＣ１００へのＩＥＣオブジェクト２３０の転送が完了してから（ＰＬＣ１００からの転送完了のレスポンスを受信してから）ＨＭＩオブジェクト２２９のＨＭＩ装置４への転送を開始することができる。
【００９０】
（Ｇ３．プログラムコード（ロジック）変更の通知）
上記に述べた実施の形態では、変数チェッカ２３７により変数の変更が検出される場合にプログラムの転送が実施されるとしたが、変数の変更が検出されないケースにおけるプログラム転送を説明する。
【００９１】
このケースでは、変数チェッカ２３７により変数の変更は検出されないが、処理内容（ロジック）を示すプログラムコードの変更がある場合は、転送マネージャ２３１は、プログラムの転送を実施するとともに、予め定められた通知をＨＭＩ装置４に送信しディスプレイ４８１に出力させる。
【００９２】
具体的には、例えば制御プログラム１１１を編集する場合、プログラムで用いられる変数の変更がなくても、プログラムコードが変更されることでロジック(制御演算ロジック）に変更がなされるケースがある。このケースにおいて、ＨＭＩプログラム１１２が用いる変数が当該演算ロジックの実行結果の値を示すとすれば、ＵＩ部品５０１による当該変数の値に基くモニタ動作（例えば、画像の表示態様など）が変化する。このような背景のもと、転送マネージャ２３１は、変数チェッカ２３７の出力から変数の変更は検出されず、且つ比較／判定部２３５により制御プログラム１１１のプログラムコードの変更が検出された場合は、ＰＬＣ１００へのプログラム転送と、予め定められたメッセージの出力指令をＨＭＩ装置４に送信する。予め定められたメッセージは、例えば“制御プログラムのロジックに変更あったのでＨＭＩ画面でのモニタ動作に影響が発生する可能性がある”旨のメッセージを含む。
【００９３】
比較／判定部２３５による制御プログラム１１１のプログラムコードの変更の検出は、制御プログラム１１１のプログラムコードどうしの照合、プログラムコードのチェックサムの照合、上記に述べたハッシュ値の照合などの照合結果に基く検出を含む。
【００９４】
ＨＭＩ装置４は、メッセージの出力指令を受信すると、ディスプレイ４８１にメッセージを出力させる。ＨＭＩ画面において当該メッセージが出力されることにより、オペレータに対し、転送後の制御プログラム１１１がＰＬＣ１００で起動した場合の必要な機能チェックをＨＭＩ画面で実施すべきである旨のアドバイスを与えることが可能となる。
【００９５】
この場合、転送マネージャ２３１はメッセージの出力指令の送信対象のＨＭＩ装置４を、例えば次のように決定する。つまり、転送マネージャ２３１は、ネットワーク接続される各ＨＭＩ装置４で保持される対象のＰＬＣ１００の識別子を収集し、収集した各識別子をＩＥＣオブジェクト２３０が保持する転送先のＰＬＣ１００の識別子と照合する。照合結果、ＩＥＣオブジェクト２３０が保持するＰＬＣ１００の識別子と一致した識別子を有したＨＭＩ装置４をメッセージ出力指令の送信対象と決定する。
【００９６】
＜Ｈ．サポートプログラムによる処理＞
図１１〜図１３のフローチャートに従い、サポートプログラム７００の処理を説明する。
【００９７】
（Ｈ１．転送順番テーブルに基づく転送）
図１１は、本発明の実施の形態にかかる転送順番テーブル２３４に従う転送処理の一例を示すフローチャートである。ＨＭＩエディタ１０ＡまたはＩＥＣエディタ１０ＢがＨＭＩプログラム１１２または制御プログラム１１１を作成（編集）するとき、ＣＰＵ２０２は、転送マネージャ２３１を起動する。
【００９８】
図１１を参照して、転送マネージャ２３１は、ＨＭＩ装置４に接続される機器のうちから、ＨＭＩオブジェクト２２９およびＩＥＣオブジェクト２３０の転送先となる機器（ＨＭＩ装置４、ＰＬＣ１００）の識別子を、ＨＭＩプロジェクト２２９とＩＥＣプロジェクト２３０を走査することにより抽出し（ステップＳ１）、抽出した識別子を用いて、転送順番テーブル２３４に情報を登録する（ステップＳ３）。
【００９９】
転送マネージャ２３１は、入力部２１１を介してユーザからオブジェクト転送を選択する操作を受付けると（ステップＳ５）、サポート装置２００に接続される機器のうちから、転送順番テーブル２３４が指定する転送先機器に、転送順番テーブル２３４が指定する順番に従いＨＭＩオブジェクト２２９またはＩＥＣオブジェクト２３０を転送する（ステップＳ７〜Ｓ１１）。
【０１００】
ここで、転送マネージャ２３１は、転送順番テーブル２３４の先頭から順に検索して転送先機器の識別子を読出す。転送マネージャ２３１は、読出された転送先機器の識別子が「空」を示すか否かが判定する（ステップＳ９）。読出された転送先機器が「空」でないと判定すると（ステップＳ９でＮＯ）、転送マネージャ２３１は、転送先機器の識別子に、紐付けされた転送部（ＨＭＩ転送部２３２またはコントローラ転送部２３３）を介して、当該識別子の機器宛にオブジェクトを転送させる（ステップＳ１１）。その後、ステップＳ７に戻り、以降の処理を繰返す。一方、転送マネージャ２３１は、読出された転送先機器の識別子は「空」を示すと判定すると（ステップＳ９でＮＯ）、一連の転送処理は終了する。
【０１０１】
これにより、制御プログラム１１１またはＨＭＩプログラム１１２の編集が実施されると、転送マネージャ２３１が起動されて、転送マネージャ２３１は、ＩＥＣオブジェクト２３０（制御プログラム１１１）を、コントローラ転送部２３３を介してＰＬＣ１００に転送し、同時に、ＨＭＩオブジェクト２２９（ＨＭＩプログラム１１２）をＨＭＩ転送部２３２を介してＨＭＩ装置４に転送する。
【０１０２】
（Ｈ２．ユーザ操作の転送依頼に基づく転送）
図１２は、本発明の実施の形態にかかるユーザ操作に基づく転送処理の一例を示すフローチャートである。図１２を参照して、転送マネージャ２３１は、起動されると、ユーザからデータ転送を選択する操作を受付ける（ステップＳ２１）。比較／判定部２３５は、ＩＥＣエディタ１０Ｂにより編集された制御プログラム１１１またはＨＭＩエディタ１０Ａにより編集されたＨＭＩプログラム１１２の各プログラムを、対象装置であるＰＬＣ１００またはＨＭＩ装置４で実行されている当該プログラムと比較する。この場合、比較／判定部２３５は、例えばオブジェクトどうしで比較を実施する（ステップＳ２３）。
【０１０３】
転送マネージャ２３１の通知部２３６は、比較／判定部２３５による比較に基づく判定の結果に基づくメッセージを、ディスプレイ２１４に表示させ（ステップＳ２５）、また転送オプションをディスプレイ２１４に表示させる（ステップＳ２７）。
【０１０４】
転送マネージャ２３１は、入力部２１１を介したユーザ操作内容、すなわちユーザが選択した転送オプションが示す転送依頼に従い、ＨＭＩ転送部２３２またはコントローラ転送部２３３を制御し、転送処理を実施する（ステップＳ２９〜Ｓ４３）。
【０１０５】
転送依頼がＰＬＣ１００とＨＭＩ装置４の両方へ制御プログラム１１１とＨＭＩプログラム１１２の同時転送を示すか否かを判断する（ステップＳ２９）。同時転送を示すと判断すると（ステップＳ２９でＹＥＳ）、転送マネージャ２３１は、転送順番テーブル２３４に従い、コントローラ転送部２３３を呼出し（起動し）、コントローラ転送部２３３はＩＥＣオブジェクト２３０を転送する（ステップＳ４１）。転送マネージャ２３１は、転送先のＰＬＣ１００から転送完了のレスポンスを受信すると、転送順番テーブル２３４に従い、ＨＭＩ転送部２３２を呼出し（起動し）、ＨＭＩ転送部２３２はＨＭＩオブジェクト２２９を転送する（ステップＳ４３）。転送マネージャ２３１は、転送先のＨＭＩ装置４から転送完了のレスポンスを受信すると、処理は終了する。
【０１０６】
転送マネージャ２３１は、同時転送を示すと判断しないと（ステップＳ２９でＮＯ）、転送マネージャ２３１は転送依頼がＰＬＣ１００のみへの制御プログラム１１１の転送を示すかを判断する（ステップＳ３１）。ＰＬＣ１００のみへの転送を示すと判断すると（ステップＳ３１でＹＥＳ）、転送マネージャ２３１は、転送順番テーブル２３４に従い、コントローラ転送部２３３を呼出し（起動し）、コントローラ転送部２３３はＩＥＣオブジェクト２３０を転送する（ステップＳ３７）。転送マネージャ２３１は、転送先のＰＬＣ１００から転送完了のレスポンスを受信すると、処理は終了する。
【０１０７】
ＰＬＣ１００のみへの転送を示すと判断しないと（ステップＳ３１でＮＯ）、転送マネージャ２３１は転送依頼がＨＭＩ装置４のみへのＨＭＩプログラム１１２の転送を示すかを判断する（ステップＳ３３）。ＨＭＩ装置４のみへの転送を示すと判断すると（ステップＳ３３でＹＥＳ）、転送マネージャ２３１は、転送順番テーブル２３４に従い、ＨＭＩ転送部２３２を呼出し（起動し）、ＨＭＩ転送部２３２はＨＭＩオブジェクト２２９を転送する（ステップＳ３９）。転送マネージャ２３１は、転送先のＨＭＩ装置４から転送完了のレスポンスを受信すると、処理は終了する。
【０１０８】
さらに、ＨＭＩ装置４のみへの転送を示すと判断しないと（ステップＳ３３でＮＯ）、転送マネージャ２３１は、転送処理の実施を取りやめ（ステップＳ３５）、処理は終了する。
【０１０９】
（Ｈ３．変数の変更に基づく転送）
図１３は、本発明の実施の形態にかかる変数の変更に基づく転送処理の一例を示すフローチャートである。図１３の処理では、ＨＭＩエディタ１０ＡによりＨＭＩプログラム１１２の編集として、ＨＭＩプログラム１１２を構成するＵＩ部品５０１が用いる変数が変更されて、当該変数は、制御プログラム１１１の編集により新規に追加された変数であるケースを例に説明する。
【０１１０】
まず、ＩＥＣエディタ１０Ｂは、入力部２１１を介して受付けるユーザ操作に従い、制御プログラム１１１を作成（編集）する（ステップＳ５１）。この制御プログラム１１１の編集により新規変数が追加される。このような新規変数の変更においては、ＩＥＣエディタ１０Ｂは、ＩＥＣ変数定義２２７を、新規変数の定義を追加するよう編集（変更）する。
【０１１１】
また、ＨＭＩエディタ１０Ａは、入力部２１１を介して受付けるユーザ操作に従い、ＨＭＩプログラム１１２を構成するＵＩ部品５０１が用いる変数を当該新規変数に変更する。このような変数の変更においては、ＨＭＩエディタ１０Ａは、ＨＭＩ変数定義２２８およびＨＭＩ-ＩＥＣ変数マップ２２６を、変更後の新規変数を定義するように編集（変更など）する（ステップＳ５３）。
【０１１２】
ステップＳ５１およびステップＳ５３の編集処理により、編集後のＨＭＩプロジェクト２２５および編集後のＩＥＣプロジェクト２２２が作成される。
【０１１３】
転送マネージャ２３１は、入力部２１１を介して転送選択のユーザ操作を受付けると（ステップＳ５５）、転送マネージャ２３１は、ＨＭＩコンパイラ１０ＣとＩＥＣコンパイラ１０Ｄを起動する。ＨＭＩコンパイラ１０Ｃは編集後のＨＭＩプロジェクト２２５をコンパイルしＨＭＩオブジェクト２２９を生成する。また、ＩＥＣコンパイラ１０Ｄは編集後の制御プログラム１１１をコンパイルしＩＥＣオブジェクト２３０を生成する（ステップＳ５７）。
【０１１４】
転送マネージャ２３１は、変数チェッカ２３７を起動し、変数チェッカ２３７からの出力に基づき、ＨＭＩプログラム１１２と制御プログラム１１１で変更された変数が一致するかを判断する（ステップＳ６１）。すなわち、転送マネージャ２３１は、制御プログラム１１１で追加された新規変数が、ＨＭＩプログラム１１２を構成するＵＩ部品で新規に用いられているかを判断する。
【０１１５】
転送マネージャ２３１は、ＨＭＩプログラム１１２と制御プログラム１１１で変更された変数が一致すると判断しない場合（ステップＳ６１でＮＯ）、転送マネージャ２３１は通常転送を実施する（ステップＳ６９）。すなわち、転送マネージャ２３１は、ＨＭＩ転送部２３２およびコントローラ転送部２３３を起動し、ネットワーク接続される装置のうちからユーザが予め選択したＰＬＣ１００およびＨＭＩ装置４に、それぞれ、ＩＥＣオブジェクト２３０およびＨＭＩオブジェクト２２９を転送する。転送マネージャ２３１は、両装置から転送完了レスポンスを受信すると、後述するステップＳ７９の起動処理を実施する。
【０１１６】
ステップＳ６１に戻り、転送マネージャ２３１は、ＨＭＩプログラム１１２と制御プログラム１１１で変更された変数が一致すると判断すると（ステップＳ６１でＹＥＳ）、転送マネージャ２３１は通知部２３６を起動する(ステップＳ６３）。
【０１１７】
通知部２３６は、起動されると、転送マネージャ２３１からの指示に従い、ディスプレイ２１４に、制御プログラム１１１およびＨＭＩプログラム１１２を同時に転送する旨のオプションの通知を表示させる（ステップＳ６５）。
【０１１８】
転送マネージャ２３１は、入力部２１１を介し受付けるユーザ操作に基づき、ユーザは同時転送のオプションを選択したか否かを判断する（ステップＳ６７）。転送マネージャ２３１は、同時転送のオプションが選択されないと判断すると（ステップＳ６７でＮＯ）、ステップＳ６９の処理に移行する。一方、転送マネージャ２３１は、同時転送のオプションが選択されたと判断すると（ステップＳ６７でＹＥＳ）、ステップＳ７１以降の転送処理を実施する。
【０１１９】
具体的には、転送マネージャ２３１は、転送順番テーブル２３４の転送順番データに従い、ＩＥＣオブジェクト２３０およびＨＭＩオブジェクト２２９を、対応の転送機能（コントローラ転送部２３３またはＨＭＩ転送部２３２）を用いて、機器（ＰＬＣ１００またはＨＭＩ装置４）に転送する。まず、転送マネージャ２３１は、コントローラ転送部２３３を起動し（ステップＳ７１）、起動されたコントローラ転送部２３３は、転送順番データに従い順に各ＰＬＣ１００に、ＩＥＣオブジェクト２３０を転送する。
【０１２０】
転送マネージャ２３１は、コントローラ転送部２３３を介して各ＰＬＣ１００から転送完了のレスポンスを受信すると（ステップＳ７３）、転送マネージャ２３１は、ＨＭＩ転送部２３２を起動し（ステップＳ７５）、起動されたコントローラ転送部２３３は、転送順番データに従い順に各ＨＭＩ装置４に、ＨＭＩオブジェクト２２９を転送する。
【０１２１】
転送マネージャ２３１は、ＨＭＩ転送部２３２を介して各ＨＭＩ装置４から転送完了のレスポンスを受信すると（ステップＳ７７）、起動指示２５１を送信する（ステップＳ７９）。起動指示２５１は、ＨＭＩオブジェクト２２９の転送先である各ＨＭＩ装置４およびＩＥＣオブジェクト２３０の転送先である各ＰＬＣ１００宛に送信される。
【０１２２】
＜Ｉ．起動処理＞
起動指示２５１に従い実施される起動処理の一例を説明する。図１４は、本発明の実施の形態にかかる起動処理の一例を模式的に説明する図である。図１４には、ＰＬＣ１００のフラッシュメモリ１０８とＨＭＩ装置４のフラッシュＲＯＭ４１４の記憶内容に関連付けて起動処理が示されている。
【０１２３】
例えば、ＰＬＣ１００のフラッシュメモリ１０８は領域Ｅ１とＥ２を含み、領域Ｅ１にはＰＬＣ１００で現在実行中の実行モジュールが格納され、領域Ｅ２にはサポート装置２００から転送されたＩＥＣオブジェクト２３０であるオブジェクトが格納される。ＰＬＣ１００のプロセッサ１０２は、サポート装置２００から受信するＩＥＣオブジェクト２３０を領域Ｅ２に格納完了したとき、上記の転送完了のレスポンスを送信する。レスポンスを送信後に、サポート装置２００から起動指示２５１を受信すると、プロセッサ１０２は、領域Ｅ２のオブジェクトを走査してチェックし（必要な誤り訂正を行ない）、当該オブジェクトに図示しないライブラリの各種関数のオブジェクトなどをリンクさせることにより、実行可能なオブジェクトコードである実行モジュールを生成する。実行モジュールは、領域Ｅ１にコピー（上書き）される。その後は、ＰＬＣ１００では、領域Ｅ１にコピーされたオブジェクトによる実行モジュールが実行される。
【０１２４】
同様に、各ＨＭＩ装置４においても、ＣＰＵ４１１は、サポート装置２００から受信するＨＭＩオブジェクト２２９をフラッシュＲＯＭ４１４の領域Ｅ２に格納完了すると、転送完了のレスポンスを送信する。レスポンスを送信後に、サポート装置２００から起動指示２５１を受信すると、ＣＰＵ４１１は、領域Ｅ２のオブジェクトを走査してチェックし（必要な誤り訂正を行ない）、当該オブジェクトにライブラリ１１３のＵＩ部品５０１のオブジェクトなどをリンクさせることにより、実行可能なオブジェクトコードである実行モジュールを生成し、生成された実行モジュールを領域Ｅ１にコピー（上書き）する。その後は、ＨＭＩ装置４では、領域Ｅ１にコピーされた新規のＨＭＩオブジェクト２２９による実行モジュールが実行される。
【０１２５】
上記に述べた起動指示２５１は、転送されるオブジェクト（ＩＥＣオブジェクト２３０およびＨＭＩオブジェクト２２９）とともに、各ＰＬＣ１００および各ＨＭＩ装置４に送信されてもよい。起動指示２５１は、起動処理の実施を開始する時間を計時するための情報を含み得る。この時間は相対的時間または絶対的時間であり得る。相対的時間は、例えば、転送完了のレスポンスを送信してからの予め定められた長さの経過時間を含む。また、絶対的時間は、例えば各ＰＬＣ１００および各ＨＭＩ装置４のタイマが同期しているとして、タイマが計時する予め定められた時間（時/分/秒）などの時間を含む。
【０１２６】
これにより、サポート装置２００は、各ＰＬＣ１００および各ＨＭＩ装置４から転送完了のレスポンスの受信を待つことなく起動指示２５１を送信して、同期したタイミングで各ＰＬＣ１００および各ＨＭＩ装置４において起動処理を実施させることができる。
【０１２７】
上記の実施の形態では、ＨＭＩプログラム１１２自体の編集を説明したが、ＨＭＩプログラム１１２を構成するプログラムであるＵＩ部品の編集であってもよい。例えば、編集によりＵＩ部品が用いる変数の個数が変更される、またはＵＩ部品のプログラムコードが変更されるなどした場合は、ＵＩ部品がコンパイルされて、そのオブジェクトがＨＭＩ装置４に転送される。ＨＭＩ装置４は、サポート装置２００からの起動指示２５１をもとに、ライブラリ１１３のＵＩ部品を、サポート装置２００から受信したＵＩ部品で書換える。
【０１２８】
＜Ｊ．プログラム＞
本実施の形態に示した各フローチャートの処理を実行することによりプログラムの開発環境４２を提供するサポートプログラム７００は、サポート装置２００の記憶部（ＲＯＭ２０４、ＲＡＭ２０６、ＨＤＤ２０８、記録媒体２５０など）に格納されている。ＣＰＵ２０２は、記憶部からサポートプログラムを読出し、実行することにより、本実施の形態で説明した開発環境４２における各種処理を実現することが可能となる。
【０１２９】
このようなサポートプログラム７００は、サポート装置２００に付属するフレキシブルディスク、ＣＤ−ＲＯＭ（Compact  Disk-Read  Only  Memory）、ＲＯＭ、ＲＡＭおよび記録媒体２５０などのコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、サポート装置２００に内蔵するＨＤＤ２０８などの記録媒体にて記録させて、プログラムを提供することもできる。また、図示しないネットワークから通信インターフェイスを介したダウンロードによって、プログラムを提供することもできる。
【０１３０】
＜Ｋ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
［構成１］
ＦＡ（ファクトリオートメーション）に設けられる対象装置（４、１００）で実行されるプログラムの開発を支援するサポート装置（２００）であって、
前記対象装置は、前記ＦＡの機器を制御する制御装置（１００）とＨＭＩ（ヒューマンマシンインターフェイス）装置（４）とを含み、
前記プログラムを編集する編集手段（１０Ａ、１０Ｂ）と、
編集された前記プログラムを前記対象装置へ転送するための転送処理を実施する転送管理手段（２３１）と、を備え、
前記プログラムは、
前記機器を制御するための制御プログラム（１１１）と、前記制御プログラムが用いる変数を処理するＨＭＩプログラム（１１２）とを含み、
前記転送管理手段は、
前記編集手段により前記制御プログラムまたは前記ＨＭＩプログラムの編集がなされた場合に、前記制御プログラムおよび前記ＨＭＩプログラムを、それぞれ、前記制御装置と前記ＨＭＩ装置に同時に転送するよう前記転送処理を実施する手段を含む、サポート装置。
【０１３１】
［構成２]
前記編集手段により編集された前記制御プログラムまたは前記ＨＭＩプログラムの各プログラムを、前記対象装置で実行されている当該プログラムと比較し、比較の結果から、前記編集された各プログラムが前記実行されている当該プログラムから変更されたかを判定する手段（２３５）を、さらに備え、
前記転送管理手段は、さらに、
前記編集手段により編集された前記制御プログラムまたは前記ＨＭＩプログラムの各プログラムのうち、前記変更の判定がなされた一方または両方を転送するよう前記転送処理を実施する手段を含む、構成１に記載のサポート装置。
【０１３２】
[構成３]
前記判定する手段による判定結果に基づく情報をディスプレイに表示させる通知手段（２３６）と、
前記サポート装置に対するユーザ操作を受付ける操作受付手段（２１１）と、をさらに備え、
前記転送管理手段は、
前記編集手段により編集された前記制御プログラムまたは前記ＨＭＩプログラムの各プログラムのうち、受付けるユーザ操作内容が示す一方または両方を転送するよう前記転送処理を実施する手段を含む、構成２に記載のサポート装置。
【０１３３】
[構成４]
前記転送管理手段により前記制御プログラムまたは前記ＨＭＩプログラムの転送処理が実施されるとき、前記対象装置に、転送後の各プログラムを起動させるための起動指示（２５１）を送信する、構成１から３のいずれか１に記載のサポート装置。
【０１３４】
[構成５]
前記起動指示は、転送後の各プログラムを起動させる時間の情報を含む、構成４に記載のサポート装置。
【０１３５】
[構成６]
前記プログラムの転送が完了した旨の通知を前記対象装置から受信したときに、前記起動指示を前記対象装置に送信する、構成４に記載のサポート装置。
【０１３６】
[構成７]
前記ＨＭＩプログラムの編集は、当該ＨＭＩプログラムを構成するプログラムであって前記変数を処理するＵＩ（ユーザインターフェイス）部品（５０１）の編集を含み、
前記ＨＭＩプログラムの編集は、前記ＵＩ部品の編集を含む、構成１から６のいずれか１に記載のサポート装置。
【０１３７】
[構成８]
前記制御プログラムは、変数と、前記変数を用いた処理内容を示すプログラムコードとを含み、
前記比較の結果が、前記変数の変更なしに前記プログラムコードの変更があることを示す場合、予め定められた通知を前記ＨＭＩ装置のディスプレイ（４８１）に出力させる、構成１から７のいずれか１に記載のサポート装置。
【０１３８】
[構成９]
ＦＡ（ファクトリオートメーション）に設けられる対象装置（１００、４）で実行されるプログラムの開発を支援するサポートプログラム（７００）であって、
前記対象装置は、前記ＦＡに設けられる機器を制御する制御装置（１００）とＨＭＩ（ヒューマンマシンインターフェイス）装置（４）とを含み、
前記サポートプログラムは、コンピュータ（２００）に、
前記プログラムを編集するステップと、
編集された前記プログラムを前記対象装置へ転送するための転送処理を実施するステップと実行させ、
編集される前記プログラムは、
前記機器を制御するための制御プログラム（１１１）と、前記制御プログラムが用いる変数を処理するＨＭＩプログラム（１１２）とを含み、
前記転送処理を実施するステップは、
前記制御プログラムまたは前記ＨＭＩプログラムの編集がなされた場合に、前記制御プログラムおよび前記ＨＭＩプログラムを、それぞれ、前記制御装置と前記ＨＭＩ装置に同時に転送するよう前記転送処理を実施するステップを含む、サポートプログラム。
【０１３９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１４０】
１  システム、４  ＨＭＩ装置、１０Ａ  ＨＭＩエディタ、１０Ｂ  ＩＥＣエディタ、４２  開発環境、１１１  制御プログラム、１１２  ＨＭＩプログラム、１１３，２１３  ライブラリ、２００  サポート装置、２１４，４８１  ディスプレイ、２３１  転送マネージャ、２３２  ＨＭＩ転送部、２３３  コントローラ転送部、２３４  転送順番テーブル、２３５  比較／判定部、２３６  通知部、２３７  変数チェッカ、２５１  起動指示、５０１  ＵＩ部品、７００  サポートプログラム、Ｅ１，Ｅ２  領域。
【図１】
2020021157.tif 000003
【図２】
2020021157.tif 000004
【図３】
2020021157.tif 000005
【図４】
2020021157.tif 000006
【図５】
2020021157.tif 000007
【図６】
2020021157.tif 000008
【図７】
2020021157.tif 000009
【図８】
2020021157.tif 000010
【図９】
2020021157.tif 000011
【図１０】
2020021157.tif 000012
【図１１】
2020021157.tif 000013
【図１２】
2020021157.tif 000014
【図１３】
2020021157.tif 000015
【図１４】
2020021157.tif 000016