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

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

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

特開2024-154543情報処理システム、情報処理方法およびプログラム
<>
  • 特開-情報処理システム、情報処理方法およびプログラム 図1
  • 特開-情報処理システム、情報処理方法およびプログラム 図2
  • 特開-情報処理システム、情報処理方法およびプログラム 図3
  • 特開-情報処理システム、情報処理方法およびプログラム 図4
  • 特開-情報処理システム、情報処理方法およびプログラム 図5
  • 特開-情報処理システム、情報処理方法およびプログラム 図6
  • 特開-情報処理システム、情報処理方法およびプログラム 図7
  • 特開-情報処理システム、情報処理方法およびプログラム 図8
  • 特開-情報処理システム、情報処理方法およびプログラム 図9
  • 特開-情報処理システム、情報処理方法およびプログラム 図10
  • 特開-情報処理システム、情報処理方法およびプログラム 図11
  • 特開-情報処理システム、情報処理方法およびプログラム 図12
  • 特開-情報処理システム、情報処理方法およびプログラム 図13
  • 特開-情報処理システム、情報処理方法およびプログラム 図14
  • 特開-情報処理システム、情報処理方法およびプログラム 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024154543
(43)【公開日】2024-10-31
(54)【発明の名称】情報処理システム、情報処理方法およびプログラム
(51)【国際特許分類】
   G06F 11/34 20060101AFI20241024BHJP
   G05B 19/05 20060101ALI20241024BHJP
   G05B 23/02 20060101ALI20241024BHJP
