(57)【要約】【課題】自己診断用パルス信号を出力する外部機器を接続しても、安定したシーケンス制御を行うことが可能な制御装置、その入力回路及び信号入力方法を提供する。【解決手段】本発明の制御装置としてのＰＬＣ１０によれば、受信信号がオフ状態に反転してから所定のインターバル期間を経過した時点で反転したままであるか否かを検出し、反転したままであった場合にのみ信号をＰＬＣ本体部に取り込む。ここで、受信信号が自己診断用のパルス信号であった場合には、インターバル期間を経過した時点では、確実に反転状態から元の状態に戻っているから、自己診断用のパルス信号と作動時出力用のステップ信号とを確実に選別することができ、作動時出力用のステップ信号に基づいた安定したシーケンス制御を行うことができる。【選択図】　図５
2004046348.tif 000002
【特許請求の範囲】
【請求項１】
外部機器から受信した自己診断用のパルス信号と作動時出力用のステップ信号とを選別して、前記作動時出力用のステップ信号のみを制御装置本体に取り込む制御装置の信号入力方法であって、
前記外部機器からの受信信号が、通常状態に対して反転してからインターバル期間が経過した時点で反転したままか否かを検出し、反転したままであった場合にのみ前記受信信号を前記制御装置本体に取り込むと共に、
前記外部機器の仕様に対応させて、前記自己診断用のパルス信号が発生していない時間帯に前記検出を行うように前記インターバル期間を設定したことを特徴とする制御装置の信号入力方法。
【請求項２】
外部機器から受信した自己診断用のパルス信号と作動時出力用のステップ信号とを選別して、前記作動時出力用のステップ信号のみを制御装置本体に取り込む制御装置の入力回路であって、
前記外部機器からの受信信号が、通常状態に対して反転したことを検出する第１検出手段と、
前記第１検出手段が前記反転を検出してからインターバル期間を経過した時点で、前記受信信号が反転したままか否かを検出する第２検出手段と、
前記第２検出手段の検出結果を受け、前記受信信号が反転したままであった場合にのみ前記受信信号を前記制御装置本体に取り込む信号選別手段とを備え、
前記インターバル期間は、前記外部機器の仕様に対応させて、前記自己診断用のパルス信号が発生していない時間帯に前記第２検出手段の検出が行われるように設定したことを特徴とする制御装置の入力回路。
【請求項３】
外部機器から受信した自己診断用のパルス信号と作動時出力用のステップ信号とを選別して、前記作動時出力用のステップ信号のみを制御装置本体に取り込む入力回路を備えた制御装置であって、
前記外部機器からの受信信号が、通常状態に対して反転したことを検出する第１検出手段と、
前記第１検出手段が前記反転を検出してからインターバル期間を経過した時点で、前記受信信号が反転したままか否かを検出する第２検出手段と、
前記第２検出手段の検出結果を受け、前記受信信号が反転したままであった場合にのみ前記受信信号を前記制御装置本体に取り込む信号選別手段とを備え、
前記インターバル期間は、前記外部機器の仕様に対応させて、前記自己診断用のパルス信号が発生していない時間帯に前記第２検出手段の検出が行われるように設定したことを特徴とする制御装置。
【請求項４】
前記インターバル期間を更新可能に記憶した記憶手段と、
入力操作により前記インターバル期間を更新するための入力操作手段を備えたことを特徴とする請求項３に記載の制御装置。
【請求項５】
前記インターバル期間を更新可能に記憶した記憶手段と、
前記受信部が受信した信号をサンプリングして、前記インターバル期間を更新するインターバル期間更新手段とを備えたことを特徴とする請求項３に記載の制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ　Ｌｏｇｉｃ　ｃｏｎｔｒｏｌｌｅｒ）等の制御装置、その入力回路及び信号入力方法に関する。
【０００２】
【従来の技術】
ＰＬＣの入力回路には、セイフティライトカーテンやセイフティエリアセンサなどの安全機器が接続される場合がある。一般に、安全機器の出力信号は、通常時にはオン信号になっており、検出エリアへの進入物を検出したときにオフ信号に切り替わる。つまり、安全機器が作動時に出力する信号は、オン状態からオフ状態に切り替わるステップ信号になっている。そして、このステップ信号を受けたＰＬＣの本体部が所定のシーケンス処理を行い、例えばシステムに非常停止をかける。
【０００３】
ところで、近年の安全機器は、定期的に自己診断用のパルス信号を出力している。このパルス信号は、極めて短いパルス幅（例えば、２０μｓｅｃ）のオフ信号であって、このパルス信号を安全機器自身にフィードバックして出力系統に異常なきことを確認している。ここで、受信感度が低いＰＬＣでは、自己診断用のパルス信号は無視されるが、受信感度が高いＰＬＣ、特に、安全基準を高水準に設定した所謂安全ＰＬＣでは、自己診断用のパルス信号をも検出してしまう。
【０００４】
そこで、従来例では、ＰＬＣの入力回路に応答時間を遅らせるためのコンデンサやコイルを設けたものが知られている。また、別の従来例としてＰＬＣの入力回路で受信した信号がオフになったことを検出したら、さらに続けて３回検出動作を行い、そのうちの２回以上がオン状態であった場合には受信信号を無視し、そうではなかった場合に受信信号をＰＬＣの本体部に取り込む構成のものが知られている。
【０００５】
【発明が解決しようとする課題】
しかしながら、上述した従来のものにおいて、応答時間を遅らせるためのコンデンサやコイルを設けたものでは、安全機器が作動時に出力した信号に対しても応答性が悪くなる。また、安全機器のメーカによって自己診断用パルスの出力仕様が異なるため、３回の検出動作を行うものでは、例えば、パルス幅が大きい１つの自己診断用パルスに３回の検出動作が含まれてしまったり、或いは、連続出力された複数の自己診断パルスに３回の検出動作が重なる事態が生じ得た。このため、従来のものでは、自己診断パルスを作動信号と誤ってＰＬＣの本体部に取り込んでしまうことが考えられた。
【０００６】
本発明は、上記事情に鑑みてなされたもので、自己診断用パルス信号を出力する外部機器を接続しても、安定したシーケンス制御を行うことが可能な制御装置、その入力回路及び信号入力方法の提供を目的とする。
【０００７】
【課題を解決するための手段】
上記した目的を達成するためになされた請求項１の発明に係る制御装置の信号入力方法は、外部機器から受信した自己診断用のパルス信号と作動時出力用のステップ信号とを選別して、作動時出力用のステップ信号のみを制御装置本体に取り込む制御装置の信号入力方法であって、外部機器からの受信信号が、通常状態に対して反転してからインターバル期間が経過した時点で反転したままか否かを検出し、反転したままであった場合にのみ受信信号を制御装置本体に取り込むと共に、外部機器の仕様に対応させて、自己診断用のパルス信号が発生していない時間帯に検出を行うようにインターバル期間を設定したところに特徴を有する。
【０００８】
請求項２の発明に係る制御装置の入力回路は、外部機器から受信した自己診断用のパルス信号と作動時出力用のステップ信号とを選別して、作動時出力用のステップ信号のみを制御装置本体に取り込む制御装置の入力回路であって、外部機器からの受信信号が、通常状態に対して反転したことを検出する第１検出手段と、第１検出手段が反転を検出してからインターバル期間を経過した時点で、受信信号が反転したままか否かを検出する第２検出手段と、第２検出手段の検出結果を受け、受信信号が反転したままであった場合にのみ受信信号を制御装置本体に取り込む信号選別手段とを備え、インターバル期間は、外部機器の仕様に対応させて、自己診断用のパルス信号が発生していない時間帯に第２検出手段の検出が行われるように設定したところに特徴を有する。
【０００９】
請求項３の発明に係る制御装置は、外部機器から受信した自己診断用のパルス信号と作動時出力用のステップ信号とを選別して、作動時出力用のステップ信号のみを制御装置本体に取り込む入力回路を備えた制御装置であって、外部機器からの受信信号が、通常状態に対して反転したことを検出する第１検出手段と、第１検出手段が反転を検出してからインターバル期間を経過した時点で、受信信号が反転したままか否かを検出する第２検出手段と、第２検出手段の検出結果を受け、受信信号が反転したままであった場合にのみ受信信号を制御装置本体に取り込む信号選別手段とを備え、インターバル期間は、外部機器の仕様に対応させて、自己診断用のパルス信号が発生していない時間帯に第２検出手段の検出が行われるように設定したところに特徴を有する。
【００１０】
請求項４の発明は、請求項３に記載の制御装置において、インターバル期間を更新可能に記憶した記憶手段と、入力操作によりインターバル期間を更新するための入力操作手段を備えたところに特徴を有する。
【００１１】
請求項５の発明は、請求項３に記載の制御装置において、インターバル期間を更新可能に記憶した記憶手段と、受信部が受信した信号をサンプリングして、インターバル期間を更新するインターバル期間更新手段とを備えたところに特徴を有する。
【００１２】
【発明の作用及び効果】
本発明によれば、制御装置の入力回路が受信した受信信号が反転してから所定のインターバル期間を経過した時点で反転したままであるか否かを検出し、反転したままであった場合にのみ受信信号を制御装置本体に取り込む。ここで、本発明では、インターバル期間を外部機器の仕様に対応させて設定したから、受信信号が自己診断用のパルス信号であった場合には、インターバル期間を経過した時点で、確実に反転状態から元の状態に戻っている。一方、受信信号が作動時出力用のステップ信号であった場合には、インターバル期間を経過した時点でも反転したままになっている。これにより、自己診断用のパルス信号と作動時出力用のステップ信号とを確実に選別することができ、作動時出力用のステップ信号に基づいた安定したシーケンス制御を行うことができる。
【００１３】
また、本発明に係るインターバル期間は、入力操作手段を用いた入力操作により更新してもよいし（請求項４の発明）、インターバル期間更新手段により、受信部が受信した信号をサンプリングして更新してもよい（請求項５の発明）。
【００１４】
【発明の実施の形態】
＜第１実施形態＞
以下、本発明の第１実施形態を図１〜図５に基づいて説明する。
本実施形態のＰＬＣ１０（本発明の「制御装置」に相当する）は、図１に基本構成が示されており、本体部１１に入力回路１２と出力回路１３とキーボード１４とを接続してなる。本体部１１は、ＣＰＵ１５を主要部として備え、入力回路１２から受け取った信号に基づき、メモリ１６に記録したシーケンスプログラムをランする。そして、所定のシーケンス処理を行って、出力回路１３に接続された図示しない機器を駆動する。
【００１５】
また、本実施形態のＰＬＣ１０はいわゆる安全ＰＬＣであって、入力回路１２は、以下に説明するＰＬＣ診断用パルスを生成可能な構成になっている。即ち、入力回路１２には、入力点数に応じて複数の受信回路２５が設けられており、それらのうち１つの受信回路２５が図１に代表的に示されている。
【００１６】
受信回路２５は、第１及び第２のフォトカプラ２３，２４を備えてなり、第１フォトカプラ２３のフォトトランジスタ２３Ａと第２フォトカプラ２４のＬＥＤ２４Ｂとが、直列接続されて外部接続回路２９を構成している。詳細には、ＬＥＤ２４ＢのカソードをＧＮＤ接続する一方、アノードをフォトトランジスタ２３Ａのエミッタに接続し、さらにフォトトランジスタ２３Ａのコレクタをオープンにして入力回路１２における外部接続端末２６としてある。
【００１７】
また、第１フォトカプラ２３のＬＥＤ２３Ｂは、常には入力制御回路２０によって駆動されており、これにより前記フォトトランジスタ２３Ａがオンして、外部接続回路２９が外部接続端末２６からＧＮＤに向かう方向で導通状態になっている。そして、外部接続端末２６に接続した外部機器の出力信号に応じて、外部接続回路２９の通電状態が変化すると、その通電状態の変化に伴い、第２フォトカプラ２４のフォトトランジスタ２４Ａが開閉する。これによりフォトトランジスタ２４Ａを接続した入力制御回路２０に信号が取り込まれる。
【００１８】
入力制御回路２０は、外部接続端末２６に接続した外部機器からオン信号が常時出力されている場合に、定期的かつ所定期間（例えば２０μｓｅｃ）に亘って第１フォトカプラ２３のＬＥＤ２３Ｂをオフし、これにより受信回路２５内にオフ信号としての前記ＰＬＣ診断用パルスを生成する。そして、このＰＬＣ診断用パルス信号を第２フォトカプラ２４が検出できるか否かに基づいて入力回路１２を自己診断する。
【００１９】
本実施形態のＰＬＣ１０は、前述の如く安全ＰＬＣであるので、入力回路１２には、本発明の外部機器として、人の安全を確保するために用いられるいわゆる安全装置が接続される。その安全装置の一例として、例えばセイフティライトカーテン３０（以下、単に「ライトカーテン３０」という）が接続された場合について以下説明する。
【００２０】
ライトカーテン３０は、投光部３１と受光部３２とを備え、それら投受光部３１，３２の間を結ぶ複数の平行な光軸が遮られたときに、検出信号（本発明の「作動信号」に相当する）を出力する。
【００２１】
ライトカーテン３０の出力回路は、例えばトランジスタ（以下、「出力トランジスタ」という）のオープンコレクタ回路となっており、そのコレクタに例えば２４Ｖ電源が接続されかつエミッタにＰＬＣ１０の前記外部接続端末２６が接続される。また、前記出力トランジスタは常にはオンしており、これによりライトカーテン３０が作動していないときに外部接続端末２６に入力される信号の電圧は、２４Ｖに保持されている。そして、ライトカーテン３０が作動したとき、出力トランジスタがオフし、外部接続端末２６に入力される信号の電圧が０Ｖになる。即ち、ライトカーテン３０が作動時に出力する信号は、図２（Ａ）に示すように、電位２４Ｖのオン状態から電位０Ｖのオフ状態を切り替わるステップ信号になっている。
【００２２】
ところで、ライトカーテン３０は、自己診断用のパルス信号を定期的に出力しており、そのパルス信号をライトカーテン３０自身にフィードバックして自己診断を行っている。自己診断用のパルス信号は、ライトカーテン３０の前記出力トランジスタを、定期的に所定期間（例えば約２５μｓｅｃ）に亘ってオフすることで生成される。即ち、ライトカーテン３０が自己診断時に出力する信号は、図２（Ｂ）に示すようにパルス幅が約２５μｓｅｃのオフパルス信号となっている。
【００２３】
入力制御回路２０は、ＣＰＵ２１、ＲＯＭ２２、ＥＥＰＲＯＭ２７及び図示しないＲＡＭを備えており、ＲＯＭ２２に記憶された信号選別プログラムをランして、前述した自己診断用のパルス信号と作動時出力用のステップ信号とを選別することができる。詳細には、例えば、受信回路２５による受信信号が、オン状態（通常状態）からオフ状態に反転したときの割込処理として、図３に示した信号選別プログラムＰＲ１の実行が割り当てられている。
【００２４】
受信信号の前記反転が検出されて信号選別プログラムＰＲ１が実行されると、図３に示すように、カウンタＫが０にリセットされてから（Ｓ１）、そのカウンタＫを１ずつインクリメントするループに入り（Ｓ２、Ｓ３）、カウンタＫが所定の上限値Ｋ１になるまで前記インクリメントが繰り返される。
そして、カウンタＫが上限値Ｋ１に達して（Ｓ３でＹｅｓ）、ループを抜けた時点で、受信信号がオフ状態か否か、即ち、反転したままか否かが再検出される（Ｓ４）。そして、受信信号が反転したまま（オフ状態のまま）の場合には（Ｓ５でＹｅｓ）、その受信信号を本体部１１に適したレベルの信号に変換して本体部１１に出力する（Ｓ６）。一方、受信信号がオンに戻っていた場合には（Ｓ５でＮｏ）、受信信号を無視し、本体部１１には何も信号を出力しない。
【００２５】
以上を纏めると、信号選別プログラムＰＲ１では、受信回路２５の受信信号がオン状態からオフ状態に反転したことを検出してから、カウンタＫにより計数した所定時間を経過した時点において、前記受信信号が反転したまま（オフ状態のまま）か否かを再検出し（Ｓ４）、反転したままの場合にのみ（Ｓ５のＹｅｓ）、受信信号を本体部１１に取り込む（Ｓ６）。
【００２６】
即ち、本実施形態では、上記した信号選別プログラムＰＲ１の実行前に、受信信号の前記反転を検出するステップ（図示せず）が本発明に係る「第１検出手段」に相当し、前記再検出を行うステップＳ４が本発明に係る「第２検出手段」に相当する。また、カウンタＫの計数による所定時間が本発明に係る「インターバル期間」に相当し、さらに、再検出の結果を受け、受信信号が反転したままか否かに応じて、受信信号を本体部１１に取り込むか否かを決定するステップ（Ｓ５）が本発明に係る「信号選別手段」に相当する。
【００２７】
本実施形態の場合には、上記した上限値Ｋ１によって本発明に係るインターバル期間が特定され、この上限値Ｋ１のデータは、入力制御回路２０に備えたＥＥＰＲＯＭ２７（本発明の「記憶手段」に相当する）に記憶されている。そして、本体部１１に連なるキーボード１４（本発明の「入力操作手段」に相当する）を操作することによって、本体部１１のＣＰＵ１５から入力回路１２のＣＰＵ２１に更新命令が伝達され、ＥＥＰＲＯＭ２７に記憶した上限値Ｋ１が更新される。
【００２８】
ところで、入力制御回路２０のＣＰＵ２１は、定期的に図４に示したＰＬＣ診断プログラムＰＲ２を実行する。このプログラムＰＲ２が実行されると、図４に示すように、前記した信号選別プログラムＰＲ１に対する割込処理の割り当てを解除してから（Ｓ１０）、ＰＬＣ診断用パルスを発生させる（Ｓ１１）。そして、この発生させたＰＬＣ診断用パルスを第２フォトカプラ２４が受信したか否かをチェックし（Ｓ１２）、受信していた場合には（Ｓ１２でＹｅｓ）、信号選別プログラムＰＲ１に対する割込処理の割り当てを復帰させてから、このＰＬＣ診断プログラムＰＲ２を抜ける。一方、第２フォトカプラ２４がＰＬＣ診断用パルスを受信しなかった場合には（Ｓ１２でＮｏ）、異常である旨の報知を行ってから、このプログラムＰＲ２から抜ける。なお、異常報知が行われた場合には、フォトカプラ２３の交換作業等を行って対応すればよい。
【００２９】
次に、上記構成からなる本実施形態の動作を説明する。
ＰＬＣ１０の入力回路１２に接続する外部機器が、自己診断用のパルス信号を出力するものである場合には、その外部機器の仕様書に記載された自己診断用のパルス信号の発生間隔及びパルス幅を参照にしてインターバル期間を設定する。具体的には、図５（Ａ）に示すように、周期が１ｍｓｅｃでパルス幅が２０μｓｅｃの自己診断用のパルス信号を出力するライトカーテン３０を入力回路１２に接続する場合には、インターバル期間を２０μｓｅｃより大きくかつ１０２０μｓｅｃ（＝１ｍｓｅｃ＋２０μｓｅｃ）より小さい値に設定することができる。
【００３０】
ここで、処理速度を高くすることを求めた場合には、インターバル期間は短い方が好ましく、処理の確実性を求めた場合には、ばらつきを考慮して、自己診断用のパルス信号の発生から離れた時間帯にインターバル期間の終了点がくるように設定することが好ましい。そこで、例えばインターバル期間として４０μｓｅｃを設定する場合を例示して以下説明する。
【００３１】
本実施形態の場合、インターバル期間の設定は、キーボード１４の操作により行う。キーボード１４にて、「インターバル期間＝４０μｓｅｃ」というデータを入力すると、例えば、本体部１１のＣＰＵ１５を通して入力回路１２のＣＰＵ２１にそのデータが渡され、所定の式にて４０μｓｅｃが上限値Ｋ１に換算される。そして、ＥＥＰＲＯＭ２７に記憶された上限値Ｋ１の値が、インターバル期間の４０μｓｅｃに対応した値に更新される。
【００３２】
これにより、信号選別プログラムＰＲ１を実行したときにカウンタＫをインクリメントするループ回数が、ライトカーテン３０が出力する自己診断用のパルス信号の仕様に適合した回数に設定される。そして、ＰＬＣ１０における入力回路１２の受信信号がオン状態からオフ状態に反転した時点（図５のＳ時点）を開始点として、その開始点から４０μｓｅｃを経過した時点（図５のＥ時点）で、受信信号が反転したまま（オフ状態のまま）か否かが検出される。
【００３３】
ここで、入力回路１２が受信した信号が自己診断用のパルス信号であった場合には、図５（Ａ）に示すように、インターバル期間が経過した時点（図５のＥ時点）で必ずオン状態に復元している。一方、入力回路１２が受信した信号が作動時出力用のステップ信号であった場合には、図５（Ｂ）に示すように、インターバル期間が経過した時点（図５のＥ時点）で必ずオフ状態に保持されている。これにより、自己診断用のパルス信号と作動時出力用のステップ信号とを確実に選別することができる。
【００３４】
このように本実施形態によれば、入力回路１２が受信した信号を２回検出し、その２回の検出の間のインターバル期間を、ＰＬＣ１０に接続される外部機器の仕様に対応させて設定したから、２回目の検出時に受信信号がオンかオフかによって、自己診断用のパルス信号か作動時出力用のステップ信号かを確実に選別することができる。これにより、自己診断用のパルス信号を出力する外部機器をＰＬＣ１０に接続しても、そのパルス信号の影響を受けず、作動時出力用のステップ信号に基づいた安定したシーケンス制御を行うことができる。
【００３５】
また、インターバル期間を設定する際に、自己診断用のパルス信号の発生間隔及びパルス幅も入力しておき、ＰＬＣ診断用パルスの発生と自己診断用のパルス信号とが同期しないように制御してもよい。これにより、ＰＬＣ１０自体の自己診断をスムーズに行うことができる。
【００３６】
さらに、図５（Ｃ）に示すように、自己診断用パルスが複数連続発生した後に、しばらく間隔を空けて再び複数連続発生するパターンを繰り返す場合には、連続発生する一群のパルスの後にインターバル期間の終了点がくるように設定してもよい。
【００３７】
＜第２実施形態＞
前記第１実施形態では、キーボード１４の操作によりインターバル期間を設定する構成であったが、本実施形態のＰＬＣは、入力回路に外部機器を接続するだけで、その入力回路の受信信号をサンプリングして、インターバル期間を自動設定する構成になっている。以下、図６〜図９のフローチャートを用いて説明する。
【００３８】
外部機器が出力する自己診断用のパルス信号の仕様を求めるために、自己診断用パルスのパルス幅の最大値と、パルス間隔の最小時間を求める。そのために、図６に示した処理では、ＰＬＣにおける入力回路への入力信号を一定周期でサンプリングしつつそのサンプリングの回数をカウントし、入力信号が切り替わってから次に切り替わるまでのサンプリング回数のカウント値を自然数ｎを引数とする配列変数ｔ（ｎ）に記憶する。
【００３９】
具体的には、図６の処理を実行すると、まずは、配列カウンタｎを０に初期化して（Ｓ１００）、入力信号がオフ状態からオン状態になるまで待機する（Ｓ１０２）。この処理により、オン状態になった直後からサンプリングを開始することができ、初回の入力信号オン時間を正確に測定することができる。
【００４０】
入力信号がオフ状態からオン状態になったら、待機処理（Ｓ１０２）を抜け、時間計測用のカウンタをクリアにしてから（Ｓ１０４）、入力信号をサンプリングする（Ｓ１０６）。そして、時間計数用のカウンタをカウントアップし（Ｓ１０８）、サンプリングした入力信号と前回のサンプリングした入力信号とのオン・オフが反転しているか否をチェックし（Ｓ１１０）、反転していれば（Ｓ１１０でＹｅｓ）、その時のカウンタ値をｔ（ｎ）に記憶してから（Ｓ１１８）、配列カウンタｎをインクリメントする（Ｓ１２０）。そして、配列カウンタｎが１００より小さければ（Ｓ１２２でＮｏ）、前記したＳ１０４に処理を戻り、配列カウンタｎになるまで上記と同じ動作を繰り返す。
【００４１】
一方、サンプリングした入力信号と前回のサンプリングした入力信号とのオン・オフが反転しなかった場合には（Ｓ１１０でＮｏ）、時間待ち処理（Ｓ１１２）を実行する。この時間待ち処理は入力信号に変化があった場合でも変化がなかった場合でも同じ周期でサンプリング（Ｓ１０６）を行うようにするための処理である。即ち、この待ち時間はＳ１１８，Ｓ１２０，Ｓ１２２，Ｓ１０４の各ステップの処理に要する時間から、Ｓ１１４の処理に要する時間を差し引いた時間である。実際にはＮＯＰ（Ｎｏ　ｏｐｅｒａｔｉｏｎ）コマンドを所定回数繰り返すなどの処理をする。
【００４２】
時間待ち処理（Ｓ１１２）の後、カウンタ値が定数Ｃ１を超えたか否かを判定する（Ｓ１１４）。この処理は何らかの原因で入力信号が切り替わらなくなった場合に無限ループとなることを防ぐための処理である。即ち、入力信号が切り替わらなくなった場合にはＳ１０６〜Ｓ１１４までの処理を無限に繰り返すこととなるが、これを放置するとシステムが停止し、ユーザーはその停止の原因を知ることができない。その結果、原因究明及び復旧に長い時間を要することになる。これを防ぐため、カウンタ値を監視し（Ｓ１１４）、所定回数（Ｃ１）を超えていたら（Ｓ１１４でＹｅｓ）、異常が発生したとみなし、「異常終了フラグ」をオンして（Ｓ１１６）、一連の処理を終了する。これにより、異常の発生をその内容と共にユーザーに報知することができ、ユーザーは適切な復旧作業をすることができる。
【００４３】
以上説明した図６のフローチャートの処理により、配列変数ｔ（ｎ）（配列カウンタｎ＝０〜９９）に入力信号が変化した時間間隔に相当するカウント値が記憶され、何らかの異常により入力信号が所定時間変化しなくなった場合には異常が報知される。
【００４４】
図６に示した処理が終了したら、図７に示した処理を行う。この処理では、入力信号のオン時間の最大値と２番目に大きな値、及び最小値と２番目に小さな値を求める。以下、入力信号のオン時間の最大値をｔｏｎ＿ｍａｘ１、最大値の次に大きな値をｔｏｎ＿ｍａｘ２、最小値をｔｏｎ＿ｍｉｎ１、最小値の次に小さな値をｔｏｎ＿ｍｉｎ２と表すこととする。
【００４５】
初めに配列カウンタｎを０にし（Ｓ２０２）、ｔｏｎ＿ｍｉｎ１及びｔｏｎ＿ｍｉｎ２を暫定的に所定の値に設定し（Ｓ２０４）、さらに、ｔｏｎ＿ｍａｘ１及びｔｏｎ＿ｍａｘ２を０に設定する（Ｓ２０６）。
【００４６】
そして、ｔ（ｎ）がｔｏｎ＿ｍｉｎ１以下かを判定し（Ｓ２０８）、ｔ（ｎ）がｔｏｎ＿ｍｉｎ１以下であった場合には（Ｓ２０８でＹｅｓ）、ｔｏｎ＿ｍｉｎ２にｔｏｎ＿ｍｉｎ１を代入するとともに（Ｓ２１０）、ｔｏｎ＿ｍｉｎ１にｔ（ｎ）を代入する（Ｓ２１２）。
【００４７】
一方、ｔ（ｎ）がｔｏｎ＿ｍｉｎ１以下でなかった場合には、ｔ（ｎ）がｔｏｎ＿ｍｉｎ２未満かを判定し（Ｓ２１４）、ここで、ｔ（ｎ）がｔｏｎ＿ｍｉｎ２未満であった場合には（Ｓ２１４でＹｅｓ）、ｔｏｎ＿ｍｉｎ２にｔ（ｎ）を代入する（Ｓ２１６）。
一方、ｔ（ｎ）がｔｏｎ＿ｍｉｎ２未満でなかった場合には（Ｓ２１４でＮｏ）、ｔｏｎ＿ｍｉｎ２を書き換えることなく次の処理に移行する。
即ち、ｔ（ｎ）がその時点でのｔｏｎ＿ｍｉｎ１よりも小さければｔｏｎ＿ｍｉｎ１にｔ（ｎ）を代入し、ｔｏｎ＿ｍｉｎ１≦ｔ（ｎ）＜ｔｏｎ＿ｍｉｎ２であれば、ｔｏｎ＿ｍｉｎ２にｔ（ｎ）を代入するのである。
【００４８】
続いて実行されるＳ２１８〜Ｓ２２６は、上記説明したＳ２０８〜Ｓ２１６と同様の処理により、ｔｏｎ＿ｍａｘ１及びｔｏｎ＿ｍａｘ２を求めるものであるので、詳細な説明は省略する。
【００４９】
次に、配列カウンタｎに２を加算する（Ｓ２２８）。ｔ（ｎ）には、入力信号のオン時間とオフ時間とが交互に記憶されているので、配列カウンタｎを２ずつ加算することで、入力信号のオン時間のみを抽出できる。そして、配列カウンタｎが１００に満たなければ処理（Ｓ２３０でＮｏ）、Ｓ２０８に戻り、配列カウンタｎが１００になるまで、同じ処理が繰り返される。このように各入力信号のオン時間についてＳ２０８〜Ｓ２２６の処理を繰り返し行うことにより、入力信号オン時間の最大の値と２番目に大きな値、及び最小の値と２番目に小さな値が求められる。
【００５０】
図７に示した処理に次いで実行される図８に示した処理では、入力信号オフ時間の最大値と２番目に大きな値、及び最小値と２番目に小さな値を求める処理である。このフローチャートでは、入力信号オフ時間の最大値をｔｏｆｆ＿ｍａｘ１、入力信号オフ時間の最大値の次に大きな値をｔｏｆｆ＿ｍａｘ２、入力信号オフ時間の最小値をｔｏｆｆ＿ｍｉｎ１、入力信号オフ時間の最小値の次に小さな値をｔｏｆｆ＿ｍｉｎ２と表している。
【００５１】
図８の処理は、図７の処理に対して、「オン時間」と「オフ時間」とが異なるのみでそれ以外は同様の処理を行うものであるので、詳細な説明は省略する。なお、Ｓ３０２で配列カウンタｎを１に初期化しているのは、ｔ（ｎ）の奇数番号、即ち入力信号のオフ時間のみを抽出するためである。
【００５２】
図９は、図７及び図８の処理で求めたそれぞれの値、即ち、オン時間・オフ時間の最大・最小値及び２番目に大きな値と２番目に小さな値をチェックし、異常な値となっていないかを判定するとともに、異常がない場合には自己診断用パルス幅の最大値と、自己診断用パルス間の最小時間間隔を求める処理を示すフローチャートである。
【００５３】
図９の処理では、まず、ｔｐを０に初期化する（Ｓ４０２）。ｔｐは後の処理で自己診断用パルス幅の最大値が代入される変数である。
【００５４】
次いで、Ｓ４０４〜Ｓ４１０において、オン時間・オフ時間の最大の値と２番目に大きな値との比較、及び、最小の値と２番目に小さな値との比較を行う。入力信号は、所定のデータパターンが繰り返し表れるので、これら比較される各々の値はほぼ同じ値でなければならない。比較の結果、大きな差が現れれば、回路又は配線等にノイズが混入していたり、動作が不安定になっている蓋然性が高いと考えられるので、ｔｐが０のまま処理を終了する。なお、Ｓ４０４〜Ｓ４１０におけるＣ２は、許容値に相当する所定の定数である。
【００５５】
Ｓ４０４〜Ｓ４１０で異常が認められなければ、Ｓ４１２以降の処理を行う。即ち、オン時間の最大値とオフ時間の最大値とを比較することにより（Ｓ４１２）、外部機器の自己診断用パルスがオフンパルスなのかオンパルスなのかを判断する。そして、オン時間の最大値（ｔｏｎ＿ｍａｘ１）がオフ時間の最大値（ｔｏｆｆ＿ｍａｘ１）よりも大きければ（Ｓ４１２でＹｅｓ）、自己診断用パルスがオフパルスであると判断し、そうでない場合には（Ｓ４１２でＮｏ）、自己診断用パルスがオンパルスであると判断する。
【００５６】
自己診断用パルスがオフパルスであると判断した場合には、Ｓ４１４〜Ｓ４１８の処理を行う。即ち、自己診断用パルスのパルス幅の最大値（ｔｏｆｆ＿ｍａｘ１）と最小値（ｔｏｆｆ＿ｍｉｎ１）との差が、所定の範囲内（定数Ｃ３以下）に収まっているかをチェックする（Ｓ４１４）。ここで、本来、自己診断用パルスは一定のパルス幅であるので、パルス幅の最大値と最小値はほぼ等しい値であるはずである。この差が大きい場合には（Ｓ４１４でＮｏ）、サンプリングの最中に外部機器が作動し、入力信号が（自己診断用パルスによるものではなく）実際に切り替わったと推定される。このような場合には、入力信号の二度読み時間間隔を精度よく求めることができないので、ｔｐに値を設定することなく処理を終了する。
【００５７】
自己診断用パルスのパルス幅の最大値（ｔｏｆｆ＿ｍａｘ１）と最小値（ｔｏｆｆ＿ｍｉｎ１）との差が、所定の範囲内（定数Ｃ３以下）に収まった場合には（Ｓ４１４でＹｅｓ）、ｔｏｆｆ＿ｍａｘ１に定数Ｃ４を掛けてｔｐに代入する（Ｓ４１６）。ｔｏｆｆ＿ｍａｘ１に記憶された値は、入力信号の二度読み時間間隔そのものを示すものではなく、図６の処理で使用した時間係数用のカウンタのカウンタ値であるので、ｔｏｆｆ＿ｍａｘ１と定数Ｃ４との積により、時間を表す値に変換するのである。これにより、ｔｐには入力信号の二度読み時間間隔が、例えばμｓの単位で設定される。同様に、ｔｏｎ＿ｍｉｎ１に定数Ｃ４を掛けてｔｑに代入する（Ｓ４１８）。
【００５８】
Ｓ４２０〜Ｓ４２４は、自己診断用パルスがオンパルスである場合の処理を示したものである。これらの処理はＳ４１４〜Ｓ４２８と同様の内容であるので、詳細な説明は省略する。
【００５９】
Ｓ４２６は、ｔｐに定数αを加算した値とｔｑとの大小を比較する処理である。（ｔｐ＋α）は、入力信号を実際に二度読みする際の時間間隔であり、定数αはこの時間間隔に余裕度を与えるためのものである。即ち、自己診断用パルス幅の最大値（ｔｐ）の時間間隔で入力信号を二度読みすると、温度変化等により自己診断用パルス幅が変化した際に信号を読み誤ることとなるので、入力信号を二度読みする際の時間間隔を多めにとるのである。（ｔｐ＋α）＜ｔｑの場合には、後に詳述するように、自己診断用パルスが連続して発生する際の連続発生数（Ｎ）を知る必要があるので、この処理を行ってからリターンする。
【００６０】
自己診断用パルスが連続して発生する際の連続発生数（Ｎ）を求める処理を図１０に示す。Ｓ５０２〜Ｓ５０６はｔｏｎ＿ｍａｘ１とｔｏｆｆ＿ｍａｘ１のいずれか大きい方に０．９を掛け、変数ｔｒに代入する処理である。これにより、ｔｒにはサンプリングした中で最も長いパルス幅のカウント数に０．９を掛けた値が代入される。自己診断用パルスの連続発生数（Ｎ）は長いパルス幅のパルス（図１１（Ｃ）のＰ１）とその次に発生する長いパルス幅のパルス（図１１（Ｃ）のＰ２）との間に発生した自己診断用パルスの数であるので、ｔｒ以上のパルスが発生してから次にｔｒ以上のパルスが発生するまでの間に発生するパルスの数を数える。
【００６１】
Ｓ５０８，Ｓ５１０では、それぞれ変数ｍとｎとを初期化する。Ｓ５１２はｔ（ｎ）がｔｒより大きいか否かを判定する。ｔ（ｎ）がｔｒより大きくなければＳ５１４でｎをインクリメントしてＳ５１２の処理に戻る。Ｓ５１２でｔ（ｎ）がｔｒより大きければ、Ｓ５１６でｍをインクリメントする。次にＳ５１８でｎをインクリメントし、Ｓ５２０でｔ（ｎ）とｔｒとを比較して、ｔ（ｎ）＞ｔｒでなければＳ５１６からＳ５２０の処理を繰り返し行う。
この繰り返し処理により、パルスＰ１とＰ２の間に発生するパルスの数がカウントされる。このカウント数は、オンパルスとオフパルスの両者を含むものである。
【００６２】
Ｓ５２０でｔ（ｎ）＞ｔｒであれば、Ｓ５２２で自己診断用パルスの連続発生数Ｎに、ｍを２分の１にした値を代入する。前記したように、ｍはオンパルスとオフパルスの両者を含んだカウント値であるので、これを２分の１にすることで、自己診断用パルスの連続発生数Ｎが得られる。この処理の後、リターンする。
【００６３】
以上の処理により、自己診断用パルス幅の最大値（ｔｐ）と、自己診断用パルス間の最小時間間隔（ｔｑ）、及び自己診断用パルスの連続発生数（Ｎ）を求めることができる。また、オン時間・オフ時間の最大・最小値などに異常が認められればｔｐが０のまま図９に示す処理が終了するので、この場合にはユーザーに異常を報知することができる。なお、異常原因をより詳細にユーザーに示すため、Ｓ４０４〜Ｓ４１０並びにＳ４１４、Ｓ４２０の処理で異常と判定したら、それぞれに異なる異常コードを設定するようにしてもよい。
【００６４】
＜他の実施形態＞
本発明は、前記実施形態に限定されるものではなく、例えば、以下に説明するような実施形態も本発明の技術的範囲に含まれ、さらに、下記以外にも要旨を逸脱しない範囲内で種々変更して実施することができる。
（１）前記第１実施形態で例示したライトカーテン３０は、自己診断用パルスとしてオフパルスを出力するものであったが、自己診断用パルスとしてオンパルスを出力する外部機器が接続されるＰＬＣに本発明を適用してもよい。
【００６５】
（２）前記第１実施形態のＰＬＣ１０は、ＰＬＣ診断用パルスを生成する構成であったが、ＰＬＣ診断用パルスを生成しないＰＬＣに本発明を適用してもよい。
【００６６】
（３）前記実施形態では、本発明に係る制御装置としてＰＬＣを例示したが、本発明に係る制御装置はＰＬＣに限定されるものではなく、外部機器が接続されるものであれば、例えば、ＣＮＣ（数値制御）コントローラ、ロボットのコントローラ、パソコン等であってもよい。
【図面の簡単な説明】
【図１】本発明の第１実施形態に係るＰＬＣの構成を示したブロック図
【図２】（Ａ）作動時出力用のステップ信号を示した波形図
（Ｂ）自己診断作用のパルス信号を示した波形図
（Ｃ）自己診断用のパルス信号の変形例を示した波形図
【図３】信号選別プログラムのフローチャート
【図４】ＰＬＣ診断プログラムのフローチャート
【図５】（Ａ）作動時出力用のステップ信号とインターバル期間との関係を示したタイムチャート
（Ｂ）自己診断作用のパルス信号とインターバル期間との関係を示したタイムチャート
【図６】第２実施形態に係るインターバル期間を設定する処理のフローチャート
【図７】同インターバル期間を設定する処理のフローチャート
【図８】同インターバル期間を設定する処理のフローチャート
【図９】同インターバル期間を設定する処理のフローチャート
【図１０】インターバル期間を設定する処理のフローチャート
【図１１】自己診断用のパルスの波形図
【符号の説明】
１０…ＰＬＣ（制御装置）
１１…本体部（制御装置本体）
１２…入力回路
１４…キーボード（入力操作手段）
２７…ＥＥＰＲＯＭ（記憶手段）
３０…ライトカーテン（外部機器）
【図１】
2004046348.tif 000003
【図２】
2004046348.tif 000004
【図３】
2004046348.tif 000005
【図４】
2004046348.tif 000006
【図５】
2004046348.tif 000007
【図６】
2004046348.tif 000008
【図７】
2004046348.tif 000009
【図８】
2004046348.tif 000010
【図９】
2004046348.tif 000011
【図１０】
2004046348.tif 000012
【図１１】
2004046348.tif 000013