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