【FI】
G06F11/34 176
G05B19/05 L
G05B23/02 Z
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2023068404
(22)【出願日】2023-04-19
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】重森 弓束
(72)【発明者】
【氏名】玉嶋 大輔
(72)【発明者】
【氏名】大貫 はる奈
(72)【発明者】
【氏名】真鍋 美樹子
【テーマコード(参考)】
3C223
5B042
5H220
【Fターム(参考)】
3C223BA03
3C223CC02
3C223DD03
3C223FF03
3C223FF09
3C223FF13
3C223GG01
3C223HH29
5B042GB06
5B042GB07
5B042MA08
5B042MA10
5B042MC01
5B042MC07
5B042MC35
5H220AA04
5H220BB15
5H220CC03
5H220CX01
5H220CX05
5H220JJ12
5H220JJ24
5H220JJ53
(57)【要約】
【課題】大量のデータを扱うことが可能であるとともに、データの可視化開始までの時間を短縮できる情報処理システムを提供する。
【解決手段】情報処理システムは、生産システムの状態を表す可視化対象のデータを可視化する1以上の可視化モジュールと、時刻ごとに生産システムの状態を示すデータセットを保存する1以上の時系列データベースと、取得対象データを定義する定義情報に基づいてクエリを生成し、クエリを用いて、1以上の時系列データベースから取得対象データを取得するデータ管理部とを備える。1以上の可視化モジュールは、取得対象データを可視化対象のデータとして取得する。
【選択図】図1
【特許請求の範囲】
【請求項1】
情報処理システムであって、
生産システムの状態を表す可視化対象のデータを可視化する1以上の可視化モジュールと、
時刻ごとに前記生産システムの状態を示すデータセットを保存する1以上の時系列データベースと、
取得対象データを定義する定義情報に基づいてクエリを生成し、前記クエリを用いて、前記1以上の時系列データベースから前記取得対象データを取得するデータ管理部とを備え、
前記1以上の可視化モジュールは、前記取得対象データを前記可視化対象のデータとして取得する、情報処理システム。
【請求項2】
前記データ管理部は、前記定義情報とクエリテンプレートとを用いて、前記クエリを生成する、請求項1に記載の情報処理システム。
【請求項3】
前記生産システムは、制御プログラムを実行するプログラマブルロジックコントローラを含み、
前記データセットは、前記制御プログラムによって使用される1以上の変数の各々について、識別子と、対応する時刻において前記プログラマブルロジックコントローラが保持していた値とを示す変数データを含み、
前記データ管理部は、
前記1以上の変数のうち取得対象の変数について、前記制御プログラムの開発時に設定された変数名に対応する前記識別子を特定し、
特定された前記識別子に対応する前記データセットを前記取得対象データとして指定するように前記クエリを生成する、請求項1に記載の情報処理システム。
【請求項4】
ユーザ入力に応じて、前記定義情報として前記取得対象データの種類を示す第1情報を設定する設定部をさらに備え、
前記1以上の時系列データベースは、複数の時系列データベースを含み、
前記データ管理部は、
前記第1情報に基づいて、前記複数の時系列データベースから、前記取得対象データを保存する対象時系列データベースを特定し、
前記対象時系列データベースを前記取得対象データの取得先として指定するように前記クエリを生成する、請求項1に記載の情報処理システム。
【請求項5】
ユーザ入力に応じて、前記定義情報を設定する設定部をさらに備え、
前記生産システムは、制御プログラムを実行するプログラマブルロジックコントローラを含み、
前記データセットは、前記制御プログラムによって使用される1以上の変数の各々について、対応する時刻において前記プログラマブルロジックコントローラが保持していた値を示す変数データを含み、
前記設定部は、前記定義情報として、前記1以上の変数のうち取得対象の変数を定義する第2情報を設定し、
前記データ管理部は、前記第2情報によって定義される変数に対応する変数データを前記取得対象データとして指定するように前記クエリを生成する、請求項1に記載の情報処理システム。
【請求項6】
前記1以上の時系列データベースは、サンプリング期間に含まれる時刻ごとの前記データセットを保存し、
前記情報処理システムは、
前記サンプリング期間内の時刻を表すカウンタ値を一定周期ごとに1つ進めるクロック管理部をさらに備え、
前記定義情報は、前記カウンタ値が表す時刻と取得対象の時刻または取得対象の時間範囲との相対関係を定義する第3情報を含み、
前記データ管理部は、
前記クロック管理部が現在管理する前記カウンタ値と前記第3情報とに基づいて、前記取得対象の時刻または前記取得対象の時間範囲を特定し、
特定された前記取得対象の時刻または前記取得対象の時間範囲に対応する前記データセットを前記取得対象データとして指定するように前記クエリを生成する、請求項1に記載の情報処理システム。
【請求項7】
ユーザ入力に応じて、前記第3情報を設定する設定部をさらに備える、請求項6に記載の情報処理システム。
【請求項8】
生産システムの状態を表す可視化対象のデータを可視化する1以上の可視化モジュールと、時刻ごとに前記生産システムの状態を示すデータセットを保存する1以上の時系列データベースとを含む情報処理システムにおける情報処理方法であって、
取得対象データを定義する定義情報に基づいてクエリを生成し、前記クエリを用いて、前記1以上の時系列データベースから前記取得対象データを取得することと、
前記1以上の可視化モジュールが、前記取得対象データを前記可視化対象のデータとして取得することとを備える、情報処理方法。
【請求項9】
生産システムの状態を表す可視化対象のデータを可視化する1以上の可視化モジュールと、時刻ごとに前記生産システムの状態を示すデータセットを保存する1以上の時系列データベースとを含むコンピュータシステムに情報処理方法を実行させるプログラムであって、
前記情報処理方法は、
取得対象データを定義する定義情報に基づいてクエリを生成し、前記クエリを用いて、前記1以上の時系列データベースから前記取得対象データを取得することと、
前記1以上の可視化モジュールが、前記取得対象データを前記可視化対象のデータとして取得することとを備える、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理システム、情報処理方法およびプログラムに関する。
【背景技術】
【0002】
生産設備の異常な動作の原因調査のために、生産設備を制御するプログラマブルロジックコントローラ(PLC)によって収集された時系列データを記録し、記録された時系列データを可視化する技術が開発されている。
【0003】
例えば、特開2020-13528号公報(特許文献1)は、PLCにおいて収集された時系列の複数のデバイス値を保存する保存手段と、デバイス値を可視化する複数のソフトウェアモジュールとを有するエンジニアリングツールを開示している。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2020-13528号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
時系列データは、通常、ファイル内に保存される。ファイルは、時系列データの可視化を行なうコンピュータ上で開かれる。コンピュータ上でファイルを開くために、ファイルサイズと同等のサイズを有するメモリが必要とされる。そのため、メモリサイズに応じて、ファイルに保存される時系列データの容量が制限される。
【0006】
メモリサイズを大きくすることにより、ファイルに保存可能な時系列データの容量が大きくなる。しかしながら、時系列データの読み出しのための負荷が大きくなり、時系列データの可視化開始までの時間が長くなる。
【0007】
本開示は、上記の問題に鑑みてなされたものであり、その目的は、大量のデータを扱うことが可能であるとともに、データの可視化開始までの時間を短縮できる情報処理システム、情報処理方法およびプログラムを提供することである。
【課題を解決するための手段】
【0008】
本開示の一例によれば、情報処理システムは、生産システムの状態を表す可視化対象のデータを可視化する1以上の可視化モジュールと、時刻ごとに生産システムの状態を示すデータセットを保存する1以上の時系列データベースと、取得対象データを定義する定義情報に基づいてクエリを生成し、クエリを用いて、1以上の時系列データベースから取得対象データを取得するデータ管理部とを備える。1以上の可視化モジュールは、取得対象データを可視化対象のデータとして取得する。
【0009】
この開示によれば、生産システムの状態を示すデータセットは、ファイルではなく、1以上の時系列データベースに保存される。そのため、データセットの容量の上限が事実上撤廃される。これにより、情報処理システムは、大量の状態データセットを扱うことができる。また、データセットが1以上の時系列データベースに保存されるため、データ管理部は、クエリを生成することにより、取得対象データを1以上の時系列データベースから容易に取得できる。1以上の可視化モジュールは、取得対象データを可視化対象のデータとして取得する。そのため、可視化対象のデータの可視化開始までの時間が短縮される。
【0010】
上述の開示において、データ管理部は、定義情報とクエリテンプレートとを用いて、クエリを生成する。この開示によれば、データ管理部は、クエリを容易に生成できる。
【0011】
上述の開示において、生産システムは、制御プログラムを実行するプログラマブルロジックコントローラを含む。データセットは、制御プログラムによって使用される1以上の変数の各々について、識別子と、対応する時刻においてプログラマブルロジックコントローラが保持していた値とを示す変数データを含む。データ管理部は、1以上の変数のうち取得対象の変数について、制御プログラムの開発時に設定された変数名に対応する識別子を特定する。データ管理部は、特定された識別子に対応するデータセットを取得対象データとして指定するようにクエリを生成する。
【0012】
この開示によれば、データセットに含める識別子のデータサイズを、変数名を示すデータのサイズよりも小さくできる。その結果、情報処理システムは、より大量のデータを扱うことができる。
【0013】
上述の開示において、情報処理システムは、ユーザ入力に応じて、定義情報として取得対象データの種類を示す第1情報を設定する設定部をさらに備える。1以上の時系列データベースは、複数の時系列データベースを含む。データ管理部は、第1情報に基づいて、複数の時系列データベースから、取得対象データを保存する対象時系列データベースを特定し、対象時系列データベースを取得対象データの取得先として指定するようにクエリを生成する。
【0014】
この開示によれば、複数の時系列データベースを含むように情報処理システムを構築できる。
【0015】
上述の開示において、情報処理システムは、ユーザ入力に応じて、定義情報を設定する設定部をさらに備える。生産システムは、制御プログラムを実行するプログラマブルロジックコントローラを含む。データセットは、制御プログラムによって使用される1以上の変数の各々について、対応する時刻においてプログラマブルロジックコントローラが保持していた値を示す変数データを含む。設定部は、定義情報として、1以上の変数のうち取得対象の変数を定義する第2情報を設定する。データ管理部は、第2情報によって定義される変数に対応する変数データを取得対象データとして指定するようにクエリを生成する。
【0016】
この開示によれば、データ管理部は、ユーザ入力に応じて、自由にクエリを生成することができる。これにより、ユーザは、1以上の時系列データベースが保存する各種のデータを用いて、自由度の高い分析を行なうことができる。
【0017】
上述の開示において、1以上の時系列データベースは、サンプリング期間に含まれる時刻ごとのデータセットを保存する。情報処理システムは、サンプリング期間内の時刻を表すカウンタ値を一定周期ごとに1つ進めるクロック管理部をさらに備える。定義情報は、カウンタ値が表す時刻と取得対象の時刻または取得対象の時間範囲との相対関係を定義する第3情報を含む。データ管理部は、クロック管理部が現在管理するカウンタ値と第3情報とに基づいて、取得対象の時刻または取得対象の時間範囲を特定し、特定された取得対象の時刻または取得対象の時間範囲に対応するデータセットを取得対象データとして指定するようにクエリを生成する。
【0018】
この開示によれば、1以上の可視化モジュールは、サンプリング期間の取得対象の時刻または取得対象の時間範囲のデータセットを一定周期ごとに順に可視化することができる。
【0019】
上述の開示において、情報処理システムは、ユーザ入力に応じて、第3情報を設定する設定部を備える。
【0020】
この開示によれば、データ管理部は、ユーザ入力に応じて、自由にクエリを生成することができる。これにより、ユーザは、1以上の時系列データベースが保存する各種のデータを用いて、自由度の高い分析を行なうことができる。
【0021】
本開示の別の例による情報処理方法は、生産システムの状態を表す可視化対象のデータを可視化する1以上の可視化モジュールと、時刻ごとに生産システムの状態を示すデータセットを保存する1以上の時系列データベースとを含む情報処理システムにおける情報処理方法である。情報処理方法は、取得対象データを定義する定義情報に基づいてクエリを生成し、クエリを用いて、1以上の時系列データベースから取得対象データを取得することと、1以上の可視化モジュールが、取得対象データを可視化対象のデータとして取得することとを備える。
【0022】
本開示のさらに別の例によれば、プログラムは、上記の情報処理方法をコンピュータに実行させる。
【0023】
これらの開示によっても、情報処理方法またはプログラムは、大量のデータを扱うことが可能であるとともに、データの可視化開始までの時間を短縮できる。
【発明の効果】
【0024】
本開示によれば、情報処理システム、情報処理方法またはプログラムは、大量のデータを扱うことが可能であるとともに、データの可視化開始までの時間を短縮できる。
【図面の簡単な説明】
【0025】
図1】実施の形態に係る情報処理システムの一例を模式的に例示する図である。
図2】実施の形態に係る情報処理システムが適用される生産システムの全体構成の一例を示す模式図である。
図3】実施の形態に従うPLCのハードウェア構成の一例を示す模式図である。
図4】PCおよびPLCのソフトウェア構成の一例を示すブロック図である。
図5】時系列データベースのデータ構造の一例を示す図である。
図6】再現モジュールおよびその周囲の構成の一例を示す図である。
図7】再現モジュールの再生操作を行なうための第4ウィンドウの一例を示す図である。
図8】第1クエリ生成部によるクエリの生成方法を説明する図である。
図9】PCの処理の流れを示すフローチャートである。
図10図9に示すステップS3のサブルーチンの処理の流れを示すフローチャートである。
図11図9に示すステップS4のサブルーチンの処理の流れを示すフローチャートである。
図12】変形例に係る情報処理システムの主要なソフトウェア構成を示す図である。
図13】設定部および第3クエリ生成部の処理を説明する図である。
図14】第3クエリ生成部によって生成されたクエリの3つの例を示す図である。
図15】変形例に係る情報処理システムによるステップS3のサブルーチンの処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0026】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。本明細書において、特に示さない限り、「または」の用語は、「または」の意味に加えて、「および」の意味を包含する。
【0027】
§1 適用例
図1は、実施の形態に係る情報処理システムの一例を模式的に例示する図である。図1に示す情報処理システム100は、1以上のコンピュータ資源によって構成される。情報処理システム100は、1以上の可視化モジュール30と、データ管理部42と、1以上の時系列データベース50とを備える。
【0028】
1以上の可視化モジュール30は、生産システムの状態を表す可視化対象のデータを可視化する。
【0029】
1以上の時系列データベース50は、時刻ごとに生産システムの状態を示すデータセット(以下、「状態データセット」と称する)を保存し、クエリ(問合せ)に応じたデータを提供するソフトウェアシステムである。
【0030】
データ管理部42は、1以上の可視化モジュール30からのリクエストに応じて、取得対象データを定義する定義情報に基づいてクエリを生成する。クエリは、例えばSQLに従って記述される。データ管理部42は、生成したクエリを用いて、1以上の時系列データベース50から取得対象データを取得する。
【0031】
1以上の可視化モジュール30は、取得対象データを可視化対象のデータとして取得する。
【0032】
上述したように、ファイルを開く場合、ファイルサイズと同等のサイズを有するメモリが必要とされる。そのため、メモリサイズに応じて、ファイルに保存されるデータの容量が制限される。情報処理システム100によれば、生産システムの状態を示す状態データセットは、ファイルではなく、1以上の時系列データベース50に保存される。そのため、状態データセットの容量の上限が事実上撤廃される。これにより、情報処理システム100は、大量の状態データセットを扱うことができる。
【0033】
状態データセットが1以上の時系列データベース50に保存されるため、データ管理部42は、クエリを生成することにより、取得対象データを1以上の時系列データベース50から容易に取得できる。1以上の可視化モジュール30は、取得対象データを可視化対象のデータとして取得する。そのため、可視化対象のデータの可視化開始までの時間が短縮される。
【0034】
さらに、状態データセットが1以上の時系列データベース50に保存されるため、1以上の可視化モジュール30およびデータ管理部42を稼働するOS(Operating System)または環境の自由度が上がる。
【0035】
§2 具体例
<生産システムの全体構成>
図2は、実施の形態に係る情報処理システムが適用される生産システムの全体構成の一例を示す模式図である。図2に示されるように、生産システム1は、情報処理システム100を構成するパーソナルコンピュータ(以下、「PC100A」と称する)と、プログラマブルロジックコントローラ(以下、「PLC200」と称する)と、1以上のフィールド機器300と、ネットワークカメラ400と、ネットワークストレージ500と、記憶媒体600とを備える。PC100A、PLC200、ネットワークカメラ400、およびネットワークストレージ500は、例えば汎用的なEthernet(登録商標)を用いて互いに通信可能である。なお、PC100AとPLC200とは、別の通信手段(例えば、Universal Serial Bus(USB))を用いて互いに通信してもよい。
【0036】
PLC200は、1以上のフィールド機器300と接続され、予め作成された制御プログラムに従って1以上のフィールド機器300を制御する。1以上のフィールド機器300の各々は、生産設備または生産ラインなど(以下、「フィールド」と称する。)に対して何らかの物理的な作用を与えるアクチュエータ、フィールドに設置される各種のセンサ、またはフィールドとの間で情報を遣り取りする入出力装置などを含む。
【0037】
PLC200は、1以上のフィールド機器300との間で遣り取りされる各種の変数値を保持する。変数値は、生産システム1(特にフィールド)の状態を表す。変数値には、1以上のフィールド機器300の状態を示す各種の状態値と、1以上のフィールド機器300へ出力される各種の指令値とが含まれる。
【0038】
PLC200は、数100μsecオーダ~数10msecオーダの1以上の制御周期のうちのいずれかの制御周期で、保持している変数値を更新する。制御周期は、変数の種類に応じて予め設定される。例えば、PLC200は、一部の変数の値を1msecで更新し、別の一部の変数の値を2msecで更新する。以下、1以上の制御周期のうち最も短い制御周期を「最短制御周期」と称する。
【0039】
PLC200は、最短制御周期ごとに、保持されていた変数値を記録することにより時系列データセットを生成する。生成された時系列データセットは、情報処理システム100に移動される。PLC200から情報処理システム100への時系列データセットの移動は、特に限定されないが、例えばメモリカードなどの記憶媒体600を用いて行なわれる。
【0040】
なお、PLC200は、後述するサンプリングの開始条件が満たされたタイミングで、後述するサンプリング時間分の時系列データセットを生成する。
【0041】
ネットワークカメラ400は、フィールドに設置され、1以上のフィールド機器300の少なくとも一部を撮影する。
【0042】
ネットワークストレージ500は、ネットワークカメラ400の撮影により生成された動画データ群を保存する。
【0043】
記憶媒体600は、PLC200からPC100Aへの時系列データセットの持ち出しに利用される。記憶媒体600は、揮発性記憶媒体、不揮発性記憶媒体、CF(Compact Flash)もしくはSD(Secure Digital)などの汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)などの磁気記憶媒体、またはCD-ROM(Compact Disk Read Only Memory)などの光学記憶媒体を含む。
【0044】
PC100Aは、典型的には、汎用的なアーキテクチャを有しているコンピュータである。図2に示されるように、PC100Aは、CPU(Central Processing Unit)またはMPU(Micro Processing Unit)などのプロセッサ101と、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)などの揮発性の記憶装置で構成されるメモリ102と、HDD(Hard Disk Drive)またはSSD(Solid State Drive)などの不揮発性の記憶装置で構成されるストレージ103と、入力インターフェイス104と、表示コントローラ105と、通信インターフェイス106と、リーダ/ライタ107とを含む。これらの各部は、バスを介して互いにデータ通信が可能なように接続されている。
【0045】
プロセッサ101は、ストレージ103に格納されたプログラムを読み出して、メモリ102に展開する。プロセッサ101は、展開されたプログラムを実行する。
【0046】
ストレージ103は、プロセッサ101によって実行されるプログラムと、時系列データベース50と、ネットワークストレージ500から取得した動画データ58とを記憶する。
【0047】
プロセッサ101によって実行されるプログラムは、開発プログラム131と、ビューワープログラム132と、再現プログラム133と、データベース構築プログラム134とを含む。
【0048】
開発プログラム131は、主にPLC200が使用する制御プログラムの開発を支援する。さらに、開発プログラム131は、時系列データセットの生成に関する設定機能と、PLC200による制御プログラムの実行状況をモニタリングする機能と、検索機能とを提供する。検索機能は、例えば、PLC200による制御プログラムの実行状況において、指定された変数が変化したタイミングを検索する機能を含む。
【0049】
ビューワープログラム132は、各種の情報を可視化してユーザに提供するためのプログラムである。ビューワープログラム132は、各種の変数値の推移を示す変数グラフを表示する機能と、動画データ58によって示される動画の再生機能とを提供する。動画データ58は、ネットワークストレージ500からPC100Aにダウンロードされる。
【0050】
ビューワープログラム132は、開発プログラム131が起動することにより、開発プログラム131と連結されてメモリ102に展開される。
【0051】
再現プログラム133は、フィールドの過去の状態を示すデータを再現する。再現プログラム133は、時刻を管理する機能と、再現対象のデータを管理する機能(以下、「データ管理機能」と称する)とを提供する。データ管理機能は、クエリを生成する機能と、クエリを用いて時系列データベース50から取得対象データを取得する機能を含む。
【0052】
データベース構築プログラム134は、PLC200から持ち込まれた時系列データセットに基づいて時系列データベース50を構築する機能を提供する。
【0053】
入力インターフェイス104は、プロセッサ101とキーボード、マウス、またはタッチパネルなどの入力装置110との間のデータ伝送を仲介する。表示コントローラ105は、ディスプレイ120と接続され、プロセッサ101によって生成された画面データによって示される画面をディスプレイ120に表示する。通信インターフェイス106は、通信ネットワークを介してPLC200およびネットワークストレージ500と通信する。リーダ/ライタ107は、プロセッサ101と外部の記憶媒体600との間のデータ伝送を仲介する。
【0054】
開発プログラム131、ビューワープログラム132および再現プログラム133の各々は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、任意のプログラムと協働して本実施の形態に従う処理が実現される。また、開発プログラム131、ビューワープログラム132および再現プログラム133によって提供される機能の一部または全部は、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)、またはFPGA(Field-Programmable Gate Array)によって実現されてもよい。
【0055】
<PLCのハードウェア構成>
図3は、実施の形態に従うPLCのハードウェア構成の一例を示す模式図である。図3に示されるように、PLC200は、主たるコンポーネントとして、PLC200の各部に電力PWを供給する電源回路201と、CPU202と、チップセット204と、メモリ206と、ストレージ208と、USBコントローラ250と、フィールドネットワークコントローラ252と、ネットワークコントローラ254と、タイマ260と、リーダ/ライタ270とを含む。
【0056】
CPU202は、ストレージ208に格納されたプログラムを読出して、メモリ206に展開する。CPU202は、展開されたプログラムを実行する。
【0057】
メモリ206は、DRAMまたはSRAMなどの揮発性記憶装置で構成される。メモリ206は、上述したように、1以上のフィールド機器300からPLC200へ転送される状態値と、1以上のフィールド機器300へ出力される指令値とを含む各種の変数値を保持する。メモリ206に保持される各種の変数値は、ストレージ208に格納されるプログラムをCPU202が実行することにより、変数の種類に応じて予め設定された制御周期に従って更新される。
【0058】
ストレージ208は、例えば、HDD(Hard Disc Drive)、SSD(Solid State Drive)、またはフラッシュメモリなどの不揮発性記憶装置で構成されるが、一部は、揮発性ストレージで構成されてもよい。
【0059】
チップセット204は、CPU202と各コンポーネントとの間のデータの遣り取りを仲介することで、PLC200全体としての処理を実現する。
【0060】
ストレージ208には、PLC200の基本的な機能を実現するためのOS(Operating System)212およびスケジューラプログラム213を有するシステムプログラム211が格納される。
【0061】
さらに、ストレージ208は、PC100Aによって作成されたプログラムデータセット214を記憶する。プログラムデータセット214は、制御プログラムと、データ型定義データと、サンプリング設定データとを含む。
【0062】
制御プログラムは、1以上のフィールド機器300の状態を示す状態値を収集する処理と、収集された状態値に基づいた演算によって生成される、1以上のフィールド機器300への指令値を生成する処理とを定義する。状態値および指令値を含む変数値は、メモリ206に一時的に保持される。CPU202は、制御プログラムを実行することにより、制御周期ごとに、メモリ206が保持する変数値を更新する。
【0063】
データ型定義データは、制御プログラムによって使用される各変数のデータ型を定義する。制御プログラムによって使用される変数には、1以上のフィールド機器300の状態を示す変数、および、1以上のフィールド機器300に出力される変数が含まれる。
【0064】
サンプリング設定データは、時系列データセット220の生成条件を定義する。時系列データセット220の生成条件は、サンプリングの開始条件、サンプリング対象となる変数、およびサンプリング時間などを示す。
【0065】
さらに、ストレージ208は、サンプリング設定データによって示される生成条件に従って生成された時系列データセット220を保存する。
【0066】
USBコントローラ250は、USB接続を介して外部の装置(例えば、PC100A)との間のデータの遣り取りを担当する。
【0067】
フィールドネットワークコントローラ252は、フィールドネットワークに接続するコネクタ252aを有し、PLC200とフィールドネットワークを介した1以上のフィールド機器300との間のデータの遣り取りを制御する。フィールドネットワークコントローラ252は、フィールドネットワークから受信する入力データおよびPLC200からフィールドネットワークに出力される出力データを格納する内部バッファを有する。
【0068】
ネットワークコントローラ254は、上位ネットワークに接続するコネクタ254aを有し、PLC200と外部の装置(例えば、PC100A、ネットワークカメラ400またはネットワークストレージ500)との間のデータの遣り取りを制御する。
【0069】
タイマ260は、時間を計測するクロック回路またはカウンタ回路を含んで構成されるが、このような回路に限定されず、CPU202が実行するソフトウェアモジュールにより構成されてもよい。
【0070】
リーダ/ライタ270は、CPU202と外部の記憶媒体600との間のデータ伝送を仲介する。
【0071】
図3には、CPU202がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGA)を用いて実装してもよい。あるいは、PLC200の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、マルチコア技術を適用して処理を並列に実行してもよい。または、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0072】
<機能構成>
図4は、PCおよびPLCのソフトウェア構成の一例を示すブロック図である。図4に示すように、PC100Aは、制御プログラム編集部11と、データ型定義編集部12と、データ型メモリマップ生成部13と、サンプリング設定部14と、ビルド処理部15と、再現モジュール生成部16と、PLC通信制御部17と、再現モジュール通信制御部18と、データベース構築部19と、1以上の可視化モジュール30と、再現モジュール40と、クロック操作部45とを備える。
【0073】
制御プログラム編集部11、データ型定義編集部12、データ型メモリマップ生成部13、サンプリング設定部14、ビルド処理部15、および再現モジュール生成部16は、図2に示すプロセッサ101が開発プログラム131を実行することにより実現される。PLC通信制御部17は、開発プログラム131を実行するプロセッサ101および通信インターフェイス106によって実現される。再現モジュール通信制御部18および再現モジュール40は、プロセッサ101が再現プログラム133を実行することにより実現される。データベース構築部19は、プロセッサ101がデータベース構築プログラム134を実行することにより実現される。クロック操作部45は、再現プログラム133を実行するプロセッサ101および入力インターフェイス104によって実現される。1以上の可視化モジュール30の各々は、プロセッサ101が開発プログラム131またはビューワープログラム132を実行することにより実現される。
【0074】
制御プログラム編集部11は、ユーザ入力に応じて、制御プログラムのソースコードの作成または編集を行なう。制御プログラムは、例えばラダープログラムであるが、これに限定されない。さらに、制御プログラム編集部11は、ユーザ入力に応じて、制御プログラムによって使用される各変数の名称(以下、「変数名」と称する)を設定する。
【0075】
データ型定義編集部12は、ユーザ入力に応じて、制御プログラムによって使用される各変数のデータ型を編集する。制御プログラムによって使用される変数には、1以上のフィールド機器300から収集される変数、制御プログラムの実行によって生成される変数(1以上のフィールド機器300に出力される変数)が含まれる。データ型定義編集部12は、各変数について編集されたデータ型を示すデータ型定義データを生成する。
【0076】
データ型メモリマップ生成部13は、ユーザ入力に応じて、配列要素または構造体メンバを有する変数について、各配列要素または構造体メンバのデータ型のサイズ、配列要素または構造体メンバの配置情報などを表すデータ型メモリマップ60を生成する。データ型メモリマップ60を用いることにより、任意の配列要素または構造体メンバの開始アドレスおよびサイズが特定され、任意の配列要素または構造体メンバの値が特定される。
【0077】
サンプリング設定部14は、ユーザ入力に応じて、時系列データセット220の生成条件を設定し、設定した生成条件を示すサンプリング設定データを生成する。時系列データセット220の生成条件は、上述したように、サンプリングの開始条件、サンプリング対象となる変数、およびサンプリング時間などを示す。サンプリングの開始条件は、例えば、特定の変数の値が第1値から第2値に変化するという条件である。サンプリングの開始条件が満たされることにより、時系列データセット220の生成が開始される。サンプリング対象となる変数は、制御プログラムによって使用される複数の変数の中から設定される。なお、制御プログラムによって使用される複数の変数の全てがサンプリング対象として設定されてもよいし、制御プログラムによって使用される複数の変数のうちの一部がサンプリング対象として設定されてもよい。サンプリング時間は、時系列データセット220の生成が開始されてから終了されるまでの期間であり、例えば10分間であるが、これに限定されない。以下、時系列データセット220が生成される期間を「サンプリング期間」と称する。
【0078】
ビルド処理部15は、制御プログラムのソースコードをビルドし、ソースコードからオブジェクトコードを生成する。ビルド処理部15は、生成されたオブジェクトコードの制御プログラムを含むプログラムデータセット214をPLC200に転送する。プログラムデータセット214には、オブジェクトコードの制御プログラムの他に、データ型定義編集部12によって生成されたデータ型定義データと、サンプリング設定部14によって生成されたサンプリング設定データとが含まれる。さらに、プログラムデータセット214とともに、データ型メモリマップ生成部13によって生成されたデータ型メモリマップ60もPLC200にインストールされる。
【0079】
再現モジュール生成部16は、ユーザ入力に応じて、図2に示す再現プログラム133を呼出し、再現モジュール40を生成するとともに、再現モジュール40の動作を開始させる。
【0080】
1以上の可視化モジュール30は、生産システム1(特にフィールド)の状態を表す可視化対象のデータを画面上に可視化する。
【0081】
データベース構築部19は、PLC200によって生成された時系列データセット220に基づいて、時系列データベース50を構築する。これにより、時系列データベース50は、サンプリング期間における時刻ごとの、生産システム1(特にフィールド)の状態を示す状態データセットを保存する。
【0082】
再現モジュール40は、時系列データベース50を用いて、指定されたサンプリング期間に対応するデータを再現する。再現モジュール40は、クロック管理部41と、図1に示すデータ管理部42の一例である時系列データ管理部42aとを含む。
【0083】
クロック管理部41は、サンプリング期間内の時刻を表すカウンタ値を管理する。カウンタ値は、最短制御周期の周期カウンタの値である。このため、カウンタ値は、サンプリング期間の開始時からの経過時間を表すことができる。
【0084】
クロック管理部41は、クロック操作部45からの指示に応じて、カウンタ値の更新を行なう。具体的には、クロック管理部41は、クロック操作部45から指示された再生開始カウンタ値を初期カウンタ値として設定し、その後、規定時間が経過するたびにカウンタ値に1を加算する。クロック管理部41は、クロック操作部45から指示された再生条件に応じて規定時間を設定する。
【0085】
時系列データ管理部42aは、カウンタ値が表す時刻に応じたクエリを生成する。時系列データ管理部42aは、生成したクエリを用いて、時系列データベース50から取得対象データを取得する。時系列データ管理部42aは、取得対象データを再現モジュール40に設定する。これにより、サンプリング期間の生産システム(フィールド)の状態を示す状態データセットが再現される。
【0086】
なお、時系列データ管理部42aは、取得対象データが配列要素または構造体メンバを有する変数の値を示す場合、データ型メモリマップ60を用いて、配列要素または構造体メンバの値を再現してもよい。
【0087】
クロック操作部45は、ユーザ入力に応じて、再生開始カウンタ値と再生条件とを設定し、設定した再生開始カウンタ値と再生条件とを再現モジュール40に出力する。
【0088】
PLC通信制御部17は、PLC200との通信を制御する。PLC通信制御部17は、ユーザ入力に応じて、1以上の可視化モジュール30とPLC200とを通信接続する。これにより、1以上の可視化モジュール30は、PLC200が現在保持している変数値を可視化対象のデータとして取得する。その結果、ユーザは、生産システム1の状態をリアルタイムで確認できる。
【0089】
再現モジュール通信制御部18は、ユーザ入力に応じて、1以上の可視化モジュール30と再現モジュール40とを通信接続する。これにより、1以上の可視化モジュール30は、過去のサンプリング期間における生産システム1の状態を示す状態データセットを可視化対象のデータとして取得する。その結果、ユーザは、サンプリング期間の生産システム1の状態を確認できる。
【0090】
図4に示されるように、PLC200は、プログラム実行部21と、データ収集部22とを備える。さらに、PLC200は、PC100Aから転送されたプログラムデータセット214とデータ型メモリマップ60とを記憶する。プログラム実行部21およびデータ収集部22は、図3に示すCPU202がプログラムデータセット214に含まれる制御プログラムを実行することにより実現される。
【0091】
プログラム実行部21は、1以上のフィールド機器300の状態を示す状態値を収集するとともに、収集された状態値に基づいた演算によって1以上のフィールド機器300への指令値を生成する。
【0092】
プログラム実行部21は、変数の種類ごとに定められた制御周期に従って、図3に示すメモリ206が保持する変数値を更新する。なお、プログラム実行部21は、メモリ206が保持する各変数値を更新する際、プログラムデータセット214に含まれるデータ型定義データに従って、各変数値が格納されるメモリ領域内の各ビットを更新する。さらに、配列要素または構造体メンバを有する変数について、プログラム実行部21は、当該変数のデータ型メモリマップ60に従って、各配列要素または各構造体メンバの値が格納されるメモリ領域内の各ビットを更新する。
【0093】
プログラム実行部21は、演算のために用いる変数について、データ型定義データに従って、当該変数に対応するメモリ領域内の各ビット値から当該変数値を読み出す。さらに、プログラム実行部21は、変数が有する配列要素または構造体メンバについて、当該変数のデータ型メモリマップ60を用いて、配列要素または構造体メンバの値を読み出す。
【0094】
データ収集部22は、プログラムデータセット214に含まれるサンプリング設定データによって示される生成条件(サンプリングの開始条件、サンプリング対象の変数およびサンプリング時間を含む)に従って、時系列データセット220を生成する。具体的には、データ収集部22は、サンプリングの開始条件が満たされたことに応じて、サンプリング対象の変数についてメモリ206が保持する変数値の記録を開始する。データ収集部22は、変数値の記録を開始してからサンプリング時間が経過すると、変数値の記録を終了し、記録を開始してから終了するまでのサンプリング期間における時刻ごとの変数値を示す時系列データセット220を生成する。時系列データセット220は、PLC200からPC100Aに転送される。
【0095】
<時系列データベース>
図5は、時系列データベースのデータ構造の一例を示す図である。図5に示されるように、時系列データベース50は、時刻ごとのレコード51を含む。レコード51は、対応する時刻を示す時刻データ52と、対応する時刻における生産システム1(特にフィールド)の状態を示す状態データセット53とを含む。状態データセット53は、対応する時刻においてPLC200に保持されていた各種の変数値を示す変数データセット54と、ネットワークカメラ400によって撮影された動画の中の対応する時刻のフレームを識別するフレームID55とを含む。フレームID55は、例えばフレームに付与されるシーケンス番号(「フレーム番号」とも称される)である。
【0096】
データベース構築部19は、新たな時系列データセット220が入力されたことに応じて、時系列データセット220によって示される時刻ごとに、新たなレコード51を時系列データベース50に追加する。データベース構築部19は、時系列データセット220に基づいて、追加したレコード51の時刻データ52および変数データセット54を生成する。
【0097】
変数データセット54は、変数ごとに、識別子の一例である変数IDと、対応する時刻においてPLC200が保持していた値とを示す変数データ54aを含む。上述したように、制御プログラムによって使用される各変数に対して、制御プログラムの開発時にユーザ入力によって変数名が設定される。そのため、変数IDの代わりに変数名を示すように変数データ54aを生成することが考えられる。しかしながら、変数名がユーザ入力に応じて任意に設定されるため、変数名を示すデータのサイズが大きくなり得る。したがって、データベース構築部19は、各変数に対してユニークに割り振られた変数ID(例えば通し番号)を示すように変数データ54aを生成する。
【0098】
さらに、データベース構築部19は、追加した各レコード51の時刻データ52によって示される時刻のフレームのフレームIDを動画データ58から特定する。データベース構築部19は、特定したフレームIDをフレームID55として設定する。
【0099】
<再現モジュールおよびその周囲の構成>
図6図8を参照して、再現モジュール40およびその周囲の構成の詳細な機能について説明する。
【0100】
図6は、再現モジュールおよびその周囲の構成の一例を示す図である。図6に示す例では、PC100Aは、エンジニアリングツール32と、動画表示モジュール30cと、再現モジュール40と、クロック操作部45と、時系列データベース50とを備える。エンジニアリングツール32は、図2に示すプロセッサ101が開発プログラム131およびビューワープログラム132を実行することにより実現される。動画表示モジュール30cは、プロセッサ101がビューワープログラム132を実行することにより実現される。
【0101】
エンジニアリングツール32は、少なくとも1つの可視化モジュール30を含む。エンジニアリングツール32に含まれる可視化モジュール30は、可視化対象のデータとして、PLC200が保持していた各種の変数値を示す変数データを取得し、取得した変数データを可視化する。図6に示されるように、エンジニアリングツール32は、可視化モジュール30として、波形表示モジュール30aと、プログラム表示モジュール30bとを含む。
【0102】
波形表示モジュール30aは、各種の変数値の推移を示す変数グラフを含む第1ウィンドウのデータを生成する。第1ウィンドウは、図2に示すディスプレイ120に表示される。
【0103】
プログラム表示モジュール30bは、PLC200による制御プログラムの実行状況を示す第2ウィンドウのデータを生成する。第2ウィンドウには、制御プログラムによって使用される各種の変数値が表示される。第2ウィンドウは、ディスプレイ120に表示される。
【0104】
動画表示モジュール30cは、可視化モジュール30の一例であり、可視化対象のデータとして、フィールドを撮影することにより得られる動画のフレームを識別するフレームIDを取得し、取得したフレームIDのフレームを可視化する。すなわち、動画表示モジュール30cは、ネットワークカメラ400によって撮影された動画が再生される第3ウィンドウのデータを生成する。第3ウィンドウは、ディスプレイ120に表示される。
【0105】
第1~第3ウィンドウは、ディスプレイ120において並べて表示されてもよい。あるいは、第1~第3ウィンドウのうちユーザによって選択された1以上のウィンドウのみがディスプレイ120に表示されてもよい。
【0106】
クロック操作部45は、図7に示すウィンドウに対するユーザ入力に応じて、再生開始カウンタ値と再生条件とを設定する。
【0107】
図7は、再現モジュールの再生操作を行なうための第4ウィンドウの一例を示す図である。図7に示す第4ウィンドウ70は、クロック操作部45によって生成され、図2に示すディスプレイ120に表示される。なお、第4ウィンドウ70は、第1~第3ウィンドウとともにディスプレイ120に表示される。
【0108】
第4ウィンドウ70は、カーソル71と、表示領域72と、再生ボタン群73と、再生速度入力欄74とを含む。
【0109】
カーソル71は、ユーザによって指定されたサンプリング期間内の時刻を表す。再現モジュール40によってカウンタ値が更新されると、クロック操作部45は、カウンタ値に対応する位置にカーソル71を移動させる。さらに、クロック操作部45は、ユーザによるカーソル71の移動操作を受け付け、移動操作に応じてカーソル71の位置を移動させる。
【0110】
表示領域72には、カーソル71の位置に対応する時刻が表示される。そのため、カーソル71の移動に応じて、表示領域72に表示される時刻が更新される。
【0111】
再生ボタン群73は、再現モジュール40の再生に関する操作を入力するための複数のボタンを含む。具体的には、再生ボタン群73は、再生ボタン、停止ボタン、一時停止ボタン、最初に移動するためのボタン、または最後に移動するためのボタンなどを含む。
【0112】
再生速度入力欄74は、再生速度の入力のために使用される。クロック操作部45は、再生速度入力欄74のプルダウンボタンが操作されたことに応じて、複数の再生速度の一覧を表示する。クロック操作部45は、一覧の中からユーザによって選択された再生速度を再生速度入力欄74に表示する。なお、図7に示す例では、再生速度は倍率によって表される。そのため、以下では、「再生速度」を「倍率」として表記する。
【0113】
クロック操作部45は、第4ウィンドウ70の再生ボタン群73へのユーザ入力に応じて、再生開始カウンタ値と再生条件とを設定し、設定した再生開始カウンタ値と再生条件とを再現モジュール40に出力する。
【0114】
具体的には、クロック操作部45は、再生ボタン群73に含まれるいずれかのボタンが操作されると、カーソル71の位置に対応するカウンタ値を再生開始カウンタ値として設定する。例えば、クロック操作部45は、再生ボタンが操作されると、カーソル71の現在位置に対応するカウンタ値を再生開始カウンタ値として設定する。クロック操作部45は、最初に移動するためのボタンが操作されると、カーソル71をサンプリング期間の先頭の位置に移動させた後に、当該先頭の位置に対応するカウンタ値を再生開始カウンタ値として設定する。
【0115】
さらに、クロック操作部45は、再生ボタン群73のうち操作されたボタンの種類、および、再生速度入力欄74に入力されている倍率に従って、再生条件を設定する。例えば、クロック操作部45は、再生ボタンまたは最初に移動するためのボタンが操作された場合、再生速度入力欄74に入力されている倍率を示すように再生条件を設定する。クロック操作部45は、一時停止ボタンが操作された場合、再生速度「0」を示す再生条件を設定する。
【0116】
停止ボタンが操作された場合も、クロック操作部45は、再生速度「0」を示す再生条件を設定する。あるいは、停止ボタンが操作された場合、クロック操作部45は、データの再現処理を停止するように再現モジュール40に指示してもよい。
【0117】
図6に示す再現モジュール40のクロック管理部41は、クロック操作部45から受けた再生開始カウンタ値および再生条件に従って、カウンタ値の更新を行なう。具体的には、クロック管理部41は、再生開始カウンタ値を初期カウンタ値として設定する。さらに、クロック管理部41は、再生条件に応じて規定時間を設定する。例えば、再生条件として倍率「×1.0」が設定された場合、クロック管理部41は、最短制御周期と同じ時間を規定時間として設定する。再生条件として倍率「×2.0」が設定された場合、クロック管理部41は、最短制御周期を2で割った時間を規定時間として設定する。このように、クロック管理部41は、最短制御周期を再生条件が示す倍率で割った時間を規定時間として設定する。クロック管理部41は、規定時間が経過するたびにカウンタ値を1だけ進める。
【0118】
なお、再生条件として再生速度「0」が設定された場合、クロック管理部41は、カウント値の更新を停止する。
【0119】
時系列データ管理部42aは、エンジニアリングツール32または動画表示モジュール30cからのリクエストに応じてクエリを生成し、生成したクエリを用いて、時系列データベース50から取得対象データを取得する。時系列データ管理部42aは、第1クエリ生成部421と第2クエリ生成部422とを含む。
【0120】
第1クエリ生成部421は、エンジニアリングツール32からの変数リクエストに応じて、クエリを生成する。具体的には、第1クエリ生成部421は、取得対象の変数データを定義する第1定義情報と予め定められたクエリテンプレートとを用いて、変数データを取得するためのクエリを生成する。
【0121】
第1定義情報は、可視化モジュール30の作成時に、可視化モジュール30に応じてユーザによって予め設定される。第1定義情報は、取得対象変数名を定義するデータ名情報と、カウンタ値が表す時刻と取得対象の時刻(以下、「対象時刻」と称する)または取得対象の時間範囲(以下、「対象時間範囲」と称する)との相対関係を定義する相対関係情報とを含む。なお、データ名情報は、第2情報に相当する。相対関係情報は、第3情報に相当する。
【0122】
例えば、波形表示モジュール30aに対応する第1定義情報は、予め指定された変数名を取得対象変数名として定義するデータ名情報と、カウンタ値が表す時刻から75秒間を対象時間範囲として定義する相対関係情報とを含む。
【0123】
例えば、プログラム表示モジュール30bに対応する第1定義情報は、制御プログラムで使用される全ての変数名を取得対象変数名として定義するデータ名情報と、カウンタ値が表す時刻を対象時刻として定義する相対関係情報とを含む。
【0124】
図8は、第1クエリ生成部によるクエリの生成方法を説明する図である。図8には、波形表示モジュール30aからの変数リクエストに応じた、クエリの生成方法が示される。
【0125】
第1クエリ生成部421は、クロック管理部41が現在管理するカウンタ値を時刻に変換する。上述したように、カウンタ値は、最短制御周期の周期カウンタの値である。そのため、第1クエリ生成部421は、以下の式に従って、カウンタ値を時刻に変換すればよい。
時刻=カウンタ値×最短制御周期の時間+サンプリング期間の開始時刻
【0126】
第1クエリ生成部421は、カウンタ値が表す時刻と波形表示モジュール30aに対応する第1定義情報の相対関係情報とに基づいて、対象時刻または対象時間範囲を特定する。例えば、第1クエリ生成部421は、対象時間範囲として、2023-01-11 18:00:00から2023-01-11 18:01:15までの時間範囲を特定する。
【0127】
さらに、第1クエリ生成部421は、波形表示モジュール30aに対応する第1定義情報のデータ名情報によって定義される取得対象変数名に基づいて、取得対象の変数の変数IDを特定する。
【0128】
上述したように、制御プログラムの開発時において、ユーザ入力に応じて、制御プログラムによって使用される各変数の変数名が設定される。可視化モジュール30に対応する第1定義情報は、ユーザによって予め設定される。そのため、第1定義情報は、変数名を用いて設定される。一方、時系列データベース50には、各変数について、変数名ではなく変数IDが保存される(図7参照)。そのため、第1クエリ生成部421は、変換テーブル43を用いて、取得対象変数名を変数IDに変換する。
【0129】
変換テーブル43は、変数名と変数IDとを対応付ける。変換テーブル43は、時系列データベース50を構築する前、または、時系列データベース50を構築するときに生成される。
【0130】
第1クエリ生成部421は、可視化モジュール30に応じたクエリテンプレート82を用いて、特定された対象時間範囲と特定された変数IDとに対応する変数データセット54を取得対象データとして指定するようにクエリを生成する。クエリテンプレート82は、可視化モジュール30に対応する第1定義情報に応じて、予め作成される。
【0131】
図8には、波形表示モジュール30aに対応するクエリテンプレート82が示される。クエリテンプレート82は、対象時間範囲を指定するための文字列「start time」および「end time」と、データを指定するための文字列「id」とを含む。なお、クエリテンプレート84は、対象時間範囲を指定するための文字列「start time」および「end time」の代わりに、対象時刻を指定するための文字列「time」を含んでもよい。また、全てのデータを取得する場合、クエリテンプレート84は、データを指定するための文字列「id」を含まなくてもよい。
【0132】
例えば、第1クエリ生成部421は、波形表示モジュール30aに対応するクエリテンプレート82に、特定された対象時間範囲および特定された変数IDを挿入することにより、クエリを生成する。
【0133】
図6に示されるように、第1クエリ生成部421は、生成したクエリを用いて、時系列データベース50から取得対象の変数データ54aを取得する。これにより、エンジニアリングツール32に含まれる可視化モジュール30は、変数データ54aを可視化対象のデータとして取得できる。
【0134】
第2クエリ生成部422は、動画表示モジュール30cからのフレームIDリクエストに応じて、クエリを生成する。具体的には、第2クエリ生成部422は、取得対象のフレームIDを定義する第2定義情報と予め定められたクエリテンプレートとを用いて、フレームIDを取得するためのクエリを生成する。
【0135】
第2定義情報は、動画表示モジュール30cの作成時に設定される。第2定義情報は、カウンタ値が表す時刻と取得対象の時刻(対象時刻)との相対関係を定義する相対関係情報を含む。典型的には、相対関係情報は、カウンタ値が表す時刻を対象時刻として定義する。
【0136】
第2クエリ生成部422は、第1クエリ生成部421と同様に、クロック管理部41が現在管理するカウンタ値を時刻に変換する。そして、第2クエリ生成部422は、カウンタ値が表す時刻と第2定義情報とに基づいて、対象時刻を特定する。第2クエリ生成部422は、動画表示モジュール30cに対応するクエリテンプレートに、特定した対象時刻を挿入することにより、クエリを生成する。
【0137】
第2クエリ生成部422は、生成したクエリを用いて、時系列データベース50から取得対象のフレームIDを取得する。典型的には、第2クエリ生成部422は、カウンタ値が表す時刻に対応するフレームIDを取得する。
【0138】
これにより、動画表示モジュール30cは、カウンタ値が表す時刻に対応するフレームIDを可視化対象のデータとして取得できる。動画表示モジュール30cは、取得したフレームIDのフレームを動画データ58から読み出し、読み出したフレームの画像をディスプレイ120に表示する。
【0139】
<情報処理システムの処理の流れ>
図9は、PCの処理の流れを示すフローチャートである。まず、ステップS1において、PC100Aのプロセッサ101は、再現モジュール40の動作開始指示を受け付ける。動作開始指示は、可視化対象のサンプリング期間の指定を含む。以下のステップS3,S4は、指定されたサンプリング期間に対して実行される。
【0140】
次にステップS2において、再現モジュール通信制御部18は、1以上の可視化モジュール30の接続先を再現モジュール40に設定する。ステップS2の後、ステップS3とステップS4との並列処理が実行される。
【0141】
ステップS3において、再現モジュール40は、規定時間によって定義される一定周期ごとにクエリを生成し、生成したクエリを用いて、時系列データベース50から取得対象データを取得する。
【0142】
ステップS4において、1以上の可視化モジュール30は、再現モジュール40から取得対象データを可視化対象のデータとして取得し、取得対象データを可視化する。ステップS3,S4の後、プロセッサ101は、処理を終了する。
【0143】
図10は、図9に示すステップS3のサブルーチンの処理の流れを示すフローチャートである。
【0144】
ステップS31において、時系列データ管理部42aは、可視化モジュール30に応じたクエリテンプレートを特定する。
【0145】
次のステップS32において、クロック管理部41aは、図5に示す第4ウィンドウ70へのユーザ入力に応じて設定された再生開始カウンタ値をカウンタ値として設定する。
【0146】
次のステップS33において、時系列データ管理部42aは、可視化モジュール30に応じた第1定義情報または第2定義情報に基づいて、カウンタ値から対象時刻または対象時間範囲を特定する。
【0147】
次のステップS34において、時系列データ管理部42aは、特定した対象時刻または対象時間範囲をクエリテンプレートに挿入することにより、クエリを生成する。なお、可視化モジュール30から変数リクエストを受けた場合には、時系列データ管理部42aは、第1定義情報に基づいて、取得対象の変数の変数IDを特定し、特定した変数IDもクエリテンプレートに挿入する。
【0148】
次のステップS35において、時系列データ管理部42aは、クエリを用いて、時系列データベース50から取得対象データを取得する。
【0149】
次のステップS36において、時系列データ管理部42aは、取得対象データを再現モジュール40に設定する。
【0150】
次のステップS37において、クロック管理部41aは、一定周期(規定時間)の経過に応じてカウンタ値を1だけ進める。
【0151】
次のステップS38において、時系列データ管理部42aは、カウンタ値によって表される時刻がサンプリング期間内であるか否かを判断する。
【0152】
カウンタ値によって表される時刻がサンプリング期間内である場合(ステップS38でYES)、処理はステップS33に戻る。
【0153】
カウンタ値によって表される時刻がサンプリング期間内でない場合(ステップS38でYES)、プロセッサ101は、1以上の可視化モジュール30と再現モジュール40との接続を遮断する。すなわち、プロセッサ101は、1以上の可視化モジュール30をオフライン状態に切り替える。
【0154】
図11は、図9に示すステップS4のサブルーチンの処理の流れを示すフローチャートである。
【0155】
ステップS41において、1以上の可視化モジュール30は、リクエストを再現モジュール40に出力する。
【0156】
次のステップS42において、1以上の可視化モジュール30は、再現モジュール40に現在設定されている取得対象データを可視化対象のデータとして取得する。
【0157】
次のステップS43において、1以上の可視化モジュール30は、取得対象データを可視化する。
【0158】
次のステップS44において、プロセッサ101は、1以上の可視化モジュール30がオフライン状態であるか否かを判断する。
【0159】
1以上の可視化モジュール30がオフライン状態ではない場合(ステップS44でNO)、1以上の可視化モジュール30は、ステップS45において、最新のリクエストを出力してから予め定められたモニタリング周期が経過したか否かを判断する。モニタリング周期は、例えば100msであるが、これに限定されない。
【0160】
モニタリング周期が経過していない場合(ステップS45でNO)、処理はステップS44に戻る。モニタリング周期が経過した場合(ステップS45でYES)、処理はステップS41に戻る。
【0161】
1以上の可視化モジュール30がオフライン状態である場合(ステップS44でYES)、ステップS4の処理は終了する。
【0162】
<変形例>
上記の説明では、情報処理システム100が1つのPC100Aによって構成されるものとした。しかしながら、情報処理システム100は、複数のコンピュータによって構成されてもよい。例えば、情報処理システム100は、1以上の可視化モジュール30を実現する第1コンピュータと、再現モジュール40およびクロック操作部45を実現する第2コンピュータとによって構成されてもよい。
【0163】
あるいは、情報処理システム100は、クラウド上の仮想マシン等、汎用的なPC以外のハードウェア環境を含んでもよい。
【0164】
図12は、変形例に係る情報処理システムの主要なソフトウェア構成を示す図である。図12に示されるように、情報処理システム100Bは、図6に示すPC100Aと比較して、エンジニアリングツール32、再現モジュール40および時系列データベース50の代わりにエンジニアリングツール32A、再現モジュール40Aおよびクラウドデータベース56を備える点で相違する。
【0165】
クラウドデータベース56は、クラウドコンピューティングによって提供される。クラウドデータベース56は、1以上の時系列データベースを含む。図12に示す例では、クラウドデータベース56は、時系列データベースとして、動画データベース50a、変数データベース50bおよび関連情報データベース50cを含む。
【0166】
動画データベース50aは、ネットワークカメラ400の撮影により得られる動画の時刻ごとのフレームを保存する。変数データベース50bは、時刻ごとに、PLC200に保持されていた各種の変数値を示す変数データセットを保存する。関連情報データベース50cは、時刻ごとに、生産システム(フィールド)に関連する情報を示すデータを保存する。
【0167】
ユーザは、生産システム1に関連する新たな時系列データベースをクラウドデータベース56に追加してもよい。
【0168】
エンジニアリングツール32Aは、図6に示すエンジニアリングツール32と比較して、設定部34とクエリテンプレート群36とを含む点で相違する。
【0169】
再現モジュール40Aは、図6に示す再現モジュール40と比較して、時系列データ管理部42aの代わりに時系列データ管理部42bを含む点で相違する。時系列データ管理部42bは、図1に示すデータ管理部42の一例である。時系列データ管理部42bは、時系列データ管理部42aと比較して、第3クエリ生成部423を含む点で相違する。
【0170】
上述したように、クラウドデータベース56には、新たな時系列データベースが追加され得る。新たな時系列データベースが増えると、ユーザに提供可能なデータの種類が増える。そのため、ユーザは、既存の可視化モジュール30による可視化対象のデータの種類が増やすことを要望し得る。あるいは、ユーザは、新たな可視化モジュール30を追加することを要望し得る。
【0171】
設定部34および第3クエリ生成部423は、このような要望に応えるために、ユーザ入力に応じて、自由にクエリを生成することが可能な機能を提供する。これにより、ユーザは、クラウドデータベース56が保存する各種のデータを用いて、自由度の高い分析を行なうことができる。
【0172】
図13は、設定部および第3クエリ生成部の処理を説明する図である。図13に示されるように、設定部34は、随時ユーザ入力を受け付け、ユーザ入力に応じて第3定義情報を設定する。第3定義情報は、取得対象データの種類を定義する種類情報と、取得条件を定義する取得条件情報とを含む。種類情報は、第1情報に相当する。取得条件情報は、カウンタ値が表す時刻と対象時刻または対象時間範囲との相対関係を定義する相対関係情報を含む。さらに、取得条件情報は、取得対象データの名称(例えば変数名)を定義するデータ名情報を含んでもよい。データ名情報は、第2情報に相当する。相対関係情報は、第3情報に相当する。
【0173】
種類情報によって定義される取得対象データの種類は、例えば、「変数」、「動画」および「関連情報」のいずれかを示す。
【0174】
例えば、取得条件情報によって定義される取得条件は、取得対象データの名称として「第1変数の変数名」を示し、対象時間範囲としてカウンタ値で表される時刻から75秒間を示す。例えば、取得条件情報によって定義される取得条件は、取得対象データの名称として「全ての変数名」を示し、対象時刻としてカウンタ値で表される時刻を示す。例えば、取得条件情報によって定義される取得条件は、取得対象データの種類として「動画フレーム」を示し、対象時刻としてカウンタ値で表される時刻を示す。
【0175】
設定部34は、図12に示すクエリテンプレート群36から、可視化モジュール30に応じたクエリテンプレート84を読み出す。図13に示されるクエリテンプレート84は、データの取得先の時系列データベースの名称を指定するための文字列「table name」と、対象時間範囲を指定するための文字列「start time」および「end time」と、データを指定するための文字列「id」とを含む。
【0176】
なお、クエリテンプレート84は、対象時間範囲を指定するための文字列「start time」および「end time」の代わりに、対象時刻を指定するための文字列「time」を含んでもよい。また、全てのデータを取得する場合、クエリテンプレート84は、データを指定するための文字列「id」を含まなくてもよい。
【0177】
クエリテンプレート群36は、1つの可視化モジュール30に応じて複数のクエリテンプレート84を含んでもよい。この場合、ユーザは、複数のクエリテンプレートの中から所望のクエリテンプレートを選択すればよい。
【0178】
設定部34は、設定した第3定義情報と読み出したクエリテンプレート84とを、第3クエリ生成部423に出力する。
【0179】
第3クエリ生成部423は、設定部34から受けた第3定義情報の種類情報に基づいて、クラウドデータベース56に含まれる複数の時系列データベースから、取得対象データを保存する対象時系列データベースを特定する。第3クエリ生成部423は、例えば、予め作成されたテーブル44を用いて、対象時系列データベースを特定する。テーブル44は、データの種類と、データを保存する時系列データベース名とを対応付ける。
【0180】
例えば、種類情報が「変数」を示す場合、第3クエリ生成部423は、データベース名「plclog」の変数データベース50bを対象時系列データベースとして特定する。
【0181】
第3クエリ生成部423は、対象時系列データベースを取得対象データの取得先として指定するようにクエリを生成する。具体的には、第3クエリ生成部423は、設定部34から受けたクエリテンプレート84の「table name」に、対象時系列データベースの名称を挿入する。
【0182】
さらに、第3クエリ生成部423は、設定部34から受けたクエリテンプレート84に、取得条件情報に基づいて特定された対象時刻または対象時間範囲を挿入することにより、クエリを生成する。取得条件が取得対象の変数名を定義する場合、第3クエリ生成部423は、クエリテンプレート84に、取得条件に基づいて特定された変数IDをさらに挿入する。対象時刻または対象時間範囲の特定方法、および、変数IDの特定方法は、第1クエリ生成部421による方法と同じである。そのため、詳細な説明を省略する。
【0183】
図14は、第3クエリ生成部によって生成されたクエリの3つの例を示す図である。クエリ86aは、取得対象データの種類が「変数」であり、取得条件が、取得対象データの名称として「第1変数の変数名」を示し、かつ、対象時間範囲としてカウンタ値で表される時刻から75秒間を示すことを定義する第3定義情報に応じて生成される。クエリ86bは、取得対象データの種類が「変数」であり、取得条件が、取得対象データの名称として「全ての変数名」を示し、かつ、対象時刻としてカウンタ値で表される時刻を示すことを定義する第3定義情報に応じて生成される。クエリ86cは、取得対象データの種類が「動画」であり、取得条件が対象時刻としてカウンタ値で表される時刻を示すことを定義する第3定義情報に応じて生成される。
【0184】
図15は、変形例に係る情報処理システムによるステップS3のサブルーチンの処理の流れを示すフローチャートである。変形例に係る情報処理システム100Bの処理の流れは、図9に示すフローチャートに従う。ただし、変形例に係る情報処理システム100Bにおいて、ステップS3のサブルーチンの処理の流れは、図10に示すフローチャートの代わりに図15に示すフローチャートに従う。
【0185】
図15に示すフローチャートは、図10に示すフローチャートと比較して、ステップS131,S132を含む点で相違する。そのため、ステップS131,S132についてのみ説明する。
【0186】
ステップS131において、設定部34は、クエリをカスタム作成するか否かを判断する。具体的には、設定部34は、第3定義情報の入力を受け付けた場合に、クエリをカスタム作成すると判断する。
【0187】
クエリをカスタム作成しない場合(ステップS131でNO)、処理は、ステップS31に移る。
【0188】
クエリをカスタム作成する場合(ステップS131でYES)、設定部34は、ステップS132において、第3定義情報によって定義される取得対象データの種類に基づいて、可視化モジュールに応じたクエリテンプレート84を更新する。設定部34は、更新後のクエリテンプレート84と第3定義情報によって定義される取得条件とを時系列データ管理部42bに出力する。
【0189】
ステップS31またはステップS132の後、プロセッサ101は、ステップS32~S39を実行する。なお、ステップS34において、時系列データ管理部42bは、設定部34からクエリテンプレート84と取得条件とを受けている場合、当該クエリテンプレート84と取得条件とに基づいてクエリを生成すればよい。
【0190】
§3 付記
以上のように、本実施の形態は以下のような開示を含む。
【0191】
(構成1)
情報処理システム(100,100A,100B)であって、
生産システム(1)の状態を表す可視化対象のデータを可視化する1以上の可視化モジュール(30,30a~30c,101)と、
時刻ごとに前記生産システム(1)の状態を示すデータセット(53)を保存する1以上の時系列データベース(50,50a~50c)と、
取得対象データを定義する定義情報に基づいてクエリを生成し、前記クエリを用いて、前記1以上の時系列データベース(50,50a~50c)から前記取得対象データを取得するデータ管理部(42,42a,42b,101)とを備え、
前記1以上の可視化モジュール(30,30a~30c)は、前記取得対象データを前記可視化対象のデータとして取得する、情報処理システム(100,100A,100B)。
【0192】
(構成2)
前記データ管理部(42,42a,42b,101)は、前記定義情報とクエリテンプレート(82,84)とを用いて、前記クエリを生成する、構成1に記載の情報処理システム(100,100A,100B)。
【0193】
(構成3)
前記生産システム(1)は、制御プログラムを実行するプログラマブルロジックコントローラ(200)を含み、
前記データセットは、前記制御プログラムによって使用される1以上の変数の各々について、識別子と、対応する時刻において前記プログラマブルロジックコントローラ(200)が保持していた値とを示す変数データ(54,54a)を含み、
前記データ管理部(42,42a,42b)は、
前記1以上の変数のうち取得対象の変数について、前記制御プログラムの開発時に設定された変数名に対応する前記識別子を特定し、
特定された前記識別子に対応する前記データセットを前記取得対象データとして指定するように前記クエリを生成する、構成1または2に記載の情報処理システム(100,100A,100B)。
【0194】
(構成4)
ユーザ入力に応じて、前記定義情報として前記取得対象データの種類を示す第1情報を設定する設定部(34,101)をさらに備え、
前記1以上の時系列データベース(50,50a~50c)は、複数の時系列データベース(50a~50c)を含み、
前記データ管理部(42b)は、
前記第1情報に基づいて、前記複数の時系列データベース(50a~50c)から、前記取得対象データを保存する対象時系列データベースを特定し、
前記対象時系列データベースを前記取得対象データの取得先として指定するように前記クエリを生成する、構成1から3のいずれかに記載の情報処理システム(100B)。
【0195】
(構成5)
ユーザ入力に応じて、前記定義情報を設定する設定部(34,101)をさらに備え、
前記生産システム(1)は、制御プログラムを実行するプログラマブルロジックコントローラ(200)を含み、
前記データセットは、前記制御プログラムによって使用される1以上の変数の各々について、対応する時刻において前記プログラマブルロジックコントローラ(200)が保持していた値を示す変数データ(54,54a)を含み、
前記設定部(34,101)は、前記定義情報として、前記1以上の変数のうち取得対象の変数を定義する第2情報を設定し、
前記データ管理部(42b)は、前記第2情報によって定義される変数に対応する変数データを前記取得対象データとして指定するように前記クエリを生成する、構成1から3のいずれかに記載の情報処理システム(100B)。
【0196】
(構成6)
前記1以上の時系列データベース(50,50a~50c)は、サンプリング期間に含まれる時刻ごとの前記データセット(53)を保存し、
前記情報処理システム(100,100A,100B)は、
前記サンプリング期間内の時刻を表すカウンタ値を一定周期ごとに1つ進めるクロック管理部(41,41a,101)をさらに備え、
前記定義情報は、前記カウンタ値が表す時刻と取得対象の時刻または取得対象の時間範囲との相対関係を定義する第3情報を含み、
前記データ管理部(42,42a,42b,101)は、
前記クロック管理部(41,41a,101)が現在管理する前記カウンタ値と前記第3情報とに基づいて、前記取得対象の時刻または前記取得対象の時間範囲を特定し、
特定された前記取得対象の時刻または前記取得対象の時間範囲に対応する前記データセットを前記取得対象データとして指定するように前記クエリを生成する、構成1から5のいずれかに記載の情報処理システム(100,100A,100B)。
【0197】
(構成7)
ユーザ入力に応じて、前記第3情報を設定する設定部(34,101)をさらに備える、構成6に記載の情報処理システム(100B)。
【0198】
(構成8)
生産システム(1)の状態を表す可視化対象のデータを可視化する1以上の可視化モジュール(30,30a~30c)と、時刻ごとに前記生産システム(1)の状態を示すデータセット(53)を保存する1以上の時系列データベース(50,50a~50c)とを含む情報処理システム(100,100A,100B)における情報処理方法であって、
取得対象データを定義する定義情報に基づいてクエリを生成し、前記クエリを用いて、前記1以上の時系列データベース(50,50a~50c)から前記取得対象データを取得すること(S3)と、
前記1以上の可視化モジュール(30,30a~30c)が、前記取得対象データを前記可視化対象のデータとして取得すること(S4)とを備える、情報処理方法。
【0199】
(構成9)
生産システム(1)の状態を表す可視化対象のデータを可視化する1以上の可視化モジュール(30,30a~30c)と、時刻ごとに前記生産システム(1)の状態を示すデータセット(53)を保存する1以上の時系列データベース(50,50a~50c)とを含むコンピュータシステムに情報処理方法を実行させるプログラムであって、
前記情報処理方法は、
取得対象データを定義する定義情報に基づいてクエリを生成し、前記クエリを用いて、前記1以上の時系列データベース(50,50a~50c)から前記取得対象データを取得すること(S3)と、
前記1以上の可視化モジュール(30,30a~30c)が、前記取得対象データを前記可視化対象のデータとして取得すること(S4)とを備える、プログラム。
【0200】
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0201】
1 生産システム、11 制御プログラム編集部、12 データ型定義編集部、13 データ型メモリマップ生成部、14 サンプリング設定部、15 ビルド処理部、16 再現モジュール生成部、17 PLC通信制御部、18 再現モジュール通信制御部、19 データベース構築部、21 プログラム実行部、22 データ収集部、30 可視化モジュール、30a 波形表示モジュール、30b プログラム表示モジュール、30c 動画表示モジュール、32,32A エンジニアリングツール、34 設定部、36 クエリテンプレート群、40,40A 再現モジュール、41,41a クロック管理部、42 データ管理部、42a,42b 時系列データ管理部、43 変換テーブル、44 テーブル、45 クロック操作部、50 時系列データベース、50a 動画データベース、50b 変数データベース、50c 関連情報データベース、51 レコード、52 時刻データ、53 状態データセット、54 変数データセット、54a 変数データ、55 フレームID、56 クラウドデータベース、58 動画データ、60 データ型メモリマップ、70 第4ウィンドウ、71 カーソル、72 表示領域、73 再生ボタン群、74 再生速度入力欄、82,84 クエリテンプレート、86a~86c クエリ、100,100B 情報処理システム、100A PC、101 プロセッサ、102,206 メモリ、103,208 ストレージ、104 入力インターフェイス、105 表示コントローラ、106 通信インターフェイス、107,270 リーダ/ライタ、110 入力装置、120 ディスプレイ、131 開発プログラム、132 ビューワープログラム、133 再現プログラム、134 データベース構築プログラム、200 PLC、201 電源回路、202 CPU、204 チップセット、211 システムプログラム、213 スケジューラプログラム、214 プログラムデータセット、220 時系列データセット、250 USBコントローラ、252 フィールドネットワークコントローラ、252a,254a コネクタ、254 ネットワークコントローラ、260 タイマ、300 フィールド機器、400 ネットワークカメラ、421 第1クエリ生成部、422 第2クエリ生成部、423 第3クエリ生成部、500 ネットワークストレージ、600 記憶媒体。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15