本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
<A.適用例>
まず、本発明が適用される場面の一例について説明する。図1は、本実施の形態に係る制御システム1の適用例を示す模式図である。図1を参照して、制御システム1は、複数のデバイス10_1,10_2,10_3,10_4,・・・,10_N(以下、「デバイス10」とも総称する。)を有している。
本明細書において、「デバイス」は、制御システム1における制御要素の単位を意味し、制御演算に必要なプログラム、構成設定、パラメータなどは、デバイスの単位で生成および管理される。典型的には、「デバイス」は、制御プログラム(シーケンス制御およびモーション制御を含み得る)を実行する処理主体であるPLC(プログラマブルロジックコントローラ)(制御装置の一例)、1または複数のPLCと連携するHMI(Human Machine Interface)、PLCおよびHMIの機能を統合したIPC(Industrial Personal Computer)などを含み得る。
デバイスは、PLCおよびIPCに接続される周辺装置を含み得る。周辺装置は、典型的には、PLCおよびIPCで取り扱われる入出力データを制御対象との間で遣り取りする装置を含み得る。具体的には、周辺装置は、ユニット、スレーブデバイス、カプラユニットなどが挙げられる。周辺装置の具体例に内容については、後に詳述する。
制御システム1は、制御システム1において利用されるサポート装置400を有している。サポート装置400は、制御システム1を構成する各デバイスで実行される制御プログラムや必要なパラメータなどの開発や管理を行う。
本実施の形態に係るサポート装置400は、制御システム1に含まれる複数のデバイス10で実行される制御プログラムや必要なパラメータなどを一括して開発や管理可能な統合開発環境を提供する。
統合開発環境においては、制御システム1を構成する各デバイスで実行される制御プログラムや必要なパラメータなどは、単一のプロジェクト484として管理される。プロジェクト484は、複数のファイルで構成されてもよい。
サポート装置400は、データ生成部20(後述のビルド処理部468に相当)と、選択受付部22(後述のグループ設定割付画面600に相当)と、データ転送部24(後述のファイル転送処理部454に相当)と、データ管理部26(後述のダウンロード処理部458に相当)とを含む。
データ生成部20は、複数のデバイス10を動作させるために必要な情報を含むプロジェクト484から、複数のデバイス10の各々に格納すべきデータを生成する。データには、各デバイス10で実行される制御プログラム、各デバイス10の動作に必要なパラメータなどを含み得る。
なお、データは「ファイル」の形で転送および管理されることが一般的であるので、以下の説明においては、「ファイル」という用語を「データ」とほぼ同義で用いることとする。
選択受付部22は、複数のデバイス10のうち同一のグループに属するデバイスの選択を受付ける。図1に示す例では、デバイス10_1およびデバイス10_2が同一のグループAに属することが設定されているとする。
データ転送部24は、ユーザ操作に応答して、同一のグループに属するデバイス10の各々に対して、データ生成部20により生成された各デバイスに対応するデータを転送する。図1には、グループAに属するデバイス10_1およびデバイス10_2に対して、データ(ファイル)が転送される例を示す。
データ管理部26は、同一のグループに属するすべてのデバイス10に対するデータの転送が成功した後、各デバイス10に対する当該転送されたデータに反映を指示する。図1には、グループAに属するデバイス10_1およびデバイス10_2に対して、データを反映するための指示(反映指示)が与えられる例を示す。
このような構成を採用することで、複数のデバイス10を含む制御システム1において、特定のグループ単位でデータ更新などを実現できる。
<B.制御システムの構成例>
まず、本実施の形態に係る制御システム1の構成例について説明する。図2は、本実施の形態に係る制御システム1の構成例を示す模式図である。図2を参照して、制御システム1は、複数のデバイス10_1,10_2,10_3,10_4,・・・,10_N(以下、「デバイス10」とも総称する。)と、デバイス10のPLC100で実行されるプログラムの開発およびプログラムの実行に必要なパラメータの設定を行うためのサポート装置400とを含む。これらの装置はネットワーク2を介して互いに接続されている。
デバイス10の各々は、制御装置の典型例であるPLC100を中心として構成される。
PLC100は、ローカルバス4を介して任意のユニット200と接続可能であるとともに、フィールドバス6を介して任意のスレーブデバイス(以下、単に「スレーブ250」とも称す。)と接続可能である。フィールドバス6には、カプラユニット(以下、単に「カプラ300」とも称す。)が接続されることもある。カプラ300は、ローカルバス8を介して任意のユニット200と接続される。すなわち、カプラ300は、ユニット200を、ローカルバス8およびフィールドバス6を介してPLC100と接続する。なお、カプラ300はスレーブ250とみなすこともできる。
図2に示す制御システム1において、デバイス10_1は、PLC100と、PLC100にフィールドバス6を介して接続されるスレーブ250とカプラ300とからなる。カプラ300には、ローカルバス8を介してユニット200が接続される。
デバイス10_2は、PLC100と、PLC100にローカルバス8を介して接続される2つのユニット200と、フィールドバス6を介して接続される2つのスレーブ250とを含む。
デバイス10_3は、PLC100と、PLC100にローカルバス8を介して接続される1つのユニット200と、フィールドバス6を介して接続される2つのスレーブ250とを含む。
デバイス10_4は、PLC100と、PLC100にローカルバス8を介して接続される1つのユニット200と、フィールドバス6を介して接続される1つのスレーブ250とを含む。
デバイス10_Nは、PLC100と、PLC100にローカルバス8を介して接続される2つのユニット200と、フィールドバス6を介して接続される1つのスレーブ250とを含む。
なお、図2には、5つのデバイス10を含む制御システム1を例示するが、デバイス10の数は5つより少なくてもよいし、5つより多くてもよい。
サポート装置400は、プログラム開発およびパラメータ設定などの機能を提供する。サポート装置400は、開発されたプログラムおよびパラメータを各デバイスへ転送(ダウンロード)する。
<C.制御システム1に含まれる各装置のハードウェア構成>
次に、制御システム1に含まれる各装置のハードウェア構成の一例について説明する。
(c1:PLC100)
図3は、本実施の形態に係る制御システム1に含まれるPLC100のハードウェア構成の一例を示す模式図である。図3を参照して、PLC100は、プロセッサ102と、メインメモリ104と、ストレージ106と、ネットワークコントローラ108と、フィールドバスコントローラ110と、USB(Universal Serial Bus)コントローラ114と、メモリカードインターフェイス116と、ローカルバスコントローラ120とを含む。これらのコンポーネントは、プロセッサバス130を介して接続されている。
プロセッサ102は、制御演算などを実行する演算処理部に相当し、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ102は、ストレージ106に格納されたプログラム(一例として、システムプログラム1060および制御プログラム140)を読出して、メインメモリ104に展開して実行することで、制御対象に応じた制御などを実現する。
メインメモリ104は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ106は、記憶部に相当し、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。
ストレージ106には、基本的な機能を実現するためのシステムプログラム1060に加えて、設備や機械などの制御対象に応じて作成される制御プログラム140が格納される。
ネットワークコントローラ108は、ネットワーク2を介して、サポート装置400を含む任意の情報処理装置との間でデータを遣り取りする。フィールドバスコントローラ110は、フィールドバス6を介して、スレーブ250やカプラ300と接続される。USBコントローラ114は、USB接続を介して、任意の外部装置などとの間でデータを遣り取りする。
メモリカードインターフェイス116は、着脱可能な記録媒体の一例であるメモリカード118を受付ける。メモリカードインターフェイス116は、メモリカード118に対してデータを書込み、メモリカード118から各種データ(ログやトレースデータなど)を読出すことが可能になっている。
ローカルバスコントローラ120は、ローカルバス4を介して、任意のユニット200との間でデータを遣り取りする。
図3には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、PLC100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOS(Operating System)を並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
(c2:ユニット200)
図4は、本実施の形態に係る制御システム1に含まれるユニット200のハードウェア構成の一例を示す模式図である。図4を参照して、ユニット200は、機能モジュール210と、ローカルバスコントローラ220と、ストレージ206とを含む。
機能モジュール210は、各ユニット200の責務に応じた機能を提供する。例えば、ユニット200がデジタル入力ユニットである場合には、機能モジュール210は、フォトカプラなどのデジタル信号の入力回路および検出回路を有している。また、ユニット200がサーボドライバなどである場合には、機能モジュール210は、軌道演算ロジックおよび指令生成ロジックなどを有している。
ローカルバスコントローラ220は、ローカルバス4を介して、接続先のPLC100またはカプラ300との間でデータを遣り取りする。
ストレージ206には、ユニット200を動作させるためのパラメータ2060が格納される。パラメータ2060は、ユニット200のネットワークアドレスなどの情報に加えて、機能モジュール210の動作に係る設定値などを含む。パラメータ2060は、サポート装置400からPLC100またはカプラ300を介して提供される。
ユニット200が提供する機能の一部または全部を、プロセッサがプログラムを実行することで実現してもよい。
(c3:カプラ300)
図5は、本実施の形態に係る制御システム1に含まれるカプラ300のハードウェア構成の一例を示す模式図である。カプラ300は、PLC100を構成するコンポーネントの一部を簡略化した構成に相当する。より具体的には、図5を参照して、カプラ300は、プロセッサ302と、メインメモリ304と、ストレージ306と、フィールドバスコントローラ310と、ローカルバスコントローラ320とを含む。これらのコンポーネントは、プロセッサバス330を介して接続されている。
プロセッサ302は、制御演算などを実行する演算処理部に相当し、CPUやGPUなどで構成される。メインメモリ304は、DRAMやSRAMなどの揮発性記憶装置などで構成される。
ストレージ306は、記憶部に相当し、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。ストレージ306には、カプラ300を動作させるためのパラメータ3060が格納される。パラメータ3060は、カプラ300のネットワークアドレスなどの情報に加えて、カプラ300の動作に係る設定値などを含む。パラメータ3060は、サポート装置400からフィールドバス6を介して提供される。
フィールドバスコントローラ310は、フィールドバス6を介して、PLC100、スレーブ250、他のカプラ300などと接続される。
ローカルバスコントローラ320は、ローカルバス8を介して、任意のユニット200との間でデータを遣り取りする。
図5には、プロセッサ302がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
(c4:スレーブ250)
本実施の形態に係る制御システム1に含まれるスレーブ250は、図4に示すユニット200に対して、ローカルバスコントローラ220に代えて、図5のカプラ300に含まれるフィールドバスコントローラ310を採用したような構成を有している。スレーブ250についての詳細な説明は繰返さない。
(c5:サポート装置400)
図6は、本実施の形態に係る制御システム1に含まれるサポート装置400のハードウェア構成の一例を示す模式図である。図6を参照して、サポート装置400は、一例として、汎用的なアーキテクチャに従うコンピュータがプログラムを実行することで実現される。
より具体的には、サポート装置400は、プロセッサ402と、メインメモリ404と、ストレージ406と、入力部408と、表示部410と、光学ドライブ412と、ネットワークコントローラ416とを含む。これらのコンポーネントは、プロセッサバス418を介して接続されている。
プロセッサ402は、CPUやGPUなどで構成され、ストレージ406に格納されたプログラム(一例として、OS4060およびサポートプログラム4062)を読出して、メインメモリ404に展開して実行することで、後述するような各種処理を実現する。
メインメモリ404は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ406は、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。
ストレージ406には、基本的な機能を実現するためのOS4060に加えて、サポート装置400としての機能を提供するためのサポートプログラム4062が格納される。サポートプログラム4062は、コンピュータをサポート装置400として機能させる。
入力部408は、キーボードやマウスなどで構成され、ユーザ操作を受付ける。表示部410は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ402からの処理結果などを出力する。
ネットワークコントローラ416は、ネットワーク2を介して、任意の外部装置などとの間でデータを遣り取りする。
サポート装置400は、光学ドライブ412を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体414(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)から、その中に格納されたプログラムが読取られてストレージ406などにインストールされる。
サポート装置400で実行されるサポートプログラム4062などは、コンピュータ読取可能な記録媒体414を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置400が提供する機能は、OSが提供するモジュールの一部を利用する形で実現される場合もある。
図6には、プロセッサ402がプログラムを実行することで、サポート装置400として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
<D.制御システム1の要部機能構成>
次に、本実施の形態に係る制御システム1の要部機能構成の一例について説明する。図7は、本実施の形態に係る制御システム1の要部機能構成の一例を示す模式図である。図7には、一例として、デバイス10_1およびサポート装置400の要部機能に着目している。
図7を参照して、デバイス10_1は、PLC100と、ユニット200と、スレーブ250と、カプラ300とを含む。
PLC100は、ストレージ106およびPLC機能モジュール150とを含む。ストレージ106には、上述の図3に示す制御プログラム140および関連するパラメータなどのデータを格納する領域として、一時データ領域1062およびデータ領域1064が設けられている。一時データ領域1062およびデータ領域1064は、PLC100に対するデータ更新およびロールバックを実現するための記憶領域である。より具体的には、データ領域1064は、処理に用いられるデータを格納するための第1のデータ領域に相当し、サポート装置400から送信される制御プログラム140および関連するパラメータなどを含むデータ一式が一時的に格納される。一時データ領域1062は、データ転送部24(図1)から転送されるデータを一時的に格納するための第2のデータ領域に相当し、PLC100で実行中の制御プログラム140および関連するパラメータが格納される。
PLC機能モジュール150は、PLC100における制御プログラム140の実行に必要な機能を提供する。具体的には、PLC機能モジュール150は、シーケンス制御部152と、モーション制御部154と、IOポート160とを含む。シーケンス制御部152は、PLC100において実行される制御プログラム140に含まれるシーケンス命令を解釈して実行する処理エンジンに相当する。モーション制御部154は、PLC100において実行される制御プログラム140に含まれるモーション命令を解釈して実行する処理エンジンに相当する。IOポート160は、ユニット200、スレーブ250、カプラ300などとの間で入出力データを遣り取りする。
上述したように、ユニット200、スレーブ250、カプラ300には、それぞれ、ユニット200、スレーブ250、カプラ300を動作させるためのパラメータ2060,2560,3060が格納される。これらのパラメータ2060,2560,3060は、サポート装置400から適宜転送される。
本明細書においては、サポート装置400から任意のデバイス10へ任意のデータ(あるいは、ファイル)を転送することを「ダウンロード」と称し、逆に、任意のデバイス10からサポート装置400へ任意のデータ(あるいは、ファイル)を転送することを「アップロード」と称する。
サポート装置400は、サポートプログラム4062(図6)を実行することで、統合開発環境450を提供する。統合開発環境450は、ストレージ406、入力部408および表示部410との間でデータを遣り取り可能に構成される。すなわち、統合開発環境450は、入力部408を介したユーザ操作に応じた処理を実行するとともに、表示部410に実行結果(例えば、アップロード実行結果やビルド結果など)を表示する。
統合開発環境450は、機能構成として、通信部452と、制御部470と、ファイルIO処理部472とを含む。
通信部452は、任意のデバイス10との間の通信処理を担当する。典型的には、通信部452は、PLC100と統合開発環境450とを接続する。通信部452は、一種の通信スタックとして実装することができる。
制御部470は、統合開発環境450を実現するために必要な処理を実行する。具体的には、制御部470は、ファイル転送処理部454と、バックアップ処理部456と、ダウンロード処理部458と、ファイル取得処理部460と、アップロード処理部462と、データロード処理部464と、リストア処理部466と、ビルド処理部468とを含む。
ファイル転送処理部454は、主としてダウンロード処理を担当し、通信部452を利用して、サポート装置400において生成されたファイルのうち、指定されたファイルをPLC100の一時データ領域1062へ転送する。特に、ファイル転送処理部454は、ユーザ操作に応答して、同一のグループに属するデバイス10の各々に対して、ビルド処理部468により生成された各デバイス10に対応するデータを転送するデータ転送部に相当する。
バックアップ処理部456は、ファイル転送処理部454がバックアップデータ486を転送する場合に、対象のファイル選択および転送処理などを管理する。より特定的には、バックアップ処理部456は、データの転送前に、同一のグループに属する各デバイス10に格納されているデータを取得してバックアップデータ486として保持するデータ保持部に相当する。
ダウンロード処理部458は、ビルド処理部468により生成されたファイルをダウンロードする処理を管理する。より特定的には、ダウンロード処理部458は、データ管理部26(図1)に相当し、同一のグループに属するすべてのデバイス10に対するデータの転送が成功した後、各デバイス10に対する当該転送されたデータに反映を指示する。
また、ダウンロード処理部458は、同一のグループに属するいずれかのデバイス10に対するデータの転送が失敗すると、当該同一のグループに属するすべてのデバイス10を、データを転送する前の状態に戻す処理を実行する。
ファイル取得処理部460は、主としてアップロード処理を担当し、通信部452を利用して、任意のデバイス10(PLC100)に格納されているファイルのうち指定されたファイルをアップロードし、サポート装置400のストレージ406などに取得したファイルを格納する。
アップロード処理部462は、ファイル取得処理部460によるファイルのアップロードの処理を管理する。データロード処理部464は、ファイル取得処理部460により取得されたファイルを必要に応じてロードして、再利用可能な状態を生成する。
より特定的には、アップロード処理部462およびデータロード処理部464は、データ取得処理部に相当し、ユーザ操作に応答して、同一のグループに属するデバイス10の各々から、各デバイス10に格納されているデータを取得してプロジェクト484の内容を更新する。
リストア処理部466は、ファイル取得処理部460により取得されたファイルを展開して過去のある状態に復元する。
ビルド処理部468は、複数のデバイス10を動作させるために必要な情報を含むプロジェクト484から、複数のデバイス10の各々に格納すべきデータを生成するデータ生成部に相当する。具体的には、ビルド処理部468は、ユーザにより作成されたソースプログラムを解釈して、デバイス10(PLC100)へ転送するためのデータ(典型的には、オブジェクトコードおよびパラメータなど)を含むファイルを生成する。
ファイルIO処理部472は、ストレージ406に格納されているファイルの読出しおよび書込みを担当する。
ストレージ406には、統合開発環境450からアクセスされるファイルの格納先としてディレクトリ480が構成されている。ディレクトリ480は、例えば、ビルド処理部468により生成されたファイル、および、任意のデバイス10へアップロードしたファイルなどが格納される場所である。
具体的には、ディレクトリ480には、転送ファイル482と、プロジェクト484と、バックアップデータ486と、グループ設定ファイル488が格納される。
転送ファイル482は、ビルド処理部468により生成されたPLC100へ転送するためのファイルを含む。
プロジェクト484は、統合開発環境450において開発されるプログラムおよびパラメータなどを総合したファイルである。統合開発環境450においては、プロジェクトという単位でデータが管理される。プロジェクト484は、1または複数のデバイス10で実行される制御プログラム140のデータを含み得る。
バックアップデータ486は、接続先のデバイス10に格納されるデータの複製であり、各デバイス10に格納される制御プログラム140などのデータに加えて、ユニット200、スレーブ250、カプラ300にそれぞれ格納されるパラメータ情報およびメモリ情報などを含み得る。
グループ設定ファイル488は、以下に説明するグループ単位での管理機能を実現するための各グループに属するデバイスを定義する。選択受付部22(図1)は、複数のデバイス10のうち同一のグループに属するデバイス10の選択を受付けて、その内容をグループ設定ファイル488に反映する。
<E.グループ単位での管理機能>
本実施の形態に係る制御システム1においては、複数のデバイス10に対して任意に設定されるグループの単位で、サポート装置400のオンライン処理が可能になっている。本明細書において、「オンライン処理」は、ダウンロードやアップロードなどのファイル(データ)の読込み処理および/または書込み処理を含む。典型的には、サポート装置400は、選択されたグループに属する1または複数のデバイス10をまとめて、ダウンロードおよびアップロードを行うことが可能になっている。さらに、「オンライン処理」は、リセット(再起動)コマンドといった、ファイルの読込み処理または書き処理を含まない指令も含み得る。
図8は、本実施の形態に係る制御システム1におけるグループ単位での管理機能の一例を説明するための図である。図8には、サポート装置400に格納されるグループ設定ファイル488の一例を示す。図8に示すグループ設定ファイル488においては、4つのグループ(グループA、グループB、グループC、グループD)が定義されており、各グループにいずれのデバイスが属するのかがチェックマークにより規定されている。
図8に示す例では、「グループA」には「デバイス1」および「デバイス2」が属しており、「グループB」には「デバイス3」、「グループ4」および「デバイスN」が属している。例えば、「グループA」が選択されると、「グループA」に属している「デバイス1」および「デバイス2」に対して、オンライン処理(ダウンロードおよびアップロード)がまとめて実行される。
各デバイスは複数のグループに属することが可能であってもよい。図8に示す例では、「デバイス1」は、「グループA」および「グループC」に属しており、「デバイス2」は、「グループA」および「グループD」に属している。もちろん、各デバイスは単一のグループにのみ属することが可能なようにしてもよい。
このようなグループ単位での管理機能は、例えば、複数の製造ラインが複数のデバイスにより実現されているような場合において、特定の製造ラインに関与するデバイスに対してのみ必要なデータを転送(ダウンロード)したいといったニーズなどに対応できる。同様に、特定の製造ラインに関与するデバイスが保持しているデータのみをアップロードしてバックアップデータ486として格納したいというニーズにも対応できる。
図9は、本実施の形態に係る制御システム1におけるグループ単位での管理機能の実装例を示す模式図である。図9には、デバイス10_1およびデバイス10_2がグループAに属しており、デバイス10_3、デバイス10_4およびデバイス10_NがグループBに属している例を示す。
デバイス10_1,10_2,10_3,10_4,・・・,10_Nの構成は、図2に示すものと実質的に同一としている。
図9を参照して、サポート装置400は、グループAに属するデバイス10_1およびデバイス10_2に対して、データのダウンロードおよびアップロードを並列的または直列的に実行することで、2つのデバイス10をまとめた状態で、オンライン処理を実現する。同様に、サポート装置400は、グループBに属するデバイス10_3、デバイス10_4およびデバイス10_Nに対して、データのダウンロードおよびアップロードを並列的または直列的に実行することで、3つのデバイス10をまとめた状態で、オンライン処理を実現する。
サポート装置400の統合開発環境450が管理するプロジェクト484は、設定されるグループAに対応付けられた部分プロジェクト4841と、設定されるグループBに対応付けられた部分プロジェクト4842とを含む。
サポート装置400からダウンロードされるデータは、デバイス10で実行される制御プログラム140と、デバイス10の動作に必要なパラメータ2060,2560,3060とを含む。
部分プロジェクト4841は、グループAに属するデバイス10_1との間で遣り取りされるデバイス用データ485_1およびデバイス10_2との間で遣り取りされるデバイス用データ485_2を含む。
デバイス10_1に向けられたデバイス用データ485_1は、PLC100で実行される制御プログラム140と、スレーブ250に格納されるパラメータ2560と、カプラ300に格納されるパラメータ3060とを含む。制御プログラム140は、デバイス10_1のトポロジーなどを規定する構成設定1402と、プログラムコード1404とを含む。
同様に、デバイス10_2に向けられたデバイス用データ485_2は、PLC100で実行される制御プログラム140と、スレーブ250に格納されるパラメータ2560と、ユニット200に格納されるパラメータ2060とを含む。
一方、部分プロジェクト4842は、グループBに属するデバイス10_3との間で遣り取りされるデバイス用データ485_3、デバイス10_4との間で遣り取りされるデバイス用データ485_4、および、デバイス10_Nとの間で遣り取りされるデバイス用データ485_Nを含む。
デバイス10_3に向けられたデバイス用データ485_3、デバイス10_4に向けられたデバイス用データ485_4、および、デバイス10_Nに向けられたデバイス用データ485_Nは、いずれも、PLC100で実行される制御プログラム140と、スレーブ250に格納されるパラメータ2560と、ユニット200に格納されるパラメータ2060とを含む。
グループ単位での管理機能においては、プロジェクト484に含まれる、部分プロジェクト4841または部分プロジェクト4842の単位で、対応するデバイス10との間でオンライン処理(ダウンロードおよびアップロード)が実行される。
<F.グループ単位での管理機能(ダウンロード)の処理手順>
次に、本実施の形態に係る制御システム1におけるグループ単位での管理機能(ダウンロード)の処理手順の一例について説明する。
図10は、本実施の形態に係る制御システム1におけるグループ単位での管理機能(ダウンロード)の処理手順を説明するための模式図である。図10には、グループAに属するデバイス10_1およびデバイス10_2に対するデータのダウンロードの処理例を示す。
図10においては、サポート装置400において、デバイス10_1,10_2,10_3の各々について、制御プログラム140およびパラメータ2060,2560,3060が更新されているとする。図10において、「#1」、「#2」、「#3」といった記載は、更新番号(バージョン)を意味するものとする。また、図10において、四角で囲まれた枠内の「S」+「数字」は、後述のステップ番号に対応する。後述の図13においても同様である。
図10においては、グループAが選択された状態で、ダウンロードが指示された場合の処理例を示す。グループAが選択されているので、グループAに属するデバイス10_1およびデバイス10_2に対してのみデータがダウンロードされ、デバイス10_3に対してはデータのダウンロードは行われない。
なお、サポート装置400は、複数のデバイス10を動作させるために必要な情報を含むプロジェクト484から、複数のデバイス10の各々に格納すべきデータを生成する処理を事前に実行しているとする。また、サポート装置400は、複数のデバイス10のうち同一のグループに属するデバイス10の選択を受付ける処理も事前に実行しているとする。
概略の処理手順として、まず、サポート装置400は、選択されたグループに属するすべてのデバイス10のセッションを取得して、排他制御権を取得する(ステップS1)。これは、別の装置から同一のデバイス10への同時書込みを防止するためである。
続いて、サポート装置400は、選択されたグループに属するすべてのデバイス10に順次アクセスして、各デバイス10に格納されているデータのバックアップ処理を実行し、ディレクトリ480内にバックアップデータ486として保存する(ステップS2)。
なお、順次アクセスだけではなく、並列処理で複数のデバイス10に格納されているデータのバックアップ処理を実行するようにしてもよい。
続いて、サポート装置400は、選択されたグループに属するすべてのデバイス10に対して、各デバイス10の一時データ領域1062へ対象のデータ(制御プログラム140など)を含むファイルを転送する(ステップS3)。すなわち、サポート装置400は、ユーザ操作に応答して、同一のグループに属するデバイスの各々に対して、生成された各デバイス10に対応するデータを転送する処理を実行する。
選択されたグループに属するすべてのデバイス10に対するファイル転送が正常に完了すると、サポート装置400は、一時データ領域1062に対してファイル転送を行ったすべてのデバイス10に対して、一時データ領域1062に格納されているファイルをデータ領域1064に反映することを指示する(ステップS4)。このような転送されたファイルをロードして反映することを、「フラッシュ処理」とも称する。すなわち、サポート装置400は、同一のグループに属するすべてのデバイス10に対するデータの転送が成功した後、各デバイス10に対する当該転送されたデータに反映を指示する処理を実行する。
このフラッシュ処理の実行指示(反映指示)は、同一のグループに属する各デバイス10に対して、一時データ領域1062に格納されているデータをデータ領域1064に反映するための指示を含む。
そして、選択されたグループに属するすべてのデバイス10においてデータ領域1064への反映が正常に完了すると、サポート装置400は、各デバイス10に属するすべてのユニット200に対して、対応するパラメータ2060を転送する(ステップS5)。
各デバイス10に属するすべてのユニット200に対するパラメータ2060の転送が正常に完了すると、サポート装置400は、各デバイス10に属するすべてのスレーブ250およびカプラ300に対して、対応するパラメータ2560およびパラメータ3060を転送する(ステップS6)。
このように、サポート装置400のファイル転送処理部454(データ転送部24)は、制御プログラム140の転送後に、パラメータ2060,2560,3060を転送(ダウンロード)する。より具体的には、サポート装置400のファイル転送処理部454(データ転送部24)は、制御プログラム140を制御装置であるPLC100に転送した後に、PLC100を介して周辺装置であるユニット200、スレーブ250、カプラ300にパラメータ2060,2560,3060を転送する。
なお、ユニット200のパラメータの転送(ステップS5)とスレーブ250および/またはカプラ300のパラメータ転送(ステップS6)との実行順序はこの通りでなくてもよい。例えば、ステップS5とステップS6との実行順序を逆にしてもよい。
続いて、各デバイス10に属するすべてのスレーブ250およびカプラ300に対するパラメータ2560およびパラメータ3060の転送が正常に完了すると、サポート装置400は、PLC100に対してIPアドレスの更新処理を実行する(ステップS7)。すなわち、PLC100に転送されたファイルにIPアドレスの更新指示が含まれていても、IPアドレスの更新処理はステップS7の時点まで待機される。
最終的に、サポート装置400は、選択されたグループに属するすべてのデバイス10のセッションを開放して、排他制御権を開放する(ステップS8)。そして、サポート装置400は、一連のダウンロード処理の結果をユーザに通知する(ステップS9)。
説明の便宜上、図10には、PLC100を主とするコントローラをデバイスの一例として説明したが、デバイスとしてはPLC100を主とするコントローラに限られず、例えば、HMIやIPCなどの任意の装置にも同様に適用可能である。
図11および図12は、本実施の形態に係る制御システム1におけるグループ単位での管理機能(ダウンロード)の処理手順を示すフローチャートである。図11および図12に示す各ステップは、典型的には、サポート装置400のプロセッサ402がサポートプログラム4062を実行することで実現される。
まず、サポート装置400は、グループ設定割付画面(後述の図16に示すグループ設定割付画面600)を表示して、グループの選択を受付ける(ステップS101)。
続いて、サポート装置400は、選択されたグループに属するすべてのデバイス10のセッションを取得して、排他制御権を取得する(ステップS102)。すなわち、サポート装置400は、処理実行中に別のサポート装置400などから書込み処理が実行されることを防止するために、選択されたグループに属するすべてのデバイス10に対してセッションを取得する。
ここで、対象のデバイス10の排他制御権を順次取得するようにしてもよいし、並列処理で複数のデバイス10の排他制御権を取得するようにしてもよい。
続いて、サポート装置400は、選択されたグループに属するすべてのデバイス10に格納されているデータをバックアップする(ステップS201)。それぞれのデバイス10から取得されたデータは、ディレクトリ480内にバックアップデータ486として保存される。
サポート装置400は、選択されたグループに属するすべてのデバイス10に対するバックアップが成功したか否かを判断する(ステップS202)。いずれかのデバイス10に対するバックアップが失敗していれば(ステップS202においてNO)、処理はステップS803へ進む。
選択されたグループに属するすべてのデバイス10に対するバックアップが成功していれば(ステップS202においてYES)、サポート装置400は、選択されたグループに属するすべてのデバイス10について、動作モードをプログラムモードに変更する(ステップS301)。
「プログラムモード」は、制御プログラムおよびパラメータの更新を許可するモードであり、サポート装置400からの指示によって、制御プログラムの実行などが停止および再開可能な状態になっている。
続いて、サポート装置400は、選択されたグループに属するすべてのデバイス10に対してファイルを転送する(ステップS302)。ファイルは、各PLC100の一時データ領域1062に転送される。この段階では、転送されたファイルはまだ反映されていない。
サポート装置400は、選択されたグループに属するすべてのデバイス10に対するファイル転送が成功したか否かを判断する(ステップS303)。いずれかのデバイス10に対するファイル転送が失敗していれば(ステップS303においてNO)、サポート装置400は、失敗時に元に戻す設定がなされているか否かを判断する(ステップS304)。
失敗時に元に戻す設定がなされていれば(ステップS304においてYES)、サポート装置400は、選択されたグループに属するすべてのデバイス10について、一時データ領域1062に格納されている転送されたファイルを削除する(ステップS305)。そして、処理はステップS803へ進む。
このように、サポート装置400のダウンロード処理部458(データ管理部26)は、同一のグループに属するいずれかのデバイス10に対するデータの転送が失敗すると、当該同一のグループに属する各デバイス10に対して、一時データ領域1062に格納されているデータを削除するように指示する。
一方、失敗時に元に戻す設定がなされていなければ(ステップS304においてNO)、処理はステップS401へ進む。この場合、ファイル転送が成功したデバイス10についてのみ処理が継続されることになる。すなわち、サポート装置400のダウンロード処理部458(データ管理部26)は、予め定められた設定(失敗時に元に戻す設定の無効化)に従って、同一のグループに属するデバイス10のうちデータの転送が成功したデバイス10のみに対して、当該転送されたデータに反映を指示することが可能になっている。
ステップS401以下においては、フラッシュ処理が実行される。より具体的には、サポート装置400は、すべてのデバイス10に対して、転送されたファイルを反映する(すなわち、フラッシュ処理を実行する)(ステップS401)。なお、デバイス10の書込順は、後述の図16に示される実行順設定画面660または図17に示される実行前画面670において任意に設定できる。
ここで、対象のデバイス10に対してフラッシュ処理を順次実行するようにしてもよいし、同時反映、すなわち並列処理で複数のデバイス10に対してフラッシュ処理を実行するようにしてもよい。
ステップS402においては、転送されたファイルでデバイス10内のデータが更新される。なお、デバイス10のIPアドレスが変更されると、以降の転送処理が実行できなくなることを防止するため、IPアドレスのロードはこの時点では実施されない。
サポート装置400は、選択されたグループに属するすべてのデバイス10に対するフラッシュ処理が成功したか否かを判断する(ステップS403)。いずれかのデバイス10に対するフラッシュ処理が失敗していれば(ステップS403においてNO)、サポート装置400は、失敗時に元に戻す設定がなされているか否かを判断する(ステップS404)。
失敗時に元に戻す設定がなされていれば(ステップS404においてYES)、処理はステップS504へ進む。一方、失敗時に元に戻す設定がなされていなければ(ステップS404においてNO)、処理はステップS501へ進む。この場合、フラッシュ処理が成功したデバイス10についてのみ処理が継続されることになる。
選択されたグループに属するすべてのデバイス10に対するフラッシュ処理が成功していれば(ステップS403においてYES)、サポート装置400は、各デバイス10に属するすべてのユニット200へパラメータを転送する(ステップS501)。
サポート装置400は、各デバイス10に属するすべてのユニット200へのパラメータ転送が成功したか否かを判断する(ステップS502)。いずれかのユニット200へのパラメータ転送が失敗していれば(ステップS502においてNO)、サポート装置400は、失敗時に元に戻す設定がなされているか否かを判断する(ステップS503)。
失敗時に元に戻す設定がなされていれば(ステップS503においてYES)、処理はステップS504へ進む。
一方、失敗時に元に戻す設定がなされていなければ(ステップS503においてNO)、処理はステップS601へ進む。この場合、パラメータ転送が成功したユニット200についてのみ処理が継続されることになる。
各デバイスに属するすべてのユニット200へのパラメータ転送が成功していれば(ステップS502においてYES)、サポート装置400は、各デバイス10に属するすべてのスレーブ250およびカプラ300へパラメータを転送する(ステップS601)。
サポート装置400は、各デバイス10に属するすべてのスレーブ250およびカプラ300へのパラメータ転送が成功したか否かを判断する(ステップS602)。いずれかのスレーブ250またはカプラ300へのパラメータ転送が失敗していれば(ステップS602においてNO)、サポート装置400は、失敗時に元に戻す設定がなされているか否かを判断する(ステップS603)。
失敗時に元に戻す設定がなされていれば(ステップS604においてYES)、処理はステップS504へ進む。
一方、失敗時に元に戻す設定がなされていなければ(ステップS603においてNO)、処理はステップS701へ進む。この場合、パラメータ転送が成功したスレーブ250およびカプラ300についてのみ処理が継続されることになる。
ステップS504において、サポート装置400は、バックアップしたデータを各デバイスへリストアする(ステップS504)。これによって、各デバイス10は、元の状態に復帰する。すなわち、サポート装置400のダウンロード処理部458(データ管理部26)は、同一のグループに属するいずれかのデバイス10に対するデータの転送が失敗すると、バックアップデータ486を当該同一のグループに属する各デバイス10に戻す。そして、処理はステップS803へ進む。
一方、各デバイス10に属するすべてのスレーブ250およびカプラ300へのパラメータ転送が成功していれば(ステップS602においてYES)、サポート装置400は、選択されたグループに属するデバイス10のIPアドレスをロードする(ステップS701)。なお、IPアドレスが変更されるデバイス10のみ、ステップS701に示されるロード処理が実行される。
サポート装置400は、IPアドレスのロードに失敗したデバイス10が存在するか否かをチェックする(ステップS702)。サポート装置400は、IPアドレスのロードに失敗したデバイス10が存在するか否かにかかわらず、運転モードに戻すデバイス10を選択するための運転モード変更確認画面(図18の運転モード変更確認画面680を参照)を表示する(ステップS801)。
IPアドレスのロードに失敗した場合であっても、ファイルおよびパラメータの転送自体は正常に完了しているため、原則として、処理は継続される。但し、転送されたファイルに規定されたIPアドレスと実際に設定されているIPアドレスとの間に矛盾が生じることになる。そこで、転送結果を表示する際に、IPアドレスのロードに失敗したデバイス10については、IPアドレスのロードに失敗した旨の結果を通知する。加えて、当該デバイスのリスタートが必要であることをユーザへ通知することが好ましい。
ステップS801において表示される運転モード変更確認画面を操作することで、ユーザは、ダウンロード開始前に運転モードであったデバイスを運転モードに戻すか否かを自身で選択できる。運転モード変更確認画面においては、デバイスごとに運転モードに戻すか否かを選択できるようにしておくことが好ましい。
サポート装置400は、ステップS801において表示される運転モード変更確認画面に対するユーザ操作に応じて、選択されたデバイスを運転モードに戻す(ステップS802)。
そして、サポート装置400は、選択されたグループに属するデバイス10のセッションを開放して、排他制御権を開放する(ステップS803)。ここで、対象のデバイス10の排他制御権を順次解放するようにしてもよいし、並列処理で複数のデバイス10の排他制御権を開放するようにしてもよい。
最終的に、サポート装置400は、一連のダウンロード処理の結果をユーザに通知する(例えば、図19に示す実行結果通知画面690)(ステップS901)。この結果には、デバイス10ごとの転送結果を含めることが好ましい。IPアドレスが変更された場合、あるいは、IPアドレスのロード処理に失敗した場合などには、その内容についても通知結果に含めることが好ましい。
<G.グループ単位での管理機能(アップロード)の処理手順>
次に、本実施の形態に係る制御システム1におけるグループ単位での管理機能(アップロード)の処理手順の一例について説明する。
図13は、本実施の形態に係る制御システム1におけるグループ単位での管理機能(アップロード)の処理手順を説明するための模式図である。図13には、グループAに属するデバイス10_1およびデバイス10_2に対するデータのアップロードの処理例を示す。
図13においては、グループAが選択された状態で、アップロードが指示された場合の処理例を示す。グループAが選択されているので、グループAに属するデバイス10_1およびデバイス10_2に格納されているデータがアップロードされ、デバイス10_3に対してはデータのアップロードは行われない。
概略の処理手順として、まず、サポート装置400は、選択されたグループに属するすべてのデバイス10のセッションを取得して、排他制御権を取得する(ステップS11)。これは、別の装置から同一のデバイス10への同時書込みを防止するためである。
続いて、サポート装置400は、統合開発環境450で開かれているプロジェクト484のデータをディレクトリ480内に保存する(ステップS12)。
続いて、サポート装置400は、選択されたグループに属するすべてのデバイス10に順次アクセスして、各デバイス10内の制御プログラム140のファイルに対するアップロード処理を実行し、ディレクトリ480内に制御プログラム140#として保存する(ステップS13)。
なお、順次アクセスだけではなく、並列処理で複数のデバイス10内の制御プログラム140のファイルに対するバックアップ処理を実行するようにしてもよい。
選択されたグループに属するすべてのデバイス10に対するアップロード処理が正常に完了すると、サポート装置400は、アップロードした制御プログラム140#に基づいて、統合開発環境450で開かれる各デバイス10の制御プログラム140を更新する(ステップS14)。
選択されたグループに属するすべてのデバイス10について制御プログラム140の更新が正常に完了すると、サポート装置400は、各デバイス10に属するすべてのユニット200のパラメータ2060に対するアップロード処理を実行する(ステップS15)。各デバイス10に属するすべてのユニット200のパラメータ2060に対するアップロード処理が正常に完了すると、サポート装置400は、アップロードしたパラメータ2060に基づいて、統合開発環境450で開かれる各ユニット200のパラメータ2060を更新する。
各デバイス10に属するすべてのユニット200についてパラメータ2060の更新が正常に完了すると、サポート装置400は、各デバイス10に属するすべてのスレーブ250およびカプラ300のパラメータ2560およびパラメータ3060に対するアップロード処理を実行する(ステップS16)。各デバイス10に属するすべてのスレーブ250およびカプラ300のパラメータ2560およびパラメータ3060に対するアップロード処理が正常に完了すると、サポート装置400は、アップロードしたスレーブ250およびカプラ300のパラメータ2560およびパラメータ3060に基づいて、統合開発環境450で開かれる各スレーブ250およびカプラ300のパラメータ2560およびパラメータ3060を更新する。
なお、ユニット200のパラメータの転送(ステップS15)とスレーブ250および/またはカプラ300のパラメータ転送(ステップS16)との実行順序はこの通りでなくてもよい。例えば、ステップS15とステップS16との実行順序を逆にしてもよい。
各デバイス10に属するすべてのスレーブ250およびカプラ300についてパラメータ2560およびパラメータ3060の更新が正常に完了すると、サポート装置400は、サポート装置400は、選択されたグループに属するすべてのデバイス10のセッションを開放して、排他制御権を開放する(ステップS17)。そして、サポート装置400は、一連のダウンロード処理の結果をユーザに通知する(ステップS18)。
説明の便宜上、図13には、PLC100を主とするコントローラをデバイスの一例として説明したが、デバイスとしてはPLC100を主とするコントローラに限られず、例えば、HMIやIPCなどの任意の装置にも同様に適用可能である。
図14および図15は、本実施の形態に係る制御システム1におけるグループ単位での管理機能(アップロード)の処理手順を示すフローチャートである。図14および図15に示す各ステップは、典型的には、サポート装置400のプロセッサ402がサポートプログラム4062を実行することで実現される。
まず、サポート装置400は、グループ設定割付画面(後述の図16に示すグループ設定割付画面600)を表示して、グループの選択を受付ける(ステップS1101)。
続いて、サポート装置400は、選択されたグループに属するすべてのデバイス10のセッションを取得して、排他制御権を取得する(ステップS1102)。すなわち、サポート装置400は、処理実行中に別のサポート装置400などから書込み処理が実行されることを防止するために、選択されたグループに属するすべてのデバイス10に対してセッションを取得する。
ここで、対象のデバイス10の排他制御権を順次取得するようにしてもよいし、並列処理で複数のデバイス10の排他制御権を取得するようにしてもよい。
続いて、サポート装置400は、統合開発環境450で開かれているプロジェクト484のデータをディレクトリ480内に保存する(ステップS1201)。すなわち、サポート装置400は、現在開かれているプロジェクト484のデータをローカルにコピーする。このコピーは、アップロード処理に失敗した場合に、プロジェクト484を元に戻すためのバックアップデータ486に相当する。
続いて、サポート装置400は、選択されたグループに属するすべてのデバイス10に順次アクセスして、各デバイス10内の制御プログラム140に対するアップロード処理を実行し、ディレクトリ480内に制御プログラム140#として保存する(ステップS1301)。すなわち、サポート装置400は、すべてのデバイス10に対して、各デバイス10内のファイルをローカルフォルダへアップロードする。
サポート装置400は、選択されたグループに属するすべてのデバイス10に対するアップロード処理が成功したか否かを判断する(ステップS1302)。いずれかのデバイス10に対するアップロード処理が失敗していれば(ステップS1302においてNO)、サポート装置400は、失敗時に元に戻す設定がなされているか否かを判断する(ステップS1303)。
失敗時に元に戻す設定がなされていれば(ステップS1303においてYES)、サポート装置400は、ディレクトリ480にアップロードしたファイルを削除する(ステップS1304)。そして、処理はステップS1711へ進む。
一方、失敗時に元に戻す設定がなされていなければ(ステップS1303においてNO)、処理はステップS1401へ進む。この場合、アップロード処理が成功したデバイス10についてのみ処理が継続されることになる。
選択されたグループに属するすべてのデバイス10に対するアップロード処理が成功していれば(ステップS1302においてYES)、サポート装置400は、アップロードした制御プログラム140#に基づいて、統合開発環境450で開かれる各デバイス10の制御プログラム140を更新する(ステップS1401)。すなわち、サポート装置400は、アップロードした制御プログラム140のファイルをロードして、プロジェクト484内の各デバイス10の設定へ反映する。
サポート装置400は、選択されたグループに属するすべてのデバイス10について制御プログラム140の更新が成功したか否かを判断する(ステップS1402)。いずれかのデバイス10に対する制御プログラム140の更新が失敗していれば(ステップS1402においてNO)、サポート装置400は、失敗時に元に戻す設定がなされているか否かを判断する(ステップS1403)。
失敗時に元に戻す設定がなされていれば(ステップS1403においてYES)、処理はステップS1711へ進む。
一方、失敗時に元に戻す設定がなされていなければ(ステップS1403においてNO)、処理はステップS1501へ進む。この場合、アップロード処理が成功したデバイス10についてのみ処理が継続されることになる。
選択されたグループに属するすべてのデバイス10について制御プログラム140の更新が成功していれば(ステップS1402においてYES)、サポート装置400は、各デバイス10に属するすべてのユニット200のパラメータ2060に対するアップロード処理を実行し、アップロードしたパラメータ2060に基づいて、統合開発環境450で開かれる各ユニット200のパラメータ2060を更新する(ステップS1501)。
サポート装置400は、各デバイス10に属するすべてのユニット200からのパラメータ転送が成功したか否かを判断する(ステップS1502)。いずれかのユニット200からのパラメータ転送が失敗していれば(ステップS1502においてNO)、サポート装置400は、失敗時に元に戻す設定がなされているか否かを判断する(ステップS1503)。
失敗時に元に戻す設定がなされていれば(ステップS1503においてYES)、処理はステップS1711へ進む。
一方、失敗時に元に戻す設定がなされていなければ(ステップS1503においてNO)、処理はステップS1601へ進む。この場合、パラメータ転送が成功したユニット200についてのみ処理が継続されることになる。
各デバイス10に属するすべてのユニット200からのパラメータ転送が成功していれば(ステップS1502においてYES)、サポート装置400は、各デバイス10に属するすべてのスレーブ250のパラメータ2560およびカプラ300のパラメータ3060に対するアップロード処理を実行し、アップロードしたパラメータ2560およびパラメータ3060に基づいて、統合開発環境450で開かれる各スレーブ250および各カプラ300のパラメータ2060を更新する(ステップS1601)。
サポート装置400は、各デバイス10に属するすべてのスレーブ250およびカプラ300からのパラメータ転送が成功したか否かを判断する(ステップS1602)。いずれかのスレーブ250またはカプラ300からのパラメータ転送が失敗していれば(ステップS1602においてNO)、サポート装置400は、失敗時に元に戻す設定がなされているか否かを判断する(ステップS1603)。
失敗時に元に戻す設定がなされていれば(ステップS1603においてYES)、処理はステップS1711へ進む。
一方、失敗時に元に戻す設定がなされていなければ(ステップS1603においてNO)、処理はステップS1701へ進む。この場合、パラメータ転送が成功したユニット200についてのみ処理が継続されることになる。
各デバイス10に属するすべてのスレーブ250およびカプラ300からのパラメータ転送が成功していれば(ステップS1602においてYES)、サポート装置400は、選択されたグループに属するすべてのデバイス10のセッションを開放して、排他制御権を開放する(ステップS1701)。ここで、対象のデバイス10の排他制御権を順次解放するようにしてもよいし、並列処理で複数のデバイス10の排他制御権を開放するようにしてもよい。
最終的に、サポート装置400は、一連のアップロード処理の結果をユーザに通知する(例えば、図19に示す実行結果通知画面690)(ステップS1801)。この結果には、デバイス10ごとの転送結果を含めることが好ましい。転送が失敗したデバイス10については、その失敗した原因なども通知結果に含めることが好ましい。
また、ステップS1711において、サポート装置400は、選択されたグループに属するすべてのデバイス10のセッションを開放して、排他制御権を開放する(ステップS1711)。ここで、対象のデバイス10の排他制御権を順次解放するようにしてもよいし、並列処理で複数のデバイス10の排他制御権を開放するようにしてもよい。また、サポート装置400は、各デバイス10を一旦オフラインに変更する(ステップS1712)。
そして、サポート装置400は、アップロード処理前に保存したプロジェクト484を用いてプロジェクトを開き直す(ステップS1713)。そして、サポート装置400は、選択されたグループに属するデバイス10に対してオンライン処理を実行する(ステップS1714)。そして、処理はステップS1801へ進む。
<H.ユーザインターフェイス画面>
上述したようなオンライン処理(ダウンロードおよびアップロード)に関するユーザインターフェイス画面の一例について説明する。
(h1:グループ設定割付画面)
図16は、本実施の形態に係る制御システム1が提供するグループ設定割付画面の一例を示す模式図である。図16を参照して、グループ設定割付画面600は、グループ設定エリア610と、グループ割付設定エリア620とを含む。
グループ設定エリア610は、登録されているグループの一覧表示612を含んでおり、追加削除ボタン616を操作することで、グループの追加および削除が可能になっている。図16には、4つのグループが登録されている例を示す。
グループ割付設定エリア620には、現在開かれているプロジェクト484に含まれるデバイスが一覧表示される。より具体的には、グループ割付設定エリア620は、デバイスの一覧表示622と、各デバイスの形式を示すデバイス詳細情報表示624と、各デバイスが属するグループを示す所属グループ表示626とを含む。このように、グループ割付設定エリア620は、デバイスごとに、対応する形式および所属するグループを規定する情報を含む。
なお、デバイス詳細情報表示624として形式を表示する例を示すが、別の表示形態を採用してもよい。例えば、デバイス詳細情報表示624として複数の列を含み、形式列だけではなく、デバイス10のバージョン列などデバイス10の詳細情報を列ごとに記載してもよい。
所属グループ表示626に含まれる「+」ボタンが押下されると、所属グループ設定画面650が表示される。所属グループ設定画面650は、登録されているグループの一覧表示654と、グループごとに対象の有無を選択するチェックボックス652とを含む。ユーザは、チェックボックス652を操作して、選択されているデバイスを所属させるべきグループを選択する。すなわち、ユーザは各デバイスをどのグループに割り付けるかを設定する。なお、1つのデバイスを複数のグループに割り付けることができるようにしてもよい。
グループ設定エリア610は、書込順の設定ボタン614を含む。設定ボタン614が押下されると、書込み処理(ダウンロード処理)におけるデバイスの実行順を設定するための実行順設定画面660が表示される。ダウンロード処理の場合、書込順によってデバイスの挙動が変化し得るため、デバイスに対する処理の実行順を予め設定しておくことが好ましい。実行順設定画面660は、対象のグループを選択するためのプルダウン662と、選択されているグループに所属するデバイスの一覧表示666と、実行順を示す実行順表示664とを含む。
ユーザは、一覧表示666において対象のデバイスを選択するとともに、変更ボタン668を操作することで、当該選択されているデバイスの実行順が変化する。このように、ユーザは、一覧表示666において各デバイスの順番を入れ替えることで、ダウンロード処理における実行順を任意に設定できる。なお、実際のダウンロード処理の実行直前においても、実行順を任意に設定できるようにしてもよい。
このような実行順の設定は、実行順がデバイスの振る舞いに影響を与え得る場合にのみ有効化されてもよい。例えば、実行順がデバイスの振る舞いに影響を与える可能性がない処理については、内部的に最適化を実行して、並列に処理するようにしてもよい。
以下、実行直前に提供されるユーザインターフェイス画面の一例について説明する。
図17は、本実施の形態に係る制御システム1が提供するオンライン処理実行前画面の一例を示す模式図である。図17を参照して、オンライン処理として、書込み処理および書込み処理以外の別にユーザインターフェイス画面が提供される。
書込み処理が選択されると、実行前画面670が表示される。実行前画面670は、書込み処理の対象となるグループを選択するためのプルダウン672と、選択されているグループに所属するデバイスの一覧表示676と、実行順を示す実行順表示674とを含む。
ユーザがプルダウン672を操作して、書込み処理の対象となる任意のグループを選択すると、当該選択されたグループに所属するデバイスの一覧が表示または更新される。グループ設定割付画面600(図16)において予め設定された書込順がデフォルトとして、実行前画面670に表示される。デバイスの実行順を変更する必要がある場合には、ユーザは、一覧表示676において対象のデバイスを選択するとともに、変更ボタン678を操作する。
実行前画面670は、失敗時に元に戻す設定を有効化するためのチェックボックス679を含む。ユーザがチェックボックス679を有効化することで、いずれかのデバイスにおいて処理の実行が失敗すると、対象のすべてのデバイスが処理実行前の状態に戻される。チェックボックス679が無効化されている場合には、処理の実行が成功したデバイスについて処理が継続される。
書込み処理以外が選択されると、実行前画面671が表示される。実行前画面671は、実行前画面670を簡素化したものに相当し、書込み処理の対象となるグループを選択するためのプルダウン672と、失敗時に元に戻す設定を有効化するためのチェックボックス679を含む。プルダウン672およびチェックボックス679の機能および処理は、実行前画面670のプルダウン672およびチェックボックス679と同様であるので、詳細な説明は繰返さない。
図17に示すように、いずれのオンライン処理であっても、失敗時に元に戻す設定が可能になっている。
(h2:運転モード変更画面)
図18は、本実施の形態に係る制御システム1が提供する運転モード変更確認画面680の一例を示す模式図である。図18を参照して、運転モード変更確認画面680は、デバイスの一覧表示684と、各デバイスに対するオンライン処理の実行結果を示す実行結果表示686と、デバイスごとに運転モードへの変更対象を選択するチェックボックス682とを含む。
一覧表示684には、選択されているグループに所属するデバイスが一覧表示される。ユーザは、チェックボックス682を操作して、一覧表示684に表示されるデバイスのうち運転モードに変更する対象のデバイスを選択する。このように、ユーザは、チェックボックス682を操作することで、デバイスごとに運転モードに変更するか否かを決定できる。
実行結果表示686には、各デバイスに対するオンライン処理の実行結果(成功または失敗)が表示される。
ここで、成功または失敗だけでなく、詳細情報を表示するようにしてもよい。例えば、失敗であれば、転送失敗なのかIPアドレスのロードに失敗なのかといった失敗の原因を表示するようにしてもよい。また、成功した場合であっても、IPアドレスが変更されていることなどを表示するようにしてもよい。
表示態様としても、例えば、実行結果欄の他に別の欄を設けて、実行結果欄には成功または失敗を表示するとともに、当該別の欄には上述したような内容で記載された詳細情報を表示するようにしてもよい。
例えば、書込み処理に失敗したデバイスは動作が変化する可能性があるため、当該デバイスについての運転モードへの変更を禁止してもよい。このような運転モードへの変更を禁止する場合には、オンライン処理の実行が失敗したデバイスについては、チェックボックス682をグレイアウトして、選択不可の状態にしてもよい。
この他にも、IPアドレスのロードに失敗したデバイスなどを含んだ表示としてもよい。これは、IPアドレスのロードに失敗しているデバイスは、ファイルと実際の接続IPアドレスとの間に矛盾が発生するため、リスタートが必要になるので、運転モードへ変更することは好ましくないからである。
また、処理開始時にプログラムモードであったデバイスについても、運転モードへの変更を禁止するようにしてもよい。
(h3:実行結果通知画面)
図19は、本実施の形態に係る制御システム1が提供する実行結果通知画面690の一例を示す模式図である。図19を参照して、実行結果通知画面690は、メッセージ通知領域691を含む。メッセージ通知領域691には、オンライン処理の実行に関する内容が表示される。例えば、処理の実行に失敗したデバイスが存在する場合や、IPアドレスが変更された場合などの状況に応じて、表示されるメッセージの内容が変更される。
実行結果通知画面690は、対象のグループに属しているデバイスの一覧表示692および各デバイスについての実行結果の一覧表示694を含む。一覧表示692および一覧表示694には、デバイスごとに処理の事項が成功したのか、あるいは、失敗したのかが示される。
実行結果通知画面690は、さらに、一覧表示692において選択された特定のデバイスについて、処理の詳細な情報を表示するための工程の一覧表示696および実行結果の一覧表示698を含む。すなわち、選択された任意のデバイスについて、工程ごとに処理の実行結果の詳細が表示される。このような詳細な実行結果を表示することで、各デバイスについて、実施されていない構成を含めて、いずれの工程まで実行されたのかを容易に把握できる。
実行結果通知画面690は、さらに、エラー情報通知領域699を含む。エラー情報通知領域699には、いずれかのデバイスに対するオンライン処理が失敗したときに、対応するエラー情報およびトラブルシュートに関する情報などが表示されてもよい。エラー情報通知領域699に、ユーザが理解できる情報であれば、どのような表示項目および内容であってもよい。
図19に示すような実行結果通知画面690が提供されることで、ユーザは、複数のデバイスに対してまとめてオンライン処理を実行する場合であっても、一部のデバイスで発生するエラーやその対処などを容易に認識できる。
<I.変形例>
上述の実施の形態においては、単一のコンピュータがサポート装置400を構成する場合について説明したが、サポート装置400が提供する処理または機能の一部を他のコンピュータに分散配置してもよい。例えば、ストレージの機能をネットワーク上のサーバが提供する記憶領域を用いて実現してもよいし、あるいは、ビルド処理をネットワーク上のサーバで実施するようにしてもよい。
このように、サポート装置400の具体的な実装形態としては、各時代に応じた適切な形態を採用すればよい。
<J.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
複数のデバイス(10)を有する制御システム(1)において利用されるサポート装置(400)であって、
前記複数のデバイスを動作させるために必要な情報を含むプロジェクト(484)から、前記複数のデバイスの各々に格納すべきデータ(485)を生成するデータ生成部(20;468)と、
前記複数のデバイスのうち同一のグループに属するデバイスの選択を受付ける選択受付部(22;600)と、
ユーザ操作に応答して、前記同一のグループに属するデバイスの各々に対して、前記データ生成部により生成された各デバイスに対応するデータを転送するデータ転送部(24;454)と、
前記同一のグループに属するすべてのデバイスに対するデータの転送が成功した後、各デバイスに対する当該転送されたデータに反映を指示するデータ管理部(26;458)とを備える、サポート装置。
[構成2]
前記データ管理部は、前記同一のグループに属するいずれかのデバイスに対するデータの転送が失敗すると、当該同一のグループに属するすべてのデバイスを、データを転送する前の状態に戻す(S304;S504)、構成1に記載のサポート装置。
[構成3]
前記デバイスの各々は、処理に用いられるデータを格納するための第1のデータ領域(1064)と、前記データ転送部から転送されるデータを一時的に格納するための第2のデータ領域(1062)とを有しており、
前記データ管理部は、前記同一のグループに属する各デバイスに対して、前記第2のデータ領域に格納されているデータを前記第1のデータ領域に反映するように指示する(S402)、構成1または2に記載のサポート装置。
[構成4]
前記データ管理部は、前記同一のグループに属するいずれかのデバイスに対するデータの転送が失敗すると、前記同一のグループに属する各デバイスに対して、前記第2のデータ領域に格納されているデータを削除するように指示する(S305)、構成3に記載のサポート装置。
[構成5]
データの転送前に、前記同一のグループに属する各デバイスに格納されているデータを取得してバックアップデータ(486)として保持するデータ保持部(456)をさらに備え、
前記データ管理部は、前記同一のグループに属するいずれかのデバイスに対するデータの転送が失敗すると、前記バックアップデータを前記同一のグループに属する各デバイスに戻す(S504)、構成2に記載のサポート装置。
[構成6]
前記データ管理部は、予め定められた設定に従って、前記同一のグループに属するデバイスのうちデータの転送が成功したデバイスのみに対して、当該転送されたデータに反映を指示することが可能になっている(S304,S305)、構成1~5のいずれか1項に記載のサポート装置。
[構成7]
前記データ転送部から転送されるデータは、前記デバイスで実行される制御プログラム(140)と、前記デバイスの動作に必要なパラメータ(2060,2560,3060)とを含み、
前記データ転送部は、前記制御プログラムの転送後に、前記パラメータを転送する(S302,S501,S601)、構成1~6のいずれか1項に記載のサポート装置。
[構成8]
前記デバイスは、制御装置(100)と前記制御装置に接続される周辺装置(200,250,300)とを含み、
前記データ転送部は、前記制御プログラムを前記制御装置に転送した後に、前記制御装置を介して前記周辺装置に前記パラメータを転送する(S501,S601)、構成7に記載のサポート装置。
[構成9]
ユーザ操作に応答して、前記同一のグループに属するデバイスの各々から、各デバイスに格納されているデータを取得して前記プロジェクトの内容を更新するデータ取得処理部(462,464)をさらに備える、構成1~8のいずれか1項に記載のサポート装置。
[構成10]
複数のデバイス(10)を有する制御システム(1)において利用されるコンピュータ(400)で実行されるサポートプログラム(4062)であって、前記サポートプログラムはコンピュータに
前記複数のデバイスを動作させるために必要な情報を含むプロジェクト(484)から、前記複数のデバイスの各々に格納すべきデータ(485)を生成するステップ(20;468)と、
前記複数のデバイスのうち同一のグループに属するデバイスの選択を受付けるステップ(22;600)と、
ユーザ操作に応答して、前記同一のグループに属するデバイスの各々に対して、前記生成された各デバイスに対応するデータを転送するステップ(S302)と、
前記同一のグループに属するすべてのデバイスに対するデータの転送が成功した後、各デバイスに対する当該転送されたデータに反映を指示するステップ(S402)とを実行させる、サポートプログラム。
[構成11]
複数のデバイス(10)と、
前記複数のデバイスに接続可能なサポート装置(400)とを備え、
前記サポート装置は、
前記複数のデバイスを動作させるために必要な情報を含むプロジェクト(484)から、前記複数のデバイスの各々に格納すべきデータ(485)を生成するデータ生成部(20;468)と、
前記複数のデバイスのうち同一のグループに属するデバイスの選択を受付ける選択受付部(22;600)と、
ユーザ操作に応答して、前記同一のグループに属するデバイスの各々に対して、前記データ生成部により生成された各デバイスに対応するデータを転送するデータ転送部(24;454)と、
前記同一のグループに属するすべてのデバイスに対するデータの転送が成功した後、各デバイスに対する当該転送されたデータに反映を指示するデータ管理部(26;458)とを備える、制御システム。
<K.利点>
本実施の形態に係る制御システム1によれば、装置単位などのユーザが任意に設定したグループに対して、プロジェクトに含まれる複数のデバイスのうち一部または全部を各グループに割付ることができる。そして、グループ単位でオンライン処理を実行できる。このような構成を採用することで、以下のような課題を解決できる。
具体的には、従来の統合開発環境からデバイスとの間でデータ(制御プログラムやパラメータなど)を読み書きする場合には、デバイスごとに操作を行う必要があった。例えば、複数のデバイスで構成される単一の装置を一つのプロジェクトとして管理している場合であっても、ダウンロード処理やモニタリングといったオンライン処理は、デバイスごとに個別に実行する必要があった。そのため、ユーザから見れば、一つのプロジェクトとして管理しているメリットを享受できず、また、デバイスの数だけ類似した操作を繰返さなければならず、手数の多さに起因する誤操作などの可能性も増大し得る。
また、特定のデバイスに対する書込み処理が失敗した場合に、既に書込みが完了したデバイスを元の戻すような仕組みも存在しないので、複数のデバイスの取扱いには手間が掛かる。
また、一つのデバイスに対する操作が完了するまで次のデバイスに対する操作を開始できないため、ユーザがすべてのデバイスにオンライン処理を実行完了するまでに長い時間を要する。すなわち、対象グループの属する各デバイスへの読書きを順次実行する場合には、長い処理時間を要する。
このような課題に対して、本実施の形態に係る制御システム1によれば、プロジェクトに含まれる1または複数のデバイスをグループ化することで、その後のオンライン処理を当該グループ単位で一斉に実行できる。例えば、同一のグループに属するデバイスに対してデータの書込み処理などを行う場合には、書込順や転送失敗時の対処などを設定できるので、同一グループに属するデバイス間に不整合を生じることなく、一括操作を実現できる。
また、処理を部分的に並列処理できるため、ユーザがすべてのデバイスにオンライン処理を実行完了するまでの時間を短縮できる。
本実施の形態に係る制御システム1においては、以下のような処理および機能を実行可能である。
(1)ユーザにより任意のデバイスを各グループに割当てることができる。
(2)ユーザはグループ設定割付画面600を操作することで、プロジェクトに含まれる任意のデバイスを予め登録したいずれかのグループへ割当てることができる。
(3)ユーザは、オンライン処理の実行時において、いずれのグループに対して処理を実行するか選択することで、当該選択されたグループに属する1または複数のデバイスに対して一括した処理を実行できる。
(4)書込み処理を行う際は、デバイス間でデータ反映の順番を予め設定でき、これによって書込み後の挙動に不整合が生じる可能性を低減できる。
(5)書込み処理を行う際、処理開始前に対象となるデバイスのすべてからデータを取得してサポート装置400内にバックアップデータとして格納できる。
(6)読込み処理を行う際、処理開始前に対象となるデバイスのすべてから制御プログラムの情報をサポート装置400内に格納できる。
(7)オンライン処理の実行時には、必要に応じて排他制御をかけることができるので、書込みあるいは読出しにおけるデバイス間の不整合を防止できる。
(8)対象のすべてのデバイスに対する処理の完了後、実行結果をチェックして1つでも失敗したデバイスが存在する場合には、サポート装置400に格納してあるバックアップデータを用いて元に戻すこともできる。
(9)すべてのオンライン処理の実行完了後に実行結果を通知することもできる。このとき、失敗した場合は失敗したデバイス情報も通知するようにしてもよい。
(10)複数のデバイスで実行される制御プログラムを一つのプロジェクトとして作成できる統合開発環境が提供される。この統合開発環境においては、ユーザが設定したグループ単位で1または複数のデバイスをグループ化できる。
(11)グループ単位でオンライン処理を実行できる。
(12)読込み処理および書込処理の内容は、オンライン接続、モニタ、ダウンロード、アップロード、バックアップ、リストア、オンラインエディットなどいずれであってもよい。
(13)デバイスに対するオンライン処理の実行時においては、必要に応じて排他制御をかけることで、書込みあるいは読出しのデバイス間の不整合を防止できる。
(14)統合開発環境からデバイスへの書込み処理を行う際、処理開始前に対象のグループに属する全デバイスのデータを取得し、サポート装置上でバックアップデータとして保管できるため、特定のデバイスのみデータが変更されることを防止できる。
(15)デバイスから統合開発環境へデータを取得する際は、統合開発環境上の制御プログラムデータを取得し、サポート装置400上でバックアップデータとして格納できるため、特定のデバイスのみデータが変更されることを防止できる。
(16)オンライン処理の実行後、各デバイスでの結果をチェックして、いずれか1つでも失敗しているデバイスが存在した場合には、サポート装置400上で保管していたバックアップデータを使用して、処理実行前の状態へ戻すことができる。
(17)すべての処理が完了後に、実行結果をユーザへ通知する。
(18)デバイスは、PLCやHMIなどプロジェクトが生成可能なデバイスであればいずれであってもよい。
(19)対象グループの属する各デバイスへの読書きは並列に処理することができるため、各デバイスへの読書きを順次実行する場合に比べて処理を短時間化できる。
(20)1デバイスあたり複数グループを割り付けることも可能であってもよい。
本実施の形態に係る制御システム1が提供する統合開発環境においては、複数のデバイスで実行される制御プログラムを変更するような場合、当該複数のデバイスの制御プログラムを同期させることができる。
なお、すべてのデバイスに対する制御プログラムの書込みが完了するまでには、複数のデバイス間で制御プログラムの同期状態を確保できないが、万が一、いずれかのデバイスに対する書込みが失敗した場合には、既に書込まれた制御プログラムを元に戻すので、一部の制御プログラムのみが更新されるといった事態を回避できる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。