(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-19
(45)【発行日】2023-07-27
(54)【発明の名称】プログラマブルロジックコントローラ及びカメラ入力拡張ユニット
(51)【国際特許分類】
G05B 19/05 20060101AFI20230720BHJP
【FI】
G05B19/05 L
(21)【出願番号】P 2019023076
(22)【出願日】2019-02-12
【審査請求日】2021-12-17
(73)【特許権者】
【識別番号】000129253
【氏名又は名称】株式会社キーエンス
(74)【代理人】
【識別番号】100104949
【氏名又は名称】豊栖 康司
(74)【代理人】
【識別番号】100074354
【氏名又は名称】豊栖 康弘
(72)【発明者】
【氏名】辻川 良輔
【審査官】大古 健一
(56)【参考文献】
【文献】特開2000-235412(JP,A)
【文献】特開2018-151918(JP,A)
【文献】特開2018-207349(JP,A)
【文献】国際公開第2018/155198(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/04 -19/05
(57)【特許請求の範囲】
【請求項1】
ユーザープログラムを実行するCPUユニットを備え、該CPUユニットが該ユーザープログラムを繰り返し実行することにより外部機器を監視又は制御するプログラマブルロジックコントローラであって、
前記プログラマブルロジックコントローラは、
前記CPUユニットとバスを介して電気的に接続されると共に、前記プログラマブルロジックコントローラからの撮像トリガに応じて所定領域を撮像し、撮像した該所定領域に対応する画像データを生成するカメラ部を接続するためのカメラ入力拡張ユニットを備え、
前記カメラ入力拡張ユニットは、
前記撮像トリガの条件を含む前記カメラ部の設定情報を記憶するカメラ設定情報記憶部と、
前記カメラ設定情報記憶部に記憶された前記カメラ部の設定情報に基づいて、前記撮像トリガを規定するON/OFF信号を生成し、該ON/OFF信号を前記撮像トリガとして前記カメラ部で生成された画像データを処理するカメラ拡張ユニット処理部と、
前記カメラ拡張ユニット処理部で取得された画像データを記録する画像記録部と、
前記カメラ拡張ユニット処理部と前記カメラ部との間に設けられ、前記ON/OFF信号を前記カメラ部に送るための撮像トリガライン、及び前記カメラ部で生成された画像データを前記カメラ拡張ユニット処理部に送るための画像通信ラインを有する撮像インターフェースと、
を備えるプログラマブルロジックコントローラ。
【請求項2】
請求項1に記載のプログラマブルロジックコントローラであって、
前記CPUユニットにより実行されるユーザープログラムは、前記CPUユニットに接続されるプログラム作成支援装置によって作成され、
前記カメラ設定情報記憶部に記憶される前記カメラ部の設定情報は、前記プログラム作成支援装置により作成され、前記CPUユニットを介して受信された設定情報を含んでなるプログラマブルロジックコントローラ。
【請求項3】
請求項1又は2に記載のプログラマブルロジックコントローラであって、さらに、
前記CPUユニット及び前記カメラ入力拡張ユニットが取り付けられるベースプレートを備え、
前記カメラ入力拡張ユニットは、前記CPUユニットと前記ベースプレート内のバスを介して電気的に接続されてなるプログラマブルロジックコントローラ。
【請求項4】
請求項1~3のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記画像記録部は、前記カメラ拡張ユニット処理部で取得された画像データを、該画像データが取得された時刻に関する情報と関連付けて時系列に記録すると共に、前記CPUユニットからの指示に応じて、前記画像データ及び前記時刻に関する情報を前記CPUユニットに送信するよう構成してなるプログラマブルロジックコントローラ。
【請求項5】
請求項1~4のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記撮像トリガラインが、非通信ラインであるプログラマブルロジックコントローラ。
【請求項6】
請求項1~5のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記撮像インターフェースは、さらに、
前記カメラ部に対して電力を供給するための電力供給インターフェースを備え、
前記撮像インターフェースと前記カメラ部とを接続するカメラ接続ケーブルは、前記画像通信ラインと、前記撮像トリガラインと
、電力供給ラインとを束ねてなるプログラマブルロジックコントローラ。
【請求項7】
請求項1~6のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記画像通信ラインによる通信速度を130
0Mbps以上としてなるプログラマブルロジックコントローラ。
【請求項8】
請求項1~7のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記カメラ拡張ユニット処理部は、
前記撮像トリガラインを介して、前記カメラ部に送る前記ON/OFF信号を生成する撮像トリガ発行部と、
前記ON/OFF信号を送出する時刻に関する情報を、前記カメラ部で取得された画像データと関連付けて前記画像記録部に記録する収集部と、
を備えるプログラマブルロジックコントローラ。
【請求項9】
請求項1~8のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記CPUユニット及びカメラ入力拡張ユニットは、時刻管理部を備えており、
前記CPUユニット及びカメラ入力拡張ユニットの各々に設けられた前記時刻管理部を用いて時刻同期を行うよう構成してなるプログラマブルロジックコントローラ。
【請求項10】
請求項9に記載のプログラマブルロジックコントローラであって、
前記時刻管理部がカウンタであり、
前記画像データが取得された時刻に関する情報を、カウンタ値としてなるプログラマブルロジックコントローラ。
【請求項11】
請求項1~10のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記カメラ拡張ユニット処理部は、前記撮像トリガをラダープログラムに記述し、前記ラダープログラムによる撮像トリガ制御を行うよう構成してなるプログラマブルロジックコントローラ。
【請求項12】
請求項1~11のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記撮像トリガを規定するON/OFF信号を送出するタイミングが、タイマ、外部入力、異常検知の何れかであるプログラマブルロジックコントローラ。
【請求項13】
請求項1~12のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記カメラ拡張ユニット処理部が、前記カメラ
入力拡張ユニットが毎スキャンごとに実行するリフレッシュ通信のプロトコル解釈及び実行、又は他の拡張ユニットへの転送を行うよう構成してなるプログラマブルロジックコントローラ。
【請求項14】
請求項1~13のいずれか一項に記載のプログラマブルロジックコントローラであって、
前記カメラ入力拡張ユニットが複数備えられてなるプログラマブルロジックコントローラ。
【請求項15】
請求項14に記載のプログラマブルロジックコントローラであって、
前記複数のカメラ入力拡張ユニットにそれぞれ接続されたカメラでもって、共通の対象物を、異なる方向から同期させて撮像するよう構成してなるプログラマブルロジックコントローラ。
【請求項16】
請求項14又は15に記載のプログラマブルロジックコントローラであって、
前記複数のカメラ入力拡張ユニットにそれぞれ接続されたカメラでもって、共通の対象物を、異なる位相で撮像するよう構成してなるプログラマブルロジックコントローラ。
【請求項17】
プログラマブルロジックコントローラを構成するCPUユニットと、バスを介して電気的に接続されるカメラ入力拡張ユニットであって、
前記プログラマブルロジックコントローラからの撮像トリガに応じて所定領域を撮像し、撮像した該所定領域に対応する画像データを生成するカメラ部の、前記撮像トリガの条件を含む設定情報を記憶するカメラ設定情報記憶部と、
前記カメラ設定情報記憶部に記憶された前記カメラ部の設定情報に基づいて、前記撮像トリガを規定するON/OFF信号を生成し、該ON/OFF信号を前記撮像トリガとして前記カメラ部で生成された画像データを処理するカメラ拡張ユニット処理部と、
前記カメラ拡張ユニット処理部で取得された画像データを記録する画像記録部と、
前記カメラ拡張ユニット処理部と前記カメラ部との間に設けられ、前記ON/OFF信号を前記カメラ部に送るための撮像トリガライン、及び前記カメラ部で生成された画像データを前記カメラ拡張ユニット処理部に送るための画像通信ラインを有する撮像インターフェースと、
を備えるカメラ入力拡張ユニット。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラマブルロジックコントローラ及びカメラ入力拡張ユニットに関する。
【背景技術】
【0002】
プログラマブルロジックコントローラ(Programmable Logic Controller:以下、「PLC」という。)はファクトリーオートメーション(Factory Automation:FA)において製造機器や搬送装置、検査装置を制御するコントローラである。PLCはユーザによって作成されるラダープログラム等のユーザープログラムを実行することで様々な拡張ユニットや被制御機器を制御する。ユーザープログラムを実際にPLC上で実行してみて、ユーザープログラムの作成時には想定していなかった事象が見つかり、ユーザープログラムの修正が必要となることがある。ユーザは修正箇所を特定するためにユーザープログラムを見直すだけでなく、PLCが生成したログデータを参照する。ログデータにはユーザープログラムを実行しているときに収集されたデバイスの値(デバイス値)が記憶される。PLCの分野においてデバイスとは情報を記憶する記憶領域を意味する。デバイスとしては、一ビットの情報を保持するリレーデバイスや一ワードの情報を保持するワードデバイス等がある。
【0003】
このようなプログラマブルロジックコントローラで、例えば通信ネットワークを介してPLCとビデオカメラを接続し、カメラ画像により生産設備を監視するシステムが知られている(例えば特許文献1)。このシステムでは、何らかの設備トラブルが発生した際に、トラブル発生前後のカメラ画像を解析し、トラブルの原因究明が行われる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、PLCのデバイス値が取得された時刻と、カメラ画像が取得された時刻との間に時間ずれがあると、トラブルの原因究明に手間が掛かる。そのため、これらの時刻の誤差は極力小さい方が望ましい。にもかかわらず、通信遅延の影響により、両方の時刻を同期させることは容易でないという問題があった。
【0006】
本発明の目的の一は、デバイス記録と高精度に時刻を同期させるようにしたプログラマブルロジックコントローラ及びカメラ入力拡張ユニットを提供することにある。
【課題を解決するための手段及び発明の効果】
【0007】
本発明の第1の態様に係るプログラマブルロジックコントローラによれば、ユーザープログラムを実行するCPUユニットを備え、該CPUユニットが該ユーザープログラムを繰り返し実行することにより外部機器を監視又は制御するプログラマブルロジックコントローラであって、前記プログラマブルロジックコントローラは、前記CPUユニットとバスを介して電気的に接続されると共に、前記プログラマブルロジックコントローラからの撮像トリガに応じて所定領域を撮像し、撮像した該所定領域に対応する画像データを生成するカメラ部を接続するためのカメラ入力拡張ユニットを備え、前記カメラ入力拡張ユニットは、前記撮像トリガの条件を含む前記カメラ部の設定情報を記憶するカメラ設定情報記憶部と、前記カメラ設定情報記憶部に記憶された前記カメラ部の設定情報に基づいて、前記撮像トリガを規定するON/OFF信号を生成し、該ON/OFF信号を前記撮像トリガとして前記カメラ部で生成された画像データを処理するカメラ拡張ユニット処理部と、前記カメラ拡張ユニット処理部で取得された画像データを記録する画像記録部と、前記カメラ拡張ユニット処理部と前記カメラ部との間に設けられ、前記ON/OFF信号を前記カメラ部に送るための撮像トリガライン、及び前記カメラ部で生成された画像データを前記カメラ拡張ユニット処理部に送るための画像通信ラインを有する撮像インターフェースとを備えることができる。
【0008】
また、第2の態様に係るプログラマブルロジックコントローラによれば、上記構成に加えて、前記CPUユニットにより実行されるユーザープログラムは、前記CPUユニットに接続されるプログラム作成支援装置によって作成され、前記カメラ設定情報記憶部に記憶される前記カメラ部の設定情報は、前記プログラム作成支援装置により作成され、前記CPUユニットを介して受信された設定情報を含むことができる。
【0009】
さらに、第3の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、さらに、前記CPUユニット及び前記カメラ入力拡張ユニットが取り付けられるベースプレートを備え、前記カメラ入力拡張ユニットを、前記CPUユニットと前記ベースプレート内のバスを介して電気的に接続することができる。
【0010】
さらにまた、第4の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記画像記録部は、前記カメラ拡張ユニット処理部で取得された画像データを、該画像データが取得された時刻に関する情報と関連付けて時系列に記録すると共に、前記CPUユニットからの指示に応じて、前記画像データ及び前記時刻に関する情報を前記CPUユニットに送信するよう構成できる。上記構成により、カメラ部で撮像した画像データに関するデバイス記録と高精度に時刻を同期させることが可能となる。特に撮像を指示する撮像トリガを通信線やコマンド解釈を介することなく、専用線の撮像トリガラインでON/OFF信号として送出することで、時間遅れを避けた高精度な時刻の同期が実現できる。
【0011】
さらにまた、第5の態様に係るプログラマブルロジックコントローラによれば、上記構成に加えて、前記撮像トリガラインを、非通信ラインとできる。上記構成により、通信でなくON/OFFのI/Oで撮像トリガを指示できるため、通信による撮像コマンドの送信と比べて極めて高速な撮像トリガの指示が実現される。
【0012】
さらにまた、第6の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記撮像インターフェースは、さらに、前記カメラ部に対して電力を供給するための電力供給インターフェースを備え、前記撮像インターフェースと前記カメラ部とを接続するカメラ接続ケーブルは、前記画像通信ラインと、前記撮像トリガラインと、電力供給ラインとを束ねることができる。上記構成により、カメラ入力拡張ユニットとカメラ部とを、撮像インターフェースを接続するのみで、電源供給を含めたカメラ部を動作させるすべての電気信号のやりとりを実現でき、配線をシンプルとして構成の簡素化が図られる。
【0013】
さらにまた、第7の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記画像通信ラインによる通信速度を1300Mbps以上とすることができる。上記構成により、イーサネットなどの通信線よりも高速に画像データを伝送できる。
【0014】
さらにまた、第8の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記カメラ拡張ユニット処理部は、前記撮像トリガラインを介して、前記カメラ部に送る前記ON/OFF信号を生成する撮像トリガ発行部と、前記ON/OFF信号を送出する時刻に関する情報を、前記カメラ部で取得された画像データと関連付けて前記画像記録部に記録する収集部とを備えることができる。上記構成により、カメラ拡張ユニット処理部を共通のSoC等で構成できる。
【0015】
さらにまた、第9の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記CPUユニット及びカメラ入力拡張ユニットは、時刻管理部を備えており、前記CPUユニット及びカメラ入力拡張ユニットの各々に設けられた前記時刻管理部を用いて時刻同期を行うよう構成できる。
【0016】
さらにまた、第10の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記時刻管理部がカウンタであり、前記画像データが取得された時刻に関する情報を、カウンタ値とすることができる。
【0017】
さらにまた、第11の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記カメラ拡張ユニット処理部は、前記撮像トリガをラダープログラムに記述し、前記ラダープログラムによる撮像トリガ制御を行うよう構成できる。
【0018】
さらにまた、第12の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記撮像トリガを規定するON/OFF信号を送出するタイミングを、タイマ、外部入力、異常検知の何れかとできる。
【0019】
さらにまた、第13の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記カメラ拡張ユニット処理部が、前記カメラ入力拡張ユニットが毎スキャンごとに実行するリフレッシュ通信のプロトコル解釈及び実行、又は他の拡張ユニットへの転送を行うよう構成できる。
【0020】
さらにまた、第14の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記カメラ入力拡張ユニットを複数備えることができる。上記構成により、同期したトリガを入力可能なカメラ入力拡張ユニットを複数台展開することが可能となり、拡張性を高めることができる。
【0021】
さらにまた、第15の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記複数のカメラ入力拡張ユニットにそれぞれ接続されたカメラでもって、共通の対象物を、異なる方向から同期させて撮像するよう構成できる。上記構成により、共通の対象物を異なる方向から同期させて撮像することで、より詳細な観察が可能となる。
【0022】
さらにまた、第16の態様に係るプログラマブルロジックコントローラによれば、上記何れかの構成に加えて、前記複数のカメラ入力拡張ユニットにそれぞれ接続されたカメラでもって、共通の対象物を、異なる位相で撮像するよう構成できる。上記構成により、共通の対象物を位相をずらして撮像することで、実質的にFPSを上げて細かく動作を捉えることが可能となる。
【0023】
さらにまた、第17の態様に係るカメラ入力拡張ユニットによれば、プログラマブルロジックコントローラを構成するCPUユニットと、バスを介して電気的に接続されるカメラ入力拡張ユニットであって、前記プログラマブルロジックコントローラからの撮像トリガに応じて所定領域を撮像し、撮像した該所定領域に対応する画像データを生成するカメラ部の、前記撮像トリガの条件を含む設定情報を記憶するカメラ設定情報記憶部と、前記カメラ設定情報記憶部に記憶された前記カメラ部の設定情報に基づいて、前記撮像トリガを規定するON/OFF信号を生成し、該ON/OFF信号を前記撮像トリガとして前記カメラ部で生成された画像データを処理するカメラ拡張ユニット処理部と、前記カメラ拡張ユニット処理部で取得された画像データを記録する画像記録部と、前記カメラ拡張ユニット処理部と前記カメラ部との間に設けられ、前記ON/OFF信号を前記カメラ部に送るための撮像トリガライン、及び前記カメラ部で生成された画像データを前記カメラ拡張ユニット処理部に送るための画像通信ラインを有する撮像インターフェースとを備えることができる。
【図面の簡単な説明】
【0024】
【
図1】プログラマブルロジックコントローラシステムの概念図である。
【
図2】プログラマブルロジックコントローラシステムを示す図である。
【
図4】プログラム作成支援装置を説明する図である。
【
図6】ラダープログラムのスキャンを説明する図である。
【
図7】拡張ユニットのCPUの機能を説明する図である。
【
図8】カメラ入力拡張ユニットを備えるプログラマブルロジックコントローラシステムの概念図である。
【
図9】従来のカメラを接続したプログラマブルロジックコントローラシステムを示す模式図である。
【
図10】プログラマブルロジックコントローラシステムの機能ブロック図である。
【
図11】カメラ入力拡張ユニットが設定情報に従って撮像トリガを発生させる様子を示すシーケンス図である。
【
図12】カメラ入力拡張ユニットがプログラムに従って撮像トリガを発生させる様子を示すシーケンス図である。
【
図13】CPUユニットがエンド処理にて撮像トリガを発生させる様子を示すシーケンス図である。
【
図14】CPUユニットが割り込みを起点に撮像トリガを発生させる様子を示すシーケンス図である。
【
図15】撮像トリガの発行に関する処理を示すフロー図である。
【
図16】カメラ入力拡張ユニットの処理フローを示すフローチャートである。
【
図17】実施形態に係るカメラ入力拡張ユニットをCPUユニットに接続する状態を示す模式図である。
【
図18】カメラ部を接続したカメラ入力拡張ユニットの外観を示す斜視図である。
【
図20】バックプレーンにユニットを接続する状態を示す模式図である。
【
図21】各カメラ入力拡張ユニットにカメラ部を接続する様子を示す模式図である。
【
図22】カメラ部の映像関連の設定画面を示すイメージ図である。
【
図23】撮像トリガラインで接続されたカメラ入力拡張ユニットとカメラ部を示す模式図である。
【
図25】CPUユニットにおけるロギング処理を示すフローチャートである。
【
図26】拡張ユニットにおけるロギング処理を示すフローチャートである。
【
図29】ロギングのタイミングを説明する図である。
【
図31】CPUユニットのCPUの機能を説明する図である。
【発明を実施するための形態】
【0025】
以下、本発明の実施形態を図面に基づいて説明する。ただし、以下に示す実施形態は、本発明の技術思想を具体化するための例示であって、本発明は以下のものに特定されない。また、本明細書は特許請求の範囲に示される部材を、実施形態の部材に特定するものでは決してない。特に実施形態に記載されている構成部品の寸法、材質、形状、その相対的配置等は特に特定的な記載がない限りは、本発明の範囲をそれのみに限定する趣旨ではなく、単なる説明例にすぎない。なお、各図面が示す部材の大きさや位置関係等は、説明を明確にするため誇張していることがある。さらに以下の説明において、同一の名称、符号については同一若しくは同質の部材を示しており、詳細説明を適宜省略する。さらに、本発明を構成する各要素は、複数の要素を同一の部材で構成して一の部材で複数の要素を兼用する態様としてもよいし、逆に一の部材の機能を複数の部材で分担して実現することもできる。
【0026】
図1に、プログラマブルロジックコントローラシステムの概要図を示す。この図に示すプログラマブルロジックコントローラシステム1000は、ラインを流れる対象物WKをカメラ部98で撮像して検査するシステムを例示している。このプログラマブルロジックコントローラシステム1000は、PC2と接続されて、プロジェクトデータ編集プログラムを編集する。
【0027】
プログラマブルロジックコントローラ1は、複数のユニットを接続して構成される。複数のユニット間は、ユニット間バス90を介して通信可能に接続されている。ユニットは、CPUユニット3と拡張ユニット4に大別される。CPUユニット3はメインユニットや基本ユニットとも呼ばれ、プログラマブルロジックコントローラの基本動作を行う。また拡張ユニット4は、CPUユニット3の機能を拡張する機能拡張ユニットである。
図1の例では、拡張ユニット4はカメラ入力拡張ユニット4cと、モーションユニット4dと、通信ユニット4eを含む。拡張ユニット4の一種であるカメラ入力拡張ユニット4cは、カメラ部98と接続されて、対象物WKを所定のタイミングで撮像して、CPUユニットに送出する。モーションユニット4dは、位置決めユニットとも呼ばれ、軸とよばれる制御対象の位置を制御する。一般に軸ごとにモータ等の駆動源が存在する。通信ユニット4eは、外部機器と通信を行う。またCPUユニット3は、これら拡張ユニット4からのデータを収集して、必要な制御を行う。
<システム構成>
【0028】
ここで、プログラマブルロジックコントローラ(以下「PLC」とも呼ぶ。)を当業者にとってよりよく理解できるようにするために、一般的なPLCの構成とその動作について説明する。
【0029】
図2は、本発明の実施の形態によるプログラマブルロジックコントローラシステムの一構成例を示す概念図である。
図2が示すように、このシステムは、ラダープログラム等のユーザープログラムの編集を行うためのPC2と、工場等に設置される各種制御装置を統括的に制御するためのPLC1とを備えている。PCはパーソナルコンピュータの略称である。ユーザープログラムは、ラダー言語やSFC(シーケンシャルファンクションチャート)等のフローチャート形式のモーションプログラム等のグラフィカルプログラミング言語を用いて作成されてもよいし、C言語等の高級プログラミング言語を用いて作成されてもよい。以下では、説明の便宜上、ユーザープログラムはラダープログラムとする。PLC1は、CPUが内蔵されたCPUユニット3と、1つないし複数の拡張ユニット4を備えている。CPUユニット3に対して1つないし複数の拡張ユニット4が着脱可能となっている。例えば、拡張ユニット4aはモータ(フィールドデバイス10a)を駆動してワークの位置決めする位置決めユニットであり、拡張ユニット4bはカウンタユニットであってもよい。カウンタユニットは手動パルサ等のエンコーダ(フィールドデバイス10b)からの信号をカウントする。なお、参照符号の末尾に付与されているa、b、c・・・の文字は省略されることがある。なお、PLC1とPC2とを含むシステムはプログラマブルロジックコントローラシステムと呼ばれてもよい。
【0030】
CPUユニット3には、PLC側表示部5及びPLC側操作部6が備えられている。PLC側表示部5は、CPUユニット3に取り付けられている各拡張ユニット4の動作状況等を表示することができる。PLC側操作部6の操作内容に応じてPLC側表示部5は表示内容を切り替える。またPLC側操作部6は、CPUユニット3と一体に組み込まれたボタン等とする他、、外付けのコンソールやマウスやキーボード等の入力装置としてもよい。あるいは、PLC側表示部5をタッチパネルとして操作部の機能を兼用させることもできる。
【0031】
PLC側表示部5は、通常、PLC1内のデバイスの現在値(デバイス値)やPLC1内で生じたエラー情報等を表示する。デバイスとは、デバイス値(デバイスデータ)を格納するために設けられたメモリ上の領域を指す名称であり、デバイスメモリと呼ばれてもよい。デバイス値とは、入力機器からの入力状態、出力機器への出力状態及びユーザープログラム上で設定される内部リレー(補助リレー)、タイマ、カウンタ、データメモリ等の状態を示す情報である。デバイス値の型にはビット型とワード型がある。ビットデバイスは1ビットのデバイス値を記憶する。ワードデバイスは1ワードのデバイス値を記憶する。
【0032】
拡張ユニット4は、PLC1の機能を拡張するために用意されている。各拡張ユニット4には、その拡張ユニット4の機能に対応するフィールドデバイス(被制御装置)10が接続され、これにより、各フィールドデバイス10が拡張ユニット4を介してCPUユニット3に接続される。フィールドデバイス10は、センサやカメラ部等の入力機器であってもよいし、アクチュエータ等の出力機器であってもよい。また、一つの拡張ユニット4に対して複数のフィールドデバイスが接続されてもよい。
(プログラマブルロジックコントローラ用エンジニアリングツール)
【0033】
PC2は、プログラマブルロジックコントローラ用エンジニアリングツール(以下「PLC用エンジニアリングツール」ともいう。)を実現する。PLC用エンジニアリングツールとは、PLC1と接続して、その設定や、運用時の制御や動作確認等を行うための部材である。また、PLC1やこれを含めたプログラマブルロジックコントローラシステムを動作させる各種プログラムの作成や、作成済みのプログラムの編集、修正を行うこともできる。この意味ではプログラム作成支援装置と呼ばれてもよい。さらにPLC用エンジニアリングツールは、過去のプログラマブルロジックコントローラシステムの動作を記録した運転記録データに基づいて、その当時の各デバイスの動作状況を再現することもできる。運転記録データは、ラダープログラム等のユーザープログラムや、各ユニットのユニット構成情報などの設定データを含むプロジェクトデータ、及び運転当時の各デバイスのデバイス値やカメラ部の画像データ等の運用データであるログデータを含んでいる。このPLC用エンジニアリングツールは運転記録データの内、プロジェクトデータを読み込んで編集することも可能である。この意味でPLC用エンジニアリングツールは、プロジェクトデータ編集プログラムと呼ばれてもよい。
【0034】
PC2は、例えば携帯可能なノートタイプやタブレットタイプのパーソナルコンピュータであって、表示部7及びPC側操作部8を備えている。PLC1を制御するためのユーザープログラムの一例であるラダープログラムは、PC2を用いて作成される。その作成されたラダープログラムは、PC2内でニモニックコードに変換される。PC2は、USB(Universal Serial Bus)等の通信ケーブル9を介してPLC1のCPUユニット3に接続され、ニモニックコードに変換されたラダープログラムをCPUユニット3に送る。CPUユニット3はラダープログラムをマシンコードに変換し、CPUユニット3に備えられたメモリ内に記憶する。なお、ここではニモニックコードがCPUユニット3に送信されているが、本発明はこれに限られない。例えば、PC2は、ニモニックコードを中間コードに変換し、中間コードをCPUユニット3に送信してもよい。
【0035】
なお、
図2は示していないが、PC2のPC側操作部8には、PC2に接続されたマウス等のポインティングデバイスが含まれていてもよい。またPC2は、USB以外の他の通信ケーブル9を介して、PLC1のCPUユニット3に対して着脱可能に接続されるような構成であってもよい。また、通信ケーブル9を介さず、PLC1のCPUユニット3に対して無線によって接続されるような構成であってもよい。
<ラダープログラム>
【0036】
図3は、ラダープログラムの作成時にPC2の表示部7に表示されるラダー
図Ldの一例を示す図である。PC2は、マトリックス状に配置された複数のセルを表示部7に表示する。各セルには、仮想デバイスのシンボルが配置される。シンボルは、入力リレーや出力リレー等を示している。このような複数のシンボルによってリレー回路が形成される。ラダー
図Ldには、例えば10列×N行(Nは任意の自然数)のセルが配置されている。そして各行のセル内には、仮想デバイスのシンボルが適宜配置される。
【0037】
図3が示すリレー回路は、入力装置からの入力信号に基づいてON/OFFされる3つの仮想デバイス(以下、「入力デバイス」と呼ぶ。)のシンボルと、出力装置の動作を制御するためにON/OFFされる仮想デバイス(以下、「出力デバイス」と呼ぶ。)のシンボルと、が適宜結合されることにより構成されている。
【0038】
各入力デバイスのシンボルの上方に表示されている文字(「R0001」、「R0002」及び「R0003」)は、その入力デバイスのデバイス名(アドレス名)を表している。各入力デバイスのシンボルの下方に表示されている文字(「フラグ1」、「フラグ2」及び「フラグ3」)は、その入力デバイスに対応付けられたデバイスコメントを表している。出力デバイスのシンボルの上方に表示されている文字(「原点復帰」)は、その出力デバイスの機能を表す文字列からなるラベルである。
【0039】
図3が示す例では、デバイス名「R0001」及び「R0002」にそれぞれ対応する2つの入力デバイスのシンボルが直列的に結合されることにより、AND回路が構成されている。また、これらの2つの入力デバイスのシンボルからなるAND回路に対して、デバイス名「R0003」に対応する入力デバイスのシンボルが並列的に結合されることにより、OR回路が構成されている。すなわち、このリレー回路では、一行目の2つのシンボルに対応する入力デバイスがいずれもONした場合、又は二行目のシンボルに対応する入力デバイスがONした場合にのみ、一行目のシンボルに対応する出力デバイスがONになる。
<プログラム作成支援装置>
【0040】
図4は、PC2の電気的構成について説明するためのブロック図である。
図4が示すように、PC2は、PC側メモリ部11、PC側CPU21、表示部7、PC側操作部8、PC側記憶装置22及びPC側通信部23を備えている。表示部7、PC側操作部8、PC側記憶装置22及びPC側通信部23は、それぞれPC側CPU21に対して電気的に接続されている。
【0041】
PC側メモリ部11は、PC側CPU21が処理を実行するための作業空間となる作業メモリであり、典型的にはRAM等で構成される。運転記録データは、プロジェクトデータを含んでいる。
【0042】
PC側記憶装置22はハードディスクや半導体メモリ、ROM等を含み、さらに着脱可能なメモリカードを含んでもよい。CPUは中央演算処理装置の略称である。ROMはリードオンリーメモリの略称である。RAMはランダムアクセスメモリの略称である。
【0043】
ユーザは、PC側記憶装置22に記憶されているコンピュータプログラムである編集ソフトウエアをPC側CPU21に実行させて、PC側操作部8を通じてプロジェクトデータを編集する。この編集ソフトウエアは、プロジェクトデータ編集プログラムにあたる。
(プロジェクトデータ)
【0044】
プロジェクトデータは、一つ以上のユーザープログラム(例えばラダープログラム)と、CPUユニット3や拡張ユニット4のユニット構成情報等を含む。またプロジェクトデータは、ユーザープログラムがどのようなプログラム部品から構成されているかを示すプログラム構成情報を含めてもよい。さらにユニット構成情報は、CPUユニット3に対する複数の拡張ユニット4の接続位置や、CPUユニット3に備えられた機能(例えば通信機能や位置決め機能)を示す情報、拡張ユニット4の機能(例えば撮影機能)等を示す情報である。
【0045】
ここで、プロジェクトデータの編集には、プロジェクトデータの作成及び変更が含まれる。プロジェクトデータ編集プログラムを用いて作成されたプロジェクトデータは、PC側記憶装置22に記憶される。またユーザは、必要に応じてPC側記憶装置22に記憶されているプロジェクトデータを読み出し、そのプロジェクトデータを、プロジェクトデータ編集プログラムを用いて変更することができる。PC側通信部23は、通信ケーブル9を介してPC2をCPUユニット3に通信可能に接続するためのものである。PC側CPU21はPC側通信部23を介してプロジェクトデータをCPUユニット3に転送する。
【0046】
プロジェクトデータ編集プログラムは、編集モードとモニタモードと履歴再生モードを備える。編集モードはエディットモード等とも呼ばれ、プロジェクトデータを編集することができる。またモニタモードはユーザープログラムのデバッグ等を行うためのシミュレーション動作を行うことができる。さらに履歴再生モードはリプレイモードやタイムマシン再生等とも呼ばれ、再生表示を行うことができる。これらの編集モード、モニタモード、履歴再生モードの切り替えは、モード選択部で行われる。
<PLC1>
【0047】
図5はPLC1の電気的構成について説明するためのブロック図である。この図に示すように、CPUユニット3は、PLC側CPU31、PLC側表示部5、PLC側操作部6、PLC側記憶装置32及びPLC側通信部33を備えている。PLC側表示部5、PLC側操作部6、PLC側記憶装置32及びPLC側通信部33は、それぞれPLC側CPU31に電気的に接続されている。
(PLC側記憶装置32)
【0048】
PLC側記憶装置32は、プロジェクト記憶部35、デバイス部34、一時記録部91a、保存メモリ36を備えている。
【0049】
プロジェクト記憶部35は、PC2から入力されたプロジェクトデータを記憶する。またPLC側記憶装置32はCPUユニット3用の制御プログラムも記憶する。
【0050】
デバイス部34はビットデバイスやワードデバイス等を有し、各デバイスはデバイス値を記憶する。このデバイス部34は、複数のデバイスの各デバイス値を記憶するデバイスメモリとして機能する。またユーザープログラムに従い参照される記憶領域として機能させてもよい。
【0051】
一時記録部91aは、デバイス部34に記憶されているデバイス値を時系列に記録する。この一時記録部91aは、リングバッファ等で構成できる。
【0052】
保存メモリ36は、一時記録部91aに時系列に記録されたデバイス値を保存する。保存メモリ36は、不揮発性メモリとして、内部メモリ37や着脱可能なメモリカード36A等で構成される。
【0053】
このようにPLC側記憶装置32は複数の記憶領域を有している。このPLC側記憶装置32はRAMやROM、メモリカード等を含んでもよい。例えば
図5の例では、保存メモリ36は着脱可能なメモリカード36Aで構成されている。
(PLC側CPU31)
【0054】
PLC側CPU31は、プログラム実行部514と、保存条件設定部45と、記録制御部39と、保存制御部50Cを備えている。プログラム実行部514は、ユーザープログラムを繰り返し実行するラダー実行エンジン80aとして機能する。ユーザープログラムに従い、プログラム実行部514により参照される記憶領域であるデバイス部34は、複数のデバイスの各デバイス値を記憶している。
【0055】
保存条件設定部45は、各種の条件を設定するための部材である。ここでは保存条件設定部45は、一時記録部91aに記録するための記録トリガについての第1トリガ条件と、保存メモリ36に保存するための保存トリガについての第2トリガ条件と、記録トリガが示す時点を基準時とし、この基準時までの期間及び該基準時からの期間の少なくとも一方を含む期間であって、一時記録部91aに一時的な記録を行う期間を示すバッファ記録期間を設定する。
【0056】
保存条件設定部45で、第1トリガ条件として、一時記録部91aへの記録を開始するための記録開始トリガについての条件を設定することができる。またバッファ記録期間として、この記録開始トリガが示す基準時からの期間を設定することができる。
【0057】
記録制御部39は、記録トリガについての第1トリガ条件が成立すると、この記録トリガが示す時点を基準時とするバッファ記録期間に対応した時系列のデバイス値をログデータとして一時記録部91aに記録する。また記録制御部39は、保存トリガについての第2トリガ条件が成立する時点、又は次に記録トリガについての第1トリガ条件が成立する時点の、いずれか早い時点までの間、記録した該ログデータを一時記録部91aに保持させる。そして、次に記録トリガについての第1トリガ条件が成立すると、次に該記録トリガが示す時点を基準時とするバッファ記録期間に対応した時系列のデバイス値をログデータとして、一時記録部91aに記録する。
【0058】
保存制御部50Cは、保存トリガについての第2トリガ条件が成立すると、記録制御部39により一時記録部91aに保持されたログデータを保存メモリ36に保存する。ここで保存制御部50Cは、保存トリガについての第2トリガ条件が成立すると、記録制御部39により一時記録部91aに保持され、保存トリガからみて直前の記録トリガに対応するログデータを、保存メモリに保存することが好ましい。このように保存制御部50Cは、バッファ記録期間を経過した後も、バッファ記録期間中に記録したログデータを保持しておき、保存トリガが起動すると、記録トリガに対応付けて保持されたログデータを保存する。ただ記録制御部39が保存するログデータは、直近の記録トリガに対応するログデータに限らず、2個前の記録トリガや、3回前の記録トリガとしてもよい。
【0059】
図5が示すように、CPUユニット3と拡張ユニット4とは拡張バスの一種であるユニット間バス90を介して接続されている。なお、ユニット間バス90に関する通信機能は、PLC側通信部33の一部として実装されてもよい。またPLC側通信部33は、ネットワーク通信回路を有してもよい。PLC側CPU31は、PLC側通信部33を介してログデータ等をPC2やクラウド等に送信してもよい。
【0060】
ここで、ユニット間バス90について、補足説明する。このユニット間バス90は、次に説明する入出力リフレッシュ等が行われるバスである。ユニット間バス90における通信制御は、いわゆるバスマスタ38によって実現される(なお、PLC側通信部33の一部としてバスマスタを設けてもよいし、PLC側CPU31の一部としてバスマスタ38を設けてもよい)。バスマスタ38は、ユニット間バス90での通信を制御するための制御回路であって、PLC側CPU31からの通信要求を受けて、拡張ユニット4との間で、後述する入出力リフレッシュ等の通信を行う。
【0061】
拡張ユニット4はCPU41とメモリ42を備えている。CPU41は、デバイスに格納されたCPUユニット3からの指示(デバイス値)に従って、フィールドデバイス10を制御する。またCPU41は、フィールドデバイス10の制御結果をバッファメモリとよばれるデバイスに格納する。デバイスに格納された制御結果は入出力リフレッシュによってCPUユニット3に転送される。またデバイスに格納されている制御結果は、CPUユニット3からの読み出し命令に従って、入出力リフレッシュとは異なるタイミングであっても、CPUユニット3に転送される。メモリ42はRAMやROM等を含む。とりわけ、RAMにはバッファメモリとして使用される記憶領域が確保されている。またメモリ42は、フィールドデバイス10によって取得されたデータ(例:静止画データや動画データ)を一時的に保持するバッファを有してもよい。
【0062】
図6はCPUユニット3のスキャンタイムを示す模式図である。
図6が示すように1つのスキャンタイムTは、入出力のリフレッシュを行うためのユニット間通信201、プログラム実行202、END処理204により構成されている。ユニット間通信201で、CPUユニット3は、ラダープログラムを実行して得られた出力データをCPUユニット3内のPLC側記憶装置32から拡張ユニット4等の外部機器に送信する。さらにCPUユニット3は、拡張ユニット4等の外部機器から受信した入力データをCPUユニット3内のPLC側記憶装置32に取り込む。つまり、CPUユニット3のデバイスに記憶されているデバイス値は出力リフレッシュによって拡張ユニット4のデバイスに反映される。同様に、拡張ユニット4のデバイスに記憶されているデバイス値は、入力リフレッシュによってCPUユニット3のデバイスに反映される。このように入出力リフレッシュによって、CPUユニット3のデバイスと拡張ユニット4のデバイスが同期する。
【0063】
なお、リフレッシュ以外のタイミングでデバイス値をユニット間で更新する仕組み(ユニット間同期)が採用されてもよい。ただ、CPUユニット3のデバイスは、CPUユニット3が随時書き換えており、同様に拡張ユニット4のデバイスは拡張ユニット4が随時書き換えている。つまり、CPUユニット3のデバイスは、CPUユニット3の内部の装置によって随時アクセス可能である。同様に、拡張ユニット4のデバイスは拡張ユニット4の内部の装置によって随時アクセス可能になっている。CPUユニット3と拡張ユニット4との間では、基本的にリフレッシュのタイミングにおいて相互にデバイス値を更新して同期する。プログラム実行202で、CPUユニット3は、更新された入力データを用いてプログラムを実行(演算)する。
図6が示すように、プログラム実行202においては複数のプログラムモジュール又はラダープログラムがプロジェクトデータに従って順番に実行されてもよい。CPUユニット3はプログラムの実行によりデータを演算処理する。なお、END処理とは、PC2やCPUユニット3に接続された表示器(図示せず)等の外部機器とのデータ通信、システムのエラーチェック等の周辺サービスに関する処理全般を意味する。
【0064】
このように、PC2はユーザの操作に応じたラダープログラムを作成し、作成したラダープログラムをPLC1に転送する。PLC1は、入出力リフレッシュ、ラダープログラムの実行及びEND処理を1サイクル(1スキャン)として、このサイクルを周期的、すなわちサイクリックに繰り返し実行する。これにより、各種の入力機器(センサ等)からのタイミング信号に基づいて、各種の出力機器(モータ等)を制御する。なお、スキャン周期とは別に、CPUユニット3や拡張ユニット4はそれぞれ内部制御周期を有している。CPUユニット3や拡張ユニット4は内部制御周期を基準としてフィールドデバイス10等の機能を制御する。
<ロギング>
【0065】
ユーザがユーザープログラムを改良したり、修正したりする際に、PLC1がユーザープログラムを実行している際に取得されたデバイス値が役に立つことがある。そこで、PLC1は予め指定されたデバイス値を取得し、ログデータを作成する。ここで、PLC1が管理するデバイスには、ユーザープログラムによって利用されるものだけでなく、ユーザープログラムによって利用されないものも存在する。また、ユーザープログラムを改良したり、修正したりする際に役立つデバイスもあれば、役に立たないデバイスもある。一般にデバイスの数は数千個に及ぶため、ユーザが必要なデバイスを指定することは大きな負担となっていた。そこで、PC2は、ユーザープログラムを解析し、ユーザープログラムに使用又は記述されているデバイスをロギング対象として抽出する。これにより、ユーザの負担が軽減される。
【0066】
PLC1が管理するすべてのデバイスをロギングの対象とすると、スキャンタイムが長くなってしまう。なぜなら、ロギングは、ユーザープログラムの一つとして実行されたり、入出力リフレッシュの際に実行されたりするからである。時には、ロギングのもたらす遅延によって、ユーザープログラムがユーザの希望通りに動作しないこともありうる。したがって、ロギング対象のデバイスの数は適切に維持されるべきであろう。
【0067】
ユーザープログラムは、複数のプログラム部品(例えばプログラムモジュール(メインのラダープログラムとサブのラダープログラム)、ファンクションブロック)から構成されることがある。この内、ユーザが修正を希望するプログラム部品に関連したデバイスがロギングされれば、ユーザにとって十分な場合がある。また、複数のプログラム部品の内で、ユーザは特定のプログラム部品を抽出対象から除外したり、特定のプログラム部品を抽出対象に追加したりすることを希望することもあろう。よって、プログラム部品を単位として、ロギング対象からデバイスを追加又は削除できればユーザにとって便利であろう。
【0068】
ここで、CPUユニット3のPLC側CPU31の詳細な機能ブロック図を
図31に示す。上述した部材と同じ部材には同一の参照符号を付し、詳細説明を省略する。PLC側CPU31は、PC2から受信したプロジェクトデータ71とログ設定データ72を、PLC側記憶装置32に記憶しているものとする。PLC側記憶装置32のデバイス部34は、CPUユニットデバイス部34aと拡張ユニットデバイス部34bを備える。
【0069】
図31に示すPLC側CPU31は、実行部80と、検知部82と、記録部81と、時刻管理部83aと、出力部84を備える。検知部82は、例えばデバイス部34に含まれているいずれかのデバイスに対する外部機器からのデバイス値の書き換えを検知する。出力部84は、ユーザープログラムの実行が終了したとき、或いはメモリカードへの保存トリガリレーがONした場合等、所定の出力条件が満たされると、プロジェクトデータ71、ログデータ73、画像データをメモリカード36Aや内部メモリ37に書き込む。所定の出力条件が満たされるまでは、ログデータ73がメモリ(例えばリングバッファ)に記録されていき、容量が一杯になると、一番古いログデータ73が消去され、新しいログデータ73が追加記録されていく(いわゆるFIFO形式で記録する)。このメモリカード36AはCPUユニット3から取り外されて、PC2の装着部に装着される。これにより、PC2の表示部7にログデータ73が表示されるようになる。なお、出力部84は、PLC側通信部33を介してPC2やクラウド等にログデータ73を送信してもよい。
【0070】
またPLC側CPU31の実行部80は、ユーザープログラムを繰り返し実行するラダー実行エンジン80aと、このラダー実行エンジン80aを制御したり、拡張ユニット4との入出力リフレッシュを実行したりするユニット制御部80bとを有している。実行部80のラダー実行エンジン80aは、プロジェクトデータ71に含まれるユーザープログラムを繰り返し実行し、ユーザープログラムに従って拡張ユニット4を制御する。なお、実行部80のラダー実行エンジン80aは、ユーザープログラムに従って、デバイス部34のCPUユニットデバイス部34aに保持されている出力系のデバイスにデバイス値を書き込んだり、CPUユニットデバイス部34aに保持されている入力系のデバイスからデバイス値を読み込んだりする。
【0071】
さらにPLC側CPU31は、記録部81が収集部92aを有している。収集部92aは、所定の収集開始条件が満たされると、デバイス部34に保持されているデバイス値の内、ログ設定データ72により指定されたデバイス値をデバイス部から読み出すと共に、時刻管理部83aから時刻情報を取得する。収集部92aはデバイス値と時刻情報とを関連付けて一時記録部91aに格納する。なお収集部92aは、ログ設定データ72により指定された収集周期(例:スキャン周期)毎にデバイス値と時刻情報とを取得して一時記録部91aに格納する。一時記録部91aには、リングバッファが好適に採用される。リングバッファが採用されている理由は、リングバッファに記憶されているすべてのデータがログデータ73としてメモリカード36Aに保存されるわけではないからである。例えば保存部93は、所定の保存条件が満たされたときに、リングバッファの一時記録部91aからデバイス値と時刻情報とを読み出し、ログデータ73を作成してメモリカード36Aに保存してもよい。同様に保存部93は、所定の保存条件が満たされたときに、拡張ユニット4から大容量データと時刻情報とを読み出し、ログデータ73を作成してメモリカード36Aに保存してもよい。保存部93は、上述したデバイス値及び時刻情報と、上述した大容量データ及び時刻情報とを、対応付けて保存する。ここで、「対応付けて」保存とは、PC2にて再生しやすい形で保存されていればよく、例えば複数のファイルを対応付けたファイル管理がなされていてもよい。具体的に説明すると、メモリカード36Aにおいて、特定のフォルダの下に、デバイス値及び時刻情報が格納された第1サブフォルダと、大容量データ及び時刻情報が格納された第2サブフォルダとが置かれている場合には、特定のフォルダまでのパス(ディレクトリパス)が共通フラグとなり、この共通フラグを使って、第1サブフォルダ内のファイルと第2サブフォルダ内のファイルを「対応付けて」保存することが可能になる。また、上述した特定のフォルダと同じレベル(ディレクトリ)に置かれた別フォルダがある場合、その別フォルダは、他のタイミングで保存されたデータパッケージを意味する。もちろん、この別フォルダの下にも上述同様のサブフォルダが置かれている。このように、保存部93は、上述したデバイス値及び時刻情報と、上述したデータ(大容量データ)及び時刻情報とを、共通フラグ(所定のディレクトリパス)により識別される複数のファイルに格納し、それら複数のファイルを保存してもよい。その他、例えば、共通フラグとしてファイル名を採用し、同一又は対応するファイル名をもつファイルを生成することで、「対応付けて」保存することも可能である。他にも例えば、時刻情報をキーとして、デバイス値とデータ(大容量データ)を対応付けてリスト化し、これを1つのファイルに纏めることによっても、「対応付けて」保存することが可能である。なお本実施形態では、監視機器からのデータの一例として大容量データを考えたが、他にも例えば、モーションデータや通信データ、音声データ等の連続データであってもよいことは言うまでもない。送信部94は、PC2やクラウド等にログデータ73を送信してもよい。リングバッファの一時記録部91aが満杯になると、収集部92aは、リングバッファに保持されている最も古い情報に対して、最も新しい情報を上書きする。ここでは一時記録部91aに、バッファの一例としてリングバッファが採用されているが、これは一例にすぎない。バッファとしては、FIFO形式のバッファが採用されれば十分であろう。
【0072】
上述したようにCPUユニット3や拡張ユニット4は一つ以上の機能を有している。各機能には様々なデバイスが割り付けられている。よって、これらの機能を単位として、ロギング対象からデバイスを追加又は削除できれば、ユーザにとって便利であろう。例えば、CPUユニット3の通信機能に関する望ましくないイベントが発生した場合、ユーザはCPUユニット3の通信機能に関するデバイスのデバイス値を参照することで、このイベントを解消することが容易になろう。
(カメラ入力拡張ユニット4c)
【0073】
図7はカメラ入力機能を有した拡張ユニット4であるカメラ入力拡張ユニット4cのCPU41の機能を説明する図である。時刻管理部83bの時計は、
図31に示したCPUユニット3の時刻管理部83aの時計と同期している。例えば、CPUユニット3の時刻管理部83aは、END処理の際に時刻情報を時刻管理部83bに送信する。時刻管理部83bは、受信した時刻情報に基づき、時刻管理部83bの時計をCPUユニット3の時刻管理部83aの時計に同期させる。時計は、時刻情報に基づき時間をカウントするカウンタにより実現されてもよい。収集部92bは、所定の収集条件(例:所定のリレーデバイスがONになったこと)が満たされると、例えば周期的にトリガー信号を出力する。時刻管理部83bはトリガー信号が入力されたときの時刻情報を時計から取得し、時刻情報バッファ95に格納する。メモリ42は時刻情報バッファ95と一時記録部91aを有している。接続ポート97はカメラ部98を拡張ユニット4に接続するためのインタフェースである。接続ポート97は、収集部92bにより発行されたトリガー信号をカメラ部98に周期的に出力したり、カメラ部98が出力する画像データを画像受信部96aに出力したりする。画像データは大容量データの一例である。接続ポート97は、カメラ部98等の監視機器と接続され、その監視機器からデータ(画像データ)が入力される第二の外部インタフェースの一例である。画像受信部96aは、接続ポート97を介してカメラ部98からの画像データの入力を伴う撮像機能を実行する機能実行部96の全部又は一部となる。本実施形態では、機能実行部96(画像受信部96a)は、露光時間、ゲイン、ホワイトバランス、コントラスト等の撮像パラメータ(設定情報の一例)に基づいて、カメラ部98の制御を実行する。このような撮像パラメータは、PC2において、所望のパラメータ値が設定され、
図5に示すCPUユニット3のPLC側通信部33及びPLC側CPU31を介して、機能実行部96に送られる。そのため、
図5に示すPLC側通信部33は、PC2や表示器等の外部設定機器から設定情報を受け付ける第一の外部インタフェースの一例である。なお、第一の外部インタフェースとしてのPLC側通信部33は、上述したようにPC2にて作成されたユーザープログラムも受け付ける。カメラ部98は、トリガー信号に従って撮像を実行し、画像データを出力する。画像受信部96aは、画像データを収集部92bに転送する。収集部92bは、時刻情報バッファ95に保持されている時刻情報と、画像受信部96aから出力された画像データとを関連付けてリングバッファ91bに格納する。リングバッファ91bが満杯になると、収集部92bは、リングバッファ91bに保持されている最も古い情報に対して、最も新しい情報を上書きする。なお、本実施形態では、収集部92bが自動的かつ周期的に撮像トリガー信号をカメラ部98に出力することとしたが、本発明はこれに限られず、収集部92bは、例えばユーザープログラムからの指令に基づいて撮像トリガー信号をカメラ部98に出力してもよい。
【0074】
ところで、CPUユニット3は毎スキャンごとに実行するリフレッシュ通信と、いつでも実行可能なダイレクト通信と、イベント的にベストエフォートで実行されるメッセージ通信とのいずれかを用いて拡張ユニット4と通信する。保存部は、例えば、ダイレクト通信を使用して拡張ユニット4のリングバッファ91bから画像データと時刻情報とを読み出して、ログデータ73に追記する。なお、ダイレクト通信として、優先度つきの複数のダイレクト通信が実装されてもよい。この場合、ユーザープログラムに関連して実行されるダイレクト通信の優先度は相対的に高く設定され、ロギングのためのダイレクト通信の優先度は相対的に低く設定されてもよい。これにより、ロギングがユーザープログラムの実行に与える影響を小さくすることが可能となる。
【0075】
カメラ入力拡張ユニット4cを含むプログラマブルロジックコントローラシステムの機能ブロック図を、
図8に示す。この図に示すプログラマブルロジックコントローラシステムは、CPUユニットとカメラ入力拡張ユニット4cと拡張ユニット4でPLC1を構成している。CPUユニットとカメラ入力拡張ユニット4cと拡張ユニット4とは、ユニット間バス90を介して接続されている。またCPUユニットには、通信線CLを介してPC2を接続している。さらにカメラ入力拡張ユニット4cには、
図10の撮像トリガライン501を介してカメラ部98が接続されている。カメラ部98は、カメラ設定記録部575を備える。一方CPUユニットは、デバイス部を備える。カメラ設定記録部575には、カメラ部98の設定情報が記録される。
【0076】
従来より、
図9に示すように通信ネットワークNTを介してPLC1にビデオカメラVCを間接的に接続し、カメラ画像により生産設備を監視するシステムが知られていた。このような設備では、設備トラブルが発生した際、トラブル発生前後のカメラ画像を解析しトラブルの原因究明が行われる。しかしながら、PLC1のデバイス値が取得された時刻と、カメラ画像が取得された時刻との間に時間ズレがあると、トラブルの原因究明に手間がかかる。そのため、これらの時刻の誤差は極力小さい方が望ましい。しかしながら、この技術では通信遅延の影響により、両方の時刻を同期させることは容易ではなかった。
【0077】
これに対して、
図8のカメラ入力拡張ユニット4cは、基本ユニットであるCPUユニット3とユニット間バス90で接続されている。カメラ入力拡張ユニット4cにカメラ部98を接続する撮像インターフェース500には、
図10の撮像トリガライン501と画像通信ライン502が接続されている。カメラ部98に対して撮像トリガを規定するON/OFF信号を、撮像トリガライン501を介して送信することで、ユニット間バス90における同期タイミングをカメラ部98にまで拡張し、ひいてはデバイス値の記録時刻とカメラ画像データの取得時刻とを、精度よく同期させることができる。
(カメラ入力拡張ユニット4c)
【0078】
カメラ入力拡張ユニット4cは、CPUユニットとユニット間バス90を介して電気的に接続される。このカメラ入力拡張ユニット4cは、プログラマブルロジックコントローラからの撮像トリガに応じて所定領域を撮像し、撮像した該所定領域に対応する画像データを生成するカメラ部98を接続するためのユニットである。
図8に示すカメラ入力拡張ユニット4cは、撮像インターフェース500と、カメラ設定情報記憶部530と、カメラ拡張ユニット処理部510と、画像記録部520とを備える。
【0079】
カメラ設定情報記憶部530は、撮像トリガの条件を含むカメラ部98の設定情報を記憶する。カメラ設定情報記憶部530に記憶されるカメラ部98の設定情報は、プログラム作成支援装置により作成され、CPUユニット3を介して受信された設定情報を含む。なおCPUユニット3により実行されるユーザープログラムは、CPUユニット3に接続されるプログラム作成支援装置によって作成される。
【0080】
カメラ拡張ユニット処理部510は、カメラ設定情報記憶部530に記憶されたカメラ部98の設定情報に基づいて、撮像トリガを規定するON/OFF信号を生成し、このON/OFF信号を撮像トリガとしてカメラ部98で生成された画像データを処理する。
【0081】
画像記録部520は、カメラ拡張ユニット処理部510で取得された画像データを記録する。また画像記録部520は、カメラ拡張ユニット処理部510で取得された画像データを、この画像データが取得された時刻に関する情報と関連付けて時系列に記録する。さらに画像記録部520は、CPUユニット3からの指示に応じて、画像データ及び時刻に関する情報をCPUユニット3に送信する。
【0082】
撮像インターフェース500は、カメラ拡張ユニット処理部510とカメラ部98との間に設けられる。この撮像インターフェース500は、撮像トリガライン501と、画像通信ライン502を含む。
【0083】
撮像トリガライン501は、カメラ拡張ユニット処理部510で生成され、カメラ部98に撮像を実行させる撮像トリガを規定するON/OFF信号をカメラ部98に送るためのインターフェースである。この撮像トリガライン501は、非通信ラインであることが好ましい。これにより、通信でなくON/OFFのI/Oで撮像トリガを指示できるため、通信による撮像コマンドの送信と比べて極めて高速な撮像トリガの指示が実現される。
【0084】
撮像インターフェース500とカメラ部98とを接続するカメラ接続ケーブル550は、画像通信ライン502と、撮像トリガライン501とを束ねている。これにより、カメラ入力拡張ユニット4cとカメラ部98とを、撮像インターフェース500を接続するのみで、カメラ部98を動作させるすべての電気信号のやりとりを実現でき、配線をシンプルとして構成の簡素化が図られる。
【0085】
カメラ設定情報記憶部530は、CPUユニット3からユニット間バス90を介して受信した、カメラ部98の設定情報を記憶している。カメラ部の設定情報は、例えば撮像時のフレームレート、画質、回転、露出、ゲイン、露光時間、ホワイトバランス、コントラスト、ガンマ、シャープネス、アンチフリッカーなど、後述する
図22のGUIに示す各種情報が挙げられる。カメラ拡張ユニット処理部510は、ユニット間バス90を介してCPUユニット3や拡張ユニット4と接続されている。このカメラ拡張ユニット処理部510は、カメラ設定情報記憶部530に記憶されたカメラ部98の設定情報に基づいて、撮像インターフェース500を介してカメラ部98から画像データを取得する。画像記録部520は、カメラ部98で取得された画像データを収集し、この画像データが取得された時刻に関する情報とこの画像データとを関連付けて記録する。この構成により、カメラ部98で撮像した画像データに関するデバイス記録と高精度に時刻を同期させることが可能となる。特に撮像を指示する撮像トリガを通信線やコマンド解釈を介することなく、専用線の撮像トリガライン501でON/OFF信号として送出することで、時間遅れを避けた高精度な時刻の同期が実現できる。
(カメラ入力拡張ユニット4cの詳細ブロック図)
【0086】
カメラ部98を接続したカメラ入力拡張ユニット4cを備えるプログラマブルロジックコントローラシステムのより詳細なブロック図を、
図10に示す。この図に示すプログラマブルロジックコントローラシステムは、CPUユニット3と、カメラ入力拡張ユニット4cと、拡張ユニットで構成されるPLC1と、このPLC1に接続されるPC2と、表示器HMIと、外部電源部PSとを備えている。さらにカメラ入力拡張ユニット4cには、カメラ部98が接続されている。
【0087】
拡張ユニット4は、バスコネクタ560と、PLC側CPU31を備えている。バスコネクタ560はユニット間バス90を含んでおり、ユニット間バス90を通じてCPUユニット3とバス間通信を行い、PLC側CPU31で拡張ユニット4の機能に応じた処理を行う。
【0088】
PC2は、CPUユニット3に接続されて、各種の設定を行う設定装置として機能する。
【0089】
表示器HMI(Human Machine Interface)は、PLC1を介してカメラ部98で撮像した画像データや、収集したデバイス値、あるいは設定情報等を表示可能としている。表示器HMIには、プログラマブル表示器が好適に利用できる。
(カメラ部98)
【0090】
カメラ部98は、カメラ側撮像インターフェース500Bと、電力受給部573と、画像送信部572と、撮像トリガ入力部571と、カメラ処理部570と、撮像部574を備えている。カメラ部98のカメラ側撮像インターフェース500Bは、カメラ接続ケーブル550を介してカメラ入力拡張ユニット4cの撮像インターフェース500と接続されて、カメラ部98とカメラ入力拡張ユニット4cとの間の電気信号や画像データ、電力供給等のやりとりを行う。電力受給部573は、電力供給部524から電力供給ライン503を介して供給される電力を受け、カメラ部98を駆動する電力を各部に供給するカメラ部98の電源として機能する。撮像トリガ入力部571は、撮像トリガ発行部517から撮像トリガライン501を介して撮像トリガを受け、カメラ処理部570に送出する。カメラ処理部570は、撮像トリガに従い、撮像部574で画像の撮像を行う。撮像部574は、CMOSセンサやCCDセンサ等の撮像素子で構成される。撮像部574で撮像された画像データは、カメラ処理部570で受信し、画像送信部572に送出する。画像送信部572は、画像通信ライン502を通じて、カメラ入力拡張ユニット4cの画像受信部に対して画像データを送信する。
【0091】
外部電源部PSは、PLC1に対して電力を供給する。またカメラ部98へ供給する電力は、CPUユニット3から電力供給ライン503を通じて供給される。
図10の例では、カメラ入力拡張ユニット4cが有する電力供給部524から、カメラ部98に電力を供給している。
(カメラ入力拡張ユニット4c)
【0092】
カメラ入力拡張ユニット4cは、カメラ拡張ユニット処理部510と、カメラ設定情報記憶部530と、撮像インターフェース500と、電力供給部524と、画像記録部520と、時刻情報一次バッファ522と、バスコネクタ560を備えている。
【0093】
カメラ拡張ユニット処理部510は、バス送受信部511と、プロトコル解釈部512と、プロトコル実行部513と、プログラム実行部514と、画像処理部515と、画像受信部96aと、撮像トリガ発行部517と、収集部92bと、時刻管理部83bとを備えている。このカメラ拡張ユニット処理部510は、FPGAやSoC等で構成できる。
【0094】
バス送受信部511は、CPUユニット3や拡張ユニット4とプロトコルに従ってバス通信を行いコマンドを送受信する。プロトコル解釈部512は、バス送受信部511で受信されたコマンドを解釈する。プロトコル実行部513は、プロトコル解釈部512で解釈されたコマンドを実行する。例えば、CPUユニット3からカメラ入力拡張ユニット4cに対し、カメラ部98での撮像を開始するコマンドがユニット間バス90で送信されると、バス送受信部511でコマンドを受信し、プロトコル解釈部512でコマンドを解釈して、プロトコル実行部513が撮像トリガ発行部517に対して、カメラ撮像トリガを発行するよう指示する。例えば撮像トリガをラダープログラムに記述し、ラダープログラムによる撮像トリガ制御をカメラ部98のカメラ処理部570に対して行うことができる(詳細は後述)。
【0095】
撮像トリガ発行部517は、撮像トリガライン501を介して、カメラ部98に送るON/OFF信号を生成する。
【0096】
収集部92bは、ON/OFF信号を送出する時刻に関する情報を、カメラ部98で取得された画像データと関連付けて画像記録部520に記録する。
【0097】
カメラ入力拡張ユニット4cには、撮像トリガライン501を介してカメラ部98が接続されている。カメラ部98は、カメラ設定記録部575を備える。カメラ設定記録部575には、カメラ部98の設定情報が記録される。
【0098】
図10のカメラ入力拡張ユニット4cとカメラ部98とを接続する撮像インターフェース500、カメラ側撮像インターフェース500Bは、画像通信ライン502と、撮像トリガライン501に加えて、電力供給インターフェースを含む。電力供給インターフェースは、カメラ部98に対して電力を供給するためのインターフェースである。また撮像インターフェース500、500Bを介してカメラ入力拡張ユニット4cとカメラ部98とを接続するカメラ接続ケーブル550は、画像通信ライン502と撮像トリガライン501に加えて、電力供給インターフェースに接続される電力供給ライン503を束ねている。これにより、カメラ入力拡張ユニット4cとカメラ部98とを、撮像インターフェース500を接続するのみで、電源供給を含めたカメラ部98を動作させるすべての電気信号のやりとりを実現でき、配線をシンプルとして構成の簡素化が図られる。またカメラ接続ケーブル550は、グランドラインも含んでいる。グランドラインは、例えばカメラ入力拡張ユニット4cの筐体のシールドとコンデンサを介して接続される。
(CPUユニット3)
【0099】
図10に示すCPUユニット3は、バスコネクタ560と、時刻管理部83を含むPLC側CPU31と、デバイス部34と、実行部80を備えている。実行部80は、時刻管理部83の持つ時刻情報と共にデバイス値をデバイス部34に記録する。このように、時刻管理部83を用いて時刻同期を行うことができる。この時刻管理部83は、カウンタが利用できる。
【0100】
またCPUユニット3の時刻情報は、カメラ入力拡張ユニット4cやその他の拡張ユニットに伝えられ、各拡張ユニットの時刻補正にも使用される。
【0101】
なおプログラム実行部514は、ユーザープログラムを繰り返し実行するラダー実行エンジン80aである。またデバイス部34は、ユーザープログラムに従い、プログラム実行部により参照される記憶領域である複数のデバイスの各デバイス値を記憶するデバイス部やデバイスメモリとして機能する。
(撮像トリガ発行部517)
【0102】
撮像トリガ発行部517は、定期的(カメラ設定情報記憶部530に記録されたタイマに従う)又はプログラム実行部514によって決定されるタイミング(カメラ設定情報記憶部530に記録されたプログラムに従う)又はCPUユニット3からの指令によって撮像トリガを発生する。その際、時刻管理部83bからその時の時刻に関する情報を時刻情報一次バッファ522に記録する。カメラ部98は、撮像トリガを受信することで画像データを撮影し、カメラ入力拡張ユニット4cに送信する。カメラ入力拡張ユニット4cの画像受信部96aが画像データを受信すると、画像記録部520に時刻情報一次バッファ522の時刻情報と共に記録する。
【0103】
また撮像トリガをラダープログラムに記述し、ラダープログラムによって撮像トリガを制御することもできる。例えば撮像トリガ発行部517は、END処理にて発行するリフレッシュ通信、もしくは割り込みにてEND処理まで待たずに発行するダイレクト通信等に基づいて撮像トリガを発行する。さらに撮像トリガを構成するON/OFF信号は、タイマや外部入力、異常検知に基づいて、ON/OFFタイミングを決定してもよい。
(カメラ設定情報記憶部530)
【0104】
PC2は、CPUユニット3に接続されて、各種の設定を行う設定装置として機能する。例えば、カメラ入力拡張ユニット4cの機能設定をPC2から行う。その情報は、カメラ入力拡張ユニット4cのカメラ設定情報記憶部530に記憶される。カメラ設定情報記憶部530は、例えば定期的にカメラ部98で画像を撮像する場合の撮像周期やタイマ値、カメラ入力拡張ユニット4cで実行されるプログラム等を記憶している。カメラ入力拡張ユニット4cは、カメラ設定情報記憶部530に記憶されたカメラ部98の設定情報に従って動作する。
(電力供給部524)
【0105】
電力供給部524は、電力供給ライン503を介してカメラ部98に電力を供給する。この電力は、CPUユニット3と接続された外部電源部PSから供給する。
(時刻情報一次バッファ522)
【0106】
時刻情報一次バッファ522は、カメラ入力拡張ユニット4cの時刻管理部83bからその時の時刻に関する情報を一時的に記録する。画像記録部520は、カメラ部98で撮像され、カメラ入力拡張ユニット4cの画像受信部96aで受信された画像データを、時刻情報一次バッファ522の時刻情報と共に一時的に記録する。これら時刻情報一次バッファ522や画像記録部520は、個別に設ける他、共通のバッファメモリで構成することもできる。この場合はバッファメモリのアドレス空間を分離することによって、時刻情報一次バッファや画像記録部とを区分けする。
(カメラ設定情報記憶部530)
【0107】
カメラ設定情報記憶部530は、CPUユニット3からユニット間バス90を介して受信した設定情報を記憶する。
(カメラ拡張ユニット処理部510)
【0108】
カメラ拡張ユニット処理部510は、カメラ設定情報記憶部530に記憶された設定情報に基づいて、撮像インターフェース500を介してカメラ部98から画像を取得する。カメラ入力拡張ユニット4cで収集した画像データは、PLC1を介して表示器HMIでモニタすることも可能である。またカメラ拡張ユニット処理部510は、画像処理機能を有する。さらにカメラ拡張ユニット処理部510は、リフレッシュデータのプロトコル解釈機能及び他拡張ユニットへの転送機能を有する。
(画像記録部520)
【0109】
画像記録部520は、カメラ部98から取得された画像データを、この画像データが取得された時刻に関する情報と関連付けて、一時的に記録するための部材である。ここで時刻に関する情報には、実際の時刻、通信遅延等を補正した時刻、カウンタ値等が利用できる。例えば、CPUユニット3及びカメラ入力拡張ユニット4cの各々に設けられたカウンタを用いて、時刻を同期する。
【0110】
図10のプログラマブルロジックコントローラシステムは、カメラ入力拡張ユニット4Cを一台接続している。ただ本発明は、カメラ入力拡張ユニットの数を一のみに限定せず、複数台のカメラ入力拡張ユニットを増設することもできる。この場合、各カメラ入力拡張ユニットに接続されたカメラ部のそれぞれに対する撮像トリガ等のトリガのタイミングを、複数台のカメラ入力拡張ユニット間で同期させることができる。
【0111】
また、
図10の例ではカメラ入力拡張ユニット4cに一台のカメラ部98を接続しているが、一台のカメラ入力拡張ユニットに複数台のカメラ部を接続するように構成してもよい。この場合はカメラ入力拡張ユニットに、カメラ部を接続する撮像インターフェースを複数設ける。
【0112】
複数台のカメラ部を接続する際は、例えば一つの撮像対象を多方向から同期して撮像できる。また、撮像時の位相をずらすことで、実質的なfpsを上げることも可能である。
(トリガ発生のシーケンス図)
(トリガ発生のシーケンス図を
図11、
図12に示す。撮像トリガ発行部517で撮像トリガとして、ON/OFF信号のトリガ信号を発生させる動作としては、(1)カメラ入力拡張ユニット4c側をトリガ発生源とする例と、(2)CPUユニット3側をトリガ発生源とする例が挙げられる。以下では、これらについて順次説明する。
(1)カメラ入力拡張ユニット4c側がトリガ発生源の場合
【0113】
まずカメラ入力拡張ユニット4c側をトリガ発生源とする場合の動作について、
図11、
図12のシーケンス図に基づいて説明する。ここでは、カメラ入力拡張ユニット4c側に保存された設定情報に従って、一定時間ごとに撮像トリガを発行する方法と、カメラ入力拡張ユニット4c側のプログラムに従って任意のタイミングで、撮像トリガを発行する方法が挙げられる。まず、カメラ入力拡張ユニット4c側に保存された設定情報に従って、一定時間ごとに撮像トリガを発行する例を、
図11のシーケンス図に沿って説明する。ここでは、CPUユニット3とは非同期で、カメラ入力拡張ユニット4cの撮像トリガ発行部517が撮像トリガを発生させる。すなわち、CPUユニット3では実行部80(例えばラダー実行部)が、プログラム(例えばラダープログラム)の実行とEND処理を繰り返す一方、カメラ入力拡張ユニット4cでは、例えばタイマーに従い、一定時間経過後に撮像トリガ発行部517が撮像トリガを発生させる。タイマーは、カメラ拡張ユニット処理部510の時刻管理部83bで実現する他、別途タイマーIC等を設けてもよい。撮像トリガに従い、カメラ部98では撮像を実行し、撮像した画像データをカメラ入力拡張ユニット4cの画像受信部96aで受信する。
【0114】
次に、カメラ入力拡張ユニット4c側のプログラムに従って任意のタイミングでトリガ発行する方法について、
図12のシーケンス図に沿って説明する。ここでも、CPUユニット3のプログラム実行部によるプログラム実行とEND処理の繰り返し動作とは非同期で、カメラ入力拡張ユニット4cの撮像トリガ発行部517が撮像トリガを発生させる。カメラ入力拡張ユニット4cのカメラ拡張ユニット処理部510が有するプログラム実行部514がプログラムを実行し、実行条件がONになると、これに従って撮像トリガ発行部517が撮像トリガを発生させる。これに従い、カメラ部98で撮像を実行し、得られた画像データを画像受信部96aで受信処理を行う。
(2)CPUユニット3側がトリガの発行源の場合
【0115】
次に、CPUユニット3側をトリガの発行源とする場合の動作について、
図13、
図14のシーケンス図に基づいて説明する。ここでは、END処理にてトリガ指令を発行する例と、割込みを起点にプログラム実行中にトリガ指令を発行する例が挙げられる。まず、END処理にてトリガ指令を発行する例を、
図13に沿って説明する。ここでは、プログラム実行の間に行われるリフレッシュ通信に従い、トリガ指令が発行される。リフレッシュ通信とは、
図6に示すユニット間通信(入出力リフレッシュ)と同じである。
図13でも、CPUユニット3ではプログラム実行部がプログラム実行とEND処理を繰り返す。プログラム実行同士の間、例えばEND処理をトリガ指令として、カメラ入力拡張ユニット4cのカメラ拡張ユニット処理部510がこれを解釈して、撮像トリガ発行部517で撮像トリガを発行させる。これに従い、カメラ部98で撮像を実行し、得られた画像データを画像受信部96aで受信処理を行う。
【0116】
また、割込みを起点にプログラム実行中にトリガ指令を発行する例を、
図14に沿って説明する。ここでは、CPUユニット3でのEND処理まで待たずに、すなわちユニット間通信(リフレッシュ通信)を待たずに、ダイレクト通信でプログラム実行中にトリガ指令を発行する。ここでは、撮像トリガをラダープログラムに記述し、カメラ処理部570をラダープログラムにより撮像トリガ制御を行う。具体的には、CPUユニット3でプログラム実行部がラダープログラム等のプログラム実行とEND処理を繰り返す中で、プログラム実行中に割り込みを受けると、トリガ指令が発される。割り込みは、他の拡張ユニットからの割込み、通信からの割込み、定周期割込みなどが挙げられる。カメラ入力拡張ユニット4cは、トリガ指令を受けてカメラ入力拡張ユニット4cのカメラ拡張ユニット処理部510がこれを解釈し、撮像トリガ発行部517で撮像トリガを発行させる。これに従い、カメラ部98で撮像を実行し、得られた画像データを画像受信部96aで受信処理を行う。
【0117】
以上の撮像トリガの発行に関する処理をまとめて、
図15のフローチャートに基づいて説明する。まずCPUユニット3側では、ステップS1501において、スキャンを開始する。ここではラダープログラム等のプログラムの実行を開始する。次にステップS1502において、トリガ要求を行う割込みの有無を判定する。このステップは
図14の処理に対応する。割り込みがない場合は、ステップS1504にジャンプし、プログラム実行を終了する。一方、割り込みがあった場合は、ステップS1503において、ユニット間バス90を介してカメラ入力拡張ユニット4cへトリガを発行する。すなわちリフレッシュ通信を待つことなく、ダイレクト通信によりカメラ入力拡張ユニット4cにトリガ指令を発する。そしてステップS1504において、ラダープログラムの実行を終了し、ステップS1505においてEND処理を開始する。
【0118】
さらにステップS1506において、トリガ要求の有無を判定する。このステップは
図13の処理に対応する。トリガ要求がない場合は、ステップS1508にジャンプする。一方、トリガ要求がある場合は、ステップS1507において、ユニット間バス90を介してカメラ入力拡張ユニット4cへトリガを通知する。すなわち、リフレッシュ通信を行う。そしてステップS1508において、ユニット間バス90を介してカメラ入力拡張ユニット4cへ時刻を通知する。そしてステップS1509において、END処理を終了する。これで一スキャンが終了し、ステップS1501に戻って次のスキャンを開始する。
【0119】
一方、カメラ入力拡張ユニット4cにおける処理は、まずステップS1510において、トリガ要求の有無を判定する。トリガ要求があった場合は、
図16に示す処理Aを行う(詳細は後述)。トリガ要求がない場合は、ステップS1510に戻り、処理を繰り返す。すなわちトリガ要求の待機状態となる。このトリガ要求は、カメラ入力拡張ユニット4c内部の設定に従ってONされる場合もあれば(
図11、
図12)、CPUユニット3からの指令によってONされる場合もある(
図13、
図14)。
【0120】
一方でカメラ入力拡張ユニット4cの別の処理として、ステップS1511において、時刻カウントアップを行い、ステップS1512において、CPUユニット3からの時刻通知の有無を判定する。ない場合は、ステップS1511に戻り処理を繰り返す。一方、時刻通知があった場合は、ステップS1513において、時刻補正を行う。このように、CPUユニット3の時刻に基づいて、カメラ入力拡張ユニット4cの時刻を定期的に補正することができる。これにより、CPUユニット3のデバイス記録時刻と、カメラ入力拡張ユニット4cのトリガ発行時刻とのずれを極力少なくすることができる。
【0121】
ここで、ステップS1510においてトリガ要求があった場合の処理Aを、
図16に基づいて説明する。まずステップS1601(
図15のステップS1510)において、トリガ要求の有無を判定する。トリガ要求がない場合は、ステップS1601に戻り、処理を繰り返す。すなわちトリガ要求の待機状態となる。トリガ要求があった場合は、ステップS1602に進み、カメラ部98へトリガONを通知すると共に、時刻情報を時刻情報記録バッファに記録する。次にステップS1603において、画像データの受信処理が完了したか否かを判定し、未だの場合はステップS1603に戻る待機状態となる。画像受信が完了すると、ステップS1604に進み、受信画像と時刻情報とを関連付けて画像記録部520に保存する。そしてステップS1601に戻り、処理を繰り返す。
(カメラ入力拡張ユニット4cの設定)
【0122】
次に、カメラ入力拡張ユニット4cの設定を説明する。カメラ入力拡張ユニット4cは、
図17に示すように、基本ユニットである1台のCPUユニット3に対して、複数台を数珠つなぎに接続できる。また、他の種類の拡張ユニットを混在させてもよい。この場合の各拡張ユニット4の並べ方も自由に設定可能である。
【0123】
ここでCPUユニット3とカメラ入力拡張ユニット4cの外観斜視図を
図18に、カメラ部98を背面側から見た外観斜視図を
図19に、それぞれ示す。
図18の例では、CPUユニット3とカメラ入力拡張ユニット4cとを並べて配置している。CPUユニット3とカメラ入力拡張ユニット4cとは、バスコネクタ560で接続される。バスコネクタ560は、CPUユニット3とカメラ入力拡張ユニット4cとの接合界面に設ける他、背面側や底面側に設けてもよい。背面側等に設ける場合は、
図20に示すようにバックプレーン200を介在させる。
(バックプレーン200)
【0124】
複数台のユニットの接続には、バックプレーンが利用できる。バックプレーンの一例を、
図20の模式水平断面図に示す。この図に示すように、バックプレーン200は一定間隔でバスコネクタ560を複数設けており、各バスコネクタ560にCPUユニット3や拡張ユニット4が挿抜される。これにより、各ユニットはバックプレーン200のバスコネクタ560を介して、相互に接続される。
【0125】
図18のCPUユニット3は箱状の筐体で構成され、正面パネルにPLC側表示部5とPLC側操作部6が備えられている。またPC2等と接続するための通信ポートを備えている。
【0126】
カメラ入力拡張ユニット4cは、CPUユニット3とほぼ同じ高さに形成され、並べて配置し易くしている。このカメラ入力拡張ユニット4cは、正面パネルに撮像インターフェース500として、接続ポート97を設けている。接続ポート97は複数設けてもよい。
図18の例では2つの接続ポート97を設けており、それぞれにカメラ接続ケーブル550を介して異なる種類のカメラ部98A、98Bを接続できる。このようにカメラ入力拡張ユニット4cには、複数台のカメラ部98を接続することが可能である。
図21の例でも、撮像インターフェース500としてカメラ接続ケーブル550を接続するための接続ポート97を備えており、各接続ポート97にカメラ接続ケーブル550のコネクタを挿入して、カメラ部98A、98Bと接続できる。
【0127】
カメラ部98は、高視野角のカメラや、高速度カメラ等、複数の種類がある。ポート毎に、別の種類のカメラ部98を接続することができる。各カメラ部98は、矩形状の筐体の正面にレンズ99を介して撮像素子を配置している。また背面側にはカメラ接続ケーブル550との接続部552を設けている。
【0128】
カメラ部98の映像関連の設定を行うカメラ設定部の一例として、カメラ設定画面1360を
図22のGUIに示す。このカメラ設定画面1360から、カメラ部の設定情報として、接続ポート毎に映像関連の設定を行うことができる。設定可能な項目は、フレームレート、画質、回転、露出、ゲイン、露光時間、ホワイトバランス、コントラスト、ガンマ、シャープネス、アンチフリッカーなどである。ここで、フレームレートは、撮影する周期であり、カメラ部98毎に設定できる。そのため、撮影タイミングは2つのカメラで非同期にすることも可能である。また同じフレームレートに設定することで、同期して撮影される。
【0129】
カメラ部の設定情報は、
図22に示すように、フレームレート、ゲイン、露光時間、コントラスト等のパラメータが含まれる。これらのパラメータは、カメラ入力拡張ユニットの不揮発性メモリに格納されている。
図22に示すパラメータのうち、ゲインと露光時間のパラメータが、カメラ入力拡張ユニットから読み出されてカメラの揮発性メモリに転送される。転送タイミングは、プログラマブルロジックコントローラの電源ON時などである。このような構成にしているので、例えばカメラを新規なものと交換しても、プログラマブルロジックコントローラの電源ONのタイミングで、適切なゲインと露光時間がカメラに設定される。一方、本実施形態では、フレームレートやコントラストは、カメラに送られない。特に、カメラ入力拡張ユニットのカメラ拡張ユニット処理部は、フレームレートを参照して、撮像トリガを規定するON/OFF信号を生成し、カメラ部に対して出力する。例えば、フレームレートが30FPSであれば、1秒間あたり30回のON/OFF信号を生成する。
【0130】
上述の通り、カメラ部98に対して撮像トリガを送出する際は、通信でなく直接撮像トリガライン501で接続してON/OFF信号としたことで高速に指示できる利点が得られる。撮像画像は静止画のみならず、動画像としても記録・再生でき、表示器HMIやPC2に表示させることもできる。特に動画像の場合には、画像データも高速に伝送するため、画像通信ライン502をシリアル通信としつつ、高速化している。詳細を、画像通信ライン502でカメラ部98とカメラ入力拡張ユニット4cとを接続する様子を示す
図23のブロック図に基づいて説明する。
【0131】
図23に示すカメラ部98とカメラ入力拡張ユニット4cとは、カメラ接続ケーブル550に含まれる画像通信ライン502で接続されている。画像通信ライン502のデータ線は差動信号の1ペアで構成している。カメラ部98のCMOSセンサ等の撮像部574で撮像された画像データは、FPGA等のカメラ処理部570にパラレル信号線で伝送される。カメラ処理部570は、画像送信部572に対し画像データをパラレル信号線で伝送する。画像送信部572は、シリアライザを備えており、パラレル信号をシリアル信号に変換する。通信速度は、差動1ペアで、例えば1300Mbps以上としている。イーサネット規格100BASE-TXの100Mbpsなどよりも高速に伝送可能である。これにより、画像データをVGAサイズで120fps、QuadVGAサイズで30fpsとして、表示器HMIやPC2で表示できる。
【0132】
一方、カメラ入力拡張ユニット4cでは、画像受信部96aにデシリアライザを備えており、シリアル信号をパラレル信号に変換して、画像データを画像処理部515にパラレル信号線で送出する。そして画像処理部515は、パラレル信号線で画像データを収集部92bに送信する。このように、カメラ部98やカメラ入力拡張ユニット4c等の機器の内部はパラレル信号で接続してパラレル通信を行う一方、機器間においてはシリアル通信として、信号線を低減している。パラレル信号線であれば低速でも画像データを伝送可能であるところ、パラレル信号でカメラ部とカメラ入力拡張ユニットとを接続しようとすれば信号線が多くなってカメラ接続ケーブルが太くなってしまう。そこで本実施形態においては、画像送信ラインをシリアル通信とすることで信号線を少なくしてカメラ接続ケーブル550を細くしつつも、シリアル通信を高速化して画像データの通信を維持している。
<リングバッファを用いたロギング>
【0133】
図24はCPUユニット3の一時記録部91aに保持されたデバイス値と時刻情報とを示している。一つのレコードは、取得されたデバイス値と、このデバイス値が取得された時刻を示す時刻情報とを有している。
【0134】
図24はさらに拡張ユニット4のリングバッファ91bに保持された画像データと時刻情報とを示している。一つのレコードは、取得された画像データと、この画像データが取得された時刻を示す時刻情報とを有している。
【0135】
図25はCPUユニット3における一時記録部91aを用いたロギングを示している。CPUユニット3は、所定の収集開始条件が満たされると、デバイス部34に保持されているデバイス値の内、ログ設定データにより指定されたデバイス値をデバイス部から読み出すと共に、時刻管理部から時刻情報を取得する収集部を有している。収集部は、デバイス値と時刻情報とを関連付けて一時記録部91aに格納する。また収集部は、ログ設定データ72に指定された収集周期(例:スキャン周期)毎に、デバイス値と時刻情報とを取得して一時記録部91aに格納する。
【0136】
ステップS2501でPLC側CPU31の収集部は、デバイス値の取得条件が満たされたかどうかを判定する。取得条件は一時記録部91aに対するデバイス値と時刻情報の格納を開始するための条件である。取得条件は、ユーザープログラム中に記述されてもよいし(例:開始リレーがONになったこと)、ログ設定データ72において記述されていてもよい。取得条件が満たされると、PLC側CPU31はステップS2502に進む。
【0137】
ステップS2502でPLC側CPU31(収集部)は取得リレーをONにする。取得リレーは一ビットデバイスであり、拡張ユニット4に対してリングバッファ91bへのデータの格納を指示するためのリレーである。
【0138】
ステップS2503でPLC側CPU31(収集部)はデバイス値の取得タイミングが到来したかどうかを判定する。取得タイミングは、例えば、スキャン周期ごと等であり(例えば毎スキャンにおけるEND処理において取得する等)、ログ設定データ72により定義されている。取得タイミングが到来すると、PLC側CPU31はステップS2504に進む。
【0139】
ステップS2504でPLC側CPU31(収集部)は、ログ設定データ72により指定されたデバイス値をデバイス部34から取得すると共に、CPUユニット3の時刻管理部83aから時刻情報を取得し、これらを一時記録部91aに書き込む。
【0140】
ステップS2505でPLC側CPU31(収集部)は、保存タイミングが到来したかどうかを判定する。保存タイミングとは、一時記録部91aに保持されている情報をログデータ73に保存するタイミングである。保存タイミングは、例えば、所定のイベント(例:保存トリガ)が発生したこと等であってもよい。保存タイミングもログ設定データ72により定義されている。保存タイミングが到来していなければ、PLC側CPU31はステップS2503に戻る。保存タイミングが到来していれば、PLC側CPU31はステップS2506に進む。
【0141】
ステップS2506でPLC側CPU31(収集部)は、一時記録部91aに保持されている情報をログデータ73に保存する。なお、一時記録部91aに保持されている情報の内、保存対象となる情報がログ設定データ72により定義されていてもよい。例えば、保存対象は、あるイベントが発生したタイミングから所定時間が経過するまでに取得された情報であってもよい。また、保存対象は、あるイベントが発生したタイミングよりも所定時間前の時刻である開始時刻から、当該イベントが発生したタイミングから所定時間が経過した時刻である終了時刻までに取得された情報であってもよい。
【0142】
ステップS2507でPLC側CPU31(収集部)は、拡張ユニット4のリングバッファ91bに保持されている情報をログデータ73に保存する。収集部は、ダイレクト通信を利用して、拡張ユニット4のリングバッファ91bに保持されている情報を読み出してもよい。より具体的には、収集部は、バッファメモリから情報を読み出すための命令を発行してもよい。なお、リングバッファ91bに保持されている情報の内、保存対象となる情報も、ログ設定データ72により定義されていてもよい。例えば、保存対象は、あるイベントが発生したタイミングから所定時間が経過するまでに取得された情報であってもよい。また、保存対象は、あるイベントが発生したタイミングよりも所定時間前の時刻である開始時刻から、当該イベントが発生したタイミングから所定時間が経過した時刻である終了時刻までに取得された情報であってもよい。
【0143】
ステップS2508でPLC側CPU31(収集部)は、終了条件が満たされたかどうかを判定する。終了条件は、ロギングの終了条件である。終了条件もログ設定データ72により定義されていてもよい。終了条件が満たされていなければ、PLC側CPU31はステップS2503に戻る。終了条件が満たされていれば、PLC側CPU31はロギング処理を終了する。
【0144】
図26は拡張ユニット4におけるリングバッファ91bを用いたロギングを示している。
【0145】
ステップS2601でCPU41(収集部92b)は画像データの取得条件(例:取得リレーがONになったこと)が満たされたかどうかを判定する。取得リレーがONになると、CPU41はステップS2602に進む。なお、本実施形態では取得リレーがONになったときに、画像データの取得条件が満たされたと判定するようにしたが、これは一例に過ぎない。他にも例えば、PLC1のモードが運転モードに切り替えられたときに、画像データの取得条件が満たされたと判定されてもよい。より具体的には、PLC1には、各種設定を行うための設定モード(プログラムモード)と、ラダープログラムを繰り返し実行して実際の運転を行う運転モード(RUNモード)とを切り替えるモード切替スイッチが設けられてもよい。この場合、ユーザによって、このモード切替スイッチがプログラムモードからRUNモードに切り替えられたら、画像データの取得条件が満たされたと判定されてもよい。
【0146】
ステップS2602でCPU41(収集部92b)は画像データの取得タイミングが到来したかどうかを判定する。取得タイミングは、例えば、拡張ユニット4の内部制御周期(撮像周期)ごと等である。取得タイミングが到来すると、CPU41はステップS2603に進む。
【0147】
ステップS2603でCPU41(収集部92b)は、大容量データと時刻情報を取得してリングバッファ91bに格納する。例えば、収集部92bは、トリガー信号を発行し、カメラ部98と時刻管理部83bに出力する。時刻管理部83bはトリガー信号を受信すると、内部時計から時刻情報を読み出して、時刻情報バッファ95に書き込む。カメラ部98は、予め指定された撮像条件にしがって撮像を実行し、画像データを出力する。画像受信部96aは画像データを収集部92bに出力する。画像受信部96aは画像データをリングバッファ91bに直接的に書き込んでもよい。収集部92bは時刻情報バッファ95から読み出した時刻情報と、カメラ部98により取得された画像データとを関連づけてリングバッファ91bに書き込む。
【0148】
ステップS2604でCPU41(収集部92b)は、CPUユニット3からリングバッファ91bに対する読み出し要求(読み出し命令)が発行されたかどうかを判定する。読み出し要求を受信したのであれば、CPU41はS15に進む。読み出し要求が発行されていなければ、CPU41はステップS2602に戻る。
【0149】
ステップS2605でCPU41(収集部92b)は、リングバッファ91bから大容量データである画像データと時刻情報とを取得してCPUユニット3に送信する。
【0150】
ステップS2606でCPU41(収集部92b)は、終了条件が満たされたかどうかを判定する。例えば、収集部92bは取得リレーがOFFになったかどうかを判定する。終了条件が満たされていなければ、CPU41はステップS2602に戻る。終了条件が満たされていれば、CPU41はロギング処理を終了する。
<接続形態>
【0151】
図27はビルディングブロックタイプのPLC1の接続形態を示している。CPUユニット3の右側面には、拡張ユニット4と接続して通信するためのIF99aが設けられている。IFはインタフェースの略称である。この例では、CPUユニット3には拡張ユニット4aが接続されており、拡張ユニット4aには拡張ユニット4bが接続されている。拡張ユニット4は右側面と左側面との両方にIF99を有している。CPUユニット3の右側面は拡張ユニット4aの左側面と対向している。よって、CPUユニット3のIF99aは拡張ユニット4aの左側面に設けられたIF99bと接続する。拡張ユニット4aの右側面は拡張ユニット4bの左側面と対向している。よって、拡張ユニット4aのIF99cは拡張ユニット4bの左側面に設けられたIF99dと接続する。なお、拡張ユニット4bの右側面に設けられた99eはエンドユニットに接続されてもよい。このように、IF99aからIF99eはユニット間バス90を形成している。例えば、拡張ユニット4aに接続されたカメラ部98aにより取得された画像データはユニット間バス90を介してCPUユニット3へ転送されうる。拡張ユニット4bに接続されたカメラ部98bにより取得された画像データはユニット間バス90を介してCPUユニット3へ転送されうる。
【0152】
このようにビルディングブロックタイプのPLC1では各ユニットの側面が接続面(連結面)となる。ユニット間バス90の一部を形成するためのIF99も各ユニットの側面に設けられる。なお、上述したように、ユニット間バス90での通信は、
図5に示すバスマスタ38によって制御される。
【0153】
図28はバックプレーン200を有するPLC1の接続形態を示している。バックプレーン200は、CPUユニット3の底面及び拡張ユニット4の底面に接続されるか、CPUユニット3の背面及び拡張ユニット4の背面に接続される。バックプレーン200はCPUユニット3及び拡張ユニット4を支持する支持プレート(ベースプレート)として機能する。ここでは一例として背面が接続面として説明される。CPUユニット3の背面はバックプレーン200の正面と対向している。よって、CPUユニット3の背面に設けられたIF99fはバックプレーン200の正面に設けられたIF99gと接続する。拡張ユニット4の背面はバックプレーン200の正面と対向している。拡張ユニット4aの背面に設けられたIF99hはバックプレーン200の正面に設けられたIF99iに接続される。拡張ユニット4bの背面に設けられたIF99jはバックプレーン200の正面に設けられたIF99kに接続される。IF99fないしIF99kはユニット間バス90を形成している。
【0154】
なお、バックプレーン200は、ユニット間バス90を介したバス通信を制御するための通信制御部213を有していてもよい。また、バックプレーン200は、CPU211やメモリ212を有していてもよい。メモリ212はRAMやROMに加え、メモリカードを有していてもよい。この場合、CPU211は収集部92bや保存部として機能してもよい。また、メモリ212にはリングバッファが設けられてもよい。あるいは、CPU211は時刻管理部83b及び収集部を有していてもよい。この場合、メモリ212はリングバッファ91bを有する。
<ログの表示例>
【0155】
ログデータには、運転記録を保存した際のデバイス値やカメラ部98の画像データに加えて、運転記録を保存した際のプロジェクトデータに含まれるラダープログラム等のユーザープログラムや、各ユニットの設定ファイルも含まれる。例えばトラブル発生時にカメラ部98で撮像した画像データや、各ユニットの状態、モーションユニットの角度や座標等の情報が含まれる。これにより、ログデータに過去の各デバイスの状態や接続状態、各ユニットの情報等を保存できるので、ログデータを保存しておくことで、過去の状態を再現することができる。すなわち、トラブル発生時に遡って、どのような設定でどのような出力がなされていたかのかを確認できるため、トラブルの原因解明に有益となる。またログデータは、PLC用エンジニアリングツールで読み込むことで、ログデータに保存された各設定などを解析して、再現表示できる。
【0156】
図29はログデータ73の一例を示している。この例では、デバイス値d1~d10と、カメラ部98aにより取得されたワーク画像i1~i3と、カメラ部98bにより取得された他の画像j1~j3の取得タイミングが示されている。デバイス値d1~d10はスキャン周期ごとに取得されている。ワーク画像i1~i3はトリガー信号が発生したタイミングに取得されている。ワーク画像j1~j3はトリガー信号が発生したタイミングに取得されている。各データの位置はそれぞれの時刻情報を示している。
図29が示すように、各データの取得時刻や取得周期は一致していない。そのため、ログ表示制御部61は、各データの時刻情報に基づき各データの表示タイミングを調整する。
【0157】
図30はログデータ73の表示タイミングと表示継続時間とを説明する図である。ログ表示制御部61は、各デバイス値の時刻情報に従って各デバイス値を表示部7に表示する。例えば、ログ表示制御部61は、デバイス値d1の時刻情報とデバイス値d2の時刻情報との差分時間をデバイス値d1の表示継続時間に決定する。ログ表示制御部61は、デバイス値d1の表示を開始してから表示継続時間が経過すると、デバイス値d2の表示を開始する。以下、同様に表示継続時間が求められ、表示されるデバイス値が時刻情報や表示継続時間に従って切り替えられて行く。
【0158】
すでに
図29が示したように、デバイス値d1の取得時刻と、ワーク画像i1の取得時刻とは一致していない。そこで、ログ表示制御部61は、ワーク画像i1の取得時刻をデバイス値d1ないしd10の取得時刻と比較し、ワーク画像i1の取得時刻に最も近いデバイス値dxの取得時刻を求める。この例では、ワーク画像i1の取得時刻に最も近いのは、デバイス値d1の取得時刻である。よって、ログ表示制御部61は、デバイス値d1の表示を開始すると共に、ワーク画像i1の表示を開始する。次に、ログ表示制御部61は、ワーク画像i2の取得時刻に最も近いデバイス値dxの取得時刻を求める。この例では、デバイス値d4の取得時刻が、ワーク画像i2の取得時刻が最も近い。そこで、ログ表示制御部61は、デバイス値d4の表示タイミングが到来すると、デバイス値d4とワーク画像i2の表示を開始する。ログ表示制御部61は、他の画像j1の取得時刻に最も近いデバイス値dxの取得時刻を求める。この例では、他の画像j1の取得時刻に最も近いのは、デバイス値d2の取得時刻である。よって、ログ表示制御部61は、デバイス値d2の表示タイミングが到来すると、デバイス値d2の表示を開始すると共に、他の画像j1の表示を開始する。
【0159】
このようにログデータ73に含まれる複数のデータの内、ロギングの周期がもっとも短いデータを基準として、各データの表示タイミングが調整されてもよい。
【産業上の利用可能性】
【0160】
本発明に係るプログラマブルロジックコントローラ及びカメラ入力拡張ユニットは、FAにおけるPLCシステムのトラブルシューティングに好適に利用できる。
【符号の説明】
【0161】
1…PLC
2…PC
3…CPUユニット
4、4a、4b…拡張ユニット
4c…カメラ入力拡張ユニット
4d…モーションユニット
4e…通信ユニット
5…PLC側表示部
6…PLC側操作部
7…表示部
8…PC側操作部
9…通信ケーブル
10、10a、10b…フィールドデバイス
11…PC側メモリ部
21、21B…PC側CPU
22…PC側記憶装置
23…PC側通信部
31…PLC側CPU
32…PLC側記憶装置
33…PLC側通信部
34…デバイス部
34a…CPUユニットデバイス部;34b…拡張ユニットデバイス部
35…プロジェクト記憶部
36…保存メモリ;36A…メモリカード
37…内部メモリ
38…バスマスタ
39…記録制御部
41…CPU
42…メモリ
45…保存条件設定部
50C…保存制御部
71…プロジェクトデータ
72…ログ設定データ
73…ログデータ
80…実行部
80a…ラダー実行エンジン
80b…ユニット制御部
81…記録部
82…検知部
83…時刻管理部
83a…時刻管理部
83b…時刻管理部
84…出力部
90…ユニット間バス
91a…一時記録部;91b…リングバッファ
92b…収集部
92a…収集部
93…保存部
94…送信部
95…時刻情報バッファ
96…機能実行部
96a…画像受信部
97…接続ポート
98、98a、98b、98A、98B…カメラ部
99…レンズ
99a~99k…IF
200…バックプレーン
201…ユニット間通信
202…プログラム実行
204…END処理
211…CPU
212…メモリ
213…通信制御部
500…カメラ接続インターフェース
500B…カメラ側撮像インターフェース
501…撮像トリガライン
502…画像通信ライン
503…電力供給ライン
510…カメラ拡張ユニット処理部
511…バス送受信部
512…プロトコル解釈部
513…プロトコル実行部
514…プログラム実行部
515…画像処理部
517…撮像トリガ発行部
520…画像記録部
522…時刻情報一次バッファ
524…電力供給部
530…カメラ設定情報記憶部
550…カメラ接続ケーブル
552…接続部
560…バスコネクタ
570…カメラ処理部
571…撮像トリガ入力部
572…画像送信部
573…電力受給部
574…撮像部
575…カメラ設定記録部
1000…プログラマブルロジックコントローラシステム
1360…カメラ設定画面
Ld…ラダー図
T…スキャンタイム
d1~d10…デバイス値
WK…対象物
NT…通信ネットワーク
VC…ビデオカメラ
PS…外部電源部
CL…通信線
i1~i3…ワーク画像
j1~j3…ワーク画像