(57)【要約】【課題】  この発明は、ＰＬＣのＣＰＵユニットから確実かつ高速でデータ収集ができるデータ収集装置及びデータ収集システムを提供すること【解決手段】  ＰＬＣのＰＬＣバス２２に接続可能なＰＬＣバスドライバ１１と、所定のタイミングに収集命令を指示する時間管理部１３と、時間管理部からのデータ収集命令を受けて、内部バスを介してＩＯメモリ２１の所定アドレスに格納されたデータを収集するとともに、その収集したデータをストレージ制御部１５に渡すレコーダ部１４を備え、ストレージ制御部は、取得したデータを、ストレージに格納する。【選択図】        図１
2004199670.tif 000002
【特許請求の範囲】
【請求項１】
所定のサイクルタイムでサイクリック処理を実行してＩＯデータを入力および出力するＣＰＵユニットに対してＰＬＣバスを介して取り付けられ、ＣＰＵユニットのＩＯデータを収集するリアルタイム処理と、大容量のストレージ部へ収集データを格納するタイムシェア処理とを行うデータ収集装置であって、
ＣＰＵユニットのサイクルタイムと同等の周期内で、リアルタイム処理期間とタイムシェア処理期間とに分割してそれぞれ処理させるための時間管理を行う時間管理部と、
前記時間管理部の管理に基づいて、リアルタイム処理期間に、ＰＬＣバスを介してＣＰＵユニットの収集対象のＩＯデータを収集して高速メモリに一時的に記憶するバスドライバ部と、
前記時間管理部の管理に基づいて、タイムシェア処理期間に、バスドライバ部が収集した収集データを一括で読み出して高速メモリよりも低速の前記ストレージ部に格納する処理を行い、ストレージ部への格納処理に要する時間が１周期内のタイムシェア処理期間内に収まらないときは、レコーダ部の格納に関する処理を複数サイクルのタイムシェア処理期間にまたがって分割して行うようにするストレージ制御部と、
を備えたことを特徴とするデータ収集装置。
【請求項２】
前記バスドライバ部と前記ストレージ制御部との間に、前記高速メモリにアクセス可能なレコーダ部を設け、
前記レコーダ部と前記ストレージ制御部との両方がアクセス可能なバッファメモリを設け、
前記レコーダ部は、前記時間管理部の管理に基づいて、リアルタイム処理期間に、高速メモリから読み出した収集データを前記バッファメモリに記憶し、
前記ストレージ制御部は、前記時間管理部の管理に基づいて、リアルタイム処理期間に、前記バッファメモリに記憶された収集データを一括で読み出す
ことを特徴とする請求項１記載のデータ収集装置。
【請求項３】
前記バッファメモリは複数周期ぶんの収集データを一時的に記憶でき、ストレージ制御部はその複数周期ぶんの収集データをバッファメモリから一括で読み出すことを特徴とする請求項２記載のデータ収集装置。
【請求項４】
前記ストレージ制御部は、バッファメモリの複数周期ぶんの収集データを一括で読み出してファイル化し、そのファイルデータを複数周期のタイムシェア処理期間にまたがってストレージ部に格納することを特徴とする請求項３記載のデータ収集装置。
【請求項５】
前記ストレージ部は、同一内容のデータを並列に格納する二重化記録構造であることを特徴とする請求項１に記載のデータ収集装置。
【請求項６】
前記時間管理部が管理する周期をＣＰＵユニットのサイクルタイムよりも短く設定したものも含むことを特徴とする請求項１に記載のデータ収集装置。
【請求項７】
請求項１から５の何れか１項に記載のデータ収集装置と、
そのデータ収集装置に接続される管理コンピュータとを備えたデータ収集システムであって、
前記管理コンピュータは、データ収集システムとの接続に伴い、データ収集装置から所定のアイテムを含む情報を得て、前記ストレージ部に格納された収集データを収集可能としたことを特徴とするデータ収集システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ収集装置及びデータ収集システムに関するものである。
【背景技術】
【０００２】
ＦＡ（ファクトリーオートメーション）で用いられるＰＬＣ（プログラマブルコントローラ）は、スイッチやセンサなどの入力機器のＯＮ／ＯＦＦ情報を入力し、ラダー言語などで書かれたシーケンスプログラム（ユーザプログラム）に沿って論理演算を実行する。そして、ＰＬＣは、得られた演算結果にしたがって、リレー，バルブ，アクチュエータなどの出力機器に対し、ＯＮ／ＯＦＦ情報の信号を出力することで制御が実行される。
【０００３】
またＰＬＣシステムは、ユーザプログラムを実行するＣＰＵユニット，入／出力機器が接続されてＯＮ／ＯＦＦ信号を扱うＩ／Ｏユニット，外部パソコンやプログラマブル表示器などのモニタ機器と接続してネットワーク通信する通信ユニット，アナログ信号を制御したり温度や位置決めの制御などを行う高機能ユニットなど、各ユニットをＰＬＣバスで接続して成り立っている。そしてＣＰＵユニットと各ユニットとの間でＰＬＣバス通信をすることによってデータをやりとりするようになっている。また、ＰＬＣシステムには、各ユニットに電力を供給する電源ユニットが取り付けてある。この電源ユニットからの電源ラインは、バスラインと同様にすべてのユニットに対して接続されている。
【０００４】
ＣＰＵユニットの処理を説明すると、まず初期処理をした後、Ｉ／Ｏユニットや高機能ユニットとの間で入／出力データ（Ｉ／Ｏデータ）を交換するＩ／Ｏリフレッシュ処理，ユーザプログラムに沿って入力データを論理演算するプログラム実行処理，主に通信ユニットによりネットワークを通じて外部とデータ交換をしたり、外部からのメッセージ要求処理などを行う周辺処理、といった各処理をサイクリックに実行する。なお、一般に各処理が行われる１サイクルに所要する時間は、サイクルタイムと言われる。
【０００５】
ＣＰＵユニットはＩＯメモリを持っており、そのＩＯメモリにＩＯユニットや高機能ユニットからの入力データを格納するとともに、ユーザプログラムを実行した結果を出力データとして格納するようになっている。ＣＰＵユニットは、出力データをＩＯユニットや高機能ユニットに送り、それらユニットは受け取った出力データに基づいて出力機器を動作させる。
【０００６】
またモニタ機器は、通信ユニットを介してＰＬＣに接続され、外部からＣＰＵユニットに対してアクセス通信し、ＩＯメモリに格納されたデータを読んだり、所定のデータをＩＯメモリに書き込む。この種の機器には、例えば各種のモニタツールやプログラマブル表示器がある。なお、これらモニタ機器の一部には、通信ユニットを介してＰＬＣに接続するのではなく、ＣＰＵユニットのシリアル通信ポートを経由してネットワーク接続するものもある。さらに、モニタツールやプログラマブル表示器の中には、所定のタイミングで周期的にＩＯメモリに格納されたＩＯデータを収集し、その収集データを順次格納して記憶保持することにより、ＰＬＣの履歴（ＩＯデータがどのように変化したかの履歴）を確認できるようにしたものもある。この履歴を確認することにより、ＰＬＣの動作状態の履歴や被制御機器への制御履歴を知ることができる。上記した従来のシステムは、特許文献１，２などに示されている。
【０００７】
【特許文献１】特開平５−３２４０１５号公報
【特許文献２】特開２００１−８４０１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記の従来のシステムでは、モニタツールなどのモニタ機器がＰＬＣに対してＲＳ２３２Ｃ等のシリアル通信またはネットワークを介して接続されていたため、データの転送に時間を要していた。よってＰＬＣのサイクルタイムごとに外部のモニタ機器でＰＬＣのデータを収集しようとする場合には、データ通信のための周辺処理時間が非常に長くなって、その分、全体のサイクルタイムが長くなり、本来の被制御機器（入出力機器）に対する制御の応答速度が遅くなるといった問題点があった。よって、ＰＬＣの制御の応答速度が遅くすることなく、ＰＬＣのサイクルタイムごとのデータを収集したいという要望を満たすことができなかった。さらには、ＰＬＣの制御の応答速度を遅くすることなく、ＰＬＣのサイクリック処理ごとのＩＯデータを収集することができなかった。
【０００９】
この発明は、ＰＬＣの制御の応答速度を遅くすることなく、ＰＬＣのサイクルタイムごとのＩＯデータを確実に収集することができるデータ収集装置及びデータ収集システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
この発明によるデータ収集装置は、所定のサイクルタイムでサイクリック処理を実行してＩＯデータを入力および出力するＣＰＵユニット（２０）に対してＰＬＣバス（２２）を介して取り付けられ、ＣＰＵユニットのＩＯデータを収集するリアルタイム処理と大容量のストレージ部（１６）へ収集データを格納するタイムシェア処理とを行うデータ収集装置（１０）であって、ＣＰＵユニットのサイクルタイムと同等の周期内でリアルタイム処理期間とタイムシェア処理期間とに分割してそれぞれ処理させるための時間管理を行う時間管理部（１３）と、時間管理部の管理に基づいてリアルタイム処理期間にＰＬＣバスを介してＣＰＵユニットの収集対象のＩＯデータを収集して高速メモリ（１２または１１ａ）に一時的に記憶するバスドライバ部（１１）と、時間管理部の管理に基づいてタイムシェア処理期間にバスドライバ部が収集した収集データを一括で読み出して高速メモリよりも低速の前記ストレージ部に格納する処理を行い、ストレージ部への格納処理に要する時間が１周期内のタイムシェア処理期間内に収まらないときは、レコーダ部の格納に関する処理を複数サイクルのタイムシェア処理期間にまたがって分割して行うようにするストレージ制御部（１５）とを備えたものである。なお符号は、各構成要件に対応する実施の形態の部材のものを便宜上付けたもので、本発明の技術的範囲が符号に特定される構成に限定されるものではない。
【００１１】
本発明によれば、データ収集装置の処理周期をＣＰＵユニットのサイクルタイムと同等（またはそれ以下）とすることで、１周期ごとにＰＬＣバスを介して高速にデータ収集できる。その収集したデータはＣＰＵユニットの１サイクルごとのＩＯデータであるので、ＰＬＣの毎サイクルのデータを獲得することができる。また、ストレージ制御部が収集したデータをすべてストレージ部へ格納する。よって確実にデータを収集し記録することができる。
【００１２】
ここで、「ＰＬＣバスを介してデータ収集する」とは、データ収集装置とＣＰＵユニットとをつなぐＰＬＣバスラインを使って、ＣＰＵユニットのＩＯメモリに記憶されたデータにアクセスして収集することであり、幾つかの方式で実現できる。例えば、データ収集装置にイベントメモリを設けるとともにＣＰＵユニットにデータ要求をし、ＣＰＵユニットがその要求に応じたデータをレスポンス信号としてデータ収集装置に返信し、データ収集装置がそれをイベントメモリに記憶させる方式である。他に、データ収集装置が持つイベントメモリとＣＰＵユニットのＩＯメモリとの間でデータリンク（連続したメモリエリア同士で一括して共有化する技術）してデータ交換するものでもよい。なお、ＣＰＵユニットのＩＯメモリをデータ収集ユニットにとって共有メモリの扱いとし、データ収集装置はＣＰＵユニットのメモリを読み出し、読み出したデータを直接バッファに一時的に蓄積することでもよい（実施の形態に照らして言うと、イベントメモリ１２を省略し、バッファをＰＬＣバスドライバ１１の内部メモリ１１ａとする構成である。この場合は内部メモリ１１ａに記憶した収集データをレコーダ部１４がバッファ１７に転送し記憶するような構成となる。他の構成例ではレコーダ部１４がＰＬＣバスを経由して直接ＣＰＵユニットのメモリを読み、読出データをバッファ１７に保存するような構成でもよい）。
【００１３】
「高速メモリに一時的に記憶する」とは、バスドライバ部１１が、比較的高速な記録媒体に収集データを保管することである。実施の形態では記憶ドする場所を、レコーダ部１４とストレージ制御部１５との間に設けたバッファ１７としている。実施の形態では、リアルタイム処理部をなす、プロセッサにより行われる。
【００１４】
なお、本発明のデータ収集装置は、ＰＬＣシステムを構成するユニットの１つとして実現することができる。つまり、ＰＬＣバスと接続可能であればよく、いわゆるビルディングブロック式のユニットタイプや、小型ＰＬＣのユニットタイプでなくてもよい。例えば、ベースユニットのバスラインコネクタに引き出しケーブルで接続するような装置タイプであってもよい。すなわち、ＰＬＣとは別の装置として構成することは妨げない。
【００１５】
また、より好ましい形態では、バスドライバ部とストレージ制御部との間に高速メモリにアクセス可能なレコーダ部を設け、レコーダ部とストレージ制御部との両方がアクセス可能なバッファメモリを設け、レコーダ部は時間管理部の管理に基づいてリアルタイム処理期間に高速メモリから読み出した収集データを前記バッファメモリに記憶し、ストレージ制御部は時間管理部の管理に基づいてリアルタイム処理期間にバッファメモリに記憶された収集データを一括で読み出すような構成にすることができる。
【００１６】
ここでの「バスドライバ部」は、少なくともＣＰＵユニットのＩＯメモリにアクセスする機能を持たせたものであり、必ずしも、バスドライバ部自身がＣＰＵユニットのＩＯデータを収集する機能や収集データを記憶する機能を持っていなくもよい。ＰＬＣバスを介してデータ通信をする方式については、前述のようにイベント要求方式（この場合はバスドライバ部自身がデータ収集機能をもつ）でも、データリンク方式（この場合はバスドライバ部自身がデータ収集機能を持っても持たなくても良い）でも、共有メモリ方式（同左）でもよい。
【００１７】
さらに、これらのデータ収集装置においては、ストレージ部の構成を、同一内容のデータを並列に格納する二重化記録構造とするのが望ましい。こうすることで、収集データの記録の信頼性が向上する。
【００１８】
これらのうちのいずれかのデータ収集装置と、そのデータ収集装置に接続される管理コンピュータとを備えたデータ収集システムであって、管理コンピュータは、データ収集システムとの接続に伴い、データ収集装置から所定のアイテムを含む情報を得て、ストレージに格納された収集データを収集可能とするデータ収集システムを構成することができる。これにより、データ収集装置が実時間で収集したデータを管理コンピュータで取得し、各種の解析や保管等が行える。
【発明の効果】
【００１９】
以上のように、この発明では、ＰＬＣのＣＰＵユニットのサイクルタイムを延ばすことなく、ＣＰＵユニットの毎サイクルごとのＩＯデータを確実に収集することができる。
【発明を実施するための最良の形態】
【００２０】
図１は、本発明の好適な一実施の形態を示している。本実施の形態におけるデータ収集ユニット１０は、ＰＬＣシステムに取り付けられてＰＬＣを構成するユニットの１つであり、ＣＰＵユニット２０とＰＬＣバス２２を介して接続される。もちろん、他のユニットともバス接続してもよい。そしてＣＰＵユニット２０は、ＰＬＣバスを介してＩＯユニット（図示せず）を接続していて、そのＩＯユニットにはＩＯデバイス３０が接続されている。ＩＯデバイス３０は、例えばオン・オフ動作をするセンサやスイッチ等の入力機器や、アクチュエータやパワーリレー等の出力機器のことである。そしてＣＰＵユニット２０のＩＯメモリ２１は、ＩＯデバイスの入力機器のオンオフ状態に関するデータおよび出力機器の動作状態に関するデータを格納している。
【００２１】
データ収集ユニット１０の構成を図１に基づいて説明をする。ＰＬＣバスドライバ１１は、ＰＬＣバス２２に対して通信制御をするものである。このＰＬＣバスドライバ１１は、ＩＣ回路化されたＡＳＩＣチップの形態となってデータ収集ユニット内のプリント基板に実装されている。イベントメモリ１２は、ＣＰＵユニット２０のＩＯメモリ２１から読み出したＩＯデータを一時格納するもので、プロセッサに内蔵されている高速メモリである。このイベントメモリ１２は、具体的には古いデータが格納されたエリアを新しいデータに順次上書き更新するリングバッファの構成となっている。また、イベントメモリ１２は、レコーダ部１４からアクセス可能で、またＰＬＣバスドライバ１１からもアクセス可能であり、レコーダ部１４からの処理要求をＰＬＣバスドライバ１１に伝えるためのものである。時間管理部１３は、レコーダ部１３およびストレージ制御部１５に対して動作指示を与えるもので、データ収集ユニット１０におけるデータ収集の動作タイミングを制御する部分である。レコーダ部１４は、ＣＰＵユニット２０のＩＯメモリ２１のデータ読み出し要求を生成し、ＰＬＣバスドライバ１１を動作させるものである。さらにこのレコーダ部１４は、ＩＯメモリ２１から収集してきたデータをイベントメモリ１２から読み出す動作に関与する。ストレージ制御部１５は、イベントメモリに格納されたデータをストレージ１６へ格納するための制御をするものである。なお、これら時間管理部１３とレコーダ部１４とストレージ制御部１５は、一つのプロセッサからなるハードウエア構成となって、この図１では３つの機能ブロックに分けて開示している。ストレージ１６は大容量のメモリであり、その書き込み処理のスピードはイベントメモリ１２に比べてずっと低速である。ウインドウズ・ファイル・サーバ・インタフェース１９ａ、ＦＴＰ（ファイル転送プロトコル）・サーバ・インターフェース１９ｂ、メッセージ通信インタフェース１９ｃは、いずれもイーサネットを介して外部機器と接続するためのインタフェースである。
【００２２】
このデータ収集ユニット１０は、ＰＬＣバスに接続されていることでＣＰＵユニット２０内のＩＯメモリ２１に格納されたデータを、ＰＬＣバス経由で読み出して収集することができるようになっている。なお、このデータ収集ユニット１０は、ＣＰＵユニットの電源供給系統と同じ系統で電源供給がされるようになっていて、ＣＰＵユニットを含むＰＬＣシステム全体が稼動していればデータ収集ユニット１０も確実に稼動し、データ収集を継続する。
【００２３】
データ収集ユニット１０は、前述のようにＰＬＣバスドライバ１１を備えており、そのＰＬＣバスドライバ１１を介してＰＬＣバス２２に接続される。そしてデータ収集ユニット１０は、ＰＬＣバス・サイクリック通信によりＣＰＵユニット２０のＩＯメモリ２１に格納されたデータを取得する。
【００２４】
バス・サイクリック通信とは、データ収集ユニット１０の中で独自に制御されるもので、具体的にいうと、データ収集ユニット１０がＰＬＣバス２２を介してＰＬＣのＣＰＵユニット２０との間で行うデータ通信処理であり、処理の詳細は図２や図６で後述する。バス・サイクリック通信は、相手のＰＬＣのＣＰＵユニット２０においてはサイクリック処理のうち周辺処理中に行われる。
【００２５】
つまり、このバス・サイクリック通信によって、データ収集ユニット１０が自らＰＬＣバス２２を介してＣＰＵユニット２０に対してＩＯメモリ２１へのデータアクセス要求を出す。この動作の詳細を述べると、時間管理部１３が、自らのタイミング制御によってレコーダ部１４に対して動作指示をし、レコーダ部１４がその指示によってＩＯメモリデータ読み出しをする要求をイベントメモリ１２に対して出力する。そしてＰＬＣバスドライバ１１がその要求をイベントメモリを経由して受信することで、バス・サイクリック処理を実行するようになっている。そのバス・サイクリック処理により、ＣＰＵユニットがその要求を受信し、周辺処理の中でレスポンス信号を生成する。要求されたＩＯメモリ２１のデータは、そのレスポンス信号の中に含まれてデータ収集ユニット１０へ返信される。そして、ＩＯメモリ２１から読み出したデータは、ＰＬＣバスドライバ１１によってイベントメモリ１２に格納される。
【００２６】
さらに、データ収集ユニット１０は、バス・サイクリック通信とは別にバス・メッセージ通信も可能となっている。バス・メッセージ通信とは、データ収集ユニット１０が、外部機器からネットワークを経由してデータ収集ユニット１０に届いたメッセージコマンドを、ＰＬＣバス２２を介してＣＰＵユニット２０のメッセージサービス処理部２４に送信し、メッセージサービス処理部２４からそのレスポンスを受け取るような通信処理のことを言う。
【００２７】
つまり、データ収集ユニット１０は外部機器とメッセージ通信インタフェース１９ｃを介してネットワーク接続できるようにもなっていて、言わば通信ユニットの一部の機能を併せ持つ構成となっている。データ収集ユニット１０は、外部機器から受け取ったメッセージをＣＰＵユニット２０へ送信し、ＣＰＵユニットからそのメッセージに対するレスポンスを受け取り、受け取ったレスポンスを外部機器に送信する。このように外部機器は、このバス・サイクリック通信を利用してＣＰＵユニット２０との間でデータの送受信が行えるようになっている。なお、このバス・メッセージ通信も、ＣＰＵユニットが実行するサイクリック処理のうち周辺処理の中で行われる処理の一つである。
【００２８】
以上のバス・サイクリック通信およびバス・メッセージ通信を利用して、データ収集ユニット１０がＰＬＣのどのようなデータをどのようなタイミングで収集するかを設定できるようになっている。なお図１中では、バス・サイクリック通信の線とバス・メッセージ通信の線との２本が別々に書かれているが、物理的には共通であり、一つのバスラインである。
【００２９】
図２は、ＩＯメモリ２１からのデータ読み出しに関わる動作を示している。まず、データ収集ユニット１０の時間管理部１３がレコーダ部１４に対して動作指示をし、レコーダ部１４がデータ読み出し要求を生成し、イベントメモリに記憶する。ＰＬＣバスドライバ１１はイベントメモリ１２を定期的に監視しているので、イベントメモリ１２に読出要求が記憶されたことを時間遅れなく判読する。そして、ＰＬＣバスドライバ１２は読出要求に従って予め定められた動作をし、ＣＰＵユニット２０のＩＯメモリ２１の所定アドレスにアクセスし、ＩＯメモリ２１の所望のデータ（ＣＩＯ，ＤＭ）を読み出す。読み出されたデータは、ＰＬＣバスドライバ１１の内部メモリ１１ａに取り込まれる。この取り込む処理に要する時間は微小で、ＣＰＵユニット２０のサイクルタイムに比べて充分短い時間となっている。その後、すぐさまＰＬＣバスドライバ１１が、この内部メモリ１１ａに取り込んだデータを、イベントメモリ１２の所定エリアに記憶する。つまり図２に示すように、内部メモリ１１ａにはＣＩＯ´、ＤＭ´が取り込まれていて、イベントメモリ１２にもＣＩＯ´、ＤＭ´が格納される。この格納に要する時間も微小で、ＣＰＵユニット２０のサイクルタイムに比べて充分短い時間である。
【００３０】
このＰＬＣバスドライバ１１がＩＯメモリ２１の読み出してイベントメモリ１２に格納する処理を行うための所要時間は非常に短く、ＰＬＣのサイクルタイムに比べて充分短い。なお、読み出したデータはＰＬＣバスドライバ１１の内部メモリ１１ａに取り込まれるが、内部メモリ１１ａはデータを読み出すごとに上書きされる構成なので前のデータが残らない。よって、ＰＬＣバスドライバ１１は、読み出し処理をするたびにイベントメモリ１２へ読出しデータを格納するようにしている。イベントメモリ１２は、複数〜数１０サイクルぶんの読出しデータを格納することができるぐらいには充分な容量をもつ。
【００３１】
このようなＰＬＣ（ＩＯメモリ２１）へのアクセス手順はユーザによって予めデータ収集ユニット１０に設定されている。設定される情報は、ＰＬＣのＩＯメモリのどのアドレスを読み出すかに関する情報で、例えば読み出す対象のメモリ（複数のメモリが存在する場合、どのメモリなのかを特定するため）、メモリのエリアの初めのアドレスと終わりのアドレス（読み出し範囲）、読み出すデータ量などとなる。具体的には、図中のマップ設定１１ｂに示されているように、ＩＯメモリ２１のＣＩＯエリアの０チャネルから５１２チャネルまでの連続したエリア、およびＤＭエリアの５００チャネルから１００チャネルぶん（つまり６００チャネルまで）の連続したエリアと設定されている。なお、読み出す対象のユニットの号機番号、メモリの読出し範囲（メモリエリア）を設定すれば、図示のＣＰＵユニット以外にも、ＰＬＣバスでつながっている他ユニットが持つデータをデータ収集することができる。
【００３２】
つまり、データ収集ユニット１０の読み取り動作により、マップ設定１１ｂの格納情報をもとに、ＰＬＣバスドライバ１１の内部メモリ１１ａの所定エリア（ＣＩＯ´、ＤＭ´）のデータ内容を、ＰＬＣのＩＯメモリの所定アドレス範囲のデータ内容と同一にすることができる。さらに、マップ設定１１ｂの情報をもとに、ＰＬＣバスドライバ１１の内部メモリ１１ａの所定エリアのデータを、イベントメモリ１２の所定エリアに読出結果データとして記憶することができる。なおイベントメモリ１２の読出結果データは、後述するようにレコーダ部１４に送られる。
【００３３】
次に、時間管理部１３、レコーダ部１４、ストレージ１６、インタフェース１９について、より詳細な構成・機能を追加説明しておく。
【００３４】
時間管理部１３は、タイマ機能により経過時間を監視することが可能で、一定間隔で周期的にタイマ割込みが生じるようになっている。そのタイマ割込みによって一定間隔毎にレコーダ部１４に対してＣＰＵユニット１０のデータを読み出す旨の動作指示を出力する。これはレコーダ部１４にデータ収集命令を指示することを意味する。この収集命令を出す周期はタイマ機能によって予めユーザが任意に設定できる。また、レコーダ部からデータ収集完了の通知を受け取る構成となっている。
【００３５】
ここで図３に基づいて時間管理部１３の動作について説明する。まずは事前にタイマ機能の周期タイマをセットしておく（ＳＴ１）。このセットはユーザによって行われ、ここではユーザが事前にＣＰＵユニット１０のサイクルタイムを別途算出して求めておき、周期タイマ（タイマ機能のタイマ割り込み周期）をそのサイクルタイムの周期と同じ周期に設定しておく。そして、時間管理部１３は係るタイマ割り込みが発生するのを待ち（ＳＴ２）、タイマ割り込みが発生したならば、レコーダ部１４に対して収集命令を発する（ＳＴ３、図１の動作指示）。その後、レコーダ部１４から収集完了の通知を受信するのを待つ（ＳＴ４）。そして、収集完了の通知（図１の動作報告）を受信したならば、ステップ２に戻り、周期タイマに基づく次のタイマ割り込みの発生を待つ。なお、時間管理部１３がレコーダ部１４およびストレージ制御部１５に対して収集したデータをストレージ１６に格納するための制御については図６、図７のところで後述する。
【００３６】
レコーダ部１４は、時間管理部１３からのデータ収集命令を受信すると、ＰＬＣバスドライバ１１に対して読出要求を出す。その後のレコーダ部１４は、図２で説明した動作をＰＬＣバスドライバ１１にさせる。レコーダ部１４がＰＬＣバスドライバ１１に動作させる仕組みを具体的に言うと、まずレコーダ部１４がイベントメモリ１２の予め定められたビットフラグ（収集処理フラグ）を立てる。ＰＬＣバスドライバ１１は常にイベントメモリ１２のビットフラグの状態を読み出しているので、そのフラグがＬＯＷからＨＩＧＨになったことを判読すると、ＣＰＵユニット２０のＩＯメモリ２１の予め定められた所定の変数データ（ＩＯデータ）を読み出すようになっている。これら一連の動作を終えた後、レコーダ部１４は収集完了の旨を時間管理部に通知する。なお、収集したデータをストレージ１６に格納する際のレコーダ部１４の動作については、図６、図７のところで後述する。
【００３７】
ストレージ１６は大容量の記録媒体であり、たくさんの収集データを長時間連続して記録保存するものである。このストレージ１６は例えば、メモリカード、コンパクトフラッシュメモリ、フラッシュメモリカードなどを用い、データ収集ユニット１０に対して着脱自在で交換できるようにしてもよい（図８でも後述）。もちろん、他の記録媒体でも良く、データ収集ユニット１０に初めから内蔵していて交換を想定しないものでも良い。また、メモリカードの一例ではＰＣカード型ハードディスクがある。このＰＣカード型ハードディスクは、現在５ＧＢの容量のものが市販されているので、収集するデータの種類やデータ数にもよるが、例えば数日間分の読出データを連続して保持することができるであろう。
【００３８】
そしてストレージ１６は、１サイクルごとにＩＯメモリ２１から収集した収集データ（読出データ）を格納するデータ記録部１６ａと、データ収集ユニット１０の全体の動作履歴や異常・故障の履歴を格納する動作記録部１６ｄを備えている。データ記録部１６ａへの格納はストレージ制御部によってなされる。このデータ記録部１６ａの容量は、イベントメモリ１２に比べると莫大である。動作記録部１６への動作記録は時間管理部１３によってなされる。またストレージ１６はＯＰＣアイテム記録部１６ｂとＳＣＡＤＡプロジェクト１６ｃと動作記録部１６ｄを備えている。ＯＰＣアイテム記録部１６ｂは、収集すべきデータを特定するための情報をＸＭＬ形式で記述したＯＰＣのＩｔｅｍ定義を記録するものである。そして、このＸＭＬでの記述は、ＰＬＣで使われるタグ名とそのタグ名に対応した実際に収集すべきデータのＩＯメモリのアドレス情報等を関連付けていて、必要に応じてマップ設定１１ｂの情報を合わせることで、収集したデータとタグ名が関連付けられるので、ユーザは、収集したデータのタグ名を知ることにより、その収集したデータの内容を容易に理解することができる。
【００３９】
ＳＣＡＤＡプロジェクト１６ｃには、ＳＣＡＤＡソフトと同様の機能が格納されている。具体的には、「ＰＬＣの変数データを収集する機能」，「収集した変数データを時系列に記録する機能」，「記録した時系列の変数データを画面に表示する機能」，「収集した変数を実時間に表示する機能」などがある。これら各機能を適宜に実行することにより、収集したデータの表示等が行える。なお、表示についてはデータ収集ユニット１０につなげた外部装置，管理コンピュータにて表示させるようにしてもよい。
【００４０】
なお、データ収集ユニット１０は、Ｗｉｎｄｏｗｓ（登録商標）ファイルサーバインタフェース１９ａやＦＴＰサーバ１９ｂを備えている。これにイーサネット（登録商標）などのネットワークを接続することで、他のコンピュータやモニタ機器等からデータ収集ユニット１０のストレージ１６にアクセスし、収集データを参照することができるようになっている。つまり、データ収集ユニット１０を標準ネットワーク上のファイルサーバとして利用するわけである。
【００４１】
次に、上記した時間管理部１３，レコーダ部１４並びにストレージ制御部１５のより具体的な動作を説明する。図６はそれらの動作のタイムチャートであり、ＣＰＵユニット２０の１サイクルごとのデータを収集し、ストレージ１６に格納する動作を示している。この図の横軸は、構成各部の処理の流れと読出データの流れを示している。縦軸は時間で、データ収集ユニット１０におけるデータ収集からデータ記録までの１回分のサイクリック処理を示している。このサイクリック処理の周期は前述のように時間管理部１３のタイマ機能への設定次第であるが、ＣＰＵユニット２０のサイクルタイムに一致するように予め設定しておく。なお、設定可能な時間は短周期だとデータ収集ユニット１０のマイクロプロセッサの能力とイベントメモリの書き込み処理速度に依存するが、１ｍｓ〜５ｍｓ、５ｍｓ〜数１０ｍｓまでを可能としている。長周期についてはユーザ用途の必要によって数１０ｍｓから数秒，または数分以上に設定することも可能であるが、ＣＰＵユニット２０のサイクルタイムよりも長い周期を設定してもＰＬＣのサイクルタイムごとのデータを収集できないのであまり意味がない。普通、ＣＰＵユニットのサイクルタイムは高速のものだと１ｍｓ〜５ｍｓ、ＩＯ点数が増えると５ｍｓ〜数１０ｍｓのものが多い。この図では周期を２０ｍｓとした場合を例とする。
【００４２】
図６のように、データ収集ユニット１０は、時間管理部１３でタイマ割込が２０ｍｓ毎に生じ、その間の１周期でリアルタイム処理とタイムシェア処理とを行う。リアルタイム処理は、主に図２のところで説明したようにデータ収集ユニット１０がＰＬＣのＣＰＵユニットの１サイクルごとに変化するＩＯデータ（変数データ）を収集する処理である。タイムシェア処理は、ストレージ制御部１５がストレージ１６に収集データ（読出データ）を格納する処理である。なお、ストレージ１６へのデータ格納処理は、あるひとつの周期期間中のリアルタイム処理にて収集した収集データをその周期期間中のタイムシェア処理で完結させることができないので、複数周期ぶんの収集データを複数周期にまたがる複数回のタイムシェア処理によって行うようにしている（詳細は図７のところで説明する）。
【００４３】
リアルタイム処理は、まず、時間管理部１３がタイマ割込によりレコーダ部１４にデータ収集の開始指令（データ収集命令）を出す。レコーダ部１４はそれを受けてイベントメモリ１２の収集処理フラグを立てて、ＰＬＣバスドライバ１１がそのフラグに基づいてＣＰＵユニット２０のＩＯメモリ２１へのデータ収集処理を始め、ＣＰＵユニット２０から所望のデータを得る。
【００４４】
このときのＣＰＵユニット２０側の処理内容を詳しく言うと、ＰＬＣバスドライバ１１からＣＰＵユニット２０に対してデータ要求コマンドが送られてくる。ＣＰＵユニット２０はデータ要求コマンドを受け取ると、ＣＰＵユニット２０はいったん内部のバッファ（図示せず）にコマンド要求内容を記憶するとともに、コマンド要求を受け取った旨の所定フラグを立てておく（ＣＰＵユニット２０は周辺処理期間に限らず、起動中であればいつでもこのバッファ記憶とフラグの処理ができる）。そして、ＣＰＵユニット２０の処理においてサイクリック処理の周辺処理期間に入ると、ＣＰＵユニット２０がこのフラグを読んで、フラグがＯＮになっているとデータ収集ユニット１０からデータ要求を受けていると判断し、ＯＦＦだと要求なしと判断する。フラグがＯＮになっている場合には、ＣＰＵユニット２０は、ＣＰＵユニット内部のバッファの要求コマンドを読み出し、その要求コマンドに基づいてＩＯメモリ２１の所定エリアの変数データをＰＬＣバスドライバ１１に送信する（なお別方式として、ＣＰＵユニット２０がＰＬＣバスを介して、ＣＰＵユニット２０のＩＯメモリ２１の読み出し対象エリアとＰＬＣバスドライバ１１の内部メモリ１１ａとの間をデータリンクするような処理をしてもよい。また逆にＰＬＣバスドライバ１１がＣＰＵユニット２０のＩＯメモリ２１に対してデータリンクすることでもよい。なおデータリンクとは複数のメモリ同士の間でデータを共有する技術で、あるひとつのメモリの予め定めた連続したメモリエリア内のデータを他のメモリの同じサイズの連続したメモリエリアに転送して、互いのメモリエリアを同一のデータにするものである。これらの場合はＣＰＵユニット２０またはＰＬＣバスドライバ１１のいずれかのバスアービタ手段によってバス通信制御がされる）。そしてＣＰＵユニット２０は、この周辺処理期間中にその他の要求処理がさらにあればその処理を行い、すべての処理が終わるかタイムアウトする（タイムアウトした場合は他の要求処理は中断されることとなる）ことで周辺処理を終了し、次サイクルのサイクリック処理に移る。
【００４５】
さてリアルタイム処理の説明に戻り、ＰＬＣバスドライバ１１は、ＣＰＵユニット２０（正確にはＣＰＵユニット１０に内蔵されたＩＯメモリ２１）から収集したＩＯデータをイベントメモリ１２に転送し記憶させる。ＰＬＣバスドライバ１１は収集処理を完了するとイベントメモリの完了フラグを立てる。レコーダ部１４はその完了フラグをイベントメモリ１２から読み出す。それと同時にレコーダ部１４は、イベントメモリ１２に格納された収集データを読出し、バッファ１７に格納する。このバッファ１７への格納は、ＣＰＵユニットからＩＯデータを読み出すごとに毎回のリアルタイム処理のなかで行う。そしてレコーダ部１４は時間管理部１３に読出完了通知をするとともにストレージ制御部１５に記録依頼をする。この読出完了通知は、レコーダ部１４がストレージ制御部１５に対してリアルタイム処理期間からタイムシェア処理期間に切り替えるよう依頼をすることを意味する。また記録依頼はレコーダ部１４がストレージ制御部１５にストレージへの格納処理をさせることを意味する。（なおこの格納処理については図７にて具体的に述べるが、あるサイクルのタイムシェア処理ではバッファ１７から読出データを読み出す（ジャーナル書出し）動作をし、違うサイクルタイムシェア処理ではストレージ１６へ読出データを格納する動作をすることとなる）。これら一連の処理は、実際にはいずれもデータ収集ユニット１０に内蔵されたプロセッサの内部処理によって行われる。以上のリアルタイム処理は、一連の動作として連続して行われ、かつ高速に処理される。
【００４６】
さて、ここでレコーダ部１４が行う処理について図４のフローチャートに基づいて説明する。まずは事前に初期処理として収集テーブルを作成する（ＳＴ１１）。この収集テーブルはどのようなデータを収集するかに関する情報を登録するものである。その内容は、ストレージ１６のＯＰＣアイテム記録部１６ｂに格納されたタグ情報から、収集すべき対象のデータを特定して、その情報をテーブル化する。この収集テーブルは、収集データに関する項目名の意味を表すヘッダ（先頭行），レコードの順序を表すインデックス番号，レコードの取得時刻１（年月日，時分秒），レコードの取得時刻２（より細かい単位のミリ，マイクロ，ナノ秒），収集した変数の値（複数個）を関連付けて格納するようになっている。
【００４７】
次いで、レコーダ部１４は、ストレージ制御部１５との間での通信接続を行う。この通信接続には、ストレージ制御部１５とストレージ１６と間のデータの書き込み、読み出しが正しく行えるように各部の関係を確立するステップと捉えても良い。（ＳＴ１２）事前の準備を終えた後、レコーダ部１４は時間管理部１３からの収集指示を受信するのを待つ（ＳＴ１３）。そして、収集指示を受信すると（図１の動作指示）、ＰＬＣバスドライバ１１に対してＩＯメモリ２１のデータ読み出しを実行させるためにイベントメモリ１２のデータ読出フラグを立てる（ＳＴ１４）。次にレコーダ部１４は、ストレージ制御部１５に記録依頼をする。このときイベントメモリ１２に格納された収集データをストレージ制御部に送信し、ストレージ制御部１５はタイムシェア処理を行ってストレージ１６へ収集データの一部を格納し始める（ＳＴ１５）。それとほぼ同時にレコーダ部１４は時間管理部１３に対して収集完了を通知する（ＳＴ１６、図１の動作報告）。この通知の後、レコーダ部１４はタイムシェア処理を経て、再び時間管理部１３からの収集指示を受信するのを待つ（ＳＴ１３）。
【００４８】
続いて、タイムシェア処理として、ストレージ制御部１５がストレージ１６へ収集データの記録を始める。具体的な処理手順は図７のところで説明する。このとき時間管理部１３は、周期時間を計時していて、設定した周期（２０ｍｓ）に達するとタイマ割込みによって次サイクルの処理の開始指令をレコーダ部１４とストレージ制御部１５に対して出す。これにより、レコーダ部１４は再びデータ収集処理を始め、ストレージ制御部１５の記録処理は中断され、記録処理の続きは次のサイクルのタイムシェア処理中にて行われる。
【００４９】
レコーダ部１４、ストレージ制御部１５、ストレージ１６におけるデータの書き込み手順とその構成を図７に示す。この図７の構成・手順によって収集データを効率的にストレージ１６へ格納する処理を実行可能としている。この背景には、大容量のストレージ１６に読出データを格納する際の処理速度は速くないので、図６で説明した１周期内のタイムシェア処理の時間ではデータを格納し終えることができない場合が多いという事情がある。また、ストレージ１６は、格納するデータ量が非常に多くても少なくても格納するための処理時間はほぼ一定という特性をもっている。つまりストレージ１６がデータを書き込む時間そのものは、書き込むデータ量の大小にあまり依存せず、ストレージ自体の性能に依存している。コンパクトフラッシュメモリの場合はその時間は大体１０〜数１０ｍｓであり、記録媒体の種類によってはそれ以上の時間が必要となる。さらに、その格納処理を途中で中断することが可能であり、かつその途中から格納処理を再開できる特性をもっている。これは格納処理を複数回に分割してもよいことを意味する。よって複数周期のタイムシェア処理にまたがって分割の格納処理を行うことで、格納処理時間を複数回分合わせた合計時間とすることができ、その格納時間を確保することができるわけである。この実施形態では、この特性をうまく利用して毎サイクルことの収集データをもれなくストレージ１６へ格納するようにしている。
【００５０】
図７においてレコーダ部１４とストレージ制御部１５との間に高速バッファメモリ１７が設けられている。図１では図示を省略していたが、このバッファ１７は、レコーダ部１４とストレージ制御部１５との両方からアクセスできるものである。またバッファメモリ１７はサイクル複数回ぶんの読出データを一時保管できるものである。図では１０回ぶんの読取データを保管するような構成としている。
【００５１】
次に処理手順を説明すると、レコーダ部１４は「ＰＬＣの読み出し」ステップの動作によってＰＬＣのＩＯデータをＩＯメモリ２１からイベントメモリ１２に格納する（実際にはＰＬＣバスドライバ１１の動作によって行われる）。次の「バッファへ書き込み」のステップで、レコーダ部１４はイベントメモリ１２に格納された収集データを読み出し、バッファ１７の所定のエリアに書き込む。この書き込み動作は図６で説明したリアルタイム処理の１サイクル毎に行い、毎サイクル繰り返す。バッファ１７のエリアは複数に分けられていて、レコーダ部１４は１サイクル毎に収集した収集データを読出データエリア１〜１０…のうち特定の１つのエリアに順次記憶する。図で示すバッファ１７の読出データ１，２，…，１０は、ある１回目のサイクルから１０回目のサイクルまでの読出データが格納されていることを意味している。
【００５２】
一方、ストレージ制御部１５は、バッファ１７から複数サイクル分の読出データを一括して読み出す。そして、読出した読出データをジャーナルに加工し、ジャーナルファイルの形でストレージ１６（データ記録部１６ａ）の所定エリアに記録する。ジャーナルとは、 バッファに記録されたデータをストレージのデータ領域へ格納する動作を行なう前に、ストレージ制御部がバッファのデータ内容を書き出すログファイルをいう。このジャーナルファイルは予め作成しておき、このジャーナルファイルに書き出したデータをストレージ１６に格納する（図７に示すように読出データ１、２〜１０が格納される）。この格納動作は、図６のところで説明したように複数サイクル分のタイムシェア処理時間で分割して行われる。なお、何サイクル分の読出データをジャーナルに加工するかは、予めユーザがデータ収集ユニット１０に対して設定しておく。これは時間管理部１３のサイクル周期内のタイムシェア処理の時間とストレージ１６のデータ格納処理時間（記憶速度）との関係で決まる。決める際には、ストレージ１６の格納処理時間を確保するのに、最低で何回分のタイムシェア処理の時間が必要かを演算すればよい。もちろん、時間余裕を充分とって、それよりももっと多くの数のサイクル分の読出しデータをジャーナル加工してもよい（この場合、ストレージ１６に１まとめ（複数分割した合計の意味）で格納するデータ量は多くなるが、格納速度はほとんど変わらないから問題はないが、バッファメモリ１７の容量が足りることが条件となる）。ここでは例えば、１０サイクルぶんのデータをジャーナル加工してストレージ１６に格納するように設定してあるとする。
【００５３】
ストレージ制御部１５の主要動作を図５のフローチャートに示す。まずレコーダ部１４が取得した読出データ（ＩＯデータ）をストレージ１６内に格納するために、予めジャーナル（ジャーナルファイル）を作成しておく（ＳＴ２１）。そしてレコーダ部１４との通信接続を確立するとともにバッファ１７へのアクセスも確立する（ＳＴ２２）。その後は周期的に、バッファ１７に記録されたデータをストレージ１６に格納する動作を繰り返す。すなわち、図６で説明したように１サイクルごとにＩＯメモリ２１のデータを収集してきてイベントメモリ１２に格納し終えた後、レコーダ部１４が収集したデータを読出し、レコーダ部１４からストレージ制御部１５へ記録依頼のデータ受信があったか否かを判断する（ＳＴ２３）。これを受信したならば、時間管理部１３に対してストレージへの記録処理の開始した旨を通知する（ＳＴ２４、図１の動作報告）。
【００５４】
そして、タイムシェア処理時間を利用して、ストレージ制御部１５がバッファ１７にアクセスして予め定められたサイクル分（ここでは１０サイクル分）の読出データを一括で読み出してジャーナルに書き出し処理をする。そしてジャーナルファイルの１０個のデータをストレージ１６に格納する（ＳＴ２５）。これらの処理（ジャーナル書出処理、ストレージ格納処理）は、複数周期（ここでは１０周期）のタイムシェア処理時間に分割して行われ、タイムシェア処理時間が終了すると処理は途中で中断され、次の周期のタイムシェア処理時間がくれば前回の処理の続きを再開する。よってこのステップの実際の処理内容は、ある周期（通常は１０サイクルのうち１回のサイクル）ではジャーナル書出処理をするし、他のある周期（残りの９回のサイクル）ではストレージ格納処理をすることとなる。そして時間管理部１３にてタイムシェア処理時間を終了するタイミングになれば、ストレージ制御部１５は時間管理部１３から処理完了通知（処理を中断するための指示）を受ける。ストレージ制御部１５におけるストレージ１６への格納処理がタイムシェア処理時間中に完了した場合、ストレージ制御部１５は時間管理部１３に対し、処理完了通知を行う。この後、ストレージ制御部１５においてジャーナル書出しを行うべき周期になっていると判断すれば、バッファ１７の読出データを一括読出しをし、ジャーナルに書き出す。まだその周期になっていないと判断すれば、残りのタイムシェア処理時間においては待機状態となる（ＳＴ２６）。その後ステップ２３に戻り次のデータ受信を待つ。
【００５５】
ところで、ストレージ１６に高速のコンパクトフラッシュメモリを用いて、そのデータ格納時間が例えば１０ｍｓであった場合、ＣＰＵユニット２０のサイクルタイムが比較的長く、時間管理部で設定した周期も合わせて長く、タイムシェア処理時間が１０ｍｓよりも長くなるような場合であれば、ストレージ処理部１５において複数サイクルにわたる読出データをジャーナル加工しなくても、１サイクルごとの収集データをそのサイクル中のタイムシェア処理期間中にストレージ１６に格納し終えることができる。仮にデータ収集ユニット１０のデータ収集のサイクルタイムを短い周期で再設定（ＣＰＵユニットのサイクルタイムが短くなった）すると、ストレージ自体の記録処理に要する時間がそれよりも長くなってしまい、１周期のタイムシェア処理の時間内にストレージ１６への記録処理が終わらないようになる。これを回避するためには、データ収集ユニット１０のデータ収集のサイクルタイムを長く設定して、ストレージ制御部１５が１周期ごとにストレージ１６への記録を完了させるようにすれば良いかも知れないが、ＣＰＵユニットのサイクルタイムとの関係もあるのでそうできない場合がある。その場合には当然、データ収集ユニット１０のデータ収集のサイクルタイムを短い周期に再設定したままで、ストレージへの格納処理を複数サイクル分にまたがって分割して行えばよい。つまりストレージへの格納処理時間よりも、その複数サイクル分のタイムシェア処理時間の合計時間が長くなるように設定すればよい。
【００５６】
さらに各設定をどのように行うかについて具体的に説明する。仮にデータ収集ユニット１０のデータ収集のサイクルタイムが２０ｍｓ，ストレージの格納処理時間が１５０ｍｓ，リアルタイム処理が５ｍｓだとすると、１サイクル中のタイムシェア処理時間は２０−５＝１５ｍｓとなる。ストレージ格納処理に必要なサイクル数は、ストレージの格納処理時間１５０ｍｓ÷タイムシェア処理時間１５ｍｓ＝１０回分となる。なおジャーナル書出しに要する時間は微小で、ここでは無視できる程度である。この場合なら、バッファ１７は１０周期分の読出データを溜め込むように、予めエリアを１〜１０と分ければよい（図示したエリアは１〜１０の１０個。）。つまり、レコーダ部１４はバッファ１７に蓄えられた１０周期分の読出データ（１〜１０）を１０周期に１度（つまり約１５０ｍｓ毎に）一括で読出してジャーナルに書き出すようにする。そして記録部１５は、１０サイクル分にまたがるタイムシェア処理（合計１５０ｍｓ）で、ストレージ記録処理をするようにする。仮にジャーナル書出しに要する時間が無視できない程度の時間で、例えば１５ｍｓであったならば、ストレージへの格納処理時間全体は、ジャーナル時間１５ｍｓ＋ストレージ格納処理時間１５０ｍｓ＝１６５ｍｓとなる。この場合はストレージ格納処理時間全体１６５ｍｓ÷１サイクルのタイムシェア処理時間１５ｍｓ＝１１なので、１１周期で１まとめのストレージ格納処理をすればよい。もちろん、この処理を１０（後述の例では１１）サイクルよりも多くのサイクルにまたがって行うようにしてもよい。
【００５７】
このように、レコーダ部１４，ストレージ制御部１５間にバッファ１７を設けて複数サイクル分の読出データをひとまとめにしてストレージ１６に格納するようにすることにより、データ収集サイクルタイムに比べてストレージ自体の格納速度が遅くても対応することができる。すなわち、データ収集サイクルタイムの一定周期で高速に処理を完了しなければならないレコーダ部１４は、収集データを、ストレージ１６に直接格納するのではなく、高速なアクセスの可能なバッファ１７への書き込むことをもって処理を完了することができる。こうするためにも時間管理部１３とレコーダ部１４とストレージ制御部１５のそれぞれの機能を一つのマイクロプロセッサに実装し、そのマイクロプロセッサにバッファ１７を内蔵するのが好ましい。
【００５８】
ここで、他に関連する処理時間について説明する。バスドライバ１１とＰＬＣ間のやりとり、つまりＰＬＣバスドライバ１１とＣＰＵユニット２０のＩＯメモリ２１との間のデータのやりとりは、ＰＬＣバス通信を利用するので高速処理であり、その処理時間は数ｍｓ程度となる。また、ＰＬＣバスドライバ１１がイベントメモリ１２にデータ記録する処理は、データ収集ユニット１０の内部処理であり、またユニット内部バスを経由するので高速であり、その処理時間は微少時間（１ｍｓ以下）である。また、時間管理部１３，レコーダ部１４，イベントメモリ１２での一連のリアルタイム処理も、データ収集ユニット１０の内部処理（マイクロプロセッサ処理）なので非常に早く、その処理時間は微少時間である（マイクロプロセッサの能力によるが１ｍｓ以下〜１０ｍｓ以下）。よって、データ収集ユニット１０のデータ収集処理のサイクルタイムを２０ｍｓとした場合には、リアルタイム処理の時間は数ｍｓで、タイムシェア処理のほうは残りの十数ｍｓとなる。なお、ＰＬＣのＣＰＵユニットのサイクルタイムはユーザの制御内容によってまちまちで数ｍｓ〜数１０ｍｓ、あるいは数百ｍｓとなっている。
【００５９】
次にデータ収集ユニット１０におけるチューニングについて説明する。第１に、データ収集ユニット１０のデータ収集処理のサイクルタイムはユーザにて設定可能としているので、ＰＬＣのＣＰＵユニットのサイクルタイムをユーザにて算出して同じ値にすることで、ＰＬＣでの１サイクル毎の変数データの変化を、データ収集ユニット１０でもれなく収集することができる。第２に、ストレージ記録を何回分のサイクルにまたがって処理するかの設定調整は、ＣＰＵユニット２０のサイクルタイムとデータ収集ユニット１０の周期（時間管理部のタイマ機能の周期）とを一致させ、ストレージ１６の格納処理時間を何サイクル分のタイムシェア処理時間で確保できるかを考慮し、バッファ１７がそのサイクル分のデータを記憶できる範囲とすればよい。つまり、データ収集を試験的に実行し、時刻管理部１３，レコーダ部１４並びにストレージ制御部１５が実行した動作（処理の開始／完了）を記録する。そして、設定周期内で各処理部が適切な状態で動作するかどうかを確かめながら、収集サイクル、一括読出の周期や希望の読出データ量などのアプリケーション条件を調整すればよい。なお、希望の読出データ量の調整・設定というのは、ＣＰＵユニット２０につながれるすべてのＩＯデータを対象としてもよいし、すべてでなく特定のＩＯデータのみ選択してもよいという意味である。なお、データ収集ユニット１０のサイクルタイムがＣＰＵユニット２０のサイクルタイムよりも長い場合には、データ収集ユニット１０がＣＰＵユニット２０に対して送るデータアクセス要求は、ＣＰＵユニットにとっては毎サイクルでなく非連続なイベント的処理となる。
【００６０】
図８は、データ収集ユニット１０の正面図である。データ収集ユニット１０の前面は２つのメモリカードスロット１８を有し、それら２つのメモリカードスロット１８にそれぞれ所定のメモリカードを装着することにより、ストレージ１６が構成される。２枚のメモリカードを利用することによって二重化を図ることができるようになる。ストレージ１６に２重化記録するのは、図９（ａ）に示すストレージ１６内のストレージサービス１６ｅにより行われる。ストレージサービス１６ｅは、ストレージ制御部１５から記録すべき収集データを受け取ると、２枚のメモリカード（データ記録主部１６ａ′，データ記録副部１６ａ″）それぞれに対して同一内容のデータを書き込む。２つのデータ記録部を同一の能力とし、両者への記録処理を同期させて、並列的に処理してもよい。こうすることにより二重化を図ることができる。
【００６１】
さらに、二重化の状態で使用している場合に、メモリカードを交換する際には必ず１枚ずつ行い、少なくとも１枚のメモリカードを装着しておくようにする。このような使用を行うことにより、例えば、通常の２枚装着時には二重化による収集データの記録を行い、データ収集の安全性を高めるとともに、メモリカードを交換する場合には、まず１枚のみ取り外すことにより、残りの１枚はメモリカードスロット１８に装着された状態のままとなるので、当該残りのメモリカードに対して収集データを記録する。これにより、メモリカードの交換の際にも収集データを連続して記録することができる。
【００６２】
また、図９（ｂ）に示すように、２枚のメモリカードからなるデータ記録部１６ａ′，１６ａ″を用いることにより、記憶容量は２枚の合計分とすることができ、２重化はできないが大容量の記録に対応することもできる。なお、データ収集ユニット１０の使用者が、２つのメモリカードを並列使用して２重化記録するか、２枚分として使用して大容量記録するかを選択できるようになっている。選択の設定は、データ収集ユニット１０内蔵のＤＩＰスイッチで行うか、外部ツール装置からソフト的設定により行う。
【００６３】
さらにまた、ストレージサービス１６ｅによりストレージ１６に記録された収集データは、一般的なＷｉｎｄｏｗｓ（登録商標）クライアント等から共有フォルダ，共有ファイルとして使用可能な形式とする。これよって、汎用のパソコン等を用いて当該収集データをアクセスするに際し、専用ドライバを用意したり、特別な設定をすることなく簡単にその収集データを見ることができる。その結果、このデータ収集ユニット１０を、イーサネット（登録商標）などのネットワークに接続することにより、当該ネットワークに接続された他のコンピュータ等からストレージ１６にアクセスし、収集データを参照することができる。つまり、標準ネットワーク上のファイルサーバとして利用可能となる。
【００６４】
そして、係るネットワークに接続可能とするため、図１に示すように、本データ収集ユニット１０は、Ｗｉｎｄｏｗｓ（登録商標）ファイルサーバインタフェース１９ａやＦＴＰサーバ１９ｂを備えている。さらに、メッセージ通信インタフェース１９ｃも備えている。このメッセージ通信インタフェース１９ｃは、ＰＬＣバスドライバ１１と接続されている。
【００６５】
これにより、ネットワーク上のコンピュータから受信したメッセージをＰＬＣバスを介してＣＰＵユニット２０のメッセージサービス処理部２４に与え、そのメッセージに従った所定の処理を実行したり、メッセージに対するレスポンスとしてＩＯメモリ２１のデータを取得したりすることができるようになっている。
【００６６】
図１０は、上記実施の形態の応用例であるデータ収集ユニット１０を備えたＰＬＣ１が持つデータを管理コンピュータ４０が収集するようにしたデータ収集システムの一例を示している。
【００６７】
まず、ＰＬＣ１側は、上記の実施の形態と同じであり、ＣＰＵユニット２０と、そのＣＰＵユニット２０のＩＯメモリ２１に格納されたデータを実時間で収集可能なデータ収集ユニット１０とを備えている。もちろん、図示省略するが、ＰＬＣ１を稼働させるために必要な他のユニットも備えている。なお、図１０において、リアルタイムロガー１０′は、ＣＰＵユニット２０のＩＯメモリ２１に格納されたデータを実時間でデータ収集し、ストレージ１６に格納するもので、前述の実施の形態における時間管理部１３，レコーダ部１４，ストレージ制御部１５さらにイベントメモリ１２，バッファ１７等のそれぞれと同じ構成とされる。これにより、時間管理部から所定時間間隔で発せられる動作指示に基づき、ＩＯメモリ２１のデータが収集されストレージ１６に逐次蓄積される。
【００６８】
一方、管理コンピュータ４０は、図１に示す各種インタフェース１９ａ〜１９ｃを介してデータ収集ユニット１０とデータの送受を行うことができる。つまり、ストレージ１６にアクセスし、そのストレージ１６に格納された各種のデータを取得したり、ＰＬＣバスドライバ１１を介してＩＯメモリ２１にアクセスすることができる。
【００６９】
さらに、内蔵するデバイス読み出し機能（ＯＰＣサーバ）４１により、ＰＬＣ１（データ収集ユニット１０）から必要なデータ（データ収集ユニット１０が収集するタグと、表示の方式（プロジェクト）等）を取得するようになっている。つまり、管理コンピュータ４０が新たにデータ収集ユニット１０に接続し、通信を開始するに先立ち、スタートアップローダ４２を稼働させ、データ収集ユニット１０が持つＯＰＣアイテム記録部１６ｂ，ＳＣＡＤＡプロジェクト１６ｃ等を読み込み、同一内容の情報（ＯＰＣアイテム，ＳＣＡＤＡプロジェクト）を保有することができる。
【００７０】
なお、管理コンピュータ４０は、ネットワークに接続されるコンピュータでも良いし、携帯型のコンピュータ等各種のタイプのものを用いることができる。そして、前者の場合には、例えば対象となるＰＬＣ１（データ収集ユニット１０）が接続されているネットワークに接続されたときに、新規な接続としてスタートアップローダ４２を稼働させ、また、後者の携帯型のコンピュータの場合、当該管理コンピュータ４０をデータ収集ユニット１０に直接接続させることにより通信可能にした状態でスタートアップローダ４２を稼働させることができる。
【００７１】
そして、取得したトレンド情報は、ＳＣＡＤＡランタイム４３がＳＣＡＤＡスクリーン４４に表示する。これにより、作業者は、例えば装置の脇でデータ収集ユニット１０に携帯型の管理コンピュータ４０を接続し、取得した装置のトレンド情報をその管理コンピュータ４０の画面で確認することができる。その結果、装置の詳細を知らない作業者であっても、例えば収集するデータのタグ名等から収集する内容を容易に理解でき、装置の状況を調べることが可能となる。
【００７２】
さらに、取得した収集するタグ等の情報に基づきＳＣＡＤＡランタイム４３がＯＰＣサーバ４１を介してＩＯメモリ２１のデータを収集する。これにより、データ収集ユニット１０で収集しているデータの現在の状態を取得することができ、おおよその異常の有無を判断することができる。もちろん、メッセージを適宜変更することにより、データ収集ユニット１０で収集していない情報を取得することもできる。
【００７３】
さらに、作業者が、上記のようにして取得した現在の状態において問題を発見した場合、作業者は同じ管理コンピュータ４０を操作し、リアルタイムロガー１０′が所定周期（例えば数１０ミリ秒周期）で収集し、ストレージ１６に格納されたログデータを、トレンドＧＵＩコンポーネント４５で読み出すとともに、所定の形式でグラフ表示する。また、取得したログデータを、他のアプリケーションが利用できるようなグラフやデータのオブジェクトを生成し、他の装置等に提供可能となる。
【００７４】
また、例えば管理コンピュータ４０が故障した場合に、新たな管理コンピュータ４０をデータ収集ユニット１０に接続後、スタートアップローダ４１がＳＣＡＤＡプロジェクト及びＯＰＣアイテムをデータ収集ユニット１０から読み出すとともに管理コンピュータ４０上の設定を行うことにより、その後は、データ収集ユニット１０の情報を元に、上記と同様に故障した管理コンピュータ４０が行っていたのと同等の処理を行わせることができる。
【００７５】
このように、あらかじめ管理コンピュータ４０に対して、モニタするプロジェクトやタグ情報をインストールする必要がなく、しかも、必要に応じてスタートアップローダ４２によって自動的に必要な情報を取得し、設定することができる。さらに、プロジェクトやタグ情報に変更があった場合でも、スタートアップローダ４２によって、再度必要な情報を取得することができ、作業者が管理コンピュータ４０に対して変更されたプロジェクトやタグ情報を再インストールする必要がない。換言すると、データ収集ユニット１０ごとの専用管理コンピュータの設置が不要となる。
【図面の簡単な説明】
【００７６】
【図１】本発明に係るデータ収集装置の好適な一実施の形態を示す図である。
【図２】本実施の形態のデータ収集の作用を説明する図である。
【図３】時間管理部の機能を示すフローチャートである。
【図４】レコーダ部の機能を示すフローチャートである。
【図５】記憶部の機能を示すフローチャートである。
【図６】データ収集のタイムチャートを示す図である。
【図７】レコーダ部並びにストレージ制御部を用いたデータの書き込み手順を示す図である。
【図８】データ収集ユニットの前面の一例を示す図である。
【図９】ストレージを示す図である。
【図１０】本発明の他の実施の形態であるブロック図である。
【符号の説明】
【００７７】
１  ＰＬＣ
１０  データ収集ユニット
１１  ＰＬＣバスドライバ
１１ａ  内部メモリ
１１ｂ  マップ設定
１２  イベントメモリ
１３  時間管理部
１４  レコーダ部
１５  ストレージ制御部
１６  ストレージ
１６ａ，１６ａ′，１６ａ″  データ記録部
１６ｂ  ＯＰＣアイテム記録部
１６ｃ  ＳＣＡＤＡプロジェクト
１６ｄ  動作記録部
１６ｅ  ストレージサービス
１７  バッファ
１８  メモリカードスロット
２０  ＣＰＵユニット
２１  ＩＯメモリ
２２  ＰＬＣバス
２４  メッセージサービス
４０  管理コンピュータ
４１  ＯＰＣサーバ
４２  スタートアップローダ
４３  ＳＣＡＤＡランタイム
４４  ＳＣＡＤＡスクリーン
【図１】
2004199670.tif 000003
【図２】
2004199670.tif 000004
【図３】
2004199670.tif 000005
【図４】
2004199670.tif 000006
【図５】
2004199670.tif 000007
【図６】
2004199670.tif 000008
【図７】
2004199670.tif 000009
【図８】
2004199670.tif 000010
【図９】
2004199670.tif 000011
【図１０】
2004199670.tif 000012