(57)【要約】【課題】  ＣＰＵユニット及び各付属ユニットのそれぞれが生成した履歴をＣＰＵユニット又はその他別のユニットに収集して、時系列的に並べ替え、総合履歴を作成するについて、作成された総合履歴上の事象配列順番と各事象の発生順番とを正確に対応付けることができること。【解決手段】  ＣＰＵユニットに内蔵されるリアルタイムクロックは、想定される最短間隔で相前後して発生する２つの事象の発生時刻を識別可能な計時単位で現在時刻データを生成するものであること。【選択図】  図１１
2009223586.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵユニットと１もしくは２以上の付属ユニットとをシステムバスにて結んで構成され、かつ前記ＣＰＵユニットには、現在時刻データを生成するリアルタイムクロックが内蔵され、
前記ＣＰＵユニットは、プログラム実行処理、入出力更新処理、及び周辺サービス処理を含む一連の処理を所定のサイクルタイムでサイクリックに実行し、
前記１もしくは２以上の付属ユニットのそれぞれは、少なくとも前記サイクルタイムを最小取得間隔として、前記ＣＰＵユニットからシステムバスを介して現在時刻データを取得し、
前記ＣＰＵユニットは、内蔵するリアルタイムクロックから取得される現在時刻データに基づいて所定の発生事象に関する履歴を生成する履歴生成処理を実行し、かつ前記１もしくは２以上の付属ユニットのそれぞれは、ＣＰＵユニットからシステムバスを介して取得される現在時刻データに基づいて所定の発生事象に関する履歴を生成する履歴生成処理を実行するようにしたビルディング・ブロック型のＰＬＣであって、
前記ＣＰＵユニットに内蔵されるリアルタイムクロックは、想定される最短間隔で相前後して発生する２つの事象の発生時刻を識別可能な計時単位で現在時刻データを生成する高精度リアルタイムクロックであることを特徴とするビルディング・ブロック型のＰＬＣ。
【請求項２】
前記高精度リアルタイムクロックは、秒単位で時刻データを生成する秒単位リアルタイムクロックとミリ秒単位以上の精度を有するフリーラニングカウンタとに基づいてミリ秒以上の精度を有する時刻データを生成する、ことを特徴とする請求項１に記載のビルディング・ブロック型のＰＬＣ。
【請求項３】
前記ＣＰＵユニット又は１もしくは２以上の付属ユニットで実行される所定の履歴生成処理が、異常履歴生成処理であることを特徴とする請求項１に記載のビルディング・ブロック型のＰＬＣ。
【請求項４】
前記ＣＰＵユニットには、各付属ユニットのそれぞれから履歴を読み出すと共に、読み出された履歴に含まれる各事象と自機内で生成された履歴に含まれる各事象とを合成し、それらの事象を発生時刻順に並べ替えることにより総合履歴を生成する機能が組み込まれていることを特徴とする請求項１に記載のビルディング・ブロック型のＰＬＣ。
【請求項５】
請求項１〜３のいずれかに記載のビルディング・ブロック型のＰＬＣと、プログラム開発支援装置又はプログラマブル表示器等の外部装置とを通信を介して結んで構成されるＰＬＣシステムであって、
前記外部装置には、前記ＰＬＣからＣＰＵユニット及び各付属ユニットの履歴を読み出すと共に、読み出された各履歴に含まれる事象を合成し、それらの事象を発生時刻順に並べ替えることにより総合履歴を生成して表示させる機能が組み込まれていることを特徴とするＰＬＣシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＣＰＵユニットと１もしくは２以上の付属ユニット（例えば、入力ユニット、出力ユニット、その他モーションコントロールユニットやＰＩＤユニット等々の高機能ユニット）とをシステムバスにて結んで構成され、かつＰＬＣユニットには、現在時刻データを生成するリアルタイムクロックが内蔵されたビルディング・ブロック型のプログラマブル・コントローラ（以下、ＰＬＣと言う）に関する。
【背景技術】
【０００２】
図１２（ａ）に示されるように、ＣＰＵユニットと１もしくは２以上の付属ユニット（ユニットＡ、ユニットＢ、ユニットＣ）とをシステムバス（図示せず）にて結んで構成されるビルディング・ブロック型のＰＬＣは従来より知られている。この種のＰＬＣにおいては、ＣＰＵユニットは、当業者にはよく知られているように、プログラム実行処理、入出力更新処理、及び周辺サービス処理を含む一連の処理を所定のサイクルタイムでサイクリックに実行するように仕組まれている。
【０００３】
ところで、この種のＰＬＣの運転中にあっては、故障を含む様々な事象が発生する。これらの事象を、その発生時刻と共に記録して、履歴を生成することができれば、その後の動作解析などに便利である。そのためには、それらの事象の発生時刻を特定するためのリアルタイムクロックが必要である（例えば、特許文献１参照）。
【０００４】
従来、このリアルタイムクロックは、コスト的な要因、あるいは同時性を維持することの困難性などのために、唯一ＣＰＵユニットにのみ内蔵するといった構成が採用されている。
【０００５】
そのため、ＣＰＵユニットに関しては、自機に内蔵されたリアルタイムクロックから直接に現在時刻データを取得できるのに対し、１もしくは２以上の付属ユニットのそれぞれについては、少なくともサイクルタイムを最小取得間隔として、ＣＰＵユニットからシステムバスを介して現在時刻データを取得するように仕組まれている。
【０００６】
そして、ＣＰＵユニットは、内蔵するリアルタイムクロックから取得される現在時刻データに基づいて所定の発生事象（様々な動作異常等）に関する履歴を生成する履歴生成処理を実行する一方、１もしくは２以上の付属ユニットのそれぞれは、ＣＰＵユニットからシステムバスを介して取得される現在時刻データに基づいて所定の発生事象（様々な動作異常等）に関する履歴を生成する履歴生成処理を実行することとなる。
【特許文献１】特開平１１−０８９０７４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
昨今、この種のＰＬＣのサイクルタイムは、ユーザからの高速性及び高精度化の要望により、０．１ミリ秒又はそれ以下と短縮される傾向にあり、その結果、数ミリ秒ないし数十ミリ秒の時間間隔で異常事象の発生を検知することが可能となった。一方、ＣＰＵユニットに内蔵されるリアルタイムクロックとしては、通常のマイクロプロセッサに付属するリアルタイムクロックが採用されるため、現在時刻データの計時精度は１秒程度がせいぜいであった。
【０００８】
そのため、図１２（ｂ）に示されるように、ＣＰＵユニット内において、３つの異常（異常Ｋ、異常Ｌ、異常Ｍ）が順次に発生し、異常Ｌと異常Ｍとの発生間隔が１秒に満たない場合には、その発生順序は記録順序に従って推定できるものの、発生時刻については、「１０：００：００」と同一となってしまい、それらを識別することができない。このような状況は、ＣＰＵユニットのみならず他の付属ユニット（ユニットＡ、ユニットＢ、ユニットＣ）においても同様に生ずる。
【０００９】
もっとも、同一のユニット内において複数の異常が時間をずらせて発生する場合には、異常履歴上における記録順序から、その発生順序を推定することがある程度可能であるため、さほど問題はない。
【００１０】
しかし、図１２（ｃ）に示されるように、相異なる２つのユニット（ユニットＡとユニットＢ）のそれぞれにおいて、互いに１秒以下の間隔を隔てて、２つの異常（異常Ｘ、異常Ｙ）が生ずるような場合、各異常は別々の異常履歴に記録されるため、それらの発生時刻が「１１：１４：２１」として同一であると、両異常の発生順序を識別することができない。
【００１１】
そのため、例えば、複数のユニットのそれぞれにおける異常履歴を収集し、各異常事象を時系列に並べ替えた総合異常履歴を生成するような場合を想定すると、発生時刻が同一の異常事象が異なるユニット間で生ずることから、それらの並べ替えにおいて苦慮するという問題点がある。
【００１２】
この発明は、このような従来の問題点に着目してなされたものであり、その目的とするところは、以上説明したこの種のビルディング・ブロック型のＰＬＣにおいて、各ユニット毎に生成された事象発生履歴を１箇所に集め、発生時刻データに基づいて時系列的な並べ替えを行う場合、その並べ替え後の配列が実際の事象発生順序と正確に対応するようにしたビルディング・ブロック型のＰＬＣを提供することにある。
【００１３】
この発明のさらに他の目的並びに作用効果については、明細書の以下の記述を参照することにより、当業者であれば容易に理解されるであろう。
【課題を解決するための手段】
【００１４】
以上述べた本発明が解決しようとする課題は、以下の構成を有するビルディング・ブロック型のＰＬＣにより解決することができると考えられる。
【００１５】
すなわち、このビルディング・ブロック型のＰＬＣは、ＣＰＵユニットと１もしくは２以上の付属ユニットとをシステムバスにて結んで構成され、かつＣＰＵユニットには、現在時刻データを生成するリアルタイムクロックが内蔵される。
【００１６】
ここで、「システムバス」については、バックプレーン方式のものと、スタッキング方式のものとの双方を含めることができる。すなわち、バックプレーン方式のものにあっては、上記のシステムバスはバックプレーン上に敷設され、各ユニットとはコネクタを介して接続される。一方、スタッキング方式のものにあっては、システムバスを分断してそれぞれのユニットに内蔵させ、隣接ユニット間をコネクタで接続することによって、一連のシステムバスが形成される。
【００１７】
ＣＰＵユニットは、プログラム実行処理、入出力更新処理、及び周辺サービス処理を含む一連の処理を所定のサイクルタイムでサイクリックに実行する。ここで、当業者にはよく知られているが、プログラム実行処理は、ユーザプログラムメモリからユーザプログラムを構成する各命令語を順次読み出して、入出力メモリの内容を参照しつつこれを実行し、その実行結果で入出力メモリの該当データの書き換えを行うものである。入出力更新処理とは、プログラム実行処理にて書き換えが完了した入出力データを、外部入出力回路を介して外部入出力端子との間でやり取りする処理である。また、周辺サービス処理は、他のＰＬＣとの通信、リモートＩＯターミナルとの通信、プログラム開発支援装置との通信、などのように、様々な周辺機器との間の処理を実行するものである。
【００１８】
１もしくは２以上の付属ユニットのそれぞれは、少なくとも前記サイクルタイムを最小取得間隔として、前記ＣＰＵユニットからシステムバスを介して現在時刻データを取得する。具体的な取得タイミングについては、各付属ユニット毎に定められる。例えば、付属ユニットが入力ユニットや出力ユニットであれば、上述の入出力更新処理と関連して、それらのユニットは現在時刻データを取得することができる。一方、付属ユニットが、モーションコントロールユニット、ＰＩＤユニット、通信ユニット等々のように高機能ないしインテリジェント型のユニットの場合には、それぞれ独自の間隔で現在時刻データを取得することができる。
【００１９】
ＣＰＵユニットは、内蔵するリアルタイムクロックから取得される現在時刻データに基づいて所定の発生事象（例えば、様々な異常発生、その他あらかじめ予定された任意の動作）に関する履歴を生成する履歴生成処理を実行する一方、１もしくは２以上の付属ユニットのそれぞれは、ＣＰＵユニットからシステムバスを介して取得される現在時刻データに基づいて所定の発生事象（同上）に関する履歴を生成する履歴生成処理を実行する。
【００２０】
以上の構成において、本発明の主たる特徴とするところは、ＣＰＵユニットに内蔵されるリアルタイムクロックは、想定される最短間隔で相前後して発生する２つの事象の発生時刻を識別可能な計時単位で現在時刻データを生成する高精度リアルタイムクックとした点にある。
【００２１】
このような構成によれば、複数のユニットのそれぞれにおいて履歴生成処理が実行されたとしても、各ユニットの履歴に含まれる発生事象のそれぞれには一意の発生時刻が関連づけられるため、後に複数のユニットのそれぞれから履歴を収集すると共に、それらを合成して、時系列に並べ替えるについては、各事象と発生時刻とが確立的に一意であることから、各事象の発生順番と履歴中における各事象の記録順番とを正確に対応付けることができ、後日システム全体として任意の異常や予定された動作の発生順序を確認するような場合、これを誤りなく正確に行うことが可能となる。
【００２２】
本発明者等が取得した経験によれば、前記リアルタイムクロックとしては、秒単位で時刻データを生成する秒単位リアルタイムクロックとミリ秒単位以上の精度（例えば、ミリ秒単位、マイクロ秒単位等）を有するフリーラニングカウンタとに基づいてミリ秒以上の精度を有する時刻データを生成するものであることが好ましい。このような構成によれば、特に異常事象の発生に適用した場合、各発生した異常事象をその発生時刻によって明確に識別することができた。
【００２３】
また、本発明の好ましい実施の形態においては、前記ＣＰＵユニットには、各付属ユニットのそれぞれから履歴を読み出すと共に、読み出された履歴に含まれる各事象と自機内で生成された履歴に含まれる各事象とを合成し、それらの事象を発生時刻順に並べ替えることにより総合履歴を生成する機能が組み込まれる。
【００２４】
このような構成によれば、別途プログラム開発支援装置やプログラマブル表示器（プログラマブルターミナルなどとも称される）をＰＬＣに接続し、ＣＰＵユニットから所定のデータを読み出すだけで、プログラム開発装置やプログラマブル表示器において合成や並べ替えといった処理を行うことなく、目的とする総合履歴を直接的に取得することが可能となる。
【００２５】
また、以上のビルディング・ブロック型ＰＬＣの別の利用形態としては、同様に別途プログラム開発装置やプログラマブル表示器などの外部装置を上述のＰＬＣに接続した後、公知のデータ通信手順を利用することによって、ＣＰＵユニット及び各付属ユニットのそれぞれから履歴を読み出すと共に、読み出された各履歴に含まれる事象を合成し、それらの事象を発生時刻順に並べ替えることにより総合履歴をそれらの外部装置側における加工処理によって生成することも考えられる。
【００２６】
いずれにしても、本発明に係るビルディング・ブロック型のＰＬＣにおいては、ＣＰＵユニットに内蔵されるリアルタイムクロックが、想定される最短間隔で相前後して発生する２つの事象の発生時刻を識別可能な計時単位で現在時刻データを生成するものであることから、様々な利用形態において目的とする総合履歴を取得することができるのである。
【発明の効果】
【００２７】
以上の説明で明らかなように、本発明によれば、ＣＰＵユニット及び各付属ユニットのそれぞれが生成した履歴をＣＰＵユニット又はその他別のユニットに収集して、時系列的に並べ替え、総合履歴を作成するについて、作成された総合履歴上の事象配列順番と各事象の発生順番とを正確に対応付けることができ、これにより後日ＰＬＣの運転状態を正確に分析することができる。
【発明を実施するための最良の形態】
【００２８】
以下に、この発明に係るビルディング・ブロック型ＰＬＣの好適な実施の一形態を添付図面を参照しながら詳細に説明する。
【００２９】
先に説明したように、本発明に係るＰＬＣは、ＣＰＵユニット及び各付属ユニットのそれぞれで生成された発生事象の履歴を１箇所に収集し、これを合成して、発生時刻順に並べ替えるといった用途に好適なものである。このような用途に供されるＰＬＣと開発支援装置とを含むシステム構成図が図１に示されている。
【００３０】
同図に示されるように、このシステムは、ビルディング・ブロック型のＰＬＣ１と例えばパソコンにプログラミングツールソフトをインストールして構成されるプログラム開発支援装置２とを通信線３を介して結んで構成される。
【００３１】
ＰＬＣ１は、この例にあっては、ＣＰＵユニットＵ２と、１もしくは２以上の付属ユニット（この例では電源ユニットＵ１、入力ユニットＵ３、出力ユニットＵ４、通信ユニットＵ５、高機能ユニットＵ６とが例示される）とを図示しないシステムバスにて結んで構成される。なお、高機能ユニットＵ６としては、例えばモーションコントロールユニット、ＰＩＤユニット、その他各種のインテリジェントタイプのユニットを挙げることができる。
【００３２】
電源ユニットＵ１は、図示しない電源ラインを介して、各ユニットＵ２〜Ｕ６に対して電力供給を行うためのものである。この電源ユニットＵ１についても、昨今さまざまな高機能化が試みられており、それらの中には、システムバスを介して、ＣＰＵユニットＵ２との間で各種データ（回路部品の劣化程度を示すデータなど）をやり取りするものも現れている。
【００３３】
入力ユニットＵ３には、外部入力端子と、外部入力端子から入力データを取り込むと共に、これをシステムバスを介してＣＰＵユニットＵ２へと送り出す入力回路とが含まれている。また、出力ユニットＵ４には、外部出力端子と、システムバスから到来する出力データをそれら外部出力端子へと送出するための外部出力回路とが含まれている。
【００３４】
また、通信ユニットＵ５には、プログラム開発支援装置２と通信ライン３を介して通信を行うための各種のハードウェア及びプロトコルをサポートするためのソフトウェアが含まれている。なお、高機能ユニットＵ６は、それぞれその種類に応じた専用のマイクロコンピュータシステムが組み込まれている。
【００３５】
それらのユニットＵ１〜Ｕ６には、後に図５を参照して説明するように、それぞれ該当する異常発生時の対応処理が組み込まれている。
【００３６】
次に、ＣＰＵユニットＵ２のハードウェア構成図が図２に示されている。同図に示されるように、このＣＰＵユニットＵ２は、マイクロプロセッサ（ＭＰＵ）１０１と専用集積回路（ＡＳＩＣ）１０２とを主体として構成される。
【００３７】
マイクロプロセッサ（ＭＰＵ）１０１には、１秒単位で現在時刻が計時可能な秒単位リアルタイムクロック（ＲＴＣ）１０１ａが付設されている。この秒単位リアルタイムクロック（ＲＴＣ）１０１ａは例えば専用の時計回路で構成されており、現在時刻を１秒単位で計測することが可能とされている。
【００３８】
マイクロプロセッサ（ＭＰＵ）１０１は、ＣＰＵユニット全体を統括制御するものであり、システムプログラムメモリ（ＳＲＯＭ）１０３に格納されたシステムプログラムを、ワークメモリ（ＷＲＡＭ）１０４をワークエリアとして使用して実行することによって、ＣＰＵユニットとして必要な各種の機能を実現するようになされている。このＣＰＵユニットとして必要な各種の機能については、後に図３のフローチャートを参照して説明する。
【００３９】
バックアップメモリ（ＢＲＯＭ）１０５は、例えばプログラム開発支援装置２などから送り込まれたユーザプログラム（ラダー言語を使用して作成した場合にはラダープログラムと呼ばれることもある）を格納する不揮発性のメモリで構成されており、ここに格納されたユーザプログラムは電源ＯＮ時に、高速アクセス可能なメモリで構成されたユーザメモリ（ＵＭ）１０６へと転送記憶される。
【００４０】
入出力メモリ（ＩＯＭ）１０７は、先に説明した入力ユニットＵ３及び出力ユニットＵ４の各外部端子に対応する入出力データのバッファエリアとして機能するものであり、後述するユーザプログラムの実行に当たっては、この入出力メモリ（ＩＯＭ）１０７の格納データが参照される。
【００４１】
専用集積回路（ＡＳＩＣ）１０２は、主としてユーザプログラムの実行に特化された回路構成を有し、マイクロプロセッサ１０１でプログラム実行処理を行う際に、この専用集積回路（ＡＳＩＣ）１０２は、ユーザメモリ（ＵＭ）１０６から順次各命令語を読み出すと共に、これを入出力メモリ（ＩＯＭ）１０７の入出力データを参照しながら実行し、その実行結果で再び入出力メモリ（ＩＯＭ）１０７の入出力データの書き換えを行う。
【００４２】
こうして書き換えが終了した入出力メモリ（ＩＯＭ）１０７の入出力データは、マイクロプロセッサ（ＭＰＵ）１０１が入出力更新処理（Ｉ／Ｏリフレッシュ）を実行すると共に、入出力メモリ（ＩＯＭ）１０７から読み出され、出力ユニットＵ４へと転送されると共に、入力ユニットＵ３から取り込まれた入力データは、入出力メモリ（ＩＯＭ）１０７の入力データへと書き込まれる。
【００４３】
なお、符号２０１が付されているのは入出力データが行き交うＩ／Ｏバス（システムバスでもある）であり、このＩ／Ｏバス２０１を経由して各ユニットＵ１〜Ｕ６は現在時刻データの伝達を行うこととなる。
【００４４】
また、本発明に関連して新たに設けられた構成としては、専用集積回路（ＡＳＩＣ）１０２内に設けられたミリ秒単位フリーラニングカウンタ１０２ａを挙げることができる。このミリ秒単位フリーラニングカウンタ１０２ａは、ミリ秒単位で加算動作または減算動作するハードウェアカウンタで構成されており、このミリ秒単位フリーラニングカウンタ１０２ａのカウント値が、後述するように、先に説明した秒単位リアルタイムクロック（ＲＴＣ）１０１ａのカウント値データの最下位に付加されることによって、ミリ秒単位の現在時刻データが生成されることとなる。
【００４５】
次に、ＣＰＵユニット及び他ユニットの処理を示すフローチャートが図３に示されている。なお、ここで他ユニットとは、例えば図１に示されるように、電源ユニットＵ１、入力ユニットＵ３、出力ユニットＵ４、通信ユニットＵ５、高機能ユニットＵ６などを意味している。
【００４６】
図３において処理が開始されると、ＣＰＵユニットＵ２の側においては、電源投入時処理（各種フラグやレジスタ類の初期設定など）１０１を実行した後、以後、共通処理１０２、プログラム実行処理１０３、Ｉ／Ｏリフレッシュ（入出力更新）処理１０４、及び周辺サービス処理１０５を含む一連の処理を所定のサイクルタイムをもってサイクリックに実行する。すなわち、ここで、サイクルタイムとは、共通処理１０２、プログラム実行処理１０３、Ｉ／Ｏリフレッシュ処理１０４、及び周辺サービス処理１０５の一巡実行時間に相当する。
【００４７】
それらの処理１０２〜１０５は、当業者においてはよく知られたものであるから簡単に説明すると、共通処理１０２はメモリチェック等のハードウェアチェックを主として行う処理であり、プログラム実行処理１０３とは先に説明したように、ユーザプログラムメモリ１０６から順次命令語を読み出して、入出力メモリ（ＩＯＭ）１０７の入出力データを参照し、それにより、当該命令を専用集積回路（ＡＳＩＣ）１０２によって実行し、その実行結果で再び、入出力メモリ（ＩＯＭ）１０７の入出力データの書き換えを行うといった処理である。
【００４８】
Ｉ／Ｏリフレッシュ（入出力更新）処理１０４は、プログラム実行によって書き換えが完了した入出力メモリ（ＩＯＭ）１０７の出力データを出力ユニットＵ４から外部へと送り出すと共に、入力ユニットＵ３から取り込まれた入力データを入出力メモリ（ＩＯＭ）１０７の入力エリアに書き込む処理である。
【００４９】
さらに周辺サービス処理（ステップ１０５）とは、通信ユニットＵ５を介してプログラム開発支援装置２と各種のデータのやり取りを行ったり、図１には図示されないが、他のＰＬＣあるいはリモートＩＯターミナルなどとの間で入出力データのやり取りを行うといった周辺サービス処理が実行される。
【００５０】
一方、図３において、他のユニットの側においては、当該ユニット固有の通常時の処理（ステップ１１１）を実行しつつ、周期的にＣＰＵユニットとデータ交換を行うことによって（ステップ１１２）、ＣＰＵユニットとは非同期に、あるいは同期して、連繋動作を行う。
【００５１】
そして、この連繋動作に際して、ＣＰＵユニットにて生成されたミリ秒単位の現在時刻データの取得が行われる。この現在時刻データは、先に説明したように、現在時刻をミリ秒単位で表すものであるから、後述するように、もしも他ユニットの側で何らかの異常が発生したような場合、その異常をミリ秒単位又はマイクロ秒単位で履歴に残すことができる。
【００５２】
次に、異常検知時の処理を図４及び図５を参照しながら説明する。ＣＰＵユニットの異常検知時の処理を示すフローチャートが図４に、ＣＰＵユニット以外の各ユニットの異常検知時の処理を示すフローチャートが図５にそれぞれ示されている。
【００５３】
ＣＰＵユニットＵ２内には、先に説明したように、秒単位リアルタイムクロック（ＲＴＣ）１０１ａとミリ秒単位フリーラニングカウンタ（ＦＲＣ）１０２ａとからミリ秒単位の時刻情報を生成するリアルタイムクロックが内蔵されると共に、あらかじめ設定された各種の動作異常をセンス処理又は割込処理で検出し、これにより異常履歴を生成する処理が組み込まれている。
【００５４】
すなわち、図４に示されるように、ＣＰＵユニットＵ２内において想定される何らかの動作異常が発生すると、この処理が開始されて、まずあらかじめ用意された異常のそれぞれごとの処理が実行された後（ステップ２０１）、異常登録処理（ステップ２０２）が実行され、その実行完了と共に、必要に応じて運転停止処理（ステップ２０３）が実行される。
【００５５】
異常登録処理（ステップ２０２）の詳細を示すフローチャートが図８に示されている。同図に示されるように、異常登録処理が開始されると、まず、その異常の種類毎の処理へと分岐された後（ステップ６０１）、各異常（１）〜（ｎ）のそれぞれに対応するデータの収集が行われ（ステップ６０２〜６０４）、その後ミリ秒単位の時刻情報の取得が行われ（ステップ６０５）、最後に取得されたミリ秒単位の時刻データは異常履歴に書き込まれて処理は終了する（ステップ６０６）。
【００５６】
上述のミリ秒単位の時刻情報の取得処理においては、図９に示されるように、まず、秒単位リアルタイムクロック（ＲＴＣ）１０１ａから年月日時分秒データの取得が行われ（ステップ７０１）、続いてミリ秒単位フリーラニングカウンタ（ＦＲＣ）からミリ秒データの取得が行われる（ステップ７０２）。これにより、ＣＰＵユニットを構成するマイクロプロセッサ（ＭＰＵ）１０１では、異常が発生した現在時刻データを正確にミリ秒単位で取得することができる。なお、フリーラニングカウンタ（ＦＲＣ）１０２ａが、マイクロ秒単位で時刻データを生成するものであれば、このステップ７０２の処理において、フリーラニングカウンタからマイクロ秒単位で時刻データの取得が行われることとなる。
【００５７】
以上、ＣＰＵユニットにおける異常発生時の現在時刻データ取得に関する処理であるが、ＣＰＵユニット以外の各ユニットにおける異常検知時の処理についても同様である。すなわち、図５に示されるように、ＣＰＵユニット以外の各ユニットにおいて異常が発生すれば、ＣＰＵユニットの場合と同様にして、異常ごとの処理を実行した後（ステップ３０１）、異常登録処理（ステップ３０２）及び必要に応じた運転停止処理（ステップ３０３）が同様にして実行される。なお、異常登録処理（ステップ３０２）及び運転停止処理（ステップ３０３）については、ＣＰＵユニットの場合と同様であるから、重複説明は回避するものとする。
【００５８】
一方、この実施形態においては、ユーザプログラム中に、公知の異常発生命令を組み込むことが可能とされている。この異常発生命令は、異常発生に相当する状態を専用の入力接点で記述し、これと直列に異常発生命令をラダー図上に記述することによって、そのような異常発生と共に、その旨を発生時刻データと共に異常履歴上に登録することができるのである。
【００５９】
図６には、そのような異常発生命令を含むラダープログラムとその実行により得られる異常履歴表示例との関係が示されている。同図から明らかなように、入力接点４０１がオン状態となることによって、異常発生命令４０２が動作して、異常Ｂが異常履歴上に登録され、同様にして、入力接点４０３がオン状態となることによって、異常発生命令４０４が動作し、異常Ｃが同様にしてＣＰＵユニットの異常履歴に登録されることとなる。
【００６０】
この例によれば、センサＢに関するエリアに不正な侵入者が入って（＝センサ４０１がオンした）からその侵入者がセンサＣに関するエリアに入る（＝センサ４０３がオンした）までの時間は、１０：００：００：４６−１０：００：００：２３＝２３ミリ秒であることが分かる。
【００６１】
この場合にも、本発明における新たなミリ秒単位のリアルタイムクロックは、ミリ秒単位で現在時刻を生成することができるため、わずか２３ミリ秒の時差で発生した２つの異常（異常Ａと異常Ｂ）を明確に識別することができる。
【００６２】
図７には、このような異常発生命令の含まれるラダープログラムが実行される際の処理が示されている。図から明らかなように、ユーザプログラムの実行中に、図６に示される異常発生命令４０２，４０４が読み出されて実行されると、その命令固有の異常に対応した処理が行われた後（ステップ５０１）、本発明の要部であるところの異常登録処理（ステップ５０２）が実行される。この異常登録処理（ステップ５０２）は、先に説明したように、図８及び図９のフローチャートに示されている。
【００６３】
このように、以上の実施形態によれば、ＣＰＵユニット又はその他のユニットのいずれかにおいて、想定された異常が発生すれば、直ちにその異常発生時刻に対応する時刻データが、ＣＰＵユニット内においてミリ秒単位のリアルタイムクロックで生成されて、そのデータが異常履歴上に書き込まれるため、従前の秒単位でしか現在時刻データを生成できなかったリアルタイムクロックの場合に比べ、高精度に各異常の発生時刻を記録に留めることができる。
【００６４】
そして、図３のフローチャートに示される一連の処理（ステップ１０２〜１０５）の実行に要するサイクルタイムは、昨今の高性能なＰＬＣにおいては、０．１ミリ秒程度から数秒までが普通であるから、想定される異常の発生頻度を考慮すれば、あらゆる異常が発生したとしても、各異常それぞれに固有な一意的な現在時刻データをこれに割り当てることができ、従って、図１に示されるようなシステムにおいて、例えばＣＰＵユニットＵ２に所定のタイミングで、その他のユニットＵ１，Ｕ３〜Ｕ６から異常履歴データを収集し、これを合成すると共に、発生時刻データに基づき並べ替える処理を組み込めば、こうして並べ替えが終了した総合履歴データをプログラム開発支援装置２から吸い上げるだけでプログラム開発支援装置は、ＰＬＣ１を構成するすべてのユニットで生じた異常データを、時系列的に並べたものを確認し、動作の分析に供することができる。
【００６５】
また、上述のデータ収集、データ合成、及びデータ並べ替えを、プログラム開発支援装置２の側で行うようにしても、こうして収集される異常時刻発生データは、確率的に言って、殆ど重複することはないであろうから、それらの発生時刻データに基づいて、それらのデータを発生時刻の順番で正確に並べ替えることが可能となる。
【００６６】
なお、その際に、各ユニットＵ１〜Ｕ６から異常履歴データを吸い上げるについては、従来からこの種のＰＬＣに備え付けられた、通信ユニットＵ５と各ユニットの間のデータ更新処理を利用すれば良いことは、当業者であれば容易に理解されるであろう。
【００６７】
本発明による作用効果を説明するための図が図１０に示されている。同図に示されるように、例えば図１０（ａ）に示されるようなＰＬＣのユニット配列が存在する場合、本発明によれば、同図（ｂ）に示されるように、各ユニット内においては各発生事象と発生時刻とが一意に定まるから、これを統合して並べ替えたものとしては、同図（ｃ）に示されるように、発生時刻と配列順番とが正確に対応することとなり、このような総合化された異常履歴によって、各異常の発生順番を正確に認識しつつ、的確な動作診断が可能となるのである。
【００６８】
最後に、ＣＰＵユニット、ユニットＡ、及びユニットＢのそれぞれが作成した異常履歴をプログラム開発支援装置が収集することで、総合化された異常履歴を生成する手順を図１１に示す。
【００６９】
ユーザが、プログラム開発支援装置において、異常履歴参照指令を行うと（ステップ８０１）、プログラム開発支援装置が作動して、ＣＰＵユニットからの異常履歴の読み出し（ステップ８１１，８２１）、ユニットＡからの異常履歴の読み出し（ステップ８１２，８２２）、及びユニットＢからの異常履歴の読み出し（ステップ８０３，８２３）が順次に行われる。しかるのち、プログラム開発支援装置は、それらの読み出された各異常履歴を時刻毎にソートし（ステップ８１４）、時刻毎に合成し（ステップ８１５）、最後に、ＰＬＣ全体の総合異常履歴として全ユニット分の異常履歴を時刻順に表示する（ステップ８１６）。
【００７０】
こうして得られる総合異常履歴は、各発生異常を正確に時刻順に並べたものとなるため、システム全体として、個々の異常がどのような順序でどの時刻に発生したかを正確に確認することができる。
【産業上の利用可能性】
【００７１】
本発明によれば、ＣＰＵユニット及び各付属ユニットのそれぞれが生成した履歴をＣＰＵユニット又はその他別のユニットに収集して、時系列的に並べ替え、総合履歴を作成するについて、作成された総合履歴上の事象配列順番と各事象の発生順番とを正確に対応付けることができ、これにより後日ＰＬＣの運転状態を正確に分析することができる。
【図面の簡単な説明】
【００７２】
【図１】ＰＬＣと開発支援装置とを含むシステム構成図である。
【図２】ＣＰＵユニットのハードウェア構成図である。
【図３】ＣＰＵユニット及び他ユニットの処理を示すフローチャートである。
【図４】ＣＰＵユニットの異常検知時の処理を示すフローチャートである。
【図５】ＣＰＵ以外の各ユニットの異常検知時の処理を示すフローチャートである。
【図６】異常発生命令を含むラダープログラムとその実行により得られる異常履歴表示例との関係を示す説明図である
【図７】ＣＰＵユニットの異常発生命令実行時の処理を示すフローチャートである。
【図８】異常登録処理の詳細を示すフローチャートである。
【図９】ミリ秒情報の取得処理の詳細フローチャートである。
【図１０】本発明による作用効果を説明するための図である。
【図１１】総合履歴生成処理を説明するためのフローチャートである。
【図１２】本発明が解決しようとする課題を説明するための図である。
【符号の説明】
【００７３】
１      ＰＬＣ
２      プログラム開発支援装置
３      通信ライン
１０１    マイクロプロセッサ（ＭＰＵ）
１０１ａ  リアルタイムクロック（ＲＴＣ）
１０２    専用集積回路（ＡＳＩＣ）
１０２ａ  フリーラニングカウンタ
１０３    システムメモリ（ＳＲＯＭ）
１０４    ワークメモリ（ＷＲＡＭ）
１０５    バッファメモリ（ＢＲＯＭ）
１０６    ユーザメモリ（ＵＭ）
１０７    入出力メモリ（ＩＯＭ）
２０１    Ｉ／Ｏバス（システムバス）
Ｕ１    電源ユニット
Ｕ２    ＣＰＵユニット
Ｕ３    入力ユニット
Ｕ４    出力ユニット
Ｕ５    通信ユニット
Ｕ６    高機能ユニット
【図１】
2009223586.tif 000003
【図２】
2009223586.tif 000004
【図３】
2009223586.tif 000005
【図４】
2009223586.tif 000006
【図５】
2009223586.tif 000007
【図６】
2009223586.tif 000008
【図７】
2009223586.tif 000009
【図８】
2009223586.tif 000010
【図９】
2009223586.tif 000011
【図１０】
2009223586.tif 000012
【図１１】
2009223586.tif 000013
【図１２】
2009223586.tif 000014