IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-08
(45)【発行日】2024-05-16
(54)【発明の名称】制御システム
(51)【国際特許分類】
   G05B 19/05 20060101AFI20240509BHJP
   G06F 11/07 20060101ALI20240509BHJP
【FI】
G05B19/05 J
G05B19/05 S
G06F11/07 157
【請求項の数】 9
(21)【出願番号】P 2021529179
(86)(22)【出願日】2020-07-02
(86)【国際出願番号】 JP2020025985
(87)【国際公開番号】W WO2021002421
(87)【国際公開日】2021-01-07
【審査請求日】2021-12-21
(31)【優先権主張番号】P 2019125025
(32)【優先日】2019-07-04
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】西山 佳秀
(72)【発明者】
【氏名】西村 康裕
(72)【発明者】
【氏名】江口 重行
(72)【発明者】
【氏名】東 克彦
【審査官】松本 泰典
(56)【参考文献】
【文献】国際公開第2020/054477(WO,A1)
【文献】特開2019-62288(JP,A)
【文献】特開2018-64219(JP,A)
【文献】特開2009-20547(JP,A)
【文献】特開2014-146070(JP,A)
【文献】国際公開第2015/008389(WO,A1)
【文献】特開2019-96243(JP,A)
【文献】国際公開第2015/128981(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
G06F 11/07
(57)【特許請求の範囲】
【請求項1】
ファクトリオートメーション用の制御システムであって、
各々がタイマを有する第1のユニットおよび第2のユニットと、
前記第1のユニットと前記第2のユニットとの間で、前記タイマが示すタイマ値を含むデータを遣り取りするためのデータラインと、
前記第1のユニットと前記第2のユニットとを電気的に接続する信号線と、
前記信号線および前記データラインに接続される調整手段と、を備え、
前記第1のユニットは、
インターネットを含む第1のネットワークを接続するネットワークインターフェイスと、
前記データラインを接続するデータ通信回路と、を有し、
前記第2のユニットは、前記第1のネットワークとは異なる第2のネットワークを接続するネットワークコントローラと、前記データラインを接続する通信コントローラと、を有し、
前記第2のユニット前記通信コントローラ、前記第1のユニット前記ネットワークインターフェイス介して、前記第1のネットワークに接続し、
前記第1のユニットは、前記第1のネットワークにおけるマスタクロックの時刻に同期した値を当該第1のユニットのタイマに設定する処理と、前記第2のユニットに対する前記第1のネットワークからのアクセスを監視する処理とを含む情報処理を実施し、
前記調整手段は、
トリガ信号を前記信号線を介して受信したとき、前記データラインを介して前記タイマ値を取得し、取得したタイマ値に基づいて、前記第1のユニットのタイマに前記第2のユニットのタイマを合わせる、制御システム。
【請求項2】
前記第1のユニットおよび前記第2のユニットのうちの一方が、前記トリガ信号を前記信号線に伝送する、請求項1に記載の制御システム。
【請求項3】
前記制御システムは、さらに、前記トリガ信号を前記信号線に伝送するユニットであって、前記第1のユニットおよび前記第2のユニットとは異なるユニットを備える、請求項1または2に記載の制御システム。
【請求項4】
前記調整手段は、前記第1のユニットおよび前記第2のユニットのうちの一方に備えられる、請求項1から3のいずれか1項に記載の制御システム。
【請求項5】
前記制御システムは、さらに、
前記調整手段を備えるユニットであって、前記第1のユニットおよび前記第2のユニットとは異なるユニットを備える、請求項1から4のいずれか1項に記載の制御システム。
【請求項6】
前記調整手段は、
前記トリガ信号を前記信号線を介して受信したとき、前記データラインを介して取得したタイマ値を用いて、前記第1のユニットのタイマのタイマ値と前記第2のユニットのタイマのタイマ値との差を取得し、取得した差に基づく調整値を用いて、前記第2のユニットのタイマのタイマ値を調整することにより、前記第1のユニットのタイマに前記第2のユニットのタイマを合わせる、請求項1から5のいずれか1項に記載の制御システム。
【請求項7】
前記調整手段は、
前記トリガ信号を受信する毎に取得される前記差の大きさの変化の傾向から、前記調整値を決定する、請求項6に記載の制御システム。
【請求項8】
前記制御システムは、さらに、
前記第1のネットワークに接続される複数の制御装置を備え、
前記複数の制御装置の各々は、前記第1のユニットおよび前記第2のユニットを含み、
前記複数の制御装置は、前記第1のネットワークを介して受信する共通の時刻であって前記第1のユニットのタイマと前記第2のユニットのタイマの間の同期に用いる時刻により互いに同期する、請求項7に記載の制御システム。
【請求項9】
前記制御システムは、さらに、
前記第2のネットワークを介して、前記複数の制御装置の各々に接続される1または複数の機器と、
前記複数の制御装置の間で互いに同期された同期タイマと、を備え、
各前記複数の制御装置と、当該制御装置に前記第2のネットワークを介して接続される前記1または複数の機器とは、前記同期タイマのタイマ値により互いに同期する、請求項8に記載の制御システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、FA(Factory Automation)の制御システムに関する。
【背景技術】
【0002】
様々な生産現場において、PLC(プログラマブルロジックコントローラ)などの制御装置を用いたFA技術が広く普及している。このような制御装置は、1または複数の機器との間でバスまたはネットワークを介してデータを送受信する。
【0003】
制御システムの高機能化に伴って、互いに独立した制御処理を実行する複数の制御装置がネットワークを介して接続されるような構成も実現しつつある。例えば、特開2015-118505号公報(特許文献1)には、コントローラレベルネットワークに複数の制御装置が接続された制御システムが開示される。複数の制御装置の各々には、デバイスレベルネットワークを介して複数の入出力装置が接続されている。各制御装置は、複数の入出力装置から取得した入力値を、コントローラレベルネットワークを介してサーバに送信する。
【0004】
また、特開2014-146877号公報(特許文献2)では、第1の通信装置と第2の通信装置とは、PCIeケーブルIFにより接続される。時刻同期の補正量演算に関して、第1の通信装置から第2の通信装置へ時刻要求パケットが伝送され、また、第2の通信装置から第1の通信装置へ時刻応答パケットが伝送される。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2015-118505号公報
【文献】特開2014-146877号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1では、複数の制御装置は互いに独立した制御処理を実行するため、1つの制御装置と別の制御装置との間では、機器において収集または生成されたデータ(入力データ)を収集するタイミングまたは機器に対する指令などのデータ(出力データ)を対象の機器へ送信するタイミングを互いに同期させることができない。
【0007】
また、上記1の制御装置に接続される機器と、上記別の制御装置に接続される機器とを連係して動作させるためには、これらの制御装置間でそれぞれの機器の情報を遣り取りする必要があるが、入力データが収集されるタイミングまたは出力データが出力されるタイミングを互いに同期させることができないため、複数の機器の間で制御タイミングを同期させることが困難となる。
【0008】
特許文献2では、このようなタイミングの同期に関して、時刻同期の補正量を演算する手段を提供するが、時刻同期の手順として時刻要求パケットおよび時刻応答パケットの遣り取りが必要とされる。したがって、同期手順が複雑であり、またパケットの通信時間および補正を含めた時刻同期の処理に時間がかかる。
【0009】
本開示の1つの目的は、ユニット間の時刻同期にかかる処理を簡単化し、また処理にかかる時間を短くする構成を提供することである。
【課題を解決するための手段】
【0010】
本開示の一例に係るファクトリオートメーション用の制御システムは、各々がタイマを有する第1のユニットおよび第2のユニットと、第1のユニットと第2のユニットとの間で、上記のタイマが示すタイマ値を含むデータを遣り取りするためのデータラインと、第1のユニットと第2のユニットとを電気的に接続する信号線と、信号線およびデータラインに接続される調整手段と、を備え、調整手段は、トリガ信号を信号線を介して受信したとき、データラインを介してタイマ値を取得し、取得したタイマ値に基づいて、第1のユニットのタイマに第2のユニットのタイマを合わせる。
【0011】
この開示によれば、ユニット間のタイマを合わせるという時刻同期にかかる調整を、トリガ信号を契機に実施させることができる。また、調整手段は、トリガ信号が与えられるときにユニット間のデータラインを伝送されるタイマ値を取得し、取得されたタイマ値に基づき第1のユニットのタイマに第2のユニットのタイマを合わせる。
【0012】
したがって、タイマを合わせる時期をトリガ信号により簡単に決定することができる。また、調整手段は、データラインを伝送されるタイマ値を用いることでタイマを合わせることができる。これにより、タイマを合わせるという時刻同期のために、ユニット間でタイマ値の要求/応答の通信セッションをする必要はないので、その分、タイマ合わせに係る時間を短縮できる。
【0013】
上述の開示において、第1のユニットおよび第2のユニットのうちの一方が、トリガ信号を信号線に伝送する。
【0014】
この開示によれば、トリガ信号の伝送元は、第1のユニットおよび第2のユニットのいずれであってもよい。したがって、第1のユニットおよび第2のユニットのどちらか一方が、補正処理を実施する時期を決定することができる。
【0015】
上述の開示において、制御システムは、さらに、トリガ信号を信号線に伝送するユニットであって、第1のユニットおよび第2のユニットとは異なるユニットを備える。
【0016】
この開示によれば、第1のユニットおよび第2のユニットとは異なる別ユニットに、トリガ信号の伝送を実施させることができる。
【0017】
上述の開示において、調整手段は、第1のユニットおよび第2のユニットのうちの一方に備えられる。
【0018】
この開示によれば、第1のユニットおよび第2のユニットのどちらか一方に、タイマを合わせるという時刻同期のための処理を実施させることができる。
【0019】
上述の開示において、制御システムは、さらに、調整手段を備えるユニットであって、第1のユニットおよび第2のユニットとは異なるユニットを備える。
【0020】
この開示によれば、第1のユニットおよび第2のユニットとは異なる別ユニットに、タイマを合わせるという時刻同期のための処理を実施させることができる。したがって、当該処理に係る負荷を、第1のユニットおよび第2のユニットに与えることが回避される。
【0021】
上述の開示において、調整手段は、トリガ信号を信号線を介して受信したとき、データラインを介して取得したタイマ値を用いて、第1のユニットのタイマのタイマ値と第2のユニットのタイマのタイマ値との差を取得し、取得した差に基づく調整値を用いて、第2のユニットのタイマのタイマ値を調整することにより、第1のユニットのタイマに第2のユニットのタイマを合わせる。
【0022】
この開示によれば、第1のユニットのタイマのタイマ値と第2のユニットのタイマのタイマ値との差である同期ずれの大きさに基づき、タイマを合わせるという時刻同期のための調整に用いる調整値を決定できる。例えば、同期ずれが大きいほど調整値を大きくする調整を実施することができる。
【0023】
上述の開示において、調整手段は、トリガ信号を受信する毎に検出される上記の差の大きさの変化の傾向から、調整値を決定する。
【0024】
この開示によれば、上記の差が示す同期ずれの大きさの変化の傾向に基づき、調整値を決定できる。例えば、同期ずれが大きくなる傾向にあるときは、調整値を大きくする調整を実施することができる。
【0025】
上述の開示において、制御システムは、さらに、第1のネットワークに接続される複数の制御装置を備え、複数の制御装置の各々は、第1のユニットおよび第2のユニットを含み、複数の制御装置は、第1のネットワークを介して受信する共通の時刻であってタイマ間の同期に用いる時刻により互いに同期する。
【0026】
この開示によれば、第1のユニットおよび第2のユニットを含む制御装置間でお互いに時刻を同期させることができ、また各制御装置においてはユニット間で当該時刻に同期すするタイマを用いて同期させることができる。したがって、各制御装置と各制御装置が備える各ユニットとをお互いに同期させることができる。
【0027】
上述の開示において、制御システムは、さらに、第1のネットワークよりも下位の第2のネットワークを介して、複数の制御装置の各々に接続される1または複数の機器と、複数の制御装置の間で互いに同期された同期タイマとを備え、制御装置と、当該制御装置の第2のネットワークに接続される1または複数の機器は、同期タイマのタイマ値により互いに同期する。
【0028】
したがって、各制御装置と各制御装置が備える各ユニットと各制御装置に接続される各機器とを、お互いに同期させることができる。
【発明の効果】
【0029】
本開示によれば、ユニット間の時刻同期にかかる処理を簡単化し、また処理にかかる時間を短くする。
【図面の簡単な説明】
【0030】
図1】本実施の形態に係る制御システム1の適用場面の一例を示す模式図である。
図2】本実施の形態に従う制御システム1の全体構成の一例を示す模式図である。
図3】本実施の形態に従う制御システム1のネットワーク構成例を示す模式図である。
図4】本実施の形態に従う制御システム1のデータ通信処理を示す模式図である。
図5】本実施の形態に係る制御装置2のユニットの構成例を示す模式図である。
図6】本実施の形態に係る制御装置2に含まれるCPUユニット100のハードウェア構成例を示すブロック図である。
図7】本実施の形態に係る制御装置2に含まれる機能ユニット200のハードウェア構成例を示すブロック図である。
図8】本実施の形態に係る制御装置2に含まれる機能ユニット300のハードウェア構成例を示すブロック図である。
図9】本実施の形態に係るCPUユニット100のソフトウェア構成例を示すブロック図である。
図10A】本実施の形態に係る制御装置2が管理する時刻同期のための構成の一例を模式的に示す図である。
図10B】本実施の形態に係る制御装置2が管理する時刻同期のための構成の一例を模式的に示す図である。
図11】本実施の形態に係る処理のフローチャートの一例を示す図である。
図12】本実施の形態に係る製造実行システム400の構成例を示す図である。
図13図12のDB管理プログラム411が実行されることで提供されるDBマネージャーを示す図である。
図14A】本実施の形態に係る制御装置2が製造実行システム400に時系列データを送信する場合の処理例を示す模式図である。
図14B】本実施の形態に係る制御装置2が製造実行システム400に時系列データを送信する場合の処理例を示す模式図である。
図15】本実施の形態に係る制御装置2において生成される時系列データのフレームを模式的に示す図である。
【発明を実施するための形態】
【0031】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0032】
<A.適用例>
図1を参照して、本発明が適用される場面の一例について説明する。図1は、本実施の形態に係る制御システム1の適用場面の一例を示す模式図である。本実施の形態に係る制御システム1は、ファクトリオートメーション用の制御システムであり、複数の制御装置2A,2B,2Cを備える。各制御装置は、フィールド機器90(90A、90B、90C、90D、90E、90F、90I)を含む任意の制御対象(例えば、製造装置や設備)を制御する。各制御装置は、同様の構成を備えるので、制御装置2Aを代表して説明する。
【0033】
制御システム1では、各制御装置2Aは、各々がタイマを有するCPUユニット100および機能ユニット200と、CPUユニット100と機能ユニット200との間でデータを遣り取りするためのデータバス111と、CPUユニット100と機能ユニット200とを電気的に接続する信号線113とを備える。機能ユニット200のカウンタOC1が示すタイマ値およびCPUユニット100のカウンタDC2が示すタイマ値を用いて、時刻同期が実施される。
【0034】
具体的には、例えば起動時は、機能ユニット200は、マスタクロック191Aから取得した絶対時刻を取得し、取得した絶対時刻に同期した値をカウンタOC1に設定する。カウンタ値OC1の値が、データバス111を介してCPUユニット100に伝送されて、CPUユニット100では、カウンタ値OC1の値であるタイマ値がカウンタDC2に設定される。以降は、CPUユニット100はカウンタDC2の値を内部のハードウェア回路の出力を用い周期的に更新(インクリメントまたはデクリメント)する。
【0035】
起動後は、機能ユニット200は、定期的に、マスタクロック191Aから取得する絶対時刻に基づきカウンタOC1の値を更新する。機能ユニット200は、カウンタOC1の値であるタイマ値を、データバス111を介して周期的に伝送する。
【0036】
トリガ信号が信号線113を介して与えられると、時刻を同期させるための補正処理が実施される。具体的には、CPUユニット100は、信号線113を介して時刻同期信号を受信すると、データバス111を伝送されるカウンタOC1が示すタイマ値をラッチ(受信)し、およびCPUユニット100のカウンタDC2が示すタイマ値を取得(ラッチ)する。CPUユニット100は、これら取得したタイマ値に基づいて、機能ユニット200のタイマ(カウンタOC1)にCPUユニット100のタイマ(カウンタDC2)を合わせる。つまり、CPUユニット100は、当該取得した両方のタイマ値の差、すなわち時刻同期のずれを算出し、算出された同期ずれを小さくするように、カウンタDC2の値を補正する。本実施の形態では、タイマ値またはカウンタ値の補正は、時刻同期ずれを小さくするようなタイマ値の調整を含む概念である。
【0037】
これにより、例えば機能ユニット200またはCPUユニット100が備えるハードウェア回路の誤差などに起因して同期ずれが生じるとしても、カウンタDC2の値を、カウンタOC1の値、すなわちマスタクロック191Aに時刻同期させること可能となる。
【0038】
また、各制御装置2においては、カウンタDC2のタイマ値は、フィールド機器90等の各種デバイスを制御するための制御プログラム、およびフィールド機器90とネットワーク110を介してデータを遣り取りするための入出力プログラム等のスケジューリングのために参照される。したがって、各制御装置2では、このようなスケジューリングを、マスタクロック191Aに時刻同期したカウンタDC2のタイマ値に同期させて実施することができる。
【0039】
各制御装置2では、ユニット間の時刻同期にかかる補正処理を、トリガ信号を契機に実施することができる。トリガ信号としての時刻同期信号は、例えば周期的に伝送されることで、カウンタDC2の値を、同期ずれをなくす(または小さくする)よう補正するための補正処理を周期的に実施することが可能となる。
【0040】
上記に述べたように、制御装置2A,2Bおよび2Cは、時刻同期されたカウンタOC1とカウンタDC2を有している(図中の時刻同期(2)に相当)。
【0041】
カウンタOC1は共通のタイマ191Aに時刻同期するから、複数の制御装置2A,2Bおよび2Cの間で、互いに時刻同期させることができる(図中の時刻同期(1)に相当)。また、制御装置2A,2Bおよび2Cの各々が備えるカウンタDC2は、ネットワーク110を介して接続される1または複数のフィールド機器90が有するタイマ91A、91B、91C、91D、91E、91F、91G、91H、91I(以下、タイマ91A~91Iと総称する)と時刻同期している。この結果、制御装置2A,2Bおよび2Cとフィールド機器90A~90Iは互いに時刻同期する(図中の時刻同期(3)に相当)。これにより、制御システム1全体の機器を、互いにマスタクロック191Aの時刻に同期させることが可能となる。
【0042】
以下、本実施の形態のより具体的な応用例について説明する。
以下の説明においては、「制御装置」の典型例として、PLC(プログラマブルコントローラ)を具体例として説明するが、PLCの名称に限定されることなく、本明細書に開示された技術思想は、任意の制御装置に対して適用可能である。また、PLC(制御装置)を含むシステム全体を、以下では「制御システム」とも称する。
【0043】
<B.制御システムの全体構成>
まず、本実施の形態に従うFA(Factory Automation:ファクトリオートメーション)に適用され得る制御システムの全体構成について説明する。図2は、本実施の形態に従う制御システム1の全体構成の一例を示す模式図である。
【0044】
図2を参照して、制御システム1では、ネットワークが複数レベルに接続されており、各レベルのネットワークには、それぞれ異なる機能が割り当てられる。具体的には、限定されないが、例えば4つのレベルのネットワーク11~14が設けられている。
【0045】
ネットワーク11は、コントロールレベルのネットワークである。ネットワーク11は、複数の制御装置2A、2Bおよび2C(以下、「制御装置2」と総称することもある。)と、装置/ライン管理装置190よびSCADA(Supervisory Control And Data Acquisition)機能を提供する表示装置280とが接続されており、ネットワーク11では装置間でデータを遣り取りできるデータリンクが形成される。装置/ライン管理装置190および表示装置280は、ネットワークに接続される装置および生産ラインを管理する機器に相当する。ネットワーク11は、主として、制御系に係る情報の伝送を主たる機能として提供する。
【0046】
制御装置2には、センサ、アクチュエータといった各種のフィールド機器90が接続される。これらのフィールド機器90は、制御装置2に装着される入出力ユニットを介して制御装置2に直接接続される場合もあるが、ネットワーク110を介して制御装置2に接続されることもある。図2に示す構成例においては、制御装置2は、1または複数のネットワーク110に接続される。各ネットワーク110には、1または複数のフィールド機器90が接続される。1または複数のフィールド機器90の各々は、製造装置または生産ラインなど(以下、「フィールド」とも総称する。)に対して何らかの物理的な作用を与えるアクチュエータ、およびフィールドとの間で情報を遣り取りする入出力装置などを含む。したがって、図2に示す制御システム1には、ネットワーク11~14の4つのレベルに加えて、フィールドレベルのネットワーク110がさらに追加されることになる。
【0047】
ネットワーク110を介して、制御装置2とフィールド機器90との間で遣り取りされるデータは、数100μsecオーダ~数10msecオーダのごく短い周期で更新されることになる。なお、このような遣り取りされるデータの更新処理は、入出力リフレッシュ処理とも称される。
【0048】
ネットワーク12は、管理レベルのネットワークとして提供される。ネットワーク12には、装置およびラインを管理する装置/ライン管理装置190、製造計画等を管理する製造管理装置380および390が接続される。装置/ライン管理装置190、製造管理装置380および390は、ネットワーク12を介して、製造計画等の管理情報の遣り取り、および装置またはラインの情報を遣り取りする。
【0049】
ネットワーク13は、コンピュータレベルのネットワークとして提供される。ネットワーク13には、製造管理装置380および390、ならびに時系列DB(データベースの略)450を管理する製造実行システム(EMS:Manufacturing Execution System)400が接続される。製造管理装置380および390、ならびに製造実行システム400は、ネットワーク13を介して、生産管理および情報系のデータを遣り取りする。
【0050】
製造実行システム400は、ネットワーク13を介して収集するフィールド機器90からの入力値である観測値を、観測された順番に従う時系列のデータとして時系列DB450に格納する。
【0051】
具体的には、本実施の形態では、制御装置2は、指定された観測値を含むフレームを生成する機能を有する。制御装置2は、生成されるフレームをネットワーク11,12および13を介して製造実行システム400に転送する。製造実行システム400は、制御装置2から受信した観測値のフレームを時系列に従い時系列DB450に格納する。
【0052】
本実施の形態では、時系列DB450に格納されるデータを「時系列データ」とも称す。本実施の形態において、「時系列データ」は、任意の対象についてのデータ(観測値)の時間的な変化を連続的(あるいは、一定間隔をおいて不連続)に観測して得られる一連の値を意味する。
【0053】
本明細書において「観測値」は、制御装置2での制御演算において利用可能な値(実値)を総称する概念であり、典型的には、制御対象から取得されて制御演算に入力される値(フィールドから取得された測定値など)、取得された入力値に基づいて制御演算によって決定される制御対象に対する出力値(フィールドへ与えられる指令値など)、制御演算の過程において算出される演算値(任意の変数値)などを含み得る。すなわち、「観測値」は、制御装置2においてデータとして格納できる、あるいは、制御装置2からデータとして外部出力できる任意の値を包含するものである。
【0054】
ネットワーク14は、インターネットなどの外部ネットワークを含む。ネットワーク14には、製造実行システム400とクラウド上の外部装置などが接続される。製造実行システム400は、クラウド上の装置とデータを遣り取りすることにより、時系列DB450のデータをクラウド上の装置に転送する。
【0055】
制御装置2は、サポート装置500が接続され得る。サポート装置500は、制御装置2が制御対象を制御するために必要な準備を支援する装置である。
【0056】
制御システム1のネットワーク11に接続される制御装置2A、2Bおよび2Cは、それぞれ、異なる工程3A、3Bおよび3Cに備えられる。限定されないが、例えば、工程3Aは製品(ワーク)の組立工程を示し、工程3Bは組立てられた製品の塗装工程を示し、工程3Cが塗装された製品の検査工程を示す。
【0057】
図2に示す制御システム1において、ネットワーク12およびそれ以下のレベルにあるネットワーク11およびネットワーク110は、「ファクトリーネットワーク」とも称され、機器を現実に制御するためのデータ(以下、「制御系データ」と総称することもある)を遣り取りする制御系通信を提供する。一方、ネットワーク13およびそれ以上のレベルにあるネットワーク14は、「コーポレートネットワーク」とも称され、生産ライン/工場での生産活動などを監視・管理・制御するためのデータ(以下、「情報系データ」と総称することもある)を遣り取りする情報系通信を提供する。
【0058】
ネットワーク11~14およびネットワーク110には、このような要求される特性の違いに応じたプロトコルおよびフレームワークが採用される。例えば、ファクトリーネットワークに属するネットワーク11および12のプロトコルとしては、汎用的なEthernet(登録商標)上に制御用プロトコルを実装した産業用オープンネットワークであるEtherNet/IP(登録商標)を用いてもよい。また、ネットワーク110のプロトコルとしては、マシンコントロール用ネットワークの一例であるEtherCAT(登録商標)を採用してもよい。なお、ネットワーク11のプロトコル(第1のプロトコル)とネットワーク110のプロトコル(第2のプロトコル)とは、同じであってもよいし、異なっていてもよい。このようなマシンコントロールに適したネットワーク技術を採用することで、機器間の伝送に要する時間が保証されたリアルタイム性を提供できる。
【0059】
これに対して、コーポレートネットワークに属するネットワーク13および14のプロトコルとしては、接続先の多様性を担保するために、汎用的なEthernetなどが用いられる。汎用的なEthernetを採用することで、送信可能なデータ量などの制限を排除できる。
【0060】
<C.制御システム1における時刻同期>
図1に示すファクトリーネットワークにおいては、ネットワーク11に接続される複数の制御装置2A,2Bおよび2Cの各々は、ネットワーク110を介して接続される1または複数のフィールド機器90とのデータを送受信する。具体的には、制御装置2は、フィールド機器90において収集または生成されたデータ(入力データ)を収集する処理(入力処理)、フィールド機器90に対する指令などのデータ(出力データ)を生成する処理(演算処理)および、生成した出力データを対象のフィールド機器90へ送信する処理(出力処理)などを実行する。
【0061】
ネットワーク110では、データの到着時間が保証される必要がある。そのため、制御装置2は、データ伝送のタイミングを規定する、データが送受信される主体(すなわち、1または複数のフィールド機器90)の間で互いに時刻同期されたタイマを有している。
【0062】
しかしながら、複数の制御装置2の間で時刻同期がとれていない場合には、例えば、1つの制御装置2に接続されるフィールド機器90と、別の制御装置2に接続されるフィールド機器90との間は時刻同期させることができない。その結果、入出力リフレッシュ処理のタイミングが一致しない場合が生じ得るため、互いに異なる制御装置2に接続される複数のフィールド機器90を連係して動作させることが困難となる。
【0063】
そこで、本実施の形態に従う制御システム1においては、複数の制御装置2の各々が有するタイマを互いに時刻同期させる。これにより、互いに異なる制御装置2に接続される、すなわち異なる工程間において複数のフィールド機器90の協調制御を実現する。
【0064】
以下、本実施の形態に係る制御システム1が提供する時刻同期機能について説明する。
(c1.ネットワーク構成例)
次に、本実施の形態に従う制御システム1のネットワーク構成例について説明する。図3は、本実施の形態に従う制御システム1のネットワーク構成例を示す模式図である。
【0065】
図3に示す制御システム1は、複数の制御装置2A,2Bおよび2Cと、複数のフィールド機器90A~90Iとを備える。制御システム1は、一例として、少なくとも一部の制御装置がデイジーチェーン接続のネットワークを採用する。制御装置2A,2Bおよび2Cの各々は、対応するネットワーク110内のデータ伝送を管理するマスタとして機能する。フィールド機器90A~90Iは、対応するマスタからの指令に従ってデータ伝送を行なうスレーブとして機能する。
【0066】
制御装置2A,2Bおよび2Cは、コントロールレベルのネットワーク11(上位のネットワーク)に接続されている。ネットワーク11には、例えば装置/ライン管理装置190が接続されている。
【0067】
制御装置2Aに接続されるネットワーク110には、フィールド機器90A、90B、90Cがデイジーチェーンで順次接続されており、制御装置2Bに接続されるネットワーク110には、フィールド機器90D、90E、90Fがデイジーチェーンで順次接続されており、制御装置2Cに接続されるネットワーク110には、フィールド機器90G、90H、90Iがデイジーチェーンで順次接続されている。
【0068】
ネットワーク110内において、制御装置2および1または複数のフィールド機器90は、いずれもデータ伝送機能を有する通信装置とみなすことができる。図3に示す例においては、制御装置2および1または複数のフィールド機器90の各々は、隣接して接続されているある通信装置から、ネットワーク上を伝送されるデータを受信すると、当該データを必要に応じて、隣接して接続されている別の通信装置へ伝送する機能を有している。
【0069】
本実施の形態に従う制御システム1において、ネットワーク110に接続される複数の通信装置、すなわち制御装置2および1または複数のフィールド機器90の間では、送受信タイミングが同期されている(図中の時刻同期(3)に相当)。具体的には、制御装置2および1または複数のフィールド機器90の各々は、互いに時刻同期されたタイマ(あるいは、同期してインクリメントまたはデクリメントされるカウンタ)を備える。制御装置2および1または複数のフィールド機器90の各々は、それらの時刻同期されたタイマまたはカウンタに従って、データの送信または受信のタイミングを決定する。
【0070】
なお、本実施の形態では「タイミング」は何らかの事象が生じる時期、時間または時刻の概念を表す。また、「時刻同期」とはお互いが有するタイマ,時間データ等を同期させることを示す。
【0071】
図3に示す例においては、タイマ101A、101Bおよび101Cは、それぞれ、カウンタOC1(図1参照)に対応し、タイマ102A、102Bおよび102Cは、それぞれ、カウンタDC2(図1参照)に対応している。図3を参照して、図1に示した時刻同期(1)、(2)および(3)をより具体的に説明する。
【0072】
制御装置2Aはタイマ102Aを備え、フィールド機器90A、90B、90Cはそれぞれタイマ91A、91B、91Cを備える。制御装置2Aのタイマ102Aがマスタとして機能し、フィールド機器90A、90B、90Cのタイマ91A、91B、91Cがこのマスタを基準としてタイミングを同期させる。例えば、タイマ102Aのタイマ値に基づく値が、タイマ91A、91B、91Cに設定される。
【0073】
制御装置2Bはタイマ102Bを有しており、フィールド機器90D、90E、90Fはタイマ91D、91E、91Fをそれぞれ有している。制御装置2Bのタイマ102Bがマスタとして機能し、フィールド機器90D、90E、90Fのタイマ91D、91E、91Fがこのマスタを基準としてタイミングを同期させる。例えば、タイマ102Bのタイマ値に基づく値が、タイマ91D、91E、91Fに設定される。
【0074】
制御装置2Cはタイマ102Cを有しており、フィールド機器90G、90H、90Iはタイマ91G、91H、91Iをそれぞれ有している。制御装置2Cのタイマ102Cがマスタとして機能し、フィールド機器90G、90H、90Iのタイマ91G、91H、91Iがこのマスタを基準としてタイミングを同期させる。例えば、タイマ102Cのタイマ値に基づく値が、タイマ91G、91H、91Iに設定される。
【0075】
すなわち、制御装置2A,2Bおよび2Cの各々は、対応のネットワーク110内のデータ伝送を管理するマスタとして機能し、各制御装置2に接続されるフィールド機器90は、マスタからの指令に従ってデータ伝送を行なうスレーブとして機能する。マスタとスレーブとの間でタイマを互いに時刻同期させることにより、ネットワーク110を構成する制御装置2とフィールド機器90との間でデータの伝送タイミングなどを互いに一致させることができる。
【0076】
図3に示す例において、制御装置2Aは、さらに、タイマ102Aと時刻同期されたタイマ101Aを有している。制御装置2Bは、さらに、タイマ102Bと時刻同期されたタイマ101Bを有している。制御装置2Cは、さらに、タイマ102Cと時刻同期されたタイマ101Cを有している(図中の時刻同期(2)に相当)。制御システム1においては、例えば、タイマ101A、101Bおよび101Cのいずれかを、制御システム1全体のマスタとして機能させることができる。
【0077】
一例として、図3では、制御装置2Aのタイマ101Aがマスタに設定され、制御装置2B,2Cのタイマがこのマスタに時刻同期する。これにより、複数の制御装置2A,2Bおよび2Cの間で、互いに時刻同期させることができる(図中の時刻同期(1)に相当)。
【0078】
このように、複数の制御装置2A,2Bおよび2Cの各々は、複数の制御装置2A,2Bおよび2Cの間で互いに時刻同期された装置間タイマ(タイマ101A、101Bおよび101C)と、ネットワーク110を介して接続される1または複数のフィールド機器90と時刻同期された機器間タイマ(タイマ102A、102Bおよび102C)とを有しており、装置間タイマと機器間タイマとは互いに時刻同期している。この結果、制御装置2Aおよびフィールド機器90A、90B、90Cの間で時刻同期された機器間タイマ(タイマ102A)と、制御装置2Bおよびフィールド機器90D、90E、90Fの間で時刻同期された機器間タイマ(タイマ102B)と、制御装置2Cおよびフィールド機器90G、90H、90Iの間で時刻同期された機器間タイマ(タイマ102C)とが互いに時刻同期することになる。
【0079】
なお、図2には、いずれかの制御装置2のタイマをマスタとして設定する構成例について説明したが、ネットワーク11を介して外部から取得する時刻をマスタとしてもよく、または装置/ライン管理装置190などの外部装置のタイマをマスタとしてもよい。
【0080】
(c2.時刻同期したデータ通信)
図4は、本実施の形態に従う制御システム1のデータ通信処理を示す模式図である。図4を参照して、ネットワーク110に接続される制御装置2Aと複数のフィールド機器90A~90Cとの間では、予め定められたシステム周期に従って、データが遣り取りされる。
【0081】
制御装置2Bと複数のフィールド機器90D~90Fとの間、および、制御装置2Cと複数のフィールド機器90G~90Iとの間においても、システム周期に従って、データが遣り取りされる。このようなデータの遣り取りによって、制御装置2およびフィールド機器90の制御動作が実現される。以下の説明では、ネットワーク110上の通信を「下位ネットワーク(NW)通信」とも称する。
【0082】
上位のネットワーク11に接続される制御装置2A,2Bおよび2Cの間では、予め定められたシステム周期に従って、各制御装置2が入力処理によってフィールド機器90から収集したデータ、演算処理によって生成した出力データなどが遣り取りされる。このようなデータの遣り取りによって、制御装置2Aに接続されるフィールド機器90、制御装置2Bに接続されるフィールド機器90および制御装置2Cに接続されるフィールド機器90を連係して動作させることができる。すなわち、異なる工程間でフィールド機器90を連係して動作させることができる。以下の説明では、ネットワーク11上の通信を「上位のネットワーク(NW)通信」とも称する。
【0083】
本実施の形態に従う制御システム1においては、下位ネットワーク通信におけるデータの伝送を開始すべきタイミングは、複数の制御装置2A,2Bおよび2Cの間で互いに時刻同期されているタイマに基づいて決定される。これにより、複数の制御装置2A,2Bおよび2Cの間では、フィールド機器90との間でデータを遣り取りするタイミングなどを互いに一致させることができるため、結果的に、異なる工程間でフィールド機器90の制御タイミングを同期させることができる。
【0084】
<D.制御装置2の構成と時刻同期>
図5は、本実施の形態に係る制御装置2のユニットの構成例を示す模式図である。図5を参照して、制御システム1が備える制御装置2は、CPU(Central Processing Unit)のユニット100(以下、CPUユニット100と称する)、1または複数の機能ユニット200、および1または複数の機能ユニット300を含む。図5では、制御装置2が備える機能ユニット300は4台としているが、1台または2台以上であってよく、また制御装置2が備える機能ユニット200は1台としているが、2台以上であってよい。CPUユニット100は、1または複数の機能ユニット200を、データバス111と信号線113を介して接続する。また、CPUユニット100は、1または複数の機能ユニット300を、データバス112を介して接続する。
【0085】
データバス111は、限定されないが、例えばPCIe(PCI Express(ピーシーアイエクスプレス))に従うI/Oシリアルインタフェースのバスである。信号線113は、光ファイバケーブルまたは電気的な信号ケーブルであり、トリガ信号である時刻同期信号130を伝送する。
【0086】
CPUユニット100は、制御対象に応じて作成されたプログラムを実行するプログラム実行部を有している。より具体的には、CPUユニット100は、システムプログラムおよび各種のユーザプログラムを実行する演算処理部に相当する。
【0087】
機能ユニット200は、通信処理または情報処理を実施する。機能ユニット200は、データバス111を接続するインターフェイスおよび信号線113を接続する信号ポート212Pを備える。機能ユニット200はネットワーク11と制御装置2との間を仲介するように配置されることで、CPUユニット100は、機能ユニット200を介して、ネットワーク11に接続されたデバイスとの間でデータ通信を行うことができる。また、CPUユニット100の信号ポート110Pと機能ユニット200の信号ポート212Pとの間に信号線113が接続されることで、CPUユニット100および機能ユニット200は信号線113を介して時刻同期信号130を受信する。
【0088】
本実施の形態において、機能ユニット200は、CPUユニット100に対するネットワーク14等のインターネットからのアクセス、および、ネットワーク11内の他の装置からのCPUユニット100に対するアクセスを監視するとともに、何らかのセキュリティ事象の発生を検知すると、制御装置2の内部または外部へ当該検知したセキュリティ事象に係る通知を行う。なお、機能ユニット200が実施する情報処理は、セキュリティ監視処理に限定されない。
【0089】
機能ユニット300は、フィールド機器90等の制御対象の設備および装置、ならびに、それらに配置されている各種デバイス(センサやアクチュエータなど)との間で信号を遣り取りする、いわゆるI/Oユニットの機能を備える。具体的には、機能ユニット300は、CPUユニット100において算出される指令値をフィールドへ出力、あるいは、フィールドからの入力値を収集する。機能ユニット300としては、例えば、制御対象からのデジタル信号を受取るDI(Digital Input)モジュール、制御対象に対してデジタル信号を出力するDO(Digital Output)モジュール、制御対象からのアナログ信号を受取るAI(Analog Input)モジュール、制御対象に対してアナログ信号を出力するAO(Analog Output)モジュールのうち1または複数のモジュールを有している。さらに、機能ユニット300としては、PID(Proportional Integral Derivative)制御やモーション制御といった特殊機能を実装したコントローラを含み得る。
【0090】
機能ユニット200または機能ユニット300は、CPUユニット100に対して、着脱自在に外付けされ得る拡張ユニットとして提供され得る。
【0091】
(d1.CPUユニット100の構成)
図6は、本実施の形態に係る制御装置2に含まれるCPUユニット100のハードウェア構成例を示すブロック図である。
【0092】
CPUユニット100は、プロセッサ102と、チップセット104と、主記憶装置106と、二次記憶装置108と、上位のネットワークコントローラ105と、USB(Universal Serial Bus)コントローラ107と、メモリカードインターフェイス114と、ローカルバスコントローラ120,122と、フィールドネットワークコントローラ118と、カウンタ126と、RTC(Real Time Clock)128と、信号ポート110Pを含む。
【0093】
プロセッサ102は、CPU、MPU(microprocessor unit)、GPU(Graphics Processing Unit)などで構成され、二次記憶装置108に格納された各種プログラムを読出して、主記憶装置106に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。二次記憶装置108は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。主記憶装置106は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。
【0094】
チップセット104は、プロセッサ102と各デバイスを制御することで、CPUユニット100全体としての処理を実現する。
【0095】
二次記憶装置108には、基本的な機能を実現するためのシステムプログラムに加えて、制御対象の製造装置や設備に応じて作成されるユーザプログラムが格納される。さらに、二次記憶装置108には、後述するような時系列データベースも格納される。
【0096】
上位のネットワークコントローラ105は、上位のネットワーク11を介して、製造実行システム400またはクラウド上の装置(図1参照)などとの間のデータを遣り取りする。USBコントローラ107は、USB接続を介してサポート装置500との間のデータの遣り取りを制御する。
【0097】
メモリカードインターフェイス114は、メモリカード116を着脱可能に構成されており、メモリカード116に対してデータを書込み、メモリカード116から各種データ(ユーザプログラムやトレースデータなど)を読出すことが可能になっている。
【0098】
カウンタ126は、CPUユニット100における各種処理の実行タイミングを管理するための時刻基準として用いられる。カウンタ126は、典型的には、所定周期毎にカウンタ値をインクリメントまたはデクリメントする。CPUユニット100は、カウンタ126として、プロセッサ102を駆動するシステムバス上に配置された、ハードウェアタイマーである高精度イベントタイマー(HPET:High Precision Event Timer)などを用いて実装してもよいし、あるいは、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)などの専用回路を用いて実装してもよい。
【0099】
RTC128は、計時機能を有する一種のカウンタであり、現在時刻をプロセッサ102などへ提供する。
【0100】
ローカルバスコントローラ122は、CPUユニット100に接続され得る機能ユニット300-1,300-2,…との間でデータを遣り取りするインターフェイスである。ローカルバスコントローラ122は、データバス112を介して接続される他のデバイスである、機能ユニット300-1,300-2,…との間でタイミングを管理するための時刻基準として用いられるカウンタ123を有している。同様に、機能ユニット300-1,300-2,…の各々も、ローカルバスコントローラ122および他の機能ユニット300との間でタイミングを管理するための時刻基準として用いられるカウンタ125を有している。カウンタ123およびカウンタ125については、上述のカウンタ126と同様の構成を採用できる。
【0101】
フィールドネットワークコントローラ118は、ネットワーク110を介したフィールド機器90を含む他のデバイスとの間のデータの遣り取りを制御する。フィールドネットワークコントローラ118は、他のデバイスとの間でタイミングを管理するための時刻基準として用いられるカウンタ119を有している。
【0102】
ローカルバスコントローラ120は、CPUユニット100に接続され得る機能ユニット200-1,200-2,…との間でデータを遣り取りするインターフェイスである。ローカルバスコントローラ120は、データバス111を介して接続される他のデバイスである、機能ユニット200-1,200-2,…との間でタイミングを管理するための時刻基準として用いられるカウンタ121を有している。同様に、機能ユニット200-1,200-2,…の各々も、ローカルバスコントローラ120との間でタイミングを管理するための時刻基準として用いられるカウンタ213を有している。カウンタ121およびカウンタ213は上述のカウンタ126と同様の構成を採用できる。
【0103】
また、ネットワーク110上の各デバイスも、フィールドネットワークコントローラ118との間でタイミングを管理するための時刻基準として用いられるカウンタを有している。
【0104】
カウンタ119ならびに各デバイスが有するカウンタについては、上述のカウンタ126と同様の構成を採用できる。
【0105】
フィールドネットワークコントローラ118は、ネットワーク110を介した定周期通信を行うための通信マスタとして機能し、フィールドバスに接続されている各デバイスが有するカウンタが示すカウンタ値とカウンタ119が示すカウンタ値との差分を逐次監視して、必要に応じて、カウンタ値にずれが発生しているデバイスに対して補正を指示するための同期信号を出力する。このように、フィールドネットワークコントローラ118は、デバイスのカウンタが示すカウンタ値をカウンタ119が示すカウンタ値と一致させるための指令をデバイスへ与える同期管理機能を有している。
【0106】
信号ポート110Pは、時刻同期信号130を伝送する信号線113が接続される。
図6のCPUユニット100では、カウンタ119、カウンタ121およびカウンタ123は、カウンタ126と同期する。
【0107】
図6には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、CPUユニット100は、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、CPUユニット100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOS(Operating System)を並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0108】
本実施の形態に係る制御システム1においては、CPUユニット100およびサポート装置500が別体として構成されているが、これらの機能の全部または一部を単一の装置に集約するような構成を採用してもよい。
【0109】
(d2.機能ユニット200の構成)
図7は、本実施の形態に係る制御装置2に含まれる機能ユニット200のハードウェア構成例を示すブロック図である。図7を参照して、機能ユニット200は、プロセッサ202、チップセット204、主メモリ206、ストレージ208、ユニット間インターフェイス210、ネットワークインターフェイス220、および信号ポート212Pを含む。信号ポート212Pは、時刻同期信号130を伝送する信号線113が接続される。
【0110】
プロセッサ202は、CPU、MPU、GPUなどで構成される。上述のCPUユニット100と同様に、機能ユニット200は、1または複数のプロセッサ202、および/または、1または複数のコアを有するプロセッサ202を有している。チップセット204は、プロセッサ202および周辺エレメントを制御することで、機能ユニット200全体としての処理を実現する。チップセット204は、時刻同期信号130を生成する回路素子である信号ジェネレーター26を含む。信号ジェネレーター26からの時刻同期信号130は、信号ポート212Pを介して信号線113に送出される。主メモリ206は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ208は、例えば、フラッシュメモリなどの不揮発性記憶装置などで構成される。
【0111】
プロセッサ202は、ストレージ208に格納された各種プログラムを読出して、主メモリ206に展開して実行することで、例えばセキュリティ事象の監視などの処理を実現する。ストレージ208には、基本的な処理を実現するためのシステムプログラム22とユーザプログラム20を格納する。また、ストレージ208は、機能ユニット200が収集した観測値の時系列データを格納する記憶領域21を有する。
【0112】
ユーザプログラム20は、ユニット間の時刻同期を制御する時刻同期プログラム23おおよびセキュリティ監視処理のためのセキュリティプログラム24を含む。時刻同期プログラム23は、実行されることにより後述する補正部20Aまたは補正部20Bを実現するための補正プログラム25を含む。また、セキュリティプログラム24は、制御装置2の運用者または管理者などが予め定めた規則などを規定するセキュリティ設定に基づく、セキュリティ監視処理を実施し、処理の結果に基く観測値を収集し、時系列データとして記憶領域21に格納する。
【0113】
ユニット間インターフェイス210は、データバス111を接続する。ユニット間インターフェイス210は、データバス111を介してCPUユニット100とデータを遣り取りする。
【0114】
ユニット間インターフェイス210は、CPUユニット100または他の機能ユニット200とデータを送受信するためのコントローラ(Tx/Rx CTRL)およびバッファを備えるデータ通信回路211、およびカウンタ213を備える。
【0115】
ネットワークインターフェイス220は、ネットワーク11を介してデータを遣り取りするためにコントローラ(Tx/Rx CTRL)222およびバッファ226を含む。
【0116】
ユニット間インターフェイス210およびネットワークインターフェイス220が備えるバッファは、送信すべきデータおよび受信したデータなどを一時的に蓄える記憶部に相当する。カウンタ213は、CPUユニット100が備えるカウンタ126(図6参照)と同様の構成を備える。
【0117】
機能ユニット200のネットワークインターフェイス220およびユニット間インターフェイス210は、NIC(Network Interface Card)から構成されてもよい。また、図7には、プロセッサ202がプログラムを実行することで必要な処理が実現される構成例を示したが、これらの提供される処理の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
【0118】
(d3.機能ユニット300の構成)
図8は、本実施の形態に係る制御装置2に含まれる機能ユニット300のハードウェア構成例を示すブロック図である。図8を参照して、機能ユニット300は、制御システム1による様々な機械または設備等の制御を実現するために必要な各種機能を提供する。より具体的には、機能ユニット300の各々は、機能モジュール157と、I/Oインターフェイス159と、通信回路161とを含む。
【0119】
機能モジュール157は、各機能ユニット300の主たる処理を実行する部分であり、制御対象の機械または設備などからのフィールド情報の収集および制御対象の機械または設備などへの指令信号の出力などを司る。
【0120】
I/Oインターフェイス159は、制御対象の機械または設備等との間の信号の遣り取りを仲介する回路である。
【0121】
通信回路161は、データバス112を順次転送されるデータを処理する。すなわち、通信回路161は、データバス112を介して何らかのデータを受信すると、当該受信したデータを処理した後に、データバス112上において次に位置する機能ユニット300へ当該通信データを送信する。通信回路161は、このようなデータをリレーする機能を提供する。
【0122】
より具体的には、通信回路161は、送受信ポート162,164、送受信のためのコントローラ166およびカウンタ168を含む。
【0123】
送受信ポート162,164は、データバス112と物理的に接続される部位であり、コントローラ166からの指令に従って、データバス112上を伝送されるデータの受信および再生などの処理を行うことで、データの順次転送を実現する。
【0124】
コントローラ166は、データバス112上を転送されるデータの読出し、データの変更等のデータ処理を実施する。
【0125】
カウンタ168は、コントローラ166による指令出力または機能モジュール157での処理実行などのタイミングの基準となるクロックを発生する。カウンタ168は、としては、例えばリアルタイムクロックによるカウンタを採用することもできるが、本実施の形態においては、所定周期でカウントアップ(インクリメント)するフリーランカウンタを適用することができる。
【0126】
(d4.CPUユニット100のソフトウェア構成例)
次に、本実施の形態に係る制御システム1を構成するCPUユニット100のソフトウェア構成例について説明する。
【0127】
図9は、本実施の形態に係るCPUユニット100のソフトウェア構成例を示すブロック図である。図9を参照して、CPUユニット100は、PLCエンジン150と、時系列データベース180と、上位接続プログラム192と、ゲートウェイプログラム194とを含む。
【0128】
PLCエンジン150は、典型的には、CPUユニット100のプロセッサ102が、二次記憶装置108に格納されているシステムプログラムを読出して主記憶装置106に展開して実行することで各種プログラムの実行環境が提供され、当該実行環境下において、各種プログラムを実行することができる。
【0129】
より具体的には、PLCエンジン150は、制御プログラム152と、変数管理プログラム160と、スケジューラプログラム170と、入力プログラム172と、出力プログラム174と、時刻同期プログラム177を含む。変数管理プログラム160と、スケジューラプログラム170と、入力プログラム172と、出力プログラム174とについては、システムプログラムの一部として実装されてもよい。この場合には、これらのプログラムが提供するそれぞれの機能を単一のシステムプログラムが提供するようにしてもよい。
【0130】
制御プログラム152は、典型的には、ユーザプログラム154と、データベース書込みプログラム156と、シリアライズ通信プログラム158とにより構成される。ユーザプログラム154は、制御演算機能を提供する主たる部分に相当し、CPUユニット100の制御対象の製造装置や設備などに応じて任意に構成することができる。ユーザプログラム154は、例えば、ファンクションブロックなどを利用したラダーロジックなどで規定することができる。
【0131】
データベース書込みプログラム156は、ユーザプログラム154内に規定された命令によって呼び出され、時系列データベース180に対して指定されたデータを書込む。
【0132】
シリアライズ通信プログラム158は、データベース書込みプログラム156から時系列データベース180に対して書込まれるデータに対してシリアライズ処理を行う。より具体的には、シリアライズ通信プログラム158は、時系列データを格納可能なバイト列に変換する処理(シリアライズ)を実行する。対象のデータは、シリアライズ処理により所定のバイト列に変換された上で、時系列データベース180内に格納される。なお、時系列データベース180へのデータ書込みの速度およびデータ容量などに応じて、必ずしもシリアライズ処理を行う必要はない。すなわち、シリアライズ通信プログラム158はオプショナルな構成である。
【0133】
変数管理プログラム160は、PLCエンジン150で利用可能な値を変数の形で管理する。より具体的には、変数管理プログラム160は、CPUユニット100の状態などを示すシステム変数と、CPUユニット100とローカルバスまたはフィールドバスを介して接続される各種デバイスが保持する値を示すデバイス変数と、CPUユニット100で実行されるユーザプログラム154が保持する値を示すユーザ変数とを管理する。
【0134】
入力プログラム172は、CPUユニット100とローカルバスまたはフィールドバスを介して接続される各種デバイスから入力データを取得する機能を提供する。
【0135】
出力プログラム174は、CPUユニット100において実行されるユーザプログラム154によって算出される指令値(出力データ)をデータバス112またはネットワーク110を介して接続される対象のデバイスへ出力する。
【0136】
時刻同期プログラム177は、CPUユニット100内の制御プログラムの実行時に、CPUユニット100と、データバス111に接続される機能ユニット200と、データバス112に接続される機能ユニット300と、ネットワーク110に接続されるフィールド機器90との間における時刻同期を実現する。時刻同期プログラム177は、時刻同期をとるために管理するタイマを適宜補正するための補正プログラム178を備える。補正プログラム178が実行されることにより後述する補正部10Bが実現される。補正部10Bにより実施される補正処理については後述する。
【0137】
スケジューラプログラム170は、CPUユニット100のプロセスまたはタスクなどに対して、リソース割当てや実行タイミングなどを管理する。このような、プロセスまたはタスクは、制御プログラム152および変数管理プログラム160、入力プログラム172、出力プログラム174および時刻同期プログラム177等がCPUユニット100により実行されることにより生成され得るプロセスまたはタスクが含まれる。
【0138】
時系列データベース180は、典型的には、主記憶装置106または二次記憶装置108に配置され、データを格納する機能とともに、外部からの要求(クエリ)に応答して、指定されたデータを応答する検索機能を搭載している。時系列データベース180は、データベース書込みプログラム156により書込まれる時系列データ182を格納している。すなわち、時系列データベース180は、入力データ、出力データ、制御プログラム152による制御演算において算出される演算データ、製造データ、イベントデータの少なくとも一部を時系列に格納する。このような入力データおよび出力データには、CPUユニット100が機能ユニット300から受信するデータおよびCPUユニット100が機能ユニット300へ送信するデータが含まれる。また、イベントデータには、CPUユニット100が、機能ユニット200から受信するセキュリティ監視に関するデータが含まれ得る。
【0139】
上位接続プログラム192は、製造実行システム400などの上位のネットワーク13に接続された外部装置との間でデータを遣り取りする。本実施の形態に係るCPUユニット100においては、CPUユニット100から製造実行システム400に対して入力データや演算データが出力されるとともに、製造実行システム400から製造情報を受信することができる。このように、上位接続プログラム192は、制御対象に関連付けられた製造実行システム400から製造データを取得する製造データ取得機能を提供する。
【0140】
本実施の形態では、製造実行システム400は時系列DB450を有している。この場合には、上位接続プログラム192に代えて、あるいは、上位接続プログラム192の一部として、データベース接続プログラム193が設けられ得る。データベース接続プログラム193は、例えば、リレーショナルデータベースに対してSQLなどのクエリを送信するとともに、応答を受信する処理を実行するようにしてもよい。データベース接続プログラム193が実行されることにより、CPUユニット100内の時系列データベース180の時系列データ182は、製造実行システム400に転送されて、時系列DB450に格納され得る。データベース接続プログラム193により製造実行システム400へ出力される時系列データの詳細については後述する。
【0141】
ゲートウェイプログラム194は、クラウド上の装置と通信する。例えば、クラウド上のIoTサービスを提供する装置に対して、時系列データベース180の時系列データ182を提供する。具体的には、ゲートウェイプログラム194は、時系列データベース180から、指定された種類のデータを指定された周期で取得して、時系列データとして出力する。ゲートウェイプログラム194によりIoTサービスの提供装置へ出力される時系列データは、例えば、データベース接続プログラム193により製造実行システム400へ出力される時系列データと同様な構成を備えることができる。
【0142】
CPUユニット100の入力プログラム172は、データバス111,112および/またはネットワーク110を介してセンサ等のフィールド機器90から入力データを取得する。
【0143】
CPUユニット100の上位接続プログラム192は、製造実行システム400から製造データを取得する。変数管理プログラム160は、これらの取得された入力データおよび製造データを変数として管理する。
【0144】
ユーザプログラム154は、変数管理プログラム160により管理されるシステム変数、デバイス変数、ユーザ変数を参照しつつ、予め指定された制御演算を実行し、その実行結果(出力データ)を変数管理プログラム160に出力する。
【0145】
出力プログラム174は、ユーザプログラム154の制御演算によって算出される出力データを制御出力として、データバス112および/またはネットワーク110を介してアクチュエータ等のフィールド機器90へ出力する。
【0146】
データベース書込みプログラム156は、変数管理プログラム160により管理される変数のうち指定された観測値を時系列データベース180に書込む。
【0147】
上位接続プログラム192は、変数管理プログラム160により管理される変数のうち指定された変数の値、および/または、時系列データベース180に格納された時系列データ182のうち指定されたデータを、時系列データとして製造実行システム400へ出力する。
【0148】
ゲートウェイプログラム194は、変数管理プログラム160により管理される変数のうち指定された変数の値、および/または、時系列データベース180に格納された時系列データ182のうち指定されたデータを、時系列データとしてIoTサービスへ出力する。IoTサービスの提供装置は、例えば、CPUユニット100からの時系列データに基づいて、挙動解析を行って、制御対象の設備や装置などの予知保全などを行うサービスを提供する。
【0149】
(d5.時刻同期の構成)
まず、本実施の形態に係る制御装置2は、時刻およびカウンタを同期させる機能(以下、それぞれ「時刻同期」および「カウンタ同期」とも称す。)を有している。
【0150】
本明細書において、「時刻」は、時の流れにおけるある一点を示すものを意図し、例えば、時分秒などの単位を用いて規定される。「カウンタ」は、制御装置2および関連する装置内でタイミングを制御するための値を包含し、基本的には、予め定められた単位時間毎に所定値ずつインクリメントまたはデクリメントされる値(以下では、カウンタが示す値を「カウンタ値」とも称す。)を示す。本実施の形態では、限定されないが、カウンタ値はタイマの値に相当し、例えばナノ秒のオーダを表現し得る64ビット長の整数値を表す。
【0151】
基本的には、時刻の同期精度は、カウンタの同期精度より劣っていることから、本実施の形態では、制御装置2を構成するユニット間および各ユニットとフィールド機器90を含む他のデバイスとの間では、カウンタ値を用いた時刻同期が採用される。
【0152】
図10A図10Bは、本実施の形態に係る制御装置2が管理する時刻同期のための構成の一例を模式的に示す図である。図10A図10Bを参照して、ネットワーク11から各制御装置2がマスタクロックのカウンタ値を取得するための構成、および時刻同期信号130をトリガとして時刻同期の実現するための構成を説明する。図10A図10Bでは、時刻同期信号130は、機能ユニット200の信号ジェネレーター26(図7参照)により生成されて信号線113に伝送される。
【0153】
このような時刻同期を実現する構成を、例えば、制御装置2にネットワーク11を介してTSN(Time-Sensitive Networking)のマスタクロックが提供されるケース(図10A参照)と、制御装置2にネットワーク11を介してEtherCAT(登録商標:Ethernet for Control Automation Technology)のマスタクロックが提供されるケース(図10B参照)とに分けて説明する。なお、ネットワーク11を介して制御装置2に提供されるマスタクロックの規格は、これらに限定されず、例えばIEEE1588であってもよい。
【0154】
まず、図10Aを参照して、TSNのマスタクロック191Aを、例えばネットワーク11上の装置/ライン管理装置190が提供すると想定する。マスタクロック191Aは、例えばインターネット上に配置された時刻同期サーバが管理する絶対時刻を示す。なお、マスタクロック191Aは、ネットワーク11上の他の装置であってもよい。
【0155】
機能ユニット200は、時刻同期プログラム23が実行されることにより、同期処理部200Aを備える。同期処理部200Aは、ネットワークインターフェイス220を介して装置/ライン管理装置190と通信し、マスタクロック191Aを参照する。また、同期処理部200Aは、カウンタDC1およびカウンタOC1を有する。同期処理部200Aは、カウンタ値の補正処理を実施する補正部20Aを備えてもよい。カウンタDC1とカウンタOC1は、例えばカウンタ213(図6または図7参照)に相当する。
【0156】
また、CPUユニット100は、時刻同期プログラム177が実行されることにより、同期処理部100Aを備える。同期処理部100Aは、補正部10B、記憶領域10C、カウンタDC2およびカウンタOC2を備える。カウンタDC2は、カウンタ119およびカウンタ123(図6参照)に対応する。また、カウンタDC2は、スケジューラプログラム170が制御プログラム152等の実行タイミングをスケジューリングするために参照するカウンタ(図6のカウンタ126等)にも対応する。また、カウンタOC2はカウンタ121(図6参照)に対応する。なお、カウンタOC1,OC2は、Ordinary Clockによるカウンタを表し、カウンタDC1,DC2はDistributed Clockによるカウンタを表す。
【0157】
同期処理部200Aは、装置/ライン管理装置190の時刻同期サーバとしての機能を利用して、マスタクロック191Aの時刻を取得するとき、ネットワーク11等の伝送遅延を補正する。これにより、同期処理部200Aは、マスタクロック191Aから、より正確な時刻を取得することができる。同期処理部200Aは、マスタクロック191Aから取得した時刻に基づくカウンタ値をカウンタOC1に設定する。同期処理部200Aは、定期的に装置/ライン管理装置190からマスタクロック191Aの時刻を取得し、カウンタOC1に設定する。
【0158】
これにより、機能ユニット200では、同期処理部200Aは、カウンタOC1をマスタクロック191Aに同期させることが可能となる。
【0159】
また、機能ユニット200は、CPUユニット100に対して時刻同期サーバとして機能する。すなわち、同期処理部200Aは、周期的に、カウンタOC1のカウンタ値をデータバス111に送信する。これにより、機能ユニット200は、データバス111に接続されたCPUユニット100に対し、マスタクロック191Aに同期しているカウンタ値(すなわち、カウンタOC1のカウンタ値)を提供することができる。
【0160】
一方、CPUユニット100の同期処理部100Aは、例えば起動時にデータバス111を介してカウンタOC1のタイマ値を受信し、受信したタイマ値をカウンタOC2に設定する。以降は、同期処理部100Aは、カウンタOC2のカウンタ値を内部のハードウェア回路からの出力に同期して周期的に更新(インクリメント、またはデクリメント)し、更新後の値をカウンタDC2に設定する。これにより、カウンタDC2のカウンタ値は周期的に更新される。
【0161】
したがって、CPUユニット100では、同期処理部100Aは、マスタクロック191Aに同期したカウンタOC1に、カウンタOC2およびカウンタDC2を同期させるので、カウンタDC2をマスタクロック191Aに同期させることが可能となる。
【0162】
CPUユニット100は、プログラムのスケジューリングを、上記に述べたマスタクロック191Aとカウンタとの同期に基づき実施する。この点を図6図9を参照し説明する。より具体的には、スケジューラプログラム170は、カウンタ126を基準にして制御プログラム152等のスケジューリングを実施する。また、入力プログラム172および出力プログラム174は、カウンタ126に同期したカウンタ119およびカウンタ123を基準にして各デバイスと時刻同期を実施する。これにより、CPUユニット100内における制御プログラム152等のスケジューリング、および制御装置2に接続される各デバイスと当該制御装置2の時刻同期を、マスタクロック191Aを基準にして実施することが可能となる。その結果、CPUユニット100内における制御プログラム等のスケジューリングおよび制御装置2に接続される各デバイスと当該制御装置2の間の入出力を、マスタクロック119Aに同期させて実施することが可能となる。
【0163】
(d6.時刻同期信号に基づくカウンタの補正)
本実施の形態では、例えば、カウンタDC2のカウンタ値の更新はCPUユニット100の内部のハードウェア回路の出力信号に同期して実施される。そのため、ハードウェア回路の誤差等に起因して機能ユニット200のカウンタOC1のカウンタ値と、CPUユニット100のカウンタDC2のカウンタ値との差(以下、これを同期ずれともいう)が大きくなる可能性がある。同期ずれが大きくなると、CPUユニット100内における制御プログラムのスケジューリング、および制御装置2に接続される各デバイスと当該制御装置2との間の入出力を、マスタクロック119Aに同期させて実施することができないとの事態が生じる。なお、上記の差が生じる要因は、ハードウェア回路の誤差等に限定されない。
【0164】
このような事態を防止するために、同期処理部100Aは、同期ずれを低減するための値(以下、調整値Dともいう)を用いてカウンタDC2のカウンタ値を補正する。具体的には、補正部10Bは、信号線113から時刻同期信号130を受信したとき、ラッチ処理を含む補正処理を実施する。
【0165】
ラッチ処理では、補正部10Bは、カウンタDC2のカウンタ値をラッチ(取得)し、ラッチしたカウンタ値LDC2を記憶領域10Cに格納する。また、ラッチ処理では、補正部10Bは、データバス111を介して伝送されるカウンタOC1のカウンタ値をラッチ(受信)し、ラッチしたカウンタ値LOC1を記憶領域10Cに格納する。
【0166】
補正処理では、ラッチされたカウンタ値に調整値D(正の値または負の値)を加算し、加算後の値を、カウンタDC2に設定する。
【0167】
補正としては、上記の調整値DをN(N≧2)個の値に分割し、分割された値Di(i=1,2,3,…N)の各値Diを周期的にカウンタDC2のカウンタ値に累積的に加算してもよい。これにより、加算がN回繰返されて、カウンタDC2のカウンタ値を、徐々に(滑らかに)変化させることができる。
【0168】
また、補正としては、調整値Dを、指定された頻度でカウンタDC2のカウンタ値に加算するとしてもよい。
【0169】
なお、上記の調整値Dは、固定または可変である。可変値としては、ラッチされたカウンタ値LOC1とLDC2との差の大きさに従い決定された値を含み得る。また、上記の“N”の値も固定または可変であってよく、可変値としては、例えば調整値Dの大きさに従い決定された値を含み得る。
【0170】
また、補正部10Bは、時刻同期信号130を受信する毎に算出されるカウンタ値LOC1とLDC2との差の変化(ドリフト状の変動)の傾向を検出し、変化傾向に応じて上記の調整値Dまたは“N”の値を決定してもよい。つまり、時刻同期信号130を受信する毎に算出される同期ずれが小さくなるように、すなわち同期ずれの差が所定値に収束するように、上記の調整値Dまたは“N”の値を決定する。例えば、変動幅が大きいほど調整値Dを大きくし、または“N”の値を小さくすることで、同期ずれは小さくなり、且つ同期ずれは早めに所定値に収束し得る。
【0171】
また、補正として、カウンタDC2の値に上記の調整値DをセットすることによるカウンタDC2の初期化が含まれてもよい。
【0172】
また、補正処理が実施されるタイミングは、時刻同期信号130が受信された時点であってもよく、または、時刻同期信号130を受信した時から所定時間経過後であってもよい。
【0173】
また、時刻同期信号130の送信元のユニットは、機能ユニット200に限定されず、図1の制御システム1に備えられる他のユニットであってもよい。例えば、図1の制御システム1に備えられる図示しない所定のトリガ信号発生装置、またはいずれかの制御装置2(当該制御装置2のCPUユニット100または機能ユニット200,300(図5参照))、または装置/ライン管理装置190であってもよい。また、本実施の形態では、時刻同期信号130は、周期的に、例えば1m秒毎に出力されるが、周期的に出力される方式に限定されない。例えば、機能ユニット200の同期処理部200AのカウンタOC1のカウンタ値が、ある指示値に等しくなったときに、時刻同期信号130の送信元のユニットが時刻同期信号130を出力するとしてもよい。
【0174】
(d7.時刻同期の構成の他の例)
図10Aでは、時刻はTSNが提供するマスタクロック191Aから取得されたが、時刻同期のためのマスタの時刻の取得経路はTSNに限定されない。例えば図10Bに示すように、EtherCATのマスタクロック191Bから取得されてもよい。EtherCATではマスタクロック191Bは、絶対時刻に同期している。図10Bでは、時刻同期のためにカウンタDC1とDC2が用いられる。
【0175】
図10Bを参照して、機能ユニット200の同期処理部200Bは、定期的に、マスタクロック191Bの時刻を、伝搬遅延を補正して取得する。同期処理部200Bは、取得した時刻を示すカウンタ値をカウンタDC1に設定する。同期処理部200Bは、カウンタDC1のカウンタ値を周期的に読出し、データバス111に伝送する。図10Bでは、カウンタDC1はカウンタ213(図6参照)に対応する。また、カウンタDC2は、カウンタ119、121および123(図6参照)ならびに図9においてスケジューラプログラム170が制御プログラム152等の実行タイミングをスケジューリングするために参照するカウンタ(図6のカウンタ126等)に対応する。
【0176】
起動時など、CPUユニット100の同期処理部100Bは、データバス111を介して受信したカウンタ値をカウンタDC2に設定する。その後、カウンタDC2の値を内部のハードウェア回路の出力に同期して更新(インクリメントまたはデクリメント)する。これにより、カウンタDC2のカウント値は周期的に更新される。また、同期処理部100Bの補正部10Bは、時刻同期信号130を、信号線113を介して受信したとき、データバス111を介して受信するカウンタ値をラッチし、ラッチカウンタ値LDC1として記憶領域10Cに格納する。また、補正部10Bは、時刻同期信号130を受信したとき、カウンタDC2のカウンタ値をラッチし、ラッチカウンタ値LDC2として記憶領域10Cに格納する。
【0177】
補正部10Bの補正処理では、図10Aの場合と同様の補正を実施することができる。図10Bでは、補正に用いる調整値Dは、ラッチカウンタ値LDC1とLDC2との差(同期ずれ)の大きさに従い決定された値を含み得る。
【0178】
また、補正部10Bは、時刻同期信号130を受信する毎に算出されるラッチカウンタ値LDC1とLDC2との差の変化(ドリフト状の変動)の傾向を検出し、変化傾向に応じて上記の調整値Dまたは“N”の値を決定してもよい。例えば、時刻同期信号130を受信する毎に算出される差が小さくなるように、すなわち差が所定値に収束するように、上記の調整値Dまたは“N”の値を決定してもよい。
【0179】
また、補正として、カウンタDC2の値に上記の調整値をセットすることにより、カウンタDC2の初期化が含まれてもよい。
【0180】
また、図10Bの構成においても、補正処理を実施する時期は、図10Aと同様の時期であってよい。また、図10Bでは、例えばカウンタDC1のカウンタ値が、ある指示値に等しくなったときに時刻同期信号130が信号線113に出力されてもよい。
【0181】
(d8.時刻同期信号に基づくカウンタの補正の他の例)
図10A図10Bでは、補正処理はCPUユニット100の補正部10Bが実施する構成に限定されず、機能ユニット200の補正部20Aおよび記憶部20Cを用いて実施してもよい。
【0182】
具体的には、図10Aを参照して、CPUユニット100の同期処理部100Aは、カウンタDC2のカウンタ値をデータバス111に周期的に送信する。補正部20Aは、信号線113から時刻同期信号130を受信するとラッチ処理を実施する。
【0183】
ラッチ処理では、補正部20Aは、カウンタOC1のカウンタ値をラッチ(取得)し、また、データバス111を介して伝送されるカウンタDC2のカウンタ値をラッチ(受信)する。このようしてラッチされたカウンタ値を、ラッチカウンタ値LOC1およびLDC2として記憶部20Cに格納する。
【0184】
補正処理では、補正部20Aは、記憶部20Cのラッチカウンタ値LOC1およびLDC2の同期ずれの差を算出し、差が小さくなるような調整値D(正の値または負の値)を決定し、決定した調整値Dをラッチカウンタ値LDC2に加算する。補正部20Aは、加算後のラッチカウンタ値を、データバス111を介してCPUユニット100に転送する。CPUユニット100は、受信した加算後のラッチカウンタ値を、カウンタDC2に設定する。これにより、CPUユニット100のカウンタDC2のカウンタ値は、同期ずれが補正される。
【0185】
また、図10Bでも、補正部20Bが、記憶部20Cを用いてCPUユニット100のカウンタDC2のカウンタ値の補正処理を実施してもよい。この場合、同期処理部100Bは、カウンタDC2のカウンタ値をデータバス111に周期的に送信する。補正部20Bは、信号線113から時刻同期信号130を受信するとラッチ処理を実施する。
【0186】
ラッチ処理では、補正部20Bは、カウンタDC1のカウンタ値をラッチ(取得)し、また、データバス111を介して伝送されるカウンタDC2のカウンタ値をラッチ(受信)する。このようしてラッチされたカウンタ値を、ラッチカウンタ値LDC1およびLDC2として記憶部20Cに格納する。
【0187】
補正処理では、補正部20Bは、ラッチカウンタ値LDC1およびLDC2の同期ずれの差が小さくなるような調整値Dを決定し、決定した調整値Dをラッチカウンタ値LDC2に加算する。補正部20Bは、加算後の値を、データバス111を介してCPUユニット100に転送する。CPUユニット100は、受信した加算後のラッチカウンタ値LDC2を、カウンタDC2に設定する。これにより、CPUユニット100のカウンタDC2のカウンタ値は、同期ずれが補正される。
【0188】
このように、制御装置2では、時刻同期信号130が信号線113を介して与えられたときの、第1のユニット(機能ユニット200)のタイマが示す第1のタイマ値(カウンタOC1のカウンタ値)および第2のユニット(CPUユニット100)のタイマが示す第2のタイマ値(カウンタDC2のタイマ値)の一方が、データライン(データバス111)を介して取得されて、当該取得されたタイマ値に基づいて、第1のユニットのタイマと第2のユニットのタイマとの間の同期ずれが補正される。これにより、第1のユニット(機能ユニット200)のタイマ(カウンタOC1)に第2のユニット(CPUユニット100)のタイマ(カウンタDC2)を合わせることができる。
【0189】
図10A図10Bを参照して、制御システム1は、さらに、CPUユニット100および機能ユニット200とは異なるユニット370を備えて、ユニット370に上記に述べた補正処理を実施させてもよい。
【0190】
ユニット370は、信号線113とデータバス111に接続され得る。ユニット370は、ハードウェアプロセッサを備えて、ハードウェアプロセッサがプログラムを実行することにより、補正部20A(または補正部20B)または補正部10Bに相当する補正部371を実現する。ユニット370は、信号線113において時刻同期信号130を検出すると、補正部371はデータバス111を介してカウンタOC1とカウンタDC2(またはカウンタDC1とカウンタDC2)からカウンタ値を読出す。補正部371は、読出されたカウンタ値を用いて上記に述べたように、同期ずれが小さくなるようカウンタDC2のカウント値を補正する。補正後のカウンタ値は、データバス111を介してカウンタDC2に設定される。
【0191】
図10A図10Bに示された補正部20A,20B、補正部10B、および補正部371は、調整手段の一実施例である。制御装置2または制御システム1は、補正部20A,20B、補正部10B、および補正部371によって提供される処理の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
【0192】
以上のとおり、各制御装置2においては、マスタクロック191A(または191B)の時刻を用いて、(i)ユニット間で時刻同期が実現され、また(ii)各ユニットと当該ユニットに接続されるデバイス間で時刻同期が実現され、また(iii)CPUユニット100ではスケジューラプログラム170により制御プログラム152,入力プログラム172および出力プログラム174の実行についての時刻同期が実現される。さらに各制御装置2が共通のマスタクロック191A,191Bを用いた時刻同期を実施することで、(iv)異なる制御装置2の間で、すなわち異なる工程間で時刻同期を実現することができる。
【0193】
図10A図10Bでは、制御システム1は補正部20A,20B、補正部10Bおよび補正部371を備えるよう構成されるが、これら補正部の少なくとも1つを備えるよう構成されてもよい。
【0194】
<E.処理フロー>
図11は、本実施の形態に係る処理のフローチャートの一例を示す図である。図11は、同期処理と観測値の収集処理を含む。図11を参照して、機能ユニット200のプロセッサ202は同期処理部200A(または200B)による処理を実施する。
【0195】
まず、プロセッサ202は、マスタクロック191A(または191B)から時刻を取得してカウンタOC1(またはDC1)にタイマ値を設定する(ステップS1)。
【0196】
プロセッサ202は、時刻同期信号130の送信時期になったかを判定する(ステップS3)。時刻同期信号130の送信時期でないと判定すると(ステップS3でNO)、ステップS1に戻るが、送信時期になったと判定すると(ステップS3でYES)、信号ジェネレーター26により時刻同期信号130を生成し、信号線113に出力する(ステップS5)。
【0197】
また、プロセッサ202は、カウンタOC1(またはDC1)のカウンタ値をデータバス111に周期的に送信している(ステップS7)。このカウンタ値の送信は、時刻同期信号130の送信にかかわらず実施される。
【0198】
また、CPUユニット100では、プロセッサ101は同期処理部100A(または100B)により処理を実施する。なお、図11の処理においては、カウンタOC2の設定およびカウンタDC2のカウンタ値を更新する処理が実施される。
【0199】
プロセッサ101は信号線113から時刻同期信号130を受信するかを判定する(ステップS25)。時刻同期信号130を受信しない間は(ステップS25でNO)は、ステップS25の処理が繰返される。
【0200】
プロセッサ101は時刻同期信号130を受信したと判定すると(ステップS25でYES)、上記に述べたカウンタ値のラッチ処理を実施する(ステップS27)。プロセッサ101は、補正部10Bによる補正処理を実施する時期になったかを判定する(ステップS29)。例えば、時刻同期信号130を受信してから所定時間が経過したかを判定する。補正を実施する時期になっていないと判定される間は(ステップS29でNO)、ステップS29の処理が繰返される。
【0201】
プロセッサ101は、補正処理を実施する時期になった、例えば時刻同期信号130を受信してから所定時間が経過したことを判定すると(ステップS29でYES)、補正部10Bに上記に述べた補正処理を実施させる(ステップS31)。
【0202】
補正処理は、ラッチされたカウンタ値の差の算出(ステップS33)、補正のための調整値Dの決定(ステップS35)、および調整値Dを用いたカウンタDC2のカウンタ値の変更(ステップS37)を含む。
【0203】
また、CPUユニット100では、プロセッサ101は、観測値を収集し時系列データベース180に格納する(ステップS41)。プロセッサ101は、時系列データベース180の時系列データ182を読出し、製造実行システム400またはクラウド上のIoTサービスの提供装置に送信する(ステップS43)。このとき、時系列データ182の伝送のフレームが生成されて、フレーム形式で送信される(ステップS45)。
【0204】
例えば、製造実行システム400は、制御装置2から時系列データ182のフレームを受信し(ステップS61)、時系列DB450に格納する(ステップS63)。
【0205】
なお、図11では、CPUユニット100において時刻同期処理のための補正を実施したが、上述したように機能ユニット200において時刻同期処理のための補正が、ステップS31と同様に実施されてもよい。
【0206】
図10A図10B図11では、機能ユニット200は、カウンタOC1(またはカウンタDC1)のカウンタ値をデータバス111に周期的に伝送することより、CPUユニット100に当該カウンタ値を提供したが、CPUユニット100にカウンタ値を提供する方法は、これに限定されない。例えば、信号線113に時刻同期信号130が伝送されるとき、CPU100が、データバス111を介して、機能ユニット200のカウンタOC1(またはカウンタDC1)のカウンタ値を参照する(読出す)方法であってもよい。
【0207】
<F.時系列データの処理>
図12は、本実施の形態に係る製造実行システム400の構成例を示す図である。製造実行システム400は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いて実現される。
【0208】
図12を参照して、製造実行システム400は、プロセッサ402と、メインメモリ404と、入力部406と、出力部408と、ストレージ410と、光学ドライブ412と、外部装置と通信するためのUSBコントローラ420と、ネットワーク13,14を接続するネットワークコントローラ413を含む。これらのコンポーネントは、プロセッサバス418を介して接続されている。
【0209】
プロセッサ402は、CPUやGPUなどで構成され、ストレージ410に格納されたプログラムを読出して、メインメモリ404に展開して実行することで、後述するような各種処理を実現する。
【0210】
メインメモリ404は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ410は、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。
【0211】
ストレージ410には、基本的な機能を実現するためのOS412に加えて、製造実行システム400としての機能を提供するための各種プログラムが格納される。各種プログラムは、DB管理プログラム411を含む。また、ストレージ410は、時系列DB450を格納する領域を有する。
【0212】
入力部406は、キーボードやマウスなどで構成され、製造実行システム400に対するユーザ操作を受付ける。出力部408は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ402からの処理結果などを出力する。
【0213】
製造実行システム400は、光学ドライブ412を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体414(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)から、その中に格納されたプログラムが読取られてストレージ410などにインストールされる。
【0214】
図12には、プロセッサ402がプログラムを実行することで、製造実行システム400として必要な機能が提供される構成例を示したが、製造実行システム400は、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
【0215】
図13は、図12のDB管理プログラム411が実行されることで提供されるDBマネージャーを示す図である。図13を参照して、プロセッサ402により、DB管理プログラム411が実行されることで提供されるDBマネージャー451は、時系列DB450を管理(例えば、DBの生成,集約,編集,解析,出力等)する。
【0216】
(f1.観測値の時刻同期)
図14A図14Bは、本実施の形態に係る制御装置2が製造実行システム400に時系列データを送信する場合の処理例を示す模式図である。図14A図14Bでは時刻同期処理が実施されないケース(図14(A)参照)と時刻同期処理が実施されるケース(図14B参照)とが対比して示される。図15は、本実施の形態に係る制御装置2において生成される時系列データのフレームと集約データを模式的に示す図である。図15の(A)は、工程3Bの制御装置2Bが収集する観測値を格納するフレームを示し、図15の(B)は、工程3Aの制御装置2Aが収集する観測値を格納するフレームを示し、図15の(C)は、DBマネージャー451によって集約された観測値を格納する時系列DB450の一例を示す。
【0217】
図14Aには、制御装置2A,2Bが上位のネットワーク13を介して製造実行システム400と接続されている構成を示す。図14Aに示す構成においては、制御装置2Aと制御装置2Bとの間では時刻同期がなされていないとする。
【0218】
各時系列データには、制御装置2A,2Bが収集した観測値および各観測値に対応付けられる時刻が含まれる。逆にいえば、図14Aに示す構成においては、制御装置2A,2Bは、各観測値の収集タイミングを示す情報としては時刻を付加することしかできない。時刻は、制御装置2A,2Bがそれぞれ管理するものであり、時刻同期は不完全である。
【0219】
その結果、製造実行システム400にて収集される時系列データの間では、時刻が完全には一致しないので、DBマネージャー451は、タイミングを正確に合せてそれぞれの時系列データを集約(すなわち、統合)することはできない。
【0220】
これに対して、図14Bに示す構成においては、制御装置2Aと制御装置2Bとは上記に述べた時刻同期されたカウンタを備えている。その結果、制御装置2Aと制御装置2Bそれぞれから送信される時系列データのフレームには、工程3A,3Bにおいて収集した観測値に対応付けて、各観測値を収集したタイミングを示す時刻452(例えば、マスタクロックから取得した時刻)およびカウンタ値453(例えば、カウンタDC2のカウンタ値)を含めることができる(図15の(A)と図15の(B)を参照)。
【0221】
DBマネージャー451は、制御装置2A,2Bのそれぞれから受信した時系列データに含まれるカウンタ値453を用いて、時系列データに含まれる観測値のタイミングを合せることができる。すなわち、異なる制御装置2(異なる工程)でそれぞれ収集された観測値であっても、時系列DB450において時間軸をほぼ完全に一致させて集約して格納し(図15の(C)を参照)、集約したデータを観測値の解析に用いることができる。
【0222】
<G.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
ファクトリオートメーション用の制御システム(1)であって、
各々がタイマを有する第1のユニット(200)および第2のユニット(100)と、
前記第1のユニットと前記第2のユニットとの間で、前記タイマが示すタイマ値を含むデータを遣り取りするためのデータライン(111)と、
前記第1のユニットと前記第2のユニットとを電気的に接続する信号線(113)と、
前記信号線および前記データラインに接続される調整手段(10B、20A、20B)と、を備え、
前記調整手段は、
トリガ信号(130)を前記信号線を介して受信したときの、前記データラインを介して前記タイマ値を取得し、取得したタイマ値に基づいて、前記第1のユニットのタイマ(OC1)に前記第2のユニットのタイマ(DC2)を合わせる、制御システム。
[構成2]
前記第1のユニットおよび前記第2のユニットのうちの一方が、前記トリガ信号を前記信号線に伝送する、構成1に記載の制御システム。
[構成3]
前記制御システムは、さらに、前記トリガ信号を前記信号線に伝送するユニットであって、前記第1のユニットおよび前記第2のユニットとは異なるユニット(190)を備える、構成1または2に記載の制御システム。
[構成4]
前記調整手段は、前記第1のユニットおよび前記第2のユニットのうちの一方に備えられる、構成1から3のいずれか1に記載の制御システム。
[構成5]
前記制御システムは、さらに、前記調整手段を備えるユニットであって、前記第1のユニットおよび前記第2のユニットとは異なるユニットを備える、構成1から4のいずれか1に記載の制御システム。
[構成6]
前記調整手段は、
前記トリガ信号を前記信号線を介して受信したとき、前記データラインを介して取得したタイマ値を用いて、前記第1のユニットのタイマのタイマ値と前記第2のユニットのタイマのタイマ値との差を取得し、取得した差に基づく調整値を用いて、前記第2のユニットのタイマのタイマ値を調整することにより、前記第1のユニットのタイマに前記第2のユニットのタイマを合わせる、構成1から5のいずれか1に記載の制御システム。
[構成7]
前記調整手段は、
前記トリガ信号を受信する毎に検出される前記差の大きさの変化の傾向から、前記調整値を決定する、構成6に記載の制御システム。
[構成8]
前記制御システムは、さらに、
第1のネットワーク(11)に接続される複数の制御装置(2)を備え、
前記複数の制御装置の各々は、前記第1のユニットおよび前記第2のユニットを含み、
前記複数の制御装置は、前記第1のネットワークを介して受信する共通の時刻であって前記タイマの間の同期に用いる時刻(191A,191B)により互いに同期する、構成7に記載の制御システム。
[構成9]
前記制御システムは、さらに、
前記第1のネットワークよりも下位の第2のネットワーク(110)を介して、前記複数の制御装置の各々に接続される1または複数の機器(90)と、
前記複数の制御装置の間で互いに同期された同期タイマ(101A,101B,101C)と、を備え、
前記制御装置と、当該制御装置の前記第2のネットワークに接続される前記1または複数の機器は、前記同期タイマのタイマ値により互いに同期する、構成8に記載の制御システム。
【0223】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0224】
1 制御システム、2,2A,2B,2C 制御装置、3A,3B,3C 工程、10B,20A,20B 補正部、10C,21 記憶領域、11,12,13,14,110 ネットワーク、23,177 時刻同期プログラム、24 セキュリティプログラム、90,90A,90C,90D,90F,90G,90I フィールド機器、91A,91C,91D,91F,91G,91I,101A,101B,101C,102A,102B,102C,401A,401C タイマ、100 CPUユニット、100A,100B,200A,200B 同期処理部、101,102,202,402 プロセッサ、110P 信号ポート、111,112 データバス、113 信号線、119,121,123,125,126,168,213,DC,DC1,DC2,OC,OC1,OC2 カウンタ、191,191A,191B マスタクロック、130 時刻同期信号、178 補正プログラム、180 時系列データベース、182 時系列データ、190 装置/ライン管理装置、400 製造実行システム、450 時系列DB、451 DBマネージャー、500 サポート装置、LDC1,LDC2,LOC1 ラッチカウンタ値。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10A
図10B
図11
図12
図13
図14A
図14B
図15