JP7461811B2 - プログラマブルロジックコントローラ - Google Patents

プログラマブルロジックコントローラ Download PDF

Info

Publication number
JP7461811B2
JP7461811B2 JP2020111878A JP2020111878A JP7461811B2 JP 7461811 B2 JP7461811 B2 JP 7461811B2 JP 2020111878 A JP2020111878 A JP 2020111878A JP 2020111878 A JP2020111878 A JP 2020111878A JP 7461811 B2 JP7461811 B2 JP 7461811B2
Authority
JP
Japan
Prior art keywords
data
unit
buffer
execution engine
collection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020111878A
Other languages
English (en)
Other versions
JP2021060967A (ja
Inventor
達也 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Keyence Corp
Original Assignee
Keyence Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Keyence Corp filed Critical Keyence Corp
Priority to US17/012,112 priority Critical patent/US11644808B2/en
Priority to CN202011051992.2A priority patent/CN112612239A/zh
Publication of JP2021060967A publication Critical patent/JP2021060967A/ja
Application granted granted Critical
Publication of JP7461811B2 publication Critical patent/JP7461811B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Description

本発明はプログラマブルロジックコントローラに関する。
プログラマブル・ロジック・コントローラ(PLC)はファクトリーオートメーションにおいて製造機器や搬送装置、検査装置などの産業機械を制御するコントローラである(特許文献1、2)。PLCはプログラマーによって作成されるラダープログラムなどのユーザプログラムを実行することで様々な拡張ユニットや被制御機器を制御する。
特許第5661222号公報 特開2018-097662号公報
ところで、PLCの動作やPLCによって制御される産業機械の動作を監視するために、PLCが保持しているデータを収集して活用することが望まれている。PLCは、基本ユニット(CPUユニット)とそれに接続される拡張ユニットとを有している。基本ユニットは、ラダープログラムなどのユーザプログラムを実行することで拡張ユニットを制御する。拡張ユニットは基本ユニットからの命令にしたがって産業機械を制御し、制御結果を基本ユニットに返す。ここで、基本ユニットの負荷を削減するために、発明者らは、拡張ユニットの一つとしてデータ活用ユニットを基本ユニットに接続することを思いついた。しかし、拡張ユニットの制御周期と基本ユニットの制御周期(ユーザプログラムのスキャン周期)は異なっているため、様々な問題が生じる。たとえば、拡張ユニットが自己の制御周期にしたがって基本ユニットのデバイスメモリからデバイス値を収集すると、基本ユニットのスキャン周期ごとにリフレッシュされるデータを取りこぼしてしまうだろう。つまり、複数のスキャン周期ごとに一つのデバイス値しか収集できなくなってしまう。一方で、基本ユニットがスキャン周期の終わりのエンド処理期間においてデバイス値を収集して転送すると、デバイス値の収集と転送が完了しないかぎり、基本ユニットは、次のスキャン周期に移行できない。つまり、スキャン周期が間延びしてしまい、産業機械の作業効率が低下する。
そこで、本発明は、PLCにおいて効率よく監視対象のデータを収集および転送することを目的とする。
本発明は、たとえば、
第一ユーザプログラムを繰り返し実行する第一実行エンジンと、
前記第一ユーザプログラムにしたがって前記第一実行エンジンによりアクセスされるデータを記憶するデバイスまたは変数である複数の保持手段と、
前記第一ユーザプログラムのスキャン周期とは非同期で第二ユーザプログラムを実行する第二実行エンジンと、
前記第一実行エンジンと前記第二実行エンジンとを接続するバスと、を有するプログラマブルロジックコントローラであって、
前記第一ユーザプログラムのスキャン周期ごとに所定の収集設定にしたがって前記複数の保持手段のうち収集対象の保持手段に記憶されているデータを収集する収集手段と、
前記収集手段により前記スキャン周期ごとに収集された時系列のデータを蓄積する第一バッファと、
前記第一バッファに記憶された前記時系列のデータを、前記バスを介して前記第二実行エンジンに転送する転送手段と、
を有し、
前記第二実行エンジンは、
前記転送手段により転送されてきた前記時系列のデータを所定の処理設定にしたがってデータ処理する処理手段と、
前記データ処理の処理結果をダッシュボードに表示するための表示データを生成する生成手段と、
前記表示データを外部のコンピュータに提供する提供手段と
を有し、
前記プログラマブルロジックコントローラは、前記バスにおいて転送されようとしている情報の優先度を監視する監視手段をさらに有し、
前記転送手段は、前記時系列のデータの優先度よりも高い優先度の情報がないタイミングにおいて前記時系列のデータを前記第二実行エンジンへ転送し、前記時系列のデータの優先度よりも高い優先度の情報があるタイミングにおいて前記時系列のデータを前記第二実行エンジンへ転送することを抑制することを特徴とするプログラマブルロジックコントローラを提供する。
本発明によればPLCにおいて効率よく監視対象のデータを収集および転送することが可能となる。
PLCシステムを示す図 PCを説明する図 PCを説明する図 PLCを説明する図 基本ユニットを説明する図 データ活用ユニットを説明する図 拡張ユニットを説明する図 データレコードのフォーマットを説明する図 転送タイミングを説明する図 データレコードのフォーマットを説明する図 情報圧縮を説明する図 ダッシュボードの例を示す図 収集および転送方法を示すフローチャート 収集および転送方法を示すフローチャート 収集および転送方法を示すフローチャート サブバッファの活用事例を説明する図 状態監視用のダッシュボード表示画面を説明する図 設定用のダッシュボード表示画面を説明する図 リアルタイム監視方法を示すフローチャート データ活用ユニットにおける再設定方法を示すフローチャート 監視対象の動的変更処理を示すフローチャート 監視対象の動的変更時の収集データを示す図
以下、添付図面を参照して実施形態が詳しく説明される。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態で説明されている特徴の組み合わせの全てが発明に必須のものとは限らない。実施形態で説明されている複数の特徴のうち二つ以上の特徴が任意に組み合わされてもよい。また、同一または同様の構成には同一の参照番号が付され、重複した説明は省略される。同一または類似の要素を示す参照符号の末尾には小文字のアルファベットが付与されることがある。複数の要素に共通する事項が説明される場合、小文字のアルファベットが省略される。
<システム構成>
はじめにプログラマブルロジックコントローラ(PLC、単にプログラマブルコントローラと呼ばれてもよい)を当業者にとってよりよく理解できるようにするために、一般的なPLCの構成とその動作について説明する。
図1は、本発明の実施の形態によるプログラマブル・ロジック・コントローラシステムの一構成例を示す概念図である。図1が示すように、このシステムは、ラダープログラムなどのユーザプログラムの編集を行うためのPC2aと、工場等に設置される各種制御装置を統括的に制御するためのPLC(プログラマブルロジックコントローラ)1とを備えている。PCはパーソナルコンピュータの略称である。ユーザプログラムは、ラダー言語やSFC(シーケンシャルファンクションチャート)などのフローチャート形式のモーションプログラムなどのグラフィカルプログラミング言語を用いて作成されてもよいし、C言語などの高級プログラミング言語を用いて作成されてもよい。以下では、説明の便宜上、ユーザプログラムはラダープログラムとする。PLC1は、CPUが内蔵された基本ユニット3と、1つないし複数の拡張ユニット4を備えている。基本ユニット3に対して1つないし複数の拡張ユニット4が着脱可能となっている。
基本ユニット3は、表示部5および操作部6を備えている。表示部5は、基本ユニット3に取り付けられている各拡張ユニット4の動作状況などを表示することができる。操作部6の操作内容に応じて表示部5は表示内容を切り替える。表示部5は、通常、PLC1内のデバイスの現在値(デバイス値)やPLC1内で生じたエラー情報などを表示する。デバイスとは、デバイス値(デバイスデータ)を格納するために設けられたメモリ上の領域を指す名称であり、デバイスメモリと呼ばれてもよい。デバイス値とは、入力機器からの入力状態、出力機器への出力状態およびユーザプログラム上で設定される内部リレー(補助リレー)、タイマー、カウンタ、データメモリ等の状態を示す情報である。デバイス値の型にはビット型とワード型がある。ビットデバイスは1ビットのデバイス値を記憶する。ワードデバイスは1ワードのデバイス値を記憶する。以下で詳細に説明されるデータ活用プログラムの収集対象としては、デバイスだけでなく、変数が指定されてもよい。ただし、デバイスも変数も情報を保持する保持手段である。したがって、以下の説明においてデバイスは変数も指すものである。なお、デバイスを保持するメモリはデバイスメモリと呼ばれてもよい。また、収集されたデータを保持するメモリはデータメモリと呼ばれてもよい。
拡張ユニット4は、PLC1の機能を拡張するために用意されている。各拡張ユニット4には、その拡張ユニット4の機能に対応するフィールドデバイス(被制御装置)10が接続されることがあり、これにより、各フィールドデバイス10が拡張ユニット4を介して基本ユニット3に接続される。フィールドデバイス10は、センサやカメラなどの入力機器であってもよいし、アクチュエータなどの出力機器であってもよい。また、一つの拡張ユニット4に対して複数のフィールドデバイスが接続されてもよい。
たとえば、拡張ユニット4bはモータ(フィールドデバイス10)を駆動してワークの位置決めする位置決めユニットであってもよいし、カウンタユニットであってもよい。カウンタユニットは手動パルサなどのエンコーダ(フィールドデバイス10)からの信号をカウントする。
拡張ユニット4aは、基本ユニット3や拡張ユニット4bから収集対象データを収集し、フローなどのユーザプログラム(データ活用プログラム)を実行することで収集対象データにデータ処理を施して表示対象データを作成し、ダッシュボードを表示部7またはPC2に表示するための表示データ(ソースデータ)を作成するデータ収集ユニットである。以下で説明されるフロー(フロープログラム)はデータ活用プログラムの一例に過ぎない。基本ユニット3はCPUユニットと呼ばれることもある。なお、PLC1とPC2とを含むシステムはプログラマブルロジックコントローラシステムと呼ばれてもよい。
PC2aは主にプログラマーによって操作されるコンピュータである。一方、PC2bは主に現場担当者によって操作されるコンピュータである。PC2aはプログラム作成支援装置(設定装置)と呼ばれてもよい。PC2は、たとえば、携帯可能なノートタイプやタブレットタイプのパーソナルコンピュータまたはスマートフォンであって、表示部7および操作部8を備えている外部コンピュータである。外部コンピュータとは、PLC1の外部にあるコンピュータである。PLC1を制御するためのユーザプログラムの一例であるラダープログラムは、PC2aを用いて作成される。その作成されたラダープログラムは、PC2a内でニモニックコードに変換される。PC2は、USB(Universal Serial Bus)ケーブルなどの通信ケーブル9を介してPLC1の基本ユニット3に接続される。たとえば、PC2aは、ニモニックコードに変換されたラダープログラムを基本ユニット3に送る。基本ユニット3はラダープログラムをマシンコードに変換し、基本ユニット3に備えられたメモリ内に記憶する。なお、ここではニモニックコードが基本ユニット3に送信されているが、本発明はこれに限られない。たとえば、PC2aは、ニモニックコードを中間コードに変換し、中間コードを基本ユニット3に送信してもよい。
なお、図1は示していないが、PC2の操作部8には、PC2に接続されたマウスなどのポインティングデバイスが含まれていてもよい。また、PC2は、USBケーブル以外の他の通信ケーブル9を介して、PLC1の基本ユニット3に対して着脱可能に接続されるような構成であってもよい。また、PC2は、通信ケーブル9を介さず、PLC1の基本ユニット3に対して無線通信によって接続されてもよい。
<プログラム作成支援装置>
図2はPC2aの電気的構成について説明するためのブロック図である。図2が示すように、PC2aは、CPU11a、表示部7a、操作部8a、記憶装置12aおよび通信部13aを備えている。表示部7a、操作部8a、記憶装置12aおよび通信部13aは、それぞれCPU11aに対して電気的に接続されている。記憶装置12aはRAMやROM、HDD、SSDを含み、さらに着脱可能なメモリカードを含んでもよい。CPUは中央演算処理装置の略称である。ROMはリードオンリーメモリの略称である。RAMはランダムアクセスメモリの略称である。HDDはハードディスクドライブの略称である。SSDはソリッドステートドライブの略称である。
PC2aのユーザは記憶装置12aに記憶されているプロジェクト編集プログラム14aをCPU11aに実行させて、操作部8aを通じてプロジェクトデータ15を編集する。CPU11aがプロジェクト編集プログラム14aを実行することで、プロジェクト作成部16とプロジェクト転送部17が実現される。プロジェクト作成部16はユーザ入力にしたがってプロジェクトデータ15を作成する。プロジェクト転送部17はプロジェクトデータ15をPLC1に転送する。プロジェクトデータ15は、一つ以上のユーザープログラム(例:ラダープログラム)と、基本ユニット3や拡張ユニット4の構成情報などを含む。構成情報は、基本ユニット3に対する複数の拡張ユニット4の接続位置や、基本ユニット3に備えられた機能(例:通信機能や位置決め機能)を示す情報、拡張ユニット4の機能(例:撮影機能)などを示す情報である。ここで、プロジェクトデータ15の編集には、プロジェクトデータ15の作成および変更(再編集)が含まれる。ユーザは、必要に応じて記憶装置12aに記憶されているプロジェクトデータ15を読み出し、そのプロジェクトデータ15を、プロジェクト編集プログラム14aを用いて変更することができる。通信部13aは、通信ケーブル9aを介して基本ユニット3と通信する。プロジェクト転送部17は通信部13aを介してプロジェクトデータを基本ユニット3に転送する。通信部13aは、通信ケーブル9bを介して拡張ユニット4aと通信する。
<ダッシュボードの表示に使用されるPC>
図3はPC2bの電気的構成について説明するためのブロック図である。図3が示すように、PC2bは、CPU11b、表示部7b、操作部8b、記憶装置12bおよび通信部13bを備えている。表示部7b、操作部8b、記憶装置12bおよび通信部13bは、それぞれCPU11bに対して電気的に接続されている。記憶装置12bはRAMやROM、HDD、SSDを含み、さらに着脱可能なメモリカードを含んでもよい。
CPU11bはWebブラウザプログラム14dを実行することでWebブラウザ18を実現する。Webブラウザ18は、通信部13bを介して、拡張ユニット4aによって提供されるデータ活用アプリケーションの設定ページにアクセスしたり、ダッシュボードのページにアクセスしたりする。
<PLC>
図4はPLC1の電気的構成について説明するためのブロック図である。図4が示すように、基本ユニット3は、CPU31、表示部5、操作部6、記憶装置32および通信部33を備えている。表示部5、操作部6、記憶装置32、および通信部33は、それぞれCPU31に電気的に接続されている。記憶装置32は、RAMやROM、メモリカードなどを含んでもよい。記憶装置32はデバイス部34やプロジェクト記憶部35などの複数の記憶領域を有している。デバイス部34はビットデバイスやワードデバイスなどを有し、各デバイスはデバイス値を記憶する。プロジェクト記憶部35は、PC2aから入力されたプロジェクトデータを記憶する。記憶装置32は基本ユニット3用の制御プログラムも記憶する。図4が示すように基本ユニット3と拡張ユニット4とは通信バスの一種である拡張バス90を介して接続されている。なお、図4では拡張バス90に関する通信回路がCPU31に実装されているが、通信部33の一部として実装されてもよい。通信部33はネットワーク通信回路を有してもよい。CPU31は通信部33を介してプロジェクトデータをPC2aから受信する。
ここで、拡張バス90について、補足説明する。この拡張バス90は、入出力リフレッシュに使用される通信バスである。入出力リフレッシュとは、基本ユニット3と拡張ユニット4との間でデバイス値を更新する処理である。入出力リフレッシュは、ラダープログラムが一回実行されるごとに(つまり、一スキャンごとに)、実行される。なお、一つのスキャン周期は、入出力リフレッシュの実行期間と、ユーザプログラムの実行期間と、エンド処理の実行期間とを含む。
拡張ユニット4はCPU41とメモリ42を備えている。拡張ユニット4bのCPU41bは、デバイスに格納された基本ユニット3からの指示(デバイス値)にしたがってフィールドデバイス10を制御する。また、CPU41bは、フィールドデバイス10の制御結果をバッファメモリとよばれるデバイスに格納する。デバイスに格納された制御結果は入出力リフレッシュによって基本ユニット3に転送される。また、デバイスに格納されている制御結果は、基本ユニット3からの読み出し命令にしたがって、入出力リフレッシュとは異なるタイミングであっても、基本ユニット3に転送される。メモリ42はRAMやROMなどを含む。とりわけ、RAMにはバッファメモリとして使用される記憶領域が確保されている。メモリ42は、フィールドデバイス10によって取得されたデータ(例:静止画データや動画データ)を一時的に保持するバッファを有してもよい。
データ活用ユニットとして機能する拡張ユニット4aのCPU41aは、通信部43とケーブル9bを介してPC2bと通信する。データ活用ユニットは、データ活用アプリケーションを実行する拡張ユニットである。データ活用アプリケーションは、制御データを収集したりデータ処理したりするフローと、フローの実行結果を表示するダッシュボードとを含む。なお、制御データを収集する機能は、データ活用アプリケーション以外のユーザプログラムによって実現されてもよい。フローはデータを収集する演算ブロック、データ処理を実行する演算ブロック、および、表示データを作成する演算ブロックなどを有してもよい。ダッシュボードは、グラフ表示部品や数値表示部品などを有する。これらの表示部品は、HTMLデータ、CSSデータおよびJavaScript(登録商標)コードなどにより実現されてもよい。なお、HTMLデータ、CSSデータおよびJavaScript(登録商標)コードの集合体はWebアプリケーションと呼ばれてもよい。本実施形態で、フローはフローテンプレートにより実現される。フローテンプレートは予めアプリケーションごとに用意されており、ユーザにより指定されたパラメータが設定される一つ以上の演算ブロックを有している。ダッシュボードもテンプレートにより実現される。ダッシュボードテンプレートは、ユーザにより指定されたパラメータが設定される一つ以上の表示部品を有している。パラメータは、たとえば、ダッシュボードの名称、デバイス名、数値、ユニット変数名など多種多様な情報である。ユニット変数とは、拡張ユニット4aがフローの実行結果を保持するための変数である。
●基本ユニットのCPUにより実現される機能
図5はデータ活用に関してCPU31により実現される機能を示している。実行エンジン51は、スキャン周期ごとにユーザプログラムを繰り返し実行する。実行エンジン51は、CPU31の外部に設けられたASICまたはFPGAなどにより実現されてもよい。ASICは特定用途集積回路の略称である。FPGAはフィールドプログラマブルゲートアレイの略称である。これらの専用回路は、CPUとプログラムとの組み合わせよりも、特定のデータ処理を高速に実行できることが多い。収集部52aは、スキャン周期のうちエンド処理の期間においてデバイス部34から収集対象のデバイス値を収集してデータレコードを作成して第一バッファ37aに格納する。なお、エンド処理の期間でデータを収集することは必須ではなく、実行エンジン51で実行されるユーザプログラムにデータを収集するための記述(トリガ命令などのプログラムコード)が含まれていてもよい。ただし、エンド処理によってデータを収集するケースでは、ユーザプログラムの変更が不要であるといったメリットがある。また、収集周期は、収集設定36aにより指定された周期であってもよい。第一バッファ37aを設けることで、実行エンジン51は、収集や転送処理によるスキャンタイムの伸びなどの影響を受けにくくなる。収集対象のデバイス値は、収集設定36aにより指定されている。収集設定36aは、PC2aまたは拡張ユニット4aによって基本ユニット3に格納されうる。転送部53aは、第一バッファ37aに格納された一つ以上のデータレコードを、拡張バス90を介して、拡張ユニット4aに転送する。なお、転送部53aは、拡張バス90における通信トラフィックが空いているときに、転送処理を実行する。したがって、実行エンジン51aが入出力リフレッシュを実行している期間や、ユーザプログラムに記述された読み出し命令にしたがって拡張ユニット4のバッファメモリからデータを読み出している期間を避けて、転送処理が実行される。なお、拡張バス90の通信トラフィックは監視部54aによって監視されている。なお、データレコードの転送時間を短縮するために、圧縮エンジン55aが複数のデータレコードを圧縮してもよい。なお、圧縮エンジン55aはCPU31により実現される必要は無く、ASICまたはFPGAなどにより実現されてもよい。このように、第一バッファ37aを採用することで、転送処理とユーザプログラムを非同期で実行することが可能となる。
●データ活用ユニットの機能
図6は拡張ユニット4aのCPU41aによって実現される機能を説明する図である。
収集部52cは、収集設定39にしたがってデータを収集する機能である。収集部52cは、CPU41aがユーザプログラムなどの制御プログラムを実行することで実現されうる。収集部52cは、収集設定39により指定されたデバイス値を基本ユニット3が収集して拡張ユニット4aの第二バッファ37bに転送するよう基本ユニット3を設定する。なお、収集部52cは、収集設定39に含まれている基本ユニット3の収集設定36aを基本ユニット3の記憶装置32に書き込んでもよい。収集部52cとデータ処理部73とは基本的に非同期で動作できることが望ましい。これを実現するためにバッファが設けられてもよい。
収集部52cは、収集設定39により指定されたデバイス値を拡張ユニット4bが収集して拡張ユニット4aの第三バッファ37cに転送するよう拡張ユニット4bを設定してもよい。第二バッファ37bおよび第三バッファ37cを設けることで、データ処理部73の処理負荷が変動しても、データを取りこぼさず収集できるようになる。収集部52cは、収集設定39に含まれている拡張ユニット4bの収集設定36b(図7)を拡張ユニット4bのメモリ42bに書き込んでもよい。なお、これらの設定機能は設定部71によって実現されてもよい。設定部71は、PC2aまたはPC2bから収集設定39、処理設定61、表示設定62を受信してメモリ42aに書き込む。処理設定61は、データ処理部73により収集データに対して実行されるデータ処理を定義する情報とフロー(プログラム)を含む。表示設定62は、Webサーバ70を通じてWebブラウザ18にデータ処理結果を提供するダッシュボードのテンプレート(HTMLデータ、CSS、JavaScript(登録商標)のコードなど)を含む。生成部74は、ダッシュボードの表示部品を定義する表示設定62にしたがって、ダッシュボードのテンプレートにデータ処理結果を代入することで、ダッシュボードの表示データを作成する。表示データは、たとえば、HTMLデータや画像データ、CSS(カスケーディングスタイルシート)、JavaScript(登録商標)のコードなどであってもよい。表示部品としては、たとえば、円グラフ部品、棒グラフ部品、折れ線グラフ部品、数値表示部品などが含まれる。Webサーバ70は、Webブラウザ18によりダッシュボードのWebページにアクセスがあると、ダッシュボードの表示データをWebブラウザ18に送信する。Webブラウザ18が表示データを受信してダッシュボードを表示する。
なお、複数のデータ活用アプリケーションが提供されることがある。この場合、データ活用アプリケーションごとに必要とするデータと読み出しタイミングが異なることがある。この場合、データ活用アプリケーションごとにサブバッファがメモリ42aに確保されてもよい。収集部52cは、第二バッファ37bに格納されたデータレコードを読み出し、第一データ活用アプリケーション用のデータを第一サブバッファ38aに格納する。収集部52cは、第二バッファ37bに格納されたデータレコードを読み出し、第二データ活用アプリケーション用のデータを第二サブバッファ38bに格納する。なお、収集部52cは、第三バッファ37cに格納されたデータレコードを読み出し、第一データ活用アプリケーション用のデータを第一サブバッファ38aに格納してもよい。収集部52cは、第三バッファ37cに格納されたデータレコードを読み出し、第二データ活用アプリケーション用のデータを第二サブバッファ38bに格納してもよい。データ処理部73は、第一データ活用アプリケーションにしたがってデータを第一サブバッファ38aから読み出してデータ処理を実行し、処理結果を生成する。データ処理部73は、第二データ活用アプリケーションにしたがってデータを第二サブバッファ38bから読み出してデータ処理を実行し、処理結果を生成する。解凍エンジン75は、基本ユニット3の圧縮エンジン55aおよび拡張ユニット4bの圧縮エンジン55bと対を成す機能である。解凍エンジン75は、基本ユニット3により圧縮されて転送されてきたデータを解凍して第二バッファ37bに格納する。解凍エンジン75は、拡張ユニット4bにより圧縮されて転送されてきたデータを解凍して第三バッファ37cに格納する。これにより拡張バス90の通信トラフィックの混雑が緩和されるようになろう。解凍エンジン75はASICまたはFPGAなどにより実現されてもよい。このように基本ユニット3および拡張ユニット4a、4bとの間のデータの伝送は拡張バス90を介して実行される。
データ活用アプリケーションごとに必要となるデータが複数である場合がある。その場合、各スキャンで収集されたデータの塊をバッファに維持したままサブバッファに必要な複数のデータを格納することもある。さらに、サブバッファにデータを分配する場合にも、各レコードにタイムスタンプ等が付与されもよい。図16が示すように、第二バッファ37b(第三バッファ37cであってもよい)は、収集されたデータの塊を保持している。一つのレコードはスキャン番号と、タイマーの値(タイムスタンプ)と、収集されたデータを含む。この例で、収集されたデータは、リレーRL1~RL3、デバイスDev1、Dev2を含む。第一データ活用アプリケーション1601は、収集されたデータのうち、リレーRL1~RL3を必要とする。したがって、スキャン番号、タイマーの値、リレーRL1~RL3が第二バッファ37bから読み出されて、第一サブバッファ38aに格納される。第一データ活用アプリケーション1601は、第一サブバッファ38aからスキャン番号、タイマーの値、リレーRL1~RL3を読み出して表示画面(ソースデータ)を作成する。第二データ活用アプリケーション1602は、収集されたデータのうち、リレーRL3、デバイスDev1、Dev2を必要とする。したがって、スキャン番号、タイマーの値、リレーRL3、デバイスDev1、Dev2が第二バッファ37bから読み出されて、第二サブバッファ38bに格納される。第二データ活用アプリケーション1602は、第二サブバッファ38bからスキャン番号、タイマーの値、リレーRL3、デバイスDev1、Dev2を読み出して表示画面(ソースデータ)を作成する。このようにサブバッファを活用することで、元のデータを変更することなくバッファ内に維持することが可能となる。バッファ内に保持された元のデータは他の目的で利用可能となる。
●データ活用に関連する拡張ユニット4bの機能
図7は拡張ユニット4bのCPU41bによって実現される機能を説明する図である。
実行エンジン51bは拡張ユニット4bの基本機能(モーションユニットであればモーションフローの実行など)を実行する。収集部52bは、収集設定36により指定されたデータを、収集設定36により指定されたタイミングでデバイス部34bから収集して第四バッファ37dに格納する。転送部53bは、収集設定36により指定されたタイミング、または、拡張ユニット4aにより転送要求が受信されたタイミングで、第四バッファ37dに格納されているデータレコードを読み出して、拡張バス90を介して、拡張ユニット4aの第三バッファ37cに転送する。なお、監視部54により監視される拡張バス90の通信トラフィックが少ないタイミングに、転送部53bがデータレコードの転送を実行してもよい。圧縮エンジン55bは、収集設定36にしたがってデータレコードを圧縮する。つまり、転送部53bは、圧縮エンジン55bにより情報圧縮されたデータレコードを拡張ユニット4aに転送してもよい。圧縮エンジン55bは、CPU41bにより実現されてもよいが、高速処理の観点やCPU41bの処理負荷の軽減の観点から、ASICまたはFPGAにより実現されてもよい。
●データレコードの例
図8は収集部52aによって第一バッファ37aに書き込まれるデータレコード91を示している。複数のデータレコード91は時系列データの一例である。この例で、収集部52aは一スキャン周期ごとに、Dev0、Dev1、Dev10というデバイス名のデバイス値をデバイス部34aから収集し、収集カウントおよびタイマーから取得された時刻情報を付加して一つのデータレコードを作成し、第一バッファ37aに格納する。なお、収集対象は、拡張ユニット4bに割り当てられたバッファメモリまたはデバイスに格納されたデータであってもよい。この例で第一バッファ37aはFIFO(先入先出)タイプのバッファである。収集カウントは、一つのデータレコードを収集するたびに1ずつカウントアップされるカウンタのカウント値である。収集カウントはシーケンシャルに付与される番号であるため、データレコードの抜けや圧縮を検出することに役立つ。
タイムスタンプなどの時刻情報は、たとえば、基本ユニット3で取得されたデータと、拡張ユニット4bで取得されたデータとを対比可能にダッシュボードに表示する際に役立つ。一般に、基本ユニット3における収集タイミングと各様ユニット4bにおける収集タイミングとは一致しない。そのため、基本ユニット3の動作と拡張ユニット4bの動作とを比較するためには、基本ユニット3のデータと、拡張ユニット4bのデータとを紐付るための情報が必要となる。一般に、基本ユニット3は拡張ユニット4a、4bはユニット間同期などによって時刻情報を同期できる。したがって、基本ユニット3と拡張ユニット4bはそれぞれデータレコードを収集したときの時刻情報をデータレコードに付与することで、データ処理部73は、異なるユニットで取得された複数のデータレコードを時間軸上で整列させることができる。
●転送のタイミング
図9はデータレコードの転送タイミングを説明する図である。図9が示すようにPLC1は、入出力のリフレッシュ、ユーザプログラムの実行およびエンド処理を繰り返し実行する。スキャン周期の伸びを低減するために、転送処理は、入出力のリフレッシュの期間を避けて実行される。同様に、スキャン周期の伸びを低減するために、転送処理は、UREADおよびUWRITの実行期間を避けて実行される。UREADは拡張ユニット4に割り当てられているバッファメモリからデータを読み出す命令であり、ユーザプログラム中に記述される。そのため、基本ユニット3は、ユーザプログラムの実行期間中に、UREADにしたがって拡張ユニット4にアクセスしてバッファメモリからデータを取得する。UWRITは、拡張ユニット4に割り当てられているバッファメモリにデータを書き込む命令であり、ユーザプログラム中に記述される。基本ユニット3は、ユーザプログラムの実行期間中に、UWRITにしたがって拡張ユニット4にアクセスしてバッファメモリにデータを書き込む。
図9が示すように、入出力のリフレッシュ、UREADおよびUWRITを除いた残りの転送可能期間において、転送処理は、拡張バス90で実行される。たとえば、収集設定36aによって5個のデータレコードずつ転送処理を実行することが設定されていたと仮定する。この場合、転送部53aは、第一バッファ37aに5個のデータレコードの蓄積が完了した後であって、最初の転送可能期間または拡張ユニット4aによって転送要求を受信したタイミングで、転送処理を実行する。
●収集設定の変更
データの収集は、たとえば、工場の稼働期間において常時実行されてもよい。この場合、午前中に使用されていた収集設定と午後に使用される収集設定とが異なることがある。この場合、複数のデータレコードのうちどのデータレコードが第一の収集設定に基づき取得され、どのデータレコードが第二の収集設定に基づき取得されたかを簡単に識別できれば便利であろう。
図10は収集設定の途中変更に対応可能なデータレコード91のフォーマットを示している。この例では、複数の収集設定を区別するための識別情報がデータレコード91に追加されている。識別情報"1"は第一の収集設定に対応している。第一の収集設定において収集対象のデバイスはDev1とDev10である。識別情報"2"は第二の収集設定に対応している。第二の収集設定において収集対象のデバイスはDev1、Dev10、Dev11である。このようなフォーマットを採用することで、データ処理部73は、収集設定ごとにデータ処理対象を分けて、データ処理を実行することが可能となる。たとえば、識別情報"1"は、第一のデータ処理設定に対応し、識別情報"2"は、第二のデータ処理設定に対応していてもよい。データ処理部73は、識別情報に対応したデータ処理設定を処理設定61から取得し、取得したデータ処理設定にしたがってデータレコードにデータ処理を施してもよい。
●情報圧縮
図11はデータレコードの情報圧縮を説明する図である。データレコード群92aは情報圧縮前のデータレコードを示している。ここでは収集対象として四つのリレーデバイスRL1,RL2,RL3,RL4が指定されている。また、収集カウントとしてスキャン番号が採用されている。カウンタは、タイマーなどにより取得される時刻情報(例:あるリレーがONになってからOFFになるまでの時間間隔を示す数値)であってもよい。データレコード群92aにおいてスキャン番号"1"のデータレコードと、スキャン番号"2"のデータレコードとの間ではリレーデバイスの変化点が存在しない。つまり、スキャン番号"2"のデータレコードは圧縮(廃棄または削除)可能である。しかし、スキャン番号"3"のデータレコードのリレーデバイスRL1とスキャン番号"1"のデータレコードのリレーデバイスRL1とが異なっている。このように、スキャン番号"3"は変化点を有しているため、スキャン番号"3"のデータレコードは圧縮されない。スキャン番号"3"のデータレコードと、スキャン番号"4"のデータレコードとの間ではリレーデバイスの変化点が存在しないため、スキャン番号"4"のデータレコードは圧縮可能である。同様に、スキャン番号"5"のデータレコードと、スキャン番号"6"のデータレコードとの間ではリレーデバイスの変化点が存在しないため、スキャン番号"6"のデータレコードは圧縮可能である。このような変化点に着目した情報圧縮を実行することで、圧縮されたデータレコード群92bが実現される。圧縮されたデータレコード群92bを構成する各データレコードは変化点を有している。
図16が示すように、スキャン番号、タイマーの値、リレーRL1~RL3は、第二バッファ37b(第三バッファ37cであってもよい)から読み出されて、情報圧縮され、第一サブバッファ38aに格納されてもよい。リレーデバイスの変化点が存在しない期間では、スキャン番号(例:2)、タイマーの値(例:450)、リレーRL1~RL3(例:ON、OFF、OFF)が第一サブバッファ38aに格納されなくてもよい。リレーデバイスの変化点が存在するときに、スキャン番号(例:3)、タイマーの値(例:560)、リレーRL1~RL3(例:OFF、OFF、OFF)が第二バッファ37b(第三バッファ37cであってもよい)から読み出されて、第一サブバッファ38aに格納されてもよい。第一データ活用アプリケーション1601は、第一サブバッファ38aからスキャン番号、タイマーの値、リレーRL1~RL3を読み出して表示画面(ソースデータ)を作成する。
●ダッシュボードの一例
図12はWebブラウザ18のUI130を示している。UI130には、URL入力部131と、ダッシュボードの表示領域105とが含まれている。URL入力部131には、ダッシュボードに割り当てられたURLが入力されている。表示領域105には、データ処理部73によって収集対象データから求められたデータ処理結果が示されている。この例では、リレーデバイスRL1、RL2の波形が含まれている。データレコードはスキャン周期ごとに収集されるため、たとえば、一日にわたりデータ収集を継続すると、多数のデータレコードが収集される。データ処理部73は、リレーデバイスRL1の立ち上がりを基準としてリレーデバイスRL1について取得された複数の波形を重ねて表示している。この例では、リレーデバイスRL1の立下りのタイミングにずれが生じている。たとえば、データ処理部73は、複数の波形の平均値を演算し、平均値に相当する波形を太い線で表示してもよい。立下りのずれについて合格範囲dX1が存在してもよい。データ処理部73は、各立下りのタイミングが合格範囲dX1に含まれていれば、合格と判定してもよい。データ処理部73は、リレーデバイスRL2についても同様の処理を実行してもよい。ただし、リレーデバイスRL2について立ち上がりのずれが合格範囲dX2に含まれていないため、データ処理部73は、不合格と判定してもよい。
このように不合格が発生すると、CPU41aは、所定のメールアドレスに対してエラー報告メールを送信してもよい。エラー報告メールには、ダッシュボードのURLを含むリンクが含まれていてもよい。エラー報告メールの受信者はこのリンクをクリックすることで、Webブラウザ18を起動してダッシュボードを表示して波形を確認することで、エラーの原因を解消してもよい。
なお、拡張ユニット4bとしてモーションユニットがある。モーションユニットは、基本ユニット3によって指令値にしたがって、産業機械を動作させ、産業機械の動作結果を保持している。指令値は、たとえば、アーム型ロボットのアームの座標であってもよい。動作結果(現在値)は、センサなどによって取得された実際のアームの座標であってもよい。拡張ユニット4aは、指令値とそれに対応する現在値とを時系列データとして拡張ユニット4bから取得し、指令値と現在値とのずれをダッシュボードに表示してもよい。データ処理部73は、指令値と現在値との差分を求め、時間の経過とともに差分がどのように変化しているかを示すグラフをダッシュボードに表示してもよい。このような波形をユーザが確認することで、発生したエラーの原因が消耗品の寿命に起因したものなのか、外部から加えられた突発的なイベントにあるのかを判断しやすくなろう。たとえば、消耗品の寿命の末期が近づくと徐々に波形の応答が遅れることがある。一方で、突発的なイベントが原因でエラーが発生した場合、イベントの発生時刻でのみ波形の変化が発生する。よって、ユーザは波形を観察することでエラー原因を発見し、その対策を施すことが可能となろう。
<フローチャート>
●拡張ユニット4a
図13は拡張ユニット4aのCPU41aにより実行される収集処理を示すフローチャートである。CPU41aは、特定のリレーデバイスがONになると、以下の処理を実行する。
S1でCPU41a(設定部71)は基本ユニット3と拡張ユニット4bを設定する。たとえば、CPU41aは基本ユニット3のための収集設定36aを基本ユニット3に転送する。基本ユニット3は、収集設定36aを記憶装置32に格納する。CPU41aは基本ユニット3のための収集設定36bを拡張ユニット4bに転送する。拡張ユニット4bは、収集設定36bをメモリ42bに格納する。
S2でCPU41a(データ処理部73または収集部52c)は第二バッファ37bまたは第三バッファ37c(第一サブバッファ38aまたは第二サブバッファ38b)に所定量の収集データが格納されているかどうかを判定する。所定量は処理設定61により定義されている。ここでは、処理設定61により指定されたバッファが確認されれば十分であり、常に、第二バッファ37bと第三バッファ37cとの両方が確認対象となるわけではない。CPU41は、バッファに所定量のデータが格納されるまで待機する。バッファに所定量のデータが格納されると、CPU41aはS3に進む。
S3でCPU41a(データ処理部73)はバッファから読み出した所定量のデータに対してデータ処理を実行して、データ処理結果を求める。データ処理の内容は処理設定61により定義されている。データ処理結果はメモリ42aに保持される。
S4でCPU41a(生成部74)はPC2bのWebブラウザ18からダッシュボードの表示要求(Webアクセス)があったかどうかを判定する。表示要求が無ければ、CPU41aはS2に進み、データの収集とデータ処理とを継続する。表示要求があれば、CPU41aはS5に進む。
S5でCPU41a(生成部74)は表示要求に対応するダッシュボードの表示データを作成する。たとえば、CPU41aは、メモリ42aに格納されているデータ処理結果をダッシュボードのテンプレートに代入して表示データを作成する。
S6でCPU41a(Webサーバ70)は表示データをPC2bのWebブラウザ18に送信する。これにより、PC2bのWebブラウザ18はダッシュボードを表示できるようになる。
●基本ユニット3
図14は基本ユニット3のCPU31により実行される収集処理を示すフローチャートである。CPU31は、特定のリレーデバイスがONになると、以下の処理を実行する。
S11でCPU31(収集部52a)は収集設定36aにより指定された収集タイミング(例:1スキャン周期ごと、トリガ信号が入力されるごと、所定周期ごと)が到来したかどうかを判定する。収集タイミングが到来すると、CPU31はS12に進む。
S12でCPU31(収集部52a)は、収集設定36aにより指定された収集対象データをデバイス部34aから収集して第一バッファ37aに格納する。
S13でCPU31(転送部53a)は、収集設定36aにより指定された転送条件が満たされたかどうかを判定する。転送条件は、たとえば、第一バッファ37aに蓄積されているデータレコードの数であってもよい。転送条件が満たされていなければ、CPU31は、S11に戻り、データの収集を継続する。転送条件が満たされていれば、CPU31はS14に進む。
S14でCPU31(監視部54a)は、拡張バス90の通信トラフィックが少ないかどうかを判定する。通信トラフィックが多ければ、CPU31はS11に戻り、データの収集を継続する。通信トラフィックが少なければ、CPU31はS15に進む。
S15でCPU31(転送部53a)は第一バッファ37aから所定量のデータレコードを読み出して第二バッファ37bに転送する。所定量も収集設定36aにより定義されている。
●拡張ユニット4b
図15は拡張ユニット4bのCPU41bにより実行される収集処理を示すフローチャートである。CPU41bは、特定のリレーデバイスがONになると、以下の処理を実行する。
S21でCPU41b(収集部52b)は収集設定36bにより指定された収集タイミング(例:トリガ信号が入力されるごと、所定周期ごと)が到来したかどうかを判定する。収集タイミングが到来すると、CPU41bはS22に進む。
S22でCPU41b(収集部52b)は、収集設定36aにより指定された収集対象データをデバイス部34aから収集して第四バッファ37dに格納する。
S23でCPU41b(転送部53b)は、収集設定36bにより指定された転送条件が満たされたかどうかを判定する。転送条件は、たとえば、第四バッファ37dに蓄積されているデータレコードの数であってもよい。転送条件が満たされていなければ、CPU41bは、S21に戻り、データの収集を継続する。転送条件が満たされていれば、CPU41bはS24に進む。
S24でCPU41b(監視部54b)は、拡張バス90の通信トラフィックが少ないかどうかを判定する。通信トラフィックが多ければ、CPU41bはS21に戻り、データの収集を継続する。通信トラフィックが少なければ、CPU41bはS25に進む。
S25でCPU41b(転送部53b)は第四バッファ37dから所定量のデータレコードを読み出して第三バッファ37cに転送する。所定量も収集設定36bにより定義されている。
図17はリアルタイム監視アプリケーション用のダッシュボード171の一例を示している。図17において動作状態表示172は、リアルタイム監視の動作状態を示すものである。表示切替タブ173は、アプリケーションに対して複数のダッシュボードが設定されている場合に、アプリケーションに対応する他のダッシュボードに切り替えるためのタブボタン表示である。図17ではモニタボタンが押された状態が示されている。この状態では、トレンドタブが押されると、ダッシュボードは、トレンド表示のダッシュボードに切り替わる。履歴タブが押されると、ダッシュボードは、履歴表示のダッシュボードに切り替わる。各表示欄174a~174gには、監視項目ごとに、項目名、余裕度、測定値、注意値、警報値、判定結果および測定値に関連するグラフが表示される。項目名、注意値、警報値は、プロジェクトデータ15のアプリケーション設定データ(表示設定62)に基づき表示される。測定値は、アプリケーション設定データの開始条件および終了条件に基づいて決定される開始タイミングから終了タイミングまでの時間幅を示している。余裕度は、監視項目の測定値がどの程度余裕があるかを示す。たとえば、余裕度は、警報値や注意値に対し測定値がどの程度余裕があるかを示してもよい。判定結果は、測定値と有効な警報値または注意値とに基づき求められた判定結果である。判定結果は、正常、注意、警報等の監視対象の状態区分を示してもよい。最新の測定値に基づく判定結果が正常であったとしても、過去において、判定結果が、一旦、注意や警告の状態になっている場合がある。この場合、過去から現在までの所定の判定期間において、警戒度のより高い状態が維持されてもよい。判定表示欄174fのクリアボタンが押されると、表示されている判定結果が最新の判定結果に更新されてもよい。測定値に関連するグラフは、測定値を視覚化したものである。たとえば、開始タイミングから終了タイミングまでの時間幅を示す棒グラフが表示されてもよい。注意値、および警報値に対応する線が、注意値、および警報値に対応する位置に表示されてもよい。たとえば、グラフ表示欄174gの閾値線表示チェックボックスがチェックされると、有効な注意値および警報値に対応する閾値線が表示される。グラフ表示欄174gの設定ボタンが押されると、アプリケーションに対応する他のダッシュボードうち設定ダッシュボードが表示される。
図18はリアルタイム監視アプリケーション用の設定ダッシュボード181の一例を示している。図17におけるグラフ表示欄174gの設定ボタンが押されると、設定ダッシュボード181が表示される。図18において動作状態表示182は、リアルタイム監視の動作状態を示すものである。監視状態切換スイッチ183は、リアルタイム監視を監視状態と非監視状態とを切り換えるためのスイッチである。閾値一括設定ボタン184は、監視項目ごとに設けられた複数の閾値を一括で設定するための設定画面に移行するためのボタンである。各入力欄185a~185fには、監視項目ごとに、監視チェックボックス、項目名、開始条件、終了条件、注意値、警報値が表示される。図2におけるプロジェクトデータ15のアプリケーション設定データを設定するための設定ウィザードと対応する入力欄が設けられてもよい。追加ボタン186aが押されると、新規の監視項目を入力するための入力行が追加される。削除ボタン186bが押されると、上下ボタン186cで選択された入力行が削除される。設定反映ボタン187が押されると、更新された設定内容をアプリケーション設定データ(表示設定62)に反映される。続いて、更新されたアプリケーション設定データ(表示設定62)に基づくリアルタイム監視アプリケーション用のダッシュボード171が表示される。キャンセルボタン188が押されると、更新された設定内容がアプリケーション設定データ(表示設定62)に反映されることなく、アプリケーション設定データ(表示設定62)に基づくリアルタイム監視アプリケーション用のダッシュボード171が表示される。
図19は拡張ユニット4aのCPU41aにより実行されるリアルタイム監視処理のデータ活用プログラムの実行とダッシュボードの提供とを示すフローチャートである。
S41でCPU41a(収集部52c)はアプリケーション設定データ(収集設定39)に従い開始信号および終了信号に対応するデバイスまたは変数を監視する。アプリケーション設定データ(収集設定39)は、開始信号として利用されるデバイスまたは変数の名称と、デバイスまたは変数に格納される所定値とを保持している。当該デバイスまたは変数の値が所定値に変化したタイミングが開始タイミングであるいは、図18で示されたように、デバイスまたは変数の変化が立ち上がりエッジまたは立下りエッジであることが開始条件として設定されてもよい。終了信号についても同様である。CPU41a(収集部52c)はアプリケーション設定データ(収集設定39)に基づくデータ活用プログラムを実行することによってアプリケーション設定データ(収集設定39)により指定される収集対象のデバイス値を収集し、第二バッファ37cに収集されたデータとして格納する。ここで、収集されたデータは、異なる時刻に収集された時系列データであってもよい。データ活用プログラムとは別に、収集設定39に従い収集動作を実行する収集プログラムを備えていてもよく、この場合、アプリケーション設定データ(処理設定61)に従い収集設定39が設定され、設定された収集設定39により指定される収集対象のデバイス値が収集され、収集されたデータが第二バッファ37cに格納されてもよい。
S42でCPU41a(データ処理部73)は活用プログラムテンプレート(処理設定61)により指定されたデータ活用プログラムを実行する。CPU41a(データ処理部73)はデータ活用プログラムを実行することで、収集されたデータ(デバイス値)に基づいて開始信号の条件を満たすタイミングから終了信号の条件を満たすタイミングまでの時間情報を決定する。CPU41a(データ処理部73)は、図18における開始条件185cに従い、監視対象として設定されたデバイスや変数が立ち上がりエッジ等の条件を満たすかを監視する。ここでは、条件を満たすタイミング、つまり開始信号の条件を満たすタイミングが監視される。CPU41a(データ処理部73)は、同様に、図18における終了条件185dに従い、監視対象として設定されたデバイスや変数が立ち上がりエッジ等の条件を満たすかを監視する。ここでは、条件を満たすタイミング、つまり終了信号の条件を満たすタイミングが監視される。CPU41a(データ処理部73)により決定される時間情報は、開始信号の条件を満たすタイミングから終了信号の条件を満たすタイミングまでの時間幅であってもよい。
S43でCPU41a(データ処理部73)はS42で決定された時刻情報とアプリケーション設定データ(処理設定61)に従い設定された判定閾値に基づいて状態を判定する。CPU41a(データ処理部73)はデータ活用プログラムを実行することで、この判定を実行する。判定閾値として注意値や警報値の上限値および下限値が設定されている場合がある。この場合、CPU41a(データ処理部73)は、測定値である決定された時間情報が上限値を上回るか否かを判定する。また、CPU41a(データ処理部73)は、決定された時間情報が下限値を下回るか否かを判定する。アプリケーション設定データ(処理設定61)は、各上限値や各下限値を判定閾値として使用するか否かを示すフラグを含んでいてもよい。この場合、CPU41a(データ処理部73)は、アプリケーション設定データ(処理設定61)に含まれるフラグがチェックされている各上限値や各下限値と、測定値である決定された時間情報を比較することで、監視対象の状態を判定する。このフラグの値はチェックボックスなどのUIを通じてユーザにより設定されうる。監視対象の状態としては、正常、注意、警報が含まれてもよい。正常状態に対する測定値の乖離度に基づき注意状態と警報状態とが区別される。正常状態の測定値(正常値)と警報状態の測定値(警報値)との差は、正常状態の測定値と注意状態の測定値(注意値)との差よりも大きい。よって、警報値には、注意値よりも正常値から乖離した値が設定される。注意値と警報値とがそれぞれ上限値として設定される場合がある。この場合、CPU41a(データ処理部73)は、決定された時間情報が注意値以下であるときに、監視対象の状態を「正常」と判定する。CPU41a(データ処理部73)は、決定された時間情報が注意値を超え、かつ、警報値以下であるときに監視対象の状態を「注意」と判定する。CPU41a(データ処理部73)は、決定された時間情報が警報値を超えるときに、監視対象の状態を「警報」と判定する。これにより、解析されたデータが作成され、メモリに保存される。
注意値と警報値とがそれぞれ下限値として設定される場合がある。この場合、CPU41a(データ処理部73)は、決定された時間情報が注意値以上であるときに、監視対象の状態を「正常」と判定する。CPU41a(データ処理部73)は、決定された時間情報が注意値未満となり、かつ、警報値以上であるときに監視対象の状態を「注意」と判定する。CPU41a(データ処理部73)は、決定された時間情報が警報値未満であるときに、監視対象の状態を「警報」と判定する。これにより、解析されたデータが作成され、メモリに保存される。
注意値と警報値とがそれぞれ上限値および下限値により設定される場合がある。この場合、CPU41a(データ処理部73)は、決定された時間情報が下限注意値以上でありかつ、決定された時間情報が上限注意値以下であるときに、監視対象の状態を「正常」と判定する。CPU41a(データ処理部73)は、決定された時間情報が上限警報値未満となり、かつ、上限注意値以上であるときに監視対象の状態を「注意」と判定する。
同様に、CPU41a(データ処理部73)は、決定された時間情報が下限注意値未満となり、かつ、下限警報値以上であるときに監視対象の状態を「注意」と判定する。
CPU41a(データ処理部73)は、決定された時間情報が下限警報値未満であるか、または、決定された時間情報が上限警報値を超えているときに、監視対象の状態を「警報」と判定する。これにより、解析されたデータが作成され、メモリに保存される。
CPU41a(データ処理部73)は、警報値や注意値に対し測定値がどの程度余裕があるかを示す余裕度を算出してもよい。余裕度は、たとえば、十分余裕のある状態であるときに100とし、注意状態であるときに50、警報状態であるときに0となるように、定義されてもよい。このように、注意値と測定値との距離(差分)に応じて段階的に値が変わるように余裕度が定義されてもよい。余裕度は、解析されたデータとして、メモリ42aに保存される。CPU41a(データ処理部73)は、測定値が警報値を超えた場合に、測定値が警報値を超えたことを示す信号を生成してもよい。たとえば、CPU41a(データ処理部73)は、測定値が警報値を超えた場合に、測定値が警報値を超えたことを示すデバイスまたは変数の値を変化させる。測定値が警報値を超えたことを示すデバイスまたは変数がトリガとして割り当てられてもよい。たとえば、これはロギングの保存トリガに割り当てられてもよい。これにより、警報が発生したタイミングを基準としてPLC1の運転記録等が保存される。
S44でCPU41a(生成部74)はS42で決定された時刻情報、判定閾値、S43で判定された監視対象の状態を含むダッシュボード171のソースデータを生成する。CPU41a(生成部74)はダッシュボードテンプレート(表示設定62)に基づいて決定した時間情報、判定閾値、判定した監視対象の状態をダッシュボードテンプレート(表示設定62)に割り当てられた変数に反映する。たとえば、CPU41a(生成部74)は、図17におけるグラフ表示欄174gに、開始信号の条件を満たすタイミングから終了信号の条件を満たすタイミングまでの時間幅を示す測定値が棒グラフの形式で表示されるように表示データを作成する。このときと開始信号の条件を満たすタイミングから終了信号の条件を満たすタイミングまでの時間が帯状に表示されてもよい。これにより、時間幅だけでなく、サイクル動作の制御において各監視対象がサイクル内のどのタイミングで動作しているかを示すダッシュボードが表示される。たとえば、グラフ表示欄174gの右端から左端が監視対象の一サイクルに相当してもよい。帯(棒グラフの棒)の開始位置は、一サイクルにおける開始信号の条件が満たされたタイミングに相当する。帯の終了位置は、一サイクルにおける終了信号の条件が満たされたタイミングに相当する。よって、帯の長さは時間幅を示す。
余裕度が測定値とともに表示されるようにしてもよい。CPU41a(生成部74)はダッシュボード171を表示するための表示データ(例:HTMLデータなど)をダッシュボードテンプレート(表示設定62)に割り当てられた変数に基づいて作成する。CPU41a(生成部74)はダッシュボード171のベースとなる画面データと測定値や状態情報などの更新されるデータとを別に管理するようにしてもよい。この場合、CPU41a(生成部74)は、参照先のデバイスや変数が割り当てられた画面データと、参照先のデバイスや変数の値である表示対象データとを個別に管理する。CPU41a(生成部74)は、表示対象データを定期的に更新することで表示データを作成してもよい。生成部74は、収集されたデータおよび/または解析されたデータなどの表示対象データを用いて表示データを作成する。
S45でCPU41a(Webサーバ70)は表示データをPC2bに提供する。CPU41aは表示データをPLC1の表示器に表示してもよい。PLC1の表示器はPLC1に内蔵されていてもよいし、PLC1に対して有線たまは無線により接続されていてもよい。CPU41a(生成部74)が参照先のデバイスや変数が割り当てられた画面データと、参照先のデバイスや変数の値である表示対象データとを別々に管理する場合がある。この場合、CPU41a(Webサーバ70)は、ダッシュボード171の更新要求や更新スケジュールに応じて、表示データのうち画面データと、表示対象データとを選択的に提供する。ダッシュボード171の表示要求に応じてCPU41a(Webサーバ70)は画面データおよび表示対象データを含む表示データを提供する。ダッシュボード171の表示更新要求に応じてCPU41a(Webサーバ70)は更新された表示対象データを表示データとして選択的に提供する。
図20はPC2aのCPU11が実行するリアルタイム監視のダッシュボードを介した設定処理を示すフローチャートを示している。
S51でCPU41a(生成部74)は設定用のダッシュボード181を表示する。たとえば、生成部74は、図18に示された設定用のダッシュボード181を表示するための表示データを作成し、CPU41a(Webサーバ70)は設定用のダッシュボード181を表示するための表示データをPC2bに提供する。
S52でCPU41a(設定部71)は監視対象の追加・削除・変更および/または判定閾値の設定のユーザ入力を受け付ける。CPU41a(設定部71)は追加ボタン186aが押されたことを検出すると、新規の監視対象を設定するための入力行を追加する。CPU41a(生成部74)は新規の監視対象を設定するための入力行が追加された設定用のダッシュボード181を表示するために表示データを作成する。CPU41a(Webサーバ70)は更新された設定用のダッシュボード181を表示するための表示データをPC2bに提供する。CPU41a(設定部71)は削除ボタン186bが押されたことを検知すると、選択された入力行を削除する。CPU41a(生成部74)は、選択された入力行が削除された設定用のダッシュボード181を表示するために表示データを作成する。CPU41a(Webサーバ70)は更新された設定用のダッシュボード181を表示するための表示データをPC2bに提供する。この際、上下ボタン186cによる入力行への選択操作が表示されてもよい。CPU41a(設定部80)は各入力欄185a~185dへの変更入力を受け付けると、CPU41a(生成部74)は各入力欄185a~185dへの変更入力が反映された設定用のダッシュボード181を表示するために表示データを作成し、CPU41a(Webサーバ70)は更新された設定用のダッシュボード181を表示するための表示データをPC2bに提供する。CPU41a(設定部71)は判定閾値の各入力欄185e~185fへの変更入力を受け付けると、CPU41a(生成部74)は判定閾値の各入力欄185e~185fへの変更入力が反映された設定用のダッシュボード181を表示するために表示データを作成する。CPU41a(Webサーバ70)は更新された設定用のダッシュボード181を表示するための表示データをPC2bに提供する。
S53でCPU41a(設定部71)はユーザ入力に従い、対応するアプリケーション設定データ(処理設定61)を更新する。CPU41a(設定部71)は設定反映ボタン187が押されたことを検出すると、更新された設定内容をアプリケーション設定データ(処理設定61)に反映する。一方、CPU41a(設定部71)はキャンセルボタン188が押されたことを検出すると、更新された設定内容をアプリケーション設定データ(処理設定61)に反映せず、更新された設定内容を破棄する。CPU41a(生成部74)は、更新された設定内容を反映することなく、アプリケーション設定データ(処理設定61)に基づくリアルタイム監視アプリケーション用のダッシュボード171を表示するために表示データを作成する。CPU41a(Webサーバ70)はリアルタイム監視アプリケーション用のダッシュボード171を表示するための表示データをPC2bに提供する。
S54でCPU41a(データ処理部73)はS53で更新されたアプリケーション設定データ(処理設定61)に従い、監視対象に関する決定した時間情報と設定された判定閾値とに基づいて監視対象の状態を判定する。CPU41a(データ処理部73)は更新されたアプリケーション設定データ(処理設定61)に従いS42と同様に決定された時間情報と、更新されたアプリケーション設定データ(処理設定61)に従い設定された判定閾値と、に基づいて監視対象の状態をS43と同様に判定する。
S55でCPU41a(生成部74)は更新されたアプリケーション設定データ(処理設定61)に従い決定された時刻情報と、更新されたアプリケーション設定データ(処理設定61)に従い設定された判定閾値と、S54で判定された監視対象の状態とを、図18に示された状態監視用のダッシュボードに表示するための表示データを作成する。CPU41a(Webサーバ70)は状態監視用のダッシュボード171を表示するための表示データをPC2bに提供する。
図21は拡張ユニット4aのCPU41aにより実行される監視対象の動的変更処理を示すフローチャートである。図21においてS61でCPU41a(設定部71)は監視対象の追加・削除・変更を含む設定変更のユーザ入力を受け付ける。CPU41a(設定部71)は追加ボタン186aが押されたことを検出すると、新規の監視対象を設定するための入力行を追加する。CPU41a(生成部74)は新規の監視対象を設定するための入力行が追加された設定用のダッシュボード181を表示するために表示データを作成する。CPU41a(Webサーバ70)は更新された設定用のダッシュボード181を表示するための表示データをPC2bに提供する。CPU41a(設定部71)は削除ボタン186bが押されたことを検知すると選択された入力行を削除する。CPU41a(生成部74)は選択された入力行が削除された設定用のダッシュボード181を表示するために表示データを作成する。CPU41a(Webサーバ70)は更新された設定用のダッシュボード181を表示するための表示データをPC2bに提供する。
S62でCPU41a(設定部71)は受け付けた設定変更に基づいて、CPU41a(収集部52c)に対して収集対象の変更を要求する。S63でCPU41a(収集部52c)は、S62の要求に基づき収集対象を更新するタイミングを決定する。CPU31a(収集部52a)がCPU41a(収集部52c)を介したS62の要求に基づき収集対象を更新するタイミングを決定してもよい。収集対象を更新するタイミンは、たとえば、収集対象の変更要求を受け付けた直後のスキャン開始時、または、収集対象の変更要求を受け付けた直後のサイクル制御開始時であってもよい。また、「受け付けた直後」は、収集対象の変更要求が受け付けられてから実際に収集対象の変更が実行されるまでの所定の期間が考慮されて、決定されてもよい。
S64でCPU41a(収集部52c)はS63で決定された収集対象の更新タイミングに基づき収集対象の更新を実行する。CPU41a(収集部52c)は更新された収集対象からの収集データを、識別情報と紐づけて収集する。識別情報は、収集データが更新されたことを識別するための情報であり、更新識別情報と呼ばれてもよい。CPU41a(収集部52c)はさらに監視対象である収集データに関する、収集データが収集された際の時間情報を、収集データおよび識別情報と紐づけて収集する。この時間情報は収集時間情報と呼ばれてもよい。CPU31a(収集部52a)が、更新された収集対象からの収集データを、更新識別情報と紐づけて収集してもよい。CPU31a(収集部52a)はさらに監視対象である収集データに関する収集時間情報を、収集データおよび識別情報と紐づけて収集してもよい。なお、収集対象の更新は、収集動作を止めることなく、収集動作と並行して実行されてもよい。
S65でCPU41a(データ処理部73)は識別情報に基づいて収集データが更新されたかどうかを判別する。CPU41a(データ処理部73)は収集データの更新についての判別結果が未更新であった場合、S66に進む。S66でCPU41a(データ処理部73)は監視対象に関する収集時間情報と設定変更前の判定閾値とに基づいて監視対象の状態を判定する。CPU41a(データ処理部73)は図19のS42と同様に監視対象である収集データに基づいて開始信号の条件を満たすタイミングから終了信号の条件を満たすタイミングまでの時間情報を決定し、S43と同様に決定した時間情報と設定変更前の判定閾値とに基づいて監視対象の状態を判定する。S67でCPU41a(生成部74)は決定された時間情報である測定値と、判定閾値と、判定された監視対象の状態とを図18に示す状態監視用のダッシュボードに表示するための表示データを作成する。CPU41a(Webサーバ70)は状態監視用のダッシュボード171を表示するための表示データをPC2bに提供する。CPU41a(生成部74)はダッシュボード171のベースとなる画面データと測定値や状態情報などの更新されるデータとを個別に管理してもよい。この場合、CPU41a(生成部74)は、S67でCPU41a(生成部74)は決定された時間情報である測定値と、判定閾値と、判定した監視対象の状態を含む表示データを生成する。更新要求に応じてCPU41a(Webサーバ70)は測定値と、判定閾値と、判定した監視対象の状態を含む状態監視用のダッシュボード171を表示するための表示データをPC2bに提供する。CPU41a(Webサーバ70)は表示データとして更新のあった表示対象データを選択的にPC2bに提供する。S65に再び戻り、CPU41a(データ処理部73)は識別情報に基づいて収集データの更新を判別する。
CPU41a(データ処理部73)は収集データの更新についての判別結果が更新であった場合、S68に進む。S68でCPU41a(データ処理部73)は監視対象に関する収集時間情報と設定変更後の判定閾値とに基づいて監視対象の状態を決定する。CPU41a(データ処理部73)は図19のS42と同様に監視対象である収集データに基づいて開始信号の条件を満たすタイミングから終了信号の条件を満たすタイミングまでの時間情報を決定し、S43と同様に決定された時間情報である測定値と設定変更後の判定閾値に基づいて監視対象の状態を判定する。S69でCPU41a(生成部74)は決定された時間情報である測定値と、判定閾値と、判定された監視対象の状態とを図18に示す状態監視用のダッシュボードに表示するための表示データを作成する。CPU41a(Webサーバ70)は状態監視用のダッシュボード171を表示するための表示データをPC2bに提供する。CPU41a(生成部74)は画面データと表示対象データとを個別に管理してもよい。この場合、CPU41a(生成部74)は、S67でCPU41a(生成部74)は決定された時間情報である測定値と、判定閾値と、判定された監視対象の状態を含む表示データを生成する。更新要求に応じてCPU41a(Webサーバ70)は測定値と、判定閾値と、判定した監視対象の状態を含む状態監視用のダッシュボード171を表示するための表示データをPC2bに提供する。CPU41a(Webサーバ70)は表示データとして更新のあった表示対象データを選択的にPC2bに提供する。
図22は第二バッファ37b(第三バッファ37cであってもよい)における監視対象の動的変更時の収集データおよびデバイス部34aにおけるデバイス値を示す図である。CPU41a(設定部71)は受け付けられた設定変更に基づいて、収集部52cに対して収集対象の変更を要求する。収集部52cは、この要求に基づき収集対象を更新するタイミングを決定する。収集部52cは、図22においてスキャン番号100からスキャン番号101までの期間において収集対象を更新する。アプリケーション設定データ(処理設定61)には監視対象が指定されている。設定変更前の監視対象はMR001とMR002である。設定変更後の監視対象はMR001と、MR003と、MR004である。アプリケーション設定データ(処理設定61)に基づいてアプリケーション設定データ(収集設定39)の収集対象が定義される。設定変更前において、収集対象1はMR001であり、収集対象2はMR002であり、収集対象3は未設定である。設定変更後において、収集対象1はMR001のままであり、収集対象2はMR002からMR003に変更され、収集対象3には新たにMR004が追加されている。CPU41a(収集部52c)は、データレコード91毎に、第二バッファ37bに、スキャン番号、タイマー値、識別フラグ、および、各収集対象に対応する収集データを紐づけて記録する。CPU41a(収集部52c)は、決定された更新タイミングに基づいて収集データを収集するとともに更新タイミングに応じた識別情報を識別フラグとして付与する。収集フラグは、たとえば、更新毎にカウントされるリングカウンタのカウント値が適用されてもよい。
CPU41a(データ処理部73)は識別フラグに基づいて第二バッファ37bに記録された収集データが、更新前のアプリケーション設定データ(処理設定61)に基づいて収集されたものなのか、更新後のアプリケーション設定データ(処理設定61)に基づいて収集されたものなのかを判別する。監視対象である収集データには、収集対象が更新されたときに識別フラグがセットされる。したがって、データ処理部73は、識別フラグに基づいて更新前の収集データと更新後の収集データとを区別することができる。データ処理部73は、識別フラグに基づいて監視対象である収集データに対して適用されるアプリケーション設定データ(処理設定61)を動的に変更する。これにより、PLC1は収集動作を止めることなく、収集対象の更新を動的に実行することができる。
<まとめ>
[観点1]
図5が示すように、CPU31や実行エンジン51aは第一ユーザプログラムを繰り返し実行する第一実行エンジンの一例である。デバイス部34aは第一ユーザプログラムにしたがって第一実行エンジンによりアクセスされるデータを記憶するまたは変数である複数の保持手段の一例である。CPU41aは、第一ユーザプログラムのスキャン周期とは非同期で第二ユーザプログラムを実行する第二実行エンジンの一例である。拡張バス90は、第一実行エンジンと第二実行エンジンとを接続するバスの一例である。
収集部52aは、第一ユーザプログラムのスキャン周期ごとに所定の収集設定にしたがって複数の保持手段のうち収集対象の保持手段に記憶されているデータを収集する収集手段として機能する。第一バッファ37aは収集手段によりスキャン周期ごとに収集された時系列のデータを蓄積する第一バッファの一例である。転送部53aは第一バッファに記憶された時系列のデータを、拡張バスを介して第二実行エンジンに転送する転送手段の一例である。
データ処理部73は、転送手段により転送されてきた時系列のデータを所定の処理設定にしたがってデータ処理する処理手段の一例である。生成部74は、データ処理の処理結果をダッシュボードに表示するための表示データを生成する生成手段の一例である。Webサーバ70は表示データを外部のコンピュータ(例:PC2b)に提供する提供手段として機能する。このように、第一バッファ37aを設けることにより、PLC1において効率よく監視対象のデータを収集および転送することが可能となる。
[観点2]
監視部54aは、拡張バス90のトラフィックを監視する監視手段の一例である。転送部53aは、拡張バス90のトラフィックが相対的に少ないタイミングにおいてデータを第二実行エンジンへ転送し、拡張バス90のトラフィックが相対的に多いタイミングにおいて時系列のデータを第二実行エンジンへ転送することを抑制してもよい。これにより、拡張バス90を通じた入出力リフレッシュ、UREAD命令またはUWRIT命令の実行が邪魔されないようになり、スキャン周期の伸びが抑制されよう。
なお、監視部54aは、拡張バス90において転送されようとしている情報の優先度を監視する監視手段として機能してもよい。この場合、転送部53aは、時系列のデータの優先度よりも高い優先度の情報がないタイミングにおいて時系列のデータを第二実行エンジンへ転送する。転送部53aは、時系列のデータの優先度よりも高い優先度の情報があるタイミングにおいて時系列のデータを第二実行エンジンへ転送することを抑制する。なお、リフレッシュにより転送される情報や命令語によるバス通信要求は、高優先度を割り当てられている。それに対して、時系列データには低優先度が割り当てられている。
[観点3]
転送部53aは、第一実行エンジンが拡張バス90を利用して入出力リフレッシュを実行している期間を回避して時系列のデータの転送を実行してもよい。これにより、拡張バス90を通じた入出力リフレッシュが邪魔されないようになり、スキャン周期の伸びが抑制されよう。
[観点4]
圧縮エンジン55aは、第一バッファ37aに記憶された時系列のデータをデータ圧縮する圧縮手段の一例である。この圧縮処理は、第一実行エンジンが第一ユーザプログラムを実行するのと並行して、実行されてもよい。転送部53aは、圧縮手段により圧縮された時系列のデータを第二実行エンジンへ転送してもよい。これにより、効率よくデータ転送が実行されるようになろう。とりわけ、拡張バス90において、入出力リフレッシュやUREAD命令などの他の転送処理と、データ活用のための転送処理とが衝突する確率が低下しよう。
[観点5]
第一バッファ37aに記憶された時系列のデータは、それぞれ異なるスキャン周期ごとに取得された複数のデータレコードを有していてもよい。図11が示すように、圧縮エンジン55aは、複数のデータレコードのうち相前後する二つのデータレコードが一致する場合、当該二つのデータレコードのうちの一方を破棄することで、複数のデータレコードのうちデータの変化点となるデータレコードを残してもよい。時間的に連続した3以上のデータレコードが相互に共通している場合、3以上のデータレコードのうちの一つのデータレコードだけが転送対象として維持される。
[観点6]
第二バッファ37bは、転送手段により転送されてきた時系列のデータを記憶する第二バッファの一例である。第二実行エンジンであるCPU41aは、第二バッファ37bに記憶されている時系列のデータを参照するように構成されている。このように第二バッファ37bを用意することで、第二バッファ37bへのデータの格納と、データ処理部73におけるデータ処理とを非同期に実行することが可能となる。
[観点7]
転送部53a、53bは、拡張ユニット4bの保持手段(例:デバイス部34b)からデータを取得して第二実行エンジンへ転送するように構成されていてもよい。第三バッファ37cは、拡張ユニット4bの保持手段から取得されたデータを蓄積する第三バッファの一例である。第二実行エンジンは、第三バッファ37cからデータを読み出してデータ処理を実行するように構成されていてもよい。これにより、第三バッファ37cへのデータの格納と、データ処理部73におけるデータ処理とを非同期に実行することが可能となる。なお、転送部53bは転送部53aを経由してデータを第三バッファ37cへ書き込んでもよい。転送部53aがマスターとして機能し、転送部53bがスレーブとして機能する場合、このような転送処理が実現されてもよい。
[観点8]
拡張ユニット4bの第四バッファ37dは、拡張ユニット4bの保持手段から、スキャン周期と異なる所定の制御周期にしたがって取得されたデータを記憶する第四バッファとして機能する。転送部53a、53bは、第四バッファ37dから拡張ユニット4bの保持手段のデータを取得するように構成されていてもよい。これにより、拡張ユニット4bにおいても実行エンジン51bの動作とデータの転送処理とを非同期に実行することが可能となる。
[観点9]
図11に関して説明されたように、時系列のデータには、それぞれ異なるタイミングで取得された第一データレコードと第二データレコードとが含まれていてもよい。第二実行エンジン(例:CPU41a)は、第一データレコードに含まれている注目ビットが変化したタイミングと、第二データレコードに含まれている注目ビットが変化したタイミングとの間の時間間隔を演算してもよい。
[観点10]
図12が示すように、時系列のデータには、それぞれ異なるタイミングで取得された第一波形データと第二波形データとが含まれていてもよい。図12が示すように、第二実行エンジン(例:CPU41a)は、第一波形データの位相と第二波形データとの位相を基準位相に整合させてもよい。生成部74は、基準位相に整合された第一波形データと第二波形データとをダッシュボードに表示する表示データを生成してもよい。これによるユーザは視覚的に波形や応答特性の違いを観察できるようになろう。
[観点11]
データ処理部73は、第一のデータ活用アプリケーションと第二のデータ活用アプリケーションとを実行するように構成されていてもよい。収集部52cは、第二バッファ37bに格納された時系列のデータのうち第一のデータ活用アプリケーションのためのデータを第一サブバッファ38aに分配し、第二バッファ37bに格納された時系列のデータのうち第二のデータ活用アプリケーションのためのデータを第二サブバッファ38bに分配する分配手段として機能してもよい。第一のデータ活用アプリケーションのためのデータの読み出しタイミングと、第二のデータ活用アプリケーションのためのデータの読み出しタイミングとが異なることがある。このような場合には、アプリケーションごとにサブバッファを用意することで、複数のアプリケーションが自己に適したタイミングでデータを取得できるようになり、各アプリケーションの動作効率が向上しよう。
[観点12、13]
転送部53aは、時系列のデータを小分けして転送するように構成されていてもよい。時系列のデータは一般に大容量のデータとなりやすい。大容量の時系列データを転送している間に、他の高優先度の情報の転送要求が発生すると、他の高優先度の情報の転送要求がまたされてしまう。そこで、時系列データを小分けすることで、他の高優先度の情報の転送要求が、小分けされた時系列データの転送の合間に、実行可能となる。よって、他の高優先度の情報の転送要求の待ち時間が削減されよう。
転送部53aは、第一実行エンジンが第一ユーザプログラムを実行しているのと並行して時系列のデータを転送するように構成されていてもよい。これにより、さらに効率よく、時系列のデータが転送されるようになろう。
発明は上記の実施形態に制限されるものではなく、発明の要旨の範囲内で、種々の変形・変更が可能である。

Claims (14)

  1. 第一ユーザプログラムを繰り返し実行する第一実行エンジンと、
    前記第一ユーザプログラムにしたがって前記第一実行エンジンによりアクセスされるデータを記憶するデバイスまたは変数である複数の保持手段と、
    前記第一ユーザプログラムのスキャン周期とは非同期で第二ユーザプログラムを実行する第二実行エンジンと、
    前記第一実行エンジンと前記第二実行エンジンとを接続するバスと、を有するプログラマブルロジックコントローラであって、
    前記第一ユーザプログラムのスキャン周期ごとに所定の収集設定にしたがって前記複数の保持手段のうち収集対象の保持手段に記憶されているデータを収集する収集手段と、
    前記収集手段により前記スキャン周期ごとに収集された時系列のデータを蓄積する第一バッファと、
    前記第一バッファに記憶された前記時系列のデータを、前記バスを介して前記第二実行エンジンに転送する転送手段と、
    を有し、
    前記第二実行エンジンは、
    前記転送手段により転送されてきた前記時系列のデータを所定の処理設定にしたがってデータ処理する処理手段と、
    前記データ処理の処理結果をダッシュボードに表示するための表示データを生成する生成手段と、
    前記表示データを外部のコンピュータに提供する提供手段と
    を有し、
    前記プログラマブルロジックコントローラは、前記バスにおいて転送されようとしている情報の優先度を監視する監視手段をさらに有し、
    前記転送手段は、前記時系列のデータの優先度よりも高い優先度の情報がないタイミングにおいて前記時系列のデータを前記第二実行エンジンへ転送し、前記時系列のデータの優先度よりも高い優先度の情報があるタイミングにおいて前記時系列のデータを前記第二実行エンジンへ転送することを抑制することを特徴とするプログラマブルロジックコントローラ。
  2. 第一ユーザプログラムを繰り返し実行する第一実行エンジンと、
    前記第一ユーザプログラムにしたがって前記第一実行エンジンによりアクセスされるデータを記憶するデバイスまたは変数である複数の保持手段と、
    前記第一ユーザプログラムのスキャン周期とは非同期で第二ユーザプログラムを実行する第二実行エンジンと、
    前記第一実行エンジンと前記第二実行エンジンとを接続するバスと、を有するプログラマブルロジックコントローラであって、
    前記第一ユーザプログラムのスキャン周期ごとに所定の収集設定にしたがって前記複数の保持手段のうち収集対象の保持手段に記憶されているデータを収集する収集手段と、
    前記収集手段により前記スキャン周期ごとに収集された時系列のデータを蓄積する第一バッファと、
    前記第一バッファに記憶された前記時系列のデータを、前記バスを介して前記第二実行エンジンに転送する転送手段と、
    を有し、
    前記第二実行エンジンは、
    前記転送手段により転送されてきた前記時系列のデータを所定の処理設定にしたがってデータ処理する処理手段と、
    前記データ処理の処理結果をダッシュボードに表示するための表示データを生成する生成手段と、
    前記表示データを外部のコンピュータに提供する提供手段と
    を有し、
    前記プログラマブルロジックコントローラは、前記第一実行エンジンが前記第一ユーザプログラムを実行するのと並行して前記第一バッファに記憶された前記時系列のデータをデータ圧縮する圧縮手段をさらに有し、
    前記転送手段は、前記圧縮手段により圧縮された時系列のデータを前記第二実行エンジンへ転送することを特徴とするプログラマブルロジックコントローラ。
  3. 前記転送手段は、前記第一実行エンジンが前記バスを利用して入出力リフレッシュを実行している期間を回避して前記時系列のデータの転送を実行することを特徴とする請求項に記載のプログラマブルロジックコントローラ。
  4. 前記第一実行エンジンが前記第一ユーザプログラムを実行するのと並行して前記第一バッファに記憶された前記時系列のデータをデータ圧縮する圧縮手段をさらに有し、
    前記転送手段は、前記圧縮手段により圧縮された時系列のデータを前記第二実行エンジンへ転送することを特徴とする請求項1に記載のプログラマブルロジックコントローラ。
  5. 前記第一バッファに記憶された前記時系列のデータは、スキャン周期ごとに取得された複数のデータレコードを有し、
    前記圧縮手段は、前記複数のデータレコードのうち相前後する二つのデータレコードが一致する場合、当該二つのデータレコードのうちの一方を破棄することで、前記複数のデータレコードのうちデータの変化点となるデータレコードを残すことを特徴とする請求項4に記載のプログラマブルロジックコントローラ。
  6. 前記転送手段により転送されてきた前記時系列のデータを記憶する第二バッファをさら
    に有し、
    前記第二実行エンジンは、前記第二バッファに記憶されている前記時系列のデータを参照するように構成されていることを特徴とする請求項1ないし5のいずれか一項に記載のプログラマブルロジックコントローラ。
  7. 前記転送手段は、拡張ユニットの保持手段からデータを取得して前記第二実行エンジンへ転送するように構成されており、
    前記プログラマブルロジックコントローラは、さらに、
    前記拡張ユニットの保持手段から取得されたデータを蓄積する第三バッファを有しており、
    前記第二実行エンジンは、前記第三バッファから前記データを読み出してデータ処理を実行するように構成されていることを特徴とする請求項1ないし6のいずれか一項に記載のプログラマブルロジックコントローラ。
  8. 前記拡張ユニットは、
    前記拡張ユニットの保持手段から、前記スキャン周期と異なる所定の制御周期にしたがって取得されたデータを記憶する第四バッファを有しており、
    前記転送手段は、前記第四バッファから前記拡張ユニットの保持手段のデータを取得するように構成されていることを特徴とする請求項7に記載のプログラマブルロジックコントローラ。
  9. 前記時系列のデータには、それぞれ異なるタイミングで取得された第一データレコードと第二データレコードとが含まれており、
    前記第二実行エンジンは、前記第一データレコードに含まれている注目ビットが変化したタイミングと、前記第二データレコードに含まれている前記注目ビットが変化したタイミングとの間の時間間隔を演算することをと特徴とする請求項1ないし8のいずれか一項に記載のプログラマブルロジックコントローラ。
  10. 前記時系列のデータには、それぞれ異なるタイミングで取得された第一波形データと第二波形データとが含まれており、
    前記第二実行エンジンは、前記第一波形データの位相と前記第二波形データとの位相を基準位相に整合させ、
    前記生成手段は、前記基準位相に整合された前記第一波形データと前記第二波形データとを前記ダッシュボードに表示する表示データを生成することをと特徴とする請求項1ないし8のいずれか一項に記載のプログラマブルロジックコントローラ。
  11. 前記処理手段は、第一のデータ活用アプリケーションと第二のデータ活用アプリケーションとを実行するように構成されており、
    前記プログラマブルロジックコントローラは、
    第一サブバッファと、
    第二サブバッファと、
    前記第二バッファに格納された時系列のデータのうち前記第一のデータ活用アプリケーションのためのデータを前記第一サブバッファに分配し、前記第二バッファに格納された時系列のデータのうち前記第二のデータ活用アプリケーションのためのデータを前記第二サブバッファに分配する分配手段と
    をさらに有することを特徴とする請求項6に記載のプログラマブルロジックコントローラ。
  12. 前記転送手段は、前記時系列のデータを小分けして転送するように構成されていることを特徴とする請求項1ないし11のいずれか一項に記載のプログラマブルロジックコント
    ローラ。
  13. 前記転送手段は、前記第一実行エンジンが前記第一ユーザプログラムを実行しているのと並行して前記時系列のデータを転送するように構成されていることを特徴とする請求項1ないし12のいずれか一項に記載のプログラマブルロジックコントローラ。
  14. 基本ユニットと、当該基本ユニットに接続された拡張ユニットとを有するプログラマブルロジックコントローラであって、
    前記基本ユニットは、
    ユーザプログラムを繰り返し実行する実行エンジンと、
    前記ユーザプログラムにしたがって前記実行エンジンによりアクセスされるデータを記憶するデバイスまたは変数である複数の保持手段と、
    前記ユーザプログラムのスキャン周期ごとに所定の収集設定にしたがって前記複数の保持手段のうち収集対象の保持手段に記憶されているデータを収集する収集手段と、
    前記収集手段により前記スキャン周期ごとに収集された時系列のデータを蓄積する第一バッファと、
    前記第一バッファに記憶された前記時系列のデータを、バスを介して接続された拡張ユニットであってデータ活用ユニットに転送する転送手段と、
    を有し、
    前記データ活用ユニットは、
    前記転送手段により転送されてきた前記時系列のデータを所定の処理設定にしたがってデータ処理する処理手段と、
    前記データ処理の処理結果をダッシュボードに表示するための表示データを生成する生成手段と、
    前記表示データを外部のコンピュータに提供する提供手段と、
    を有し、
    前記プログラマブルロジックコントローラは、前記バスにおいて転送されようとしている情報の優先度を監視する監視手段をさらに有し、
    前記転送手段は、前記時系列のデータの優先度よりも高い優先度の情報がないタイミングにおいて前記時系列のデータを前記データ活用ユニットへ転送し、前記時系列のデータの優先度よりも高い優先度の情報があるタイミングにおいて前記時系列のデータを前記データ活用ユニットへ転送することを抑制することを特徴とするプログラマブルロジックコントローラ。
JP2020111878A 2019-10-03 2020-06-29 プログラマブルロジックコントローラ Active JP7461811B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/012,112 US11644808B2 (en) 2019-10-03 2020-09-04 Programable logic controller
CN202011051992.2A CN112612239A (zh) 2019-10-03 2020-09-29 可编程逻辑控制器

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019183256 2019-10-03
JP2019183256 2019-10-03

Publications (2)

Publication Number Publication Date
JP2021060967A JP2021060967A (ja) 2021-04-15
JP7461811B2 true JP7461811B2 (ja) 2024-04-04

Family

ID=75380259

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020111878A Active JP7461811B2 (ja) 2019-10-03 2020-06-29 プログラマブルロジックコントローラ

Country Status (1)

Country Link
JP (1) JP7461811B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002189508A (ja) 2000-12-20 2002-07-05 Digital Electronics Corp 制御装置、および、そのプログラムが記録された記録媒体
JP2015219616A (ja) 2014-05-15 2015-12-07 富士電機株式会社 監視制御システム
JP2017010556A (ja) 2015-06-22 2017-01-12 エルエス産電株式会社Lsis Co., Ltd. Plcシステム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002189508A (ja) 2000-12-20 2002-07-05 Digital Electronics Corp 制御装置、および、そのプログラムが記録された記録媒体
JP2015219616A (ja) 2014-05-15 2015-12-07 富士電機株式会社 監視制御システム
JP2017010556A (ja) 2015-06-22 2017-01-12 エルエス産電株式会社Lsis Co., Ltd. Plcシステム

Also Published As

Publication number Publication date
JP2021060967A (ja) 2021-04-15

Similar Documents

Publication Publication Date Title
EP3382480B1 (en) Controller
US11644808B2 (en) Programable logic controller
US11301294B2 (en) Control device, control method, and control program
JP7450471B2 (ja) プログラマブルロジックコントローラおよびplcシステム
JP2018097663A (ja) 制御システム、制御プログラムおよび制御方法
JP6724847B2 (ja) 制御装置、制御プログラム、制御システム、および制御方法
JP2019109580A (ja) 産業用制御システムとその支援装置、制御支援方法およびプログラム
KR20210009423A (ko) 모션 제어 프로그램, 모션 제어 방법 및 모션 제어 장치
JP7461811B2 (ja) プログラマブルロジックコントローラ
CN112654939B (zh) 控制***以及控制装置
EP3506034B1 (en) Control system
JP7380390B2 (ja) 制御装置、プログラムおよび制御方法
JP7412119B2 (ja) データ活用システム
CN113867271A (zh) 生产***、上级控制装置、控制装置、通信方法以及存储介质
JP7450470B2 (ja) 設定装置およびplcシステム
US20190303456A1 (en) Data synchronization and methods of use thereof
JP7406333B2 (ja) データ活用機器
JP6933256B2 (ja) 産業プラント用データ再生装置
CN108702308A (zh) 用于智能事件分页的***和方法
WO2023276351A1 (ja) 制御装置、システムプログラムおよび方法
WO2023248547A1 (ja) 制御システム、中継装置および通信方法
JP2021125218A (ja) プログラマブルロジックコントローラ、及び分析装置
JP2024073818A (ja) 制御システムおよび情報処理方法
JP2020177713A (ja) プログラマブルロジックコントローラ
JP2021026587A (ja) 制御装置

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20210113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230303

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240207

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240308

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240325

R150 Certificate of patent or registration of utility model

Ref document number: 7461811

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150