(57)【要約】【課題】デバイス記録と高精度に時刻を同期させるようにする。【解決手段】カメラ入力拡張ユニット４ｃは、撮像トリガの条件を含むカメラ部９８の設定情報を記憶するカメラ設定情報記憶部５３０と、カメラ設定情報記憶部５３０に記憶されたカメラ部９８の設定情報に基づいて、撮像トリガを規定するＯＮ／ＯＦＦ信号を生成し、該ＯＮ／ＯＦＦ信号を撮像トリガとしてカメラ部９８で生成された画像データを処理するカメラ拡張ユニット処理部５１０と、カメラ拡張ユニット処理部５１０で取得された画像データを記録する画像記録部５２０と、カメラ拡張ユニット処理部５１０とカメラ部９８との間に設けられ、ＯＮ／ＯＦＦ信号をカメラ部９８に送るための撮像トリガライン５０１、及びカメラ部９８で生成された画像データをカメラ拡張ユニット処理部５１０に送るための画像通信ライン５０２を有する撮像インターフェース５００とを備える。【選択図】図６
2020134985.tif 000002
【特許請求の範囲】
【請求項１】
ユーザープログラムを実行するＣＰＵユニットを備え、該ＣＰＵユニットが該ユーザープログラムを繰り返し実行することにより外部機器を監視又は制御するプログラマブルロジックコントローラであって、
前記プログラマブルロジックコントローラは、
前記ＣＰＵユニットとバスを介して電気的に接続されると共に、前記プログラマブルロジックコントローラからの撮像トリガに応じて所定領域を撮像し、撮像した該所定領域に対応する画像データを生成するカメラ部を接続するためのカメラ入力拡張ユニットを備え、
前記カメラ入力拡張ユニットは、
前記撮像トリガの条件を含む前記カメラ部の設定情報を記憶するカメラ設定情報記憶部と、
前記カメラ設定情報記憶部に記憶された前記カメラ部の設定情報に基づいて、前記撮像トリガを規定するＯＮ／ＯＦＦ信号を生成し、該ＯＮ／ＯＦＦ信号を前記撮像トリガとして前記カメラ部で生成された画像データを処理するカメラ拡張ユニット処理部と、
前記カメラ拡張ユニット処理部で取得された画像データを記録する画像記録部と、
前記カメラ拡張ユニット処理部と前記カメラ部との間に設けられ、前記ＯＮ／ＯＦＦ信号を前記カメラ部に送るための撮像トリガライン、及び前記カメラ部で生成された画像データを前記カメラ拡張ユニット処理部に送るための画像通信ラインを有する撮像インターフェースと、
を備えるプログラマブルロジックコントローラ。
【請求項２】
請求項１に記載のプログラマブルロジックコントローラであって、
前記ＣＰＵユニットにより実行されるユーザープログラムは、前記ＣＰＵユニットに接続されるプログラム作成支援装置によって作成され、
前記カメラ設定情報記憶部に記憶される前記カメラ部の設定情報は、前記プログラム作成支援装置により作成され、前記ＣＰＵユニットを介して受信された設定情報を含んでなるプログラマブルロジックコントローラ。
【請求項３】
請求項１又は２に記載のプログラマブルロジックコントローラであって、さらに、
前記ＣＰＵユニット及び前記カメラ入力拡張ユニットが取り付けられるベースプレートを備え、
前記カメラ入力拡張ユニットは、前記ＣＰＵユニットと前記ベースプレート内のバスを介して電気的に接続されてなるプログラマブルロジックコントローラ。
【請求項４】
請求項１〜３のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記画像記録部は、前記カメラ拡張ユニット処理部で取得された画像データを、該画像データが取得された時刻に関する情報と関連付けて時系列に記録すると共に、前記ＣＰＵユニットからの指示に応じて、前記画像データ及び前記時刻に関する情報を前記ＣＰＵユニットに送信するよう構成してなるプログラマブルロジックコントローラ。
【請求項５】
請求項１〜４のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記撮像トリガラインが、非通信ラインであるプログラマブルロジックコントローラ。
【請求項６】
請求項１〜５のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記撮像インターフェースは、さらに、
前記カメラ部に対して電力を供給するための電力供給インターフェースを備え、
前記撮像インターフェースと前記カメラ部とを接続するカメラ接続ケーブルは、前記画像通信ラインと、前記撮像トリガラインと、前記電力供給ラインとを束ねてなるプログラマブルロジックコントローラ。
【請求項７】
請求項１〜６のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記画像通信ラインによる通信速度を１３０Ｍｂｐｓ以上としてなるプログラマブルロジックコントローラ。
【請求項８】
請求項１〜７のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記カメラ拡張ユニット処理部は、
前記撮像トリガラインを介して、前記カメラ部に送る前記ＯＮ／ＯＦＦ信号を生成する撮像トリガ発行部と、
前記ＯＮ／ＯＦＦ信号を送出する時刻に関する情報を、前記カメラ部で取得された画像データと関連付けて前記画像記録部に記録する収集部と、
を備えるプログラマブルロジックコントローラ。
【請求項９】
請求項１〜８のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記ＣＰＵユニット及びカメラ入力拡張ユニットは、時刻管理部を備えており、
前記ＣＰＵユニット及びカメラ入力拡張ユニットの各々に設けられた前記時刻管理部を用いて時刻同期を行うよう構成してなるプログラマブルロジックコントローラ。
【請求項１０】
請求項９に記載のプログラマブルロジックコントローラであって、
前記時刻管理部がカウンタであり、
前記画像データが取得された時刻に関する情報を、カウンタ値としてなるプログラマブルロジックコントローラ。
【請求項１１】
請求項１〜１０のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記カメラ拡張ユニット処理部は、前記撮像トリガをラダープログラムに記述し、前記ラダープログラムによる撮像トリガ制御を行うよう構成してなるプログラマブルロジックコントローラ。
【請求項１２】
請求項１〜１１のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記撮像トリガを規定するＯＮ／ＯＦＦ信号を送出するタイミングが、タイマ、外部入力、異常検知の何れかであるプログラマブルロジックコントローラ。
【請求項１３】
請求項１〜１２のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記カメラ拡張ユニット処理部が、前記カメラ拡張ユニットが毎スキャンごとに実行するリフレッシュ通信のプロトコル解釈及び実行、又は他の拡張ユニットへの転送を行うよう構成してなるプログラマブルロジックコントローラ。
【請求項１４】
請求項１〜１３のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記カメラ入力拡張ユニットが複数備えられてなるプログラマブルロジックコントローラ。
【請求項１５】
請求項１４に記載のプログラマブルロジックコントローラであって、
前記複数のカメラ入力拡張ユニットにそれぞれ接続されたカメラでもって、共通の対象物を、異なる方向から同期させて撮像するよう構成してなるプログラマブルロジックコントローラ。
【請求項１６】
請求項１４又は１５に記載のプログラマブルロジックコントローラであって、
前記複数のカメラ入力拡張ユニットにそれぞれ接続されたカメラでもって、共通の対象物を、異なる位相で撮像するよう構成してなるプログラマブルロジックコントローラ。
【請求項１７】
プログラマブルロジックコントローラを構成するＣＰＵユニットと、バスを介して電気的に接続されるカメラ入力拡張ユニットであって、
前記プログラマブルロジックコントローラからの撮像トリガに応じて所定領域を撮像し、撮像した該所定領域に対応する画像データを生成するカメラ部の、前記撮像トリガの条件を含む設定情報を記憶するカメラ設定情報記憶部と、
前記カメラ設定情報記憶部に記憶された前記カメラ部の設定情報に基づいて、前記撮像トリガを規定するＯＮ／ＯＦＦ信号を生成し、該ＯＮ／ＯＦＦ信号を前記撮像トリガとして前記カメラ部で生成された画像データを処理するカメラ拡張ユニット処理部と、
前記カメラ拡張ユニット処理部で取得された画像データを記録する画像記録部と、
前記カメラ拡張ユニット処理部と前記カメラ部との間に設けられ、前記ＯＮ／ＯＦＦ信号を前記カメラ部に送るための撮像トリガライン、及び前記カメラ部で生成された画像データを前記カメラ拡張ユニット処理部に送るための画像通信ラインを有する撮像インターフェースと、
を備えるカメラ入力拡張ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルロジックコントローラ及びカメラ入力拡張ユニットに関する。
【背景技術】
【０００２】
プログラマブルロジックコントローラ（Programmable Logic Controller：以下、「ＰＬＣ」という。）はファクトリーオートメーション（Factory Automation：ＦＡ）において製造機器や搬送装置、検査装置を制御するコントローラである。ＰＬＣはユーザによって作成されるラダープログラム等のユーザープログラムを実行することで様々な拡張ユニットや被制御機器を制御する。ユーザープログラムを実際にＰＬＣ上で実行してみて、ユーザープログラムの作成時には想定していなかった事象が見つかり、ユーザープログラムの修正が必要となることがある。ユーザは修正箇所を特定するためにユーザープログラムを見直すだけでなく、ＰＬＣが生成したログデータを参照する。ログデータにはユーザープログラムを実行しているときに収集されたデバイスの値（デバイス値）が記憶される。ＰＬＣの分野においてデバイスとは情報を記憶する記憶領域を意味する。デバイスとしては、一ビットの情報を保持するリレーデバイスや一ワードの情報を保持するワードデバイス等がある。
【０００３】
このようなプログラマブルロジックコントローラで、例えば通信ネットワークを介してＰＬＣとビデオカメラを接続し、カメラ画像により生産設備を監視するシステムが知られている（例えば特許文献１）。このシステムでは、何らかの設備トラブルが発生した際に、トラブル発生前後のカメラ画像を解析し、トラブルの原因究明が行われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−１２５６１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＰＬＣのデバイス値が取得された時刻と、カメラ画像が取得された時刻との間に時間ずれがあると、トラブルの原因究明に手間が掛かる。そのため、これらの時刻の誤差は極力小さい方が望ましい。にもかかわらず、通信遅延の影響により、両方の時刻を同期させることは容易でないという問題があった。
【０００６】
本発明の目的の一は、デバイス記録と高精度に時刻を同期させるようにしたプログラマブルロジックコントローラ及びカメラ入力拡張ユニットを提供することにある。
【課題を解決するための手段及び発明の効果】
【０００７】
本発明の第１の態様に係るプログラマブルロジックコントローラによれば、ユーザープログラムを実行するＣＰＵユニットを備え、該ＣＰＵユニットが該ユーザープログラムを繰り返し実行することにより外部機器を監視又は制御するプログラマブルロジックコントローラであって、前記プログラマブルロジックコントローラは、前記ＣＰＵユニットとバスを介して電気的に接続されると共に、前記プログラマブルロジックコントローラからの撮像トリガに応じて所定領域を撮像し、撮像した該所定領域に対応する画像データを生成するカメラ部を接続するためのカメラ入力拡張ユニットを備え、前記カメラ入力拡張ユニットは、前記撮像トリガの条件を含む前記カメラ部の設定情報を記憶するカメラ設定情報記憶部と、前記カメラ設定情報記憶部に記憶された前記カメラ部の設定情報に基づいて、前記撮像トリガを規定するＯＮ／ＯＦＦ信号を生成し、該ＯＮ／ＯＦＦ信号を前記撮像トリガとして前記カメラ部で生成された画像データを処理するカメラ拡張ユニット処理部と、前記カメラ拡張ユニット処理部で取得された画像データを記録する画像記録部と、前記カメラ拡張ユニット処理部と前記カメラ部との間に設けられ、前記ＯＮ／ＯＦＦ信号を前記カメラ部に送るための撮像トリガライン、及び前記カメラ部で生成された画像データを前記カメラ拡張ユニット処理部に送るための画像通信ラインを有する撮像インターフェースとを備えることができる。
【０００８】
また、第２の態様に係るプログラマブルロジックコントローラによれば、上記構成に加えて、前記ＣＰＵユニットにより実行されるユーザープログラムは、前記ＣＰＵユニットに接続されるプログラム作成支援装置によって作成され、前記カメラ設定情報記憶部に記憶される前記カメラ部の設定情報は、前記プログラム作成支援装置により作成され、前記ＣＰＵユニットを介して受信された設定情報を含むことができる。
【０００９】
さらに、第３の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、さらに、前記ＣＰＵユニット及び前記カメラ入力拡張ユニットが取り付けられるベースプレートを備え、前記カメラ入力拡張ユニットを、前記ＣＰＵユニットと前記ベースプレート内のバスを介して電気的に接続することができる。
【００１０】
さらにまた、第４の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記画像記録部は、前記カメラ拡張ユニット処理部で取得された画像データを、該画像データが取得された時刻に関する情報と関連付けて時系列に記録すると共に、前記ＣＰＵユニットからの指示に応じて、前記画像データ及び前記時刻に関する情報を前記ＣＰＵユニットに送信するよう構成できる。上記構成により、カメラ部で撮像した画像データに関するデバイス記録と高精度に時刻を同期させることが可能となる。特に撮像を指示する撮像トリガを通信線やコマンド解釈を介することなく、専用線の撮像トリガラインでＯＮ／ＯＦＦ信号として送出することで、時間遅れを避けた高精度な時刻の同期が実現できる。
【００１１】
さらにまた、第５の態様に係るプログラマブルロジックコントローラによれば、上記構成に加えて、前記撮像トリガラインを、非通信ラインとできる。上記構成により、通信でなくＯＮ／ＯＦＦのＩ／Ｏで撮像トリガを指示できるため、通信による撮像コマンドの送信と比べて極めて高速な撮像トリガの指示が実現される。
【００１２】
さらにまた、第６の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記撮像インターフェースは、さらに、前記カメラ部に対して電力を供給するための電力供給インターフェースを備え、前記撮像インターフェースと前記カメラ部とを接続するカメラ接続ケーブルは、前記画像通信ラインと、前記撮像トリガラインと、前記電力供給ラインとを束ねることができる。上記構成により、カメラ入力拡張ユニットとカメラ部とを、撮像インターフェースを接続するのみで、電源供給を含めたカメラ部を動作させるすべての電気信号のやりとりを実現でき、配線をシンプルとして構成の簡素化が図られる。
【００１３】
さらにまた、第７の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記画像通信ラインによる通信速度を１３０Ｍｂｐｓ以上とすることができる。上記構成により、イーサネットなどの通信線よりも高速に画像データを伝送できる。
【００１４】
さらにまた、第８の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記カメラ拡張ユニット処理部は、前記撮像トリガラインを介して、前記カメラ部に送る前記ＯＮ／ＯＦＦ信号を生成する撮像トリガ発行部と、前記ＯＮ／ＯＦＦ信号を送出する時刻に関する情報を、前記カメラ部で取得された画像データと関連付けて前記画像記録部に記録する収集部とを備えることができる。上記構成により、カメラ拡張ユニット処理部を共通のＳｏＣ等で構成できる。
【００１５】
さらにまた、第９の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記ＣＰＵユニット及びカメラ入力拡張ユニットは、時刻管理部を備えており、前記ＣＰＵユニット及びカメラ入力拡張ユニットの各々に設けられた前記時刻管理部を用いて時刻同期を行うよう構成できる。
【００１６】
さらにまた、第１０の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記時刻管理部がカウンタであり、前記画像データが取得された時刻に関する情報を、カウンタ値とすることができる。
【００１７】
さらにまた、第１１の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記カメラ拡張ユニット処理部は、前記撮像トリガをラダープログラムに記述し、前記ラダープログラムによる撮像トリガ制御を行うよう構成できる。
【００１８】
さらにまた、第１２の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記撮像トリガを規定するＯＮ／ＯＦＦ信号を送出するタイミングを、タイマ、外部入力、異常検知の何れかとできる。
【００１９】
さらにまた、第１３の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記カメラ拡張ユニット処理部が、前記カメラ拡張ユニットが毎スキャンごとに実行するリフレッシュ通信のプロトコル解釈及び実行、又は他の拡張ユニットへの転送を行うよう構成できる。
【００２０】
さらにまた、第１４の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記カメラ入力拡張ユニットを複数備えることができる。上記構成により、同期したトリガを入力可能なカメラ入力拡張ユニットを複数台展開することが可能となり、拡張性を高めることができる。
【００２１】
さらにまた、第１５の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記複数のカメラ入力拡張ユニットにそれぞれ接続されたカメラでもって、共通の対象物を、異なる方向から同期させて撮像するよう構成できる。上記構成により、共通の対象物を異なる方向から同期させて撮像することで、より詳細な観察が可能となる。
【００２２】
さらにまた、第１６の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記複数のカメラ入力拡張ユニットにそれぞれ接続されたカメラでもって、共通の対象物を、異なる位相で撮像するよう構成できる。上記構成により、共通の対象物を位相をずらして撮像することで、実質的にＦＰＳを上げて細かく動作を捉えることが可能となる。
【００２３】
さらにまた、第１７の態様に係るカメラ入力拡張ユニットによれば、プログラマブルロジックコントローラを構成するＣＰＵユニットと、バスを介して電気的に接続されるカメラ入力拡張ユニットであって、前記プログラマブルロジックコントローラからの撮像トリガに応じて所定領域を撮像し、撮像した該所定領域に対応する画像データを生成するカメラ部の、前記撮像トリガの条件を含む設定情報を記憶するカメラ設定情報記憶部と、前記カメラ設定情報記憶部に記憶された前記カメラ部の設定情報に基づいて、前記撮像トリガを規定するＯＮ／ＯＦＦ信号を生成し、該ＯＮ／ＯＦＦ信号を前記撮像トリガとして前記カメラ部で生成された画像データを処理するカメラ拡張ユニット処理部と、前記カメラ拡張ユニット処理部で取得された画像データを記録する画像記録部と、前記カメラ拡張ユニット処理部と前記カメラ部との間に設けられ、前記ＯＮ／ＯＦＦ信号を前記カメラ部に送るための撮像トリガライン、及び前記カメラ部で生成された画像データを前記カメラ拡張ユニット処理部に送るための画像通信ラインを有する撮像インターフェースとを備えることができる。
【図面の簡単な説明】
【００２４】
【図１】プログラマブルロジックコントローラシステムの概念図である。
【図２】プログラマブルロジックコントローラシステムを示す図である。
【図３】ラダープログラムを説明する図である。
【図４】プログラム作成支援装置を説明する図である。
【図５】ＰＬＣを説明する図である。
【図６】ラダープログラムのスキャンを説明する図である。
【図７】拡張ユニットのＣＰＵの機能を説明する図である。
【図８】カメラ入力拡張ユニットを備えるプログラマブルロジックコントローラシステムの概念図である。
【図９】従来のカメラを接続したプログラマブルロジックコントローラシステムを示す模式図である。
【図１０】プログラマブルロジックコントローラシステムの機能ブロック図である。
【図１１】カメラ入力拡張ユニットが設定情報に従って撮像トリガを発生させる様子を示すシーケンス図である。
【図１２】カメラ入力拡張ユニットがプログラムに従って撮像トリガを発生させる様子を示すシーケンス図である。
【図１３】ＣＰＵユニットがエンド処理にて撮像トリガを発生させる様子を示すシーケンス図である。
【図１４】ＣＰＵユニットが割り込みを起点に撮像トリガを発生させる様子を示すシーケンス図である。
【図１５】撮像トリガの発行に関する処理を示すフロー図である。
【図１６】カメラ入力拡張ユニットの処理フローを示すフローチャートである。
【図１７】実施形態に係るカメラ入力拡張ユニットをＣＰＵユニットに接続する状態を示す模式図である。
【図１８】カメラ部を接続したカメラ入力拡張ユニットの外観を示す斜視図である。
【図１９】図１８のカメラ部の背面図である。
【図２０】バックプレーンにユニットを接続する状態を示す模式図である。
【図２１】各カメラ入力拡張ユニットにカメラ部を接続する様子を示す模式図である。
【図２２】カメラ部の映像関連の設定画面を示すイメージ図である。
【図２３】撮像トリガラインで接続されたカメラ入力拡張ユニットとカメラ部を示す模式図である。
【図２４】ログデータの一例を示す図である。
【図２５】ＣＰＵユニットにおけるロギング処理を示すフローチャートである。
【図２６】拡張ユニットにおけるロギング処理を示すフローチャートである。
【図２７】ＰＬＣの接続形態を示す図である。
【図２８】ＰＬＣの接続形態を示す図である。
【図２９】ロギングのタイミングを説明する図である。
【図３０】ログデータの表示を説明する図である。
【図３１】ＣＰＵユニットのＣＰＵの機能を説明する図である。
【発明を実施するための形態】
【００２５】
以下、本発明の実施形態を図面に基づいて説明する。ただし、以下に示す実施形態は、本発明の技術思想を具体化するための例示であって、本発明は以下のものに特定されない。また、本明細書は特許請求の範囲に示される部材を、実施形態の部材に特定するものでは決してない。特に実施形態に記載されている構成部品の寸法、材質、形状、その相対的配置等は特に特定的な記載がない限りは、本発明の範囲をそれのみに限定する趣旨ではなく、単なる説明例にすぎない。なお、各図面が示す部材の大きさや位置関係等は、説明を明確にするため誇張していることがある。さらに以下の説明において、同一の名称、符号については同一若しくは同質の部材を示しており、詳細説明を適宜省略する。さらに、本発明を構成する各要素は、複数の要素を同一の部材で構成して一の部材で複数の要素を兼用する態様としてもよいし、逆に一の部材の機能を複数の部材で分担して実現することもできる。
【００２６】
図１に、プログラマブルロジックコントローラシステムの概要図を示す。この図に示すプログラマブルロジックコントローラシステム１０００は、ラインを流れる対象物ＷＫをカメラ部９８で撮像して検査するシステムを例示している。このプログラマブルロジックコントローラシステム１０００は、ＰＣ２と接続されて、プロジェクトデータ編集プログラムを編集する。
【００２７】
プログラマブルロジックコントローラ１は、複数のユニットを接続して構成される。複数のユニット間は、ユニット間バス９０を介して通信可能に接続されている。ユニットは、ＣＰＵユニット３と拡張ユニット４に大別される。ＣＰＵユニット３はメインユニットや基本ユニットとも呼ばれ、プログラマブルロジックコントローラの基本動作を行う。また拡張ユニット４は、ＣＰＵユニット３の機能を拡張する機能拡張ユニットである。図１の例では、拡張ユニット４はカメラ入力拡張ユニット４ｃと、モーションユニット４ｄと、通信ユニット４ｅを含む。拡張ユニット４の一種であるカメラ入力拡張ユニット４ｃは、カメラ部９８と接続されて、対象物ＷＫを所定のタイミングで撮像して、ＣＰＵユニットに送出する。モーションユニット４ｄは、位置決めユニットとも呼ばれ、軸とよばれる制御対象の位置を制御する。一般に軸ごとにモータ等の駆動源が存在する。通信ユニット４ｅは、外部機器と通信を行う。またＣＰＵユニット３は、これら拡張ユニット４からのデータを収集して、必要な制御を行う。
＜システム構成＞
【００２８】
ここで、プログラマブルロジックコントローラ（以下「ＰＬＣ」とも呼ぶ。）を当業者にとってよりよく理解できるようにするために、一般的なＰＬＣの構成とその動作について説明する。
【００２９】
図２は、本発明の実施の形態によるプログラマブルロジックコントローラシステムの一構成例を示す概念図である。図２が示すように、このシステムは、ラダープログラム等のユーザープログラムの編集を行うためのＰＣ２と、工場等に設置される各種制御装置を統括的に制御するためのＰＬＣ１とを備えている。ＰＣはパーソナルコンピュータの略称である。ユーザープログラムは、ラダー言語やＳＦＣ（シーケンシャルファンクションチャート）等のフローチャート形式のモーションプログラム等のグラフィカルプログラミング言語を用いて作成されてもよいし、Ｃ言語等の高級プログラミング言語を用いて作成されてもよい。以下では、説明の便宜上、ユーザープログラムはラダープログラムとする。ＰＬＣ１は、ＣＰＵが内蔵されたＣＰＵユニット３と、１つないし複数の拡張ユニット４を備えている。ＣＰＵユニット３に対して１つないし複数の拡張ユニット４が着脱可能となっている。例えば、拡張ユニット４ａはモータ（フィールドデバイス１０ａ）を駆動してワークの位置決めする位置決めユニットであり、拡張ユニット４ｂはカウンタユニットであってもよい。カウンタユニットは手動パルサ等のエンコーダ（フィールドデバイス１０ｂ）からの信号をカウントする。なお、参照符号の末尾に付与されているａ、ｂ、ｃ・・・の文字は省略されることがある。なお、ＰＬＣ１とＰＣ２とを含むシステムはプログラマブルロジックコントローラシステムと呼ばれてもよい。
【００３０】
ＣＰＵユニット３には、ＰＬＣ側表示部５及びＰＬＣ側操作部６が備えられている。ＰＬＣ側表示部５は、ＣＰＵユニット３に取り付けられている各拡張ユニット４の動作状況等を表示することができる。ＰＬＣ側操作部６の操作内容に応じてＰＬＣ側表示部５は表示内容を切り替える。またＰＬＣ側操作部６は、ＣＰＵユニット３と一体に組み込まれたボタン等とする他、、外付けのコンソールやマウスやキーボード等の入力装置としてもよい。あるいは、ＰＬＣ側表示部５をタッチパネルとして操作部の機能を兼用させることもできる。
【００３１】
ＰＬＣ側表示部５は、通常、ＰＬＣ１内のデバイスの現在値（デバイス値）やＰＬＣ１内で生じたエラー情報等を表示する。デバイスとは、デバイス値（デバイスデータ）を格納するために設けられたメモリ上の領域を指す名称であり、デバイスメモリと呼ばれてもよい。デバイス値とは、入力機器からの入力状態、出力機器への出力状態及びユーザープログラム上で設定される内部リレー（補助リレー）、タイマ、カウンタ、データメモリ等の状態を示す情報である。デバイス値の型にはビット型とワード型がある。ビットデバイスは１ビットのデバイス値を記憶する。ワードデバイスは１ワードのデバイス値を記憶する。
【００３２】
拡張ユニット４は、ＰＬＣ１の機能を拡張するために用意されている。各拡張ユニット４には、その拡張ユニット４の機能に対応するフィールドデバイス（被制御装置）１０が接続され、これにより、各フィールドデバイス１０が拡張ユニット４を介してＣＰＵユニット３に接続される。フィールドデバイス１０は、センサやカメラ部等の入力機器であってもよいし、アクチュエータ等の出力機器であってもよい。また、一つの拡張ユニット４に対して複数のフィールドデバイスが接続されてもよい。
（プログラマブルロジックコントローラ用エンジニアリングツール）
【００３３】
ＰＣ２は、プログラマブルロジックコントローラ用エンジニアリングツール（以下「ＰＬＣ用エンジニアリングツール」ともいう。）を実現する。ＰＬＣ用エンジニアリングツールとは、ＰＬＣ１と接続して、その設定や、運用時の制御や動作確認等を行うための部材である。また、ＰＬＣ１やこれを含めたプログラマブルロジックコントローラシステムを動作させる各種プログラムの作成や、作成済みのプログラムの編集、修正を行うこともできる。この意味ではプログラム作成支援装置と呼ばれてもよい。さらにＰＬＣ用エンジニアリングツールは、過去のプログラマブルロジックコントローラシステムの動作を記録した運転記録データに基づいて、その当時の各デバイスの動作状況を再現することもできる。運転記録データは、ラダープログラム等のユーザープログラムや、各ユニットのユニット構成情報などの設定データを含むプロジェクトデータ、及び運転当時の各デバイスのデバイス値やカメラ部の画像データ等の運用データであるログデータを含んでいる。このＰＬＣ用エンジニアリングツールは運転記録データの内、プロジェクトデータを読み込んで編集することも可能である。この意味でＰＬＣ用エンジニアリングツールは、プロジェクトデータ編集プログラムと呼ばれてもよい。
【００３４】
ＰＣ２は、例えば携帯可能なノートタイプやタブレットタイプのパーソナルコンピュータであって、表示部７及びＰＣ側操作部８を備えている。ＰＬＣ１を制御するためのユーザープログラムの一例であるラダープログラムは、ＰＣ２を用いて作成される。その作成されたラダープログラムは、ＰＣ２内でニモニックコードに変換される。ＰＣ２は、ＵＳＢ（Universal Serial Bus）等の通信ケーブル９を介してＰＬＣ１のＣＰＵユニット３に接続され、ニモニックコードに変換されたラダープログラムをＣＰＵユニット３に送る。ＣＰＵユニット３はラダープログラムをマシンコードに変換し、ＣＰＵユニット３に備えられたメモリ内に記憶する。なお、ここではニモニックコードがＣＰＵユニット３に送信されているが、本発明はこれに限られない。例えば、ＰＣ２は、ニモニックコードを中間コードに変換し、中間コードをＣＰＵユニット３に送信してもよい。
【００３５】
なお、図２は示していないが、ＰＣ２のＰＣ側操作部８には、ＰＣ２に接続されたマウス等のポインティングデバイスが含まれていてもよい。またＰＣ２は、ＵＳＢ以外の他の通信ケーブル９を介して、ＰＬＣ１のＣＰＵユニット３に対して着脱可能に接続されるような構成であってもよい。また、通信ケーブル９を介さず、ＰＬＣ１のＣＰＵユニット３に対して無線によって接続されるような構成であってもよい。
＜ラダープログラム＞
【００３６】
図３は、ラダープログラムの作成時にＰＣ２の表示部７に表示されるラダー図Ｌｄの一例を示す図である。ＰＣ２は、マトリックス状に配置された複数のセルを表示部７に表示する。各セルには、仮想デバイスのシンボルが配置される。シンボルは、入力リレーや出力リレー等を示している。このような複数のシンボルによってリレー回路が形成される。ラダー図Ｌｄには、例えば１０列×Ｎ行（Ｎは任意の自然数）のセルが配置されている。そして各行のセル内には、仮想デバイスのシンボルが適宜配置される。
【００３７】
図３が示すリレー回路は、入力装置からの入力信号に基づいてＯＮ／ＯＦＦされる３つの仮想デバイス（以下、「入力デバイス」と呼ぶ。）のシンボルと、出力装置の動作を制御するためにＯＮ／ＯＦＦされる仮想デバイス（以下、「出力デバイス」と呼ぶ。）のシンボルと、が適宜結合されることにより構成されている。
【００３８】
各入力デバイスのシンボルの上方に表示されている文字（「Ｒ０００１」、「Ｒ０００２」及び「Ｒ０００３」）は、その入力デバイスのデバイス名（アドレス名）を表している。各入力デバイスのシンボルの下方に表示されている文字（「フラグ１」、「フラグ２」及び「フラグ３」）は、その入力デバイスに対応付けられたデバイスコメントを表している。出力デバイスのシンボルの上方に表示されている文字（「原点復帰」）は、その出力デバイスの機能を表す文字列からなるラベルである。
【００３９】
図３が示す例では、デバイス名「Ｒ０００１」及び「Ｒ０００２」にそれぞれ対応する２つの入力デバイスのシンボルが直列的に結合されることにより、ＡＮＤ回路が構成されている。また、これらの２つの入力デバイスのシンボルからなるＡＮＤ回路に対して、デバイス名「Ｒ０００３」に対応する入力デバイスのシンボルが並列的に結合されることにより、ＯＲ回路が構成されている。すなわち、このリレー回路では、一行目の２つのシンボルに対応する入力デバイスがいずれもＯＮした場合、又は二行目のシンボルに対応する入力デバイスがＯＮした場合にのみ、一行目のシンボルに対応する出力デバイスがＯＮになる。
＜プログラム作成支援装置＞
【００４０】
図４は、ＰＣ２の電気的構成について説明するためのブロック図である。図４が示すように、ＰＣ２は、ＰＣ側メモリ部１１、ＰＣ側ＣＰＵ２１、表示部７、ＰＣ側操作部８、ＰＣ側記憶装置２２及びＰＣ側通信部２３を備えている。表示部７、ＰＣ側操作部８、ＰＣ側記憶装置２２及びＰＣ側通信部２３は、それぞれＰＣ側ＣＰＵ２１に対して電気的に接続されている。
【００４１】
ＰＣ側メモリ部１１は、ＰＣ側ＣＰＵ２１が処理を実行するための作業空間となる作業メモリであり、典型的にはＲＡＭ等で構成される。運転記録データは、プロジェクトデータを含んでいる。
【００４２】
ＰＣ側記憶装置２２はハードディスクや半導体メモリ、ＲＯＭ等を含み、さらに着脱可能なメモリカードを含んでもよい。ＣＰＵは中央演算処理装置の略称である。ＲＯＭはリードオンリーメモリの略称である。ＲＡＭはランダムアクセスメモリの略称である。
【００４３】
ユーザは、ＰＣ側記憶装置２２に記憶されているコンピュータプログラムである編集ソフトウエアをＰＣ側ＣＰＵ２１に実行させて、ＰＣ側操作部８を通じてプロジェクトデータを編集する。この編集ソフトウエアは、プロジェクトデータ編集プログラムにあたる。
（プロジェクトデータ）
【００４４】
プロジェクトデータは、一つ以上のユーザープログラム（例えばラダープログラム）と、ＣＰＵユニット３や拡張ユニット４のユニット構成情報等を含む。またプロジェクトデータは、ユーザープログラムがどのようなプログラム部品から構成されているかを示すプログラム構成情報を含めてもよい。さらにユニット構成情報は、ＣＰＵユニット３に対する複数の拡張ユニット４の接続位置や、ＣＰＵユニット３に備えられた機能（例えば通信機能や位置決め機能）を示す情報、拡張ユニット４の機能（例えば撮影機能）等を示す情報である。
【００４５】
ここで、プロジェクトデータの編集には、プロジェクトデータの作成及び変更が含まれる。プロジェクトデータ編集プログラムを用いて作成されたプロジェクトデータは、ＰＣ側記憶装置２２に記憶される。またユーザは、必要に応じてＰＣ側記憶装置２２に記憶されているプロジェクトデータを読み出し、そのプロジェクトデータを、プロジェクトデータ編集プログラムを用いて変更することができる。ＰＣ側通信部２３は、通信ケーブル９を介してＰＣ２をＣＰＵユニット３に通信可能に接続するためのものである。ＰＣ側ＣＰＵ２１はＰＣ側通信部２３を介してプロジェクトデータをＣＰＵユニット３に転送する。
【００４６】
プロジェクトデータ編集プログラムは、編集モードとモニタモードと履歴再生モードを備える。編集モードはエディットモード等とも呼ばれ、プロジェクトデータを編集することができる。またモニタモードはユーザープログラムのデバッグ等を行うためのシミュレーション動作を行うことができる。さらに履歴再生モードはリプレイモードやタイムマシン再生等とも呼ばれ、再生表示を行うことができる。これらの編集モード、モニタモード、履歴再生モードの切り替えは、モード選択部で行われる。
＜ＰＬＣ１＞
【００４７】
図５はＰＬＣ１の電気的構成について説明するためのブロック図である。この図に示すように、ＣＰＵユニット３は、ＰＬＣ側ＣＰＵ３１、ＰＬＣ側表示部５、ＰＬＣ側操作部６、ＰＬＣ側記憶装置３２及びＰＬＣ側通信部３３を備えている。ＰＬＣ側表示部５、ＰＬＣ側操作部６、ＰＬＣ側記憶装置３２及びＰＬＣ側通信部３３は、それぞれＰＬＣ側ＣＰＵ３１に電気的に接続されている。
（ＰＬＣ側記憶装置３２）
【００４８】
ＰＬＣ側記憶装置３２は、プロジェクト記憶部３５、デバイス部３４、一時記録部９１ａ、保存メモリ３６を備えている。
【００４９】
プロジェクト記憶部３５は、ＰＣ２から入力されたプロジェクトデータを記憶する。またＰＬＣ側記憶装置３２はＣＰＵユニット３用の制御プログラムも記憶する。
【００５０】
デバイス部３４はビットデバイスやワードデバイス等を有し、各デバイスはデバイス値を記憶する。このデバイス部３４は、複数のデバイスの各デバイス値を記憶するデバイスメモリとして機能する。またユーザープログラムに従い参照される記憶領域として機能させてもよい。
【００５１】
一時記録部９１ａは、デバイス部３４に記憶されているデバイス値を時系列に記録する。この一時記録部９１ａは、リングバッファ等で構成できる。
【００５２】
保存メモリ３６は、一時記録部９１ａに時系列に記録されたデバイス値を保存する。保存メモリ３６は、不揮発性メモリとして、内部メモリ３７や着脱可能なメモリカード３６Ａ等で構成される。
【００５３】
このようにＰＬＣ側記憶装置３２は複数の記憶領域を有している。このＰＬＣ側記憶装置３２はＲＡＭやＲＯＭ、メモリカード等を含んでもよい。例えば図５の例では、保存メモリ３６は着脱可能なメモリカード３６Ａで構成されている。
（ＰＬＣ側ＣＰＵ３１）
【００５４】
ＰＬＣ側ＣＰＵ３１は、プログラム実行部５１４と、保存条件設定部４５と、記録制御部３９と、保存制御部５０Ｃを備えている。プログラム実行部５１４は、ユーザープログラムを繰り返し実行するラダー実行エンジン８０ａとして機能する。ユーザープログラムに従い、プログラム実行部５１４により参照される記憶領域であるデバイス部３４は、複数のデバイスの各デバイス値を記憶している。
【００５５】
保存条件設定部４５は、各種の条件を設定するための部材である。ここでは保存条件設定部４５は、一時記録部９１ａに記録するための記録トリガについての第１トリガ条件と、保存メモリ３６に保存するための保存トリガについての第２トリガ条件と、記録トリガが示す時点を基準時とし、この基準時までの期間及び該基準時からの期間の少なくとも一方を含む期間であって、一時記録部９１ａに一時的な記録を行う期間を示すバッファ記録期間を設定する。
【００５６】
保存条件設定部４５で、第１トリガ条件として、一時記録部９１ａへの記録を開始するための記録開始トリガについての条件を設定することができる。またバッファ記録期間として、この記録開始トリガが示す基準時からの期間を設定することができる。
【００５７】
記録制御部３９は、記録トリガについての第１トリガ条件が成立すると、この記録トリガが示す時点を基準時とするバッファ記録期間に対応した時系列のデバイス値をログデータとして一時記録部９１ａに記録する。また記録制御部３９は、保存トリガについての第２トリガ条件が成立する時点、又は次に記録トリガについての第１トリガ条件が成立する時点の、いずれか早い時点までの間、記録した該ログデータを一時記録部９１ａに保持させる。そして、次に記録トリガについての第１トリガ条件が成立すると、次に該記録トリガが示す時点を基準時とするバッファ記録期間に対応した時系列のデバイス値をログデータとして、一時記録部９１ａに記録する。
【００５８】
保存制御部５０Ｃは、保存トリガについての第２トリガ条件が成立すると、記録制御部３９により一時記録部９１ａに保持されたログデータを保存メモリ３６に保存する。ここで保存制御部５０Ｃは、保存トリガについての第２トリガ条件が成立すると、記録制御部３９により一時記録部９１ａに保持され、保存トリガからみて直前の記録トリガに対応するログデータを、保存メモリに保存することが好ましい。このように保存制御部５０Ｃは、バッファ記録期間を経過した後も、バッファ記録期間中に記録したログデータを保持しておき、保存トリガが起動すると、記録トリガに対応付けて保持されたログデータを保存する。ただ記録制御部３９が保存するログデータは、直近の記録トリガに対応するログデータに限らず、２個前の記録トリガや、３回前の記録トリガとしてもよい。
【００５９】
図５が示すように、ＣＰＵユニット３と拡張ユニット４とは拡張バスの一種であるユニット間バス９０を介して接続されている。なお、ユニット間バス９０に関する通信機能は、ＰＬＣ側通信部３３の一部として実装されてもよい。またＰＬＣ側通信部３３は、ネットワーク通信回路を有してもよい。ＰＬＣ側ＣＰＵ３１は、ＰＬＣ側通信部３３を介してログデータ等をＰＣ２やクラウド等に送信してもよい。
【００６０】
ここで、ユニット間バス９０について、補足説明する。このユニット間バス９０は、次に説明する入出力リフレッシュ等が行われるバスである。ユニット間バス９０における通信制御は、いわゆるバスマスタ３８によって実現される（なお、ＰＬＣ側通信部３３の一部としてバスマスタを設けてもよいし、ＰＬＣ側ＣＰＵ３１の一部としてバスマスタ３８を設けてもよい）。バスマスタ３８は、ユニット間バス９０での通信を制御するための制御回路であって、ＰＬＣ側ＣＰＵ３１からの通信要求を受けて、拡張ユニット４との間で、後述する入出力リフレッシュ等の通信を行う。
【００６１】
拡張ユニット４はＣＰＵ４１とメモリ４２を備えている。ＣＰＵ４１は、デバイスに格納されたＣＰＵユニット３からの指示（デバイス値）に従って、フィールドデバイス１０を制御する。またＣＰＵ４１は、フィールドデバイス１０の制御結果をバッファメモリとよばれるデバイスに格納する。デバイスに格納された制御結果は入出力リフレッシュによってＣＰＵユニット３に転送される。またデバイスに格納されている制御結果は、ＣＰＵユニット３からの読み出し命令に従って、入出力リフレッシュとは異なるタイミングであっても、ＣＰＵユニット３に転送される。メモリ４２はＲＡＭやＲＯＭ等を含む。とりわけ、ＲＡＭにはバッファメモリとして使用される記憶領域が確保されている。またメモリ４２は、フィールドデバイス１０によって取得されたデータ（例：静止画データや動画データ）を一時的に保持するバッファを有してもよい。
【００６２】
図６はＣＰＵユニット３のスキャンタイムを示す模式図である。図６が示すように１つのスキャンタイムＴは、入出力のリフレッシュを行うためのユニット間通信２０１、プログラム実行２０２、ＥＮＤ処理２０４により構成されている。ユニット間通信２０１で、ＣＰＵユニット３は、ラダープログラムを実行して得られた出力データをＣＰＵユニット３内のＰＬＣ側記憶装置３２から拡張ユニット４等の外部機器に送信する。さらにＣＰＵユニット３は、拡張ユニット４等の外部機器から受信した入力データをＣＰＵユニット３内のＰＬＣ側記憶装置３２に取り込む。つまり、ＣＰＵユニット３のデバイスに記憶されているデバイス値は出力リフレッシュによって拡張ユニット４のデバイスに反映される。同様に、拡張ユニット４のデバイスに記憶されているデバイス値は、入力リフレッシュによってＣＰＵユニット３のデバイスに反映される。このように入出力リフレッシュによって、ＣＰＵユニット３のデバイスと拡張ユニット４のデバイスが同期する。
【００６３】
なお、リフレッシュ以外のタイミングでデバイス値をユニット間で更新する仕組み（ユニット間同期）が採用されてもよい。ただ、ＣＰＵユニット３のデバイスは、ＣＰＵユニット３が随時書き換えており、同様に拡張ユニット４のデバイスは拡張ユニット４が随時書き換えている。つまり、ＣＰＵユニット３のデバイスは、ＣＰＵユニット３の内部の装置によって随時アクセス可能である。同様に、拡張ユニット４のデバイスは拡張ユニット４の内部の装置によって随時アクセス可能になっている。ＣＰＵユニット３と拡張ユニット４との間では、基本的にリフレッシュのタイミングにおいて相互にデバイス値を更新して同期する。プログラム実行２０２で、ＣＰＵユニット３は、更新された入力データを用いてプログラムを実行（演算）する。図６が示すように、プログラム実行２０２においては複数のプログラムモジュール又はラダープログラムがプロジェクトデータに従って順番に実行されてもよい。ＣＰＵユニット３はプログラムの実行によりデータを演算処理する。なお、ＥＮＤ処理とは、ＰＣ２やＣＰＵユニット３に接続された表示器（図示せず）等の外部機器とのデータ通信、システムのエラーチェック等の周辺サービスに関する処理全般を意味する。
【００６４】
このように、ＰＣ２はユーザの操作に応じたラダープログラムを作成し、作成したラダープログラムをＰＬＣ１に転送する。ＰＬＣ１は、入出力リフレッシュ、ラダープログラムの実行及びＥＮＤ処理を１サイクル（１スキャン）として、このサイクルを周期的、すなわちサイクリックに繰り返し実行する。これにより、各種の入力機器（センサ等）からのタイミング信号に基づいて、各種の出力機器（モータ等）を制御する。なお、スキャン周期とは別に、ＣＰＵユニット３や拡張ユニット４はそれぞれ内部制御周期を有している。ＣＰＵユニット３や拡張ユニット４は内部制御周期を基準としてフィールドデバイス１０等の機能を制御する。
＜ロギング＞
【００６５】
ユーザがユーザープログラムを改良したり、修正したりする際に、ＰＬＣ１がユーザープログラムを実行している際に取得されたデバイス値が役に立つことがある。そこで、ＰＬＣ１は予め指定されたデバイス値を取得し、ログデータを作成する。ここで、ＰＬＣ１が管理するデバイスには、ユーザープログラムによって利用されるものだけでなく、ユーザープログラムによって利用されないものも存在する。また、ユーザープログラムを改良したり、修正したりする際に役立つデバイスもあれば、役に立たないデバイスもある。一般にデバイスの数は数千個に及ぶため、ユーザが必要なデバイスを指定することは大きな負担となっていた。そこで、ＰＣ２は、ユーザープログラムを解析し、ユーザープログラムに使用又は記述されているデバイスをロギング対象として抽出する。これにより、ユーザの負担が軽減される。
【００６６】
ＰＬＣ１が管理するすべてのデバイスをロギングの対象とすると、スキャンタイムが長くなってしまう。なぜなら、ロギングは、ユーザープログラムの一つとして実行されたり、入出力リフレッシュの際に実行されたりするからである。時には、ロギングのもたらす遅延によって、ユーザープログラムがユーザの希望通りに動作しないこともありうる。したがって、ロギング対象のデバイスの数は適切に維持されるべきであろう。
【００６７】
ユーザープログラムは、複数のプログラム部品（例えばプログラムモジュール（メインのラダープログラムとサブのラダープログラム）、ファンクションブロック）から構成されることがある。この内、ユーザが修正を希望するプログラム部品に関連したデバイスがロギングされれば、ユーザにとって十分な場合がある。また、複数のプログラム部品の内で、ユーザは特定のプログラム部品を抽出対象から除外したり、特定のプログラム部品を抽出対象に追加したりすることを希望することもあろう。よって、プログラム部品を単位として、ロギング対象からデバイスを追加又は削除できればユーザにとって便利であろう。
【００６８】
ここで、ＣＰＵユニット３のＰＬＣ側ＣＰＵ３１の詳細な機能ブロック図を図３１に示す。上述した部材と同じ部材には同一の参照符号を付し、詳細説明を省略する。ＰＬＣ側ＣＰＵ３１は、ＰＣ２から受信したプロジェクトデータ７１とログ設定データ７２を、ＰＬＣ側記憶装置３２に記憶しているものとする。ＰＬＣ側記憶装置３２のデバイス部３４は、ＣＰＵユニットデバイス部３４ａと拡張ユニットデバイス部３４ｂを備える。
【００６９】
図３１に示すＰＬＣ側ＣＰＵ３１は、実行部８０と、検知部８２と、記録部８１と、時刻管理部８３ａと、出力部８４を備える。検知部８２は、例えばデバイス部３４に含まれているいずれかのデバイスに対する外部機器からのデバイス値の書き換えを検知する。出力部８４は、ユーザープログラムの実行が終了したとき、或いはメモリカードへの保存トリガリレーがＯＮした場合等、所定の出力条件が満たされると、プロジェクトデータ７１、ログデータ７３、画像データをメモリカード３６Ａや内部メモリ３７に書き込む。所定の出力条件が満たされるまでは、ログデータ７３がメモリ（例えばリングバッファ）に記録されていき、容量が一杯になると、一番古いログデータ７３が消去され、新しいログデータ７３が追加記録されていく（いわゆるＦＩＦＯ形式で記録する）。このメモリカード３６ＡはＣＰＵユニット３から取り外されて、ＰＣ２の装着部に装着される。これにより、ＰＣ２の表示部７にログデータ７３が表示されるようになる。なお、出力部８４は、ＰＬＣ側通信部３３を介してＰＣ２やクラウド等にログデータ７３を送信してもよい。
【００７０】
またＰＬＣ側ＣＰＵ３１の実行部８０は、ユーザープログラムを繰り返し実行するラダー実行エンジン８０ａと、このラダー実行エンジン８０ａを制御したり、拡張ユニット４との入出力リフレッシュを実行したりするユニット制御部８０ｂとを有している。実行部８０のラダー実行エンジン８０ａは、プロジェクトデータ７１に含まれるユーザープログラムを繰り返し実行し、ユーザープログラムに従って拡張ユニット４を制御する。なお、実行部８０のラダー実行エンジン８０ａは、ユーザープログラムに従って、デバイス部３４のＣＰＵユニットデバイス部３４ａに保持されている出力系のデバイスにデバイス値を書き込んだり、ＣＰＵユニットデバイス部３４ａに保持されている入力系のデバイスからデバイス値を読み込んだりする。
【００７１】
さらにＰＬＣ側ＣＰＵ３１は、記録部８１が収集部９２ａを有している。収集部９２ａは、所定の収集開始条件が満たされると、デバイス部３４に保持されているデバイス値の内、ログ設定データ７２により指定されたデバイス値をデバイス部から読み出すと共に、時刻管理部８３ａから時刻情報を取得する。収集部９２ａはデバイス値と時刻情報とを関連付けて一時記録部９１ａに格納する。なお収集部９２ａは、ログ設定データ７２により指定された収集周期（例：スキャン周期）毎にデバイス値と時刻情報とを取得して一時記録部９１ａに格納する。一時記録部９１ａには、リングバッファが好適に採用される。リングバッファが採用されている理由は、リングバッファに記憶されているすべてのデータがログデータ７３としてメモリカード３６Ａに保存されるわけではないからである。例えば保存部９３は、所定の保存条件が満たされたときに、リングバッファの一時記録部９１ａからデバイス値と時刻情報とを読み出し、ログデータ７３を作成してメモリカード３６Ａに保存してもよい。同様に保存部９３は、所定の保存条件が満たされたときに、拡張ユニット４から大容量データと時刻情報とを読み出し、ログデータ７３を作成してメモリカード３６Ａに保存してもよい。保存部９３は、上述したデバイス値及び時刻情報と、上述した大容量データ及び時刻情報とを、対応付けて保存する。ここで、「対応付けて」保存とは、ＰＣ２にて再生しやすい形で保存されていればよく、例えば複数のファイルを対応付けたファイル管理がなされていてもよい。具体的に説明すると、メモリカード３６Ａにおいて、特定のフォルダの下に、デバイス値及び時刻情報が格納された第１サブフォルダと、大容量データ及び時刻情報が格納された第２サブフォルダとが置かれている場合には、特定のフォルダまでのパス（ディレクトリパス）が共通フラグとなり、この共通フラグを使って、第１サブフォルダ内のファイルと第２サブフォルダ内のファイルを「対応付けて」保存することが可能になる。また、上述した特定のフォルダと同じレベル（ディレクトリ）に置かれた別フォルダがある場合、その別フォルダは、他のタイミングで保存されたデータパッケージを意味する。もちろん、この別フォルダの下にも上述同様のサブフォルダが置かれている。このように、保存部９３は、上述したデバイス値及び時刻情報と、上述したデータ（大容量データ）及び時刻情報とを、共通フラグ（所定のディレクトリパス）により識別される複数のファイルに格納し、それら複数のファイルを保存してもよい。その他、例えば、共通フラグとしてファイル名を採用し、同一又は対応するファイル名をもつファイルを生成することで、「対応付けて」保存することも可能である。他にも例えば、時刻情報をキーとして、デバイス値とデータ（大容量データ）を対応付けてリスト化し、これを１つのファイルに纏めることによっても、「対応付けて」保存することが可能である。なお本実施形態では、監視機器からのデータの一例として大容量データを考えたが、他にも例えば、モーションデータや通信データ、音声データ等の連続データであってもよいことは言うまでもない。送信部９４は、ＰＣ２やクラウド等にログデータ７３を送信してもよい。リングバッファの一時記録部９１ａが満杯になると、収集部９２ａは、リングバッファに保持されている最も古い情報に対して、最も新しい情報を上書きする。ここでは一時記録部９１ａに、バッファの一例としてリングバッファが採用されているが、これは一例にすぎない。バッファとしては、ＦＩＦＯ形式のバッファが採用されれば十分であろう。
【００７２】
上述したようにＣＰＵユニット３や拡張ユニット４は一つ以上の機能を有している。各機能には様々なデバイスが割り付けられている。よって、これらの機能を単位として、ロギング対象からデバイスを追加又は削除できれば、ユーザにとって便利であろう。例えば、ＣＰＵユニット３の通信機能に関する望ましくないイベントが発生した場合、ユーザはＣＰＵユニット３の通信機能に関するデバイスのデバイス値を参照することで、このイベントを解消することが容易になろう。
（カメラ入力拡張ユニット４ｃ）
【００７３】
図７はカメラ入力機能を有した拡張ユニット４であるカメラ入力拡張ユニット４ｃのＣＰＵ４１の機能を説明する図である。時刻管理部８３ｂの時計は、図３１に示したＣＰＵユニット３の時刻管理部８３ａの時計と同期している。例えば、ＣＰＵユニット３の時刻管理部８３ａは、ＥＮＤ処理の際に時刻情報を時刻管理部８３ｂに送信する。時刻管理部８３ｂは、受信した時刻情報に基づき、時刻管理部８３ｂの時計をＣＰＵユニット３の時刻管理部８３ａの時計に同期させる。時計は、時刻情報に基づき時間をカウントするカウンタにより実現されてもよい。収集部９２ｂは、所定の収集条件（例：所定のリレーデバイスがＯＮになったこと）が満たされると、例えば周期的にトリガー信号を出力する。時刻管理部８３ｂはトリガー信号が入力されたときの時刻情報を時計から取得し、時刻情報バッファ９５に格納する。メモリ４２は時刻情報バッファ９５と一時記録部９１ａを有している。接続ポート９７はカメラ部９８を拡張ユニット４に接続するためのインタフェースである。接続ポート９７は、収集部９２ｂにより発行されたトリガー信号をカメラ部９８に周期的に出力したり、カメラ部９８が出力する画像データを画像受信部９６ａに出力したりする。画像データは大容量データの一例である。接続ポート９７は、カメラ部９８等の監視機器と接続され、その監視機器からデータ（画像データ）が入力される第二の外部インタフェースの一例である。画像受信部９６ａは、接続ポート９７を介してカメラ部９８からの画像データの入力を伴う撮像機能を実行する機能実行部９６の全部又は一部となる。本実施形態では、機能実行部９６（画像受信部９６ａ）は、露光時間、ゲイン、ホワイトバランス、コントラスト等の撮像パラメータ（設定情報の一例）に基づいて、カメラ部９８の制御を実行する。このような撮像パラメータは、ＰＣ２において、所望のパラメータ値が設定され、図５に示すＣＰＵユニット３のＰＬＣ側通信部３３及びＰＬＣ側ＣＰＵ３１を介して、機能実行部９６に送られる。そのため、図５に示すＰＬＣ側通信部３３は、ＰＣ２や表示器等の外部設定機器から設定情報を受け付ける第一の外部インタフェースの一例である。なお、第一の外部インタフェースとしてのＰＬＣ側通信部３３は、上述したようにＰＣ２にて作成されたユーザープログラムも受け付ける。カメラ部９８は、トリガー信号に従って撮像を実行し、画像データを出力する。画像受信部９６ａは、画像データを収集部９２ｂに転送する。収集部９２ｂは、時刻情報バッファ９５に保持されている時刻情報と、画像受信部９６ａから出力された画像データとを関連付けてリングバッファ９１ｂに格納する。リングバッファ９１ｂが満杯になると、収集部９２ｂは、リングバッファ９１ｂに保持されている最も古い情報に対して、最も新しい情報を上書きする。なお、本実施形態では、収集部９２ｂが自動的かつ周期的に撮像トリガー信号をカメラ部９８に出力することとしたが、本発明はこれに限られず、収集部９２ｂは、例えばユーザープログラムからの指令に基づいて撮像トリガー信号をカメラ部９８に出力してもよい。
【００７４】
ところで、ＣＰＵユニット３は毎スキャンごとに実行するリフレッシュ通信と、いつでも実行可能なダイレクト通信と、イベント的にベストエフォートで実行されるメッセージ通信とのいずれかを用いて拡張ユニット４と通信する。保存部は、例えば、ダイレクト通信を使用して拡張ユニット４のリングバッファ９１ｂから画像データと時刻情報とを読み出して、ログデータ７３に追記する。なお、ダイレクト通信として、優先度つきの複数のダイレクト通信が実装されてもよい。この場合、ユーザープログラムに関連して実行されるダイレクト通信の優先度は相対的に高く設定され、ロギングのためのダイレクト通信の優先度は相対的に低く設定されてもよい。これにより、ロギングがユーザープログラムの実行に与える影響を小さくすることが可能となる。
【００７５】
カメラ入力拡張ユニット４ｃを含むプログラマブルロジックコントローラシステムの機能ブロック図を、図８に示す。この図に示すプログラマブルロジックコントローラシステムは、ＣＰＵユニットとカメラ入力拡張ユニット４ｃと拡張ユニット４でＰＬＣ１を構成している。ＣＰＵユニットとカメラ入力拡張ユニット４ｃと拡張ユニット４とは、ユニット間バス９０を介して接続されている。またＣＰＵユニットには、通信線ＣＬを介してＰＣ２を接続している。さらにカメラ入力拡張ユニット４ｃには、図１０の撮像トリガライン５０１を介してカメラ部９８が接続されている。カメラ部９８は、カメラ設定記録部５７５を備える。一方ＣＰＵユニットは、デバイス部を備える。カメラ設定記録部５７５には、カメラ部９８の設定情報が記録される。
【００７６】
従来より、図９に示すように通信ネットワークＮＴを介してＰＬＣ１にビデオカメラＶＣを間接的に接続し、カメラ画像により生産設備を監視するシステムが知られていた。このような設備では、設備トラブルが発生した際、トラブル発生前後のカメラ画像を解析しトラブルの原因究明が行われる。しかしながら、ＰＬＣ１のデバイス値が取得された時刻と、カメラ画像が取得された時刻との間に時間ズレがあると、トラブルの原因究明に手間がかかる。そのため、これらの時刻の誤差は極力小さい方が望ましい。しかしながら、この技術では通信遅延の影響により、両方の時刻を同期させることは容易ではなかった。
【００７７】
これに対して、図８のカメラ入力拡張ユニット４ｃは、基本ユニットであるＣＰＵユニット３とユニット間バス９０で接続されている。カメラ入力拡張ユニット４ｃにカメラ部９８を接続する撮像インターフェース５００には、図１０の撮像トリガライン５０１と画像通信ライン５０２が接続されている。カメラ部９８に対して撮像トリガを規定するＯＮ／ＯＦＦ信号を、撮像トリガライン５０１を介して送信することで、ユニット間バス９０における同期タイミングをカメラ部９８にまで拡張し、ひいてはデバイス値の記録時刻とカメラ画像データの取得時刻とを、精度よく同期させることができる。
（カメラ入力拡張ユニット４ｃ）
【００７８】
カメラ入力拡張ユニット４ｃは、ＣＰＵユニットとユニット間バス９０を介して電気的に接続される。このカメラ入力拡張ユニット４ｃは、プログラマブルロジックコントローラからの撮像トリガに応じて所定領域を撮像し、撮像した該所定領域に対応する画像データを生成するカメラ部９８を接続するためのユニットである。図８に示すカメラ入力拡張ユニット４ｃは、撮像インターフェース５００と、カメラ設定情報記憶部５３０と、カメラ拡張ユニット処理部５１０と、画像記録部５２０とを備える。
【００７９】
カメラ設定情報記憶部５３０は、撮像トリガの条件を含むカメラ部９８の設定情報を記憶する。カメラ設定情報記憶部５３０に記憶されるカメラ部９８の設定情報は、プログラム作成支援装置により作成され、ＣＰＵユニット３を介して受信された設定情報を含む。なおＣＰＵユニット３により実行されるユーザープログラムは、ＣＰＵユニット３に接続されるプログラム作成支援装置によって作成される。
【００８０】
カメラ拡張ユニット処理部５１０は、カメラ設定情報記憶部５３０に記憶されたカメラ部９８の設定情報に基づいて、撮像トリガを規定するＯＮ／ＯＦＦ信号を生成し、このＯＮ／ＯＦＦ信号を撮像トリガとしてカメラ部９８で生成された画像データを処理する。
【００８１】
画像記録部５２０は、カメラ拡張ユニット処理部５１０で取得された画像データを記録する。また画像記録部５２０は、カメラ拡張ユニット処理部５１０で取得された画像データを、この画像データが取得された時刻に関する情報と関連付けて時系列に記録する。さらに画像記録部５２０は、ＣＰＵユニット３からの指示に応じて、画像データ及び時刻に関する情報をＣＰＵユニット３に送信する。
【００８２】
撮像インターフェース５００は、カメラ拡張ユニット処理部５１０とカメラ部９８との間に設けられる。この撮像インターフェース５００は、撮像トリガライン５０１と、画像通信ライン５０２を含む。
【００８３】
撮像トリガライン５０１は、カメラ拡張ユニット処理部５１０で生成され、カメラ部９８に撮像を実行させる撮像トリガを規定するＯＮ／ＯＦＦ信号をカメラ部９８に送るためのインターフェースである。この撮像トリガライン５０１は、非通信ラインであることが好ましい。これにより、通信でなくＯＮ／ＯＦＦのＩ／Ｏで撮像トリガを指示できるため、通信による撮像コマンドの送信と比べて極めて高速な撮像トリガの指示が実現される。
【００８４】
撮像インターフェース５００とカメラ部９８とを接続するカメラ接続ケーブル５５０は、画像通信ライン５０２と、撮像トリガライン５０１とを束ねている。これにより、カメラ入力拡張ユニット４ｃとカメラ部９８とを、撮像インターフェース５００を接続するのみで、カメラ部９８を動作させるすべての電気信号のやりとりを実現でき、配線をシンプルとして構成の簡素化が図られる。
【００８５】
カメラ設定情報記憶部５３０は、ＣＰＵユニット３からユニット間バス９０を介して受信した、カメラ部９８の設定情報を記憶している。カメラ部の設定情報は、例えば撮像時のフレームレート、画質、回転、露出、ゲイン、露光時間、ホワイトバランス、コントラスト、ガンマ、シャープネス、アンチフリッカーなど、後述する図２２のＧＵＩに示す各種情報が挙げられる。カメラ拡張ユニット処理部５１０は、ユニット間バス９０を介してＣＰＵユニット３や拡張ユニット４と接続されている。このカメラ拡張ユニット処理部５１０は、カメラ設定情報記憶部５３０に記憶されたカメラ部９８の設定情報に基づいて、撮像インターフェース５００を介してカメラ部９８から画像データを取得する。画像記録部５２０は、カメラ部９８で取得された画像データを収集し、この画像データが取得された時刻に関する情報とこの画像データとを関連付けて記録する。この構成により、カメラ部９８で撮像した画像データに関するデバイス記録と高精度に時刻を同期させることが可能となる。特に撮像を指示する撮像トリガを通信線やコマンド解釈を介することなく、専用線の撮像トリガライン５０１でＯＮ／ＯＦＦ信号として送出することで、時間遅れを避けた高精度な時刻の同期が実現できる。
（カメラ入力拡張ユニット４ｃの詳細ブロック図）
【００８６】
カメラ部９８を接続したカメラ入力拡張ユニット４ｃを備えるプログラマブルロジックコントローラシステムのより詳細なブロック図を、図１０に示す。この図に示すプログラマブルロジックコントローラシステムは、ＣＰＵユニット３と、カメラ入力拡張ユニット４ｃと、拡張ユニットで構成されるＰＬＣ１と、このＰＬＣ１に接続されるＰＣ２と、表示器ＨＭＩと、外部電源部ＰＳとを備えている。さらにカメラ入力拡張ユニット４ｃには、カメラ部９８が接続されている。
【００８７】
拡張ユニット４は、バスコネクタ５６０と、ＰＬＣ側ＣＰＵ３１を備えている。バスコネクタ５６０はユニット間バス９０を含んでおり、ユニット間バス９０を通じてＣＰＵユニット３とバス間通信を行い、ＰＬＣ側ＣＰＵ３１で拡張ユニット４の機能に応じた処理を行う。
【００８８】
ＰＣ２は、ＣＰＵユニット３に接続されて、各種の設定を行う設定装置として機能する。
【００８９】
表示器ＨＭＩ（Human Machine Interface）は、ＰＬＣ１を介してカメラ部９８で撮像した画像データや、収集したデバイス値、あるいは設定情報等を表示可能としている。表示器ＨＭＩには、プログラマブル表示器が好適に利用できる。
（カメラ部９８）
【００９０】
カメラ部９８は、カメラ側撮像インターフェース５００Ｂと、電力受給部５７３と、画像送信部５７２と、撮像トリガ入力部５７１と、カメラ処理部５７０と、撮像部５７４を備えている。カメラ部９８のカメラ側撮像インターフェース５００Ｂは、カメラ接続ケーブル５５０を介してカメラ入力拡張ユニット４ｃの撮像インターフェース５００と接続されて、カメラ部９８とカメラ入力拡張ユニット４ｃとの間の電気信号や画像データ、電力供給等のやりとりを行う。電力受給部５７３は、電力供給部５２４から電力供給ライン５０３を介して供給される電力を受け、カメラ部９８を駆動する電力を各部に供給するカメラ部９８の電源として機能する。撮像トリガ入力部５７１は、撮像トリガ発行部５１７から撮像トリガライン５０１を介して撮像トリガを受け、カメラ処理部５７０に送出する。カメラ処理部５７０は、撮像トリガに従い、撮像部５７４で画像の撮像を行う。撮像部５７４は、ＣＭＯＳセンサやＣＣＤセンサ等の撮像素子で構成される。撮像部５７４で撮像された画像データは、カメラ処理部５７０で受信し、画像送信部５７２に送出する。画像送信部５７２は、画像通信ライン５０２を通じて、カメラ入力拡張ユニット４ｃの画像受信部に対して画像データを送信する。
【００９１】
外部電源部ＰＳは、ＰＬＣ１に対して電力を供給する。またカメラ部９８へ供給する電力は、ＣＰＵユニット３から電力供給ライン５０３を通じて供給される。図１０の例では、カメラ入力拡張ユニット４ｃが有する電力供給部５２４から、カメラ部９８に電力を供給している。
（カメラ入力拡張ユニット４ｃ）
【００９２】
カメラ入力拡張ユニット４ｃは、カメラ拡張ユニット処理部５１０と、カメラ設定情報記憶部５３０と、撮像インターフェース５００と、電力供給部５２４と、画像記録部５２０と、時刻情報一次バッファ５２２と、バスコネクタ５６０を備えている。
【００９３】
カメラ拡張ユニット処理部５１０は、バス送受信部５１１と、プロトコル解釈部５１２と、プロトコル実行部５１３と、プログラム実行部５１４と、画像処理部５１５と、画像受信部９６ａと、撮像トリガ発行部５１７と、収集部９２ｂと、時刻管理部８３ｂとを備えている。このカメラ拡張ユニット処理部５１０は、ＦＰＧＡやＳｏＣ等で構成できる。
【００９４】
バス送受信部５１１は、ＣＰＵユニット３や拡張ユニット４とプロトコルに従ってバス通信を行いコマンドを送受信する。プロトコル解釈部５１２は、バス送受信部５１１で受信されたコマンドを解釈する。プロトコル実行部５１３は、プロトコル解釈部５１２で解釈されたコマンドを実行する。例えば、ＣＰＵユニット３からカメラ入力拡張ユニット４ｃに対し、カメラ部９８での撮像を開始するコマンドがユニット間バス９０で送信されると、バス送受信部５１１でコマンドを受信し、プロトコル解釈部５１２でコマンドを解釈して、プロトコル実行部５１３が撮像トリガ発行部５１７に対して、カメラ撮像トリガを発行するよう指示する。例えば撮像トリガをラダープログラムに記述し、ラダープログラムによる撮像トリガ制御をカメラ部９８のカメラ処理部５７０に対して行うことができる（詳細は後述）。
【００９５】
撮像トリガ発行部５１７は、撮像トリガライン５０１を介して、カメラ部９８に送るＯＮ／ＯＦＦ信号を生成する。
【００９６】
収集部９２ｂは、ＯＮ／ＯＦＦ信号を送出する時刻に関する情報を、カメラ部９８で取得された画像データと関連付けて画像記録部５２０に記録する。
【００９７】
カメラ入力拡張ユニット４ｃには、撮像トリガライン５０１を介してカメラ部９８が接続されている。カメラ部９８は、カメラ設定記録部５７５を備える。カメラ設定記録部５７５には、カメラ部９８の設定情報が記録される。
【００９８】
図１０のカメラ入力拡張ユニット４ｃとカメラ部９８とを接続する撮像インターフェース５００、カメラ側撮像インターフェース５００Ｂは、画像通信ライン５０２と、撮像トリガライン５０１に加えて、電力供給インターフェースを含む。電力供給インターフェースは、カメラ部９８に対して電力を供給するためのインターフェースである。また撮像インターフェース５００、５００Ｂを介してカメラ入力拡張ユニット４ｃとカメラ部９８とを接続するカメラ接続ケーブル５５０は、画像通信ライン５０２と撮像トリガライン５０１に加えて、電力供給インターフェースに接続される電力供給ライン５０３を束ねている。これにより、カメラ入力拡張ユニット４ｃとカメラ部９８とを、撮像インターフェース５００を接続するのみで、電源供給を含めたカメラ部９８を動作させるすべての電気信号のやりとりを実現でき、配線をシンプルとして構成の簡素化が図られる。またカメラ接続ケーブル５５０は、グランドラインも含んでいる。グランドラインは、例えばカメラ入力拡張ユニット４ｃの筐体のシールドとコンデンサを介して接続される。
（ＣＰＵユニット３）
【００９９】
図１０に示すＣＰＵユニット３は、バスコネクタ５６０と、時刻管理部８３を含むＰＬＣ側ＣＰＵ３１と、デバイス部３４と、実行部８０を備えている。実行部８０は、時刻管理部８３の持つ時刻情報と共にデバイス値をデバイス部３４に記録する。このように、時刻管理部８３を用いて時刻同期を行うことができる。この時刻管理部８３は、カウンタが利用できる。
【０１００】
またＣＰＵユニット３の時刻情報は、カメラ入力拡張ユニット４ｃやその他の拡張ユニットに伝えられ、各拡張ユニットの時刻補正にも使用される。
【０１０１】
なおプログラム実行部５１４は、ユーザープログラムを繰り返し実行するラダー実行エンジン８０ａである。またデバイス部３４は、ユーザープログラムに従い、プログラム実行部により参照される記憶領域である複数のデバイスの各デバイス値を記憶するデバイス部やデバイスメモリとして機能する。
（撮像トリガ発行部５１７）
【０１０２】
撮像トリガ発行部５１７は、定期的（カメラ設定情報記憶部５３０に記録されたタイマに従う）又はプログラム実行部５１４によって決定されるタイミング（カメラ設定情報記憶部５３０に記録されたプログラムに従う）又はＣＰＵユニット３からの指令によって撮像トリガを発生する。その際、時刻管理部８３ｂからその時の時刻に関する情報を時刻情報一次バッファ５２２に記録する。カメラ部９８は、撮像トリガを受信することで画像データを撮影し、カメラ入力拡張ユニット４ｃに送信する。カメラ入力拡張ユニット４ｃの画像受信部９６ａが画像データを受信すると、画像記録部５２０に時刻情報一次バッファ５２２の時刻情報と共に記録する。
【０１０３】
また撮像トリガをラダープログラムに記述し、ラダープログラムによって撮像トリガを制御することもできる。例えば撮像トリガ発行部５１７は、ＥＮＤ処理にて発行するリフレッシュ通信、もしくは割り込みにてＥＮＤ処理まで待たずに発行するダイレクト通信等に基づいて撮像トリガを発行する。さらに撮像トリガを構成するＯＮ／ＯＦＦ信号は、タイマや外部入力、異常検知に基づいて、ＯＮ／ＯＦＦタイミングを決定してもよい。
（カメラ設定情報記憶部５３０）
【０１０４】
ＰＣ２は、ＣＰＵユニット３に接続されて、各種の設定を行う設定装置として機能する。例えば、カメラ入力拡張ユニット４ｃの機能設定をＰＣ２から行う。その情報は、カメラ入力拡張ユニット４ｃのカメラ設定情報記憶部５３０に記憶される。カメラ設定情報記憶部５３０は、例えば定期的にカメラ部９８で画像を撮像する場合の撮像周期やタイマ値、カメラ入力拡張ユニット４ｃで実行されるプログラム等を記憶している。カメラ入力拡張ユニット４ｃは、カメラ設定情報記憶部５３０に記憶されたカメラ部９８の設定情報に従って動作する。
（電力供給部５２４）
【０１０５】
電力供給部５２４は、電力供給ライン５０３を介してカメラ部９８に電力を供給する。この電力は、ＣＰＵユニット３と接続された外部電源部ＰＳから供給する。
（時刻情報一次バッファ５２２）
【０１０６】
時刻情報一次バッファ５２２は、カメラ入力拡張ユニット４ｃの時刻管理部８３ｂからその時の時刻に関する情報を一時的に記録する。画像記録部５２０は、カメラ部９８で撮像され、カメラ入力拡張ユニット４ｃの画像受信部９６ａで受信された画像データを、時刻情報一次バッファ５２２の時刻情報と共に一時的に記録する。これら時刻情報一次バッファ５２２や画像記録部５２０は、個別に設ける他、共通のバッファメモリで構成することもできる。この場合はバッファメモリのアドレス空間を分離することによって、時刻情報一次バッファや画像記録部とを区分けする。
（カメラ設定情報記憶部５３０）
【０１０７】
カメラ設定情報記憶部５３０は、ＣＰＵユニット３からユニット間バス９０を介して受信した設定情報を記憶する。
（カメラ拡張ユニット処理部５１０）
【０１０８】
カメラ拡張ユニット処理部５１０は、カメラ設定情報記憶部５３０に記憶された設定情報に基づいて、撮像インターフェース５００を介してカメラ部９８から画像を取得する。カメラ入力拡張ユニット４ｃで収集した画像データは、ＰＬＣ１を介して表示器ＨＭＩでモニタすることも可能である。またカメラ拡張ユニット処理部５１０は、画像処理機能を有する。さらにカメラ拡張ユニット処理部５１０は、リフレッシュデータのプロトコル解釈機能及び他拡張ユニットへの転送機能を有する。
（画像記録部５２０）
【０１０９】
画像記録部５２０は、カメラ部９８から取得された画像データを、この画像データが取得された時刻に関する情報と関連付けて、一時的に記録するための部材である。ここで時刻に関する情報には、実際の時刻、通信遅延等を補正した時刻、カウンタ値等が利用できる。例えば、ＣＰＵユニット３及びカメラ入力拡張ユニット４ｃの各々に設けられたカウンタを用いて、時刻を同期する。
【０１１０】
図１０のプログラマブルロジックコントローラシステムは、カメラ入力拡張ユニット４Ｃを一台接続している。ただ本発明は、カメラ入力拡張ユニットの数を一のみに限定せず、複数台のカメラ入力拡張ユニットを増設することもできる。この場合、各カメラ入力拡張ユニットに接続されたカメラ部のそれぞれに対する撮像トリガ等のトリガのタイミングを、複数台のカメラ入力拡張ユニット間で同期させることができる。
【０１１１】
また、図１０の例ではカメラ入力拡張ユニット４ｃに一台のカメラ部９８を接続しているが、一台のカメラ入力拡張ユニットに複数台のカメラ部を接続するように構成してもよい。この場合はカメラ入力拡張ユニットに、カメラ部を接続する撮像インターフェースを複数設ける。
【０１１２】
複数台のカメラ部を接続する際は、例えば一つの撮像対象を多方向から同期して撮像できる。また、撮像時の位相をずらすことで、実質的なｆｐｓを上げることも可能である。
（トリガ発生のシーケンス図）
（トリガ発生のシーケンス図を図１１、図１２に示す。撮像トリガ発行部５１７で撮像トリガとして、ＯＮ／ＯＦＦ信号のトリガ信号を発生させる動作としては、（１）カメラ入力拡張ユニット４ｃ側をトリガ発生源とする例と、（２）ＣＰＵユニット３側をトリガ発生源とする例が挙げられる。以下では、これらについて順次説明する。
（１）カメラ入力拡張ユニット４ｃ側がトリガ発生源の場合
【０１１３】
まずカメラ入力拡張ユニット４ｃ側をトリガ発生源とする場合の動作について、図１１、図１２のシーケンス図に基づいて説明する。ここでは、カメラ入力拡張ユニット４ｃ側に保存された設定情報に従って、一定時間ごとに撮像トリガを発行する方法と、カメラ入力拡張ユニット４ｃ側のプログラムに従って任意のタイミングで、撮像トリガを発行する方法が挙げられる。まず、カメラ入力拡張ユニット４ｃ側に保存された設定情報に従って、一定時間ごとに撮像トリガを発行する例を、図１１のシーケンス図に沿って説明する。ここでは、ＣＰＵユニット３とは非同期で、カメラ入力拡張ユニット４ｃの撮像トリガ発行部５１７が撮像トリガを発生させる。すなわち、ＣＰＵユニット３では実行部８０（例えばラダー実行部）が、プログラム（例えばラダープログラム）の実行とＥＮＤ処理を繰り返す一方、カメラ入力拡張ユニット４ｃでは、例えばタイマーに従い、一定時間経過後に撮像トリガ発行部５１７が撮像トリガを発生させる。タイマーは、カメラ拡張ユニット処理部５１０の時刻管理部８３ｂで実現する他、別途タイマーＩＣ等を設けてもよい。撮像トリガに従い、カメラ部９８では撮像を実行し、撮像した画像データをカメラ入力拡張ユニット４ｃの画像受信部９６ａで受信する。
【０１１４】
次に、カメラ入力拡張ユニット４ｃ側のプログラムに従って任意のタイミングでトリガ発行する方法について、図１２のシーケンス図に沿って説明する。ここでも、ＣＰＵユニット３のプログラム実行部によるプログラム実行とＥＮＤ処理の繰り返し動作とは非同期で、カメラ入力拡張ユニット４ｃの撮像トリガ発行部５１７が撮像トリガを発生させる。カメラ入力拡張ユニット４ｃのカメラ拡張ユニット処理部５１０が有するプログラム実行部５１４がプログラムを実行し、実行条件がＯＮになると、これに従って撮像トリガ発行部５１７が撮像トリガを発生させる。これに従い、カメラ部９８で撮像を実行し、得られた画像データを画像受信部９６ａで受信処理を行う。
（２）ＣＰＵユニット３側がトリガの発行源の場合
【０１１５】
次に、ＣＰＵユニット３側をトリガの発行源とする場合の動作について、図１３、図１４のシーケンス図に基づいて説明する。ここでは、ＥＮＤ処理にてトリガ指令を発行する例と、割込みを起点にプログラム実行中にトリガ指令を発行する例が挙げられる。まず、ＥＮＤ処理にてトリガ指令を発行する例を、図１３に沿って説明する。ここでは、プログラム実行の間に行われるリフレッシュ通信に従い、トリガ指令が発行される。リフレッシュ通信とは、図６に示すユニット間通信（入出力リフレッシュ）と同じである。図１３でも、ＣＰＵユニット３ではプログラム実行部がプログラム実行とＥＮＤ処理を繰り返す。プログラム実行同士の間、例えばＥＮＤ処理をトリガ指令として、カメラ入力拡張ユニット４ｃのカメラ拡張ユニット処理部５１０がこれを解釈して、撮像トリガ発行部５１７で撮像トリガを発行させる。これに従い、カメラ部９８で撮像を実行し、得られた画像データを画像受信部９６ａで受信処理を行う。
【０１１６】
また、割込みを起点にプログラム実行中にトリガ指令を発行する例を、図１４に沿って説明する。ここでは、ＣＰＵユニット３でのＥＮＤ処理まで待たずに、すなわちユニット間通信（リフレッシュ通信）を待たずに、ダイレクト通信でプログラム実行中にトリガ指令を発行する。ここでは、撮像トリガをラダープログラムに記述し、カメラ処理部５７０をラダープログラムにより撮像トリガ制御を行う。具体的には、ＣＰＵユニット３でプログラム実行部がラダープログラム等のプログラム実行とＥＮＤ処理を繰り返す中で、プログラム実行中に割り込みを受けると、トリガ指令が発される。割り込みは、他の拡張ユニットからの割込み、通信からの割込み、定周期割込みなどが挙げられる。カメラ入力拡張ユニット４ｃは、トリガ指令を受けてカメラ入力拡張ユニット４ｃのカメラ拡張ユニット処理部５１０がこれを解釈し、撮像トリガ発行部５１７で撮像トリガを発行させる。これに従い、カメラ部９８で撮像を実行し、得られた画像データを画像受信部９６ａで受信処理を行う。
【０１１７】
以上の撮像トリガの発行に関する処理をまとめて、図１５のフローチャートに基づいて説明する。まずＣＰＵユニット３側では、ステップＳ１５０１において、スキャンを開始する。ここではラダープログラム等のプログラムの実行を開始する。次にステップＳ１５０２において、トリガ要求を行う割込みの有無を判定する。このステップは図１４の処理に対応する。割り込みがない場合は、ステップＳ１５０４にジャンプし、プログラム実行を終了する。一方、割り込みがあった場合は、ステップＳ１５０３において、ユニット間バス９０を介してカメラ入力拡張ユニット４ｃへトリガを発行する。すなわちリフレッシュ通信を待つことなく、ダイレクト通信によりカメラ入力拡張ユニット４ｃにトリガ指令を発する。そしてステップＳ１５０４において、ラダープログラムの実行を終了し、ステップＳ１５０５においてＥＮＤ処理を開始する。
【０１１８】
さらにステップＳ１５０６において、トリガ要求の有無を判定する。このステップは図１３の処理に対応する。トリガ要求がない場合は、ステップＳ１５０８にジャンプする。一方、トリガ要求がある場合は、ステップＳ１５０７において、ユニット間バス９０を介してカメラ入力拡張ユニット４ｃへトリガを通知する。すなわち、リフレッシュ通信を行う。そしてステップＳ１５０８において、ユニット間バス９０を介してカメラ入力拡張ユニット４ｃへ時刻を通知する。そしてステップＳ１５０９において、ＥＮＤ処理を終了する。これで一スキャンが終了し、ステップＳ１５０１に戻って次のスキャンを開始する。
【０１１９】
一方、カメラ入力拡張ユニット４ｃにおける処理は、まずステップＳ１５１０において、トリガ要求の有無を判定する。トリガ要求があった場合は、図１６に示す処理Ａを行う（詳細は後述）。トリガ要求がない場合は、ステップＳ１５１０に戻り、処理を繰り返す。すなわちトリガ要求の待機状態となる。このトリガ要求は、カメラ入力拡張ユニット４ｃ内部の設定に従ってＯＮされる場合もあれば（図１１、図１２）、ＣＰＵユニット３からの指令によってＯＮされる場合もある（図１３、図１４）。
【０１２０】
一方でカメラ入力拡張ユニット４ｃの別の処理として、ステップＳ１５１１において、時刻カウントアップを行い、ステップＳ１５１２において、ＣＰＵユニット３からの時刻通知の有無を判定する。ない場合は、ステップＳ１５１１に戻り処理を繰り返す。一方、時刻通知があった場合は、ステップＳ１５１３において、時刻補正を行う。このように、ＣＰＵユニット３の時刻に基づいて、カメラ入力拡張ユニット４ｃの時刻を定期的に補正することができる。これにより、ＣＰＵユニット３のデバイス記録時刻と、カメラ入力拡張ユニット４ｃのトリガ発行時刻とのずれを極力少なくすることができる。
【０１２１】
ここで、ステップＳ１５１０においてトリガ要求があった場合の処理Ａを、図１６に基づいて説明する。まずステップＳ１６０１（図１５のステップＳ１５１０）において、トリガ要求の有無を判定する。トリガ要求がない場合は、ステップＳ１６０１に戻り、処理を繰り返す。すなわちトリガ要求の待機状態となる。トリガ要求があった場合は、ステップＳ１６０２に進み、カメラ部９８へトリガＯＮを通知すると共に、時刻情報を時刻情報記録バッファに記録する。次にステップＳ１６０３において、画像データの受信処理が完了したか否かを判定し、未だの場合はステップＳ１６０３に戻る待機状態となる。画像受信が完了すると、ステップＳ１６０４に進み、受信画像と時刻情報とを関連付けて画像記録部５２０に保存する。そしてステップＳ１６０１に戻り、処理を繰り返す。
（カメラ入力拡張ユニット４ｃの設定）
【０１２２】
次に、カメラ入力拡張ユニット４ｃの設定を説明する。カメラ入力拡張ユニット４ｃは、図１７に示すように、基本ユニットである１台のＣＰＵユニット３に対して、複数台を数珠つなぎに接続できる。また、他の種類の拡張ユニットを混在させてもよい。この場合の各拡張ユニット４の並べ方も自由に設定可能である。
【０１２３】
ここでＣＰＵユニット３とカメラ入力拡張ユニット４ｃの外観斜視図を図１８に、カメラ部９８を背面側から見た外観斜視図を図１９に、それぞれ示す。図１８の例では、ＣＰＵユニット３とカメラ入力拡張ユニット４ｃとを並べて配置している。ＣＰＵユニット３とカメラ入力拡張ユニット４ｃとは、バスコネクタ５６０で接続される。バスコネクタ５６０は、ＣＰＵユニット３とカメラ入力拡張ユニット４ｃとの接合界面に設ける他、背面側や底面側に設けてもよい。背面側等に設ける場合は、図２０に示すようにバックプレーン２００を介在させる。
（バックプレーン２００）
【０１２４】
複数台のユニットの接続には、バックプレーンが利用できる。バックプレーンの一例を、図２０の模式水平断面図に示す。この図に示すように、バックプレーン２００は一定間隔でバスコネクタ５６０を複数設けており、各バスコネクタ５６０にＣＰＵユニット３や拡張ユニット４が挿抜される。これにより、各ユニットはバックプレーン２００のバスコネクタ５６０を介して、相互に接続される。
【０１２５】
図１８のＣＰＵユニット３は箱状の筐体で構成され、正面パネルにＰＬＣ側表示部５とＰＬＣ側操作部６が備えられている。またＰＣ２等と接続するための通信ポートを備えている。
【０１２６】
カメラ入力拡張ユニット４ｃは、ＣＰＵユニット３とほぼ同じ高さに形成され、並べて配置し易くしている。このカメラ入力拡張ユニット４ｃは、正面パネルに撮像インターフェース５００として、接続ポート９７を設けている。接続ポート９７は複数設けてもよい。図１８の例では２つの接続ポート９７を設けており、それぞれにカメラ接続ケーブル５５０を介して異なる種類のカメラ部９８Ａ、９８Ｂを接続できる。このようにカメラ入力拡張ユニット４ｃには、複数台のカメラ部９８を接続することが可能である。図２１の例でも、撮像インターフェース５００としてカメラ接続ケーブル５５０を接続するための接続ポート９７を備えており、各接続ポート９７にカメラ接続ケーブル５５０のコネクタを挿入して、カメラ部９８Ａ、９８Ｂと接続できる。
【０１２７】
カメラ部９８は、高視野角のカメラや、高速度カメラ等、複数の種類がある。ポート毎に、別の種類のカメラ部９８を接続することができる。各カメラ部９８は、矩形状の筐体の正面にレンズ９９を介して撮像素子を配置している。また背面側にはカメラ接続ケーブル５５０との接続部５５２を設けている。
【０１２８】
カメラ部９８の映像関連の設定を行うカメラ設定部の一例として、カメラ設定画面１３６０を図２２のＧＵＩに示す。このカメラ設定画面１３６０から、カメラ部の設定情報として、接続ポート毎に映像関連の設定を行うことができる。設定可能な項目は、フレームレート、画質、回転、露出、ゲイン、露光時間、ホワイトバランス、コントラスト、ガンマ、シャープネス、アンチフリッカーなどである。ここで、フレームレートは、撮影する周期であり、カメラ部９８毎に設定できる。そのため、撮影タイミングは２つのカメラで非同期にすることも可能である。また同じフレームレートに設定することで、同期して撮影される。
【０１２９】
カメラ部の設定情報は、図２２に示すように、フレームレート、ゲイン、露光時間、コントラスト等のパラメータが含まれる。これらのパラメータは、カメラ入力拡張ユニットの不揮発性メモリに格納されている。図２２に示すパラメータのうち、ゲインと露光時間のパラメータが、カメラ入力拡張ユニットから読み出されてカメラの揮発性メモリに転送される。転送タイミングは、プログラマブルロジックコントローラの電源ＯＮ時などである。このような構成にしているので、例えばカメラを新規なものと交換しても、プログラマブルロジックコントローラの電源ＯＮのタイミングで、適切なゲインと露光時間がカメラに設定される。一方、本実施形態では、フレームレートやコントラストは、カメラに送られない。特に、カメラ入力拡張ユニットのカメラ拡張ユニット処理部は、フレームレートを参照して、撮像トリガを規定するＯＮ／ＯＦＦ信号を生成し、カメラ部に対して出力する。例えば、フレームレートが３０ＦＰＳであれば、１秒間あたり３０回のＯＮ／ＯＦＦ信号を生成する。
【０１３０】
上述の通り、カメラ部９８に対して撮像トリガを送出する際は、通信でなく直接撮像トリガライン５０１で接続してＯＮ／ＯＦＦ信号としたことで高速に指示できる利点が得られる。撮像画像は静止画のみならず、動画像としても記録・再生でき、表示器ＨＭＩやＰＣ２に表示させることもできる。特に動画像の場合には、画像データも高速に伝送するため、画像通信ライン５０２をシリアル通信としつつ、高速化している。詳細を、画像通信ライン５０２でカメラ部９８とカメラ入力拡張ユニット４ｃとを接続する様子を示す図２３のブロック図に基づいて説明する。
【０１３１】
図２３に示すカメラ部９８とカメラ入力拡張ユニット４ｃとは、カメラ接続ケーブル５５０に含まれる画像通信ライン５０２で接続されている。画像通信ライン５０２のデータ線は差動信号の１ペアで構成している。カメラ部９８のＣＭＯＳセンサ等の撮像部５７４で撮像された画像データは、ＦＰＧＡ等のカメラ処理部５７０にパラレル信号線で伝送される。カメラ処理部５７０は、画像送信部５７２に対し画像データをパラレル信号線で伝送する。画像送信部５７２は、シリアライザを備えており、パラレル信号をシリアル信号に変換する。通信速度は、差動１ペアで、例えば１３００Ｍｂｐｓ以上としている。イーサネット規格１００ＢＡＳＥ−ＴＸの１００Ｍｂｐｓなどよりも高速に伝送可能である。これにより、画像データをＶＧＡサイズで１２０ｆｐｓ、ＱｕａｄＶＧＡサイズで３０ｆｐｓとして、表示器ＨＭＩやＰＣ２で表示できる。
【０１３２】
一方、カメラ入力拡張ユニット４ｃでは、画像受信部９６ａにデシリアライザを備えており、シリアル信号をパラレル信号に変換して、画像データを画像処理部５１５にパラレル信号線で送出する。そして画像処理部５１５は、パラレル信号線で画像データを収集部９２ｂに送信する。このように、カメラ部９８やカメラ入力拡張ユニット４ｃ等の機器の内部はパラレル信号で接続してパラレル通信を行う一方、機器間においてはシリアル通信として、信号線を低減している。パラレル信号線であれば低速でも画像データを伝送可能であるところ、パラレル信号でカメラ部とカメラ入力拡張ユニットとを接続しようとすれば信号線が多くなってカメラ接続ケーブルが太くなってしまう。そこで本実施形態においては、画像送信ラインをシリアル通信とすることで信号線を少なくしてカメラ接続ケーブル５５０を細くしつつも、シリアル通信を高速化して画像データの通信を維持している。
＜リングバッファを用いたロギング＞
【０１３３】
図２４はＣＰＵユニット３の一時記録部９１ａに保持されたデバイス値と時刻情報とを示している。一つのレコードは、取得されたデバイス値と、このデバイス値が取得された時刻を示す時刻情報とを有している。
【０１３４】
図２４はさらに拡張ユニット４のリングバッファ９１ｂに保持された画像データと時刻情報とを示している。一つのレコードは、取得された画像データと、この画像データが取得された時刻を示す時刻情報とを有している。
【０１３５】
図２５はＣＰＵユニット３における一時記録部９１ａを用いたロギングを示している。ＣＰＵユニット３は、所定の収集開始条件が満たされると、デバイス部３４に保持されているデバイス値の内、ログ設定データにより指定されたデバイス値をデバイス部から読み出すと共に、時刻管理部から時刻情報を取得する収集部を有している。収集部は、デバイス値と時刻情報とを関連付けて一時記録部９１ａに格納する。また収集部は、ログ設定データ７２に指定された収集周期（例：スキャン周期）毎に、デバイス値と時刻情報とを取得して一時記録部９１ａに格納する。
【０１３６】
ステップＳ２５０１でＰＬＣ側ＣＰＵ３１の収集部は、デバイス値の取得条件が満たされたかどうかを判定する。取得条件は一時記録部９１ａに対するデバイス値と時刻情報の格納を開始するための条件である。取得条件は、ユーザープログラム中に記述されてもよいし（例：開始リレーがＯＮになったこと）、ログ設定データ７２において記述されていてもよい。取得条件が満たされると、ＰＬＣ側ＣＰＵ３１はステップＳ２５０２に進む。
【０１３７】
ステップＳ２５０２でＰＬＣ側ＣＰＵ３１（収集部）は取得リレーをＯＮにする。取得リレーは一ビットデバイスであり、拡張ユニット４に対してリングバッファ９１ｂへのデータの格納を指示するためのリレーである。
【０１３８】
ステップＳ２５０３でＰＬＣ側ＣＰＵ３１（収集部）はデバイス値の取得タイミングが到来したかどうかを判定する。取得タイミングは、例えば、スキャン周期ごと等であり（例えば毎スキャンにおけるＥＮＤ処理において取得する等）、ログ設定データ７２により定義されている。取得タイミングが到来すると、ＰＬＣ側ＣＰＵ３１はステップＳ２５０４に進む。
【０１３９】
ステップＳ２５０４でＰＬＣ側ＣＰＵ３１（収集部）は、ログ設定データ７２により指定されたデバイス値をデバイス部３４から取得すると共に、ＣＰＵユニット３の時刻管理部８３ａから時刻情報を取得し、これらを一時記録部９１ａに書き込む。
【０１４０】
ステップＳ２５０５でＰＬＣ側ＣＰＵ３１（収集部）は、保存タイミングが到来したかどうかを判定する。保存タイミングとは、一時記録部９１ａに保持されている情報をログデータ７３に保存するタイミングである。保存タイミングは、例えば、所定のイベント（例：保存トリガ）が発生したこと等であってもよい。保存タイミングもログ設定データ７２により定義されている。保存タイミングが到来していなければ、ＰＬＣ側ＣＰＵ３１はステップＳ２５０３に戻る。保存タイミングが到来していれば、ＰＬＣ側ＣＰＵ３１はステップＳ２５０６に進む。
【０１４１】
ステップＳ２５０６でＰＬＣ側ＣＰＵ３１（収集部）は、一時記録部９１ａに保持されている情報をログデータ７３に保存する。なお、一時記録部９１ａに保持されている情報の内、保存対象となる情報がログ設定データ７２により定義されていてもよい。例えば、保存対象は、あるイベントが発生したタイミングから所定時間が経過するまでに取得された情報であってもよい。また、保存対象は、あるイベントが発生したタイミングよりも所定時間前の時刻である開始時刻から、当該イベントが発生したタイミングから所定時間が経過した時刻である終了時刻までに取得された情報であってもよい。
【０１４２】
ステップＳ２５０７でＰＬＣ側ＣＰＵ３１（収集部）は、拡張ユニット４のリングバッファ９１ｂに保持されている情報をログデータ７３に保存する。収集部は、ダイレクト通信を利用して、拡張ユニット４のリングバッファ９１ｂに保持されている情報を読み出してもよい。より具体的には、収集部は、バッファメモリから情報を読み出すための命令を発行してもよい。なお、リングバッファ９１ｂに保持されている情報の内、保存対象となる情報も、ログ設定データ７２により定義されていてもよい。例えば、保存対象は、あるイベントが発生したタイミングから所定時間が経過するまでに取得された情報であってもよい。また、保存対象は、あるイベントが発生したタイミングよりも所定時間前の時刻である開始時刻から、当該イベントが発生したタイミングから所定時間が経過した時刻である終了時刻までに取得された情報であってもよい。
【０１４３】
ステップＳ２５０８でＰＬＣ側ＣＰＵ３１（収集部）は、終了条件が満たされたかどうかを判定する。終了条件は、ロギングの終了条件である。終了条件もログ設定データ７２により定義されていてもよい。終了条件が満たされていなければ、ＰＬＣ側ＣＰＵ３１はステップＳ２５０３に戻る。終了条件が満たされていれば、ＰＬＣ側ＣＰＵ３１はロギング処理を終了する。
【０１４４】
図２６は拡張ユニット４におけるリングバッファ９１ｂを用いたロギングを示している。
【０１４５】
ステップＳ２６０１でＣＰＵ４１（収集部９２ｂ）は画像データの取得条件（例：取得リレーがＯＮになったこと）が満たされたかどうかを判定する。取得リレーがＯＮになると、ＣＰＵ４１はステップＳ２６０２に進む。なお、本実施形態では取得リレーがＯＮになったときに、画像データの取得条件が満たされたと判定するようにしたが、これは一例に過ぎない。他にも例えば、ＰＬＣ１のモードが運転モードに切り替えられたときに、画像データの取得条件が満たされたと判定されてもよい。より具体的には、ＰＬＣ１には、各種設定を行うための設定モード（プログラムモード）と、ラダープログラムを繰り返し実行して実際の運転を行う運転モード（ＲＵＮモード）とを切り替えるモード切替スイッチが設けられてもよい。この場合、ユーザによって、このモード切替スイッチがプログラムモードからＲＵＮモードに切り替えられたら、画像データの取得条件が満たされたと判定されてもよい。
【０１４６】
ステップＳ２６０２でＣＰＵ４１（収集部９２ｂ）は画像データの取得タイミングが到来したかどうかを判定する。取得タイミングは、例えば、拡張ユニット４の内部制御周期（撮像周期）ごと等である。取得タイミングが到来すると、ＣＰＵ４１はステップＳ２６０３に進む。
【０１４７】
ステップＳ２６０３でＣＰＵ４１（収集部９２ｂ）は、大容量データと時刻情報を取得してリングバッファ９１ｂに格納する。例えば、収集部９２ｂは、トリガー信号を発行し、カメラ部９８と時刻管理部８３ｂに出力する。時刻管理部８３ｂはトリガー信号を受信すると、内部時計から時刻情報を読み出して、時刻情報バッファ９５に書き込む。カメラ部９８は、予め指定された撮像条件にしがって撮像を実行し、画像データを出力する。画像受信部９６ａは画像データを収集部９２ｂに出力する。画像受信部９６ａは画像データをリングバッファ９１ｂに直接的に書き込んでもよい。収集部９２ｂは時刻情報バッファ９５から読み出した時刻情報と、カメラ部９８により取得された画像データとを関連づけてリングバッファ９１ｂに書き込む。
【０１４８】
ステップＳ２６０４でＣＰＵ４１（収集部９２ｂ）は、ＣＰＵユニット３からリングバッファ９１ｂに対する読み出し要求（読み出し命令）が発行されたかどうかを判定する。読み出し要求を受信したのであれば、ＣＰＵ４１はＳ１５に進む。読み出し要求が発行されていなければ、ＣＰＵ４１はステップＳ２６０２に戻る。
【０１４９】
ステップＳ２６０５でＣＰＵ４１（収集部９２ｂ）は、リングバッファ９１ｂから大容量データである画像データと時刻情報とを取得してＣＰＵユニット３に送信する。
【０１５０】
ステップＳ２６０６でＣＰＵ４１（収集部９２ｂ）は、終了条件が満たされたかどうかを判定する。例えば、収集部９２ｂは取得リレーがＯＦＦになったかどうかを判定する。終了条件が満たされていなければ、ＣＰＵ４１はステップＳ２６０２に戻る。終了条件が満たされていれば、ＣＰＵ４１はロギング処理を終了する。
＜接続形態＞
【０１５１】
図２７はビルディングブロックタイプのＰＬＣ１の接続形態を示している。ＣＰＵユニット３の右側面には、拡張ユニット４と接続して通信するためのＩＦ９９ａが設けられている。ＩＦはインタフェースの略称である。この例では、ＣＰＵユニット３には拡張ユニット４ａが接続されており、拡張ユニット４ａには拡張ユニット４ｂが接続されている。拡張ユニット４は右側面と左側面との両方にＩＦ９９を有している。ＣＰＵユニット３の右側面は拡張ユニット４ａの左側面と対向している。よって、ＣＰＵユニット３のＩＦ９９ａは拡張ユニット４ａの左側面に設けられたＩＦ９９ｂと接続する。拡張ユニット４ａの右側面は拡張ユニット４ｂの左側面と対向している。よって、拡張ユニット４ａのＩＦ９９ｃは拡張ユニット４ｂの左側面に設けられたＩＦ９９ｄと接続する。なお、拡張ユニット４ｂの右側面に設けられた９９ｅはエンドユニットに接続されてもよい。このように、ＩＦ９９ａからＩＦ９９ｅはユニット間バス９０を形成している。例えば、拡張ユニット４ａに接続されたカメラ部９８ａにより取得された画像データはユニット間バス９０を介してＣＰＵユニット３へ転送されうる。拡張ユニット４ｂに接続されたカメラ部９８ｂにより取得された画像データはユニット間バス９０を介してＣＰＵユニット３へ転送されうる。
【０１５２】
このようにビルディングブロックタイプのＰＬＣ１では各ユニットの側面が接続面（連結面）となる。ユニット間バス９０の一部を形成するためのＩＦ９９も各ユニットの側面に設けられる。なお、上述したように、ユニット間バス９０での通信は、図５に示すバスマスタ３８によって制御される。
【０１５３】
図２８はバックプレーン２００を有するＰＬＣ１の接続形態を示している。バックプレーン２００は、ＣＰＵユニット３の底面及び拡張ユニット４の底面に接続されるか、ＣＰＵユニット３の背面及び拡張ユニット４の背面に接続される。バックプレーン２００はＣＰＵユニット３及び拡張ユニット４を支持する支持プレート（ベースプレート）として機能する。ここでは一例として背面が接続面として説明される。ＣＰＵユニット３の背面はバックプレーン２００の正面と対向している。よって、ＣＰＵユニット３の背面に設けられたＩＦ９９ｆはバックプレーン２００の正面に設けられたＩＦ９９ｇと接続する。拡張ユニット４の背面はバックプレーン２００の正面と対向している。拡張ユニット４ａの背面に設けられたＩＦ９９ｈはバックプレーン２００の正面に設けられたＩＦ９９ｉに接続される。拡張ユニット４ｂの背面に設けられたＩＦ９９ｊはバックプレーン２００の正面に設けられたＩＦ９９ｋに接続される。ＩＦ９９ｆないしＩＦ９９ｋはユニット間バス９０を形成している。
【０１５４】
なお、バックプレーン２００は、ユニット間バス９０を介したバス通信を制御するための通信制御部２１３を有していてもよい。また、バックプレーン２００は、ＣＰＵ２１１やメモリ２１２を有していてもよい。メモリ２１２はＲＡＭやＲＯＭに加え、メモリカードを有していてもよい。この場合、ＣＰＵ２１１は収集部９２ｂや保存部として機能してもよい。また、メモリ２１２にはリングバッファが設けられてもよい。あるいは、ＣＰＵ２１１は時刻管理部８３ｂ及び収集部を有していてもよい。この場合、メモリ２１２はリングバッファ９１ｂを有する。
＜ログの表示例＞
【０１５５】
ログデータには、運転記録を保存した際のデバイス値やカメラ部９８の画像データに加えて、運転記録を保存した際のプロジェクトデータに含まれるラダープログラム等のユーザープログラムや、各ユニットの設定ファイルも含まれる。例えばトラブル発生時にカメラ部９８で撮像した画像データや、各ユニットの状態、モーションユニットの角度や座標等の情報が含まれる。これにより、ログデータに過去の各デバイスの状態や接続状態、各ユニットの情報等を保存できるので、ログデータを保存しておくことで、過去の状態を再現することができる。すなわち、トラブル発生時に遡って、どのような設定でどのような出力がなされていたかのかを確認できるため、トラブルの原因解明に有益となる。またログデータは、ＰＬＣ用エンジニアリングツールで読み込むことで、ログデータに保存された各設定などを解析して、再現表示できる。
【０１５６】
図２９はログデータ７３の一例を示している。この例では、デバイス値ｄ１〜ｄ１０と、カメラ部９８ａにより取得されたワーク画像ｉ１〜ｉ３と、カメラ部９８ｂにより取得された他の画像ｊ１〜ｊ３の取得タイミングが示されている。デバイス値ｄ１〜ｄ１０はスキャン周期ごとに取得されている。ワーク画像ｉ１〜ｉ３はトリガー信号が発生したタイミングに取得されている。ワーク画像ｊ１〜ｊ３はトリガー信号が発生したタイミングに取得されている。各データの位置はそれぞれの時刻情報を示している。図２９が示すように、各データの取得時刻や取得周期は一致していない。そのため、ログ表示制御部６１は、各データの時刻情報に基づき各データの表示タイミングを調整する。
【０１５７】
図３０はログデータ７３の表示タイミングと表示継続時間とを説明する図である。ログ表示制御部６１は、各デバイス値の時刻情報に従って各デバイス値を表示部７に表示する。例えば、ログ表示制御部６１は、デバイス値ｄ１の時刻情報とデバイス値ｄ２の時刻情報との差分時間をデバイス値ｄ１の表示継続時間に決定する。ログ表示制御部６１は、デバイス値ｄ１の表示を開始してから表示継続時間が経過すると、デバイス値ｄ２の表示を開始する。以下、同様に表示継続時間が求められ、表示されるデバイス値が時刻情報や表示継続時間に従って切り替えられて行く。
【０１５８】
すでに図２９が示したように、デバイス値ｄ１の取得時刻と、ワーク画像ｉ１の取得時刻とは一致していない。そこで、ログ表示制御部６１は、ワーク画像ｉ１の取得時刻をデバイス値ｄ１ないしｄ１０の取得時刻と比較し、ワーク画像ｉ１の取得時刻に最も近いデバイス値ｄｘの取得時刻を求める。この例では、ワーク画像ｉ１の取得時刻に最も近いのは、デバイス値ｄ１の取得時刻である。よって、ログ表示制御部６１は、デバイス値ｄ１の表示を開始すると共に、ワーク画像ｉ１の表示を開始する。次に、ログ表示制御部６１は、ワーク画像ｉ２の取得時刻に最も近いデバイス値ｄｘの取得時刻を求める。この例では、デバイス値ｄ４の取得時刻が、ワーク画像ｉ２の取得時刻が最も近い。そこで、ログ表示制御部６１は、デバイス値ｄ４の表示タイミングが到来すると、デバイス値ｄ４とワーク画像ｉ２の表示を開始する。ログ表示制御部６１は、他の画像ｊ１の取得時刻に最も近いデバイス値ｄｘの取得時刻を求める。この例では、他の画像ｊ１の取得時刻に最も近いのは、デバイス値ｄ２の取得時刻である。よって、ログ表示制御部６１は、デバイス値ｄ２の表示タイミングが到来すると、デバイス値ｄ２の表示を開始すると共に、他の画像ｊ１の表示を開始する。
【０１５９】
このようにログデータ７３に含まれる複数のデータの内、ロギングの周期がもっとも短いデータを基準として、各データの表示タイミングが調整されてもよい。
【産業上の利用可能性】
【０１６０】
本発明に係るプログラマブルロジックコントローラ及びカメラ入力拡張ユニットは、ＦＡにおけるＰＬＣシステムのトラブルシューティングに好適に利用できる。
【符号の説明】
【０１６１】
１…ＰＬＣ
２…ＰＣ
３…ＣＰＵユニット
４、４ａ、４ｂ…拡張ユニット
４ｃ…カメラ入力拡張ユニット
４ｄ…モーションユニット
４ｅ…通信ユニット
５…ＰＬＣ側表示部
６…ＰＬＣ側操作部
７…表示部
８…ＰＣ側操作部
９…通信ケーブル
１０、１０ａ、１０ｂ…フィールドデバイス
１１…ＰＣ側メモリ部
２１、２１Ｂ…ＰＣ側ＣＰＵ
２２…ＰＣ側記憶装置
２３…ＰＣ側通信部
３１…ＰＬＣ側ＣＰＵ
３２…ＰＬＣ側記憶装置
３３…ＰＬＣ側通信部
３４…デバイス部
３４ａ…ＣＰＵユニットデバイス部；３４ｂ…拡張ユニットデバイス部
３５…プロジェクト記憶部
３６…保存メモリ；３６Ａ…メモリカード
３７…内部メモリ
３８…バスマスタ
３９…記録制御部
４１…ＣＰＵ
４２…メモリ
４５…保存条件設定部
５０Ｃ…保存制御部
７１…プロジェクトデータ
７２…ログ設定データ
７３…ログデータ
８０…実行部
８０ａ…ラダー実行エンジン
８０ｂ…ユニット制御部
８１…記録部
８２…検知部
８３…時刻管理部
８３ａ…時刻管理部
８３ｂ…時刻管理部
８４…出力部
９０…ユニット間バス
９１ａ…一時記録部；９１ｂ…リングバッファ
９２ｂ…収集部
９２ａ…収集部
９３…保存部
９４…送信部
９５…時刻情報バッファ
９６…機能実行部
９６ａ…画像受信部
９７…接続ポート
９８、９８ａ、９８ｂ、９８Ａ、９８Ｂ…カメラ部
９９…レンズ
９９ａ〜９９ｋ…ＩＦ
２００…バックプレーン
２０１…ユニット間通信
２０２…プログラム実行
２０４…ＥＮＤ処理
２１１…ＣＰＵ
２１２…メモリ
２１３…通信制御部
５００…カメラ接続インターフェース
５００Ｂ…カメラ側撮像インターフェース
５０１…撮像トリガライン
５０２…画像通信ライン
５０３…電力供給ライン
５１０…カメラ拡張ユニット処理部
５１１…バス送受信部
５１２…プロトコル解釈部
５１３…プロトコル実行部
５１４…プログラム実行部
５１５…画像処理部
５１７…撮像トリガ発行部
５２０…画像記録部
５２２…時刻情報一次バッファ
５２４…電力供給部
５３０…カメラ設定情報記憶部
５５０…カメラ接続ケーブル
５５２…接続部
５６０…バスコネクタ
５７０…カメラ処理部
５７１…撮像トリガ入力部
５７２…画像送信部
５７３…電力受給部
５７４…撮像部
５７５…カメラ設定記録部
１０００…プログラマブルロジックコントローラシステム
１３６０…カメラ設定画面
Ｌｄ…ラダー図
Ｔ…スキャンタイム
ｄ１〜ｄ１０…デバイス値
ＷＫ…対象物
ＮＴ…通信ネットワーク
ＶＣ…ビデオカメラ
ＰＳ…外部電源部
ＣＬ…通信線
ｉ１〜ｉ３…ワーク画像
ｊ１〜ｊ３…ワーク画像
【図１】
2020134985.tif 000003
【図２】
2020134985.tif 000004
【図３】
2020134985.tif 000005
【図４】
2020134985.tif 000006
【図５】
2020134985.tif 000007
【図６】
2020134985.tif 000008
【図７】
2020134985.tif 000009
【図８】
2020134985.tif 000010
【図９】
2020134985.tif 000011
【図１０】
2020134985.tif 000012
【図１１】
2020134985.tif 000013
【図１２】
2020134985.tif 000014
【図１３】
2020134985.tif 000015
【図１４】
2020134985.tif 000016
【図１５】
2020134985.tif 000017
【図１６】
2020134985.tif 000018
【図１７】
2020134985.tif 000019
【図１８】
2020134985.tif 000020
【図１９】
2020134985.tif 000021
【図２０】
2020134985.tif 000022
【図２１】
2020134985.tif 000023
【図２２】
2020134985.tif 000024
【図２３】
2020134985.tif 000025
【図２４】
2020134985.tif 000026
【図２５】
2020134985.tif 000027
【図２６】
2020134985.tif 000028
【図２７】
2020134985.tif 000029
【図２８】
2020134985.tif 000030
【図２９】
2020134985.tif 000031
【図３０】
2020134985.tif 000032
【図３１】
2020134985.tif 000033