(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024109258
(43)【公開日】2024-08-14
(54)【発明の名称】制御装置、制御システム、方法およびプログラム
(51)【国際特許分類】
H04L 7/00 20060101AFI20240806BHJP
G05B 19/042 20060101ALI20240806BHJP
G05B 19/05 20060101ALI20240806BHJP
【FI】
H04L7/00 990
G05B19/042
G05B19/05 J
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2023013969
(22)【出願日】2023-02-01
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】新實 太雅
(72)【発明者】
【氏名】米田 光宏
【テーマコード(参考)】
5H220
5K047
【Fターム(参考)】
5H220AA06
5H220BB09
5H220BB18
5H220CC07
5H220CX01
5H220EE12
5H220HH01
5H220HH04
5H220HH05
5H220JJ12
5H220JJ22
5H220JJ26
5H220JJ29
5H220JJ34
5H220JJ35
5H220JJ36
5H220JJ38
5H220KK01
5H220LL01
5K047AA18
(57)【要約】
【課題】時刻同期を精度良く速やかに完了させる。
【解決手段】時刻同期処理部は、基準時刻とタイマが計測した時刻との間の時刻差を算出し、時刻差の許容範囲を示す第1閾値以上である第2閾値を取得する。時刻同期処理部は、タイマの時刻を、基準時刻を示すように第1補正量で補正する第1補正処理、または、第1補正量よりも小さい第2補正量で補正する第2補正処理の一方を実施する。時刻同期処理部は、時刻差が第2閾値以上であるとき第1補正処理を、時刻差が前記第2閾値未満であるとき第2補正処理を、それぞれ実施する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
FA(ファクトリオートメーション)の制御装置であって、
ネットワークを接続するコネクタと、
タイマと、
対象の制御に関連する処理を実施する制御処理部と、
時刻同期の処理を実施する時刻同期処理部と、を備え、
前記時刻同期処理部は、
基準時刻と前記タイマが計測した時刻との間の時刻差を算出する時刻差算出部と、
前記時刻差の許容範囲を示す第1閾値以上である第2閾値を取得する閾値取得部と、
前記タイマの時刻を、前記基準時刻を示すように第1補正量で補正する第1補正処理または当該タイマの時刻を、前記基準時刻を示すように前記第1補正量よりも小さい第2補正量で補正する第2補正処理の一方を実施する補正部と、を含み、
前記補正部は、
前記時刻差が前記第2閾値以上であるとき前記第1補正処理を実施し、前記時刻差が前記第2閾値未満であるとき前記第2補正処理を実施する、制御装置。
【請求項2】
前記タイマの時刻は、当該タイマが有するクロックに基づいた時刻を示し、
前記基準時刻は、前記ネットワークに接続されるマスタ装置のクロックに基づいた時刻を示し、
前記時刻差算出部は、前記タイマのクロックの周波数と前記マスタ装置のクロックの周波数の差に基づき前記時刻差を算出する、請求項1に記載の制御装置。
【請求項3】
前記制御装置は、前記ネットワークに接続されたマスタ装置から配信されるメッセージを受信する通信部を、さらに備え、
前記マスタ装置からの配信メッセージは、当該マスタ装置のマスタクロックに基づく当該メッセージの送信時刻を含み、
前記時刻差算出部は、
前記マスタ装置から受信した前記配信メッセージの前記送信時刻と前記ネットワークの伝搬遅延時間とに基づき前記基準時刻を算出し、
前記タイマが計測した前記配信メッセージの受信時刻と算出された前記基準時刻との差に基づき前記時刻差を算出する、請求項1に記載の制御装置。
【請求項4】
前記時刻同期処理部は、
前記時刻差が前記第1閾値以下であることの同期条件が満たされるか否かを判定し、
前記補正部は、前記同期条件が満たされたことの判定に応じて、前記時刻差が前記第2閾値以上であるとき前記第1補正処理を実施し、前記時刻差が前記第2閾値未満であるとき前記第2補正処理を実施する、請求項1~3のいずれか1項に記載の制御装置。
【請求項5】
前記閾値取得部は、
前記時刻差を用いた算出式に従い前記第2閾値を算出する、請求項1~3のいずれか1項に記載の制御装置。
【請求項6】
前記閾値取得部は、
前記第1閾値と予め定められた値の間の大きさの関係および前記第1閾値を用いた算出式に従い、前記第2閾値を算出する、請求項1~3のいずれか1項に記載の制御装置。
【請求項7】
前記第1補正処理は、
前記タイマの時刻を前記第1補正量で補正する処理を、M回(ただし、M≧2)繰り返し、
前記第1補正量は、前記時刻差の値をM個に分割した値に基づく補正量を含む、請求項1~3のいずれか1項に記載の制御装置。
【請求項8】
前記第2補正処理は、
前記タイマの時刻を前記第2補正量で補正する処理を、N回(ただし、N≧2)繰り返し、
前記第2補正量は、前記時刻差の値をN個に分割した値に基づく補正量を含む、請求項1~3のいずれか1項に記載の制御装置。
【請求項9】
前記時刻同期処理部は、前記時刻差が前記第1閾値以下であることの同期条件が満たされるか否かを判定し、
前記対象の制御に関連する処理は、前記同期条件が満たされと判定されたときに実施される第1処理と、当該同期条件が満たされと判定されたことに応じて実施される処理であって前記第1処理とは異なる第2処理を含む、請求項1~3のいずれか1項に記載の制御装置。
【請求項10】
前記第1処理は、前記対象の制御に関連した観測値と観測されたタイミングを示す前記タイマの時刻を有するデータの収集処理を含む、請求項9に記載の制御装置。
【請求項11】
FA(ファクトリオートメーション)の制御システムであって、請求項1~3のいずれか1項に記載の複数の制御装置を備える制御システム。
【請求項12】
FA(ファクトリオートメーション)の制御装置が実施する方法であって、
前記制御装置は、ネットワークを接続するコネクタと、タイマとを備え、
前記方法は、
対象の制御に関連する処理を実施すること、および
時刻同期の処理を実施すること、を備え、
前記時刻同期の処理を実施することは、
基準時刻と前記タイマが計測した時刻との間の時刻差を算出すること、
前記時刻差の許容範囲を示す第1閾値以上である第2閾値を取得すること、
前記タイマの時刻を、前記基準時刻を示すように第1補正量で補正する第1補正処理または当該タイマの時刻を、前記基準時刻を示すように前記第1補正量よりも小さい第2補正量で補正する第2補正処理の一方を実施すること、を含み、
前記一方を実施することは、
前記時刻差が前記第2閾値以上であるとき前記第1補正処理を実施し、前記時刻差が前記第2閾値未満であるとき前記第2補正処理を実施することを含む、方法。
【請求項13】
FA(ファクトリオートメーション)の制御装置のプロセッサに方法を実施させるためのプログラムであって、
前記制御装置は、ネットワークを接続するコネクタと、タイマを備え、
前記方法は、
対象の制御に関連する処理を実施すること、および
時刻同期の処理を実施すること、を備え、
前記時刻同期の処理を実施することは、
基準時刻と前記タイマが計測した時刻との間の時刻差を算出すること、
前記時刻差の許容範囲を示す第1閾値以上である第2閾値を取得すること、
前記タイマの時刻を、前記基準時刻を示すように第1補正量で補正する第1補正処理または当該タイマの時刻を、前記基準時刻を示すように前記第1補正量よりも小さい第2補正量で補正する第2補正処理の一方を実施すること、を含み、
前記一方を実施することは、
前記時刻差が前記第2閾値以上であるとき前記第1補正処理を実施し、前記時刻差が前記第2閾値未満であるとき前記第2補正処理を実施することを含む、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、FA(Factory Automation)の制御システムの時刻同期に関する。
【背景技術】
【0002】
様々な生産現場において、PLC(Programmable Logic Controller)等の制御装置を用いた制御システムが普及している。制御システムとしては、1台の制御装置が周辺装置を制御するシステムに加えて、複数台の制御装置が互いにデータを遣り取りして協働で周辺装置を制御する分散制御システムが提案されている。分散制御システムでは、高精度に協働するために、複数の制御装置が互いに時刻同期することが望まれる。
【0003】
例えば、特許文献1(特開2019-146060号公報)は時刻同期の構成を開示する。この構成では、ネットワークに接続された複数の通信装置はそれぞれ、他の通信装置の時刻と自装置の時刻との差分を時刻調整値として、自装置の時刻を補正する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
FAの制御システムでは、時刻同期完了を判断するための許容範囲を示す閾値が設定されて、上記に述べた時刻の差分は当該閾値と比較されて、比較の結果に基づき時刻同期の完了が判断される。したがって、設定される閾値によって時刻同期の完了に長時間を要する、または、精度良く時刻同期できない等のケースがあった。
【0006】
それゆえに、本開示の目的は、時刻同期を精度良く速やかに完了させることが可能な技術を提供することである。
【課題を解決するための手段】
【0007】
本開示に係るFA(ファクトリオートメーション)の制御装置は、ネットワークを接続するコネクタと、タイマと、対象の制御に関連する処理を実施する制御処理部と、時刻同期の処理を実施する時刻同期処理部と、を備える。
【0008】
時刻同期処理部は、基準時刻とタイマが計測した時刻との間の時刻差を算出する時刻差算出部と、時刻差の許容範囲を示す第1閾値以上である第2閾値を取得する閾値取得部と、タイマの時刻を、基準時刻を示すように第1補正量で補正する第1補正処理または当該タイマの時刻を、基準時刻を示すように第1補正量よりも小さい第2補正量で補正する第2補正処理の一方を実施する補正部と、を含む。
【0009】
補正部は、時刻差が第2閾値以上であるとき第1補正処理を実施し、時刻差が前記第2閾値未満であるとき第2補正処理を実施する。
【0010】
上述の制御装置によれば、時刻差の許容範囲を示し第1閾値とは異なる第2閾値と時刻差との両者の値の大きさの関係に基づき、第1補正と第2補正を切替える。この場合、補正部は、時刻差が第2閾値以上であり許容範囲から比較的離れていれば、大きい方の第1補正量で補正処理を実施して、時刻差を速やかに小さくして時刻同期を完了させることができる。対照的に、時刻差が第2閾値未満であり許容範囲に近ければ、小さい方の第2補正量で補正処理を実施して、時刻差を徐々に許容範囲に収束させて、精度良く時刻同期を完了させることができる。
【0011】
上述の制御装置のタイマの時刻は、当該タイマが有するクロックに基づいた時刻を示し、基準時刻は、ネットワークに接続されるマスタ装置のクロックに基づいた時刻を示し、時刻差算出部は、タイマのクロックの周波数とマスタ装置のクロックの周波数の差に基づき時刻差を算出する。
【0012】
上述の制御装置によれば、時刻同期処理に用いる時刻差は、制御装置のタイマのクロックの周波数と基準時刻を提供するマスタ装置のクロックの周波数の差に基づき算出される。
【0013】
上述の制御装置は、ネットワークに接続されたマスタ装置から配信されるメッセージを受信する通信部を、さらに備え、マスタ装置からの配信メッセージは、当該マスタ装置のマスタクロックに基づく当該メッセージの送信時刻を含む。時刻差算出部は、マスタ装置から受信した配信メッセージの送信時刻とネットワークの伝搬遅延時間とに基づき基準時刻を算出し、タイマが計測した配信メッセージの受信時刻と算出された基準時刻との差に基づき時刻差を算出する。
【0014】
上述の制御装置によれば、マスタ装置からの配信メッセージに含まれる基準時刻を用いて時刻差を算出できる。
【0015】
上述の制御装置の時刻同期処理部は、時刻差が第1閾値以下であることの同期条件が満たされるか否かを判定し、補正部は、同期条件が満たされたことの判定に応じて、時刻差が第2閾値以上であるとき第1補正処理を実施し、時刻差が第2閾値未満であるとき第2補正処理を実施する。
【0016】
上述の制御装置によれば、上記に述べた補正処理の切替を、同期条件が満たされて同期完了と判定された場合においても実施して、時刻同期した状態を維持することができる。
【0017】
上述の制御装置の閾値取得部は、時刻差を用いた算出式に従い第2閾値を算出する。これにより、第2閾値を、時刻差を用いて算出することができる。
【0018】
上述の制御装置の閾値取得部は、第1閾値と予め定められた値の間の大きさの関係および第1閾値を用いた算出式に従い、第2閾値を算出する。これにより、第2閾値を、第1閾値と所定値の大きさの関係および当該第1閾値を用いて算出できる。
【0019】
上述の制御装置の第1補正処理は、タイマの時刻を第1補正量で補正する処理を、M回(ただし、M≧2)繰り返し、第1補正量は、時刻差の値をM個に分割した値に基づく補正量を含む。
【0020】
上述の制御装置によれば、第1補正処理では、時刻差を分割し、分割された各値を用いて補正を繰り返すことで、時刻同期させることができる。
【0021】
上述の制御装置の第2補正処理は、タイマの時刻を第2補正量で補正する処理を、N回(ただし、N≧2)繰り返し、第2補正量は、時刻差の値をN個に分割した値に基づく補正量を含む。
【0022】
上述の制御装置によれば、第2補正処理では、時刻差を分割し、分割された各値を用いて補正を繰り返すことで、時刻同期させることができる。
【0023】
上述の制御装置の時刻同期処理部は、時刻差が第1閾値以下であることの同期条件が満たされるか否かを判定し、対象の制御に関連する処理は、同期条件が満たされと判定されたときに実施される第1処理と、当該同期条件が満たされと判定されたことに応じて実施される処理であって第1処理とは異なる第2処理を含む。
【0024】
上述の制御装置によれば、時刻同期が完了したか否かで実施される制御関連処理を異ならせることができる。
【0025】
上述の制御装置の第1処理は、対象の制御に関連した観測値と観測されたタイミングを示すタイマの時刻を有するデータの収集処理を含む。
【0026】
上述の制御装置によれば、同期条件が満たされて時刻同期した場合に第1処理が実行されることで、時刻同期したタイマが計測する観測時刻に従い観測値を収集できる。
【0027】
この開示の他の局面では、FA(ファクトリオートメーション)の制御システムであって、上記に述べた制御装置を複数備える制御システムが提供される。
【0028】
この開示の他の局面では、FA(ファクトリオートメーション)の制御装置が実施する方法が提供される。制御装置は、ネットワークを接続するコネクタと、タイマとを備える。方法は、対象の制御に関連する処理を実施すること、および、時刻同期の処理を実施すること、を備え、時刻同期の処理を実施することは、基準時刻とタイマが計測した時刻との間の時刻差を算出すること、時刻差の許容範囲を示す第1閾値以上である第2閾値を取得すること、タイマの時刻を、基準時刻を示すように第1補正量で補正する第1補正処理または当該タイマの時刻を、基準時刻を示すように第1補正量よりも小さい第2補正量で補正する第2補正処理の一方を実施すること、を含み、このような一方を実施することは、時刻差が第2閾値以上であるとき第1補正処理を実施し、時刻差が第2閾値未満であるとき第2補正処理を実施することを含む。
【0029】
この開示の他の局面では、FA(ファクトリオートメーション)の制御装置のプロセッサに方法を実施させるためのプログラムが提供される。制御装置は、ネットワークを接続するコネクタと、タイマを備える。方法は、対象の制御に関連する処理を実施すること、および時刻同期の処理を実施すること、を備え、時刻同期の処理を実施することは、基準時刻とタイマが計測した時刻との間の時刻差を算出すること、時刻差の許容範囲を示す第1閾値以上である第2閾値を取得すること、タイマの時刻を、基準時刻を示すように第1補正量で補正する第1補正処理または当該タイマの時刻を、基準時刻を示すように第1補正量よりも小さい第2補正量で補正する第2補正処理の一方を実施すること、を含み、一方を実施することは、時刻差が第2閾値以上であるとき第1補正処理を実施し、時刻差が第2閾値未満であるとき第2補正処理を実施することを含む。
【0030】
上記のプログラムは、当該プログラムがコンピュータによって実行されると、コンピュータに上記の方法を実行させる命令を備えている。
【発明の効果】
【0031】
本開示によれば、時刻同期を精度良く速やかに完了させることできる。
【図面の簡単な説明】
【0032】
【
図1】本実施の形態に係る制御システム1の全体構成の一例を模式的に示す図である。
【
図2】本実施の形態に係る制御装置2のハードウェア構成例を示すブロック図である。
【
図3】本実施の形態に係るサポート装置500のハードウェア構成例を示すブロック図である。
【
図4】本実施の形態に係る制御装置2のソフトウェア構成例を示すブロック図である。
【
図5】本実施の形態に係る同期モジュール560の構成を模式的に示す図である。
【
図6】本実施の形態に係るアプリケーション設計の概略処理フローチャートである。
【
図7】
図6のアプリケーション設計の環境を模式的に示す図である。
【
図8】本実施の形態に係る通信シーケンスの一例を示す図である。
【
図9】本実施の形態に係る時刻同期処理のフローチャートである。
【
図10】本実施の形態に係る第2閾値の取得を説明する図である。
【
図11】本実施の形態に係る第2閾値の取得を説明する図である。
【
図12】本実施の形態に係る第2閾値の取得を説明する図である。
【
図13】本実施の形態に係る第2閾値の取得を説明する図である。
【
図14】本実施の形態に係る時刻同期処理の他のフローチャートである。
【
図15】本実施の形態に係る第2閾値が可変に設定されることによる利点を説明するグラフである。
【
図16】本実施の形態に係る第2閾値が可変に設定されることによる利点を説明するグラフである。
【
図17】本実施の形態に係る第2閾値が可変に設定されることによる利点を説明するグラフである。
【
図18】本実施の形態に係る第2閾値が可変に設定されることによる利点を説明するグラフである。
【
図19】本実施の形態に係る第2閾値が可変に設定されることによる利点を説明するグラフである。
【
図20】本実施の形態に係る第2閾値が可変に設定されることによる利点を説明するグラフである。
【
図21】本実施の形態に係る通信シーケンスの一例を示す図である。
【
図22】本実施の形態に係る時刻差と第2閾値の関係を模式的に示すグラフである。
【発明を実施するための形態】
【0033】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0034】
<A.適用例>
まず、本発明が適用される場面の一例について説明する。本実施の形態では、「制御装置」の典型例として、PLCを説明するが、PLCの名称に限定されることなく、本明細書に開示された技術思想は、任意の制御装置に対して適用可能である。
【0035】
また、本実施の形態では、制御装置は時間を管理する管理タイマを有する。制御装置は、管理タイマを、基準時刻を管理する基準タイマに合わせるための「時刻同期処理」を実行する。管理タイマの時刻は、管理タイマのクロックに基づいて時刻を示し、基準タイマの時刻は、基準タイマのクロックに基づいた時刻を示す。
【0036】
図1は、本実施の形態に係る制御システム1の全体構成の一例を模式的に示す図である。
【0037】
図1を参照して、制御システム1は生産ラインのFAを実現する。より具体的には、制御システム1では、ネットワークが複数レベルに接続されており、各レベルのネットワークには、それぞれ異なる機能が割り当てられる。具体的には、限定されないが、例えば4つのレベルのネットワーク11~14が設けられている。
【0038】
コントロールレベルのネットワーク11は、複数の制御装置2A、2Bおよび2Cと、装置/ライン管理装置190よびSCADA(Supervisory Control And Data Acquisition)機能を提供する表示装置280とが接続されて、ネットワーク11では装置間でデータを遣り取りできるデータリンクが形成される。制御装置2A、2Bおよび2Cを区別しない場合は「制御装置2」と称する。ネットワーク11は、主に、時刻同期および制御系に係る情報を伝送する。
【0039】
制御装置2は、フィールドレベルのネットワーク110を介して1または複数のフィールド機器90を接続する。これらのフィールド機器90は、制御装置2に直接接続されてもよい。1または複数のフィールド機器90の各々は、製造装置または生産ラインなど(以下、「フィールド」とも総称する。)に対して何らかの物理的な作用を与えるアクチュエータ、およびフィールドとの間で情報を遣り取りする入出力装置などを含む。
【0040】
ネットワーク110を介して、制御装置2とフィールド機器90との間で遣り取りされるデータは、数100μsecオーダ~数10msecオーダのごく短い周期で更新されることになる。なお、このような遣り取りされるデータの更新処理は、入出力リフレッシュ処理とも称される。
【0041】
管理レベルのネットワーク12には、装置およびラインを管理する装置/ライン管理装置190、製造計画等を管理する製造管理装置380および390が接続される。装置/ライン管理装置190、製造管理装置380および390は、ネットワーク12を介して、製造計画等の管理情報の遣り取り、および装置またはラインの情報を遣り取りする。
【0042】
コンピュータレベルのネットワーク13には、製造管理装置380および390、ならびに時系列DB(データベースの略)450を管理する製造実行システム(MES:Manufacturing Execution System)400が接続される。製造管理装置380および390、ならびに製造実行システム400は、ネットワーク13を介して、生産管理および情報系のデータを遣り取りする。
【0043】
製造実行システム400は、ネットワーク13を介して収集するフィールド機器90からの入力値である観測値を、観測された順番に従う時系列のデータとして時系列DB450に格納する。具体的には、本実施の形態では、制御装置2は、指定された観測値と管理タイマの時刻のデータを含むフレームを生成し、ネットワーク11,12および13を介して製造実行システム400に転送する。
【0044】
インターネットなどの外部ネットワークを含むネットワーク14には、製造実行システム400とクラウド上の外部装置などが接続される。製造実行システム400は、クラウド上の装置とデータを遣り取りすることにより、時系列DB450のデータをクラウド上の装置に転送する。
【0045】
図1に示す制御システム1において、ネットワーク11~14およびネットワーク110には、このような要求される特性の違いに応じたプロトコルおよびフレームワークが採用される。例えば、ファクトリーネットワークに属するネットワーク11および12のプロトコルとしては、汎用的なEthernet(登録商標)上に制御用プロトコルを実装した産業用オープンネットワークであるEtherNet/IP(登録商標)を用いてもよい。また、ネットワーク110のプロトコルとしては、マシンコントロール用ネットワークの一例であるEtherCAT(登録商標)を採用してもよい。なお、ネットワーク11のプロトコルとネットワーク110には、同じまたは異なるプロトコルが適用される。このようなマシンコントロールに適したネットワーク技術を採用することで、機器間の伝送に要する時間が保証されたリアルタイム性を提供できる。
【0046】
対照的に、コーポレートネットワークに属するネットワーク13および14は、接続先の多様性を担保するために、汎用的なEthernet等のプロトコルが適用される。汎用的なEthernetが採用されることで、送信可能なデータ量等の制限を排除できる。
【0047】
制御装置2または装置/ライン管理装置190は、サポート装置500が接続され得る。サポート装置500は、制御装置2が制御対象を制御するために必要な準備を支援する装置である。
【0048】
制御システム1は、制御装置2A、2Bおよび2Cが、それぞれ、異なる工程3A、3Bおよび3Cに備えられる分散型システム300を備える。限定されないが、例えば、工程3Aは、ワーク(部品、部材)を整列させながら搬送するパーツフィーダの工程を示し、工程3Bは、工程3Aで整列されたワークをロボットのPick And Place動作によって移動させる工程を示し、工程3Cは移動後のワークを組立てる工程を示す。分散型システム300では、各工程の制御装置2に接続されるフィールド機器90の動作は、前後工程の制御装置2に接続されるフィールド機器90の動作とは異なる。分散型システム300における要求タクトタイムを満たすために、ある工程における動作は当該工程の前後工程の動作と同期して実施される。
【0049】
制御装置2は、当該制御装置2に接続されるフィールド機器90のシーケンス制御を実現するためのシーケンスプログラムおよびモーション制御を実現するためのモーションプログラムなどを含む制御に関するプログラムを、同期した時刻に基づく予め定められた周期(これを、制御周期ともいう)毎に実行することで、フィールド機器90のリアルタイム制御を実現する。
【0050】
本開示において、「時刻」は、時の流れにおけるある一点を示すものを意図し、例えば、時分秒などの単位を用いて規定される。「タイマ」は、制御装置2および関連する装置内でタイミングを制御するための値を計測するために、基本的には、ハードウェアクロックが発生するクロックに基づき時刻を計測する。より具体的には、タイマは、クロック周波数に基づく予め定められた単位時間毎に所定値ずつインクリメントまたはデクリメントされるカウンタを含んで構成され得る。カウンタは、例えば整数値を表す予め定められたビット長を有する。基準タイマと制御装置2の管理タイマとの間の時刻の差(誤差または変位)に基づき「同期精度」を示すことができる。したがって、時刻の差(誤差または変位)が小さいほど「同期精度」は高く、時刻の差(誤差または変位)が大きいほど「同期精度」は低い。ユーザは、制御システム1において所望の同期精度を実現できるように、許容できる時刻差の範囲を「許容範囲」として設定することができる。以下では、このような許容範囲は「第1閾値」として示される。
【0051】
図1において時刻同期を実現する構成は、例えば、ネットワーク11が産業用ネットワークのプロトコルであるTSN(Time-Sensitive Networking)に従うデータ通信を実施するケースと、ネットワーク11がEtherCAT(登録商標:Ethernet for Control Automation Technology)に従うデータ通信を実施するケースとを含み得る。なお、ネットワーク11に適用される規格は、これらに限定されず、例えばIEEE1588であってもよい。
【0052】
図1を参照して、「基準タイマ」となるマスタは、基準タイマが計測する基準時刻のデータを含む時刻配信メッセージ21をネットワーク11に送信する。基準タイマは、制御装置2A,2Bおよび2Cのいずれかが有するタイマまたはネットワーク11上の他の装置(例えば、装置/ライン管理装置190)のタイマであってよく、これらタイマのうち最も高い精度のタイマに相当する。本実施の形態では、例えば、装置/ライン管理装置190はマスタとして動作する。
【0053】
サポート装置500は、後述するサポートプログラム590を実行することにより、同期プログラムを設計するための支援ツールを提供する。ユーザは、制御システム1(または分散型システム300)の設計時に、支援ツールを操作して後述する同期アプリケーション177を設計する。同期アプリケーション177は、時刻同期処理を実施するためのプログラムと設定された第1閾値の情報とを含む。制御装置2は、サポート装置500から転送された同期アプリケーション177を実行することにより時刻同期処理を実現する。ユーザは、第1閾値を、支援ツールを操作して設定する、なお、第1閾値の設定方法は、ユーザ操作に限定されず、例えば仕様において制御システムに要求される同期精度に基づき算出されてもよい。
【0054】
時刻同期処理では、制御装置2は、時刻差の予め定められた許容範囲を示す第1閾値に基づき、当該第1閾値以上の第2閾値を取得する(ステップST1)。制御装置2は、ネットワーク11を介して受信した時刻配信メッセージ21が有する時刻情報をもとに基準時刻を推定(算出)し、推定された基準時刻と管理タイマが計測した時刻との間の時刻差を算出する(ステップST2)。このような基準時刻の推定と時刻差の算出の詳細は後述する。制御装置2は、管理タイマの時刻を、基準時刻を示すように第1補正量で補正する第1補正処理または当該管理タイマの時刻を、当該基準時刻を示すように第1補正量よりも小さい第2補正量で補正する第2補正処理の一方を実施する(ステップST3)。この補正では、制御装置2は、算出される時刻差が上記の第2閾値より大きいときは第2補正処理ではなく第1補正処理を実施し、算出される時刻差が上記の第2閾値以下であるときは第1補正処理ではなく第2補正処理を実施する。
【0055】
第2補正処理は、第1補正処理で用いる第1補正量より小さい第2補正量を用いて管理タイマの時刻を徐々に変化させて基準時刻に精度良く近づける補正処理である。対照的に第1補正処理は、第2補正量より大きい第1補正量を用いて管理タイマの時刻を速やかに変化させて基準時刻に近づける補正処理である。
【0056】
制御装置2は、このように、時刻同期完了を判断するための第1閾値によらずに、時刻差と第2閾値の間の値の大きさの関係に応じて、管理タイマの時刻を徐々に変化させて基準時刻に精度良く近づける第2補正処理または管理タイマの時刻を速やかに変化させて基準時刻に近づける第1補正処理を切替えて実施するから、時刻同期を精度良く速やかに完了させることができる。
【0057】
なお、本実施の形態では、時刻差の補正は、時刻差の値を加減する「調整」の概念を表す。その場合、第1補正量または第2補正量は、加減量を表す調整量の概念を表す。
【0058】
以下、本実施の形態のより具体的な応用例について説明する。
<B.構成と時刻同期処理>
分散型システム300を構成する機器の構成を説明する。
図2は、本実施の形態に係る制御装置2のハードウェア構成例を示すブロック図である。
図3は、本実施の形態に係るサポート装置500のハードウェア構成例を示すブロック図である。
【0059】
(b1.制御装置2の構成)
図2を参照して、制御装置2は、プロセッサ102と、チップセット104と、二次記憶装置106と、主記憶装置108と、上位ネットワークコントローラ105と、USB(Universal Serial Bus)コントローラ107と、メモリカードインターフェイス109と、フィールドネットワークコントローラ118と、カウンタ126と、RTC(Real Time Clock)128とを含む。
【0060】
プロセッサ102は、CPU(Central Processing Unit)、MPU(Microprocessor unit)、GPU(Graphics Processing Unit)などで構成され、二次記憶装置106に格納された各種プログラムを読出して、主記憶装置108に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。二次記憶装置106は、例えば、HDD(Hard Disk Drive)およびSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。主記憶装置108は、DRAM(Dynamic Random Access Memory)およびSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。
【0061】
チップセット104は、プロセッサ102と各デバイスを制御することで、制御装置2全体としての処理を実現する。
【0062】
二次記憶装置106には、時刻配信メッセージ21を配信する周期を示す通信周期データ200が格納される。二次記憶装置106には、制御対象の製造装置または設備に応じて作成されるUPG(ユーザプログラムの略)201が格納される。主記憶装置108には、時刻同期の完了または未完了を示すフラグ40が格納される。フラグ40は例えば「0」が初期値として設定されて、時刻同期完了が判定されると「1」が設定される。
【0063】
上位ネットワークコントローラ105は、ネットワーク11を接続するコネクタと、タイマ103を有するNIC(Network Interface Card)等の回路を含む。上位ネットワークコントローラ105は、上位のネットワーク11を介して、製造実行システム400またはクラウド上の装置(
図1参照)などとの間のデータを遣り取りする。USBコントローラ107は、USB接続を介してサポート装置500との間のデータの遣り取りを制御する。
【0064】
メモリカードインターフェイス109は、メモリカード116を着脱可能に構成されており、メモリカード116に対してデータを書込み、メモリカード116から各種データ(ユーザプログラムまたはトレースデータなど)を読出すことが可能になっている。
【0065】
カウンタ126は、制御装置2における各種処理の実行タイミングを管理するための時刻基準として用いられる。カウンタ126は、「管理タイマ」または「基準タイマ」となり得るクロックを構成する。カウンタ126は、クロックを有し、クロックに基づいて時刻を提供する。典型的には、カウンタ126は、クロックを発生し、クロックの周期毎にカウンタ値をインクリメントまたはデクリメントする。カウンタ126のカウント値は、タイマが計測する時刻を表す。カウンタ126は、例えばプロセッサ102を駆動するシステムバス上に配置された、ハードウェアタイマーである高精度イベントタイマー(HPET:High Precision Event Timer)などを用いて実装してもよいし、あるいは、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)などの専用回路を用いて実装してもよい。制御装置2は、タイマ103、119、91Aおよび91Bを、カウンタ126に同期させる。
【0066】
RTC128は、計時機能を有する一種のカウンタであり、現在時刻をプロセッサ102などへ提供する。
【0067】
フィールドネットワークコントローラ118は、ネットワーク110を介したフィールド機器90を含む他のデバイスとの間のデータの遣り取りを制御する。フィールドネットワークコントローラ118は、ネットワーク110を接続するコネクタと、他のデバイスとの間でタイミングを管理するための時刻基準として用いられるタイマ119を有する。
図4では、フィールド機器90のタイマ91はタイマ91A、91B…で示される。
【0068】
タイマ119ならびにフィールド機器90などのデバイスが有するカウンタ(タイマ91A,91B)については、上述のカウンタ126と同様の構成を採用できる。タイマ119は、カウンタ126と同期する。
【0069】
フィールドネットワークコントローラ118は、ネットワーク110を介した定周期通信を行うための通信マスタとして機能し、フィールドバスに接続されている各デバイスが有するカウンタが示すカウンタ値とタイマ119が示すカウンタ値との差分を逐次監視して、必要に応じて、カウンタ値にずれが発生するデバイスに対して補正を指示するための同期信号を出力する。このように、フィールドネットワークコントローラ118は、デバイスのカウンタが示すカウンタ値をタイマ119が示すカウンタ値と一致させるための指令をデバイスへ与える同期管理機能を有する。
【0070】
図2には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、制御装置2の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOS(Operating System)を並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0071】
本実施の形態に係る制御システム1においては、制御装置2およびサポート装置500が別体として構成されているが、これらの機能の全部または一部を単一の装置に集約するような構成を採用してもよい。
【0072】
(b2.サポート装置500の構成)
図3を参照してサポート装置500は、コンピュータなどの情報処理装置に相当する。サポート装置500は、携帯型および据え置き型の情報処理装置を含む。サポート装置500は、CPU(Central Processing Unit)501、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置で構成されるメモリ502、タイマ503、HDDなどの不揮発性に記憶装置で構成されるハードディスク504、入力インターフェイス505、表示コントローラ506、通信インターフェイス507、データリーダ/ライタ508を含む。これらの各部は、バス509を介して互いにデータ通信が可能なように接続されている。
【0073】
入力インターフェイス505は、CPU501とキーボード510、マウス(図示せず)、タッチパネル(図示せず)などの入力装置との間のデータ伝送を仲介する。表示コントローラ506は、ディスプレイ511と接続され、CPU501における処理の結果などを表示する。通信インターフェイス507は、USBを介して制御装置2または装置/ライン管理装置190と通信する。データリーダ/ライタ508は、CPU501と外部の記憶媒体であるメモリカード512との間のデータ伝送を仲介する。
【0074】
なお、
図2のメモリカード116と
図3のメモリカード512は、揮発性記憶媒体または不揮発性記憶媒体を含み、例えば、CF(Compact Flash:登録商標)、SD(Secure Digital)などの汎用的な半導体記憶デバイス、またはフレキシブルディスク(Flexible Disk)などの磁気記憶媒体、またはCD-ROM(Compact Disk Read Only Memory)などの光学記憶媒体を含む。
【0075】
ハードディスク504は、サポートプログラム590、転送プログラム595およびGUI(Graphical User Interface)プログラム550を含む各種プログラムおよびデータを格納する。実行されると転送プログラム595は、サポート装置500において設計されたUPG201およびデータを、制御装置2に転送する。GUIプログラム550は、サポートプログラム590または転送プログラム595が実行されることで提供されるツールを、ユーザが操作するためのインターフェイスを提供する。
【0076】
(b3.制御装置2のソフトウェア構成例)
次に、本実施の形態に係る制御システム1を構成する制御装置2のソフトウェア構成例について説明する。
【0077】
図4は、本実施の形態に係る制御装置2のソフトウェア構成例を示すブロック図である。
図4を参照して、制御装置2は、実行エンジン150と、時系列データベース180と、上位接続プログラム192と、ゲートウェイプログラム194とを含む。
【0078】
実行エンジン150は、各種プログラムの実行環境下において各種プログラムを実行する1種のプログラムを構成する。典型的には、この実行環境は、制御装置2のプロセッサ102が、二次記憶装置106に格納されているシステムプログラムを読出して主記憶装置108に展開して実行することで提供される。
【0079】
より具体的には、実行エンジン150は、フィールド機器90の制御に関連する制御関連処理を実現するための制御プログラム152と、変数管理プログラム160と、プログラムの実行順序を管理するスケジューラプログラム170と、入力プログラム172と、出力プログラム174とを含む。実行エンジン150は、さらに、時刻同期処理を実現するための同期アプリケーション177を含む。制御装置2は、制御に関するサービス処理を含む各種処理を実現するためのゲートウェイプログラム194および上位接続プログラム192を含む。
【0080】
制御プログラム152は、典型的には、データベース書込みプログラム156と、シリアライズ通信プログラム158と接続される。制御プログラム152は、実行されると、制御演算処理を実施する主たる部分に相当し、制御プログラム152は制御装置2の制御対象の製造装置または設備などに応じて任意に構成することができる。
【0081】
データベース書込みプログラム156は、制御プログラム152内に規定された命令によって呼び出され、時系列データベース180に対して指定されたデータを書込む。シリアライズ通信プログラム158は、データベース書込みプログラム156から時系列データベース180に対して書込まれるデータに対してシリアライズ処理を行う。ゲートウェイプログラム194は、クラウド上の装置と通信する。例えば、クラウド上のIoTサービスを提供する装置に対して、時系列データベース180の時系列データ182を提供する。データベース書込みプログラム156と、シリアライズ通信プログラム158と、ゲートウェイプログラム194とは、オプショナルな構成であってもよい。
【0082】
変数管理プログラム160は、実行エンジン150で利用可能な値を変数の形で管理する。より具体的には、変数管理プログラム160は、制御装置2の状態などを示すシステム変数と、制御装置2と接続されるフィールド機器90等の各種デバイスが保持する値を示すデバイス変数と、制御装置2で実行される制御プログラム152が保持する値を示すユーザ変数とを管理する。
【0083】
入力プログラム172は、制御装置2と接続されるアクチュエータ、センサなどのデバイスを含むフィールド機器90からの入力データを取得する機能を提供する。出力プログラム174は、制御装置2において実行される制御プログラム152によって算出される指令値(出力データ)を、ネットワーク110を介して接続される対象のデバイスであるフィールド機器90へ出力する。本実施の形態では、時刻同期処理のために同期アプリケーション177は、制御装置2の管理タイマの時刻を補正する補正プログラム178等の各種情報を含む。
【0084】
スケジューラプログラム170は、実行されるとスケジューラを提供する。スケジューラは、制御装置2のプロセスまたはタスクなどに対して、プロセッサ102を含むリソース割当てと実行タイミングなどを、プロセスまたはタスクに割当てられた実行の優先度に従い管理する。このような、プロセスまたはタスクは、制御プログラム152および変数管理プログラム160、入力プログラム172、出力プログラム174、および同期アプリケーション177等が制御装置2により実行されることにより生成され得るプロセスまたはタスクが含まれる。
【0085】
時系列データベース180は、典型的には、主記憶装置108または二次記憶装置106に配置され、データを格納する機能とともに、外部からの要求(クエリ)に応答して、指定されたデータを応答する検索機能を搭載する。時系列データベース180は、データベース書込みプログラム156により書込まれる時系列データ182を格納する。すなわち、時系列データベース180は、入力データ、出力データ、制御プログラム152による制御演算において算出される演算データ、製造データ、イベントデータの少なくとも一部を時系列に格納する。
【0086】
上位接続プログラム192は、製造実行システム400などの上位のネットワーク13に接続された外部装置との間でデータを遣り取りする。本実施の形態に係る制御装置2においては、制御装置2から製造実行システム400に対して入力データと演算データが出力されるとともに、製造実行システム400から製造情報を受信することができる。
【0087】
本実施の形態では、製造実行システム400は
図1の時系列DB450を有する。この場合には、上位接続プログラム192に代えて、あるいは、上位接続プログラム192の一部として、データベース接続プログラム193(図中ではデータベースを“DB”と示す)が設けられ得る。データベース接続プログラム193が実行されることにより、制御装置2内の時系列データベース180の時系列データ182は、製造実行システム400に転送されて、時系列DB450に格納され得る。
【0088】
変数管理プログラム160は、入力プログラム172がフィールドから取得する入力データ(状態値)および上位接続プログラム192が製造実行システム400から取得する製造データを変数として管理する。制御プログラム152は、変数管理プログラム160により管理されるシステム変数、デバイス変数、ユーザ変数を参照しつつ、予め指定された制御演算を実行し、その実行結果(出力データ)を変数管理プログラム160に出力する。制御システム1または制御装置2は、このような状態値または出力データを、フィールドの「観測値」として収集することができる。
【0089】
(b4.同期モジュールの構成)
図5は、本実施の形態に係る同期モジュール560の構成を模式的に示す図である。
図5に示す同期モジュール560は、
図5の同期アプリケーション177が実行されることによって提供される。
図5を参照して、同期モジュール560は、閾値取得モジュール521、補正モジュール522、時刻差算出モジュール523を含む。同期モジュール560において、これらモジュールは単一のモジュールで構成されてもよい。
【0090】
閾値取得モジュール521は、時刻差の予め定められた許容範囲を示す第1閾値に基づき、当該第1閾値以上の値を示す第2閾値を取得する。時刻差算出モジュール523は、基準時刻と管理タイマの時刻との間の時刻差を算出する。補正モジュール522は、カウンタ126の時刻を、基準時刻を示すように第1補正量で補正する第1補正処理またはカウンタ126の時刻を、当該基準時刻を示すように第1補正量よりも小さい第2補正量で補正する第2補正処理の一方を実施する。より具体的には、補正モジュール522は、算出された時刻差と第2閾値とを比較し、その比較の結果に基づき、時刻差が第2閾値より大きいと判断したときは上記の第1補正処理を実施し、時刻差が前記第2閾値以下であると判断したときは上記の第2補正処理を実施する。
【0091】
<C.時刻同期のアプリケーション>
図6は、本実施の形態に係るアプリケーション設計の概略処理フローチャートである。
図7は、
図6のアプリケーション設計の環境を模式的に示す図である。サポート装置500は、サポートプログラム590を実行することにより
図6のアプリケーション設計を支援する処理を実行するとともに、GUIプログラム550を実行することにより
図7のUI画面51をディスプレイ511に表示させる。
図7のUI画面51は、ユーザ操作を受付可能に構成されるオブジェクトを表示するウインドウ51A、51Bおよび51Cを含む。ウインドウ51Aは、制御装置2において同期アプリケーション177を起動して時刻同期処理を実行するか否かを、有効または無効で指定するユーザ操作を受付けるボタン51Dを含む。
図7のボタン51Dは、例えば「有効」が指定されたことを示す。
【0092】
ウインドウ51Bは、制御装置2の第1閾値を設定するためのユーザ操作を受付けるテキストボックス51Eを含む。テキストボックス51Eには、例えば500μs(マイクロ秒)が設定される。ウインドウ51Cは制御プログラム152をエディットするユーザ操作を受け付ける領域である。ウインドウ51Cのプログラムは、時刻同期が完了したか否かをフラグ40に基づき判断し、判断結果に基づき処理Aと処理Bの一方を実行する制御構造を示す。このような制御構造を表すプログラムを、以下では「制御構造プログラム51F」と呼ぶ。サポート装置500の転送プログラム595が実行されると、UI画面51で設定された情報は制御装置2に転送される。
【0093】
本実施の形態では、制御プログラム152は、予め定められたプログラミング言語の仕様に従い設計される。プログラミング言語は、典型的には、国際規格IEC61131-3に規定された、LD(ラダーダイアグラム:Ladder Diagram)、IL(インストラクションリスト:Instruction List)、ST(ストラクチャードテキスト:Structured Text)、FBD(ファンクションブロックダイアグラム:Function Block Diagram)、SFC(シーケンシャルファンクションチャート:Sequential Function Chart)等の任意の言語を用いて記述することができる。
【0094】
図6を参照して、サポート装置500は、ウインドウ51Aおよび51Bにおけるユーザ操作に基づき、時刻同期処理の有効または無効の設定と、第1閾値の設定を受け付ける(ステップS1)。サポート装置500は、ウインドウ51Cのユーザ操作に基づく制御構造プログラム51Fを受け付ける(ステップS2)。サポート装置500は、ステップS1で受け付けた情報と制御構造プログラム51Fを制御装置2に転送する(ステップS3)。制御装置2では、サポート装置500から転送された制御構造プログラム51Fは、スケジューラプログラム170によって管理されるスケジュールに従って制御周期に同期して実行される。
【0095】
制御装置2は、サポート装置500から受信した情報に基づき、時刻同期処理の実行が「有効」に設定されたことを判定すると、ステップS4以降の時刻同期処理を開始する(ステップS4)。制御装置2は時刻同期処理によって時刻同期が完了したときフラグ40を「1」にセットする。フラグ40は、時刻同期が完了しないときは「0」を示す。
【0096】
制御装置2は、時刻同期処理に並行して制御構造プログラム51Fを実行する。制御構造プログラム51Fの実行において、制御装置2は、フラグ40に基づき時刻同期は完了していないと判断する間は処理Aではなく処理Bを実施し(ステップS5)、フラグ40に基づき時刻同期が完了したと判断すると(ステップS6)、処理Bではなく処理Aを実施する(ステップS7)。処理Aと処理Bの詳細は後述する。
【0097】
<D.時刻差の取得>
本実施の形態では、制御装置2のスケジューラは、タスクまたはプロセスの実行の優先度を管理する。より具体的には、制御構造プログラム51Fの処理を含む制御関連処理のプロセスまたはタスクは最も高い優先度が割り当てられて、時刻同期処理とサービス処理のプロセスまたはタスクは低い優先度が割り当てられる。スケジューラは、制御周期において、プロセッサ102を、制御関連処理に最優先で割当て、制御関連処理の実行が終了すると、余りの「余裕時間」において、プロセッサ102を、優先度の低い処理に割当てる。これにより、各制御装置2では制御関連処理を制御周期内で実行することが保証されるとともに、ネットワーク11には、制御装置2間で遣り取りされるデータが優先して伝送されて、データの到達時間を保証できる。本実施の形態では制御周期の「余裕時間」には主に時刻同期処理が実行される。
【0098】
(d1.時刻差の取得の通信シーケンス)
制御システム1では、時刻同期のために、例えばIEEE1588、IEEE802.1AS,IEEE802.1AS-Revなどの高精度時刻同期プロトコルを採用することができる。高精度時刻同期プロトコルとして、例えば、IEEE1588には、gPTP(generalized Precision Time Protocol)が規定されている。gPTPは、基準タイマであるマスタと、基準タイマに同期するタイマであるスレーブとを含む通信システムに適用され得る。gPTPでは、マスタとスレーブとの間で定期的に時刻配信メッセージ21を有したフレームを遣り取りし、その過程で得られた時刻差等の情報に基づいて、スレーブの時刻をマスタの基準時刻に合わせる補正が行なわれる。本実施の形態では、制御装置2は、時刻の補正を、基準タイマのクロック周波数と管理タイマのクロック周波数との差である周波数差に基づき算出される時刻差(以下、周波数ベース時刻差という)と、時刻配信メッセージ21が示す基準時刻のタイムスタンプに基づき算出される時刻差(以下、メッセージベース時刻差という)との両方のうちの一方を用いて実施することができる。
【0099】
周波数ベース時刻差を、
図8を参照し説明する。
図8は本実施の形態に係る通信シーケンスの一例を示す図である。
図8は、例えばgPTPに従う通信シーケンスを示す。この通信シーケンスでは、マスタMとスレーブSとが連係することにより、マスタとスレーブとの間の時刻同期のための通信が実現される。説明を簡単にするために、マスタMは、中継器を介さずにスレーブSと通信する。
【0100】
図8では、スレーブS(制御装置2)は、ネットワークに接続されたマスタ装置から周期的に配信されるメッセージ(Sync)を受信する。メッセージ(Sync)は、当該マスタ装置のクロックに基づく当該メッセージの送信時刻を含む。スレーブSは、時刻差算出モジュール523として、(i)周期的に配信される各メッセージ(Sync)について、(i-1)管理タイマが計測する時刻であって当該メッセージ(Sync)を受信したときを示す第1時刻を算出し、(i-2)メッセージ(Sync)が有する送信時刻とネットワークの伝搬遅延時間とに基づき、マスタ装置のクロックが計測する時刻であって、前記マスタ装置が前記配信メッセージを送信したときを示す第2時刻を算出し、(ii)メッセージ(Sync)と当該メッセージの配信から1周期後に配信されたメッセージ(Sync)とについて、(ii-1)両メッセージの間の第1時刻の差と、当該両メッセージの間の第2時刻の差とから、マスタ装置のクロックの周波数と管理タイマのクロックの周波数との間の差を算出し、(ii-2)算出された周波数の差と上記の周期とに基づき周波数ベース時刻差を算出する。
【0101】
より具体的には、スレーブSは、少なくとも2回、マスタMから時刻配信のメッセージ(Sync)を受信する。スレーブSは各メッセージ(Sync)について、Sync受信時刻とSync推定受信時刻を保存(格納)する。Sync受信時刻は、管理タイマが計測した時刻であってメッセージ(Sync)をスレーブSが受信した時刻を示し、Sync推定受信時刻は、マスタMの基準タイマが計測したと推定される時刻であって、メッセージ(Sync)をスレーブSが受信した時刻を示す。スレーブSは、Sync推定受信時刻をgPTPスタックに従って算出する。この算出は、後述する
図21に示すようにメッセージのタイムスタンプとネットワーク上のメッセージの伝搬遅延時間とに基づき算出される。
【0102】
スレーブSはSync受信周期も算出する。スレーブSは、次のメッセージ(Sync)受信までのマスタMとの時刻差を算出する。例えば、時刻差算出モジュール523は、(時刻差=周波数差×Sync受信周期)の演算式に従って時刻差を算出(推定)する。
【0103】
スレーブSは周波数差を、演算式((Tref_d-Tlocal_d)/(Tlocal_d))に従い算出する。Tref_dは(Tref-Trev_prev)に従い算出されて、Tlocal_dは(Tlocal-Tlocal_prev)に従って算出される。ここで、Trefは2回目のメッセージ(Sync)をスレーブSが受信したときの推定される基準時刻を示し、Tlocalは2回目のメッセージ(Sync)をスレーブSが受信したときのスレーブSの管理タイマが計測する時刻を示す。また、Tref_prevは1回目のメッセージ(Sync)をスレーブSが受信したときの推定される基準時刻を示し、Tlocal_prevは1回目のメッセージ(Sync)をスレーブSが受信したときのスレーブSの管理タイマが計測する時刻を示す。
【0104】
図8に示す算出によれば、例えば、スレーブSの管理時刻が20秒進んだ時にマスタMの時間軸において25秒進んだ場合、周波数差は0.25と算出される。次にスレーブSの管理時刻が20秒進むとき、当該管理時刻とマスタMの基準時刻の間の時刻差は、スレーブSの管理時刻では0.25×20秒=5秒と算出される。このように、周波数ベース時刻差は、時刻配信メッセージ21の通信周期で基準タイマと管理タイマ間のクロック周波数差が1つの原因となって生じる時刻差を示す。
【0105】
次に、メッセージベース時刻差を、
図21を参照し説明する。
図21は、本実施の形態に係る通信シーケンスの一例を示す図である。
図21はgPTPの通信シーケンスを示す。この通信シーケンスにおいても、説明を簡単にするために、マスタMは、中継器を介さずにスレーブSと通信する。
【0106】
図21では、スレーブS(制御装置2)は、ネットワークに接続されたマスタMから配信されるメッセージを受信する。このような配信メッセージは、マスタMが有するクロックに基づく当該メッセージの送信時刻を含む。スレーブSは、時刻差算出モジュール523として、マスタMから受信したメッセージの送信時刻とネットワークのメッセージ伝搬遅延時間とに基づき基準時刻を算出し、そして、管理タイマが計測した当該メッセージの受信時刻と上記の算出された基準時刻との差に基づきメッセージベース時刻差を算出する。
【0107】
より具体的には、スレーブSは、マスタMと遣り取りするgPTPの時刻配信メッセージ21により取得したタイムスタンプ(時刻)に基づき、メッセージベース時刻差を算出(推定)する。まず、マスタMはメッセージ(Sync)とメッセージ(FollowUp)をスレーブSに転送する。メッセージ(FollowUp)は、マスタMの基準タイマで計測されたメッセージ(Sync)の送信時刻t1を示す。スレーブSは、メッセージ(フレーム)の伝搬遅延時間を取得するために、時刻t3においてメッセージ(Pdelay_Req)をマスタMに送信し、その後、マスタMからメッセージ(Pdelay_Req)に対する応答のメッセージ(Pdelay_Resp)を受信し、続いて、メッセージ(Pdelay_Resp_FollowUp)を受信する。メッセージ(Pdelay_Resp)は、マスタMがメッセージ(Pdelay_Req)を受信した時の基準タイマで計測された時刻t4を示し、メッセージ(Pdelay_Resp_FollowUp)は、マスタMがメッセージ(Pdelay_Resp)を送信した時の基準タイマで計測された時刻t5を示す。スレーブSは、メッセージを受信した時刻t2と時刻t6およびマスタMから受信した各メッセージが示すタイムスタンプに基づき、上記の伝搬遅延時間tdを(td=((t6-t3)-(t5-t4))/2)によって算出する。スレーブSは、スレーブSの管理タイマがメッセージ(Sync)を受信した時の、マスタMの基準タイマが計測した時刻、すなわち基準時刻(t1+td)を推定し、時刻差を(t2-(t1+td))に従い算出(推定)する。
図21の通信シーケンスを実施することで、スレーブSは、マスタMの基準時刻を推定し、推定された基準時刻からメッセージベース時刻差を推定できる。
【0108】
本実施の形態では、「時刻同期処理」は、
図8または
図21の通信シーケンスを実施して基準時刻および時刻差を推定する処理を含む。時刻同期処理は通信周期に同期して実施される。「通信周期」は、マスタMとスレーブSとの間で、同期メッセージ(メッセージ(sync))を、ネットワーク11を介して伝送するための周期を示す。より具体的には、通信周期は、マスタMがメッセージ(Sync)をスレーブSに送信する周期またはスレーブSがマスタMからメッセージ(Sync)を受信する周期を示す。各制御装置2のスケジューラは、このような通信周期に同期して、プロセッサ102を通信シーケンスに従う処理に割当てる。
【0109】
本実施の形態に係る時刻同期のプロトコルはgPTPまたはPTPに限定されず、有線または無線通信の他のプロトコルを適用できる。例えば、NTP(Network Time Protocol)またはSNTP(Simple Network Time Protocol)、GPS(Global Positioning System)または同期イーサネット(登録商標)のプロトコル、CS-NMS(Clock-sampling mutual network synchronization)、RBS(Reference Broadcast Synchronization)およびRBIS(Reference Broadcast Infrastructure Synchronization)のプロトコルを適用することもできる。
【0110】
<E.補正処理>
本実施の形態では、制御装置2は管理時刻を基準時刻に合わせるような補正として、第1補正処理に相当する位相補正または第2補正処理に相当する周波数補正を実施する。このような補正処理で扱う時刻差は、周波数ベース時刻差またはメッセージベース時刻差であって正または負の値を示す。
【0111】
(e1.位相補正と周波数補正)
上記に述べた検出される時刻差を、時刻差Dとして補正処理を説明する。位相補正では、時刻差Dを第1補正量として扱い、制御装置2は管理タイマの時刻に当該時刻差を加算することにより、管理タイマを速やかに基準タイマに合わせる。これに対して、周波数補正では、制御装置2は管理タイマを構成するカウンタの1回あたりの増加値を上記の時刻差Dの大きさに基づく第2補正量で調整することで、徐々に時刻差を小さくして、管理タイマを基準タイマに合わせる。例えば、時刻差Dに基づきPID(Proportional-Integral-Differential)制御の算出式に従って増加値を算出する。
【0112】
または例えば、制御装置2は、時刻差DをN(N≧2)個の値に分割し、分割された値Di(i=1,2,3,…N)の各値Diを周期的に管理タイマが計測する時刻の値に第2補正量に相当する値を加算または減算(インクリメントまたはデクリメント)してもよい。これにより、加算または減算がN回繰返されて、管理タイマの時刻を、徐々に(滑らかに)変化させることができる。
【0113】
また、第1補正処理で用いる第1補正量は時刻差Dに限定されない。例えば、制御装置2は、時刻差DをM(M>N≧2)個の値に分割し、分割された値Dj(j=1,2,3,…M)の各値Djを周期的に管理タイマが計測する時刻の値に加算または減算(インクリメントまたはデクリメント)してもよい。これにより、第1補正処理では、第2補正量よりも大きい第1補正量である値の加算または減算がM回繰返されて、管理タイマの時刻を変化させることができる。
【0114】
なお、NおよびMの値または値DiおよびDjは可変であってよい。例えば、これらの値は時刻差Dの大きさに基づき可変であってよい。この値DiまたはDjを用いた加算または減算の周期は、制御周期に同期してもよい。この場合には、制御システム1を、N回またはM回の制御周期をかけて徐々に時刻同期の完了状態に移行させることができる。本実施の形態では、第2補正量は第1補正量よりも小さい値とすることで、第1補正処理によって制御システム1を時刻同期完了の状態に速やかに収束させることが可能となり、第2補正処理によって制御システム1を時刻同期完了の状態に徐々に近づけることで精度良く収束させることが可能となる。
【0115】
<F.時刻同期処理のフローチャート>
制御装置2が実施する時刻同期処理について、位相補正または周波数補正が実施されるケースを説明する。
図9は、本実施の形態に係る時刻同期処理のフローチャートである。
図9を参照して、制御装置2は、起動すると、サポート装置500から受信した情報に基づき、時刻同期処理が有効かを判定し(ステップS10)、有効でないと判定すると(ステップS10でNO)処理を終了するが、有効と判定すると(ステップS10でYES)、ステップS11に移行する。
【0116】
制御装置2は、サポート装置500から受信した情報から第1閾値を取得し(ステップS11)、時刻差を算出する(ステップS13)。より具体的には、制御装置2は、時刻配信メッセージ21を2回以上受信するかを判定し(ステップS12)、2回以上受信していないと判定すると(ステップS12でNO)、ステップS12を繰り返すが、時刻配信メッセージ21を2回以上受信したと判定すると(ステップS12でYES)、制御装置2は、時刻差を算出する(ステップS13)。ステップS13では、例えば周波数ベース時刻差が算出される。制御装置2は、第1閾値以上の値を示す第2閾値を取得し設定する(ステップS14、S15)。第2閾値の取得の詳細は後述する。
【0117】
制御装置2は、時刻補正を開始するために補正モジュール522を起動する(ステップS16)。
【0118】
制御装置2は、時刻配信メッセージ21を受信するかを判定する(ステップS17)。時刻配信メッセージ21を受信しないと判定される(ステップS17でNO)間は、ステップS17を繰り返すが、時刻配信メッセージ21を受信したと判定すると(ステップS17でYES)、時刻差を算出する(ステップS18)。ステップS18では、例えば周波数ベース時刻差とメッセージベース時刻差が算出される。
【0119】
制御装置2は、ステップS18で算出された周波数ベース時刻差と第1閾値とを比較し、比較の結果に基づき、周波数ベース時刻差が第1閾値以下であるとの条件が一定期間継続して満たされるかを判定する(ステップS19)。ステップS18とS19では、制御装置2は、管理タイマが周期的に出力する時刻のそれぞれについて、周波数ベース時刻差を算出し、このように算出された各時刻差について上記の条件が満たされる期間が一定期間継続するか否かを判定する。
【0120】
上記の条件が満たされる状態が一定期間継続したと判定されると(ステップS19でYES)、制御装置2は時刻同期が完了したことを示すようフラグ40に「1」を設定し(ステップS20)、ステップS21に移行する。一方、上記の条件が満たされる状態が一定期間継続しないと判定されると(ステップS19でNO)、制御装置2はステップS20の処理を実行せずに、ステップS21に移行する。
【0121】
ステップS21では、制御装置2はステップS18とS19において算出された複数の周波数ベース時刻差の代表となる時刻差を第2閾値と比較し、比較結果に基づき、当該代表の時刻差が第2閾値以上かを判定する(ステップS21)。この代表の時刻差は、ステップS18とS19において算出された複数の周波数ベース時刻差の平均値、最頻値、中央値、最新値等を含む。
【0122】
制御装置2は、代表の時刻差は第2閾値以上であるか否かを判定し、判定結果に基づき、ステップS18とステップS19で算出されたメッセージベース時刻差を用いて補正処理を実施する。より具体的には、制御装置2は、代表の時刻差は第2閾値以上であると判定すると(ステップS21でYES)位相補正処理を実施し(ステップS22)、代表の時刻差は第2閾値以上でない、すなわち第2閾値未満であると判定すると(ステップS21でNO)周波数補正処理を実施する(ステップS23)。その後、ステップS17に戻る。
【0123】
図9の処理では、制御装置2は時刻同期が完了したと判定した場合(ステップS19でYES)、常に時刻差は第2閾値以下を示すと判定し(ステップS21でNO)周波数補正(ステップS23)を実施する。このように、制御装置2において時刻同期が完了した状態では(ステップS19でYES)、補正処理が実施されるとしても周波数補正が実施されて位相補正処理は実施されないので、管理タイマの「時刻の後戻り」が生じることはない。本実施の形態では、管理タイマの時刻が基準時刻より進んでいる場合に、管理タイマの時刻に時刻差を加算する位相補正処理を実施すると、管理タイマの時刻の変動量が大きいために管理タイマの時刻が過去の時刻に戻ることがある。このようなケースを「時刻の後戻り」という。周波数補正処理では、時刻差を徐々に小さくするよう管理タイマの時刻を補正するので「時刻の後戻り」を生じさせることなく、管理タイマを精度良く時刻同期の完了状態に収束させることができ、その後は、時刻同期が完了した状態を維持することが可能となる。
【0124】
(f1.第2閾値の取得)
図10~
図13は、本実施の形態に係る第2閾値の取得を説明する図である。ステップS14およびステップS15で第2閾値を取得する仕組みを説明する。
【0125】
まず、閾値取得モジュール521は、例えば、周波数ベース時刻差を用いた算出式に従い第2閾値を算出する第1算出モジュールを含む。第1算出モジュールによって、
図9のステップS14では、制御装置2は、ステップS13で算出された周波数ベース時刻差を用いて第2閾値を取得する。より具体的には、制御装置2は、第2閾値を(第2閾値=時刻差×A)の式に従い算出する。ただし、係数Aは(A>1)の条件を満たす。例えば、A=1の場合に算出される第2閾値はステップS21の条件が満たされて位相補正を繰り返すことになることを回避するために(A>1)の条件が要求される。また、第2閾値が極端な値となることを防止するために(第2閾値≦上限値X)の条件を満たすことが要求される。また、「時刻の後戻り」を防止するために(第2閾値≧第1閾値)の条件を満たすことが要求される。値Aと値Xは、実験等に基づき設定される。
【0126】
図14は、本実施の形態に係る時刻同期処理の他のフローチャートである。
図14では、
図9のフローチャートからステップS12およびS13の処理が省略されているが、他の処理は
図9と同じであるから説明は繰り返さない。
図14のステップS14では、制御装置2は、ユーザが設定した第1閾値に基づき第2閾値を取得する。
【0127】
閾値取得モジュール521は、第1閾値と予め定められた値の間の大きさの関係を取得し、この関係および第1閾値を用いた算出式に従い、第2閾値を算出する第2算出モジュール含む。例えば、制御装置2は、第1閾値が予め定められた値未満であるとの関係性が取得された場合と、第1閾値が当該予め定められた値以上であるとの関係性が取得された場合とで、第2閾値を異ならせる。例えば、
図12のウインドウ51Bにおいて第1閾値は設定される。制御装置2は、
図13に示すように、第1閾値が1ms(ミリ秒)未満であるときは第2閾値に1msを設定し、第1閾値が1ms以下である場合は第2閾値に(第1閾値×2)の値を設定する。この設定方法であれば、第2閾値が第1閾値よりも小さくなりすぎることで位相補正が繰り返し実施されるようなケースを回避できる。また、第2閾値が極端な値となることを防止するために(第2閾値≦上限値X)の条件を満たすことが要求される。
【0128】
他の方法として、第1算出モジュールまたは第2算出モジュールの算出に代えて、閾値取得モジュール521はLUT(look Up table)を利用して第2閾値を取得するよう構成されてもよい。より具体的には、制御装置2は、
図10のUI画面のウインドウ51Bの複数の値のうちからユーザが選択した値を第1閾値として取得し、制御装置2は、当該第1閾値に基づき
図11のテーブル44から第2閾値を検索する。テーブル44は制御装置2に予め格納される。テーブル44は、第1閾値と第2閾値の組を表す複数のレコードが登録される。第1閾値と第2閾値の組合わせは実験等により取得される。例えば、ウインドウ51Bにおいて第1閾値が選択された場合に、
図11では、テーブル44からレコードR1の第2閾値が検索される。なお、テーブル44の第2閾値は、少なくとも第1閾値以上であるとの条件、および、上記に述べた上限値Xの条件を満たす。
【0129】
図22は、本実施の形態に係る時刻差と第2閾値の関係を模式的に示すグラフである。このグラフの縦軸は、時刻差の値がとられ、横軸は経過時間がとられる。
図22で説明される時刻差は、周波数ベース時刻差またはメッセージベース時刻差を示す。時刻差D3は、ステップS14で第2閾値を算出(推定)するために取得された時刻差を示す。
図22では、一点鎖線で示す第2閾値と、グラフ221および222とが示される。一点鎖線で示す第2閾値は、制御装置2がステップS14で(第2閾値=時刻差D3×A、ただしA=5)に従い算出(推定)した値を示す。グラフ221は、ステップS14で第2閾値を算出(推定)するために取得した時刻差D3をベースにした場合の第2閾値の変化、すなわち(D3×A(ただし、Aの値を1,2,3,4,5と変化させた場合))の式で算出される値の変化を表す。また、グラフ222は、制御装置2が当該周期SYに同期してステップS18で算出(推定)する時刻差の変化を表す。
【0130】
図22では、位相補正が実施された直後の時刻T1では、時刻差は0(ゼロ)であって、制御装置2の管理タイマは基準タイマに同期した状態である。この状態では、時刻差D3は、第2閾値より小さいはずなので、制御装置2は、当該位相補正の直後から、数回分の周期SYの長さに相当する期間TTの間は周波数補正を実施する。すなわち、位相補正を実施直後の時刻差が0(ゼロ)の状態から次の位相補正を実施するまでの間(期間TT)は、複数回の周波数補正の実施が可能となる。このような周波数補正が実施されることで、グラフ222が示す時刻差が大きくなるスピードは時間が経過するに従いゆるやかになる。期間TTの経過後において、制御装置2は、時刻差が一点鎖線で示す第2閾値を超えたとことを判定し、当該判定に応じて位相補正を実施する。
【0131】
また、
図22のケースとは異なり第2閾値は(第2閾値=時刻差D3×A、ただしA=1)に設定されるケースを想定すると、当該ケースでは、時刻T1で位相補正が実施された直後にメッセージ(Sync)を受信した時の時刻T2で時刻差が第2閾値を超える可能性がある。そのため、制御装置2は時刻T2で位相補正を実施する。このようなケースでは、位相補正が繰返し実施されることになるため、「時刻の後戻り」を生じさせる可能性が高く、時刻差が収束しない可能性がある。
【0132】
<G.具体的なケース>
本実施の形態では、制御装置2は、周波数ベース時刻差に基づき第2閾値を設定する。この場合、制御装置2は、周波数ベース時刻差の大きさに応じて第2閾値を変更して、位相補正と周波数補正を切替るための第2閾値を、第1閾値または周波数ベース時刻差の大きさに応じて変更することができる。
【0133】
図15~
図20は本実施の形態に係る第2閾値が可変に設定されることによる利点を説明するグラフである。
図15、
図16および
図17は、本実施の形態とは異なり第2閾値を固定としたケースを示す。これらケースでは、第2閾値が固定値であるため、第2閾値の大きさ、または、第1閾値と第2閾値の値の大きさの関係が要因となって、時刻同期の完了までに時間を要する。
図15では、第2閾値は第1閾値に比べて大きすぎるために、位相補正が実施された後もメッセージベース時刻差は大きい状態のままであるが、そのような状態で周波数補正が開始されるので、時刻同期の完了までに長時間を要する。
図16では、第2閾値が小さすぎるために、メッセージベース時刻差が小さい状態でも位相補正のみが繰り返し実施され、その結果、時刻同期の完了までに長時間を要する。
図17では、第2閾値は(第2閾値<第1閾値)の関係性を有するために、時刻同期が完了した後の時刻同期中においても位相補正が実施される。その結果、「時刻の後戻り」が生じる可能性が高い。
【0134】
これに対して
図18、
図19および
図20は、第2閾値を固定ではなく周波数時刻差の大きさに応じて変更するケースを示す。
図18は、
図15のケースにおいて第2閾値を周波数ベース時刻差に基づき設定する場合を示す。より具体的には、
図18では、第1閾値に比べて第2閾値に大きすぎない値が設定されるので、位相補正と周波数補正とを組み合わせて実施可能となり、
図15のケースに比べて時刻同期の完了までに要する時間を短くできる。
図19は、
図16のケースにおいて第2閾値を周波数ベース時刻差に基づき設定する場合を示す。より具体的には、
図19では、第1閾値に比べて第2閾値は大きすぎず、且つ小さすぎない値が設定されるので、位相補正と周波数補正とを組み合わせて実施可能となり、
図15または
図16のケースに比べて時刻同期の完了までに要する時間を短くできる。
図20は、
図17のケースにおいて第2閾値を周波数ベース時刻差に基づき設定する場合を示す。より具体的には、
図20では、第2閾値は(第1閾値=第2閾値)の関係を有するよう設定されるので、
図17で示したような「時刻の後戻り」を防止できる。
【0135】
<H.制御構造プログラムの処理例>
制御構造プログラム51Fが実行されると、制御装置2は制御関連処理を実施する。例えば、この制御関連処理は、制御装置2は時系列DB450に格納するために、製造実行システム400にクエリを発行する処理を含む。このクエリは、時系列にデータを格納するためにデータベース操作言語(SQL:Structured Query Language)に従っている。データには、制御装置2が収集した観測値および各観測値に対応付けられるタイムスタンプとして管理時刻が含まれる。各制御装置2において時刻同期が完了した場合、各制御装置2からのタイムスタンプは互いに同期した時刻を示す。したがって、製造実行システム400は時系列DB450において、タイムスタンプに基づき、観測されたタイミングを一致させて各制御装置2からの観測値の時系列データを集約(すなわち、統合)することができる。このように集約されたデータを用いれば、観測値の解析が容易になる。
【0136】
これに対して、制御装置2において時刻同期が完了していない場合、各制御装置2のタイムスタンプの時刻は同期していないので、製造実行システム400は時系列DB450において観測値の時系列データを集約したとしても、集約されたデータを観測時刻に基づき解析することはできない。
【0137】
制御構造プログラム51Fの処理Aは時刻同期が完了したときに実施される処理を含む。より具体的には、処理Aでは、制御装置2は管理タイマが出力する時刻のタイムスタンプと観測値を有した時系列データを生成し、製造実行システム400に送信する。処理Bは、時刻同期が完了していないときに実施される処理を含む。より具体的には、処理Bでは、制御装置2は処理Aを実行しない。または、処理Bでは、制御装置2はタイムスタンプと観測値と「時刻同期未完了」の識別子を有した時系列データを生成し、製造実行システム400に送信する。
【0138】
このように、時刻同期処理において設定されるフラグ40を、制御構造プログラム51Fの実行時に制御装置2が参照することで、上記のように時刻同期が未完了であるときに実施する制御関連処理を、時刻同期が完了したときに実施する制御関連処理とは異ならせることができる。なお、フラグ40に基づき実行される処理Aと処理Bは、上記に述べた製造実行システム400への観測値の転送に限定されない。
【0139】
上記に述べた時刻同期処理では、第2閾値は周波数ベース時刻差に基づき設定されたが第2閾値はメッセージベース時刻差に基づき設定されてもよい。また、上記に述べた時刻補正処理に用いる補正量はメッセージベース時刻差に基づき設定されるが、補正量は周波数ベース時刻差に基づき設定されてもよい。なお、このような設定の仕方は、gPTPの時刻補正を、周波数ベース時刻差を用いた時刻補正に限定するものではない。
【0140】
<I.プログラム>
制御装置2のプロセッサ102は、二次記憶装置106のプログラムを実行することにより、上記に述べた時刻同期の処理および制御関連処理または方法を実現する。
【0141】
これら処理を実現するために実行されるプログラムおよびデータは、外部装置から二次記憶装置106にダウンロードされてもよい。より具体的には、メモリカード116から、メモリカードインターフェイス109を介してダウンロードされる、または、ネットワークに接続される外部装置から上位ネットワークコントローラ105を介してダウンロードされる。
【0142】
サポート装置500のCPU501は、ユーザに対し支援ツールを提供する。ハードディスク504には支援ツールを実現するためのプログラムおよびデータなどを記憶し得る。支援ツールを実現するためのプログラムおよびデータは、通信インターフェイス507および各種通信回線を介してハードディスク504にダウンロードされてもよい。または、メモリカード512を介してハードディスク504にダウンロードされるとしてもよい。
【0143】
メモリカード116またはメモリカード512は、コンピュータその他装置、機械等が記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的または化学的作用によって蓄積する媒体である。
【0144】
<J.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
FA(ファクトリオートメーション)の制御装置(2)であって、
ネットワーク(11)を接続するコネクタ(105)と、
タイマ(126)と、
対象の制御に関連する処理を実施する制御処理部(152)と、
時刻同期の処理を実施する時刻同期処理部(560)と、を備え、
前記時刻同期処理部は、
基準時刻と前記タイマが計測した時刻との間の時刻差を算出する時刻差算出部(523)と、
前記時刻差の許容範囲を示す第1閾値以上である第2閾値を取得する閾値取得部(521)と、
前記タイマの時刻を、前記基準時刻を示すように第1補正量で補正する第1補正処理(S22)または当該タイマの時刻を、前記基準時刻を示すように前記第1補正量よりも小さい第2補正量で補正する第2補正処理(S23)の一方を実施する補正部(522)と、を含み、
前記補正部は、
前記時刻差が前記第2閾値以上であるとき前記第1補正処理を実施し、前記時刻差が前記第2閾値未満であるとき前記第2補正処理を実施する、制御装置。
[構成2]
前記タイマの時刻は、当該タイマが有するクロックに基づいた時刻を示し、
前記基準時刻は、前記ネットワークに接続されるマスタ装置のクロックに基づいた時刻を示し、
前記時刻差算出部は、前記タイマのクロックの周波数と前記マスタ装置のクロックの周波数の差に基づき前記時刻差を算出する、構成1に記載の制御装置。
[構成3]
前記制御装置は、前記ネットワークに接続されたマスタ装置から配信されるメッセージ(21)を受信する通信部を、さらに備え、
前記マスタ装置からの配信メッセージは、当該マスタ装置のマスタクロックに基づく当該メッセージの送信時刻を含み、
前記時刻差算出部は、
前記マスタ装置から受信した前記配信メッセージの前記送信時刻と前記ネットワークの伝搬遅延時間とに基づき前記基準時刻を算出し、
前記タイマが計測した前記配信メッセージの受信時刻と算出された前記基準時刻との差に基づき前記時刻差を算出する、構成1または2に記載の制御装置。
[構成4]
前記時刻同期処理部は、
前記時刻差が前記第1閾値以下であることの同期条件が満たされるか否かを判定し、
前記補正部は、前記同期条件が満たされたことの判定に応じて、前記時刻差が前記第2閾値以上であるとき前記第1補正処理を実施し、前記時刻差が前記第2閾値未満であるとき前記第2補正処理を実施する、構成1から3のいずれか1に記載の制御装置。
[構成5]
前記閾値取得部は、
前記時刻差を用いた算出式に従い前記第2閾値を算出する、構成1から4のいずれか1に記載の制御装置。
[構成6]
前記閾値取得部は、
前記第1閾値と予め定められた値の間の大きさの関係および前記第1閾値を用いた算出式に従い、前記第2閾値を算出する、構成1~5のいずれか1に記載の制御装置。
[構成7]
前記第1補正処理は、
前記タイマの時刻を前記第1補正量で補正する処理を、M回(ただし、M≧2)繰り返し、
前記第1補正量は、前記時刻差の値をM個に分割した値に基づく補正量を含む、構成1~6のいずれか1に記載の制御装置。
[構成8]
前記第2補正処理は、
前記タイマの時刻を前記第2補正量で補正する処理を、N回(ただし、N≧2)繰り返し、
前記第2補正量は、前記時刻差の値をN個に分割した値に基づく補正量を含む、構成1~7のいずれか1に記載の制御装置。
[構成9]
前記時刻同期処理部は、前記時刻差が前記第1閾値以下であることの同期条件が満たされるか否かを判定し、
前記対象の制御に関連する処理は、前記同期条件が満たされと判定されたときに実施される第1処理と、当該同期条件が満たされと判定されたことに応じて実施される処理であって前記第1処理とは異なる第2処理を含む、構成1~8のいずれか1に記載の制御装置。
[構成10]
前記第1処理は、前記対象の制御に関連した観測値と観測されたタイミングを示す前記タイマの時刻を有するデータの収集処理を含む、構成9に記載の制御装置。
[構成11]
FA(ファクトリオートメーション)の制御システムであって、構成1~10のいずれか1に記載の複数の制御装置を備える制御システム。
[構成12]
FA(ファクトリオートメーション)の制御装置(2)が実施する方法であって、
前記制御装置は、ネットワーク(11)を接続するコネクタ(105)と、タイマ(126)とを備え、
前記方法は、
対象の制御に関連する処理を実施すること、および
時刻同期の処理を実施すること、を備え、
前記時刻同期の処理を実施することは、
基準時刻と前記タイマが計測した時刻との間の時刻差を算出すること、
前記時刻差の許容範囲を示す第1閾値以上である第2閾値を取得すること、
前記タイマの時刻を、前記基準時刻を示すように第1補正量で補正する第1補正処理または当該タイマの時刻を、前記基準時刻を示すように前記第1補正量よりも小さい第2補正量で補正する第2補正処理の一方を実施すること、を含み、
前記一方を実施することは、
前記時刻差が前記第2閾値以上であるとき前記第1補正処理を実施し、前記時刻差が前記第2閾値未満であるとき前記第2補正処理を実施することを含む、方法。
[構成13]
FA(ファクトリオートメーション)の制御装置(2)のプロセッサ(102)に方法を実施させるためのプログラム(177)であって、
前記制御装置は、ネットワーク(11)を接続するコネクタ(105)と、タイマ(126)を備え、
前記方法は、
対象の制御に関連する処理を実施すること、および
時刻同期の処理を実施すること、を備え、
前記時刻同期の処理を実施することは、
基準時刻と前記タイマが計測した時刻との間の時刻差を算出すること、
前記時刻差の許容範囲を示す第1閾値以上である第2閾値を取得すること、
前記タイマの時刻を、前記基準時刻を示すように第1補正量で補正する第1補正処理または当該タイマの時刻を、前記基準時刻を示すように前記第1補正量よりも小さい第2補正量で補正する第2補正処理の一方を実施すること、を含み、
前記一方を実施することは、
前記時刻差が前記第2閾値以上であるとき前記第1補正処理を実施し、前記時刻差が前記第2閾値未満であるとき前記第2補正処理を実施することを含む、プログラム。
【0145】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【0146】
1 制御システム 2,2A,2B,2C 制御装置、3A,3B,3C 工程、11,12,13,14,110 ネットワーク、21 時刻配信メッセージ、40 フラグ、44 テーブル、51 画面、51A,51B,51C ウインドウ、51D ボタン、51E テキストボックス、51F 制御構造プログラム、90 フィールド機器、91,91A,91B,103,119,503 タイマ、102 プロセッサ、104 チップセット、105 上位ネットワークコントローラ、106 二次記憶装置、107 コントローラ、108 主記憶装置、109 メモリカードインターフェイス、116,512 メモリカード、118 フィールドネットワークコントローラ、126 カウンタ、150 実行エンジン、152 制御プログラム、156 データベース書込みプログラム、158 シリアライズ通信プログラム、160 変数管理プログラム、170 スケジューラプログラム、172 入力プログラム、174 出力プログラム、177 同期アプリケーション、178 補正プログラム、180 時系列データベース、182 時系列データ、190 ライン管理装置、192 上位接続プログラム、193 データベース接続プログラム、194 ゲートウェイプログラム、200 通信周期データ、280 表示装置、300 分散型システム、380 製造管理装置、400 製造実行システム、500 サポート装置、502 メモリ、504 ハードディスク、505 入力インターフェイス、506 表示コントローラ、507 通信インターフェイス、510 キーボード、511 ディスプレイ、521 閾値取得モジュール、522 補正モジュール、523 時刻差算出モジュール、560 同期モジュール、590 サポートプログラム、595 転送プログラム。