(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-18
(45)【発行日】2023-12-26
(54)【発明の名称】制御システム、制御システムの通信制御方法、および制御装置
(51)【国際特許分類】
G05B 19/05 20060101AFI20231219BHJP
H04L 7/00 20060101ALI20231219BHJP
【FI】
G05B19/05 J
H04L7/00 990
(21)【出願番号】P 2019200175
(22)【出願日】2019-11-01
【審査請求日】2022-09-07
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】植田 貴雅
【審査官】西井 香織
(56)【参考文献】
【文献】特開2009-153311(JP,A)
【文献】国際公開第2011/043341(WO,A1)
【文献】特開2019-146060(JP,A)
【文献】特開2012-023654(JP,A)
【文献】特開2016-152488(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
H04L 7/00
(57)【特許請求の範囲】
【請求項1】
通信マスタと、
前記通信マスタとネットワーク接続される1または複数の通信スレーブとを備え、
前記通信マスタおよび前記1または複数の通信スレーブの各々は、同期カウンタを有しており、
前記通信マスタは、前記通信マスタが有している同期カウンタのカウンタ値を示す第1の情報のネットワークを介した前記1または複数の通信スレーブへの送信を繰り返す手段を含み、
前記1または複数の通信スレーブの各々は、前記通信マスタからの前記第1の情報を受信すると、当該受信した第1の情報に基づいて各自の同期カウンタのカウンタ値を更新する手段を含み、
前記通信マスタは、前記1または複数の通信スレーブ毎に送信した前記第1の情報の総数を管理するとともに、通信スレーブ毎の前記第1の情報の送信数に基づいて、通信スレーブ毎の前記通信マスタに対する同期精度を推定する手段を含
み、
前記推定する手段は、前記第1の情報の送信数が多いほど、同期精度が高いと評価する、制御システム。
【請求項2】
前記通信マスタは、ユーザプログラムを実行可能な制御装置であり、
前記ユーザプログラムにおいて、通信スレーブ毎に推定された同期精度が参照可能になっている、請求項1に記載の制御システム。
【請求項3】
通信スレーブ毎に推定された同期精度は、構造体変数として参照可能になっている、請求項2に記載の制御システム。
【請求項4】
前記ユーザプログラムにおいて、予め定められた複数の通信スレーブ全体における同期精度が参照可能になっている、請求項2に記載の制御システム。
【請求項5】
前記予め定められた複数の通信スレーブ全体における同期精度は、ファンクションブロック命令から出力される、請求項4に記載の制御システム。
【請求項6】
前記通信マスタは、予め定められた送信数に対する前記第1の情報の送信数に基づいて、対応する通信スレーブの同期精度を決定する、請求項1~5のいずれか1項に記載の制御システム。
【請求項7】
前記通信マスタは、任意の通信スレーブが前記ネットワークに新たに接続されると、当該通信スレーブについての前記第1の情報の送信数をリセットする、請求項1~6のいずれか1項に記載の制御システム。
【請求項8】
前記1または複数の通信スレーブの各々は、前記通信マスタから受信した第1の情報と、予め取得された伝搬遅延時間とに基づいて、同期カウンタのカウンタ値を更新する、請求項1~7のいずれか1項に記載の制御システム。
【請求項9】
通信マスタと前記通信マスタとネットワーク接続される1または複数の通信スレーブとを備える制御システムの通信制御方法であって、前記通信マスタおよび前記1または複数の通信スレーブの各々は、同期カウンタを有しており、前記通信制御方法は、
前記通信マスタが、前記通信マスタが有している同期カウンタのカウンタ値を示す第1の情報のネットワークを介した前記1または複数の通信スレーブへの送信を繰り返すステップと、
前記1または複数の通信スレーブの各々が、前記通信マスタからの前記第1の情報を受信すると、当該受信した第1の情報に基づいて各自の同期カウンタのカウンタ値を更新するステップと、
前記通信マスタが、前記1または複数の通信スレーブ毎に送信した前記第1の情報の総数を管理するステップと、
前記通信マスタが、通信スレーブ毎の前記第1の情報の送信数に基づいて、通信スレーブ毎の前記通信マスタに対する同期精度を推定するステップとを備え
、
前記推定するステップにおいて、前記第1の情報の送信数が多いほど、同期精度が高いと評価される、制御システムの通信制御方法。
【請求項10】
1または複数の通信スレーブとネットワーク接続される通信マスタとして機能する制御装置であって、
同期カウンタと、
前記制御装置が有している同期カウンタのカウンタ値を示す第1の情報のネットワークを介した前記1または複数の通信スレーブへの送信を繰り返す手段とを備え、前記1または複数の通信スレーブの各々は、前記第1の情報を受信すると、当該受信した第1の情報に基づいて各自の同期カウンタのカウンタ値を更新し、
前記1または複数の通信スレーブ毎に送信した前記第1の情報の総数を管理するとともに、通信スレーブ毎の前記第1の情報の送信数に基づいて、通信スレーブ毎の前記通信マスタに対する同期精度を推定する手段を備え
、
前記推定する手段は、前記第1の情報の送信数が多いほど、同期精度が高いと評価する、制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワーク接続された複数のデバイス間で同期可能な制御システム、その制御システムの通信制御方法、およびその制御システムを構成する制御装置に関する。
【背景技術】
【0002】
様々な生産現場において、PLC(プログラマブルコントローラ)などの制御装置を用いたFA(Factory Automation)技術が広く普及している。近年の情報通信技術(ICT:Information and Communication Technology)の発展に伴って、このようなFA分野における制御装置もますます高性能化および高機能化している。
【0003】
このような制御装置には、1または複数のIO(Input/Output)装置がネットワーク接続されることもある。制御性能を高めるために、ネットワーク接続されるIO装置の間では同期した制御を可能にする構成が提供される。
【0004】
例えば、特開2018-060482号公報(特許文献1)は、通信スレーブ回路の送受信コントローラが通信マスタ回路の送受信コントローラと同期したカウンタを有しており、この同期したカウンタに従って、ローカルネットワーク上でのフレーム転送のタイミングなどを管理する構成を開示する。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
特開2018-060482号公報(特許文献1)に開示されるような構成においては、通信マスタとして機能する装置から同期を確立するための情報(例えば、現在の通信マスタのカウンタ値など)を送信し、送信される情報に基づいて通信スレーブとして機能する装置がカウンタなどを適宜調整する。そのため、ネットワークに接続されてから所定の精度で同期を確立できるためには、多数の情報を受信する必要があり、所定の時間が必要になる。
【0007】
このような同期を確立する過程において、通信マスタは、各通信スレーブがどの程度の精度で同期されているのかを確認できない。そのため、通信マスタは、いずれのタイミングで通信スレーブが高精度な制御を実現できるようになるのかを知ることができない。
【0008】
本発明は、上述したような要求を満たすことができる制御システムなどを提供することを一つの目的としている。
【課題を解決するための手段】
【0009】
本発明の一例に従う制御システムは、通信マスタと、通信マスタとネットワーク接続される1または複数の通信スレーブとを含む。通信マスタおよび1または複数の通信スレーブの各々は、同期カウンタを有している。通信マスタは、通信マスタが有している同期カウンタのカウンタ値を示す第1の情報のネットワークを介した1または複数の通信スレーブへの送信を繰り返す手段を含む。1または複数の通信スレーブの各々は、通信マスタからの第1の情報を受信すると、当該受信した第1の情報に基づいて各自の同期カウンタのカウンタ値を更新する手段を含む。通信マスタは、1または複数の通信スレーブ毎に送信した第1の情報の総数を管理するとともに、通信スレーブ毎の第1の情報の送信数に基づいて、通信スレーブ毎の通信マスタに対する同期精度を推定する手段を含む。
【0010】
この構成によれば、通信マスタから送信される第1の情報の送信数に基づいて、通信スレーブ毎の通信マスタに対する同期精度を推定できるので、推定された同期精度に基づいて制御処理の実行可否などを適切に決定できる。
【0011】
通信マスタは、ユーザプログラムを実行可能な制御装置であってもよい。ユーザプログラムにおいて、通信スレーブ毎に推定された同期精度が参照可能になっていてもよい。この構成によれば、ユーザプログラムにおいて通信スレーブ毎に推定された同期精度が参照可能であるので、同期精度に応じて、ユーザプログラムの実行可否などを適切に制御できる。
【0012】
通信スレーブ毎に推定された同期精度は、構造体変数として参照可能になっていてもよい。この構成によれば、構造体変数のメンバを指定することで、対象の通信スレーブの同期精度を容易に参照できる。
【0013】
ユーザプログラムにおいて、予め定められた複数の通信スレーブ全体における同期精度が参照可能になっていてもよい。この構成によれば、同期制御の対象となる複数の通信スレーブ全体の同期精度の状況を容易に行うことができる。
【0014】
予め定められた複数の通信スレーブ全体における同期精度は、ファンクションブロック命令から出力されてもよい。この構成によれば、予め定められた複数の通信スレーブをまとめて制御するようなファンクションブロック命令に対応付けて、対象の複数の通信スレーブについての同期精度を容易に取得できる。
【0015】
通信マスタは、予め定められた送信数に対する第1の情報の送信数に基づいて、対応する通信スレーブの同期精度を決定してもよい。この構成によれば、予め定められた評価基準となる送信数に基づいて、同期精度を数値的に評価できる。
【0016】
通信マスタは、任意の通信スレーブがネットワークに新たに接続されると、当該通信スレーブについての第1の情報の送信数をリセットするようにしてもよい。この構成によれば、通信スレーブがネットワークに接続されるたびに同期カウンタの更新を行う処理を反映して、同期精度を決定できる。
【0017】
1または複数の通信スレーブの各々は、通信マスタから受信した第1の情報と、予め取得された伝搬遅延時間とに基づいて、同期カウンタのカウンタ値を更新するようにしてもよい。この構成によれば、ネットワークに発生する伝搬遅延時間を考慮して、各通信スレーブにおける同期カウンタのカウンタ値の更新を実現できる。
【0018】
本発明の別の一例に従えば、通信マスタと通信マスタとネットワーク接続される1または複数の通信スレーブとを備える制御システムの通信制御方法が提供される。通信マスタおよび1または複数の通信スレーブの各々は、同期カウンタを有している。通信制御方法は、通信マスタが、通信マスタが有している同期カウンタのカウンタ値を示す第1の情報のネットワークを介した1または複数の通信スレーブへの送信を繰り返すステップと、1または複数の通信スレーブの各々が、通信マスタからの第1の情報を受信すると、当該受信した第1の情報に基づいて各自の同期カウンタのカウンタ値を更新するステップと、通信マスタが、1または複数の通信スレーブ毎に送信した第1の情報の総数を管理するステップと、通信マスタが、通信スレーブ毎の第1の情報の送信数に基づいて、通信スレーブ毎の通信マスタに対する同期精度を推定するステップとを含む。
【0019】
本発明のさらに別の一例に従えば、1または複数の通信スレーブとネットワーク接続される通信マスタとして機能する制御装置が提供される。制御装置は、同期カウンタと、制御装置が有している同期カウンタのカウンタ値を示す第1の情報のネットワークを介した1または複数の通信スレーブへの送信を繰り返す手段とを含む。1または複数の通信スレーブの各々は、第1の情報を受信すると、当該受信した第1の情報に基づいて各自の同期カウンタのカウンタ値を更新する。制御装置は、1または複数の通信スレーブ毎に送信した第1の情報の総数を管理するとともに、通信スレーブ毎の第1の情報の送信数に基づいて、通信スレーブ毎の通信マスタに対する同期精度を推定する手段を含む。
【発明の効果】
【0020】
本発明によれば、通信マスタおよび1または複数の通信スレーブからなる制御システムにおける同期精度を適切に管理できる。
【図面の簡単な説明】
【0021】
【
図1】本実施の形態に係る制御システムの全体構成例を示す模式図である。
【
図2】本実施の形態に係る制御システムを構成する制御装置のハードウェア構成例を示すブロック図である。
【
図3】本実施の形態に係る制御システムを構成するリモートIO装置のハードウェア構成例を示すブロック図である。
【
図4】本実施の形態に係る制御システムを構成するサーボドライバのハードウェア構成例を示すブロック図である。
【
図5】本実施の形態に係る制御システムにおける同期確立のための処理手順を示すシーケンス図である。
【
図6】本実施の形態に係る制御システムにおける同期確立のための通信スレーブにおける処理手順を示すフローチャートである。
【
図7】本実施の形態に係る制御システムにおける同期補正フレームの数と同期誤差との関係の一例を示す図である。
【
図8】本実施の形態に係る制御システムにおける通信マスタによる各通信スレーブの同期精度を管理する処理を説明するための図である。
【
図9】本実施の形態に係る制御システムにおける通信マスタによる各通信スレーブの同期精度を管理するための機能構成例を示す模式図である。
【
図10】本実施の形態に係る制御システムにおける通信マスタによる各通信スレーブの同期精度を管理に関する処理手順を示すフローチャートである。
【
図11】本実施の形態に係る制御システムで利用可能なサポート装置のハードウェア構成例を示すブロック図である。
【
図12】本実施の形態に従う制御システムを構成する制御装置が提供するシステム変数を利用したユーザプログラムの一例を示す図である。
【
図13】本実施の形態に従う制御システムで利用可能なサポート装置において軸設定を行う設定画面例を示す模式図である。
【
図14】本実施の形態に従う制御システムで利用可能な軸グループで制御を行うためのファンクションブロック命令の一例を示す図である。
【
図15】本実施の形態に従う制御システムにおいて提供される状態表示画面の一例を示す模式図である。
【発明を実施するための形態】
【0022】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0023】
<A.適用例>
まず、
図1を参照して、本発明が適用される場面の一例について説明する。
【0024】
図1は、本実施の形態に係る制御システム1の全体構成例を示す模式図である。
図1を参照して、制御システム1は、主たるコンポーネントとして、通信マスタとして機能する制御装置100と、制御装置100とフィールドネットワーク2を介してネットワーク接続される1または複数の通信スレーブとを含む。通信スレーブの一例として、
図1には、リモートIO装置200と、サーボドライバ300と、セーフティIO装置400とを示す。サーボドライバ300の各々は、制御対象としてサーボモータ350に接続されている。
【0025】
本明細書において、「フィールドネットワーク」は、接続される装置(ノード)の間で同期を確立できる通信媒体(有線および無線のいずれをも含む)を総称するものである。「フィールドネットワーク」は、「フィールドバス」とも称される。フィールドネットワーク2としては、典型的には、ネットワーク内のノード間のデータ到着時間が保証される産業装置用のプロトコルが採用されてもよい。このようなノード間のデータ到着時間が保証されるプロトコルとしては、例えば、EtherCAT(登録商標)などを採用できる。あるいは、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などを採用してもよい。以下の説明においては、一例として、フィールドネットワーク2としてEtherCATを採用した場合について説明する。
【0026】
本明細書において、「通信マスタ」または「マスタ」は、対象となるフィールドネットワークにおけるデータ伝送を管理する主体または機能を総称する用語である。通信マスタまたはマスタと対になる用語として、「通信スレーブ」または「スレーブ」との用語を用いる。本明細書において、通信スレーブまたはスレーブは、対象となるフィールドネットワークに配置されるとともに、通信マスタまたはマスタの管理下において、データ伝送を行う主体または機能を総称する用語である。
【0027】
なお、通信マスタおよび通信スレーブとしては、機能や種類などについて何ら限定されるものではなく、任意の装置を用いることができる。
【0028】
本明細書において、「機能ユニット」は、制御装置100および/またはリモートIO装置200の一部を構成し、特定の機能を提供する装置を総称する用語である。典型的には、機能ユニットは、制御対象との間で各種の信号を遣り取りするためのIOユニット、PID(Proportional Integral Derivative)制御を司る特殊ユニット、モーション制御を司る特殊ユニットなどを含む。
【0029】
典型的には、IOユニットは、例えば、制御対象からのデジタル信号(ON/OFFの2値)を受け取るDI(Digital Input)機能、制御対象に対してデジタル信号を出力するDO(Digital Output)機能、制御対象からのアナログ信号を受け取るAI(Analog Input)機能、制御対象に対してアナログ信号を出力するAO(Analog Output)機能のうち1または複数の機能を有している。
【0030】
図1に示すように、通信マスタ(制御装置100)および1または複数の通信スレーブ(リモートIO装置200、サーボドライバ300、セーフティIO装置400など)の各々は、同期制御を実現するための同期カウンタ121,221,321,421を有している。
【0031】
通信マスタ(制御装置100)は、通信マスタ(制御装置100)が有している同期カウンタ121のカウンタ値を示す第1の情報をフィールドネットワーク2を介して、1または複数の通信スレーブへ繰り返し送信する。典型的には、第1の情報は、通信マスタ(制御装置100)の同期カウンタ121に保持されているタイムスタンプ(通常は、予め定められた基準時刻からの経過時間)を含む制御フレーム(以下、「同期補正フレーム172」とも称す。)として具現化されてもよい。
【0032】
1または複数の通信スレーブの各々は、通信マスタからの第1の情報(同期補正フレーム172)を受信すると、当該受信した第1の情報に基づいて各自の同期カウンタ121,221,321,421のカウンタ値を更新する。このように、同期補正フレーム172は、通信マスタの同期カウンタ121および各通信スレーブの同期カウンタ221,321,421との間で、カウンタ値を一致させるために用いられる。
【0033】
各通信スレーブは、受信した同期補正フレーム172に基づいて、同期カウンタ221,321,421のカウンタ値を補正するため、受信した同期補正フレーム172の総数が多いほど、同期精度は高くなる。逆に言えば、受信した同期補正フレーム172の総数が少なければ、十分な同期精度を確保できないことを意味する。
【0034】
そこで、通信マスタ(制御装置100)は、1または複数の通信スレーブ毎に送信した第1の情報(同期補正フレーム172)の総数を管理するとともに、通信スレーブ毎の第1の情報(同期補正フレーム172)の送信数に基づいて、通信スレーブ毎の通信マスタに対する同期精度を推定する。一例として、通信マスタ(制御装置100)は、通信スレーブ毎に送信した同期補正フレーム172の総数、および、同期精度を管理するための同期精度管理テーブル150を有しており、同期精度管理テーブル150の値を逐次更新するとともに、制御システム1における同期精度の管理を実現できる。
【0035】
<B.ハードウェア構成例>
次に、本実施の形態に係る制御システム1を構成する主たるコンポーネントのハードウェア構成例について説明する。
【0036】
(b1:制御装置100)
図2は、本実施の形態に係る制御システム1を構成する制御装置100のハードウェア構成例を示すブロック図である。
図2を参照して、制御装置100は、処理ユニット101および機能ユニット103などを含む。処理ユニット101は、プロセッサ102と、チップセット104と、メモリ106と、ストレージ108と、ネットワークコントローラ110と、USB(Universal Serial Bus)コントローラ112と、メモリカードインターフェイス114と、内部バスコントローラ118と、フィールドネットワークコントローラ120とを含む。
【0037】
プロセッサ102は、制御演算などを実行する演算処理部に相当し、CPU、MPU、GPUなどで構成される。具体的には、プロセッサ102は、ストレージ108に格納されたプログラム(一例として、システムプログラム1082およびユーザプログラム1081)を読み出して、メモリ106に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。すなわち、制御装置100は、任意に作成されるユーザプログラム1081を実行可能になっている。
【0038】
ストレージ108は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。メモリ106は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。
【0039】
チップセット104は、プロセッサ102と各デバイスを制御することで、制御装置100全体としての処理を実現する。
【0040】
ストレージ108には、基本的な機能を実現するためのシステムプログラム1082に加えて、設備や機械などの制御対象に応じて作成されるユーザプログラム1081が格納される。
【0041】
ネットワークコントローラ110は、図示しない上位ネットワークを介して、ゲートウェイやデータベースサーバといった任意の情報処理装置との間でデータを遣り取りする。USBコントローラ112は、USB接続を介して、サポート装置との間でデータを遣り取りする。
【0042】
メモリカードインターフェイス114は、メモリカード116を着脱可能に構成されており、メモリカード116に対するデータの書き込み、および/または、メモリカード116からの各種データ(ユーザプログラム1081やトレースデータなど)の読み出しが可能になっている。
【0043】
内部バスコントローラ118は、内部バス4を介して1または複数の機能ユニット103と処理ユニット101とを電気的に接続するための通信インターフェイスに相当する。内部バスコントローラ118は、内部バスを介した同期制御を行うための通信マスタとして機能する。
【0044】
フィールドネットワークコントローラ120は、フィールドネットワーク2を介して1または複数の通信スレーブとして機能する装置と処理ユニット101とを電気的に接続するための通信インターフェイスに相当する。フィールドネットワークコントローラ120は、フィールドネットワーク2を介した同期制御を行うための通信マスタとして機能する。
【0045】
内部バスコントローラ118は、同期制御を実現するための同期カウンタ119を有しており、フィールドネットワークコントローラ120は、同期制御を実現するための同期カウンタ121を有している。同期カウンタ119および同期カウンタ121には、通信マスタが保持しているタイムスタンプ(通常は、予め定められた基準時刻からの経過時間)が格納される。同期カウンタ119および同期カウンタ121は、同期制御を実現するための各種タイミングの決定に用いられる時刻として用いられる。同期カウンタ119および同期カウンタ121は、例えば、高精度イベントタイマー(HPET:High Precision Event Timer)などを用いて実装してもよいし、あるいは、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)などの専用回路を用いて実装してもよい。
【0046】
上述の
図2には、プロセッサ102がプログラムを実行することで、制御装置100を実現するために必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、制御装置100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOS(Operating System)を並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0047】
さらに、制御装置100に表示装置やサポート装置などの機能を統合した構成を採用してもよい。
【0048】
(b2:リモートIO装置200)
図3は、本実施の形態に係る制御システム1を構成するリモートIO装置200のハードウェア構成例を示すブロック図である。
図3を参照して、リモートIO装置200は、カプラユニット201および機能ユニット203などを含む。カプラユニット201は、フィールドネットワークコントローラ220と、メインコントローラ210と、内部バスコントローラ218とを含む。
【0049】
フィールドネットワークコントローラ220は、フィールドネットワーク2を介してリモートIO装置200と制御装置100とを電気的に接続するための通信インターフェイスに相当する。フィールドネットワークコントローラ220は、フィールドネットワーク2を介した同期制御に参加するための通信スレーブとして機能する。フィールドネットワークコントローラ220は、同期制御を実現するための同期カウンタ221を有している。フィールドネットワークコントローラ220は、通信マスタとして機能する制御装置100からの同期確立用のフレームに基づいて、同期カウンタ221に格納される値を更新する。同期カウンタ221は、上述の同期カウンタ119または同期カウンタ121と同様の構成を採用してもよい。
【0050】
メインコントローラ210は、プロセッサ212と、メモリ214と、ファームウェア216とを含む。プロセッサ212は、制御演算などを実行する演算処理部に相当し、CPU、MPU、GPUなどで構成される。具体的には、プロセッサ212は、ストレージに格納されたファームウェア216を読み出して、メモリ214に展開して実行することで、フィールドネットワークコントローラ220と内部バスコントローラ218との間のデータ転送、および、機能ユニット203とフィールドデバイスとの間の信号の遣り取りなどを実現する。
【0051】
内部バスコントローラ218は、内部バス6を介して1または複数の機能ユニット203とカプラユニット201とを電気的に接続するための通信インターフェイスに相当する。内部バスコントローラ218は、内部バス6を介した同期制御を行うための通信マスタとして機能する。内部バスコントローラ218は、同期制御を実現するための同期カウンタ219を有している。同期カウンタ219は、上述の同期カウンタ119または同期カウンタ121と同様の構成を採用してもよい。
【0052】
(b3:サーボドライバ300)
図4は、本実施の形態に係る制御システム1を構成するサーボドライバ300のハードウェア構成例を示すブロック図である。
図4を参照して、サーボドライバ300は、フィールドネットワークコントローラ320と、メインコントローラ310と、ドライブ回路330とを含む。
【0053】
フィールドネットワークコントローラ320は、フィールドネットワーク2を介してサーボドライバ300と制御装置100とを電気的に接続するための通信インターフェイスに相当する。フィールドネットワークコントローラ320は、フィールドネットワーク2を介した同期制御に参加するための通信スレーブとして機能する。フィールドネットワークコントローラ320は、同期制御を実現するための同期カウンタ321を有している。フィールドネットワークコントローラ320は、通信マスタとして機能する制御装置100からの同期確立用のフレームに基づいて、同期カウンタ321に格納される値を更新する。同期カウンタ321は、上述の同期カウンタ119または同期カウンタ121と同様の構成を採用してもよい。
【0054】
メインコントローラ310は、プロセッサ312と、メモリ314と、ファームウェア316とを含む。プロセッサ312は、制御演算などを実行する演算処理部に相当し、CPU、MPU、GPUなどで構成される。具体的には、プロセッサ312は、ストレージに格納されたファームウェア316を読み出して、メモリ314に展開して実行することで、フィールドネットワークコントローラ320と内部バスコントローラ318との間のデータ転送、および、ドライブ回路330の制御などを実現する。
【0055】
ドライブ回路330は、メインコントローラ310からの内部指令に従って、電気的に接続されているサーボモータ350を駆動するとともに、サーボモータ350の状態値などをメインコントローラ310へ応答する。
【0056】
(b4:セーフティIO装置400)
セーフティIO装置400は、セーフティ制御に用いられる入力信号の取得、および/または、出力信号の生成などを担当する。基本的な構成は、リモートIO装置200に類似しており、ここでは詳細な説明は行わない。
【0057】
セーフティIO装置400についても、同期制御を実現するための同期カウンタを有しており、通信マスタとして機能する制御装置100からの同期確立用のフレームに基づいて、同期カウンタに格納される値を更新する。
【0058】
<C.同期確立>
次に、本実施の形態に従う制御システム1における通信マスタと1または複数の通信スレーブとの間での同期確立を含む通信制御方法について説明する。
【0059】
図5は、本実施の形態に係る制御システム1における同期確立のための処理手順を示すシーケンス図である。
図5を参照して、同期確立のための処理手順としては、典型的には、伝搬遅延時間測定処理(
図5中の*1)および同期カウンタ更新処理(
図5中の*2)を含む。基本的には、同期カウンタ更新処理は、繰り返し実行される。
【0060】
伝搬遅延時間測定処理においては、通信マスタと各通信スレーブとの間の伝搬遅延時間が測定される。ここで、伝搬遅延時間は、任意のフレームが通信マスタから通信スレーブまで伝搬されるのに要する時間を意味する。後述するように、伝搬遅延時間を考慮して、通信マスタと各通信スレーブとの間で同期カウンタの値を一致させるための処理(同期カウンタ更新処理)が実行される。
【0061】
より具体的には、通信マスタは、伝搬遅延時間を測定するための制御フレーム(以下、「遅延時間測定フレーム170」とも称す。)を接続されているそれぞれの通信スレーブへ送信する(シーケンスSQ1)。
【0062】
各通信スレーブは、通信マスタからの遅延時間測定フレーム170を受信すると、その受信した遅延時間測定フレーム170を通信マスタへ返信する(シーケンスSQ2~SQ6)。通信マスタは、各通信スレーブから返信された遅延時間測定フレーム170を受信すると、先に遅延時間測定フレーム170を送信したタイミングからの経過時間ΔT1~ΔT5を測定する。
【0063】
経過時間ΔT1~ΔT5は、通信マスタと各通信スレーブとの間で遅延時間測定フレーム170が往復に要した時間を意味する。経過時間ΔT1~ΔT5の半分の時間に基づいて、通信マスタと各通信スレーブとの間の伝搬遅延時間Td1~Td5を決定できる。通信マスタは、各通信スレーブに対して対応する伝搬遅延時間Td1~Td5を通知する(シーケンスSQ11~SQ15)。
【0064】
各通信スレーブは、通信マスタから通知された伝搬遅延時間を格納し、伝搬遅延時間測定処理は完了する。
【0065】
なお、説明の便宜上、経過時間および伝搬遅延時間の測定および算出などを簡略化して説明している。実際には、フレームの受信処理、解析処理、送信処理などの時間が必要であるため、このような時間も考慮した上で、伝搬遅延時間が決定されてもよい。
【0066】
また、通信スレーブがフィールドネットワークに新たに追加された場合には、通信マスタと当該新たに追加された通信スレーブの間で、伝搬遅延時間測定処理が実行されてもよい。
【0067】
なお、伝搬遅延時間の測定または決定に係る処理は公知であるので、ここでは、これ以上の詳細な説明は行わない。
【0068】
伝搬遅延時間測定処理に続いて、同期カウンタ更新処理が実行される。同期カウンタ更新処理において、通信マスタは、通信マスタの同期カウンタおよび各通信スレーブの同期カウンタとの間で、カウンタ値を一致させるための制御フレーム(同期補正フレーム172)をフィールドネットワーク2上に繰り返し送出する(シーケンスSQ20)。
【0069】
すなわち、通信マスタは、通信マスタが有している同期カウンタ121のカウンタ値を示す第1の情報(同期補正フレーム172)のフィールドネットワーク2を介した1または複数の通信スレーブへの送信を繰り返す。
【0070】
同期補正フレーム172には、通信マスタが当該同期補正フレーム172を送出するタイミングにおける、通信マスタの同期カウンタのカウンタ値(すなわち、通信マスタの現在時刻を示すタイムスタンプ)が格納される。各通信スレーブは、通信マスタからの同期補正フレーム172を受信すると、当該受信した同期補正フレーム172に格納されるカウンタ値(通信マスタのタイムスタンプ)と予め取得している伝搬遅延時間とに基づいて、通信マスタの同期カウンタのカウンタ値と当該通信スレーブの同期カウンタのカウンタ値との間の誤差(以下、「同期誤差」とも称す。)を算出する。そして、各通信スレーブは、算出した同期誤差に基づいて、各通信スレーブの同期カウンタのカウンタ値を補正する(シーケンスSQ21~SQ25)。すなわち、各通信スレーブは、通信マスタからの同期補正フレーム172(第1の情報)を受信すると、当該受信した同期補正フレーム172に基づいて各自の同期カウンタのカウンタ値を更新する機能を有している。
【0071】
このような同期補正フレーム172の送信および各通信スレーブにおける同期カウンタのカウンタ値の補正は、所定周期あるいは所定イベント毎に繰り返し実行される。
【0072】
図6は、本実施の形態に係る制御システム1における同期確立のための通信スレーブにおける処理手順を示すフローチャートである。
図6に示す各ステップは、通信スレーブがフィールドネットワーク2に接続すると、通信スレーブのメインコントローラ(
図3のメインコントローラ210および
図4のメインコントローラ310など)によって実行される。
【0073】
図6を参照して、通信スレーブは、フィールドネットワークに接続すると、通信マスタからの遅延時間測定フレーム170の受信を待つ。すなわち、通信スレーブは、通信マスタから遅延時間測定フレーム170を受信したか否かを判断する(ステップS100)。通信マスタから遅延時間測定フレーム170を受信すると(ステップS100においてYES)、通信スレーブは、受信した遅延時間測定フレーム170を通信マスタへ返信する(ステップS102)。
【0074】
なお、通信マスタから遅延時間測定フレーム170を受信していなければ(ステップS100においてNO)、ステップS100の処理が繰り返される。
【0075】
続いて、通信スレーブは、通信マスタからの伝搬遅延時間の通知を待つ。すなわち、通信スレーブは、通信マスタから伝搬遅延時間の通知を受けたか否かを判断する(ステップS104)。通信マスタから伝搬遅延時間の通知を受けると(ステップS104においてYES)、通信スレーブは、通信スレーブから通知された伝搬遅延時間を格納する(ステップS106)。なお、通信マスタから伝搬遅延時間の通知を受けていなければ(ステップS104においてNO)、ステップS104の処理が繰り返される。
【0076】
以上の手順によって、伝搬遅延時間測定処理が完了し、同期カウンタ更新処理が開始される。
【0077】
同期カウンタ更新処理において、通信スレーブは、同期補正フレーム172に基づいて、同期カウンタのカウンタ値を補正する。すなわち、通信スレーブは、通信マスタから同期補正フレーム172を受信したか否かを判断する(ステップS110)。通信マスタから同期補正フレーム172を受信すると(ステップS110においてYES)、通信スレーブは、受信した同期補正フレーム172に格納されているカウンタ値(通信マスタのタイムスタンプ)を取得し(ステップS112)、取得したカウンタ値およびステップS106において格納した伝搬遅延時間に基づいて、通信マスタの同期カウンタのカウンタ値と当該通信スレーブの同期カウンタのカウンタ値との間の誤差(同期誤差)を算出する(ステップS114)。このように、1または複数の通信スレーブの各々は、通信マスタからの同期補正フレーム172(第1の情報)を受信すると、当該受信した同期補正フレーム172に基づいて各自の同期カウンタのカウンタ値を更新する処理を実行する。このとき、通信マスタから受信した同期補正フレーム172(第1の情報)と、予め取得された伝搬遅延時間とに基づいて、同期カウンタのカウンタ値を更新する。
【0078】
なお、通信マスタから同期補正フレーム172を受信していなければ(ステップS110においてNO)、ステップS110の処理が繰り返される。
【0079】
そして、通信スレーブは、ステップS114において算出した同期誤差が予め定められた許容範囲を超えているか否かを判断する(ステップS116)。同期誤差が予め定められた許容範囲を超えていれば(ステップS116においてYES)、通信スレーブは、算出した同期誤差に応じて、同期カウンタのカウンタ値を補正する(ステップS118)。そして、ステップS110以下の処理が繰り返される。なお、同期誤差が予め定められた許容範囲内であれば(ステップS116においてNO)、ステップS118の処理はスキップされて、ステップS110以下の処理が繰り返される。
【0080】
以上のような処理手順によって、通信スレーブにおける同期確立の処理が実行される。
【0081】
図5および
図6を参照して説明したように、各通信スレーブは、受信した同期補正フレーム172に基づいて、同期カウンタのカウンタ値を補正するため、受信した同期補正フレーム172の総数が多いほど、同期精度は高くなる。逆に言えば、受信した同期補正フレーム172の総数が少なければ、十分な同期精度を確保できないことを意味する。
【0082】
図7は、本実施の形態に係る制御システム1における同期補正フレーム172の数と同期誤差との関係の一例を示す図である。
図7を参照して、各通信スレーブにおける同期補正フレーム172の受信数が大きくなるほど、同期誤差は小さくなる。同期誤差が予め定められた許容誤差の範囲内であれば、許容同期精度が確保されていると判断できる。
【0083】
すなわち、通信マスタが各通信スレーブにおける同期誤差の大きさを取得できなくても、通信マスタから各通信スレーブに送信された同期補正フレーム172の総数を管理することで、各通信スレーブにおける同期精度を推定できる。
【0084】
本実施の形態に従う制御システム1においては、通信マスタから各通信スレーブへ送信された同期補正フレーム172の総数を管理することで、各通信スレーブにおける同期精度の把握および制御を実現する。
【0085】
<D.同期精度の管理>
本実施の形態に従う制御システム1においては、通信マスタが、送信した同期補正フレーム172の数に基づいて、各通信スレーブにおける同期精度を管理する。
【0086】
図8は、本実施の形態に係る制御システム1における通信マスタによる各通信スレーブの同期精度を管理する処理を説明するための図である。
図8には、通信マスタが保持する同期精度管理テーブル150の一例を示す。
【0087】
図8に示す同期精度管理テーブル150は、各通信スレーブについて、通信スレーブ識別情報1501と、同期補正フレーム送信数1502と、同期精度1503とを含む。
【0088】
通信スレーブ識別情報1501としては、例えば、各通信スレーブのフィールドネットワーク2における識別情報(典型的には、ノードアドレス)などが用いられる。同期補正フレーム送信数1502には、各通信スレーブがフィールドネットワーク2に接続されてから、通信マスタから送信された同期補正フレーム172の総数が格納される。同期補正フレーム172の総数は、各通信スレーブがフィールドネットワーク2に接続されてからの通信マスタからの送信数を意味し、通信スレーブがフィールドネットワーク2に新たに接続されたタイミングがゼロとなる。同期精度1503には、各通信スレーブの同期補正フレーム送信数1502に格納される同期補正フレーム172の総数に基づいて、推定された同期精度を示す値(例えば、「高」、「中」、「低」など)が格納される。
【0089】
通信マスタは、予め定められた送信数に対する同期補正フレーム172の送信数に基づいて、対応する通信スレーブの同期精度を決定してもよい。例えば、対応する同期補正フレーム172の総数を予め定められた評価基準と比較することで、同期精度1503に格納される推定値を決定してもよい。
【0090】
なお、同期精度1503には、
図8に示すような段階的な推定値だけではなく、具体的な数値(例えば、0~100%の範囲の値など)を採用してもよい。この場合には、必要な同期精度を確保するのに必要な同期補正フレーム送信数1502の受信数に対する、実際に受信されている同期補正フレーム送信数1502の到達率という形で評価できる。
【0091】
図9は、本実施の形態に係る制御システム1における通信マスタによる各通信スレーブの同期精度を管理するための機能構成例を示す模式図である。
図9に示す機能構成は、典型的には、通信マスタとして機能する制御装置100のプロセッサ102がシステムプログラム1082を実行することによって実現されてもよいし、全部または一部の機能構成は、フィールドネットワークコントローラ120に実装されてもよい。
【0092】
図9を参照して、制御装置100は、同期精度の管理に係る機能構成として、送受信モジュール160と、ネットワーク状態監視モジュール158と、伝搬遅延時間測定モジュール156と、同期カウンタ更新モジュール154と、同期精度管理モジュール152とを含む。
【0093】
送受信モジュール160は、フィールドネットワーク2へのフレームの送信およびフィールドネットワーク2を介したフレームの受信に係る処理を担当する。
【0094】
ネットワーク状態監視モジュール158は、フィールドネットワーク2に接続されている通信スレーブを特定するとともに、フィールドネットワーク2からの通信スレーブの離脱などを含めた接続状態を管理する。
【0095】
伝搬遅延時間測定モジュール156は、各通信スレーブへの遅延時間測定フレーム170の送信および各通信スレーブから応答された遅延時間測定フレーム170の受信などの、伝搬遅延時間測定処理を担当する。
【0096】
同期カウンタ更新モジュール154は、同期カウンタ121を参照した同期補正フレーム172の生成および送信などの、同期カウンタ更新処理を担当する。より具体的には、同期カウンタ更新モジュール154は、通信マスタが有している同期カウンタ121のカウンタ値を示す同期補正フレーム172(第1の情報)のフィールドネットワーク2を介した1または複数の通信スレーブへの送信を繰り返す。
【0097】
同期精度管理モジュール152は、ネットワーク状態監視モジュール158により管理されるフィールドネットワーク2における各通信スレーブの接続状態に基づいて、同期カウンタ更新モジュール154からの指令によって送信された同期補正フレーム172の総数を通信スレーブ毎に管理する。同期精度管理モジュール152は、通信スレーブ毎の同期補正フレーム172の総数を同期精度管理テーブル150に格納する。また、同期精度管理モジュール152は、同期精度管理テーブル150に格納した通信スレーブ毎の同期補正フレーム172の総数に基づいて、通信スレーブ毎の同期精度を決定あるいは更新する。さらに、同期精度管理モジュール152は、決定した通信スレーブ毎の同期精度に基づいて、後述するようなユーザプログラムで参照可能なシステム変数の値を更新するようにしてもよい。
【0098】
このように、同期精度管理モジュール152は、1または複数の通信スレーブ毎に送信した同期補正フレーム172(第1の情報)の総数を管理するとともに、通信スレーブ毎の同期補正フレーム172(第1の情報)の送信数に基づいて、通信スレーブ毎の通信マスタに対する同期精度を推定する。
【0099】
次に、通信マスタにおける同期精度の管理に関する処理手順について説明する。
【0100】
図10は、本実施の形態に係る制御システム1における通信マスタによる各通信スレーブの同期精度を管理に関する処理手順を示すフローチャートである。
図10に示す各ステップは、典型的には、通信マスタとして機能する制御装置100のプロセッサ102がシステムプログラム1082を実行することによって実現されてもよいし、フィールドネットワークコントローラ120が全部または一部の処理を実行してもよい。
【0101】
図10を参照して、通信マスタは、伝搬遅延時間を測定していない通信スレーブが存在するか否かを判断する(ステップS200)。伝搬遅延時間を測定していない通信スレーブは、例えば、通信マスタは、フィールドネットワーク2に新たに接続された通信スレーブなどを検知すると、その新たなに接続された通信スレーブを、伝搬遅延時間を測定していない通信スレーブと決定する。
【0102】
伝搬遅延時間を測定していない通信スレーブが存在すれば(ステップS200においてYES)、通信マスタは、遅延時間測定フレーム170をフィールドネットワーク2上に送出する(ステップS202)。そして、通信マスタは、送出した遅延時間測定フレーム170がいずれかの通信スレーブから返信されるのを待つ。すなわち、通信マスタは、いずれかの通信スレーブからの遅延時間測定フレーム170を受信したか否かを判断する(ステップS204)。
【0103】
いずれかの通信スレーブからの遅延時間測定フレーム170を受信すれば(ステップS204においてYES)、通信マスタは、受信した遅延時間測定フレーム170を送出してからの経過時間を測定し(ステップS206)、測定した経過時間に基づいて、対象の通信スレーブについての伝搬遅延時間を決定する(ステップS208)。そして、通信マスタは、決定した伝搬遅延時間を対象の通信スレーブへ通知する(ステップS210)。
【0104】
なお、ステップS206~S210の処理は、通信スレーブから返信された遅延時間測定フレーム170の数だけ繰り返し実行される。
【0105】
一方、いずれの通信スレーブからも遅延時間測定フレーム170を受信していなければ(ステップS204においてNO)、ステップS204の処理が繰り返される。
【0106】
伝搬遅延時間を測定していない通信スレーブが存在していなければ(ステップS200においてNO)、ステップS202~S210の処理はスキップされる。
【0107】
続いて、通信マスタは、同期補正フレーム172の送出タイミングが到来したか否かを判断する(ステップS212)。同期補正フレーム172の送出タイミングが到来していなければ(ステップS212においてNO)、ステップS212の処理が繰り返される。
【0108】
同期補正フレーム172の送出タイミングが到来していれば(ステップS212においてYES)、通信スレーブは、同期補正フレーム172をフィールドネットワーク2上に送出する(ステップS214)。そして、通信マスタは、同期精度管理テーブル150(
図8参照)の各通信スレーブについて、同期補正フレーム送信数1502、および、同期精度1503の値を更新する(ステップS216)。このように、通信マスタは、1または複数の通信スレーブ毎に送信した同期補正フレーム172(第1の情報)の総数を管理する処理を実行するとともに、通信スレーブ毎の同期補正フレーム172(第1の情報)の送信数に基づいて、通信スレーブ毎の通信マスタに対する同期精度を推定する処理を実行する。
【0109】
さらに、通信マスタは、更新後の同期精度管理テーブル150の内容に基づいて、ユーザプログラムで参照可能なシステム変数の値を更新する(ステップS218)。
【0110】
続いて、通信マスタは、フィールドネットワーク2における通信スレーブの接続状態が変化したか否かを判断する(ステップS220)。すなわち、フィールドネットワーク2に新たな通信スレーブが接続された、あるいは、フィールドネットワーク2からいずれかの通信スレーブが離脱した、といった接続状態の変化の有無が判断される。
【0111】
フィールドネットワーク2における通信スレーブの接続状態が変化していれば(ステップS220においてYES)、通信マスタは、同期精度管理テーブル150において、フィールドネットワーク2に新たな接続された通信スレーブに対応するエントリを追加するとともに、フィールドネットワーク2から離脱した通信スレーブのエントリを削除する(ステップS222)。なお、新たに追加されたエントリの同期補正フレーム送信数1502はゼロに初期設定される。すなわち、通信マスタは、任意の通信スレーブがフィールドネットワーク2に新たに接続されると、当該通信スレーブについての同期補正フレーム172(第1の情報)の送信数をリセットする。
【0112】
一方、フィールドネットワーク2における通信スレーブの接続状態が変化していなければ(ステップS220においてNO)、ステップS222の処理はスキップされる。
【0113】
そして、ステップS212以下の処理が繰り返される。
【0114】
以上のような通信マスタの処理によって、各通信スレーブの同期精度が管理される。
【0115】
<E.アプリケーション例>
上述したような同期精度の管理機能を利用したいくつかのアプリケーション例について説明する。
【0116】
(e1:サポート装置500)
まず、本実施の形態に従う制御システム1において利用可能なサポート装置500のハードウェア構成例を示す模式図である。
【0117】
図11は、本実施の形態に係る制御システム1で利用可能なサポート装置500のハードウェア構成例を示すブロック図である。サポート装置500は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いて実現される。
【0118】
図11を参照して、サポート装置500は、プロセッサ502と、メモリ504と、入力部506と、出力部508と、ストレージ510と、光学ドライブ512と、USBコントローラ520とを含む。これらのコンポーネントは、プロセッサバス518を介して接続されている。
【0119】
プロセッサ502は、CPUやGPUなどで構成され、ストレージ510に格納されたプログラム(一例として、OS5102およびサポートプログラム5104)を読出して、メモリ504に展開して実行することで、後述するような各種処理を実現する。
【0120】
メモリ504は、例えば、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ510は、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。
【0121】
ストレージ510には、基本的な機能を実現するためのOS5102、サポート装置500としての機能を提供するためのサポートプログラム5104、および開発環境においてユーザにより作成されるプロジェクトデータ5106が格納される。
【0122】
サポート装置500は、制御システム1を構成するユニットおよびデバイスについての設定、ならびに、制御システム1で実行されるプログラムの作成が統合的に可能な開発環境を提供する。プロジェクトデータ5106は、このような統合的な開発環境によって生成されるデータを含む。典型的には、プロジェクトデータ5106は、制御装置100で実行されるユーザプログラム5108と、制御システム1の各種設定値を規定する設定情報5110とを含む。ユーザプログラム5108は、オブジェクトコードに変換された上で、制御装置100に送信および格納される。
【0123】
入力部506は、キーボードやマウスなどで構成され、ユーザ操作を受付ける。出力部508は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ502からの処理結果などを出力する。
【0124】
USBコントローラ520は、USB接続を介して、制御装置100などとの間のデータを遣り取りする。
【0125】
サポート装置500は、光学ドライブ512を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記憶媒体514(例えば、DVD(Digital Versatile Disc)などの光学記憶媒体)から、その中に格納されたプログラムが読取られてストレージ510などにインストールされる。
【0126】
サポート装置500で実行されるサポートプログラム5104などは、コンピュータ読取可能な記憶媒体514を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、サポート装置500が提供する機能は、OSが提供するモジュールの一部を利用する形で実現される場合もある。
【0127】
なお、制御システム1が稼動中において、サポート装置500は、制御装置100から取り外されていてもよい。
【0128】
図11には、1または複数のプロセッサがプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
【0129】
(e2:同期精度を示すシステム変数)
上述したように、通信マスタとして機能する制御装置100は、各通信スレーブにおける同期精度を推定できる。そのため、制御装置100により推定される各通信スレーブにおける同期精度をユーザプログラムで参照できるようにすれば、高精度な制御が要求されるアプリケーションを確実に実現できる。
【0130】
一例として、通信マスタとして機能する制御装置100は、各通信スレーブにおける同期精度を示すシステム変数を提供するようにしてもよい。すなわち、通信マスタは、ユーザプログラムを実行可能な制御装置100であり、ユーザプログラムにおいて、通信スレーブ毎に推定された同期精度が参照可能になっている。
【0131】
図12は、本実施の形態に従う制御システム1を構成する制御装置100が提供するシステム変数を利用したユーザプログラムの一例を示す図である。
図12に示すユーザプログラムは、サポート装置500が提供する開発環境において作成が可能である。
【0132】
図12には、各通信スレーブにおける同期精度を示す構造体変数Sync_Accuracy[]([]内にはノードアドレスなどをインデックスとして指定する)が利用可能な例を示す。構造体変数Sync_Accuracy[]の各メンバは、対応する通信スレーブにおいて十分な同期精度が確保できると「TRUE」になり、それ以外の状態では「FALSE」を示す。この例では、通信スレーブ毎に推定された同期精度は、構造体変数として参照可能になっている。
【0133】
図12に示すユーザプログラム5108においては、変数名Drive001_Activateのコイル530を有効化する条件として、変数名Triggerの接点531と、構造体変数Sync_Accuracy[]のインデックス「000」のメンバ540(Sync_Accuracy[000])と、構造体変数Sync_Accuracy[]のインデックス「001」のメンバ541(Sync_Accuracy[001])と、構造体変数Sync_Accuracy[]のインデックス「002」のメンバ542(Sync_Accuracy[002])との論理積(AND)が規定されている。
【0134】
また、変数名Drive001_Activateの接点532が自己保持回路に用いられている。
【0135】
図12に示すユーザプログラム5108においては、ノードアドレスが「000」、「001」、「002」のすべての通信スレーブにおける同期精度が十分に高い場合に限って、変数名Triggerが「TRUE」に駆動されると、変数名Drive001_Activateが「TRUE」に遷移する。すなわち、ノードアドレスが「000」、「001」、「002」の通信スレーブのすべてにおいて十分な同期精度が確保できることを起動条件として定義できる。
【0136】
図12に示すような構造体変数に限らず、通信スレーブ毎に同期精度を示す個別のシステム変数を割り当ててもよい。例えば、ノードアドレスが「000」の通信スレーブについては、変数名Sync_Accuracy_000などのシステム変数を利用可能にしてもよい。
【0137】
また、制御システム1が複数のフィールドネットワーク2を有している場合には、フィールドネットワーク2毎に、各通信スレーブにおける同期精度を示す構造体変数を用意してもよい。この場合には、例えば、構造体変数Sync_Accuracy_001_[]というように、構造体変数の変数名の一部に対象のフィールドネットワーク2を特定する情報を含めてもよい。あるいは、構造体変数Sync_Accuracy[][]というように、対象のフィールドネットワーク2を特定する識別情報および対象の通信スレーブを特定する識別情報からなる2次元のインデックスを採用してもよい。
【0138】
なお、上述したようなシステム変数の値は、上述の
図10に示す処理手順のステップS218において逐次更新される。
【0139】
(e3:任意のグループでの同期精度の管理)
上述したような同一のフィールドネットワーク2に接続された通信スレーブのグループだけではなく、ユーザが任意に設定したグループに属する複数の通信スレーブについて、同期精度を管理したい場合もある。例えば、単一の軸グループに複数のサーボドライバを割り当てるような設定が可能であり、このような軸グループについては、全体として同期精度を管理したいというニーズがある。
【0140】
図13は、本実施の形態に従う制御システム1で利用可能なサポート装置500において軸設定を行う設定画面例560を示す模式図である。
図13を参照して、ユーザは、設定画面例560において、各軸グループを識別するための軸グループ番号561を入力するとともに、各軸グループに属するサーボドライバ(通信スレーブ)などを示すメンバ設定562を入力する。
【0141】
メンバ設定562により指定された複数のサーボドライバ(通信スレーブ)は、共通の軸グループのメンバとして動作する。そのため、対象の軸グループで制御を行う場合には、メンバのすべてが十分な同期精度を確保しておく必要がある。
【0142】
このような軸グループでの制御を実現するための命令(一例として、ファンクションブロック形式の命令)において、このような同期精度を確保するためのインターフェイスを用意にしてもよい。
【0143】
図14は、本実施の形態に従う制御システム1で利用可能な軸グループで制御を行うためのファンクションブロック命令の一例を示す図である。
図14に示すファンクションブロック命令は、サポート装置500が提供する開発環境において作成が可能である。
【0144】
図14を参照して、ファンクションブロック命令550は、軸グループ設定551に入力された軸グループの各メンバに対して、制御指令を一括して出力するための命令である。
図14に示すファンクションブロック命令550は、同期精度確保モード552を有効化または無効化を選択的に設定可能になっている。同期精度確保モード552は、対象の軸グループのすべてのメンバ(通信スレーブ)における同期精度が十分に確保されていることを条件として、制御指令を出力することを許容するか否かを切り替えるものである。すなわち、同期精度確保モード552に「TRUE」が設定されている場合には、対象の軸グループのすべてのメンバ(通信スレーブ)における同期精度が十分に確保されていなければ、制御指令は出力されず、一方、同期精度確保モード552に「FALSE」が設定されている場合には、対象の軸グループの一部または全部のメンバ(通信スレーブ)における同期精度が十分に確保されていなくても制御指令の出力は許容される。
【0145】
同期精度ステータス出力553には、対象の軸グループに属するメンバ(通信スレーブ)の同期精度の状態が出力される。出力される同期精度の状態は、軸グループ全体の状態を意味し、いずれかのメンバ(通信スレーブ)における同期精度が十分に確保されていなければ、軸グループ全体としても、同期精度が十分に確保されていないと決定される。そのため、同期精度ステータス出力553から出力される状態値をモニタあるいは条件として用いることで、高精度な制御が要求される処理などを確実に実現できる。
【0146】
このように、ユーザプログラムにおいて、予め定められた複数の通信スレーブ全体(例えば、上述したような複数のメンバからなる軸グループ)における同期精度が参照可能になっている。そして、予め定められた複数の通信スレーブ全体における同期精度は、ファンクションブロック命令から出力されるようにしてもよい。
【0147】
(e4:状態表示画面例)
上述したようなユーザプログラムでの参照に加えて、同期精度の状態を視覚化してもよい。
【0148】
図15は、本実施の形態に従う制御システム1において提供される状態表示画面の一例を示す模式図である。
図15に示す状態表示画面600は、サポート装置500上に表示されてもよいし、図示しない表示装置(HMI:Human Machine Interface)上に表示されてもよい。いずれの場合においても、通信マスタである制御装置100が管理する同期精度の状態に応じた表示を行うようにすればよい。
【0149】
図15に示す状態表示画面600においては、制御システム1の全体構成を示すネットワーク構成602が示されており、十分な同期精度が確保されている通信スレーブについては、強調表示604がなされている。強調表示604は、十分な同期精度が確保されていない通信スレーブとは異なる表示態様の一例であり、色や明るさを異ならせてもよいし、点滅やサイズの変動などの表示態様を動的に異ならせてもよい。
【0150】
図15に示すような状態表示画面600をユーザに提示することで、ユーザは、制御動作を開始してよいのか否かを一見して把握することもできる。
【0151】
なお、
図15に示すような状態表示画面600に限られず、リスト形式や他の表示形態で同期精度の状態を視覚化してもよい。
【0152】
上述したように、1または複数の通信スレーブにおいて十分な同期精度が確保されているか否かの情報については、制御の実行可否の条件として用いることもできるし、ユーザへ提示するようなこともできる。これらの情報を用いることで、以下に例示するような各種の運用が可能となる。
【0153】
(e5:運用例)
上述したような同期精度に注意が必要な関係としては、例えば、同期制御したい複数の通信スレーブのグループや連係制御したい複数の通信スレーブのグループなどが想定される。同期制御したいグループとしては、例えば、単一の機構を構成するデバイス群(例えば、
図13に示すような軸グループ)などが挙げられる。あるいは、何らかの機構を駆動する装置とその装置を制御するIO装置との組み合わせが挙げられる。
【0154】
あるいは、複数の処理からなる一連の作業をグループとして捉えることもできる。例えば、処理Aが完了した後に処理Bが実行されるような場合には、処理Aと処理Bとを同一のグループとみなすことができる。この場合には、処理Aおよび処理Bに関与する通信スレーブのいずれについても十分な同期精度が確保されていることを、制御の実行を開始する条件としてもよい。
【0155】
上述したようなシステム変数やファンクションブロック命令などを用いることで、このようなグループについて、高精度な同期制御ができる状態(すなわち、グループ全体について十分な同期精度が確保されている状態)、および、高精度な同期制御ができない状態(すなわち、グループ全体について十分な同期精度が確保されていない状態)のいずれであるかを明示的に把握できる。このような同期制御の可否に関する情報を用いることで、グループに対する制御の実行可否を適切に決定できる。
【0156】
制御対象に応じて、グループ全体について十分な同期精度が確保されている状態に限って、制御の実行許可するようにしてもよいし、グループ全体について十分な同期精度が確保されていなくても、制御の実行を開始するようにしてもよい。グループに含まれる個々の通信スレーブの状態や同期ずれによる装置の破損の可能性などを考慮して、適宜決定されてもよい。
【0157】
なお、グループ全体について十分な同期精度が確保されている状態に限って、制御の実行許可する場合には、グループ全体について十分な同期精度が確保されている状態であるか否かをユーザへ提示できるようにすることが好ましい。このような情報をユーザへ提示することで、制御が実行されない場合にその理由を容易に把握できる。
【0158】
また、生産対象物に応じて機構の一部が変更される場合がある(段取り替え)。例えば、ロボット先端のツールハンドの種類を変更(例えば、チャック機構とバキューム機構とを交換など)するような場合が想定される。このような機構の変更は、物理的に付け替えられることもあれば、回転機構などにより切り替えられることもある。なお、段取り替えの後には、各種微調整が必要な場合もある。このような段取り替えに関する処理において、必要に応じて十分な同期精度が確保できていることを制御の実行を開始する条件としてもよい。
【0159】
なお、複数の制御装置100が単一の機構を制御する場合もある。この場合には、当該単一の機構の制御に係る通信スレーブにおける同期精度を示す情報を互いに遣り取りすることで、当該単一の機構に同期制御の実行を保証するようにしてもよい。
【0160】
<F.その他>
上述の説明においては、主として、通信プロトコルとしてEtherCATを用いたフィールドネットワークを例示したが、通信プロトコルとしては、EtherCATに限られることなく、通信マスタと各通信スレーブとの間で同期カウンタのカウンタ値を互いに一致させるための制御フレーム(同期補正フレーム)を繰り返し送出する構成を採用した任意のシステムに適用可能である。
【0161】
また、フィールドネットワークとしては、有線に限らず、無線であってもよいし、有線と無線との混合であってもよい。
【0162】
上述の説明においては、制御装置100とフィールドネットワーク2を介してネットワーク接続されるすべての通信スレーブが同期制御を実現するための同期カウンタを有している構成について例示したが、フィールドネットワーク2には、同期制御を実現しない通信スレーブ、あるいは、同期制御を実現できない通信スレーブが接続されていてもよい。すなわち、フィールドネットワーク2には、非同期制御を実行する通信スレーブが接続されていてもよい。
【0163】
例えば、フィールドネットワーク2に接続される通信スレーブのうち一部の通信スレーブは、同期カウンタを有しているが、同期カウントを有効化しない、あるいは、同期カウンタの更新は行うが、制御には使用しないといった実装形態を採用してもよい。このような実装形態においては、ユーザが任意の通信スレーブに対して、同期制御および非同期制御のいずれかを明示的に設定できるようにしてもよい。
【0164】
さらに、フィールドネットワーク2に接続される通信スレーブのうち一部の通信スレーブは、同期カウンタ自体を有していない(同期カウンタを内蔵していない)ものであってもよい。このような実装形態においては、同期制御を実行できないので、非同期制御が実行されることになる。
【0165】
<G.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
通信マスタ(100)と、
前記通信マスタとネットワーク接続される1または複数の通信スレーブ(200,300,400)とを備え、
前記通信マスタおよび前記1または複数の通信スレーブの各々は、同期カウンタ(121,221,321,421)を有しており、
前記通信マスタは、前記通信マスタが有している同期カウンタのカウンタ値を示す第1の情報(172)のネットワーク(2)を介した前記1または複数の通信スレーブへの送信を繰り返す手段(154)を含み、
前記1または複数の通信スレーブの各々は、前記通信マスタからの前記第1の情報を受信すると、当該受信した第1の情報に基づいて各自の同期カウンタのカウンタ値を更新する手段(SQ21~SQ25;S118)を含み、
前記通信マスタは、前記1または複数の通信スレーブ毎に送信した前記第1の情報の総数を管理するとともに、通信スレーブ毎の前記第1の情報の送信数に基づいて、通信スレーブ毎の前記通信マスタに対する同期精度を推定する手段(152)を含む、制御システム。
[構成2]
前記通信マスタは、ユーザプログラム(1081)を実行可能な制御装置であり、
前記ユーザプログラムにおいて、通信スレーブ毎に推定された同期精度が参照可能になっている、構成1に記載の制御システム。
[構成3]
通信スレーブ毎に推定された同期精度は、構造体変数(540,541,542)として参照可能になっている、構成2に記載の制御システム。
[構成4]
前記ユーザプログラムにおいて、予め定められた複数の通信スレーブ全体における同期精度が参照可能になっている、構成2に記載の制御システム。
[構成5]
前記予め定められた複数の通信スレーブ全体における同期精度(553)は、ファンクションブロック命令(550)から出力される、構成4に記載の制御システム。
[構成6]
前記通信マスタは、予め定められた送信数に対する前記第1の情報の送信数に基づいて、対応する通信スレーブの同期精度を決定する、構成1~5のいずれか1項に記載の制御システム。
[構成7]
前記通信マスタは、任意の通信スレーブが前記ネットワークに新たに接続されると、当該通信スレーブについての前記第1の情報の送信数をリセットする、構成1~6のいずれか1項に記載の制御システム。
[構成8]
前記1または複数の通信スレーブの各々は、前記通信マスタから受信した第1の情報(172)と、予め取得された伝搬遅延時間(Td1~Td5)とに基づいて、同期カウンタのカウンタ値を更新する、構成1~7のいずれか1項に記載の制御システム。
[構成9]
通信マスタ(100)と前記通信マスタとネットワーク接続される1または複数の通信スレーブ(200,300,400)とを備える制御システム(1)の通信制御方法であって、前記通信マスタおよび前記1または複数の通信スレーブの各々は、同期カウンタ(121,221,321,421)を有しており、前記通信制御方法は、
前記通信マスタが、前記通信マスタが有している同期カウンタのカウンタ値を示す第1の情報のネットワークを介した前記1または複数の通信スレーブへの送信を繰り返すステップ(S212,S214)と、
前記1または複数の通信スレーブの各々が、前記通信マスタからの前記第1の情報を受信すると、当該受信した第1の情報に基づいて各自の同期カウンタのカウンタ値を更新するステップ(S118)と、
前記通信マスタが、前記1または複数の通信スレーブ毎に送信した前記第1の情報の総数を管理するステップ(S216,S218,S222)と、
前記通信マスタが、通信スレーブ毎の前記第1の情報の送信数に基づいて、通信スレーブ毎の前記通信マスタに対する同期精度を推定するステップ(S216)とを備える、制御システムの通信制御方法。
[構成10]
1または複数の通信スレーブ(200,300,400)とネットワーク接続される通信マスタとして機能する制御装置(100)であって、
同期カウンタ(121)と、
前記制御装置が有している同期カウンタのカウンタ値を示す第1の情報(172)のネットワーク(2)を介した前記1または複数の通信スレーブへの送信を繰り返す手段(154)とを備え、前記1または複数の通信スレーブの各々は、前記第1の情報を受信すると、当該受信した第1の情報に基づいて各自の同期カウンタ(121,221,321,421)のカウンタ値を更新し、
前記1または複数の通信スレーブ毎に送信した前記第1の情報の総数を管理するとともに、通信スレーブ毎の前記第1の情報の送信数に基づいて、通信スレーブ毎の前記通信マスタに対する同期精度を推定する手段(152)とを備える、制御装置。
【0166】
<H.利点>
本実施の形態に係る制御システムは、通信マスタが各通信スレーブに対して送信した同期補正フレーム172の数を通信スレーブ毎に管理することで、各通信スレーブが通信マスタに対する同期精度を推定できる。このように推定される通信スレーブ毎の同期精度を利用することで、高精度な同期制御が要求されるような場合であっても、それを確実に実現できる。また、通信マスタは、各通信スレーブにおける同期精度の状況を直接的に取得できなくても、間接的に同期精度を推定することで、ネットワーク負荷を増大させることなく、必要な同期制御を実現できる。
【0167】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0168】
1 制御システム、2 フィールドネットワーク、4,6 内部バス、100 制御装置、101 処理ユニット、102,212,312,502 プロセッサ、103,203 機能ユニット、104 チップセット、106,214,314,504 メモリ、108,510 ストレージ、110 ネットワークコントローラ、112,520 USBコントローラ、114 メモリカードインターフェイス、116 メモリカード、118,218,318 内部バスコントローラ、119,121,219,221,321,421 同期カウンタ、120,220,320 フィールドネットワークコントローラ、150 同期精度管理テーブル、152 同期精度管理モジュール、154 同期カウンタ更新モジュール、156 伝搬遅延時間測定モジュール、158 ネットワーク状態監視モジュール、160 送受信モジュール、170 遅延時間測定フレーム、172 同期補正フレーム、200 リモートIO装置、201 カプラユニット、210,310 メインコントローラ、216,316 ファームウェア、300 サーボドライバ、330 ドライブ回路、350 サーボモータ、400 セーフティIO装置、500 サポート装置、506 入力部、508 出力部、512 光学ドライブ、514 記憶媒体、518 プロセッサバス、530 コイル、531,532 接点、540,541,542 メンバ、550 ファンクションブロック命令、551 軸グループ設定、552 同期精度確保モード、553 同期精度ステータス出力、560 設定画面例、561 軸グループ番号、562 メンバ設定、600 状態表示画面、602 ネットワーク構成、604 強調表示、1081,5108 ユーザプログラム、1082 システムプログラム、1501 通信スレーブ識別情報、1502 同期補正フレーム送信数、1503 同期精度、5104 サポートプログラム、5106 プロジェクトデータ、5110 設定情報、Td1~Td5 伝搬遅延時間。