(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-28
(45)【発行日】2023-12-06
(54)【発明の名称】制御システム、サポート装置およびサポートプログラム
(51)【国際特許分類】
G05B 23/02 20060101AFI20231129BHJP
G05B 9/02 20060101ALN20231129BHJP
【FI】
G05B23/02 301P
G05B9/02 B
(21)【出願番号】P 2019183162
(22)【出願日】2019-10-03
【審査請求日】2022-08-17
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】藤村 亮輔
(72)【発明者】
【氏名】菅沼 拓
(72)【発明者】
【氏名】石原 博巳
【審査官】大古 健一
(56)【参考文献】
【文献】国際公開第2007/086113(WO,A1)
【文献】特開2013-105218(JP,A)
【文献】特開2012-256178(JP,A)
【文献】国際公開第2014/097379(WO,A1)
【文献】特開2018-152032(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 23/00 -23/02
(57)【特許請求の範囲】
【請求項1】
制御システムであって、
コントローラで実行されるユーザプログラムを開発するためのサポート装置と、
前記コントローラが保持する情報を参照して監視操作画面を提供する表示装置とを備え、
前記コントローラは、セーフティコントローラを含み、
前記サポート装置は、
前記ユーザプログラムにおいて定義される出力信号と1または複数の入力信号との関係を抽出して入出力対応情報を生成する生成手段と、
前記入出力対応情報または前記入出力対応情報を反映した画面データを前記表示装置へ送信する送信手段とを備え、
前記表示装置は、前記入出力対応情報または前記入出力対応情報を反映した画面データに基づいて、前記コントローラが保持する入力信号および出力信号の値を前記コントローラから取得して、指定された出力信号および対応付けられる1または複数の入力信号の現在値を示す監視操作画面を提供
し、
前記入出力対応情報は、前記セーフティコントローラで実行されるユーザプログラムとの同一性を示すセーフティ署名を含む、制御システム。
【請求項2】
前記入出力対応情報は、前記入力信号および前記出力信号の各値を参照するためのアドレスと、前記出力信号に関連付けられる1または複数の入力信号を特定するための情報とを含む、請求項1に記載の制御システム。
【請求項3】
前記表示装置は、前記入出力対応情報に基づいて、前記監視操作画面を生成する画面生成手段を備える、請求項1または2に記載の制御システム。
【請求項4】
前記送信手段は、前記表示装置において任意の監視操作画面を提供するための画面データに加えて、前記入出力対応情報を送信する、請求項1~3のいずれか1項に記載の制御システム。
【請求項5】
前記送信手段が前記入出力対応情報を反映した画面データを前記表示装置へ送信する場合に、前記入出力対応情報を反映した画面データは、前記入出力対応情報に基づいて生成された、任意の指定された出力信号に対応付けられる1または複数の入力信号の現在値を示すように構成されている、請求項1~4のいずれか1項に記載の制御システム。
【請求項6】
前記生成手段は、前記ユーザプログラムに含まれる出力信号の各々について、当該ユーザプログラムをさかのぼることで、当該出力信号の値を決定する1または複数の入力信号を特定する、請求項1~
5のいずれか1項に記載の制御システム。
【請求項7】
通信スレーブとして機能するコントローラは、通信マスタとして機能するコントローラを介してデータを遣り取りしており、
前記表示装置は、前記通信マスタとして機能するコントローラを介して、前記通信スレーブとして機能するコントローラが保持する入力信号および出力信号の値を参照する、請求項1~
6のいずれか1項に記載の制御システム。
【請求項8】
コントローラで実行されるユーザプログラムを開発するためのサポート装置であって、前記コントローラには、当該コントローラが保持する情報を参照して監視操作画面を提供する表示装置が接続されており、
前記コントローラは、セーフティコントローラを含み、
前記サポート装置は、
前記ユーザプログラムにおいて定義される出力信号と1または複数の入力信号との関係を抽出して入出力対応情報を生成する生成手段と、
前記入出力対応情報または前記入出力対応情報を反映した画面データを前記表示装置へ送信する送信手段とを備え、
前記表示装置は、前記入出力対応情報または前記入出力対応情報を反映した画面データに基づいて、前記コントローラが保持する入力信号および出力信号の値を前記コントローラから取得して、指定された出力信号および対応付けられる1または複数の入力信号の現在値を示す監視操作画面を提供
し、
前記入出力対応情報は、前記セーフティコントローラで実行されるユーザプログラムとの同一性を示すセーフティ署名を含む、サポート装置。
【請求項9】
コントローラで実行されるユーザプログラムを開発するためのサポートプログラムであって、前記コントローラには、当該コントローラが保持する情報を参照して監視操作画面を提供する表示装置が接続されており、
前記コントローラは、セーフティコントローラを含み、
前記サポートプログラムは、コンピュータに、
前記ユーザプログラムにおいて定義される出力信号と1または複数の入力信号との関係を抽出して入出力対応情報を生成するステップと、
前記入出力対応情報または前記入出力対応情報を反映した画面データを前記表示装置へ送信するステップとを実行させ、
前記表示装置は、前記入出力対応情報または前記入出力対応情報を反映した画面データに基づいて、前記コントローラが保持する入力信号および出力信号の値を前記コントローラから取得して、指定された出力信号および対応付けられる1または複数の入力信号の現在値を示す監視操作画面を提供
し、
前記入出力対応情報は、前記セーフティコントローラで実行されるユーザプログラムとの同一性を示すセーフティ署名を含む、サポートプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御システム、サポート装置およびサポートプログラムに関する。
【背景技術】
【0002】
PLC(プログラマブルコントローラ)やセーフティコントローラなどの制御装置では、ユーザプログラムにより規定される制御ロジックに従って、1または複数の入力信号から1または複数の出力信号の値がサイクリックに決定される。
【0003】
例えば、特開2017-167653号公報(特許文献1)および特開2018-151866号公報(特許文献2)は、1または複数の入力信号と1または複数の出力信号との関係を、解析および評価するような技術を開示する。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2017-167653号公報
【文献】特開2018-151866号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述の特許文献1および特許文献2に開示される技術は、典型的には、サポート装置と称される情報処理装置で実行される。設備の稼動中においては、制御装置にはサポート装置が接続されていないことも多い。
【0006】
設備の稼動中において意図しないシステム停止が発生したときに、その原因を究明するためにサポート装置を接続するのは手間であり、原因究明が遅れることになる。このような意図しないシステム停止は、例えば、ライトカーテンの投受光範囲に異物(虫や加工中の金属片など)が入って異常と誤判断されることや、機器の故障などによって生じ得る。
【0007】
そのため、意図しないシステム停止が発生した場合の原因究明を迅速化できるソリューションが要望されている。
【課題を解決するための手段】
【0008】
本発明の一実施形態に従う制御システムは、コントローラで実行されるユーザプログラムを開発するためのサポート装置と、コントローラが保持する情報を参照して監視操作画面を提供する表示装置とを含む。サポート装置は、ユーザプログラムにおいて定義される出力信号と1または複数の入力信号との関係を抽出して入出力対応情報を生成する生成手段と、入出力対応情報または入出力対応情報を反映した画面データを表示装置へ送信する送信手段とを含む。表示装置は、入出力対応情報または入出力対応情報を反映した画面データに基づいて、コントローラが保持する入力信号および出力信号の値を参照して、指定された出力信号および対応付けられる1または複数の入力信号の現在値を示す監視操作画面を提供する。
【0009】
この構成によれば、サポート装置をコントローラに接続することなく、表示装置から提供される監視操作画面を参照することで、意図しないシステム停止が発生した場合の原因究明を行うための情報を容易かつ迅速に取得できる。
【0010】
入出力対応情報は、入力信号および出力信号の各値を参照するためのアドレスと、出力信号に関連付けられる1または複数の入力信号を特定するための情報とを含ようにしてもよい。この構成によれば、表示装置は、各出力信号に対応付けられる入力信号を一意に特定できるとともに、入力信号および出力信号の各値を取得する先を一意に特定できる。
【0011】
表示装置は、入出力対応情報に基づいて、監視操作画面を生成する画面生成手段を含んでいてもよい。この構成によれば、入出力対応情報を表示装置に送信することで監視操作画面が生成されるので、監視操作画面の作成に係る手間を低減できる。
【0012】
送信手段は、表示装置において任意の監視操作画面を提供するための画面データに加えて、入出力対応情報を送信するようにしてもよい。この構成によれば、画面データを表示装置に送信する手続きに併せて入出力対応情報が表示装置に送信されるので、操作者の手間を増加させることがない。
【0013】
入出力対応情報を反映した画面データは、入出力対応情報に基づいて生成された、任意の指定された出力信号に対応付けられる1または複数の入力信号の現在値を示すように構成されていてもよい。この構成によれば、入出力対応情報に基づいて生成された画面データが表示装置に送信されるので、監視操作画面を生成する処理を省略できるので、表示に係る処理を高速化できる。
【0014】
コントローラは、セーフティコントローラを含み、入出力対応情報は、セーフティコントローラで実行されるユーザプログラムとの同一性を示すセーフティ署名を含んでいてもよい。この構成によれば、セーフティコントローラに要求される要件を満たすことができる。
【0015】
生成手段は、ユーザプログラムに含まれる出力信号の各々について、当該ユーザプログラムをさかのぼることで、当該出力信号の値を決定する1または複数の入力信号を特定するようにしてもよい。この構成によれば、ユーザプログラムに含まれる、出力信号と1または複数の入力信号との対応関係を容易に特定できる。
【0016】
通信スレーブとして機能するコントローラは、通信マスタとして機能するコントローラを介してデータを遣り取りしており、表示装置は、通信マスタとして機能するコントローラを介して、通信スレーブとして機能するコントローラが保持する入力信号および出力信号の値を参照するようにしてもよい。この構成によれば、通信マスタおよび通信スレーブからなる制御システムにおいても、監視操作画面を提供できる。
【0017】
本発明の別の一実施形態に従えば、コントローラで実行されるユーザプログラムを開発するためのサポート装置が提供される。コントローラには、当該コントローラが保持する情報を参照して監視操作画面を提供する表示装置が接続されている。サポート装置は、ユーザプログラムにおいて定義される出力信号と1または複数の入力信号との関係を抽出して入出力対応情報を生成する生成手段と、入出力対応情報または入出力対応情報を反映した画面データを表示装置へ送信する送信手段とを含む。表示装置は、入出力対応情報または入出力対応情報を反映した画面データに基づいて、コントローラが保持する入力信号および出力信号の値を参照して、指定された出力信号および対応付けられる1または複数の入力信号の現在値を示す監視操作画面を提供する。
【0018】
本発明のさらに別の一実施形態に従えば、コントローラで実行されるユーザプログラムを開発するためのサポートプログラムが提供される。コントローラには、当該コントローラが保持する情報を参照して監視操作画面を提供する表示装置が接続されている。サポートプログラムは、コンピュータに、ユーザプログラムにおいて定義される出力信号と1または複数の入力信号との関係を抽出して入出力対応情報を生成するステップと、入出力対応情報または入出力対応情報を反映した画面データを表示装置へ送信するステップとを実行させる。表示装置は、入出力対応情報または入出力対応情報を反映した画面データに基づいて、コントローラが保持する入力信号および出力信号の値を参照して、指定された出力信号および対応付けられる1または複数の入力信号の現在値を示す監視操作画面を提供する。
【発明の効果】
【0019】
本発明によれば、意図しないシステム停止が発生した場合の原因究明を迅速化できるソリューションを実現できる。
【図面の簡単な説明】
【0020】
【
図1】本発明が適用される場面の一例を示す模式図である。
【
図2】本実施の形態に係る制御システムの構成例を示す模式図である。
【
図3】本実施の形態に係る制御システムを構成する標準コントローラのハードウェア構成例を示す模式図である。
【
図4】本実施の形態に係る制御システムを構成するセーフティコントローラのハードウェア構成例を示す模式図である。
【
図5】本実施の形態に係る制御システムを構成するセーフティスレーブカプラのハードウェア構成例を示す模式図である。
【
図6】本実施の形態に係る制御システムを構成するセーフティドライバおよびサーボモータのハードウェア構成例を示す模式図である。
【
図7】本実施の形態に係る制御システムを構成する表示装置のハードウェア構成例を示す模式図である。
【
図8】本実施の形態に係る制御システムを構成するサポート装置のハードウェア構成例を示す模式図である。
【
図9】制御システムにおいて生じ得る課題について説明するための図である。
【
図10】本実施の形態に係る制御システムにおける解決手段を概略する模式図である。
【
図11】本実施の形態に係る制御システムが解析対象とするプログラムの一例を示す図である。
【
図12】本実施の形態に係る制御システムの表示装置が提供するモニタ画面例を示す図である。
【
図13】本実施の形態に係る制御システムの表示装置が提供するモニタ画面例を示す図である。
【
図14】本実施の形態に係る制御システムにおいて用いられる入出力対応情報の一例を示す図である。
【
図15】本実施の形態に係る制御システムにおけるデータ転送の処理を説明するための模式図である。
【
図16】本実施の形態に係る制御システムにおける入出力対応情報の生成に係る処理手順を示すフローチャートである。
【
図17】本実施の形態に係る制御システムにおける入出力対応情報の転送に係る処理手順を示すフローチャートである。
【
図18】本実施の形態に係る制御システムにおける入出力対応情報を利用したモニタ画面の提供に係る処理手順を示すフローチャートである。
【
図19】本実施の形態に係る制御システムにおける機能分担の一例を示す図である。
【
図20】本実施の形態の変形例に係る制御システムの構成例を示す模式図である。
【発明を実施するための形態】
【0021】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0022】
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
【0023】
図1は、本発明が適用される場面の一例を示す模式図である。
図1を参照して、制御システム1は、コントローラの一例として、標準コントローラ100およびセーフティコントローラ200を含む。標準コントローラ100およびセーフティコントローラ200では、ユーザプログラムが実行される。
【0024】
本明細書において「ユーザプログラム」は、コントローラで実行される制御演算(制御ロジック)を規定する命令群であり、制御対象に応じて任意に作成される。以下の説明においては、標準コントローラ100で実行されるユーザプログラムを標準制御プログラムと称し、セーフティコントローラ200で実行されるユーザプログラムをセーフティプログラムとも称す。制御システム1は、これらのユーザプログラムを開発するためのサポート装置600を含む。
【0025】
制御システム1は、コントローラが保持する情報を参照して監視操作画面を提供する表示装置500をさらに含む。
【0026】
本明細書において「監視操作画面」は、ユーザに対してコントローラが保持する情報を含む制御対象の状態などを提示するとともに、ユーザ操作を受け付けることが可能なユーザインターフェイスを意味する。
【0027】
本適用例において、サポート装置600は、ユーザプログラムにおいて定義される出力信号と1または複数の入力信号との関係を抽出して入出力対応情報570を生成する生成処理を実行する。また、サポート装置600は、入出力対応情報570または入出力対応情報570を反映した画面データを表示装置500へ送信する送信処理を実行する。
【0028】
表示装置500は、入出力対応情報570または入出力対応情報570を反映した画面データに基づいて、コントローラ(標準コントローラ100および/またはセーフティコントローラ200)が保持する入力信号および出力信号の値を参照して、指定された出力信号および対応付けられる1または複数の入力信号の現在値を示す監視操作画面を提供する。
【0029】
このような構成を採用することで、意図しないシステム停止が発生した場合でも、サポート装置600を用いることなく、表示装置500に提示される監視操作画面を参照することで、そのシステム停止の原因(例えば、いずれかの入力信号の値が正常ではないなど)を容易かつ迅速に特定できる。
【0030】
本明細書において、「入力信号」は、コントローラと直接的またはネットワーク経由で接続された入力ユニットに制御対象などから入力される信号を包含する。入力信号としては、例えば、光電センサなどにより検出されるON/OFF信号(デジタル入力)、温度センサなどにより検出される物理信号(アナログ入力)、ならびに、パルスエンコーダなどが発生するパルス信号(パルス入力)などが挙げられる。以下の実施の形態においては、変数プログラミング環境でユーザプログラムを開発する場合を前提として説明するので、入力信号の各値を示す「入力変数」を「入力信号」と実質的に等価なものとして扱う。
【0031】
本明細書において、「出力信号」は、コントローラと直接的またはネットワーク経由で接続された出力ユニットから出力される信号を包含する。出力信号としては、例えば、リレーなどを駆動するためのON/OFF(デジタル出力)、サーボモータの回転速度などを指示する速度指令(アナログ出力)、ならびに、ステッピングモータの移動量などを指示する変位指令(パルス出力)などが挙げられる。以下の実施の形態においては、変数プログラミング環境でユーザプログラムを開発する場合を前提として説明するので、出力の各値を示す「出力変数」を「出力信号」と実質的に等価なものとして扱う。
【0032】
<B.制御システム1>
次に、本実施の形態に係る制御システム1の構成例について説明する。
図2は、本実施の形態に係る制御システム1の構成例を示す模式図である。
【0033】
図2を参照して、制御システム1は、主として、標準コントローラ100、ならびに、標準コントローラ100とフィールドネットワーク2を介して接続されるセーフティコントローラ200、セーフティスレーブカプラ300、および1または複数のセーフティドライバ400を含む。
【0034】
フィールドネットワーク2のプロトコルの一例として、EtherCAT(登録商標)を採用してもよい。
【0035】
標準コントローラ100は、予め作成された標準制御プログラムに従って、任意の制御対象に対する標準制御を実行する。セーフティコントローラ200は、標準コントローラ100とは独立して、任意の制御対象に対するセーフティ制御を実行する。
【0036】
本明細書において、「標準制御」は、予め定められた要求仕様に沿って、制御対象を制御するための処理の総称である。一方、「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理を総称する。「セーフティ制御」は、IEC 61508などに規定されたセーフティ機能を実現するための要件を満たすように設計される。
【0037】
セーフティスレーブカプラ300は、任意のセーフティデバイス350からの入力信号を受付けてセーフティコントローラ200への提供、および/または、セーフティコントローラ200から任意のセーフティデバイス350への指令の出力が可能になっている。なお、セーフティデバイス350はセーフティコントローラ200と直接接続されることもある。
【0038】
セーフティドライバ400は、電気的に接続されたサーボモータ450を駆動する。セーフティドライバ400は、サーボモータ450の駆動に関するセーフティ機能も有している。
【0039】
標準コントローラ100には、表示装置500および/またはサポート装置600が接続可能になっている。
【0040】
表示装置500は、HMI(Human Machine Interface)やPT(Programmable Terminal)とも称され、コントローラ(標準コントローラ100および/またはセーフティコントローラ200)が保持する情報を参照して監視操作画面を提供するとともに、ユーザ操作に対応する指示を標準コントローラ100へ送出する。
【0041】
サポート装置600は、コントローラ(標準コントローラ100および/またはセーフティコントローラ200)で実行されるユーザプログラム(標準制御プログラム1104および/またはセーフティプログラム2104)を開発する環境を提供する。サポート装置600は、標準コントローラ100および/またはセーフティコントローラ200で実行されるプログラムの作成や変更などに加えて、制御システム1の動作に必要な各種設定をするためのサポート機能を提供してもよい。
【0042】
<C.制御システム1に含まれるデバイスの構成例>
次に制御システム1に含まれるデバイスの構成例について説明する。
【0043】
(c1:標準コントローラ100)
図3は、本実施の形態に係る制御システム1を構成する標準コントローラ100のハードウェア構成例を示す模式図である。
図3を参照して、標準コントローラ100は、プロセッサ102と、メインメモリ104と、ストレージ110と、上位ネットワークコントローラ106と、フィールドネットワークコントローラ108と、USB(Universal Serial Bus)コントローラ120と、メモリカードインターフェイス112と、ローカルバスコントローラ116とを含む。これらのコンポーネントは、プロセッサバス118を介して接続されている。
【0044】
プロセッサ102は、主として、標準制御に係る制御演算を実行する演算処理部に相当し、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ102は、ストレージ110に格納されたプログラム(一例として、システムプログラム1102および標準制御プログラム1104)を読出して、メインメモリ104に展開して実行することで、制御対象に応じた制御演算、および、後述するような各種処理を実現する。
【0045】
メインメモリ104は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ110は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。
【0046】
ストレージ110には、基本的な機能を実現するためのシステムプログラム1102、制御対象に応じて作成された標準制御プログラム1104、および標準コントローラ100での処理を規定するための設定情報1106が格納される。
【0047】
上位ネットワークコントローラ106は、上位ネットワークを介して、任意の情報処理装置との間でデータを遣り取りする。
【0048】
フィールドネットワークコントローラ108は、フィールドネットワーク2を介して任意のデバイスとの間でデータを遣り取りする。
図2に示す構成において、フィールドネットワークコントローラ108は、フィールドネットワーク2の通信マスタとして機能する。
【0049】
USBコントローラ120は、USB接続を介して、サポート装置600などとの間でデータを遣り取りする。
【0050】
メモリカードインターフェイス112は、着脱可能な記憶媒体の一例であるメモリカード114を受付ける。メモリカードインターフェイス112は、メモリカード114に対して任意のデータの読み書きが可能になっている。
【0051】
ローカルバスコントローラ116は、ローカルバスを介して、標準コントローラ100に接続される任意のユニットとの間でデータを遣り取りする。
【0052】
(c2:セーフティコントローラ200)
図4は、本実施の形態に係る制御システム1を構成するセーフティコントローラ200のハードウェア構成例を示す模式図である。
図4を参照して、セーフティコントローラ200は、プロセッサ202と、メインメモリ204と、ストレージ210と、フィールドネットワークコントローラ208と、USBコントローラ220と、セーフティローカルバスコントローラ216とを含む。これらのコンポーネントは、プロセッサバス218を介して接続されている。
【0053】
プロセッサ202は、主として、セーフティ制御に係る制御演算を実行する演算処理部に相当し、CPUやGPUなどで構成される。
【0054】
メインメモリ204およびは、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ210は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。
【0055】
ストレージ210には、基本的な機能を実現するためのシステムプログラム2102、要求されるセーフティ機能に応じた作成されたセーフティプログラム2104、およびセーフティコントローラ200での処理を規定するための設定情報2106が格納される。
【0056】
フィールドネットワークコントローラ208は、フィールドネットワーク2を介して、任意のデバイスとの間でデータを遣り取りする。
図2に示す構成において、フィールドネットワークコントローラ208は、フィールドネットワーク2の通信スレーブとして機能する。
【0057】
USBコントローラ220は、USB接続を介して、サポート装置600などの情報処理装置との間でデータを遣り取りする。
【0058】
セーフティローカルバスコントローラ216は、セーフティローカルバスを介して、セーフティコントローラ200に接続される任意のセーフティIOユニット230との間でデータを遣り取りする。
【0059】
(c3:セーフティスレーブカプラ300)
図5は、本実施の形態に係る制御システム1を構成するセーフティスレーブカプラ300のハードウェア構成例を示す模式図である。
図5を参照して、セーフティスレーブカプラ300は、プロセッサ302と、メインメモリ304と、ストレージ310と、フィールドネットワークコントローラ308と、セーフティローカルバスコントローラ316とを含む。これらのコンポーネントは、プロセッサバス318を介して接続されている。
【0060】
プロセッサ302は、主として、セーフティスレーブカプラ300を動作させるための制御演算を実行する演算処理部に相当し、CPUやGPUなどで構成される。
【0061】
メインメモリ304およびは、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ310は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。
【0062】
ストレージ310には、基本的な機能を実現するためのシステムプログラム3102およびセーフティスレーブカプラ300での処理を規定するための設定情報3106が格納される。
【0063】
フィールドネットワークコントローラ308は、フィールドネットワーク2を介して、任意のデバイスとの間でデータを遣り取りする。
図2に示す構成において、フィールドネットワークコントローラ308は、フィールドネットワーク2の通信スレーブとして機能する。
【0064】
セーフティローカルバスコントローラ316は、セーフティローカルバスを介して、セーフティスレーブカプラ300に接続される任意のセーフティIOユニット330との間でデータを遣り取りする。
【0065】
(c4:セーフティドライバ400およびサーボモータ450)
図6は、本実施の形態に係る制御システム1を構成するセーフティドライバ400およびサーボモータ450のハードウェア構成例を示す模式図である。
図6を参照して、セーフティドライバ400は、フィールドネットワークコントローラ402と、制御部410と、ドライブ回路430と、フィードバック受信回路432とを含む。
【0066】
制御部410は、セーフティドライバ400を動作させるために必要な演算処理を実行する。一例として、制御部410は、プロセッサ412,414と、メインメモリ416と、ストレージ420とを含む。プロセッサ412は、サーボモータ450を駆動するための制御演算を主として実行し、プロセッサ414は、サーボモータ450に係るセーフティ機能を提供するための制御演算を主として実行する。プロセッサ412,414は、いずれもCPUなどで構成される。
図6の構成に限らず、単一のプロセッサで実現する構成を採用してもよい。
【0067】
メインメモリ416は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ420は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。
【0068】
ストレージ420には、サーボ制御を実現するためのサーボ制御プログラム4202、モーションセーフティ機能を実現するためのモーションセーフティプログラム4204、およびセーフティドライバ400での処理を規定するための設定情報4206が格納される。
【0069】
ドライブ回路430は、コンバータ回路およびインバータ回路などを含み、制御部410からの指令に従って、指定された電圧・電流・位相の電力を生成して、サーボモータ450へ供給する。
【0070】
フィードバック受信回路432は、サーボモータ450からのフィードバック信号を受信して、その受信結果を制御部410へ出力する。
【0071】
サーボモータ450は、典型的には、三相交流モータ452および三相交流モータ452の回転軸に取付けられたエンコーダ454を含む。
【0072】
(c5:表示装置500)
図7は、本実施の形態に係る制御システム1を構成する表示装置500のハードウェア構成例を示す模式図である。表示装置500は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いて実現される。
【0073】
図7を参照して、表示装置500は、プロセッサ502と、メインメモリ504と、入力部506と、表示部508と、ストレージ510と、メモリカードインターフェイス512と、通信コントローラ520とを含む。これらのコンポーネントは、プロセッサバス518を介して接続されている。
【0074】
プロセッサ502は、CPUやGPUなどで構成され、ストレージ510に格納されたプログラム(一例として、OS(Operating System)5102および画面生成プログラム5104)を読出して、メインメモリ504に展開して実行することで、表示や監視に係る処理を実現する。さらに、ストレージ510には、画面データ5106および入出力対応情報570(詳細は後述する)も格納される。
【0075】
メインメモリ504は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ510は、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。
【0076】
ストレージ510には、基本的な機能を実現するためのOS5102、および、表示装置500としての機能を提供するための画面データ5106が格納される。
【0077】
入力部506は、典型的には、タッチパネルなどで構成され、ユーザ操作を受付ける。入力部506としては、キーボードやマウスなどを採用してもよい。表示部508は、ディスプレイや各種インジケータなどで構成され、プロセッサ502からの処理結果などを出力する。
【0078】
メモリカードインターフェイス512は、着脱可能な記憶媒体の一例であるメモリカード514を受付ける。メモリカードインターフェイス512は、メモリカード514に対して任意のデータの読み書きが可能になっている。
【0079】
通信コントローラ520は、任意のローカル通信を介して、標準コントローラ100などとの間のデータを遣り取りする。
【0080】
(c6:サポート装置600)
図8は、本実施の形態に係る制御システム1を構成するサポート装置600のハードウェア構成例を示す模式図である。サポート装置600は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いて実現される。
【0081】
図8を参照して、サポート装置600は、プロセッサ602と、メインメモリ604と、入力部606と、出力部608と、ストレージ610と、光学ドライブ612と、USBコントローラ620とを含む。これらのコンポーネントは、プロセッサバス618を介して接続されている。
【0082】
プロセッサ602は、CPUやGPUなどで構成され、ストレージ610に格納されたプログラム(一例として、OS6102およびサポートプログラム6104)を読出して、メインメモリ604に展開して実行することで、後述するような各種処理を実現する。
【0083】
メインメモリ604は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ610は、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。
【0084】
ストレージ610には、基本的な機能を実現するためのOS6102、サポート装置600としての機能を提供するためのサポートプログラム6104、および開発環境においてユーザにより作成されるプロジェクトデータ6106が格納される。
【0085】
サポート装置600は、制御システム1に含まれる各デバイスに対する設定および各デバイスで実行されるプログラムの作成が統合的に可能な開発環境を提供する。プロジェクトデータ6106は、このような統合的な開発環境によって生成されるデータを含む。典型的には、プロジェクトデータ6106は、標準制御ソースプログラム6108と、標準コントローラ設定情報6110と、セーフティソースプログラム6112と、セーフティコントローラ設定情報6114と、セーフティドライバ設定情報6116とを含む。
【0086】
標準制御ソースプログラム6108は、オブジェクトコードに変換された上で、標準コントローラ100へ送信され、標準制御プログラム1104(
図3参照)として格納される。同様に、標準コントローラ設定情報6110についても標準コントローラ100へ送信され、設定情報1106(
図3参照)として格納される。
【0087】
セーフティソースプログラム6112は、オブジェクトコードに変換された上で、セーフティコントローラ200へ送信され、セーフティプログラム2104(
図3参照)として格納される。同様に、セーフティコントローラ設定情報6114についてもセーフティコントローラ200へ送信され、設定情報2106(
図4参照)として格納される。
【0088】
セーフティドライバ設定情報6116は、セーフティドライバ400へ送信され、設定情報3206(
図5参照)として格納される。
【0089】
入力部606は、キーボードやマウスなどで構成され、ユーザ操作を受付ける。出力部608は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ602からの処理結果などを出力する。
【0090】
USBコントローラ620は、USB接続を介して、標準コントローラ100などとの間のデータを遣り取りする。
【0091】
サポート装置600は、光学ドライブ612を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記憶媒体614(例えば、DVD(Digital Versatile Disc)などの光学記憶媒体)から、その中に格納されたプログラムが読取られてストレージ610などにインストールされる。
【0092】
サポート装置600で実行されるサポートプログラム6104などは、コンピュータ読取可能な記憶媒体614を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置600が提供する機能は、OSが提供するモジュールの一部を利用する形で実現される場合もある。
【0093】
なお、制御システム1が稼動中において、サポート装置600は、標準コントローラ100から取り外されていてもよい。
【0094】
(c7:その他の形態)
図3~8には、1または複数のプロセッサがプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
【0095】
また、標準コントローラ100、セーフティコントローラ200、セーフティスレーブカプラ300の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。さらに、標準コントローラ100に表示装置500やサポート装置600などの機能を統合した構成を採用してもよい。
【0096】
<D.課題>
次に、制御システム1において生じ得る課題について説明する。
【0097】
図9は、制御システム1において生じ得る課題について説明するための図である。
図9を参照して、制御システム1においては、標準コントローラ100が標準制御を実行し、セーフティコントローラ200がセーフティ制御を実行する。
【0098】
セーフティコントローラ200は、セーフティスレーブカプラ300およびセーフティドライバ400との間で、セーフティIOデータを遣り取りする。
【0099】
フィールドネットワーク2のプロトコルとして、EtherCATを採用した場合には、フィールドネットワーク2に接続されたデバイス間は、フィールドネットワーク2をサイクリック伝送する通信フレームを介してデータを共有する。セーフティIOデータを含む通信フレームは、通信マスタである標準コントローラ100を介して、ある通信スレーブから別の通信スレーブへ中継される。このような通信フレームの中継によって、セーフティコントローラ200とセーフティスレーブカプラ300およびセーフティドライバ400との間で、セーフティIOデータを遣り取りできる。
【0100】
より具体的には、FSoE(FailSafe over EtherCAT)と称されるプロトコルを用いて、セーフティコントローラ200とセーフティスレーブカプラ300およびセーフティドライバ400との間で、論理コネクションを形成できる。
【0101】
すなわち、通信スレーブとして機能するコントローラ(セーフティコントローラ200)は、通信マスタとして機能するコントローラ(標準コントローラ100)を介してデータを遣り取りする。
【0102】
例えば、セーフティコントローラ200で実行されるセーフティ制御により、いずれかの制御対象(例えば、任意の生産設備)が停止したとする(セーフティ動作)。
【0103】
このような制御対象が停止した原因を特定する場合には、サポート装置600をセーフティコントローラ200に接続して、サポート装置600で実行されるセーフティプログラム2104の読み出し、および、セーフティコントローラ200が管理するプロセス値(変数値)を確認しながら、停止原因となったセーフティIO(あるいはセーフティデバイス350)を特定して、必要な処置を行う。
【0104】
より具体的な手順としては、ユーザ(保守員)は、サポート装置600をセーフティコントローラ200に接続し、サポート装置600を操作してセーフティプログラム2104を読み出して(プログラムアップロード)、セーフティコントローラ200が管理するプロセス値(変数値)のモニタリング(変数モニタリング)を開始する。セーフティプログラム2104およびプロセス値のモニタ結果から、セーフティ出力をFalseにしているセーフティ入力を特定する。そして、ユーザは、特定されたセーフティ入力に対応するセーフティデバイス350を操作して、セーフティ入力を復旧するための処置を行う。
【0105】
一方で、サポート装置600をセーフティコントローラ200に接続して、原因を特定する操作は、比較的時間を要するので、生産設備の機会損失につながり得る。そのため、原因の特定をより迅速に行えるようにできる仕組みの導入が要望されている。
【0106】
<E.解決手段>
次に、制御システム1において生じ得る上述したような課題に対する解決手段について説明する。
【0107】
本実施の形態に係る制御システム1は、表示装置500において、標準コントローラ100が実行する標準制御、および/または、セーフティコントローラ200が実行するセーフティ制御における制御状態を容易に提示できる仕組みを提供する。サポート装置600は、ユーザプログラム(標準制御プログラム1104および/またはセーフティプログラム2104)において定義される出力信号と1または複数の入力信号との関係を抽出して入出力対応情報570を生成する。
【0108】
より具体的には、サポート装置600は、標準コントローラ100で実行される標準制御プログラム1104、および/または、セーフティコントローラ200で実行されるセーフティプログラム2104の開発環境において、標準制御プログラム1104および/またはセーフティプログラム2104の演算ロジックに基づいて、入出力対応情報570を生成する。そして、サポート装置600は、生成した入出力対応情報570または入出力対応情報570を反映した画面データを表示装置500へ送信する。
【0109】
表示装置500は、入出力対応情報570または入出力対応情報570を反映した画面データに基づいて、コントローラ(標準コントローラ100および/またはセーフティコントローラ200)が保持する入力信号および出力信号の値を参照して、指定された出力信号および対応付けられる1または複数の入力信号の現在値を示す監視操作画面を提供する。より具体的には、表示装置500は、提供された入出力対応情報570を参照して、標準コントローラ100が実行する標準制御、および/または、セーフティコントローラ200が実行するセーフティ制御における制御状態を確認できる画面を提供する。
【0110】
図10は、本実施の形態に係る制御システム1における解決手段を概略する模式図である。
図10を参照して、サポート装置600は、プロジェクトデータ6106に含まれる標準制御ソースプログラム6108および/またはセーフティソースプログラム6112を解析して、モニタ対象のプログラムに含まれる演算ロジックに基づいて、入出力対応情報570を生成する。
【0111】
サポート装置600は、生成された入出力対応情報570に基づいて、制御状態を確認できる画面を提供する。
【0112】
<F.処理例および画面例>
次に、本実施の形態に係る制御システム1における処理例および画面例について説明する。
【0113】
図11は、本実施の形態に係る制御システム1が解析対象とするプログラムの一例を示す図である。
図11には、セーフティソースプログラム6112(セーフティプログラム2104)の一例を示す。
図11に示すセーフティソースプログラム6112には、4つの入力変数641,642,643,644、および、3つの出力変数651,652,653を入出力とする演算ロジックが規定されている。
【0114】
より具体的には、「SafetyRelay1」(安全リレー1の意味)の出力信号を示す出力変数651は、「ESOP1」(非常停止スイッチ1の意味)の入力信号を示す入力変数641と、「ESOP2」(非常停止スイッチ2の意味)の入力信号を示す入力変数642と、「SLC1」(ライトカーテン1の意味)の入力信号を示す入力変数643と、「FromStd1」(標準PLCからの入力1の意味)の入力信号を示す入力変数644との論理積(ANDゲート631)として算出される。
【0115】
また、「SafetyRelay2」(安全リレー2の意味)の出力信号を示す出力変数652は、入力変数641と、入力変数642と、入力変数643との論理積(ANDゲート632)として算出される。
【0116】
また、「ToStd1」(標準PLCへの出力1の意味)の出力信号を示す出力変数653は、入力変数641と、入力変数642との論理積(ANDゲート633)として算出される。
【0117】
図11に示すような演算ロジックに基づいて、入出力対応情報570が決定される。
図12および
図13は、本実施の形態に係る制御システム1の表示装置500が提供するモニタ画面例を示す図である。
【0118】
図12および
図13に示すモニタ画面530は、モニタ対象のプログラムに含まれる出力変数の一例を示す出力変数リスト540と、モニタ対象のプログラムに含まれる入力変数の一覧を示す入力変数リスト550とを含む。
【0119】
出力変数リスト540は、
図11に示す出力変数651,652,653にそれぞれ対応する出力変数エントリ541,542,543を含む。入力変数リスト550は、
図11に示す入力変数641,642,643,644にそれぞれ対応する入力変数エントリ551,552,553,554を含む。
【0120】
モニタ画面530は、モニタ対象になっているプログラムあるいはコントローラを示す対象メッセージ532を含む。ユーザは、対象メッセージ532の内容を参照することで、モニタ対象となっているプログラムあるいはコントローラを特定できる。
【0121】
標準制御プログラム1104および/またはセーフティプログラム2104が表示装置500に提供されている場合には、それらのプログラムの内容を表示するための表示ボタン560が用意されてもよい。
【0122】
図12および
図13においては、出力変数651および出力変数652がいずれもFalseになっている例を示す。
【0123】
まず、出力変数651がFalseになっている原因を特定するために、
図12に示すように、ユーザは、出力変数651に対応する出力変数エントリ541を選択する。すると、入力変数リスト550には、出力変数651の値を決定付ける入力変数641,642,643,644に対応する入力変数エントリ551,552,553,554が表示される。
【0124】
ユーザは、入力変数リスト550の入力変数エントリ553の内容および他とは異なる表示態様を参照することで、入力変数643がFalseになっていることを知る。すなわち、出力変数651がFalseになったのは、入力変数643がFalseになったことが原因であることを知る。
【0125】
次に、出力変数652がFalseになっている原因を特定するために、
図13に示すように、ユーザは、出力変数652に対応する出力変数エントリ542を選択する。すると、入力変数リスト550には、出力変数651の値を決定付ける入力変数641,642,643に対応する入力変数エントリ551,552,553が表示される。
【0126】
ユーザは、入力変数リスト550の入力変数エントリ553の内容および他とは異なる表示態様を参照することで、入力変数643がFalseになっていることを知る。すなわち、出力変数652がFalseになったのは、入力変数643がFalseになったことが原因であることを知る。
【0127】
このように、本実施の形態に係る制御システム1においては、いずれかの制御対象が停止したような場合であっても、サポート装置600を標準コントローラ100および/またはセーフティコントローラ200に接続するまでもなく、表示装置500上で、その原因の特定を行うことができる。
【0128】
このように、本実施の形態に係る制御システム1においては、サポート装置600は、画面データ5106を表示装置500へ転送する際などに、プロジェクトデータ6106に含まれる標準制御ソースプログラム6108および/またはセーフティソースプログラム6112を解析することで生成された入出力対応情報570も転送する。表示装置500は、入出力対応情報570に基づいて、いずれかの制御対象が停止したような場合に、その原因を容易に特定できる。
【0129】
より具体的には、ユーザ(保守員)は、サポート装置600を操作して、表示装置500への画面データ5106の転送時に、標準制御ソースプログラム6108および/またはセーフティソースプログラム6112を解析することで生成された入出力対応情報570も転送する。これにより、表示装置500は、標準コントローラ100および/またはセーフティコントローラ200が管理するプロセス値(変数値)についての情報を提供できるようになる。
【0130】
その後、何らかの問題が発生すると、ユーザ(保守員または設備オペレータ)は、表示装置500を操作して、入出力対応情報570に基づいて生成されたモニタ画面530を表示させる。表示装置500は、ユーザ操作に応じて、入出力対応情報570に含まれる定義に従って、モニタ対象となる各変数の値を対象のコントローラあるいはデバイスから取得する。
【0131】
表示装置500は、予め設定された通信コマンドを使用して、モニタ対象となる各変数の値をコントローラやデバイスから取得する。そして、ユーザは、表示装置500に表示された出力変数と入力変数との関係から、出力信号がFalseとなった原因の入力変数を特定する。最終的に、ユーザは、特定した入力変数に割り当てられている機器などに必要な処置を行って、入力信号を復旧する。
【0132】
<G.入出力対応情報570>
次に、本実施の形態に係る制御システム1において用いられる入出力対応情報570の一例について説明する。
【0133】
図14は、本実施の形態に係る制御システム1において用いられる入出力対応情報570の一例を示す図である。
図14を参照して、入出力対応情報570は、入力変数定義部574と、出力変数定義部575と、関連付定義部576とを含む。さらに、入出力対応情報570は、セーフティ署名571と、対象ノード情報572と、対象ユニット情報573とを含む。
【0134】
セーフティ署名571は、セーフティコントローラ200をモニタ対象とする場合に有効化されるようにしてもよい。セーフティ署名571は、セーフティコントローラ200で実行されるセーフティプログラム2104に改ざんがないことを担保するための情報であり、セーフティコントローラ200で実行されるユーザプログラム(セーフティプログラム2104)との同一性を示す。セーフティプログラム2104の生成時に予め付与されるセーフティ署名と同じものをセーフティ署名571としてもよい。あるいは、セーフティプログラム2104から所定の計算式に従って算出される値(例えば、CRC値)をセーフティ署名571としてもよい。
【0135】
対象ノード情報572および対象ユニット情報573は、モニタ対象とするコントローラを制御システム1において特定するための情報である。これらの情報は、参照アドレスの一部を構成してもよい。対象ノード情報572は、モニタ対象とするコントローラが配置されているフィールドネットワーク2上の位置(ノードアドレス)を特定する。対象ユニット情報573は、モニタ対象とするコントローラを特定するための補助情報であり、対象ノード情報572により指定されたデバイス(複数のユニットで構成される)のうち、モニタ対象のユニットの位置(ユニットアドレス)を特定する。
【0136】
図14に示す例においては、ノードアドレス「4」の位置にあるデバイスのユニットアドレス「1」にあるユニットがモニタ対象であることが規定されている。
【0137】
入力変数定義部574は、数定義5740を含む。入力変数定義部574は、さらに、各変数について、変数名5741と、データ型5742と、コメント5743と、データ位置5744と、オフセット5745と、データ長5746とを含む。これらの要素は、コンマで区切られて入力変数毎に定義される。
【0138】
数定義5740は、「NumInput」で始まり、入出力対応情報570に含まれる入力変数の数を規定する。
図14に示す例では、入力変数が4個であることを示す。
【0139】
変数名5741は、「ESTOP1」などの入力変数の変数名を示す。
データ型5742は、「SAFEBOOL」(セーフティブール型)などの入力変数のデータ型を示す。
【0140】
コメント5743は、「非常停止スイッチ1」などの変数のコメントを示す。
データ位置5744は、「Location=//Unit#1/0x7000:01」などの参照アドレスを示す。データ位置5744は、例えば、対象のコントローラのメモリアドレスなどであってもよい。
【0141】
オフセット5745は、入力変数にアクセスするための補助情報であり、データ位置5744からのオフセットを示す。データ位置5744に通信プロトコルのフレームなどが含まれている場合に、オフセット5745を指定することで、不要なデータを除外できる。
【0142】
データ長5746は、入力変数として読み出すデータの長さを示す。データ長5746は、例えば、ビット数やバイト数を指定する。データ位置5744およびオフセット5745で規定される始点から、データ長5746で規定される長さのデータが読み出される。
【0143】
出力変数定義部575は、数定義5750を含む。出力変数定義部575は、さらに、各変数について、変数名5751と、データ型5752と、コメント5753と、データ位置5754と、オフセット5755と、データ長756とを含む。これらの要素は、コンマで区切られて出力変数毎に定義される。
【0144】
数定義5750は、「NumOutput」で始まり、入出力対応情報570に含まれる出力変数の数を規定する。
図14に示す例では、出力変数が3個であることを示す。
【0145】
変数名5751は、「SafeRelay1」などの出力変数の変数名を示す。
データ型5752は、「SAFEBOOL」(セーフティブール型)などの出力変数のデータ型を示す。
【0146】
コメント5753は、「セーフティリレー1」などの変数のコメントを示す。
データ位置5754は、「Location=//Unit#1/0x6000:02」などの参照アドレスを示す。データ位置5754は、例えば、対象のコントローラのメモリアドレスなどであってもよい。
【0147】
オフセット5755は、出力変数にアクセスするための補助情報であり、データ位置5754からのオフセットを示す。データ位置5754に通信プロトコルのフレームなどが含まれている場合に、オフセット5755を指定することで、フレーム内の特定の位置にデータを書き込むことができる。
【0148】
データ長5756は、出力変数として書き込むデータの長さを示す。データ長5756は、例えば、ビット数やバイト数を指定する。データ位置5754およびオフセット5755で規定される始点から、データ長5756で規定される長さのデータが書き込まれる。
【0149】
関連付定義部576は、「IOMatrix」で始まり、各出力変数に関連付けられる1または複数の入力変数が規定される。より具体的には、関連付定義部576は、各変数について、出力変数名5761と、入力変数数5762と、1または複数の入力変数名5763とを含む。これらの要素は、コンマで区切られて出力変数毎に定義される。
【0150】
出力変数名5761は、対象の出力信号の変数名を規定する。
入力変数数5762は、対象の出力変数に関連付けられる入力変数の数を規定する。入力変数数5762は、対象の出力変数の値を決定する論理積(AND)に入力される入力変数の数を規定する。
【0151】
入力変数名5763は、対象の出力変数に関連付けられる入力変数の変数名が規定される。入力変数名5763に規定される入力変数名は、入力変数定義部574に規定される1または複数の入力変数から選択されることになる。
【0152】
図14に示す入出力対応情報570のデータ構造は一例であり、本明細書に明示的または黙示的に記載された機能を実現できれば、どのようなデータ構造を採用してもよい。
【0153】
上述したように、入出力対応情報570は、入力信号および出力信号の各値を参照するためのアドレス(データ位置5744およびデータ位置5754)と、出力信号に関連付けられる1または複数の入力信号を特定するための情報(関連付定義部576)とを含む。
【0154】
<H.データ転送>
次に、本実施の形態に係る制御システム1におけるデータ転送の処理について説明する。
図15は、本実施の形態に係る制御システム1におけるデータ転送の処理を説明するための模式図である。
図15を参照して、例えば、フィールドネットワーク2のプロトコルとして、EtherCATを採用した場合には、フィールドネットワーク2上を通信フレーム8がサイクリックに巡回転送される。
【0155】
例えば、セーフティデバイス350からセーフティスレーブカプラ300に入力された入力信号を示す入力データは、セーフティデバイス350に到着した通信フレーム8に書き込まれる(データ書き込み)。入力データが書き込まれた通信フレーム8は、標準コントローラ100へ転送され、さらにセーフティコントローラ200へ転送される。セーフティコントローラ200は、到着した通信フレーム8に含まれる入力データを読み込み、セーフティ制御を実行する。
【0156】
このように、標準コントローラ100(フィールドネットワーク2の通信マスタ)を介して通信フレーム8が転送されるため、標準コントローラ100は、セーフティスレーブカプラ300とセーフティコントローラ200との間で遣り取りされるデータを参照することができる(参照可能)。
【0157】
標準コントローラ100に接続された表示装置500からは、標準コントローラ100が管理するプロセス値だけではなく、セーフティスレーブカプラ300とセーフティコントローラ200との間で遣り取りされるプロセス値も参照(アクセス)できる。なお、FSoEにおいては、複数の通信フレーム8を用いて、コマンド・レスポンス方式でデータを遣り取りすることもできる。このような場合であっても、標準コントローラ100で遣り取りされるデータを参照することができる。
【0158】
このように、表示装置500は、通信マスタとして機能するコントローラ(標準コントローラ100)を介して、通信スレーブとして機能するコントローラ(セーフティコントローラ200)が保持する入力信号および出力信号の値を参照できる。
【0159】
<I.処理手順>
次に、本実施の形態に係る制御システム1における処理手順について説明する。
【0160】
(h1:入出力対応情報570の生成)
図16は、本実施の形態に係る制御システム1における入出力対応情報570の生成に係る処理手順を示すフローチャートである。
図16の各ステップは、典型的には、サポート装置600のプロセッサ602がサポートプログラム6104を実行することで実現される。
【0161】
図16を参照して、サポート装置600は、ユーザから対象のプログラム(標準制御ソースプログラム6108および/またはセーフティソースプログラム6112)の選択を受付ける(ステップS100)。サポート装置600は、選択された対象のプログラムがセーフティプログラムであるか否かを判断する(ステップS102)。選択された対象のプログラムがセーフティプログラムであれば(ステップS102においてYES)、サポート装置600は、選択されたセーフティプログラムが妥当性確認済であるか否かを判断する(ステップS104)。選択されたセーフティプログラムが妥当性確認済でなければ(ステップS104においてNO)、以降の処理は中止される。
【0162】
選択された対象のプログラムがセーフティプログラムでなければ(ステップS102においてNO)、あるいは、選択されたセーフティプログラムが妥当性確認済であれば(ステップS104においてYES)、サポート装置600は、対象のプログラムにおいて出力変数としてマッピングされている変数を抽出する(ステップS106)とともに、対象のプログラムにおいて入力変数としてマッピングされている変数を抽出する(ステップS108)。
【0163】
サポート装置600は、ステップS106において抽出された出力変数のうち1つを対象の出力変数として選択する(ステップS110)。サポート装置600は、対象のプログラムにおいて、対象の出力変数の値を最終的に決定している箇所を特定し(ステップS112)、当該特定した箇所から対象のプログラムをさかのぼって、対象の出力変数の値に関連するすべての入力変数を抽出する(ステップS114)。そして、サポート装置600は、ステップS114において抽出したすべての入力変数を対象の出力変数に関連付ける(ステップS116)。
【0164】
続いて、サポート装置600は、ステップS106において抽出された出力変数のすべてについて処理が完了したか否かを判断する(ステップS118)。抽出された出力変数のうち処理が完了していないものが存在していれば(ステップS118においてNO)、サポート装置600は、抽出された出力変数のうち処理が完了していない1つの出力変数を対象の出力変数として選択する(ステップS120)。そして、サポート装置600は、ステップS112以下の処理を繰り返す。
【0165】
ステップS106において抽出された出力変数のすべてについて処理が完了していれば(ステップS118においてYES)、サポート装置600は、各出力変数と当該出力変数に関連付けられた入力変数との一覧を入出力対応情報570として出力する(ステップS122)。そして、入出力対応情報570を生成する処理は終了する。
【0166】
上述したように、サポート装置600は、ユーザプログラム(セーフティプログラム)に含まれる出力信号の各々についてユーザプログラムをさかのぼることで、当該出力信号の値を決定する1または複数の入力信号を特定する。
【0167】
(h2:入出力対応情報570の転送)
図17は、本実施の形態に係る制御システム1における入出力対応情報570の転送に係る処理手順を示すフローチャートである。
図17の各ステップは、典型的には、サポート装置600のプロセッサ602がサポートプログラム6104を実行することで実現される。
【0168】
図17を参照して、サポート装置600は、ユーザから転送対象の画面データ5106の選択を受付ける(ステップS200)。サポート装置600は、選択された転送対象の画面データ5106に加えて、入出力対応情報570が生成されているか否かを判断する(ステップS202)。
【0169】
入出力対応情報570が生成されていなければ(ステップS202においてNO)、サポート装置600は、転送対象の画面データ5106のみをサポート装置600へ転送する(ステップS204)。そして、処理は終了する。
【0170】
入出力対応情報570が生成されていれば(ステップS202においてYES)、サポート装置600は、標準コントローラ100の設定を示す標準コントローラ設定情報6110、および/または、セーフティコントローラ200の設定を示すセーフティコントローラ設定情報6114を参照して、入出力対応情報570に含まれる入力変数および出力変数を取得するための参照先アドレスを決定し(ステップS206)、入出力対応情報570に組み入れる(ステップS208)。
【0171】
そして、サポート装置600は、転送先の表示装置500に入出力対応情報570が既に存在しているか否かを判断する(ステップS210)。転送先の表示装置500に入出力対応情報570が既に存在していれば(ステップS210においてYES)、サポート装置600は、転送先の表示装置500の入出力対応情報570を削除する(ステップS212)。
【0172】
転送先の表示装置500に入出力対応情報570が既に存在していなければ(ステップS210においてNO)、あるいは、入出力対応情報570の削除(ステップS212)に続いて、サポート装置600は、転送対象の画面データ5106および入出力対応情報570を表示装置500へ転送する(ステップS214)。このように、サポート装置600は、表示装置500において任意の監視操作画面を提供するための画面データ5106に加えて、入出力対応情報570を表示装置500へ送信する。そして、処理は終了する。
【0173】
(h3:入出力対応情報570を利用したモニタ画面)
図18は、本実施の形態に係る制御システム1における入出力対応情報570を利用したモニタ画面の提供に係る処理手順を示すフローチャートである。表示装置500は、入出力対応情報570に基づいて監視操作画面を生成する。
図18の各ステップは、典型的には、表示装置500のプロセッサ502が画面生成プログラム5104を実行することで実現される。
【0174】
図18を参照して、表示装置500は、モニタ画面(
図12および
図13など参照)の表示開始が指示されると(ステップS300においてYES)、入出力対応情報570が転送済であるか否かを判断する(ステップS302)。入出力対応情報570が転送済でなければ(ステップS302においてNO)、処理は終了する。
【0175】
入出力対応情報570が転送済であれば(ステップS302においてYES)、表示装置500は、入出力対応情報570を読み込んで(ステップS304)、読み込んだ入出力対応情報570にセーフティ署名が含まれているか否かを判断する(ステップS306)。
【0176】
読み込んだ入出力対応情報570にセーフティ署名が含まれていれば(ステップS306においてYES)、表示装置500は、対象のセーフティコントローラ200からセーフティ署名を取得し(ステップS308)、取得したセーフティ署名が入出力対応情報570のセーフティ署名と一致するか否かを判断する(ステップS310)。取得したセーフティ署名が入出力対応情報570のセーフティ署名と一致しなければ(ステップS310においてNO)、処理は終了する。
【0177】
取得したセーフティ署名が入出力対応情報570のセーフティ署名と一致すれば(ステップS310においてYES)、表示装置500は、読み込んだ入出力対応情報570に基づいて、各出力変数に関連付けられる1または複数の入力変数のリストを内部的に生成する(ステップS312)。
【0178】
そして、表示装置500は、生成したリストに従って、対応する参照アドレスに基づいて、出力変数および入力変数の値をそれぞれ取得し(ステップS314)、選択された出力変数についてのモニタ画面を生成および表示する(ステップS316)。このように、入出力対応情報570を反映した画面データは、入出力対応情報570に基づいて生成された、任意の指定された出力信号に対応付けられる1または複数の入力信号の現在値を示すように構成される。
【0179】
表示装置500は、モニタ画面の表示終了が指示されたか否かを判断する(ステップS318)。モニタ画面の表示終了が指示されなければ(ステップS318においてNO)、ステップS314以下の処理が繰り返し実行される。
【0180】
モニタ画面の表示終了が指示されると(ステップS318においてYES)、表示装置500は、処理を終了する。
【0181】
<J.変形例>
(j1:機能分担)
上述の説明においては、サポート装置600が入出力対応情報570を生成し、生成された入出力対応情報570の格納および入出力対応情報570を利用したモニタ画面の生成は、表示装置500で行われる例を示したが、これに限らず、各機能を適宜実装してもよい。
【0182】
すなわち、(1)入出力対応情報570を生成する機能、(2)生成された入出力対応情報570を格納する機能、(3)入出力対応情報570を利用してモニタ画面を生成する機能、は、制御システム1内の任意のデバイスに配置できる。
【0183】
なお、(2)生成された入出力対応情報570を格納する機能と、(3)入出力対応情報570を利用してモニタ画面を生成する機能とを結合して、入出力対応情報570に含まれる変数値の関連付けの情報を含むモニタ画面を生成してもよい。この場合には、(2)生成された入出力対応情報570を格納する機能の機能は、(3)入出力対応情報570を利用してモニタ画面を生成する機能に吸収されることになる。
【0184】
図19は、本実施の形態に係る制御システム1における機能分担の一例を示す図である。
図19には、No.1~8の8つの機能分担例を示す。
【0185】
No.1の機能分担例は、上述した実施の形態に対応するものである。表示装置500は、入出力対応情報570に基づいてモニタ画面530を生成する。
【0186】
No.2の機能分担例は、入出力対応情報570を表示装置500ではなく、セーフティコントローラ200に格納する形態である。表示装置500は、セーフティコントローラ200から入出力対応情報570を読み出し、読み出した入出力対応情報570に基づいてモニタ画面530を生成する。
【0187】
No.3の機能分担例は、No.2の機能分担例に類似するものであり、入出力対応情報570を表示装置500ではなく、標準コントローラ100に格納する形態である。表示装置500は、標準コントローラ100から入出力対応情報570を読み出し、読み出した入出力対応情報570に基づいてモニタ画面530を生成する。
【0188】
No.4の機能分担例は、標準コントローラ100および表示装置500を一体化した統合コントローラを用いた実装したものである。この機能分担例においては、統合コントローラが入出力対応情報570の格納およびモニタ画面530の生成を担当する。
【0189】
No.5~7の機能分担例は、(2)生成された入出力対応情報570を格納する機能の機能を(3)入出力対応情報570を利用してモニタ画面を生成する機能に吸収した構成に相当する。
【0190】
より具体的には、No.5の機能分担例においては、サポート装置600が入出力対応情報570を生成するとともに、入出力対応情報570を反映した画面データが生成する。表示装置500は、入出力対応情報570を反映した画面データに基づいてモニタ画面530を提供する。
【0191】
また、No.6の機能分担例においては、サポート装置600が入出力対応情報570を生成するとともに、入出力対応情報570を反映した画面データが生成する。統合コントローラは、入出力対応情報570を反映した画面データに基づいてモニタ画面530を提供する。
【0192】
また、No.7の機能分担例においては、表示装置500自身が入出力対応情報570を生成するとともに、入出力対応情報570を反映した画面データが生成する。統合コントローラは、入出力対応情報570を反映した画面データに基づいてモニタ画面530を提供する。
【0193】
No.8の機能分担例においては、セーフティコントローラ200が、入出力対応情報570を生成するとともに、生成した入出力対応情報570を格納する。表示装置500は、セーフティコントローラ200から入出力対応情報570を読み出し、読み出した入出力対応情報570に基づいてモニタ画面530を生成する。
【0194】
なお、
図19に示す機能分担例は一例であり、実現される制御システムに応じて、どのような機能分担を採用してもよい。
【0195】
(j2:フィールドネットワークの追加)
図2には、フィールドネットワーク2を有する制御システム1を示すが、このような制御システム1の構成において、フィールドネットワークが追加された構成においても、上述したようなモニタ画面を提供できる。
【0196】
図20は、本実施の形態の変形例に係る制御システム1Aの構成例を示す模式図である。
図20を参照して、制御システム1Aは、フィールドネットワーク2に加えて、フィールドネットワーク4を有している。標準コントローラ100は、フィールドネットワーク2を介して、1または複数のセーフティIOターミナル700およびロボット800とデータ通信可能になっている。
【0197】
フィールドネットワーク4において採用されるプロトコルは、フィールドネットワーク2において採用されるプロトコルとは同一であってもよいし、異なっていてもよい。異なるプロトコルとしては、例えば、EtherNet/IPなどを採用してもよい。
【0198】
このように、本実施の形態に係るモニタ画面は、任意の制御システムの構成において実現可能である。
【0199】
<K.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
【0200】
[構成1]
制御システム(1)であって、
コントローラ(100,200)で実行されるユーザプログラムを開発するためのサポート装置(600)と、
前記コントローラが保持する情報を参照して監視操作画面を提供する表示装置(500)とを備え、
前記サポート装置は、
前記ユーザプログラムにおいて定義される出力信号と1または複数の入力信号との関係を抽出して入出力対応情報(570)を生成する生成手段(S100~S122)と、
前記入出力対応情報または前記入出力対応情報を反映した画面データを前記表示装置へ送信する送信手段(S200~S214)とを備え、
前記表示装置は、前記入出力対応情報または前記入出力対応情報を反映した画面データに基づいて、前記コントローラが保持する入力信号および出力信号の値を参照して、指定された出力信号および対応付けられる1または複数の入力信号の現在値を示す監視操作画面を提供する(S300~S318)、制御システム。
【0201】
[構成2]
前記入出力対応情報は、前記入力信号および前記出力信号の各値を参照するためのアドレス(5744,5754)と、前記出力信号に関連付けられる1または複数の入力信号を特定するための情報(576)とを含む、構成1に記載の制御システム。
【0202】
[構成3]
前記表示装置は、前記入出力対応情報に基づいて、前記監視操作画面を生成する画面生成手段(S316)を備える、構成1または2に記載の制御システム。
【0203】
[構成4]
前記送信手段は、前記表示装置において任意の監視操作画面を提供するための画面データに加えて、前記入出力対応情報を送信する(S214)、構成1~3のいずれか1項に記載の制御システム。
【0204】
[構成5]
前記入出力対応情報を反映した画面データは、前記入出力対応情報に基づいて生成された、任意の指定された出力信号に対応付けられる1または複数の入力信号の現在値を示すように構成されている、構成1~4のいずれか1項に記載の制御システム。
【0205】
[構成6]
前記コントローラは、セーフティコントローラ(200)を含み、
前記入出力対応情報は、前記セーフティコントローラで実行されるユーザプログラムとの同一性を示すセーフティ署名(571)を含む、構成1~5のいずれか1項に記載の制御システム。
【0206】
[構成7]
前記生成手段は、前記ユーザプログラムに含まれる出力信号の各々について、当該ユーザプログラムをさかのぼることで、当該出力信号の値を決定する1または複数の入力信号を特定する、構成1~6のいずれか1項に記載の制御システム。
【0207】
[構成8]
通信スレーブとして機能するコントローラ(200)は、通信マスタとして機能するコントローラ(100)を介してデータを遣り取りしており、
前記表示装置は、前記通信マスタとして機能するコントローラを介して、前記通信スレーブとして機能するコントローラが保持する入力信号および出力信号の値を参照する、構成1~7のいずれか1項に記載の制御システム。
【0208】
[構成9]
コントローラ(100,200)で実行されるユーザプログラムを開発するためのサポート装置(600)であって、前記コントローラには、当該コントローラが保持する情報を参照して監視操作画面を提供する表示装置(500)が接続されており、
前記サポート装置は、
前記ユーザプログラムにおいて定義される出力信号と1または複数の入力信号との関係を抽出して入出力対応情報(570)を生成する生成手段(S100~S122)と、
前記入出力対応情報または前記入出力対応情報を反映した画面データを前記表示装置へ送信する送信手段(S200~S214)とを備え、
前記表示装置は、前記入出力対応情報または前記入出力対応情報を反映した画面データに基づいて、前記コントローラが保持する入力信号および出力信号の値を参照して、指定された出力信号および対応付けられる1または複数の入力信号の現在値を示す監視操作画面を提供する(S300~S318)、サポート装置。
【0209】
[構成10]
コントローラ(100,200)で実行されるユーザプログラムを開発するためのサポートプログラム(6104)であって、前記コントローラには、当該コントローラが保持する情報を参照して監視操作画面を提供する表示装置(500)が接続されており、
前記サポートプログラムは、コンピュータに、
前記ユーザプログラムにおいて定義される出力信号と1または複数の入力信号との関係を抽出して入出力対応情報(570)を生成するステップ(S100~S122)と、
前記入出力対応情報または前記入出力対応情報を反映した画面データを前記表示装置へ送信するステップ(S200~S214)とを実行させ、
前記表示装置は、前記入出力対応情報または前記入出力対応情報を反映した画面データに基づいて、前記コントローラが保持する入力信号および出力信号の値を参照して、指定された出力信号および対応付けられる1または複数の入力信号の現在値を示す監視操作画面を提供する(S300~S318)、サポートプログラム。
【0210】
<L.利点>
本実施の形態に係る制御システム1によれば、例えば、安全機能により生産設備の装置など停止した場合に、停止した出力信号に関連付けられている入力信号の一覧、および、それらの現在値を表示装置上に提示できる。このような提示される情報を参照することで、設備停止の原因となった入力信号を容易に特定できる。基本的には、表示装置のみで原因究明ができるので、サポート装置などをコントローラに接続する必要がなく、迅速な復旧を実現できる。
【0211】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0212】
1,1A 制御システム、2,4 フィールドネットワーク、8 通信フレーム、100 標準コントローラ、102,202,302,412,414,502,602 プロセッサ、104,204,304,416,504,604 メインメモリ、106 上位ネットワークコントローラ、108,208,308,402 フィールドネットワークコントローラ、110,210,310,420,510,610 ストレージ、112,512 メモリカードインターフェイス、114,514 メモリカード、116 ローカルバスコントローラ、118,218,318,518,618 プロセッサバス、120,220,620 コントローラ、200 セーフティコントローラ、216,316 セーフティローカルバスコントローラ、230,330 ユニット、300 セーフティスレーブカプラ、350 セーフティデバイス、400 セーフティドライバ、410 制御部、430 ドライブ回路、432 フィードバック受信回路、450 サーボモータ、452 三相交流モータ、454 エンコーダ、500 表示装置、506,606 入力部、508 表示部、520 通信コントローラ、530 モニタ画面、532 対象メッセージ、540 出力変数リスト、541,542,543 出力変数エントリ、550 入力変数リスト、551,552,553,554 入力変数エントリ、560 表示ボタン、570 入出力対応情報、571 セーフティ署名、572 対象ノード情報、573 対象ユニット情報、574 入力変数定義部、575 出力変数定義部、576 関連付定義部、600 サポート装置、608 出力部、612 光学ドライブ、614 記憶媒体、631,632,633 ゲート、641,642,643,644 入力変数、651,652,653 出力変数、700 ターミナル、756,5746,5756 データ長、800 ロボット、1102,2102,3102 システムプログラム、1104 標準制御プログラム、1106,2106,3106,3206,4206 設定情報、2104 セーフティプログラム、4202 サーボ制御プログラム、4204 モーションセーフティプログラム、5104 画面生成プログラム、5106 画面データ、5740,5750 数定義、5741,5751 変数名、5742,5752 データ型、5743,5753 コメント、5744,5754 データ位置、5745,5755 オフセット、5761 出力変数名、5762 入力変数数、5763 入力変数名、6104 サポートプログラム、6106 プロジェクトデータ、6108 標準制御ソースプログラム、6110 標準コントローラ設定情報、6112 セーフティソースプログラム、6114 セーフティコントローラ設定情報、6116 セーフティドライバ設定情報。