(57)【要約】【課題】時系列データから個別データを抽出することをユーザにとって容易にすること。【解決手段】プログラム作成支援装置はユーザプログラムやそれに付随する設定情報を解析することで個別データの抽出期間を決定する。たとえば、ユーザプログラムにおける繰り返し命令の実行タイミングまたは実行周期に基づき抽出期間が決定されうる。収集部８１は少なくとも一つのデバイスに記憶されているデバイスデータを繰り返し収集することで時系列データを形成する。抽出部８４は各抽出期間における個別データを時系列データから抽出する。付与部８５は抽出部８４により抽出された各個別データに対して各個別データを識別するための識別情報を付与する。【選択図】図１５
2019016326.tif 000002
【特許請求の範囲】
【請求項１】
ユーザプログラムを繰り返し実行するプログラマブル・ロジック・コントローラであって、
前記ユーザプログラムを記憶するプログラム記憶部と、
前記ユーザプログラムにより指定可能であり、１ビットの情報を記憶するビットデバイスおよび１ワード又は数ワードの情報を記憶するワードデバイスを含む複数のデバイスを保持するデバイス記憶部と、
前記プログラム記憶部に記憶されているユーザプログラムを繰り返し実行し、当該ユーザプログラムにしたがって前記複数のデバイスに記憶されている情報を演算処理するプログラム実行部と、
少なくとも一つのデバイスに記憶されているデバイスデータを繰り返し収集することで、周期性を有する時系列デバイスデータを形成するデータ収集部と、
前記時系列デバイスデータから周期ごとの個別データを抽出するための抽出期間を決定する決定部と、
前記決定部により決定された各抽出期間における個別データを前記時系列デバイスデータから抽出する抽出部と、
前記抽出部により抽出された各個別データに対して各個別データを識別するための識別情報を付与する付与部と
を有し、
前記決定部は、前記ユーザプログラムにおける繰り返し命令の実行タイミングまたは実行周期に基づき前記抽出期間を決定することを特徴とするプログラマブル・ロジック・コントローラ。
【請求項２】
前記プログラム実行部におけるユーザプログラムの実行処理と前記データ収集部における前記データ収集部の収集処理とを同期させる同期部をさらに有することを特徴とする請求項１に記載のプログラマブル・ロジック・コントローラ。
【請求項３】
前記決定部は、制御対象を特定の位置に移動させるためのポイントパラメータに基づき前記抽出期間を決定することを特徴とする請求項１または２に記載のプログラマブル・ロジック・コントローラ。
【請求項４】
前記ポイントパラメータの設定情報は、複数のポイント番号と、各ポイント番号ごとの前記制御対象の移動量と、各ポイント番号の次のポイント番号とを有し、
前記決定部は、各ポイント番号の次のポイント番号に基づき前記制御対象の移動命令のループを検知し、当該ループに相当する期間を前記抽出期間に決定することを特徴とする請求項３に記載のプログラマブル・ロジック・コントローラ。
【請求項５】
前記ユーザプログラムは、ラダープログラムであり、
前記決定部は、前記ラダープログラムに記述された命令である特定のファンクションブロックの実行周期を求め、当該実行周期を前記抽出期間に決定することを特徴とする請求項１または２に記載のプログラマブル・ロジック・コントローラ。
【請求項６】
前記決定部は、前記特定のファンクションブロックの実行トリガである第一信号の立ち上がり又は立ち下がりから前記特定のファンクションブロックの実行完了を示す第二信号の立ち上がり又は立ち下がりまでの期間を前記抽出期間に決定することを特徴とする請求項５に記載のプログラマブル・ロジック・コントローラ。
【請求項７】
前記プログラマブル・ロジック・コントローラには高速カウンタユニットが接続されており、
前記決定部は、前記ユーザプログラムにおいて前記高速カウンタユニットの動作モードが周波数カウントモードに設定されているかどうかを解析し、前記高速カウンタユニットの動作モードが周波数カウントモードに設定されているときに、前記高速カウンタユニットに入力されるパルス信号の間隔に基づき前記抽出期間を決定することを特徴とする請求項１または２に記載のプログラマブル・ロジック・コントローラ。
【請求項８】
前記抽出期間の開始位置と終了位置は、前記個別データの抽出の基準位置を示す情報と、前記抽出期間の時間的な長さを示す情報によって定義されていることを特徴とする請求項１ないし７のいずれか一項に記載のプログラマブル・ロジック・コントローラ。
【請求項９】
前記プログラマブル・ロジック・コントローラは、ユーザによる前記ユーザプログラムの作成を支援するプログラム作成支援装置に接続され、
前記決定部は、前記プログラム作成支援装置に設けられていることを特徴とする請求項１ないし８のいずれか一項に記載のプログラマブル・ロジック・コントローラ。
【請求項１０】
前記プログラム作成支援装置は、前記決定部により決定された前記抽出期間を示す情報を前記ユーザプログラムとともにプログラム記憶部に書き込み、
前記抽出部は、前記プログラム記憶部に記憶されている前記抽出期間を示す情報に基づき前記時系列デバイスデータから前記個別データを抽出することを特徴とする請求項９に記載のプログラマブル・ロジック・コントローラ。
【請求項１１】
ユーザプログラムを繰り返し実行するプログラマブル・ロジック・コントローラに接続されたデータ収集装置であって、
前記プログラマブル・ロジック・コントローラは、
ユーザプログラムを記憶するプログラム記憶部と、
前記ユーザプログラムにより指定可能であり、１ビットの情報を記憶するビットデバイスおよび１ワード又は数ワードの情報を記憶するワードデバイスを含む複数のデバイスを保持するデバイス記憶部と、
前記プログラム記憶部に記憶されているユーザプログラムを繰り返し実行し、当該ユーザプログラムにしたがって前記複数のデバイスに記憶されている情報を演算処理するプログラム実行部と、を有し、
前記データ収集装置は、
少なくとも一つのデバイスに記憶されているデバイスデータを繰り返し収集することで、周期性を有する時系列デバイスデータを形成するデータ収集部と、
前記時系列デバイスデータから周期ごとの個別データを抽出するための抽出期間に応じて前記時系列デバイスデータから前記個別データを抽出する抽出部と、
前記抽出部により抽出された各個別データに対して各個別データを識別するための識別情報を付与する付与部と
を有し、
前記プログラマブル・ロジック・コントローラは、
前記ユーザプログラムにおける繰り返し命令の実行タイミングまたは実行周期に基づき前記抽出期間を決定する決定部を有し、
前記抽出部は、前記決定部により決定された抽出期間に応じて前記時系列デバイスデータから前記個別データを抽出することを特徴とするデータ収集装置。
【請求項１２】
前記データ収集装置は、クラウドを構成するサーバであることを特徴とする請求項１１に記載のデータ収集装置。
【請求項１３】
プログラマブル・ロジック・コントローラにより繰り返し実行されるユーザプログラムの、ユーザによる作成を支援するプログラム作成支援装置であって、
前記ユーザプログラムの入力を補助するユーザインタフェースを表示する表示部と、
前記ユーザインタフェースを通じて前記ユーザプログラムの入力を受け付ける入力部と、
前記ユーザプログラムを解析し、前記ユーザプログラムにおける繰り返し命令の実行タイミングまたは実行周期に基づき抽出期間を決定する決定部と、
前記ユーザプログラムと前記抽出期間を示す情報とを前記プログラマブル・ロジック・コントローラに転送する転送部と
を有し、
前記抽出期間を示す情報は、前記プログラマブル・ロジック・コントローラにおける少なくとも一つのデバイスに記憶されているデバイスデータを繰り返し収集することで形成された時系列デバイスデータから、周期ごとの個別データを抽出するための抽出期間を示していることを特徴とするプログラム作成支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブル・ロジック・コントローラおよびデータ収集装置に関する。
【背景技術】
【０００２】
プログラマブル・ロジック・コントローラ（以下、ＰＬＣと称す）は、ＦＡ（Factory Automation）制御システムにおいて広く使用されているシーケンス制御装置であり、ラダープログラムなどのユーザプログラムにしたがって動作する。操作者（オペレータ）は、リミットスイッチ、センサ、温度計などの入力機器や、電磁開閉器、ソレノイド、モータ、アクチュエータ、シリンダ、リレー、位置決めシステムなどの出力機器をＰＬＣに接続し、ラダープログラムによってこれらの被制御機器を制御する。オペレータは、パーソナルコンピュータ（以下、ＰＣと称す）などのプログラム作成支援装置上でラダープログラムを作成し、ＰＣとＰＬＣを接続し、ラダープログラムをＰＬＣの記憶部に記憶させる。ＰＬＣの記憶部にはデバイス情報等の各種データも記憶される。デバイス情報とは、入力機器からの入力状態、出力機器への出力状態およびラダープログラム上で設定される内部リレー（補助リレー）、タイマー、カウンタ、データメモリ等の状態を示す情報である。デバイスとは、デバイス情報を格納するために設けられたメモリ上の領域を指す名称である。ＰＬＣにプログラム作成支援装置を接続することで、ＰＬＣが保持しているデバイス情報（デバイスの値）をプログラム作成支援装置に表示させ、視認することもできる。ＰＬＣは一般に基本ユニット（ＣＰＵユニット）と拡張ユニットにより構成される。ＣＰＵユニットと拡張ユニットは予め割り付けられたデバイスを通じてスキャン周期ごとに実行されるリフレッシュによってデバイス値を相互に交換する。
【０００３】
ところで、ワーク（部品）の生産工程において安定してワークを生産するためには、生産工程の予知保全が必要となる。これは生産工程において使用される製造機械にはメンテナンスが必要な部分が存在するからである。特許文献１によれば、産業機械が所定のテンプレートにしたがってデータをクラウドに転送することで、クラウドがデータを分析することが提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第９１２８４７２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１によれば、予め用意されたテンプレートが必要となる。つまり、ユーザのニーズに応じたテンプレートがなければ、ユーザは自らテンプレートを作成しなければならず、面倒であった。また、上述した予知保全においては時系列データの中から個々の部品に対応した個別データの検討が必要となる。しかし、デバイス値の時系列データは膨大な量となるため、その中からユーザが必要な個別データを抽出することは困難であった。
【０００６】
そこで、本発明は、時系列データから個別データを抽出することをユーザにとって容易にすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、たとえば、
ユーザプログラムを繰り返し実行するプログラマブル・ロジック・コントローラであって、
前記ユーザプログラムを記憶するプログラム記憶部と、
前記ユーザプログラムにより指定可能であり、１ビットの情報を記憶するビットデバイスおよび１ワード又は数ワードの情報を記憶するワードデバイスを含む複数のデバイスを保持するデバイス記憶部と、
前記プログラム記憶部に記憶されているユーザプログラムを繰り返し実行し、当該ユーザプログラムにしたがって前記複数のデバイスに記憶されている情報を演算処理するプログラム実行部と、
少なくとも一つのデバイスに記憶されているデバイスデータを繰り返し収集することで、周期性を有する時系列デバイスデータを形成するデータ収集部と、
前記時系列デバイスデータから周期ごとの個別データを抽出するための抽出期間を決定する決定部と、
前記決定部により決定された各抽出期間における個別データを前記時系列デバイスデータから抽出する抽出部と、
前記抽出部により抽出された各個別データに対して各個別データを識別するための識別情報を付与する付与部と
を有し、
前記決定部は、前記ユーザプログラムにおける繰り返し命令の実行タイミングまたは実行周期に基づき前記抽出期間を決定することを特徴とするプログラマブル・ロジック・コントローラを提供する。
【発明の効果】
【０００８】
本発明によれば、時系列データから個別データを抽出することがユーザにとって容易になる。
【図面の簡単な説明】
【０００９】
【図１】ＰＬＣシステムを示す図
【図２】ラダープログラムを説明する図
【図３】プログラム作成支援装置を説明する図
【図４】ＰＬＣを説明する図
【図５】ラダープログラムのスキャンを説明する図
【図６】ＩＰＣを説明する図
【図７】クラウドを説明する図
【図８】時系列データと抽出期間を説明する図
【図９】抽出期間の決定方法を説明する図
【図１０】抽出期間の決定方法を説明する図
【図１１】抽出期間の決定方法を説明する図
【図１２】抽出期間の決定方法を説明する図
【図１３】抽出期間の決定方法を説明する図
【図１４】抽出期間の決定に関連する機能を説明する図
【図１５】データ収集と抽出に関連する機能を説明する図
【図１６】データ収集と抽出に関連する機能を説明する図
【図１７】データ収集と抽出に関連する機能を説明する図
【図１８】抽出期間の決定処理を説明するフローチャート
【図１９】収集処理を説明するフローチャート
【図２０】時系列データを説明する図
【図２１】抽出処理を説明するフローチャート
【図２２】個別データを説明する図
【図２３】統合された収集処理および抽出処理を説明するフローチャート
【図２４】個別データを表示するＵＩを説明する図
【図２５】個別データを表示するＵＩを説明する図
【図２６】個別データを表示するＵＩを説明する図
【図２７】個別データの送受信に関するシーケンス図
【図２８】個別データの送受信に関するシーケンス図
【図２９】個別データの送受信に関するシーケンス図
【図３０】個別データの送受信に関するシーケンス図
【図３１】個別データの表示例を示す図
【発明を実施するための形態】
【００１０】
＜システム構成＞
はじめにプログラマブル・ロジック・コントローラ（ＰＬＣ、単にプログラマブルコントローラと呼ばれてもよい）を当業者にとってよりよく理解できるようにするために、一般的なＰＬＣの構成とその動作について説明する。
【００１１】
図１は、本発明の実施の形態によるプログラマブル・ロジック・コントローラシステムの一構成例を示す概念図である。図１が示すように、このシステムは、ラダープログラムなどのユーザプログラムの編集を行うためのプログラム作成支援装置２と、工場等に設置される各種制御装置を統括的に制御するためのＰＬＣ（プログラマブル・ロジック・コントローラ）１とを備えている。ユーザプログラムは、ラダー言語やフローチャート形式のモーションプログラムなどのグラフィカルプログラミング言語を用いて作成されてもよいし、Ｃ言語などの高級プログラミング言語を用いて作成されてもよい。以下では、説明の便宜上、ユーザプログラムはラダープログラムとする。ＰＬＣ１は、ＣＰＵが内蔵された基本ユニット３と、１つないし複数の拡張ユニット４を備えている。基本ユニット３に対して１つないし複数の拡張ユニット４が着脱可能となっている。基本ユニット３はＣＰＵユニットと呼ばれることもある。
【００１２】
基本ユニット３には、表示部５および操作部６が備えられている。表示部５は、基本ユニット３に取り付けられている各拡張ユニット４の動作状況などを表示することができる。操作部６の操作内容に応じて表示部５は表示内容を切り替える。表示部５は、通常、ＰＬＣ１内のデバイスの現在値（デバイス値）やＰＬＣ１内で生じたエラー情報などを表示する。デバイスとは、デバイス値（デバイスデータ）を格納するために設けられたメモリ上の領域を指す名称であり、デバイスメモリと呼ばれてもよい。デバイス値とは、入力機器からの入力状態、出力機器への出力状態およびユーザプログラム上で設定される内部リレー（補助リレー）、タイマー、カウンタ、データメモリ等の状態を示す情報である。デバイス値の型にはビット型とワード型がある。ビットデバイスは１ビットのデバイス値を記憶する。ワードデバイスは１ワードのデバイス値を記憶する。
【００１３】
拡張ユニット４は、ＰＬＣ１の機能を拡張するために用意されている。各拡張ユニット４には、その拡張ユニット４の機能に対応するフィールドデバイス（被制御装置）１０が接続され、これにより、各フィールドデバイス１０が拡張ユニット４を介して基本ユニット３に接続される。フィールドデバイス１０には、センサなどの入力機器や、アクチュエータなどの出力機器が含まれる。なお、複数のフィールドデバイス１０を識別する必要があるときには、１０ａ、１０ｂのように参照符号の末尾にａ、ｂ、ｃ・・・の文字が付与される。
【００１４】
プログラム作成支援装置２は、たとえば、携帯可能なノートタイプやタブレットタイプのパーソナルコンピュータであって、表示部７および操作部８を備えている。ＰＬＣ１を制御するためのユーザプログラムの一例であるラダープログラムは、プログラム作成支援装置２を用いて作成される。その作成されたラダープログラムは、プログラム作成支援装置２内でニモニックコードに変換される。プログラム作成支援装置２は、ＵＳＢ(Universal Serial Bus)などの通信ケーブル９を介してＰＬＣ１の基本ユニット３に接続され、ニモニックコードに変換されたラダープログラムを基本ユニット３に送る。基本ユニット３はラダープログラムをマシンコードに変換し、基本ユニット３に備えられたメモリ内に記憶する。なお、ここではニモニックコードが基本ユニット３に送信されているが、本発明はこれに限られない。たとえば、プログラム作成支援装置２は、ニモニックコードを中間コードに変換し、中間コードを基本ユニット３に送信してもよい。
【００１５】
なお、図１は示していないが、プログラム作成支援装置２の操作部８には、プログラム作成支援装置２に接続されたマウスなどのポインティングデバイスが含まれていてもよい。また、プログラム作成支援装置２は、ＵＳＢ以外の他の通信ケーブル９を介して、ＰＬＣ１の基本ユニット３に対して着脱可能に接続されるような構成であってもよい。また、通信ケーブル９を介さず、ＰＬＣ１の基本ユニット３に対して無線によって接続されるような構成であってもよい。
【００１６】
ＩＰＣ１１はＰＬＣ１から時系列データを収集するデータ収集装置である。ＩＰＣ１１は時系列データをクラウド１２に送信してもよい。クラウドとは、データを蓄積したり、データに所定の処理を実行したりするサーバ装置の集合体である。
【００１７】
＜ラダープログラム＞
図２は、ラダープログラムの作成時にプログラム作成支援装置２の表示部７に表示されるラダー図Ｌｄの一例を示す図である。プログラム作成支援装置２はマトリックス状に配置された複数のセルを表示部７に表示する。各セルには仮想デバイスのシンボルが配置される。シンボルは入力リレーや出力リレーなどを示している。複数のシンボルによってリレー回路が形成される。ラダー図Ｌｄには、たとえば、１０列×Ｎ行（Ｎは任意の自然数）のセルが配置されている。そして、各行のセル内には仮想デバイスのシンボルが適宜配置される。
【００１８】
図２が示すリレー回路は、入力装置からの入力信号に基づいてオン／オフされる３つの仮想デバイス（以下、「入力デバイス」と呼ぶ。）のシンボルと、出力装置の動作を制御するためにオン／オフされる仮想デバイス（以下、「出力デバイス」と呼ぶ。）のシンボルとが適宜結合されることにより構成されている。
【００１９】
各入力デバイスのシンボルの上方に表示されている文字（「Ｒ０００１」、「Ｒ０００２」および「Ｒ０００３」）は、その入力デバイスのデバイス名（アドレス名）を表している。各入力デバイスのシンボルの下方に表示されている文字（「フラグ１」、「フラグ２」および「フラグ３」）は、その入力デバイスに対応付けられたデバイスコメントを表している。出力デバイスのシンボルの上方に表示されている文字（「原点復帰」）は、その出力デバイスの機能を表す文字列からなるラベルである。
【００２０】
図２が示す例では、デバイス名「Ｒ０００１」および「Ｒ０００２」にそれぞれ対応する２つの入力デバイスのシンボルが直列的に結合されることにより、ＡＮＤ回路が構成されている。また、これらの２つの入力デバイスのシンボルからなるＡＮＤ回路に対して、デバイス名「Ｒ０００３」に対応する入力デバイスのシンボルが並列的に結合されることにより、ＯＲ回路が構成されている。すなわち、このリレー回路では、一行目の２つのシンボルに対応する入力デバイスがいずれもオンした場合、または、二行目のシンボルに対応する入力デバイスがオンした場合にのみ、一行目のシンボルに対応する出力デバイスがオンになる。
【００２１】
＜プログラム作成支援装置＞
図３は、プログラム作成支援装置２の電気的構成について説明するためのブロック図である。図３が示すように、プログラム作成支援装置２は、ＣＰＵ２１、表示部７、操作部８、記憶装置２２および通信部２３を備えている。表示部７、操作部８、記憶装置２２および通信部２３は、それぞれＣＰＵ２１に対して電気的に接続されている。記憶装置２２は、少なくともＲＡＭを含み、プログラム記憶部２４と、編集ソフト記憶部２５とを備えている。
【００２２】
ユーザは、編集ソフト記憶部２５に記憶されている編集ソフトをＣＰＵ２１に実行させて、操作部８を通じてラダープログラムを編集する。ここで、ラダープログラムの編集には、ラダープログラムの作成および変更が含まれる。編集ソフトを用いて作成されたラダープログラムは、プログラム記憶部２４に記憶される。また、ユーザは、必要に応じてプログラム記憶部２４に記憶されているラダープログラムを読み出し、そのラダープログラムを、編集ソフトを用いて変更することができる。通信部２３は、通信ケーブル９を介してプログラム作成支援装置２を基本ユニット３に通信可能に接続するためのものである。
【００２３】
＜ＰＬＣ＞
図４は、ＰＬＣ１の電気的構成について説明するためのブロック図である。図４が示すように、基本ユニット３は、ＣＰＵ３１、表示部５、操作部６、記憶装置３２および通信部３３を備えている。表示部５、操作部６、記憶装置３２、および通信部３３は、それぞれＣＰＵ３１に電気的に接続されている。記憶装置３２は、ＲＡＭやＲＯＭ、メモリカードなどを含んでもよい。記憶装置３２はデバイス部３４やプログラム記憶部３５などの複数の記憶領域を有している。デバイス部３４はビットデバイスやワードデバイスなどを有し、各デバイスはデバイス値を記憶する。プログラム記憶部３５は、プログラム作成支援装置２から入力されたラダープログラムやユーザデータを記憶する。プログラム記憶部３５は、基本ユニット３用の制御プログラムも記憶する。図４が示すように基本ユニット３と拡張ユニット４とは拡張バスの一種であるユニット外部バス９０を介して接続されている。なお、ユニット外部バス９０に関する通信機能は通信部３３の一部として実装されてもよい。
【００２４】
図５は、基本ユニット３のスキャンタイムを示す模式図である。図５が示すように１つのスキャンタイムＴは、入出力のリフレッシュを行うためのユニット間通信２０１、プログラム実行２０２、ＥＮＤ処理２０４により構成されている。ユニット間通信２０１で、基本ユニット３は、ラダープログラムを実行して得られた出力データを基本ユニット３内の記憶装置３２から拡張ユニット４など外部機器などに送信する。さらに、基本ユニット３は、拡張ユニット４など外部機器などから受信した入力データを基本ユニット３内の記憶装置３２に取り込む。つまり、基本ユニット３のデバイスに記憶されているデバイス値は出力リフレッシュによって拡張ユニット４のデバイスに反映される。同様に、拡張ユニット４のデバイスに記憶されているデバイス値は入力リフレッシュによって基本ユニット３のデバイスに反映される。このように入出力リフレッシュによって基本ユニット３のデバイスと拡張ユニット４のデバイスが同期する。なお、リフレッシュ以外のタイミングでデバイス値をユニット間で更新する仕組みが採用されてもよい。ただし、基本ユニット３のデバイスは基本ユニット３が随時書き換えており、同様に、拡張ユニット４のデバイスは拡張ユニット４が随時書き換えている。つまり、基本ユニット３のデバイスは基本ユニット３の内部の装置によって随時アクセス可能である。同様に、拡張ユニット４のデバイスは拡張ユニット４の内部の装置によって随時アクセス可能になっている。基本ユニット３と拡張ユニット４との間では基本的にリフレッシュのタイミングにおいて相互にデバイス値を更新して同期する。プログラム実行２０２で、基本ユニット３は、更新された入力データを用いてプログラムを実行（演算）する。基本ユニット３はプログラムの実行によりデータを演算処理する。なお、ＥＮＤ処理とは、プログラム作成支援装置２や基本ユニット３に接続された表示器（図示せず）等の外部機器とのデータ通信、システムのエラーチェック等の周辺サービスに関する処理全般を意味する。ＩＰＣ１１はＥＮＤ処理２０４においてＰＬＣ１から時系列データを収集してもよい。
【００２５】
このように、プログラム作成支援装置２はユーザの操作に応じたラダープログラムを作成し、作成したラダープログラムをＰＬＣ１に転送する。ＰＬＣ１は、入出力リフレッシュ、ラダープログラムの実行およびＥＮＤ処理を１サイクル（１スキャン）として、このサイクルを周期的、すなわちサイクリックに繰り返し実行する。これにより、各種入力機器（センサ等）からのタイミング信号に基づいて、各種出力機器（モータ等）を制御する。よって、ＰＬＣ１は汎用のパーソナルコンピュータ（ＰＣ）とは全く異なる動きをする。
【００２６】
＜データ収集装置＞
図６はＩＰＣ１１の電気的構成について説明するためのブロック図である。ＩＰＣ１１は、ＣＰＵ５１、記憶装置５２、通信部５３、表示部５７、操作部５８などを備えている。記憶装置５２、通信部５３、表示部５７および操作部５８は、内部バスなどを介してそれぞれＣＰＵ５１に電気的に接続されている。記憶装置５２は、ＲＡＭやＲＯＭ、メモリカード、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）などを含んでもよい。記憶装置５２には、ＰＬＣ１から収集された時系列記憶データを記憶する時系列データ記憶部５４や、ＣＰＵ５１により実行される制御プログラムを記憶するプログラム記憶部５５が設けられている。ＩＰＣ１１は、通信部５３を介してＰＬＣ１やクラウド１２と通信する。たとえば、ＣＰＵ５１は通信部５３を介してＰＬＣ１からデバイス値またはその集合体である時系列データを収集して時系列データ記憶部５４に記憶する。また、ＣＰＵ５１は時系列データを時系列データ記憶部５４から読み出して、通信部５３を介してクラウド１２へ送信してもよい。
【００２７】
＜クラウド＞
図７はクラウド１２の電気的構成について説明するためのブロック図である。クラウド１２は、ＣＰＵ６１、記憶装置６２、通信部６３、表示部６７および操作部６８を備えている。記憶装置６２、通信部６３、表示部６７および操作部６８は、内部バスなどを介してそれぞれＣＰＵ６１に電気的に接続されている。記憶装置６２は、ＲＡＭやＲＯＭ、メモリカード、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）などを含んでもよい。記憶装置６２には、ＩＰＣ１１を介してＰＬＣ１から収集された時系列記憶データを記憶する時系列データ記憶部６４や、ＣＰＵ６１により実行される制御プログラムを記憶するプログラム記憶部６５が設けられている。クラウド１２は、通信部６３を介してＰＬＣ１やＩＰＣ１１、クライアント（例：プログラム作成支援装置２）と通信する。たとえば、ＣＰＵ６１は通信部６３を介してＰＬＣ１またはＩＰＣ１１から時系列データを収集して時系列データ記憶部６４に記憶する。また、ＣＰＵ６１は時系列データに演算を施し、通信部６３を介してクライアントに送信してもよい。
【００２８】
＜抽出期間＞
ある部品を製造する工場のラインにおいて部品の加工を制御したり、完成した部品を検査したりするためにＰＬＣ１が使用されることがある。たとえば、ＰＬＣ１はユーザプログラムにしたがって部品に圧力を加えて切断したり、部品に熱を加えたりすることもある。また、ＰＬＣ１は拡張ユニット４に接続されたＸＹステージなどを制御して部品の位置を移動させることもあろう。いずれの場合であっても部品の加工精度に問題が発生したときや発生しそうなときにその原因を探るにはＰＬＣ１のデバイス値を収集して分析することが必要となる。デバイス値は時々刻々と変化する。たとえば、一つの部品の加工や検査において数百回も変化することもあろう。これは、一つの部品につきラダープログラムが数百スキャンされることを意味する。また、時系列データの収集期間が長くなると、時系列データのうちどの部分がどの部品に対応した個別データであるかをユーザが目で確認して見つけ出すことは簡単ではない。そこで、本実施例では、ＰＬＣ１やＩＰＣ１１またはクラウド１２が部品ごとの個別データを抽出することで、ユーザの負担を軽減する。ユーザは、プログラム作成支援装置２などのクライアントを通じて個別データを確認する。
【００２９】
図８はデバイス値の時系列データを示す図である。ここでは４つのデバイス値９１ａないし９１ｄが例示されているが、一つ以上のデバイス値が存在すればよい。抽出期間とは時系列データのうち個別データの時間的な位置を示す情報である。抽出期間は、個別データの開始位置（開始時刻）ｔｓと終了位置（終了時刻）ｔｅにより定義される。また、抽出期間は、抽出期間の時間的な長さＰと基準時ｔｒとによって定義されてもよい。長さＰは位相期間と呼ばれてもよい。基準時ｔｒは基準位相と呼ばれてもよい。なお、抽出期間の長さＰは開始位置ｔｓから終了位置ｔｅまでの時間的な長さである。基準時ｔｒは、開始位置ｔｓから終了位置ｔｅまでのいずれかの位置（時刻）を示している。たとえば、開始位置ｔｓは基準時ｔｒからΔoffset１だけマイナスした時刻として定義されてもよい。終了位置ｔｅは基準時ｔｒからΔoffset２だけプラスした時刻として定義されてもよい。Δoffset１は０であり、Δoffset２はＰであってもよい。つまり、終了位置ｔｅは開始位置ｔｓから長さＰをプラスした時刻として定義されてもよい。図８では基準時ｔｒが開始位置ｔｓに一致している事例を示している。図８では横軸は時間を示しているが、スキャンの回数やデバイス値の収集回数（サンプリング数）であってもよい。なお、一スキャンの時間的な長さは必ずしも一定ではない。
【００３０】
図８においてデバイス値９１ａはフィールドデバイスであるＸＹステージのＸ軸の座標変化を示している。デバイス値９１ｂはＸＹステージのＹ軸の座標変化を示している。デバイス値９１ｃは要求リレーを示している。要求リレーとは、基本ユニット３が拡張ユニット４に対して所定の処理の実行開始を指示するリレーである。デバイス値９１ｄは完了リレーを示している。完了リレーとは、拡張ユニット４が基本ユニット３に対して所定の処理が完了したことを通知するリレーである。
【００３１】
図８が示すように部品ごとの個別データには周期性がある。この周期性はユーザプログラムにおける繰り返し処理の周期性に起因しいている。したがって、ＣＰＵ２１がユーザプログラムを解析して周期性を特定し、ＣＰＵ２１、３１、５１、６１などがこの周期性にしたがって個別データを抽出してもよい。
【００３２】
●ラダープログラムのファンクションブロックに基づく抽出期間の決定手法
図９はファンクションブロック３０１を含むラダープログラム３６ａを示している。ＣＰＵ３１がラダープログラム３６ａを実行している間にファンクションブロック３０１は何度も実行される。したがって、プログラム作成支援装置２のＣＰＵ２１は、ラダープログラム３６ａを解析してファンクションブロック３０１を見つけると、ファンクションブロック３０１の周期を抽出期間に決定する。たとえば、ファンクションブロック３０１の実行トリガはＥＮ信号であってもよい。つまり、ＥＮ信号の立ち上がりが抽出期間の開始位置ｔｓに相当する。また、ファンクションブロック３０１は完了リレーであるＣｏｍｐｌｅｔｅが立ち上がったときに終了する。つまり、完了リレーの立ち上がりは抽出期間の終了位置ｔｅに相当する。したがって、ＣＰＵ２１は、ＥＮ信号の立ち上がりから完了リレーの立ち上がりまでが抽出期間であることを示す設定情報を作成し、ＰＬＣ１、ＩＰＣ１１またはクラウド１２に転送する。
【００３３】
●ラダープログラムにおける命令の繰り返しに基づく抽出期間の決定手法
図１０は命令の繰り返しを含むラダープログラム３６ｂを示している。ラダープログラム３６ｂによれば、Ｒ１０００、Ｒ１００１、Ｒ１００２、Ｒ１００３はそれぞれ異なる状態を示すデバイスである。ＳＴＧとＪＭＰはラダープログラム３６ｂが状態遷移を有していることを表記するための命令である。この例では、Ｒ１００１がオンである間は繰り返し特定の命令が実行される。とりわけ、Ｒ００２がオンであれば、Ｒ１００１の行が繰り返し実行される。Ｒ００３がオンになると、この繰り返しループが終了する。したがって、Ｒ１００１がオフからオンに切り替わるタイミングは抽出期間の開始位置ｔｓに相当する。また、Ｒ１００１がオンからオフに切り替わるタイミングは抽出期間の終了位置ｔｅに相当する。ＣＰＵ２１は、Ｒ１００１がオフからオンに切り替わるタイミングからＲ１００１がオンからオフに切り替わったタイミングまでが抽出期間であることを示す設定情報を作成し、ＰＬＣ１、ＩＰＣ１１またはクラウド１２に転送する。
【００３４】
●フローチャート形式のモーションプログラムにおける命令の繰り返しに基づく抽出期間の決定手法
図１１はフローチャート形式のモーションプログラム３２０を示している。フローチャート形式のモーションプログラム３２０はＸＹステージなどの、位置決めモーションユニットを制御するためのユーザプログラムである。図１１が示すように、Ｒ１００というリレーデバイスがオンでない場合、位置決め制御が繰り返し実行される。つまり、Ｒ１００がオフである間は位置決め制御が繰り返し実行される。したがって、ＣＰＵ２１は、Ｒ１００がオフである期間が抽出期間であることを示す設定情報を作成し、ＰＬＣ１、ＩＰＣ１１またはクラウド１２に転送する。
【００３５】
●ユーザ設定に含まれているポイントパラメータの解析に基づく抽出期間の決定手法
図１２はモーションユニットのポイントパラメータを設定するユーザインタフェース（ＵＩ４００）を示している。ポイントパラメータは、ポイント番号、軸番号、動作モード、目標座標、速度、次ポイント番号などを含む。とりわけ、次ポイント番号は、一種のポインターであり、あるポイント番号の次のポイント番号を示している。この例では、１−＞２−＞３−＞４−＞５−＞６−＞７−＞８−＞１・・・・となっている。つまり、複数のポイントパラメータが順番に繰り返し適用される。ＣＰＵ２１は、ポイント番号１〜８を一つの命令ループと判定すると、ポイント番号１〜８を実行している期間が抽出期間であることを示す設定情報を作成し、ＰＬＣ１、ＩＰＣ１１またはクラウド１２に転送する。
【００３６】
●ユーザ設定に含まれているユニット設定の解析に基づく抽出期間の決定手法
図１３は高速カウンタユニットの動作パラメータを設定するユーザインタフェース（ＵＩ４１０）を示している。高速カウンタユニットは、拡張ユニット４の一種であり、周波数カウントモードと回転計動作モードとを有している。ここではＵＩ４１０により周波数カウントモードが選択されている。とりわけ、周波数カウントモードでは、高速カウンタユニットに入力される入力パルスの間隔から周波数が計算される。この周波数の逆数が一周期である。ＣＰＵ２１は、高速カウンタユニットが算出した周波数の逆数が抽出期間であることを示す設定情報を作成し、ＰＬＣ１、ＩＰＣ１１またはクラウド１２に転送する。なお、ある入力パルスの立ち上がりは抽出期間の開始位置ｔｓに相当する。また、ある入力パルスの次の入力パルスの立ち上がりは抽出期間の終了位置ｔｅに相当する。
【００３７】
＜機能ブロック＞
図１４は抽出期間の決定に関与する機能を説明するブロック図である。ここでは、プログラム作成支援装置２がユーザプログラムやユーザ設定を解析することで抽出期間を決定する。ＣＰＵ２１は編集ソフト記憶部２５に記憶されている編集ソフトを実行することで、決定部８２、編集部９４、転送部９７および表示制御部９８などを実現する。編集部９４のＵＩ表示部９５はユーザプログラムの入力を補助するユーザインタフェース（ＵＩ）を表示部７に表示する。ＵＩ表示部９５は、図９ないし図１３に表示したようなＵＩを表示部７に表示する。入力受付部９６は、ユーザインタフェースを通じてユーザによるユーザプログラムの入力を受け付ける。ユーザは操作部８を操作することでユーザプログラムを入力する。つまり、入力受付部９６は、操作部８を介して入力されるユーザの指示を受け付ける。ＵＩ表示部９５はユーザ入力をユーザインタフェースに反映させる。図９ないし図１３を用いて説明したように、決定部８２は、ユーザプログラムやそのユーザ設定を解析し、抽出期間を決定する。決定部８２は、決定した抽出期間を示す情報を設定情報３９に格納する。転送部９７は、ラダープログラム３６などのユーザプログラムをＰＬＣ１に転送したり、設定情報３９をＰＬＣ１やＩＰＣ１１、クラウド１２へ転送したりする。表示制御部９８は、ＰＬＣ１やＩＰＣ１１、クラウド１２から送信される個別データを表示部７に表示する。
【００３８】
図１５は個別データの抽出処理に関与する機能を説明する図である。ここではＰＬＣ１に時系列データの収集と個別データの抽出に関与する機能が実装されている。ただし、図１６や図１７が示すようにこれらの機能はＩＰＣ１１に実装されてもよいし、クラウド１２に実装されてもよい。
【００３９】
図１５において基本ユニット３のＣＰＵ３１は記憶装置３２に記憶されている制御プログラムを実行することで以下の機能を実現する。ラダー実行部８０はユーザプログラムを実行し、当該ユーザプログラムにしたがって複数のデバイスに記憶されている情報を演算処理するプログラム実行部である。ここではユーザプログラムの一例としてラダープログラム３６が使用されている。ユーザプログラムがＳＦＣ（シーケンシャルファンクションチャート）などのフローチャート形式のモーションプログラムである場合、ラダー実行部８０はフローチャート形式のモーションプログラムを実行する実行部として機能する。ラダー実行部８０は記憶装置３２に記憶されているラダープログラム３６を実行し、一スキャンごとにデバイス値９１を更新する。収集部８１は少なくとも一つのデバイスに記憶されているデバイスデータ（デバイス値９１）を繰り返し収集することで時系列デバイスデータ（時系列データ９２）を形成するデータ収集部である。
【００４０】
選択部８７は、収集部８１により収集されるデバイス値を選択する。たとえば、選択部８７は設定情報３９により指定された収集対象のデバイス値を記憶するデバイスを選択してもよい。選択部８７はユーザプログラムを分析し、収集対象のデバイスを選択してもよい。たとえば、選択部８７はユーザプログラムに記述されたすべてのデバイスを選択してもよい。ユーザはプログラム作成支援装置２において複数のデバイスをいくつかのグループに分け、各グループにロギング対象ＩＤを付与することがある。さらに、ユーザは、プログラム作成支援装置２においてロギング対象ＩＤを選択することでグループを選択する。選択されたグループのＩＤ、つまり、ロギング対象ＩＤは設定情報３９に格納されて、ユーザプログラムとともにＰＬＣ１に転送される。そこで、選択部８７は設定情報３９に格納されているロギング対象ＩＤを取得し、さらにロギング対象ＩＤに関連付けられている一つ以上のデバイスを取得し、取得したデバイスの識別情報を収集部８１に設定する。収集部８１は設定されたデバイスからデバイス値を収集する。ユーザはプログラム作成支援装置２においてリアルタイムでのチャート形式モニタやデバッグ用に一つ以上のデバイスを選択し、選択したデバイスの識別情報を設定情報３９に格納して、ユーザプログラムとともにＰＬＣ１に転送することがある。選択部８７は設定情報３９に格納されているデバイスの識別情報を収集部８１に設定してもよい。リアルタイムでのチャート形式モニタとは、プログラム作成支援装置２がＰＬＣ１から高速にデバイス値を読み出して、時系列のデバイス値を、チャート形式（グラフ形式）でリアルタイムに表示部７に表示する機能である。デバッグとはユーザプログラムのデバッグのことである。デバッグ用のデバイスの識別情報も設定情報３９に格納されて、ユーザプログラムとともにＰＬＣ１に転送される。プログラム作成支援装置２は、デバッグ用のデバイスのデバイス値をＰＬＣ１から取得して、表示部７に表示する。このように、リアルタイムでのチャート形式モニタやデバッグ用のデバイスが個別データ９３の抽出のために選択されてもよい。プログラム作成支援装置２の表示部７だけではなく、ＰＬＣ１の表示部５に一つ以上のデバイス値が表示されることもある。この場合にも取得対象のデバイスの識別情報は設定情報３９に格納されて、ユーザプログラムとともにＰＬＣ１に転送される。したがって、選択部８７は設定情報３９を解析することで、収集部８１に取得させるデバイス値を選択してもよい。選択部８７は収集部８１の内部に設けられていてもよい。
【００４１】
抽出部８４は、設定情報３９により指定された各抽出期間における個別データ９３を時系列データ９２から抽出する。付与部８５は、抽出部８４により抽出された各個別データに対して各個別データを識別するための識別情報を付与する。識別情報は、たとえば、シリアル番号であってもよいが、各個別データを区別できる情報であれば他の情報であってもよい。送信部８６はオプションであり、個別データ９３をクライアントであるプログラム作成支援装置２へ送信する。ユーザがＰＬＣ１において個別データ９３を検討する場合、ＣＰＵ３１は表示部５に個別データ９３を表示してもよい。表示部５はＰＬＣ１に接続された外部表示装置であってもよい。個別データ９３のフォーマットはＣＳＶ形式であってもよいし、ＳＱＬ形式であってもよい。ＳＱＬはデータベース言語の一種である。
【００４２】
図１６はＩＰＣ１１がデバイス値の収集機能や抽出機能を有している事例を示している。すでに説明されている機能については説明が省略されるか、簡潔に説明される。ＩＰＣ１１のＣＰＵ５１はプログラム記憶部５５に記憶されている制御プログラムを実行することで様々な機能を実現する。図１６が示すように、収集部８１、選択部８７、抽出部８４、付与部８５および送信部８６などを実装する。選択部８７は設定情報３９に基づき取得対象デバイスを収集部８１に設定する。収集部８１は設定情報３９により指定された取得対象デバイスからデバイス値を収集する。たとえば、収集部８１は、取得条件（例：定期的）が満たされたときにＰＬＣ１からデバイス値９１を取得し、記憶装置５２の時系列データ記憶部５４に記憶する。抽出部８４は設定情報３９により指定された抽出期間にしたがって部品ごとの個別データ９３を抽出する。付与部８５は抽出された個別データ９３に識別情報を付与する。送信部８６はオプションであり、クラウド１２やプログラム作成支援装置２に個別データ９３を送信する。なお、ＩＰＣ１１において個別データ９３の検討が実行される場合、ＣＰＵ５１は表示部５７に個別データ９３を表示する。なお、ＩＰＣ１１が省略される場合、これらの機能はクラウド１２のＣＰＵ６１と記憶装置６２、表示部６７などにより実現される。
【００４３】
図１７はＩＰＣ１１がデバイス値の収集機能を有し、クラウド１２が抽出機能を有している事例を示している。ＩＰＣ１１の収集部８１は設定情報３９により指定されたデバイスからデバイス値を収集して時系列データ９２を作成し、クラウド１２へ送信する。クラウド１２のＣＰＵ６１はプログラム記憶部６５に記憶されている制御プログラムを実行することで、抽出部８４および付与部８５などを実現する。クラウド１２のＣＰＵ６１はＩＰＣ１１から受信した時系列データ９２を時系列データ記憶部６４に記憶する。抽出部８４は設定情報３９により指定された抽出期間にしたがって部品ごとの個別データ９３を抽出する。付与部８５は抽出された個別データ９３に識別情報を付与する。また、ＣＰＵ６１は表示部６７に個別データ９３を表示する。あるいは、プログラム作成支援装置２の表示部７に個別データ９３を表示させるために、送信部８６は個別データ９３をプログラム作成支援装置２に送信してもよい。
【００４４】
＜フローチャート＞
●抽出期間の決定処理
図１８はプログラム作成支援装置２のＣＰＵ２１が実行する抽出期間の決定処理を示している。ＣＰＵ２１は編集ソフトにしたがって以下のステップを実行する。
・Ｓ１でＣＰＵ２１（ＵＩ表示部９５）はラダープログラム３６などのユーザプログラムを編集するための編集ＵＩを表示部７に表示する。
・Ｓ２でＣＰＵ２１（入力受付部９６）は操作部８を介したユーザプログラムの入力を受け付ける。入力受付部９６や操作部８は入力部として機能する。
・Ｓ３でＣＰＵ２１（決定部８２）はユーザプログラムやユーザ設定を解析して抽出期間を決定する。たとえば、決定部８２は図９ないし図１３を用いて説明されたいずれかの決定手法を用いて抽出期間を決定する。
・Ｓ４でＣＰＵ２１（決定部８２）はユーザプログラムやユーザ設定を解析して収集対象デバイスを決定する。たとえば、決定部８２はユーザプログラムに記述されているすべてのデバイスを収集対象として選択してもよい。決定部８２はロギング対象のデバイスやデバック用に指定されたデバイスを収集対象として選択してもよい。
・Ｓ５でＣＰＵ２１（決定部８２）は、抽出期間を示す情報と収集対象デバイスを示す情報とを含む設定情報３９を作成する。
・Ｓ６でＣＰＵ２１（転送部９７）は、ラダープログラム３６などのユーザプログラムと設定情報３９をＰＬＣ１などに転送する。
【００４５】
●収集処理
図１９はＰＬＣ１のＣＰＵ３１が実行する収集処理を示すフローチャートである。操作部６には設定モードと運転モードとを切り替えるスイッチが設けられている。設定モードとは、プログラム作成支援装置２からユーザプログラムやプロジェクトデータを受信する処理である。運転モードとはユーザプログラムを実行するモードである。ＣＰＵ３１は設定モードから運転モードへの切り替えが指示されると、以下の処理を実行する。
・Ｓ１１でＣＰＵ３１（ラダー実行部８０）はユーザプログラムをＲＡＭにロードする。
・Ｓ１２でＣＰＵ３１（ラダー実行部８０）はユーザプログラムのスキャンを実行する。ラダー実行部８０はユーザプログラムにしたがって各種のデバイスに格納されているデバイス値に所定の演算を実行し、デバイス値を更新する。所定の演算の内容はユーザプログラムによって定義されている。
・Ｓ１４でＣＰＵ３１（収集部８１）はデバイス値を収集する。収集部８１は、選択部８７により選択された取得対象のデバイスからデバイス値を読み出し、時系列データ９２に追加する。上述したように収集処理はＩＰＣ１１のＣＰＵ５１により実行されてもよいし、クラウド１２のＣＰＵ６１により実行されてもよい。デバイス値の収集タイミング（サンプリングタイミング）は、一スキャンごとであってもよいし、数スキャンごとであってもよい。また、収集はエンド処理において実行されてもよいし、スキャン中であってもよい。また、一スキャンにおいて複数回の収集が実行されてもよい。収集タイミングも設定情報３９により指定されていてもよい。
・Ｓ１５でＣＰＵ３１（ラダー実行部８０）はプログラムの停止が指示されたかどうかを判定する。たとえば、ＣＰＵ３１は上述したスイッチが運転モードから設定モードに切り替えられると、プログラムの停止が指示されたと判定する。プログラムの停止が指示されていなければ、ＣＰＵ３１はＳ１２ないしＳ１４の処理を繰り返し実行する。プログラムの停止が指示されると、ＣＰＵ３１はユーザプログラムを停止する。このようにして時系列データ９２が収集される。
【００４６】
図２０は時系列データ９２の一例を示している。時刻情報は「分：秒：１／１００秒」により表記されている。ここでは、選択部８７により取得対象としてデバイスａ、ｂ、ｃ、ｄが選択されている。デバイスａ，ｂはＸＹステージのＸ座標とＹ座標など、１ワードのデータを格納している。デバイスｃは、ビットデバイスであり、ここでは要求リレーである。デバイスｄは、ビットデバイスであり、ここでは完了リレーである。図２０が示すようにこの段階では時系列データ９２のどの部分がどの部品に対応しているかをユーザは特定しにくいだろう。
【００４７】
●抽出処理
図２１は個別データの抽出処理を示すフローチャートである。上述したように抽出処理はＣＰＵ２１、３１、５１、６１の何れにより実行されてもよいが、ここではＣＰＵ３１により実行されるものとする。
・Ｓ２１でＣＰＵ３１（抽出部８４）は設定情報３９から個別データの抽出期間を示す情報を取得する。
・Ｓ２２でＣＰＵ３１（抽出部８４）は抽出期間を示す情報にしたがって部品ごとの個別データ９３を時系列データ９２から抽出する。
・Ｓ２３でＣＰＵ３１（付与部８５）は抽出部８４により抽出された各個別データ９３に識別情報を付与する。
【００４８】
図２２は個別データ９３の一例を示している。抽出部８４は時系列データ９２から部品ごとの個別データ９３を切り出して、各個別データ９３に識別情報を付与している。図２２においては二つの個別データ９３が例示されており、それぞれ異なる識別情報として"０１"と"０２"が付与されている。したがって、ユーザは部品ごとの個別データ９３を容易に区別できるようになる。
【００４９】
Ｓ２４でＣＰＵ３１は個別データ９３を表示部５に表示する。上述したようにＣＰＵ３１は個別データ９３をプログラム作成支援装置２に送信することで、プログラム作成支援装置２の表示部７に個別データ９３を表示してもよい。なお、Ｓ２３からＳ２４は、同期実行であってもよいし、非同期実行であってもよい。すなわち、例えばＣＰＵ３１は、ユーザの表示指示に基づきＳ２４の処理へ移行してもよい。この場合、例えば操作部８を介してユーザの表示指示がなされるまでは、ＣＰＵ３１は、Ｓ２２及びＳ２３の処理を繰り返し実行し、ユーザの表示指示があったときに、Ｓ２４の処理へと移行してもよい。
【００５０】
図１９や図２１によれば時系列データ９２の収集処理と個別データ９３の抽出処理とが、便宜上、分離されている。しかし、収集処理と抽出処理とが統合されてもよい。図２３は、収集処理と抽出処理とが統合された処理を示している。
・Ｓ３１でＣＰＵ３１（ラダー実行部８０）はユーザプログラムをＲＡＭにロードする。
・Ｓ３２でＣＰＵ３１（ラダー実行部８０）はユーザプログラムのスキャンを実行する。ラダー実行部８０はユーザプログラムにしたがって各種のデバイスに格納されているデバイス値に所定の演算を実行し、デバイス値を更新する。所定の演算の内容はユーザプログラムによって定義されている。
・Ｓ３３でＣＰＵ３１（収集部８１）はデバイス値を収集する。収集部８１は、選択部８７により選択された取得対象のデバイスからデバイス値を読み出す。
・Ｓ３４でＣＰＵ３１（抽出部８４）は収集部８１がデバイス値を収集したタイミングが、設定情報３９により指定された抽出期間中かどうかを判定する。たとえば、あるリレーデバイスがオンとなっている期間が抽出期間として指定されていたと仮定する。この場合に、抽出部８４は、設定情報３９により指定されたリレーデバイスのデバイス値を読み出し、デバイス値がオンかどうかを判定する。抽出部８４は、このリレーデバイスのデバイス値がオンであれば、抽出期間中であると判定して、Ｓ３５に進む。一方、抽出部８４は、このリレーデバイスのデバイス値がオンでなければ、抽出期間中ではないと判定して、Ｓ３２に進む。
・Ｓ３５でＣＰＵ３１（付与部８５）は抽出期間中に収集されたデバイス値に識別情報を付与することで個別データ９３を作成する。
・Ｓ３６でＣＰＵ３１（ラダー実行部８０）はプログラムの停止が指示されたかどうかを判定する。プログラムの停止が指示されていなければ、ＣＰＵ３１はＳ３２ないしＳ３６の処理を繰り返し実行する。プログラムの停止が指示されると、ＣＰＵ３１はユーザプログラムを停止する。このようにして一連の個別データ９３が収集される。
【００５１】
図２４は個別データ９３を表示するユーザインタフェース（ＵＩ１００）の一例を示している。個別データ表示部１０１は、個別データ９３を表示する表示領域である。この例では二つの個別データ９３が表示されている。フレーム１０３は抽出期間を示すＵＩである。図２５は個別データ表示部１０１の他の例を示している。この例では二つの個別データ９３が縦に並んで表示されている。図２６は個別データ表示部１０１の他の例を示している。この例では二つの個別データ９３が重ねて表示されている。たとえば、ＣＰＵ２１（表示制御部９８）は、二つの個別データ９３の抽出期間が重なるように二つの個別データ９３を重ねてもよい。表示制御部９８は、二つの個別データ９３の重なっている部分が多くなるように、一方の個別データ９３を他方の個別データ９３に対して位置合わせしてもよい。とりわけ、二つの個別データ９３を重ねて表示することで、ユーザは二つの個別データ９３の微妙な差を視覚的に見つけやすくなろう。
【００５２】
＜シーケンス＞
図２７は個別データ９３の送受信に関連したシーケンスを示している。この例では、ＰＬＣ１のＣＰＵ３１に収集部８１、選択部８７、付与部８５、送信部８６が実装される。プログラム作成支援装置２のＣＰＵ２１には編集部９４、決定部８２、転送部９７および表示制御部９８が実装される。
・Ｓｑ１でプログラム作成支援装置２はユーザプログラムと設定情報３９を送信し、ＰＬＣ１がこれを受信して記憶装置３２に記憶する。
・Ｓｑ２でＰＬＣ１はユーザプログラムにしたがってデバイス値を求め、設定情報３９にしたがって時系列データ９２を収集する。ＰＬＣ１は設定情報３９にしたがって個別データ９３を抽出して、プログラム作成支援装置２に送信する。プログラム作成支援装置２は個別データ９３を表示部７に表示する。
【００５３】
図２８は個別データ９３の送受信に関連した別のシーケンスを示している。この例では、ＩＰＣ１１のＣＰＵ５１に収集部８１、選択部８７、抽出部８４、付与部８５および送信部８６が実装される。
・Ｓｑ１でプログラム作成支援装置２はユーザプログラムを送信し、ＰＬＣ１がこれを受信して記憶装置３２に記憶する。
・Ｓｑ１０でプログラム作成支援装置２は設定情報３９をＩＰＣ１１へ送信し、ＩＰＣ１１がこれを受信して記憶装置５２に記憶する。
・Ｓｑ１１でＰＬＣ１はユーザプログラムにしたがってデバイス値を求める。ＩＰＣ１１は設定情報３９にしたがってデバイス値をＰＬＣ１から読み出す（受信する）。
・Ｓｑ１２でＩＰＣ１１は収集したデバイス値から時系列データ９２を作成する。ＩＰＣ１１は、設定情報３９にしたがって時系列データ９２から個別データ９３を抽出し、プログラム作成支援装置２に個別データ９３を送信する。プログラム作成支援装置２は個別データ９３をＩＰＣ１１から受信すると、表示部７に個別データ９３を表示する。
【００５４】
図２９は個別データ９３の送受信に関連したさらに別のシーケンスを示している。この例では、ＩＰＣ１１のＣＰＵ５１に収集部８１と選択部８７が実装されている。クラウド１２のＣＰＵ６１に抽出部８４、付与部８５、送信部８６が実装される。
・Ｓｑ１でプログラム作成支援装置２はユーザプログラムを送信し、ＰＬＣ１がこれを受信して記憶装置３２に記憶する。
・Ｓｑ２０でプログラム作成支援装置２は設定情報３９をＩＰＣ１１へ送信し、ＩＰＣ１１がこれを受信して記憶装置５２に記憶する。この設定情報３９には収集対象デバイスを示す情報が含まれている。
・Ｓｑ２１でプログラム作成支援装置２は設定情報３９をクラウド１２へ送信し、クラウド１２がこれを受信して記憶装置６２に記憶する。この設定情報３９には抽出期間を示す情報が含まれている。
・Ｓｑ２２でＰＬＣ１はユーザプログラムにしたがってデバイス値を求める。ＩＰＣ１１は設定情報３９にしたがってデバイス値をＰＬＣ１から読み出す（受信する）。
・Ｓｑ２３でＩＰＣ１１は収集したデバイス値から時系列データ９２を作成し、クラウド１２に時系列データ９２を送信する。クラウド１２はＩＰＣ１１から時系列データ９２を受信する。
・Ｓｑ２３でからクラウド１２は設定情報３９にしたがって時系列データ９２から個別データ９３を抽出し、プログラム作成支援装置２に個別データ９３を送信する。プログラム作成支援装置２はクラウド１２から個別データ９３を受信すると、表示部７に個別データ９３を表示する。
【００５５】
図３０は個別データ９３の送受信に関連したさらに別のシーケンスを示している。この例では、クラウド１２のＣＰＵ６１に収集部８１、選択部８７、抽出部８４、付与部８５、送信部８６が実装される。
・Ｓｑ１でプログラム作成支援装置２はユーザプログラムを送信し、ＰＬＣ１がこれを受信して記憶装置３２に記憶する。
・Ｓｑ３０でプログラム作成支援装置２は設定情報３９をクラウド１２へ送信し、クラウド１２がこれを受信して記憶装置６２に記憶する。この設定情報３９には収集対象デバイスを示す情報と抽出期間を示す情報が含まれている。
・Ｓｑ３１でＰＬＣ１はユーザプログラムにしたがってデバイス値を求める。クラウド１２は設定情報３９にしたがってＰＬＣ１の収集対象デバイスからデバイス値を収集する（読み出す）。クラウド１２は収集したデバイス値から時系列データ９２を作成する。
・Ｓｑ３２でクラウド１２は設定情報３９にしたがって時系列データ９２から個別データ９３を抽出し、プログラム作成支援装置２に個別データ９３を送信する。プログラム作成支援装置２はクラウド１２から個別データ９３を受信すると、表示部７に個別データ９３を表示する。
【００５６】
＜表示結果＞
図３１は個別データ９３の表示例を示している。プログラム作成支援装置２のＣＰＵ２１（表示制御部９８）は複数の個別データ９３を表示部７に表示する。この例では００：００：００から００：０２：７０までに取得されたデバイス値により第一の個別データ９３が形成され、識別情報として"０１"が付与されている。００：０３：００から００：０６：００までに取得されたデバイス値により第二の個別データ９３が形成され、識別情報として"０２"が付与されている。００：０６：３０から００：０９：００までに取得されたデバイス値により第三の個別データ９３が形成され、識別情報として"０３"が付与されている。ＣＰＵ２１は各デバイス値と公差（閾値）とを比較し、公差を逸脱しているデバイス値を強調表示してもよい。また、ＣＰＵ２１は、通常のタイミングとは異なるタイミングに完了リレーが１となっているデバイス値を強調表示してもよい。
【００５７】
図３１に示した事例では第一の個別データ９３における時刻００：０１：５０に取得されたデバイス値ｃがＮＧと判定されており、強調表示されている。ユーザは、時刻００：０１：２０に取得されたデバイス値ａと、第二の個別データ９３と第三の個別データ９３における同位相（時刻００：０４：２０、００：０７：２０）のデバイス値ａを比較する。時刻００：０４：２０に取得されたデバイス値ａは５．９であり、ユーザは適正な値であると判断する。また、時刻００：０７：２０に取得されたデバイス値ａは４．４であり、ユーザは適正な値であるが、ＮＧである４．２に対するマージンはほとんどないと判断できる。これによりユーザはデバイス値ａに関して何らかの対策が必要であると判断できる。
【００５８】
＜まとめ＞
以上の実施例から導かれる技術思想について説明する。ＰＬＣ１はユーザプログラムを繰り返し実行するプログラマブル・ロジック・コントローラの一例である。なお、ＰＬＣ１はユーザプログラムにしたがって複数の部品に対する検査または加工を制御してもよい。部品はワークと呼ばれてもよく、完成品を含む用語である。記憶装置３２はユーザプログラムを記憶するプログラム記憶部の一例である。記憶装置３２はユーザプログラムにより指定可能であり、１ビット又は数ワードの情報を記憶するビットデバイスおよび１ワードの情報を記憶するワードデバイスを含む複数のデバイスを保持するデバイス記憶部の一例である。ラダー実行部８０はプログラム記憶部に記憶されているユーザプログラムを繰り返し実行し、当該ユーザプログラムにしたがって複数のデバイスに記憶されている情報を演算処理するプログラム実行部の一例である。収集部８１は少なくとも一つのデバイスに記憶されているデバイスデータを繰り返し収集することで、周期性を有する時系列デバイスデータを形成するデータ収集部の一例である。決定部８２は時系列デバイスデータから周期ごとの個別データを抽出するための抽出期間を決定する決定部の一例である。抽出部８４は決定部８２により決定された各抽出期間における個別データを時系列デバイスデータから抽出する抽出部の一例である。付与部８５は抽出部８４により抽出された各個別データに対して各個別データを識別するための識別情報を付与する付与部の一例である。とりわけ、決定部８２は、ユーザプログラムにおける繰り返し命令の実行タイミングまたは実行周期に基づき抽出期間を決定する。たとえば、決定部８２は、ユーザプログラムやそれに付随するユーザ情報を解析することで個別データの抽出期間を決定する。このように、本実施例によれば、時系列データから個別データを抽出することがユーザにとって容易になる。なお、「繰り返し命令」は、ユーザプログラムの種類に応じた種々の命令が含まれる。例えば、ユーザプログラムがラダープログラムの場合には、ラダープログラムに記述される命令語を含んでもよい。また、ユーザプログラムがＳＦＣ（シーケンシャルファンクションチャート）など、フローチャート形式のプログラムの場合には、フローチャートを構成する命令モジュールを含んでもよい。
【００５９】
ＰＬＣ１はプログラム実行部におけるユーザプログラムの実行処理とデータ収集部におけるデータ収集部の収集処理とを同期させる同期部をさらに有していてもよい。たとえば、ラダー実行部８０がラダープログラムの実行を開始すると、収集部８１は時系列データの収集を開始してもよい。
【００６０】
図１１が示すように、ユーザプログラムは、制御対象の位置を制御するフローチャート形式のモーションプログラムであってもよい。図１２が示すように、決定部８２は、制御対象を特定の位置に移動させるためのポイントパラメータに基づき抽出期間を決定してもよい。図１２が示すように、ポイントパラメータの設定情報は、複数のポイント番号と、各ポイント番号ごとの制御対象の移動量（例：目標座標）と、各ポイント番号の次のポイント番号とを有していてもよい。決定部８２は、各ポイント番号の次のポイント番号に基づき制御対象の移動命令のループを検知し、当該ループに相当する期間を抽出期間に決定してもよい。
【００６１】
図９や図１０に示したように、ユーザプログラムはラダープログラムであってもよい。図９が示すように、決定部８２は、ラダープログラム３６ａに記述された命令である特定のファンクションブロックの実行周期を求め、当該実行周期を抽出期間に決定してもよい。決定部８２は、特定のファンクションブロックの実行トリガである第一信号（例：ＥＮ信号）の立ち上がり又は立ち下がりから特定のファンクションブロックの実行完了を示す第二信号（例：完了リレー）の立ち上がり又は立ち下がりまでの期間を抽出期間に決定してもよい。
【００６２】
図１３を用いて説明したように、ＰＬＣ１には高速カウンタユニットが接続されていてもよい。決定部８２は、ユーザプログラムにおいて高速カウンタユニットの動作モードが周波数カウントモードに設定されているかどうかを解析する。決定部８２は、高速カウンタユニットの動作モードが周波数カウントモードに設定されているときに、高速カウンタユニットに入力されるパルス信号の間隔に基づき抽出期間を決定してもよい。
【００６３】
ＰＬＣ１は、ユーザによるユーザプログラムの作成を支援するプログラム作成支援装置２を有していてもよい（或いは、プログラム作成支援装置２に接続されていてもよい）。図１４が示すように、決定部８２は、プログラム作成支援装置２に設けられていてもよい。このように、決定部８２はＰＬＣ１、プログラム作成支援装置２またはクラウド１２に設けられてもよい。
【００６４】
プログラム作成支援装置２は、決定部８２により決定された抽出期間を示す情報をユーザプログラムとともにプログラム記憶部３５に書き込む。抽出部８４は、プログラム記憶部３５に記憶されている抽出期間を示す情報（例：設定情報３９）に基づき時系列デバイスデータ（時系列データ９２）から個別データ９３を抽出してもよい。
【００６５】
なお、収集部８１はＩＰＣ１１、クラウド１２またはプログラム作成支援装置２のいずれに設けられていてもよい。抽出部８４や付与部８５も、ＩＰＣ１１、クラウド１２またはプログラム作成支援装置２のいずれに設けられていてもよい。なお、この場合に、ＩＰＣ１１、クラウド１２またはプログラム作成支援装置２はデータ収集装置として機能する。
【００６６】
抽出期間の開始位置と終了位置は、個別データ９３の抽出の基準位置を示す情報（例：基準時ｔｒ）と、抽出期間の時間的な長さ（例：長さＰ）を示す情報によって定義されてもよい。時系列デバイスデータは、収集部８１が複数のデバイスからそれぞれ収集したデータを含むデータ群と、当該データを収集したタイミングを示すタイミング情報とを含んでもよい。図１６などに示したように時系列データ９２においてデバイスａ〜ｄの各デバイス値はデータ群の一例である。取得時刻の情報はタイミング情報の一例である。
【００６７】
決定部８２は、複数のデバイスのうち少なくとも一つのデバイスから収集された時系列デバイスデータの周期に基づき、各抽出期間の基準位置を決定してもよい。数値入力ボックス１０５、部品に対するタクトタイムｔｔの入力を受け付ける受付部の一例である。図９に示したように、決定部８２は、複数のデバイスからそれぞれ収集されたデータの周期を求め、タクトタイムｔｔに対して相対的に近い周期のデータに基づき各抽出期間の基準位置を決定してもよい。図１０を用いて説明したように、決定部８２は、時系列デバイスデータを微分して微分エッジを求め、当該求められた微分エッジの位置を抽出期間の基準位置に決定してもよい。メニュー１０４に関連して説明したように、決定部８２は、基準位置を決定する複数の決定手法を有していてもよい。決定部８２は、ユーザにより選択された決定手法を用いて基準位置を決定してもよい。
【００６８】
決定部８２は時系列デバイスデータをフーリエ変換または自己回帰モデルにより複数のスペクトルを取得し、当該複数のスペクトルのうち相対的に大きなスペクトルの周波数の逆数を抽出期間の時間的な長さに決定してもよい。部品などのワークは一定の周期で生産または検査される。そのため、時系列データは周期性を有する。よって、ＦＦＴやＡＲモデルを用いることで比較的に正確に抽出期間の時間的な長さＰが特定されよう。図１１を用いて説明したように、決定部８２は時系列デバイスデータにおける波形の類似性に基づき抽出期間の時間的な長さＰを決定してもよい。決定部８２は、抽出期間の時間的な長さＰを決定する複数の決定手法を有しており、ユーザにより選択された決定手法を用いて抽出期間の時間的な長さＰを決定してもよい。ユーザはより適切と考える決定方法を選択しやすくなろう。たとえば、決定部８２はＦＦＴにより決定手法、ＡＲモデルに基づく決定手法、形状類似性に基づく決定手法などからユーザにより選択された決定手法を採用してもよい。決定手法を選択するためのメニューがＵＩ１００に追加されてもよい。
【００６９】
記憶装置３２はユーザプログラムを管理するためのプロジェクト情報（設定情報３９）を記憶していてもよい。収集部８１は、プロジェクト情報に基づきデバイスデータを収集される複数のデバイスを選択し、当該選択された複数のデバイスのそれぞれからデバイスデータを収集してもよい。たとえば、プロジェクト情報にはユーザにより登録されたデバック用のデバイスを指定する情報が含まれていてもよい。収集部８１や選択部８７は、デバック用のデバイスを指定する情報に基づきデバイスデータを収集される複数のデバイスを選択し、当該選択された複数のデバイスのそれぞれからデバイスデータを収集してもよい。これにより、収集対象のデバイスを指定するためのユーザの負担が軽減されよう。
【００７０】
プロジェクト情報にはユーザにより登録された表示対象のデバイスを指定する情報が含まれていてもよい。収集部８１や選択部８７は、表示対象のデバイスを指定する情報に基づきデバイスデータを収集される複数のデバイスを選択し、当該選択された複数のデバイスのそれぞれからデバイスデータを収集してもよい。
【００７１】
図２４や図２５に示したように、表示部７は、第一デバイスから収集された時系列デバイスデータの波形と、第二デバイスから収集された時系列デバイスデータの波形とを共通の時間軸上において並べて表示してもよい。図２６に示したように、表示部７は、第一デバイスから収集された時系列デバイスデータの波形と、第二デバイスから収集された時系列デバイスデータの波形とを共通の時間軸上において重ねて表示してもよい。これによりワークごとの個別データの違いをユーザは見つけやすくなろう。なお、表示部７は、ＰＬＣ１に接続され、ユーザによるユーザプログラムの作成を支援するプログラム作成支援装置２に設けられていてもよい。
【００７２】
送信部８６は、時系列データ９２や識別情報を付与された個別データ９３をクラウド１２に送信する送信部の一例である。これにより、クラウド１２は時系列データ９２から個別データを抽出してもよいし、個別データ９３をさらに詳細に分析してもよい。たとえば、クラウド１２のＣＰＵ６１は、複数の個別データ９３を比較したり、ＮＧデータを含む個別データ９３を特定したりしてもよい。ＮＧはno goodの略称である。
【００７３】
ＣＰＵ３１、５１はそれぞれ識別情報を付与された複数の個別データ９３から形成されたデータファイルを記憶装置３２、５２に記憶させてもよい。たとえば、ＣＳＶ形式やＳＱＬ形式のデータファイルが作成されてもよい。ＣＰＵ３１、５１の送信部８６はデータファイルをクラウド１２へ転送する。なお、ＣＳＶ形式やＳＱＬ形式は一例にすぎず、クラウド１２が要求する形式が採用されればよい。また、個別データ９３は、データファイルの形式で記憶されるのではなく、時系列データ９２の一部として記憶装置３２、５２に記憶されてもよい。すなわち、「個別データ９３を時系列データ９２から抽出する」とは、時系列データ９２から個別データ９３を切り出し又はコピーすることにより、時系列データ９２から分離されたデータとして抽出することは勿論、時系列データ９２中で個別データ９３に相当する部分を単に特定することをも含む。この場合、個別データ９３は、時系列データ９２から分離されず、時系列データ９２の一部として記憶装置３２、５２に記憶される。
【図１】
2019016326.tif 000003
【図２】
2019016326.tif 000004
【図３】
2019016326.tif 000005
【図４】
2019016326.tif 000006
【図５】
2019016326.tif 000007
【図６】
2019016326.tif 000008
【図７】
2019016326.tif 000009
【図８】
2019016326.tif 000010
【図９】
2019016326.tif 000011
【図１０】
2019016326.tif 000012
【図１１】
2019016326.tif 000013
【図１２】
2019016326.tif 000014
【図１３】
2019016326.tif 000015
【図１４】
2019016326.tif 000016
【図１５】
2019016326.tif 000017
【図１６】
2019016326.tif 000018
【図１７】
2019016326.tif 000019
【図１８】
2019016326.tif 000020
【図１９】
2019016326.tif 000021
【図２０】
2019016326.tif 000022
【図２１】
2019016326.tif 000023
【図２２】
2019016326.tif 000024
【図２３】
2019016326.tif 000025
【図２４】
2019016326.tif 000026
【図２５】
2019016326.tif 000027
【図２６】
2019016326.tif 000028
【図２７】
2019016326.tif 000029
【図２８】
2019016326.tif 000030
【図２９】
2019016326.tif 000031
【図３０】
2019016326.tif 000032
【図３１】
2019016326.tif 000033