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