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

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

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

<>
  • 特開-制御装置およびプログラム 図1
  • 特開-制御装置およびプログラム 図2
  • 特開-制御装置およびプログラム 図3
  • 特開-制御装置およびプログラム 図4
  • 特開-制御装置およびプログラム 図5
  • 特開-制御装置およびプログラム 図6
  • 特開-制御装置およびプログラム 図7
  • 特開-制御装置およびプログラム 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024158380
(43)【公開日】2024-11-08
(54)【発明の名称】制御装置およびプログラム
(51)【国際特許分類】
   G05B 19/05 20060101AFI20241031BHJP
   G01D 9/00 20060101ALI20241031BHJP
【FI】
G05B19/05 D
G01D9/00 A
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023073533
(22)【出願日】2023-04-27
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】太田 政則
(72)【発明者】
【氏名】玉嶋 大輔
(72)【発明者】
【氏名】重森 弓束
【テーマコード(参考)】
2F070
5H220
【Fターム(参考)】
2F070AA01
2F070BB10
2F070CC04
2F070CC06
2F070CC11
2F070DD20
2F070FF12
2F070GG07
2F070HH08
5H220AA06
5H220BB01
5H220CC07
5H220CX01
5H220CX04
5H220JJ12
5H220JJ16
5H220JJ26
5H220JJ59
(57)【要約】
【課題】より効率的なデータ格納が可能な制御装置を提供する。
【解決手段】
制御装置は、フィールド装置からの入力データの収集、予め定められたユーザプログラムに従う入力データに基づく出力データの算出、算出される出力データの出力、を含む制御演算を予め定められた実行周期でサイクリック実行する処理部と、処理部が管理するデータのうち指定されたデータを時系列に格納するデータベースと、制御演算がサイクリック実行される実行周期と同じ周期でデータベースへのデータ書込みを実行するためのデータ書込み手段とを備える。データ書込み手段は、指定されたデータの基準レコードを構築する手段と、所定条件を満たしている場合に、指定されたデータの差分レコードを構築する手段とを含む。
【選択図】図5
【特許請求の範囲】
【請求項1】
フィールド装置からの入力データの収集、予め定められたユーザプログラムに従う前記入力データに基づく出力データの算出、算出される出力データの出力、を含む制御演算を予め定められた実行周期でサイクリック実行する処理部と、
前記処理部が管理するデータのうち指定されたデータを時系列に格納するデータベースと、
前記制御演算がサイクリック実行される実行周期と同じ周期で前記データベースへのデータ書込みを実行するためのデータ書込み手段とを備え、
前記データ書込み手段は、
前記指定されたデータの基準レコードを構築する手段と、
所定条件を満たしている場合に、前記指定されたデータの差分レコードを構築する手段とを含む、制御装置。
【請求項2】
前記基準レコードを構築する手段は、第1のタイミング毎に前記指定されたデータの基準レコードを構築し、
前記差分レコードを構築する手段は、前記第1のタイミングと異なる第2のタイミング毎に前記所定条件を満たしている場合に、前記指定されたデータの差分レコードを構築する、請求項1に記載の制御装置。
【請求項3】
前記差分レコードを構築する手段は、前記所定条件として前回の前記指定されたデータと今回の前記指定されたデータとの比較に基づき変化が有る場合に、前記指定されたデータの差分レコードを構築する、請求項1に記載の制御装置。
【請求項4】
前記制御装置は、互いに時刻同期されたフィールド装置と接続されており、
前記データベースに格納されるデータには、当該データがフィールド装置で収集された時刻情報が付与されている、請求項1に記載の制御装置。
【請求項5】
前記データベースには、時刻情報をKeyとし、対応するデータの値および当該データの品質情報をValueとするKey-Valueストア型のレコードが格納される、請求項1に記載の制御装置。
【請求項6】
前記データベースに格納された時系列のデータを再生する再生手段をさらに備え、
前記再生手段は、再生時に前記データベースに格納された対応するデータのうち前記差分レコードを前記基準レコードに基づき再構築して出力する、請求項1記載の制御装置。
【請求項7】
制御装置を実現するためのプログラムであって、前記プログラムはコンピュータに、
フィールド装置からの入力データの収集、予め定められたユーザプログラムに従う前記入力データに基づく出力データの算出、算出される出力データの出力、を含む制御演算を予め定められた実行周期でサイクリック実行するステップを実行させ、
前記コンピュータは、前記制御演算により管理されるデータのうち指定されたデータを時系列に格納するデータベースを備え、前記プログラムは前記コンピュータに、
前記制御演算がサイクリック実行される実行周期と同じ周期で前記データベースへのデータ書込みを実行するステップを実行させ、
前記データ書込みを実行するステップは、
前記指定されたデータの基準レコードを構築するステップと、
所定条件を満たしている場合に、前記指定されたデータの差分レコードを構築するステップとを含む、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データを時系列に格納するデータベースを有する制御装置およびその制御装置を実現するためのプログラムに関する。
【背景技術】
【0002】
様々な生産現場において、PLC(プログラマブルコントローラ)などの制御装置を用いたFA(Factory Automation)技術が広く普及している。このような制御装置が取り扱うデータを事後的に解析するようなニーズがある。
【0003】
特に、ICT(Information and Communication Technology)の進歩によって、制御装置においても大量のデータを収集および格納することが可能になりつつある。
【0004】
上述したような制御装置に内蔵されたデータベースにて大量のデータを収集するような構成を採用した場合であっても、事後的な分析や解析を容易にする仕組みが必要である。
【0005】
この点で、特許文献1においては、制御演算の実行周期にあわせたデータ格納が可能な制御装置が開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2018-151726号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
一方で、制御演算の実行周期にあわせたデータ格納を実行する点で、より効率的にデータを格納する必要がある。
【0008】
本開示は、上記の課題を解決するためのものであって、より効率的なデータ格納が可能な制御装置およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【0009】
本開示の一例に従う制御装置は、フィールド装置からの入力データの収集、予め定められたユーザプログラムに従う入力データに基づく出力データの算出、算出される出力データの出力、を含む制御演算を予め定められた実行周期でサイクリック実行する処理部と、処理部が管理するデータのうち指定されたデータを時系列に格納するデータベースと、制御演算がサイクリック実行される実行周期と同じ周期でデータベースへのデータ書込みを実行するためのデータ書込み手段とを備える。データ書込み手段は、指定されたデータの基準レコードを構築する手段と、所定条件を満たしている場合に、指定されたデータの差分レコードを構築する手段とを含む。
【0010】
基準レコードを構築する手段は、第1のタイミング毎に指定されたデータの基準レコードを構築し、差分レコードを構築する手段は、第1のタイミングと異なる第2のタイミング毎に所定条件を満たしている場合に、指定されたデータの差分レコードを構築する。
【0011】
差分レコードを構築する手段は、所定条件として前回の指定されたデータと今回の指定されたデータとの比較に基づき変化が有る場合に、指定されたデータの差分レコードを構築する。
【0012】
制御装置は、互いに時刻同期されたフィールド装置と接続されており、データベースに格納されるデータには、当該データがフィールド装置で収集された時刻情報が付与されている。
【0013】
データベースには、時刻情報をKeyとし、対応するデータの値および当該データの品質情報をValueとするKey-Valueストア型のレコードが格納される。
【0014】
データベースに格納された時系列のデータを再生する再生手段をさらに備え、再生手段は、再生時にデータベースに格納された対応するデータのうち差分レコードを基準レコードに基づき再構築して出力する。
【0015】
本開示の一例に従う制御装置を実現するためのプログラムであって、プログラムはコンピュータに、フィールド装置からの入力データの収集、予め定められたユーザプログラムに従う入力データに基づく出力データの算出、算出される出力データの出力、を含む制御演算を予め定められた実行周期でサイクリック実行するステップを実行させ、コンピュータは、制御演算により管理されるデータのうち指定されたデータを時系列に格納するデータベースを備え、プログラムはコンピュータに、制御演算がサイクリック実行される実行周期と同じ周期でデータベースへのデータ書込みを実行するステップを実行させ、データ書込みを実行するステップは、指定されたデータの基準レコードを構築するステップと、所定条件を満たしている場合に、指定されたデータの差分レコードを構築するステップとを含む。
【発明の効果】
【0016】
本開示の制御装置およびプログラムによれば、より効率的なデータ格納を実現できる。
【図面の簡単な説明】
【0017】
図1】本実施の形態に係る制御システム1の全体構成例を示す模式図である。
図2】本実施の形態に係る制御システム1を構成する制御装置100のハードウェア構成例を示すブロック図である。
図3】本実施の形態に係る制御システム1を構成する制御装置100のソフトウェア構成例を示すブロック図である。
図4】本実施の形態に係る制御装置100に実装される時系列データベース180のデータ構造を概略する模式図である。
図5】本実施の形態に係る制御装置100におけるサイクリック実行処理および時系列データベースへの書込処理を説明するための模式図である。
図6】実施形態および比較例に従う時系列データベース180に格納されるデータの具体例について説明する図である。
図7】実施形態に従うデータ書込みプログラムの処理について説明するフロー図である。
図8】実施形態に基づく時系列データベースのデータに従う再生処理について説明する図である。
【発明を実施するための形態】
【0018】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0019】
<A.制御システムの全体構成例>
まず、本実施の形態に係る制御装置を含む制御システム1の全体構成例について説明する。
【0020】
図1は、本実施の形態に係る制御システム1の全体構成例を示す模式図である。図1を参照して、本実施の形態に係る制御システム1は、主たる構成要素として、制御対象を制御する制御装置100と、制御装置100に接続されるサポート装置200とを含む。
【0021】
制御装置100は、PLC(プログラマブルコントローラ)などの、一種のコンピュータとして具現化されてもよい。制御装置100は、第1フィールドバス2を介してフィールド装置群6と接続されるとともに、第2フィールドバス4を介して1または複数の表示装置300と接続される。制御装置100は、それぞれのバスまたはネットワークを介して、接続された装置との間でデータを遣り取りする。
【0022】
制御装置100は、製造装置や設備を制御するための各種演算を実行する制御演算機能を有している。制御装置100は、制御演算機能に加えて、フィールド装置群6にて計測され、制御装置100へ転送されるデータ(以下、「入力データ」とも称す。)や制御演算機能によって算出される各種のデータを取得する入出力機能、ならびに、時系列データベース180を有している。なお、以下の説明においては、「データベース」を「DB」とも記す。時系列データベース180は、後述するように、入出力機能により取得される各種データを時系列に格納する。
【0023】
第1フィールドバス2および第2フィールドバス4は、データの到達時間が保証される、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などが知られている。
【0024】
フィールド装置群6は、制御対象または制御に関連する製造装置や生産ラインなど(以下、「フィールド」とも総称する。)から入力データを収集する装置を含む。このような入力データを収集する装置としては、入力リレーや各種センサ(例えば、アナログセンサ、温度センサ、振動センサなど)などが想定される。フィールド装置群6は、さらに、制御装置100にて生成される指令(以下、「出力データ」とも称す。)に基づいて、フィールドに対して何らかの作用を与える装置を含む。このようなフィールドに対して何らかの作用を与える装置としては、出力リレー、コンタクタ、サーボドライバおよびサーボモータ、その他任意のアクチュエータが想定される。
【0025】
このように、制御装置100の制御演算機能は、制御対象から入力データを取得するとともに、取得した入力データに基づく制御演算を実行することで制御対象に対する出力データを決定する。
【0026】
フィールド装置群6は、第1フィールドバス2を介して、制御装置100との間で、入力データおよび出力データを含むデータを遣り取りする。図1に示す構成例においては、フィールド装置群6は、リモートI/O(Input/Output)装置12と、リレー群14と、画像センサ18およびカメラ20と、サーボドライバ22およびサーボモータ24とを含む。フィールド装置群6としては、これらに限られることなく、入力データを収集できるデバイス、または、出力データに基づく何らかのアクションができるデバイスであれば、どのようなものを採用してもよい。
【0027】
リモートI/O装置12は、第1フィールドバス2を介して通信を行う通信部と、入力データの取得および出力データの出力を行うための入出力部(以下、「I/Oユニット」とも称す。)とを含む。このようなI/Oユニットを介して、制御装置100とフィールドとの間で入力データおよび出力データが遣り取りされる。図1には、リレー群14を介して、入力データおよび出力データとして、デジタル信号が遣り取りされる例が示されている。
【0028】
I/Oユニットは、フィールドバスまたはフィールドネットワークに直接接続されるようにしてもよい。図1には、第1フィールドバス2にI/Oユニット16が直接接続されている例を示す。
【0029】
画像センサ18は、カメラ20によって撮像された画像データに対して、パターンマッチングなどの画像計測処理を行って、その処理結果を制御装置100へ出力する。
【0030】
サーボドライバ22は、制御装置100からの出力データ(例えば、位置指令や速度指令など)に従って、サーボモータ24を駆動する。
【0031】
上述のように、第1フィールドバス2を介して、制御装置100とフィールド装置群6との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数百μsecオーダ~数十msecオーダーのごく短い周期で更新されることになる。なお、このような遣り取りされるデータの更新処理を、「I/Oリフレッシュ処理」と称することもある。
【0032】
また、第2フィールドバス4を介して制御装置100と接続される表示装置300は、ユーザからの操作を受けて、制御装置100に対してユーザ操作に応じたコマンドなどを出力するとともに、制御装置100での演算結果などをグラフィカルに表示する。
【0033】
サポート装置200は、制御装置100が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置200は、制御装置100で実行されるプログラムの開発環境(プログラム作成編集ツール、パーサ、コンパイラなど)、制御装置100および制御装置100に接続される各種デバイスのパラメータ(コンフィギュレーション)を設定するための設定環境、生成したユーザプログラムを制御装置100へ出力する機能、制御装置100上で実行されるユーザプログラムなどをオンラインで修正・変更する機能、などを提供する。
【0034】
制御装置100は、さらに、入出力機能により取得されたデータおよび/または時系列データベース180に格納されたデータを外部装置へ出力するゲートウェイ機能も有している。
【0035】
外部装置として、図1には、制御装置100と上位/コントローラ間通信ネットワーク8を介して接続される、製造実行システムなどの上位システム400を典型例として示す。製造実行システムは、制御対象の製造装置や設備からの情報を取得して、生産全体を監視および管理するものであり、オーダー情報、品質情報、出荷情報などを扱うこともできる。
【0036】
<B.制御装置のハードウェア構成例>
次に、本実施の形態に係る制御システム1を構成する制御装置100のハードウェア構成例について説明する。
【0037】
図2は、本実施の形態に係る制御システム1を構成する制御装置100のハードウェア構成例を示すブロック図である。図2を参照して、制御装置100は、演算処理部および1または複数のI/Oユニット124-1,124-2,…を含む。
【0038】
制御装置100は、プロセッサ102と、チップセット104と、主記憶装置106と、二次記憶装置108と、ネットワークコントローラ110と、USB(Universal Serial Bus)コントローラ112と、メモリカードインターフェイス114と、ローカルバスコントローラ122と、フィールドバスコントローラ118,120とを含む。
【0039】
プロセッサ102は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などで構成され、二次記憶装置108に格納された各種プログラムを読み出して、主記憶装置106に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。チップセット104は、プロセッサ102と各デバイスを制御することで、制御装置100全体としての処理を実現する。
【0040】
二次記憶装置108には、基本的な機能を実現するためのシステムプログラムに加えて、制御対象の製造装置や設備に応じて作成されるユーザプログラムが格納される。さらに、二次記憶装置108などを利用して、後述するような時系列データベース180が構成される。
【0041】
ネットワークコントローラ110は、上位/コントローラ間通信ネットワーク8を介して、上位システム400(図1参照)などとの間のデータを遣り取りする。USBコントローラ112は、USB接続を介してサポート装置200との間のデータの遣り取りを制御する。
【0042】
メモリカードインターフェイス114は、メモリカード116を着脱可能に構成されており、メモリカード116に対してデータを書込み、メモリカード116から各種データを読出すことが可能になっている。メモリカード116を利用して、後述するような時系列データベース180を構成することも可能である。
【0043】
ローカルバスコントローラ122は、制御装置100に搭載されるI/Oユニット124-1,124-2,…との間でデータを遣り取りするインターフェイスである。
【0044】
フィールドバスコントローラ118は、第1フィールドバス2を介したフィールド装置群6などとの間のデータの遣り取りを制御する。同様に、フィールドバスコントローラ120は、第2フィールドバス4を介した表示装置300などとの間でデータを遣り取りする。
【0045】
図2には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、制御装置100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOS(Operating System)を並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0046】
<C.制御装置のソフトウェア構成例>
次に、本実施の形態に係る制御システム1を構成する制御装置100のソフトウェア構成例について説明する。
【0047】
図3は、本実施の形態に係る制御システム1を構成する制御装置100のソフトウェア構成例を示すブロック図である。図3を参照して、制御装置100は、PLCエンジン150と、入出力処理部170と、時系列データベース180とを含む。
【0048】
PLCエンジン150は、典型的には、制御装置100のプロセッサ102がシステムプログラムを実行することで各種プログラムの実行環境が提供され、当該実行環境下において、各種プログラムを実行することができる処理部に相当する。より具体的には、PLCエンジン150は、制御プログラム152と、システムプログラム160と、時刻管理部168とを含む。
【0049】
制御プログラム152は、制御対象に応じた各種アプリケーションを提供するためのプログラムであり、典型的には、ユーザプログラム154と、データベース書込みプログラム156と、シリアライズ通信プログラム158とを含む。
【0050】
ユーザプログラム154は、制御演算機能を提供する主たる部分に相当し、制御装置100の制御対象の製造装置や設備などに応じて任意に構成することができる。ユーザプログラム154は、ファンクションブロックなどを利用したラダーロジックなどで規定することができる。図3に示す例では、ユーザプログラム154は、シーケンス演算1541およびモーション演算1542を含む。モーション演算1542では、センサやアクチュエータなどからの入力データ、ならびに、ユーザプログラム154に含まれる命令を参照して、アクチュエータへの出力値が生成される。
【0051】
このように、ユーザプログラム154は、入力プログラム164によって更新される観測値を含む制御装置100内の状態値を参照し、出力として制御装置100内の状態値を更新する。更新された状態値は、出力プログラム166やデータベース書込みプログラム156などの制御装置100で実行される他機能により参照されてもよい。一般的に、ユーザプログラム154は、制御装置100のユーザー(機器開発者など)がプログラミングツールを用いて作成される。
【0052】
データベース書込みプログラム156は、ユーザプログラム154内に規定された命令によって呼び出され、入出力処理部170を介して、時系列データベース180に対して指定されたデータを書込む。データベース書込みプログラム156は、高優先プログラムとして実行されてもよい。
【0053】
より具体的には、データベース書込みプログラム156は、データを収集し時系列データベース180へ格納を要求する。データベース書込みプログラム156は、ユーザプログラム154と同期して実行できる。データベース書込みプログラム156は、データに時刻管理部168により機器間で同期された時刻情報を付与できる。時刻情報の具体例としては、データの入力源であるセンサが入力を行った時刻であってもよい。データベース書込みプログラム156は、単位変換などの収集したデータに対する加工、複数のデータから何らかの情報の導出といった各種処理を付加的に有することもできる。データベース書込みプログラム156は、処理対象のデータについて、収集データと同様に時系列データベース180への格納を要求できる。データベース書込みプログラム156は、ユーザプログラム154と同様のツールで作成できる。あるいは、ユーザプログラム154の一部として作成してもよい。別ツールを用いて、ユーザプログラム154とは独立したデータベース書込みプログラム156を作成してもよい。
【0054】
シリアライズ通信プログラム158は、データベース書込みプログラム156から時系列データベース180に対して書込まれるデータに対してシリアライズ処理を行う。より具体的には、シリアライズ通信プログラム158は、時系列データを格納可能なバイト列に変換する処理(シリアライズ)を実行する。シリアライズ通信プログラム158は、データベース書込みプログラム156が時系列データベース180に格納を要求したデータ群を、データベースへの格納および参照に適した書式に変換する。時系列データベース180へのデータ書込みの速度およびデータ容量などに応じて、必ずしもシリアライズ処理を行う必要はない。すなわち、シリアライズ通信プログラム158はオプショナルな構成である。
【0055】
システムプログラム160は、スケジューラプログラム162と、入力プログラム164と、出力プログラム166とを含む。
【0056】
スケジューラプログラム162は、制御装置100で実行されるそれぞれのプログラムを実行条件に基づいてスケジューリングを行う。すなわち、スケジューラプログラム162は、制御プログラム152を構成する1または複数のタスクあるいはプロセスの実行順序や実行タイミングを管理する。入力プログラム164は、制御装置100とローカルバスまたはフィールドバスを介して接続される各種デバイス(フィールド装置群6)から入力データ(例えば、センサ観測値や機器の状態値など)を取得する機能を提供する。出力プログラム166は、制御装置100において実行されるユーザプログラム154によって算出される指令値(出力データ)をローカルバスまたはフィールドバスを介して接続される対象のデバイス(フィールド装置群6)へ出力する。
【0057】
時刻管理部168は、制御装置100における同期タイミングを管理する主体であり、例えば、所定周期でカウントアップ/カウントダウンするカウンタあるいはタイマを用いて実現される。時刻管理部168は、他のカウンタまたはタイマと同期するための機能を有していてもよく、この場合には、ローカルバス上、フィールドバス上、あるいは、フィールドネットワーク上のデバイス上にあるカウンタあるいはタイマと同期させることができる。時刻管理部168は、ローカルバス上、フィールドバス上、あるいは、フィールドネットワーク上の機器に加えて、他のネットワーク接続された機器との間で高精度(例えば、マイクロ秒オーダ)に時刻を共有する。この時刻は、センサ/アクチュエータの入出力の実行タイミングや制御装置100でのプログラム実行タイミングの基準となる。
【0058】
入出力処理部170は、PLCエンジン150からの時系列データベース180へのデータ書込み要求を処理する。入出力処理部170は、データベース書込みプログラム156から時系列データベース180へのデータ書込み要求を受付けて蓄積し、時系列データベース180へ順次格納する。システムプログラム160および制御プログラム152が実行する制御サイクルでの処理への影響を与えないように動作する。
【0059】
制御サイクルの一例として、制御サイクル毎にデータベース書込みプログラム156が実行されて、時系列データベース180へ時系列データを順次格納するようにしてもよい。さらに、他のデータベースやアプリケーションへのデータ供給、あるい、制御プログラム以外のアプリケーションからの入力受付への対応も柔軟に行うことができる。入出力処理部170の詳細な処理については、後述する。
【0060】
時系列データベース180は、典型的には、主記憶装置106または二次記憶装置108(図2参照)に配置され、時系列データを格納する。時系列データベース180は、データベース書込みプログラム156により書込まれる時系列データを格納している。
【0061】
より具体的には、時系列データベース180は、データ格納処理部184と、内蔵ストレージ188と、外付けストレージ189とを含む。
【0062】
データ格納処理部184は、入出力処理部170を介したデータベースへのデータ書込み要求に従って、入力された時系列データを、内蔵ストレージ188または外付けストレージ189の指定されたレコードに追加する。データ格納処理部184は、時系列データの格納先として複数のストレージを使い分けることもできる。データ格納処理部184は、古いデータを削除することでデータベースのデータ量(ストレージ使用量)を一定以下に保つリング動作を設定することもできる。データ格納処理部184は、制御装置100の電源遮断時に、データベースを破損させないようなデータベース書込みも可能である。
【0063】
内蔵ストレージ188は、制御装置100に内蔵される二次記憶装置108(図2)などを利用したデータ格納部である。内蔵ストレージ188は、DRAM(Dynamic Random Access Memory)やSRAM(Statistic Random Access Memory)などの揮発性メモリに加えて、フラッシュメモリなどの不揮発性メモリを含み得る。外付けストレージ189は、メモリカード116(図2)や図示しない外付けのハードディスクなどを利用した不揮発性のデータ格納部である。
【0064】
制御装置100に接続されるサポート装置200においても、任意のアプリケーション210が実行されてもよい。アプリケーション210の一例として、時系列データベース180に格納されている時系列データを利用するようなプログラムが想定される。例えば、制御装置100の時系列データベース180に格納されている時系列データを解析して、何らかの傾向や当該傾向に関連付けられる特徴量などを探し出すような、いわゆるデータマイニングなどを想定される。あるいは、時系列データベース180に格納されている時系列データに対して、各種の統計処理を実行するアプリケーションや、時系列データベース180に格納されている時系列データの数値を表示したり、視覚的に示すグラフなどを表示したりするようなアプリケーションも想定される。
【0065】
<D.時系列データベース>
次に、本実施の形態に係る制御装置100に実装される時系列データベース180のデータ構造について説明する。
【0066】
図4は、本実施の形態に係る制御装置100に実装される時系列データベース180のデータ構造を概略する模式図である。図4(A)を参照して、時系列データベース180が扱う時系列データの概念を「時系列(TimeSeries)」とも称す。1つの時系列は、複数レベルのデータベースで構成されてもよい。
【0067】
時系列データベース180には、複数の時系列を生成することができ、例えば、アプリケーション毎に時系列を生成するようにしてもよい。各データベースファイルは、バージョンなどの独自の属性を有するようにしてもよい。
【0068】
時系列データベース180には、データ群が格納される。データ群は、データの最小単位であるレコードの単位で時系列データが格納されてもよい。各レコードは、Key-Valueストア型が採用されてもよい。Key-Valueストア型のレコードが採用された場合には、格納対象のデータ(Value/値)と、そのデータに対応する一意の標識(Key)とが関連付けて格納される。すなわち、各レコードは、Key-Valueストア型のKeyとValueとを含む。
【0069】
より具体的には、各レコードには、時系列データの標識を示す時系列Keyと、時系列データの値を示す時系列Valueとが格納されてもよい。
【0070】
図4(B)を参照して、時系列Keyには、例えば、時刻情報(Timestamp)やタイミングを示すような情報(counter)が格納されていてもよい。時系列Valueには、対応する入力データ、出力データ、演算データの値(実値)が格納されていてもよい。本例においては、一例として変数データのIDと関連付けられた実値とが格納される場合が示されている。後述するが、時系列Valueの長さは同じではなく、可変に設定される。
【0071】
<E.時系列データの格納処理>
次に、本実施の形態に係る制御装置100における時系列データの格納処理について説明する。制御装置100においては、予め定められた周期毎にI/Oリフレッシュ処理が繰返し実行される。このI/Oリフレッシュ処理と同じ周期でユーザプログラム154の少なくとも一部が実行される。本実施の形態において、時系列データベース180に対する時系列データの書込みは、データベース書込みプログラム156によって実行され、データベース書込みプログラム156はユーザプログラム154から呼び出される。
【0072】
本実施の形態に係る制御装置100においては、入出力処理部170が提供するオンザフライ入出力処理によって、I/Oリフレッシュ処理を含む一連のプログラムの繰返し実行(サイクリック実行)を妨げず、時系列データベース180への時系列データの書込みを実現する。
【0073】
時系列データベース180は、時系列データとしては、互いに独立した複数を格納できるようにしてもよい。時系列データベース180のサイズに応じて、1または複数のストレージを利用するようにしてもよい。さらに、時系列データベース180の連続的かつ定常的な時系列データを格納する機能に加えて、過去の時系列データを破棄することでストレージの使用量を一定量に抑えるリング機能を付加してもよい。
【0074】
図5は、本実施の形態に係る制御装置100におけるサイクリック実行処理および時系列データベースへの書込処理を説明するための模式図である。図5には、一例として、出力プログラム166と、入力プログラム164と、ユーザプログラム154とがサイクリック実行される例を示す。図5に示すサイクリック実行の実行周期(実行開始タイミングの間隔)を「制御サイクル」と称することもある。
【0075】
ユーザプログラム154から呼び出されるデータベース書込みプログラム156が実行される。データベース書込みプログラム156は、変数読み出し処理1562と、基準レコード構築処理1564と、差分レコード構築処理1565と、データベース格納処理1566とを含む。
【0076】
図5に示すような、予め定められた実行周期でサイクリック実行される制御演算は、フィールド装置からの入力データの収集(入力プログラム164)、予め定められたユーザプログラム154に従う入力データに基づく出力データの算出、算出される出力データの出力(出力プログラム166)を含む。
【0077】
図5に示すように、ユーザプログラム154からデータベース書込みプログラム156が呼び出されることで、データベース書込みプログラム156は、制御サイクルに同期して実行させることになる。その際、ユーザプログラム154は、データベース書込みプログラム156に対してデータ書込を要求する。すなわち、サイクリック実行される制御演算は、データベース書込みプログラム156へのデータ書込要求を発行する処理を含む。ユーザプログラム154は、データベース書込みプログラム156へのデータ書込要求を発行すると、データベース書込みプログラム156の完了を待たずに、次の処理としてサイクリック実行される。
【0078】
本実施の形態に係る制御装置100においては、制御プログラム152は、データベース書込みプログラム156の完了を待たない振る舞いができる。
【0079】
上述したように、ユーザプログラム154からみると、データ書込要求を発行した後に、データベース書込みプログラム156の完了を待たせないように、ユーザプログラムを処理する。データベース書込みプログラム156は、制御サイクルで実行される制御演算とは非同期にバックグラウンドで処理が実行される。このような非同期かつバックグラウンドでの実行によって、制御サイクルへの影響を低減できる。
【0080】
このようなサイクリック実行は、スケジューラプログラム162によって管理される。
すなわち、ユーザプログラム154において、データ書込要求を発行しさえすれば処理を完了させることができ、図5に示すサイクリック実行を予め定められた制御サイクルで実行することを保証できる。つまり、データベース書込みプログラム156は、制御サイクルに同期して実行される際、先の制御サイクルにおいて発行されたデータ書込処理が完了していなくとも、新しいデータ書込要求を受け付けることが可能である。
【0081】
なお、図5には、サイクリック実行の一例を示すのみであり、実行されるプログラムは図5に示されるものに限らず、さらに別のプログラムがサイクリック実行されるようにしてもよいし、図5に示す一部のプログラムを省略するようにしてもよい。
【0082】
変数読み出し処理1562は、入力プログラム164により取得される入力値、制御プログラム152あるいは制御装置100の内部状態を示す内部状態値、出力プログラム166から出力される出力値のうち、サンプリング処理により予め指定されたデータを集約する。
【0083】
基準レコード構築処理1564は、集約したデータを基準レコードとして構築する処理である。
【0084】
差分レコード構築処理1565は、集約したデータについて差分レコードとして構築する処理である。差分レコードは、前回取得した集約したデータと、今回取得した集約したデータとを比較して、比較結果に基づいて変化したデータのみを含む。
【0085】
データベース格納処理1566は、時系列データベース180に対するデータ書込み要求を発行する。データ書込み要求は、入出力処理部170へ与えられる。
【0086】
時系列データベース180は、PLCエンジン150(処理部)が管理するデータのうち指定されたデータを時系列に格納する。入出力処理部170は、データベース書込みプログラム156からのデータ書込み要求をオンザフライで処理する。そのため、データベース書込みプログラム156は、入出力処理部170による時系列データベース180へのデータの格納完了を待つ必要がない。すなわち、データベース書込みプログラム156において、データ書込み要求を発行しさえすれば処理を完了させることができる。
【0087】
このように、本実施の形態に係る制御装置100においては、データベース書込みプログラム156は、時系列データベース180への時系列データの格納完了を待たない振る舞いができる。
【0088】
なお、時系列データベース180へ格納するデータと取得する値に対して、スケーリングや統計処理といった事前の加工処理を行って、情報量を圧縮するようにしてもよい。
【0089】
データベース書込みプログラム156自体は、ユーザプログラム154を作成するのと同じプログラミングツールを使って作成できるようにしてもよい。このとき、データベース書込みプログラム156をユーザプログラム154の一部として構成してもよいし、ユーザプログラム154とは独立したプログラムとして構成してもよい。さらに、複数のデータベース書込みプログラム156を同一のプロセッサ102を用いて実行するようにしてもよい。
【0090】
また、データベース書込みプログラム156に対して、制御装置100での制御プログラム152の実行中(サイクリック実行中)であっても、編集操作(対象変数の追加や削除)が可能になるようにしてもよい。
【0091】
データベース書込みプログラム156の記述様式あるいは記述形式は、一連の命令を記述したコードに限定されることなく、必要な情報(例えば、収集したい変数のリストや変数を変形する操作のリスト)を指定するための専用ツールまたは専用アプリケーションが提供されていてもよい。このような専用ツールまたは専用アプリケーションを実現するために、制御装置100側またはサポート装置200側に各種設定を受付けるインターフェイスを用意してもよい。
【0092】
さらに、明示的なデータベース書込みプログラム156ではなく、制御装置100の内部で実行されるシステムタスクの一部として、データベース書込みプログラム156を実現してもよい。
【0093】
入出力処理部170は、データベース書込みプログラム156からのデータ書込み要求に対して、指定された時系列データを時系列データベース180に格納する。
【0094】
上述したように、データベース書込みプログラム156からみると、データ書込み要求を発行した後に、時系列データの格納が完了を待たせないように、入出力処理部170はデータ書込み要求を処理する。入出力処理部170による時系列データの格納は、制御サイクルで実行される制御演算とは非同期にバックグラウンドで処理が実行される。このような非同期かつバックグラウンドでの実行によって、制御サイクルへの影響を低減できる。
【0095】
プロセッサ102として、マルチコアまたはマルチプロセッサの構成を採用している場合には、制御演算をサイクリック実行するコアまたはプロセッサとは別に、入出力処理部170を実現するための処理を担当するコアまたはプロセッサを割り当てるようにしてもよい。
【0096】
このような制御サイクルとは非同期にデータを格納するための実装形態の一例として、入出力処理部170が書込み要求をキューイングするバッファを備えていてもよい。すなわち、入出力処理部170は、データ書込み要求を受取るとともに、データ書込み要求をキューイングするバッファを含んでいてもよい。あるいは、時系列データベース180のデータ格納処理部184に同様の機能を発揮するバッファを配置してもよい。さらにあるいは、入出力処理部170およびデータ格納処理部184にそれぞれバッファを配置するような構成を採用してもよい。
【0097】
このような構成を採用することで、制御演算において、サンプリング要求を発行すると、データ書込みの完了を待つことなく、次の処理が継続して実行される。
【0098】
制御装置100においては、スケジューラプログラム162による実行タイミングの管理によって、出力プログラム166と、入力プログラム164と、ユーザプログラム154(および、図示しないデータベース書込みプログラムを含み得る)とがサイクリック実行される。
【0099】
制御装置100は、ローカルバス、フィールドバス、フィールドネットワークなどを介してフィールド装置群6(例えば、アクチュエータなどの出力機器61およびセンサ等の入力機器62など)と接続されている。制御装置100とローカルバス、フィールドバス、フィールドネットワークなどを介して接続されるフィールド装置群6との間では、同期した通信処理を実現するために、互いに同期したタイマなどを有している。すなわち、制御装置100の時刻管理部168は、出力機器61の時刻管理部および/または入力機器62の時刻管理部と同期している。
【0100】
したがって、出力機器61および入力機器62から制御装置100へ伝送されるデータに、各機器の時刻管理部が管理する時刻情報を付加して送信することで、制御装置100の出力プログラム166および入力プログラム164にて扱われるデータとの間で時刻の整合性を取ることができる。
【0101】
フィールド装置群6は、時刻管理部にて管理される時刻情報とともに、収集された観測値などを制御装置100へ送信する。制御装置100は、フィールド装置群6から時刻情報および観測値を受信すると、時刻情報を標識(Key)の少なくとも一部とするとともに、観測値を値(Value)として時系列データベース180に格納する。
【0102】
このように、制御装置100は、互いに時刻同期されたフィールド装置と接続されており、制御装置100の時系列データベース180に格納されるデータには、当該データがフィールド装置で収集された時刻情報が付与されていてもよい。このとき、時系列データベース180には、時刻情報をKeyとし、対応するデータの値をValueとするKey-Valueストア型のレコードが格納されてもよい。
【0103】
互いに同期された時刻管理部168が管理する時刻情報を付加することで、時系列データベース180に収集された時系列データを互いに同期させることができる。すなわち、共通の時間軸にて時系列データの比較などが可能となる。
【0104】
このように、本実施の形態に係る制御装置100においては、互いに同期された時刻管理部168が管理する時刻情報を用いることで、1または複数のフィールド装置群6と接続された制御装置100上において、高い時刻精度で時系列データの統合、蓄積、解析を実現できる。
【0105】
さらに、複数の制御装置100同士も時刻同期することが可能であり、このような場合には、複数の制御装置100のそれぞれの時系列データベース180に格納される時系列データをいずれかの制御装置100、サポート装置200、または上位システム400にて統合することで、異なる制御装置100に接続されたフィールド装置群6から収集された時系列データであっても、互いに統合して分析などを行うことができる。
【0106】
このようなバスまたはネットワークを介して接続される制御装置100の間では、時刻同期が確立されており、それぞれ共通の時刻を保持している。このような時刻同期された時刻情報を時系列データベース180への時系列データの登録の際に用いることで、それぞれの時系列データベース180に格納される時系列データの間では、時間軸を共通にできる。
【0107】
制御装置100は、接続された他の1または複数の制御装置100のそれぞれから、各制御装置100が有している時系列データベース180に格納されたデータを集約するようにしてもよい。
【0108】
以上のようなデータ集約機能を実装することで、要求されるシステム仕様などを満たすために、複数の制御装置100を分散配置した場合であっても、それぞれの制御装置100が収集する時系列データの間で、時間軸を共通化できるので、時系列データの事後的な統合分析を容易化できる。
【0109】
上述したように、複数の制御装置100を互いに時刻同期したネットワークなどを介して接続するとともに、時刻同期したタイムスタンプを付与した時系列データを収集することで、事後的に、これらの時系列データを統合して解析することができる。このような構成を採用することで、要求される性能や測定点数などに応じてシステムを拡張可能なスケーラビリティのある構成を容易に実現できる。
【0110】
図6は、実施形態および比較例に従う時系列データベース180に格納されるデータの具体例について説明する図である。
【0111】
図6(A)を参照して、比較例として時系列データベース180に格納される従来のレコードが示されている。
【0112】
比較例として従来のレコードは、全ての時系列データを制御サイクル毎に格納していた。
【0113】
したがって、時系列データベース180のデータ容量がかなり増大する傾向があった。
図6(B)を参照して、実施形態に従う時系列データベース180に格納されるレコードが示されている。
【0114】
実施形態においては、基準レコードと、差分レコードとが格納されている場合場示されている。
【0115】
基準レコードは、所定周期ΔTのタイミング間隔でサンプリングされたデータが格納される。差分レコードは、所定周期ΔTよりも短い制御サイクルと同じタイミング間隔で格納される。所定周期ΔTについては適宜設計可能である。
【0116】
差分レコードは、前回のサンプリングされたデータと今回のサンプリングされたデータとの比較に基づき変化が有る場合に構築される。具体的には、比較に基づいて変化があるデータのみが差分レコードとして格納される。
【0117】
具体的には、前回のサンプリングされたデータを格納するバッファが設けられ、当該バッファに格納されたデータと、今回のサンプリングされたデータとを比較し、変化がある変数データについて差分レコードとして構築する。
【0118】
変化がある変数データについてはバッファに更新されたデータとして格納される。
差分レコードは、基準レコードに基づいて本来のサンプリングデータに再構築することが可能である。
【0119】
図7は、実施形態に従うデータ書込みプログラムの処理について説明するフロー図である。
【0120】
図7を参照して、制御装置100は、データ書込み要求が有るか否かを判断する(ステップS2)。
【0121】
ステップS2において、制御装置100は、データ書込み要求があると判断した場合(ステップS2においてYES)には、変数データ読出処理を実行する(ステップS4)。
【0122】
サンプリング処理により予め指定されたデータを集約する。
次に、制御装置100は、基準レコードのタイミングか否かを判断する(ステップS6)。具体的には、所定周期ΔTのタイミングか否かを判断する。
【0123】
ステップS6において、制御装置100は、基準レコードのタイミングであると判断した場合(ステップS6においてYES)には、基準レコードを構築する(ステップS8)。
【0124】
サンプリングデータ全てを基準レコードとして構築する。
そして、制御装置100は、時系列データベース180に格納する処理を実行する(ステップS10)。
【0125】
そして、再びステップS2に戻る。
一方、ステップS6において、制御装置100は、基準レコードのタイミングでないと判断した場合(ステップS6においてNO)には、前回値とのデータ比較を実行する(ステップS12)。具体的には、前回のサンプリングされたデータを格納するバッファが設けられ、当該バッファに格納されたデータと、今回のサンプリングされたデータとを比較する。
【0126】
次に、制御装置100は、変化したデータが有るか否かを判断する(ステップS14)。比較結果に基づいて変化があるデータについて差分レコードとして構築する。なお、変化があるデータについてはバッファにおいて更新されたデータとして格納される。
【0127】
ステップS14において、制御装置100は、変化したデータがあると判断した場合(ステップS14においてYES)には、差分レコードを構築する(ステップS16)。変化したデータのみに基づく差分レコードを構築する。
【0128】
そして、制御装置100は、時系列データベース180に格納する処理を実行する(ステップS10)。
【0129】
そして、再びステップS2に戻る。
一方、ステップS14において、制御装置100は、変化したデータがないと判断した場合(ステップS14においてNO)には、ステップS2に再び戻り上記処理を繰り返す。
【0130】
当該処理により、図6(B)で説明したレコードを格納する。
図8は、実施形態に基づく時系列データベースのデータに従う再生処理について説明する図である。
【0131】
図8(A)を参照して、時系列データベース180において基準レコードおよび差分レコードを収集して格納した場合が示されている。また、当該収集開始から収集停止までの間に異常が発生した場合が示されている。
【0132】
図8(B)を参照して、異常が発生した時点を基準として異常発生前後のレコードのみを抽出した場合が示されている。
【0133】
図8(C)を参照して、抽出したレコードのうち基準データに基づいて差分レコードの情報から変数データを再構築する場合が示されている。差分レコードは、前に格納された基準データとの差分に基づくデータであるため当該情報に基づいて再構築が可能である。
【0134】
図8(D)を参照して、基準データおよび差分レコードに従って再構築された変数データに基づいて再生処理が実行される場合が示されている。
【0135】
したがって、アプリケーション210に従う再生処理により視覚的に時系列データを表示することが可能である。
【0136】
また、当該再生処理において、例えば、異常が発生した時点を基準として異常発生前後のレコードを抽出する際、従来の方式であればサンプリングデータ全てを取得して再生する必要があったが、本方式の場合には、基準データおよび差分データを取得して再生するため時系列データベース180から取得するデータ量を削減することが可能である。
【0137】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0138】
1 制御システム、2 第1フィールドバス、4 第2フィールドバス、6 フィールド装置群、8 コントローラ間通信ネットワーク、12 リモートI/O装置、14 リレー群、16,124 I/Oユニット、18 画像センサ、20 カメラ、22 サーボドライバ、24 サーボモータ、61 出力機器、62 入力機器、100 制御装置、102 プロセッサ、104 チップセット、106 主記憶装置、108 二次記憶装置、110 ネットワークコントローラ、112 コントローラ、114 メモリカードインターフェイス、116 メモリカード、118,120 フィールドバスコントローラ、122 ローカルバスコントローラ、150 PLCエンジン、152 制御プログラム、154 ユーザプログラム、156 データベース書込みプログラム、158 シリアライズ通信プログラム、160 システムプログラム、162 スケジューラプログラム、164 入力プログラム。
図1
図2
図3
図4
図5
図6
図7
図8