(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022158229
(43)【公開日】2022-10-17
(54)【発明の名称】プログラマブルロジックコントローラシステム
(51)【国際特許分類】
G05B 19/05 20060101AFI20221006BHJP
【FI】
G05B19/05 D
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2021062985
(22)【出願日】2021-04-01
(71)【出願人】
【識別番号】000129253
【氏名又は名称】株式会社キーエンス
(74)【代理人】
【識別番号】110003281
【氏名又は名称】特許業務法人大塚国際特許事務所
(72)【発明者】
【氏名】藤村 真人
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220AA04
5H220BB11
5H220CC05
5H220CX01
5H220DD01
5H220DD04
5H220DD07
5H220JJ12
5H220JJ26
5H220JJ42
5H220JJ53
(57)【要約】
【課題】PLCにおける運転記録と分析結果との関係を適切に保持すること。
【解決手段】PLCシステムは、ユーザプログラムが実行されている稼働期間において稼働状態を監視し、監視結果を一時的に保持し、所定イベントが発生すると、監視結果を運転記録として記録する。さらに、PLCシステムは、運転記録を分析して分析結果を生成し、監視結果を含む運転記録に分析結果を紐づける。
【選択図】
図24
【特許請求の範囲】
【請求項1】
プロジェクトに含まれるユーザプログラムを実行する実行手段と、
前記ユーザプログラムが実行されている稼働期間において稼働状態を監視する監視手段と、
前記稼働状態の監視結果を一時的に保持する保持手段と、
所定のイベントが発生すると、前記保持手段に保持されている監視結果を運転記録として記録する記録手段と、
前記運転記録を分析して分析結果を生成する分析手段と、
前記監視結果から生成された分析結果を、当該監視結果を含む当該運転記録に紐づける紐づけ手段と
を有することを特徴とするプログラマブルロジックコントローラシステム。
【請求項2】
前記紐づけ手段は、前記運転記録が記録されたときに実行されていたユーザプログラムを含むプロジェクトを、前記監視結果から生成された分析結果と、当該監視結果を含む当該運転記録とに紐づけることを特徴とする請求項1に記載のプログラマブルロジックコントローラシステム。
【請求項3】
前記記録手段は、前記分析結果と、当該分析結果の元になった前記監視結果と、前記プロジェクトと、を一括して、前記運転記録として記録することを特徴とする請求項2に記載のプログラマブルロジックコントローラシステム。
【請求項4】
前記記録手段は、前記分析結果と、当該分析結果の元になった前記監視結果と、前記プロジェクトと、を一つのファイルとして記録することを特徴とする請求項3に記載のプログラマブルロジックコントローラシステム。
【請求項5】
プログラマブルロジックコントローラと、
当該プログラマブルロジックコントローラと通信するコンピュータと、をさらに有し、
前記プログラマブルロジックコントローラは、前記実行手段、前記監視手段、前記保持手段、前記記録手段、前記分析手段、および、前記紐づけ手段を有し、
前記コンピュータは、
前記運転記録を前記プログラマブルロジックコントローラから取得する取得手段と、
前記取得手段により取得された前記運転記録を記憶する記憶手段と、
前記運転記録に含まれている監視結果を再生する記録再生手段と、
前記運転記録に含まれている前記分析結果を分析レポートとして表示するレポート表示手段と、をさらに有することを特徴とする請求項3または4に記載のプログラマブルロジックコントローラシステム。
【請求項6】
前記紐づけ手段は、前記運転記録の識別情報と、前記プロジェクトの識別情報と、前記分析結果の識別情報とを紐づけることで、前記運転記録が記録されたときに実行されていた前記ユーザプログラムを含むプロジェクトを、前記監視結果から生成された分析結果に紐づけることを特徴とする請求項2に記載のプログラマブルロジックコントローラシステム。
【請求項7】
前記記録手段は、
前記プロジェクトと、当該プロジェクトの識別情報とを記憶する第一記憶部と、
前記監視結果と、前記プロジェクトの識別情報と、前記分析結果の識別情報とを記憶する第二記憶部と、
前記分析結果と、当該分析結果の識別情報とを記憶する第三記憶部とを有し、
前記プロジェクトの識別情報により前記第一記憶部に記憶されている前記プロジェクトと、前記第二記憶部に記憶されている前記監視結果とが紐づけられ、前記分析結果の識別情報により、前記第二記憶部に記憶されている前記監視結果と前記第三記憶部に記憶されている前記分析結果とが紐づけられることで、前記監視結果、前記プロジェクトおよび前記分析結果が紐づけられることを特徴とする請求項6に記載のプログラマブルロジックコントローラシステム。
【請求項8】
前記記録手段は、
前記プロジェクトと、当該プロジェクトの識別情報とを記憶する第一記憶部と、
前記監視結果と、前記監視結果を含む前記運転記録の識別情報とを記憶する第二記憶部と、
前記分析結果と、前記プロジェクトの識別情報と、前記運転記録の識別情報とを記憶する第三記憶部とを有し、
前記プロジェクトの識別情報により前記第一記憶部に記憶されている前記プロジェクトと、前記第三記憶部に記憶されている前記分析結果とが紐づけられ、前記運転記録の識別情報により、前記第二記憶部に記憶されている前記監視結果と前記第三記憶部に記憶されている前記分析結果とが紐づけられることで、前記監視結果、前記プロジェクトおよび前記分析結果とが紐づけられることを特徴とする請求項6に記載のプログラマブルロジックコントローラシステム。
【請求項9】
プログラマブルロジックコントローラと、
当該プログラマブルロジックコントローラと通信するコンピュータと、をさらに有し、
前記プログラマブルロジックコントローラは、前記実行手段、前記監視手段、前記保持手段、前記記録手段、前記分析手段、および、前記紐づけ手段を有し、
前記コンピュータは、
前記運転記録の識別情報と、前記分析結果の識別情報と、前記プロジェクトの識別情報とに基づき、相互に関連付けられている前記運転記録、前記分析結果および前記プロジェクトを取得する取得手段と、
前記取得手段により取得された前記運転記録を記憶する記憶手段と、
前記運転記録に含まれている監視結果を再生する記録再生手段と、
前記運転記録に関連付けられている前記分析結果を分析レポートとして表示するレポート表示手段と、をさらに有することを特徴とする請求項2に記載のプログラマブルロジックコントローラシステム。
【請求項10】
前記監視結果は、前記ユーザプログラムにより使用されるデバイスに記憶されているデバイス値を含むことを特徴とする請求項5または9に記載のプログラマブルロジックコントローラシステム。
【請求項11】
前記記録再生手段は、前記運転記録に紐づけられている前記プロジェクトの一部である前記ユーザプログラムを表示するとともに、当該ユーザプログラムに記述されているデバイスに対応付けて前記監視結果に含まれている当該デバイスのデバイス値を表示することを特徴とする請求項10に記載のプログラマブルロジックコントローラシステム。
【請求項12】
前記運転記録が記録されると通知を発行する発行手段をさらに有することを特徴とする請求項1ないし11のいずれか一項に記載のプログラマブルロジックコントローラシステム。
【請求項13】
前記取得手段は、前記プログラマブルロジックコントローラからアップロードされる前記運転記録、前記プロジェクトおよび前記分析結果を受信するFTPサーバであることを特徴とする請求項5に記載のプログラマブルロジックコントローラシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はプログラマブルロジックコントローラシステムに関する。
【背景技術】
【0002】
プログラマブルロジックコントローラ(PLC)はファクトリーオートメーションにおいて製造機器や搬送装置、検査装置などの産業機械を制御するコントローラである。PLCはプログラマーによって作成されるラダープログラムなどのユーザプログラムを実行することで様々な拡張ユニットや被制御機器を制御する。PLCの動作を監視するために、PLCが保持しているデータを収集して、PLCの外部に接続されたコンピュータ(PC)やHMI(ヒューマンインタフェース:表示装置)でデータをモニタすることが提案されている(特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、ユーザはプログラム作成支援装置でユーザプログラムを作成し、PLCに転送する。PLCはユーザプログラムを実際に実行することで、様々な製品を製造したりする。ここで、ユーザプログラムを作成したときには想定していなかったような稀なイベントが発生することで、製造ラインがストップしてしまうことがある。製造ラインがストップしてしまうことはないものの、注意が必要なイベントが発生することもある。その一方で、PLCは、所定のイベントが発生すると、その発生時刻の前後において収集されたデバイス値をバッファから読み出して記録する。これは、運転記録(稼働ログ)と呼ばれてもよい。データ活用ユニットが、この記録を分析して分析レポートを作成し、PLCの外部にあるWebブラウザに提供してもよいだろう。ここで、分析レポートともに稼働ログを再生できれば、ユーザは、分析レポートの内容を理解しやすくなるだけでなく、所定のイベントが発生した原因を突き止めやすくなるであろう。したがって、分析レポートと、稼働ログとは紐づけられている必要があろう。仮に、分析レポートと稼働ログとが紐づけられていなければ、ユーザが、分析レポートに対応する稼働ログを特定することは、困難になろう。そこで、本発明は、PLCにおける運転記録と分析結果との関係を適切に保持することを目的とする。
【課題を解決するための手段】
【0005】
本発明は、たとえば、
プロジェクトに含まれるユーザプログラムを実行する実行手段と、
前記ユーザプログラムが実行されている稼働期間において稼働状態を監視する監視手段と、
前記稼働状態の監視結果を一時的に保持する保持手段と、
所定のイベントが発生すると、前記保持手段に保持されている監視結果を運転記録として記録する記録手段と、
前記運転記録を分析して分析結果を生成する分析手段と、
前記監視結果から生成された分析結果を、当該監視結果を含む当該運転記録に紐づける紐づけ手段と
を有することを特徴とするプログラマブルロジックコントローラシステムを提供する。
【発明の効果】
【0006】
本発明によれば、PLCにおける運転記録(稼働ログ)と分析結果との関係が適切に保持される。
【図面の簡単な説明】
【0007】
【
図4】PCのCPUにより実現される機能を説明する図
【
図5】PLCのCPUにより実現される機能を説明する図
【
図14】波形表示のユーザインタフェースを説明する図
【
図15】波形表示のユーザインタフェースを説明する図
【
図19】リレーションマップにおける強調表示の変化を説明する図
【
図20】プロジェクト編集方法を示すフローチャート
【
図21】分析レポートの表示処理を示すフローチャート
【
図22】分析結果と稼働ログとの紐づけの例を示す図
【
図23】分析結果と稼働ログとの紐づけの例を示す図
【
図24】分析結果と稼働ログとの紐づけ方法を示すフローチャート
【発明を実施するための形態】
【0008】
以下、添付図面を参照して実施形態が詳しく説明される。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態で説明されている特徴の組み合わせの全てが発明に必須のものとは限らない。実施形態で説明されている複数の特徴のうち二つ以上の特徴が任意に組み合わされてもよい。また、同一または同様の構成には同一の参照番号が付され、重複した説明は省略される。複数の構成を区別するために参照符号の末尾に小文字のアルファベットが付与されることがある。複数の構成に共通する事項が説明される際には小文字のアルファベットが省略されることがある。
【0009】
<システム構成>
はじめにプログラマブルロジックコントローラ(PLC、単にプログラマブルコントローラと呼ばれてもよい)を当業者にとってよりよく理解できるようにするために、一般的なPLCの構成とその動作について説明する。
【0010】
図1は本発明の実施の形態によるPLCシステムの一構成例を示す概念図である。
図1が示すように、PLCシステムは、ラダープログラムなどのユーザプログラムを編集するPC2と、工場等に設置される各種の産業機械を統括的に制御するPLC1とを備えている。PCはパーソナルコンピュータの略称である。ユーザプログラムは、ラダー言語やSFC(シーケンシャルファンクションチャート)などのフローチャート形式のモーションプログラムなどのグラフィカルプログラミング言語を用いて作成されてもよいし、C言語などの高級プログラミング言語を用いて作成されてもよい。以下では、説明の便宜上、基本ユニット3で実行されるユーザプログラムは、ラダープログラムと仮定される。PLC1は、CPUが内蔵された基本ユニット3と、1つないし複数の拡張ユニット4を備えている。基本ユニット3に対して1つないし複数の拡張ユニット4が着脱可能となっている。
【0011】
基本ユニット3は、表示部5および操作部6を備えている。表示部5は、基本ユニット3に取り付けられている拡張ユニット4の動作状況などを表示することができる。操作部6に対するユーザによる操作内容に応じて表示部5は表示内容を切り替える。表示部5は、通常、PLC1内のデバイスに格納されている現在値(デバイス値)やPLC1内で生じたエラー情報などを表示する。デバイスとは、デバイス値(デバイスデータ)を格納するために設けられたメモリ上の記憶領域を指す名称(シンボル)であり、デバイスメモリと呼ばれてもよい。デバイス値とは、入力機器からの入力状態、出力機器への出力状態およびユーザプログラム上で設定される内部リレー(補助リレー)、タイマー、カウンタ、データメモリ等の状態を示す情報である。デバイス値の型にはビット型とワード型がある。ビットデバイスは1ビットのデバイス値を記憶する。ワードデバイスは1ワードのデバイス値を記憶する。
【0012】
拡張ユニット4はPLC1の機能を拡張するために用意されている。拡張ユニット4には、その拡張ユニット4の機能に対応するフィールドデバイス(被制御装置)10が接続されることがあり、これにより、各フィールドデバイス10が拡張ユニット4を介して基本ユニット3に接続される。フィールドデバイス10は、センサやカメラなどの入力機器であってもよいし、アクチュエータなどの出力機器であってもよい。また、一つの拡張ユニット4に対して複数のフィールドデバイスが接続されてもよい。
【0013】
たとえば、拡張ユニット4bはモータ(フィールドデバイス10)を駆動してワークの位置決めする位置決めユニットであってもよいし、カウンタユニットであってもよい。カウンタユニットは手動パルサなどのエンコーダ(フィールドデバイス10)からの信号をカウントする。
【0014】
拡張ユニット4aは、基本ユニット3においてシンボル(デバイス、変数など)からシンボル値を収集し、シンボル値を分析して分析結果を含む分析レポートを作成する。拡張ユニット4aは、分析レポートを外部のPC2へ提供するWebサーバを有していてもよい。基本ユニット3はCPUユニットと呼ばれることもある。本実施形態では、拡張ユニット(分析ユニット)4aがシンボル値を収集する収集部を有する例が説明される。しかし、当該収集部については、基本ユニット3に設けられてもよいし、他の拡張ユニットに設けられてもよい。また、拡張ユニット4aは、収集したデータを基本ユニット3からの指示や所定のタイミングに従って分析を行う分析装置として機能してもよい。本実施形態では、拡張ユニット4aが分析装置として機能する例が説明される。ただし、本発明を限定する意図は存在しない。基本ユニット3が分析装置として機能してもよいし、PC2などの外部装置が分析装置として機能してもよい。PLC1とPC2とを含むシステムはプログラマブルロジックコントローラシステムと呼ばれてもよい。
【0015】
PC2は主にプログラマーによって操作されるコンピュータである。PC2はプログラム作成支援装置(監視装置)と呼ばれてもよい。PC2は、たとえば、携帯可能なノートタイプやタブレットタイプのパーソナルコンピュータまたはスマートフォンであって、表示部7および操作部8を備えている外部コンピュータである。外部コンピュータとは、PLC1の外部にあるコンピュータである。PLC1を制御するためのユーザプログラムの一例であるラダープログラムは、PC2を用いて作成される。その作成されたラダープログラムは、PC2内でニモニックコードに変換される。PC2は、たとえば、USB(Universal Serial Bus)ケーブルなどの通信ケーブル9aを介してPLC1の基本ユニット3に接続される。ただし、通信ケーブル9aは、通信ケーブル9bと同様な、ネットワークケーブルなどであってもよい。なお、PC2は、ユーザにより画面設定されるプログラマブル表示器であってもよい。この場合、分析結果等を表示する画面はユーザにより設定されてもよい。プログラマブル表示器がWebブラウザ機能を搭載しており、Webブラウザ機能により分析結果等を表示してもよい。
【0016】
図1は示していないが、PC2の操作部8には、PC2に接続されたマウスなどのポインティングデバイスが含まれていてもよい。また、PC2は、USBケーブル以外の他の通信ケーブル9bを介して、PLC1の基本ユニット3または拡張ユニット4aに対して着脱可能に接続されてもよい。通信ケーブル9bは、いわゆるLANケーブルであってもよい。PC2は、通信ケーブル9a、9bを介さず、PLC1の基本ユニット3に対して無線通信によって接続されてもよい。
【0017】
<プログラム作成支援装置>
図2はPC2の電気的構成について説明するためのブロック図である。
図2が示すように、PC2は、CPU11、表示部7、操作部8、記憶装置12および通信部13a、13bを備えている。表示部7、操作部8、記憶装置12および通信部13a、13bは、それぞれCPU11に対して電気的に接続されている。記憶装置12はRAMやROM、HDD、SSDを含み、さらに着脱可能なメモリカードを含んでもよい。CPUは中央演算処理装置の略称である。ROMはリードオンリーメモリの略称である。RAMはランダムアクセスメモリの略称である。HDDはハードディスクドライブの略称である。SSDはソリッドステートドライブの略称である。
【0018】
PC2のユーザは記憶装置12に記憶されているプロジェクト編集プログラム14aをCPU11に実行させて、操作部8を通じてプロジェクトデータを編集する。つまり、PC2は、エンジニアリングツールであり、プログラム作成支援装置としても機能する。プロジェクトデータは、一つ以上のユーザープログラム(例:ラダープログラム)と、基本ユニット3や拡張ユニット4の構成情報などを含む。構成情報は、基本ユニット3に対する複数の拡張ユニット4の接続位置や、基本ユニット3に備えられた機能(例:通信機能や位置決め機能)を示す情報、拡張ユニット4の機能(例:撮影機能)などを示す情報、およb、デバイスの割り当て情報などである。ここで、プロジェクトデータの編集には、プロジェクトデータの作成および変更(再編集)が含まれる。ユーザは、必要に応じて記憶装置12に記憶されているプロジェクトデータを読み出し、そのプロジェクトデータを、プロジェクト編集プログラム14aを用いて変更する。通信部13aは、通信ケーブル9aを介して基本ユニット3と通信する。CPU11は通信部13aを介してプロジェクトデータを基本ユニット3に転送する。通信部13aは、USB規格に準拠した通信を実行可能な通信回路などを含む。通信部13bは、通信ケーブル9bを介して拡張ユニット4aと通信する。通信部13bは、ネットワーク通信回路を含む。Webサーバプログラム14cはプロジェクト編集プログラム14aの一部として実装される。Webブラウザプログラム14dは、通信部13aを介して拡張ユニット4aがWeb形式で記述された分析レポートを受信して表示部7に表示する。なお、Webブラウザプログラム14dは、Webサーバプログラム14cに対して、分析レポートを提供するよう要求してもよい。Webサーバプログラム14cは、通信部13aおよび基本ユニット3を介して拡張ユニット4aにアクセスし、分析レポートを取得し、Webブラウザプログラム14dへ転送してもよい。
【0019】
<PLC>
図3はPLC1の電気的構成について説明するためのブロック図である。
図3が示すように、基本ユニット3は、CPU31、表示部5、操作部6、記憶装置32および通信部33を備えている。表示部5、操作部6、記憶装置32、および通信部33は、それぞれCPU31に電気的に接続されている。記憶装置32は、RAMやROM、メモリカードなどを含んでもよい。記憶装置32はデバイス部34やプロジェクト記憶部35、リングバッファ36、運転記録記憶部37などの複数の記憶領域を有している。デバイス部34はビットデバイスやワードデバイスなどを有し、各デバイスはデバイス値を記憶する。プロジェクト記憶部35は、PC2から転送されたプロジェクトデータを記憶する。リングバッファ36は、定期的にデバイス部34からデバイス値を収集して記憶する。運転記録記憶部37は、所定のイベントが発生すると、発生時刻の周辺(発生時刻以前、発生時刻以後、または、発生時刻の前後)に収集されたデバイス値とその収集時刻とを含むイベント記録を記憶する。イベントとは、たとえば、デバイスごとに設定された警報条件または注意条件が満たされたことをいう。警報条件とは、たとえば、PLC1による製造ラインの制御動作を停止すべきような条件をいう。注意条件は、たとえば、PLC1による製造ラインの制御動作について管理者が注意すべきようなデバイス値の条件をいう。CPU41は、PC2からの要求に応答してイベント記録をPC2へ送信する。また、CPU31は、リアルタイムでデバイス値をPC2に提供してもよい。記憶装置32は基本ユニット3のCPU31により実行される制御プログラムも記憶する。
図3が示すように基本ユニット3と拡張ユニット4とは拡張バスの一種であるユニット内部バス90を介して接続されている。なお、ユニット内部バス90に関する通信機能はCPU31に実装されるが、通信部33の一部として実装されてもよい。通信部33は、USB規格などに準拠したシリアル通信回路を有してもよい。CPU31は通信部33を介してプロジェクトデータをPC2から受信する。
【0020】
ここで、ユニット内部バス90について、補足説明する。このユニット内部バス90は、入出力リフレッシュに使用される通信バスである。入出力リフレッシュとは、基本ユニット3と拡張ユニット4との間でデバイス値を更新する処理である。入出力リフレッシュは、ラダープログラムが一回実行されるごとに(つまり、一スキャンごとに)、実行される。
【0021】
運転記録記憶部37に記録される運転記録(デバイス値とその収集時刻など)とは、PLC1の運転状態をスキャンタイムレベルで記録したものであってもよい。たとえば、運転記録は、PLC1の運転に関わる全てのシンボルのシンボル値とその収集時刻とを、一スキャン毎に時系列に記録することであってもよい。運転に関わる全てのシンボルとは、たとえばラダープログラム等のユーザプログラムに使用される全てのシンボルであってもよいし、ユーザにより選択されるプログラム単位やユニット単位に含まれるすべてのシンボルであってもよい。この場合、運転記録の対象となるシンボルは、プログラム単位やユニット単位のように、有意な単位で一括して選択されてもよい。運転記録の対象となるシンボルは、個別に加除(追加または削除)されてもよい。たとえば、トラブル発生時に、トラブル発生時刻の周辺においてPLC1の運転に関わる全てのシンボルのシンボル値とその収集時刻とが、一スキャン毎に時系列に記録した運転記録が生成されてもよい。ユーザは運転記録に基づきトラブル発生時に何が起きたかを後からでも正確に把握することが可能となろう。運転記録には、その時の状況を再現するために多くの情報が含まれるかもしれない。情報が多いと運転記録のデータ容量が大きくなり、運転記録の取り扱い(データ処理など)が難しくなったり、運転記録の収集に負荷がかかったりする。そのため、収集対象となるシンボルは、プログラム単位やユニット単位でユーザにより選択できるようになっている。
【0022】
また、運転記録には、シンボルに加え、時系列のカメラ画像がその撮像時刻ともに含まれていてもよい。これにより、ユーザは、たとえば、トラブル発生時に、トラブル発生時刻の周辺に遡って何が起きたかを後からでも正確に把握できるようになろう。とりわけ、設備の外観変化を示すカメラ画像が運転記録に含まれていることは、状況を把握することに役立つであろう。そのため、ユーザプログラムの実行の時系列と連動してカメラ画像が記録されてもよい。HMI(ヒューマンマシンインタフェース)やPCなどの外部機器からの書き込み履歴やPLCからの書き込み履歴が変化点イベントとして運転記録に含まれてもよい。これにより、たとえば、トラブル発生前後にどのような変化点イベントがあったかをユーザは時系列で確認できる。
【0023】
別の観点から補足すると、運転記録は、保存トリガ条件の成立に応じて保存された、デバイス、拡張ユニット4のバッファメモリ、変数など、スキャンタイム毎のデータの総称と呼ばれてもよい。運転記録には、保存トリガ条件の成立に応じて保存された、フレームごとに拡張ユニット(カメラユニット)で取得した映像データが含まれてもよい。また、運転記録には、保存トリガ条件の成立に応じて保存された、エラーやデバイス値変更などのイベント履歴が含まれてもよい。さらに、運転記録には、保存トリガ条件の成立時に実行されていたラダープログラム(プロジェクトデータ)が含まれてもよい。運転記録が生成された際のプロジェクトデータを運転記録に含ませることで、プロジェクトデータに複数のバージョンが存在しても、運転記録を生成したときに実際に使用されていたプロジェクトデータにより状況を再現することができる。運転記録には、分析レポートが含まれてもよい。
【0024】
拡張ユニット4はCPU41とメモリ42を備えている。拡張ユニット4bのCPU41bは、デバイスに格納された基本ユニット3からの指示(デバイス値)にしたがってフィールドデバイス10を制御する。また、CPU41bは、フィールドデバイス10の制御結果をバッファメモリとよばれるデバイスに格納する。デバイスに格納された制御結果は入出力リフレッシュによって基本ユニット3に転送される。また、デバイスに格納されている制御結果は、基本ユニット3からの読み出し命令にしたがって、入出力リフレッシュとは異なるタイミングであっても、基本ユニット3に転送されることがある。メモリ42はRAMやROMなどを含む。とりわけ、RAMにはバッファメモリとして使用される記憶領域が確保されている。メモリ42は、フィールドデバイス10によって取得されたデータ(例:静止画データや動画データ)を一時的に保持するバッファを有してもよい。
【0025】
データ活用ユニット(分析ユニット)として機能する拡張ユニット4aのCPU41aは、通信部43と通信ケーブル9bを介してPC2と通信する。通信部43は、ネットワーク通信を実行する通信回路を含む。CPU41aは、メモリ42aに格納されたデータ活用プログラムを実行し、基本ユニット3において収集されたデバイス値を分析することで、分析結果を含む分析レポートを作成する。CPU41aは、データ活用アプリケーションとして運転記録分析アプリケーションが設定されると、基本ユニット3において収集されたデバイス値を分析することで、分析結果を含む分析レポートを作成する。たとえば、CPU41aは、運転記録データに含まれるシンボル値を分析することで、非正常シンボルと当該シンボルが非正常となった時刻とを特定し、非正常シンボルと当該シンボルが非正常となった時刻とを対応づけた分析結果を含む分析レポートを作成する。運転記録データは、運転記録の保存イベント発生時刻周辺の状況を再現するための情報を含んでいる。そのため、運転記録データは分析レポートと紐づけて管理されてもよい。また、運転記録データは、運転記録の保存イベント発生時刻周辺の状況を再現するための多くのシンボルのシンボル値を含む。そのため、運転記録データのデータサイズは大きくなりやすい。たとえば、CPU41aは、運転記録データの中から、分析レポートに必要なデータを読み出して、分析レポート用のデータとして運転記録データに追加保存してもよい。ここで、追加保存とは、たとえば、分析レポートに必要なデータを運転記録データから読み出してコピーし、コピーされたデータをタグ付けすることで作成された分析レポート用のデータを、運転記録データに追加保存することをいう。このようにデータをタグ付けしておくなど、データ加工を適用することで、分析レポートを作成しやすくなる。
【0026】
運転記録データにカメラ画像が含まれてもよい。この場合、カメラ画像を再生することにより、ユーザは、運転記録の保存イベント発生時刻周辺の状況をより詳細に把握することができる。分析レポートはカメラ画像を再生するUI(ユーザインターフェース)を含んでもよい。カメラ画像はデータサイズが大きい。そのため、カメラ画像を再生するUIにおいてクリックやスクロール操作を受け付けた時などに、必要なカメラ画像データだけが部分的にダウンロードされてもよい。たとえば、CPU41aは、分析レポートを作成する際、カメラ画像を分析レポートにおける表示順序に対応して加工したり、時刻とカメラ画像の保存位置の対応関係を示すインデックス情報を生成したりしてもよい。これにより、CPU41aは、表示時刻(再生用の内部時計の時刻)に対応したカメラ画像を高速かつ部分的にダウンロードしてもよい。
【0027】
分析レポートは、狭義には、分析結果そのものを意味するが、広義には、分析結果を表示するWebアプリケーションやそのユーザインタフェースを意味することがある。CPU41aは、たとえば、デバイス値が正常範囲内かどうかや、デバイス値が変化するタイミングが正常範囲内かどうかなどを判定する。デバイス値が変化するタイミングが正常範囲内かどうかは、たとえば、デバイス値が"1"(オン)である期間の長さが正常範囲かどうかであってもよい。また、ある工程またはサイクルにおけるデバイス値の変化回数が正常範囲内かどうかが判定されてもよい。あるデバイスから収集されたデバイス値が正常条件を満たしていない場合、そのデバイスは、いつもと違う振る舞いのデバイスであるとして、非正常デバイスと呼ばれてもよい。CPU41aは、Web形式の分析レポートを作成し、通信部43および通信ケーブル9bを介して分析レポートをPC2のWebブラウザに提供してもよい。CPU31がプロトコル変換機能を有している場合、CPU41aは、ユニット内部バス90、CPU31、通信部33および通信ケーブル9aを介して、分析レポートをPC2に送信してもよい。分析レポートは、グラフ表示部品や数値表示部品などを有してもよい。これらの表示部品は、フロントエンドの構造を記述するマークアップデータ(例:HTMLデータ)、装飾を記述するスタイルデータ(例:CSSデータ)および動的な処理を記述するコード(例:JavaScript(登録商標)コード)などにより実現される。HTMLはハイパーテキストマークアップ言語の略称である。CSSはカスケーディングスタイルシートの略称である。
【0028】
図4はPC2のCPU11によって実現される機能を説明する図である。プロジェクト編集部50は、CPU11がプロジェクト編集プログラム14aを実行することで実現される機能である。プロジェクト編集部50は、操作部8を通じて入力されるユーザ指示にしたがってユーザプログラムを含むプロジェクトデータを作成する。Webサーバ51は、HTTP(ハイパーテキストトランスファープロト)にしたがってWebブラウザ60と通信してWebブラウザ60に表示部品を提供する。プロトコル変換部52は、HTTPを所定の通信プロトコルに変換する。所定の通信プロトコルとは、通信部13aと通信部33との間の通信で利用される通信プロトコルである。たとえば、Webブラウザ60がHTTPリクエストにより分析レポートを要求すると、Webサーバ51はHTTPリクエストをプロトコル変換部52に渡す。HTTPリクエストには、CPU41aで実行され、分析レポートを提供する拡張ユニット4a(Webサーバ)のURL(ユニフォームリソースロケータ)が含まれている。プロトコル変換部52は、HTTPリクエストをカプセル化して、所定の通信プロトコルで送信可能な要求信号(コマンド)に変換する。この要求信号は、基本ユニット3のCPU31に渡され、さらに、拡張ユニット4aのCPU41aに渡される。CPU41aは、CPU31を介してCPU11に分析レポートを返信する。CPU11のWebサーバ51は、分析レポートをWebブラウザ60に渡す。これによりWebブラウザ60は表示部7に分析レポートを表示する。
【0029】
ダウンロード部53は、運転記録などを基本ユニット3からダウンロードして記憶装置12に格納する。デバッグ部54は、ユーザプログラムをデバッグし、表示部7にデバッグ結果を表示する。ラダーモニタ部56は、ユーザプログラムに記述されているシンボルに格納される値を運転記録から取得して、ユーザプログラム中のシンボルに対してその値を強調表示する。たとえば、ラダープログラムのラダー図に描画されるデバイスに対して、運転記録から取得されたデバイス値を関係づけて表示してもよい。リレーションマップ部55は、分析レポートにおいて表示される非正常デバイスに関連しているデバイスを示すリレーションマップを作成して表示部7に表示する。非正常デバイスとは、そのデバイス値が正常条件を満たしていないか、または、そのデバイス値の変化するタイミングが正常条件を満たしていないデバイスである。リレーションマップは、たとえば、非正常デバイスに対して影響を与えるデバイス(入力デバイス)と非正常デバイスとの関係を視覚的に示すUIである。リレーションマップは、非正常デバイスから影響を受けるデバイス(出力デバイス)と非正常デバイスとの関係も表示してもよい。デバッグ部54は、非正常デバイスとその関連デバイスとをラダープログラムを分析することで取得し、リレーションマップを作成する。
【0030】
受付部57は、ユーザプログラムに対する編集操作およびデバッグ処理に対する操作などを受け付ける。通知処理部58は、PLC1において通知が発行されているかどうかをポーリングにより取得し、取得した通知を表示部7に表示する。通知としては、たとえば、分析レポートの作成が完了したことなどである。再生部59は、たとえば、受付部57または連携部64から入力される再生要求に応じて、ダウンロード部53に運転記録をダウンロードさせて記憶装置12に保存させる。再生要求には、たとえば、運転記録を特定可能な識別情報(例:固有の識別情報やPLC1における保存パス名)などが含まれていてもよい。再生部59は、記憶装置12に保存されている運転記録を再生して表示部7に表示する。再生部59は、デバック部54の代わりに、ラダーモニタ部56を有していてもよい。あるいは、再生部59がデバック部54に含まれていてもよい。再生部59は、PLC1からリアルタイムで取得される時系列のデバイス値を波形化して表示したり、運転記録に含まれる時系列のデバイス値を波形化して表示したりしてもよい。
【0031】
Webブラウザ60は、Webアプリケーション61を実行することで分析レポートを表示部7に表示してもよい。Webアプリケーション61は、たとば、HTMLデータ、CSSデータおよびjava(R)スクリプトなどにより構成される。Webアプリケーション61は、拡張ユニット4aから提供されてもよい。通信処理部62は、Webサーバ51との通信を処理する。データ取得部63は、分析レポートに表示すべき運転記録をプロジェクト編集部50から取得する。運転記録は、ダウンロード部53によって記憶装置12にすでに保存されているものとする。連携部64は、分析レポートにおいてユーザにより指定または選択されたデバイスなどを示す指定情報をデバッグ部54などに渡す。これにより、デバッグ部54は、分析レポートにおいて指定された非正常デバイスのリレーションマップを表示したり、ラダープログラムにおいて非正常デバイスが記述されている部分を表示したりすることができる。ユーザは、非正常デバイスに関してラダープログラムを容易に編集することができる。描画部65は分析レポートを表示部7に表示する。また、連携部64は、分析レポートにおける再生時刻(選択時刻)と、プロジェクト編集部50における運転記録の再生時刻とが同期するように時刻管理を実行する。
【0032】
図5はPLC1においてCPU31とCPU41aとが制御プログラムを実行することで実現する機能を示している。CPU31においてコマンド処理部71は、PC2から受信されるコマンドを解釈し、解釈結果に対応した処理を実行する。たとえば、HTTPリクエストをカプセル化して作成された要求信号が受信されると、コマンド処理部71は、要求信号をCPU41aに転送する。要求信号に対する応答信号がCPU41aから受信されると、コマンド処理部71は、応答信号をPC2へ転送する。収集部72は、基本ユニット3や拡張ユニット4bからシンボル値(デバイス値や変数に格納された値)を収集してリングバッファ36に格納する。ロギング部73は、収集されたシンボル値などに基づき、何らかのエラーまたはトラブル(非正常イベント)がPLC1において生じているかどうかを判定する。たとえば、ロギング部73は、収集されたシンボル値が記録条件を満たしているかどうかを判定してもよい。収集されたシンボル値が記録条件を満たしている場合に、ロギング部73は、当該シンボル値を運転記録74内の稼働ログ76として保存する。たとえば、ロギング部73は、運転記録74を格納するためのフォルダを作成し、そこに稼働ログ76を保存する。ロギング部73は、運転記録を作成したときに実行されていたプロジェクトデータ75をプロジェクト記憶部35から読み出して、運転記録74内に保存する。さらに、ロギング部73は、運転記録74を作成したことを分析部83に通知する。
【0033】
なお、CPU31またはCPU41aは、オペレータの入力に従って後述される学習モデルの生成や、分析、分析レポートの生成に利用する制御サイクルを設定するための設定部を有していてもよい。制御サイクルは、サイクルの基準となるタイミングを指定することで設定される。制御サイクルの設定はサイクル設定と呼ばれてもよい。たとえば、サイクル設定は、サイクルの開始タイミングを規定するシンボル名と、シンボル値の立上り/立下りのエッジ情報とを含む。サイクル設定は、サイクルの開始タイミングを規定するシンボル名と、シンボル値の立上り/立下りのエッジ情報とによるサイクルの開始タイミングの設定情報と、サイクルの終了タイミングを規定するシンボル名と、シンボル値の立上り/立下りのエッジ情報とによるサイクルの終了タイミングの設定情報を含んでいてもよい。設定部による制御サイクルの設定はCSV等のファイル形式でPLC1に提供され、設定部がCSV等のファイルを読み出して制御サイクルを設定してもよい。たとえば、設定部によって設定された制御サイクルは、当該サイクルに同期するデバイスを分類して当該分類情報を属性情報としてモデルへ付加したり、分析対象とするデバイスを制御サイクルによって絞ったり、制御サイクルに同期して表示される分析レポートを生成したりするために用いられる。設定される制御サイクルは複数であってもよい。また、制御サイクルは必ずしも設定される必要はない。たとえば、正常時におけるシンボル値の取り得る値が予め決まっている場合、シンボル値がその予め決まっている取り得る値か否かを判定することで、非正常シンボルかどうかが判定されてもおい。
【0034】
CPU41aにおいてプロトコル変換部81は、PC2からCPU31を介してカプセル化されて転送されてきたHTTPリクエストをプロトコル変換して要求信号からとりだす。プロトコル変換部81は、HTTPリクエストに対してWebサーバ82から送信される応答情報をカプセル化してCPU31に渡す。以下においてもPC2のWebブラウザ60と、拡張ユニット4aのWebサーバ82とは、PC2内のWebサーバ51やプロトコル変換部52、81、コマンド処理部71などを介して間接的に通信することができる。プロトコル変換部52、81は透過的なトンネル(例:TCPトンネル)を提供してもよい。Webサーバ82は、分析部83により作成された分析レポートをPC2へ提供する。分析部83は、運転記録74内の稼働ログ76を分析し、分析結果77を作成して、ロギング部73に渡す。分析部83が分析結果77を作成すると、ロギング部73は、プロジェクトデータ75および稼働ログ76に加えて、分析結果77を含む運転記録74に追加する。運転記録74は、運転記録記憶部37に格納される。このように、運転記録74は、PLC1において異常なイベントが発生したときのプロジェクトデータ75、稼働ログ76および分析結果77が関連付けて記憶されるため、異常なイベントが発生したときのPLC1の状態を正確に再現しやすくなる。たとえば、ラダー図上でデバイス値の変化を視覚的に再現することで、ユーザは、ラダープログラムをデバッグしやすくなるであろう。とりわけ、PC2に保存されているプロジェクトデータを用いると、異常なイベントが発生したときのPLC1の状態を正確に再現することが困難となることがある。PC2に保存されているプロジェクトデータと、異常なイベントが発生したときにPLC1で実行されていたプロジェクトデータ75が一致しないことがあるからである。そこで、異常なイベントが発生したときにPLC1で実行されていたプロジェクトデータ75が運転記録74に保存される。通知発行部84は、分析結果77が発行されると、通知を発行する。この通知は、CPU11に送信される。
【0035】
<ユーザインタフェース(UI)>
図6および
図7は表示部7に表示されるプロジェクト編集プログラム14aのUI100を示している(プロジェクト編集プログラム14aを実行することによりUI100が表示部7に表示される)。モード選択メニュー101は、プロジェクト編集プログラム14aが備える複数のモードを選択可能に表示する。複数のモードは、編集モード、モニタモード、リプレイモード(デバッグモード)などを含む。
図6に示された編集モードは、プログラム表示領域104に表示されるラダープログラムを編集するモードである。プロジェクト表示領域102は、プロジェクトを構成する情報を表示する。この情報としては、PLC1を構成している基本ユニット3および拡張ユニット4の仕様情報および設定情報、デバイスの割り当て情報、運転記録の設定情報、ラダープログラムなどがある。編集モードにおいて、プログラム表示領域104は、プロジェクト表示領域102において指定されたラダープログラムを編集可能に表示する。
図6においては、入力部、出力部および加工部状態と命名されたプログラムモジュールを有するラダープログラムが表示されている。とりわけ、複数のプログラムモジュールはタブ107によって選択可能であり、
図6では、入力部に対応するタブ107が選択されている。
【0036】
モニタモードは、PLC1により発行される通知を待ち受けるモードである。拡張ユニット4aが分析結果を作成したことを示す通知を発行すると、CPU11は、通知を表示するためのダイアログなどを表示部7に表示する。モニタモードのユーザインタフェースは、基本的に、編集モードと同様である。
【0037】
図8は通知ダイアログ108を示している。通知ダイアログ108は、通知を発行したアプリケーションまたは機能の名称、通知の内容、通知の発生件数、通知の発生日時などを表示する。通知ダイアログ108を表示するための通知情報には、分析レポートのURLが含まれている。表示ボタン109が押し下げられると、CPU11は、分析レポートのURLをWebブラウザ60に渡す。これにより、Webブラウザ60は、URLで指定されたWebサーバにアクセスして、分析レポートの表示データ(Webアプリケーション61)を取得して、分析レポートを表示する。
【0038】
図7が示すように、リプレイモードは、運転記録をラダープログラム上で再現したり、運転記録を波形として表示したりするモードである。ポインタ103は、操作部8に対するユーザ操作に連動して移動し、ボタンなどを押し下げするために使用されたり、オブジェクトを選択したりするために使用される。たとえば、プロジェクト表示領域102において表示された分析レポートがポインタ103によりダブルクリックされると、CPU11はWebブラウザ60に分析レポートを表示させる。
【0039】
リプレイモードでは、プログラム表示領域104に、運転記録に含まれているデバイス値がラダープログラム上に表示される。リレーデバイス(ビットデバイス)の場合、デバイス値が0であるか、1であるかが視覚的に区別可能に表示される。視覚的に区別可能とは、異なる色による表示や異なるアイコンの表示を含む。ワードデバイスの場合、たとえば、デバイス値が10進化されて表示されてもよい。その他、16進化されたデバイス値など、他の数値表示形式が採用されてもよい。
【0040】
デバイス値は時間とともに変化しうる時系列データであるため、各デバイス値は、収集された時刻を示す時刻情報に紐づけられている。シークバー105aは、デバイス値の再生時刻を示すとともに、再生時刻を指定するためにポインタ103により操作されることがある。運転記録の再現中は、再生時刻の経過に連動して、シークバー105aが左から右へと移動する。時刻指定部106aは、再生時刻を進めたり、再生時刻を戻したり、自動的な再生の開始を指示したり、再生を停止したりすることを指示するためのコントロールオブジェクトである。
【0041】
[分析レポート]
図9はWebブラウザ60がWebアプリケーション61を実行することで表示部7に表示される分析レポート110を示す。なお、分析レポート110は、プロジェクト編集プログラム14aのUI100と一緒に表示部7に表示される。つまり、UI100のウインドウと、分析レポート110のウインドウとは異なるウインドウとして表示される。ただし、UI100と分析レポート110とが単一のウインドウ内に表示されてもよい。また、分析レポート110は、表示部7に表示されてもよいし、プログラマブル表示器、タブレット、スマートフォンなどの他の表示装置に表示されてもよい。
【0042】
検知マップ111は、PLC1において実行される複数の工程のそれぞれについて開始タイミングと終了タイミングとを表示する。一般に、開始タイミングから終了タイミングまでの期間はサイクルと呼ばれる。
図9において、横方向に延びる矩形は、工程が実行中である期間(サイクル)を示している。この矩形は、左が古く、右が新しいことを示す。時刻バー112aは、運転記録データの保存トリガが発生したタイミングを示している。上述したように、運転記録データは、保存トリガが発生したタイミング以前に収集されたデータとこのタイミングより後に収集されたデータとを保持している。そのため、時刻バー112aの前後にデータが示されている。一方で、時刻バー112eは、選択中の時刻を示しており、ユーザのドラッグ操作またはドラッグアンドドロップ操作により、所望の時刻(左右)に移動できるようになっている。ドラッグアンドドロップではなく、ユーザが検知マップの所望位置をクリックすると、その所望位置に時刻バー112eがジャンプするようにしても構わない。このようにして、ユーザは、時刻バー112eを操作することにより、分析結果の表示を更新することができる。時刻バー112eの操作に従って、後述する、検知リスト114、画像表示領域113、および、分析コメント116の少なくとも1つまたは全部を連動して更新させ(時刻同期させ)、対応する分析結果が表示されてもよい。なお、時刻バー112a、112eは、それぞれ異なる色で描画されてもよいし、実線と破線とで描画されたりしてもよい。これにより、時刻バー112a、112eの識別力が向上する。
【0043】
ここで、検知マップ111の工程1の中に丸印が2つ記載されているが、これは、検知対象デバイスがいつもと異なる状態になったタイミングを示している。左側の丸印は、デバイスR001とMR001がいつもと異なる状態になったタイミング(いずれも14:50:45)を示す。右側の丸印は、デバイスR004がいつもと異なる状態になったタイミング(14:59:01)を示す。
図9は、検知リスト114においてユーザがR004のデバイス欄を選択した状態を示しており、検知マップ111の時刻バー112eは右側の丸印と重なる位置に表示されている。
【0044】
検知マップ111の時刻バー112eの表示位置は、検知リスト114におけるユーザのデバイス選択に連動している。
図9に示す状態において、MR001のデバイス欄が選択(クリック)されると、
図10が示すように、MR001が強調表示されるとともに、検知マップ111の時刻バー112eが2つの丸印のうち左側の丸印と重なる位置に移動する(R001のデバイス欄を選択したときも同様である)。また、時刻バー112eの移動に応じて、検知リストの時刻バー112fも1つ上に移動(連動)する。
【0045】
いつもと異なる状態とは、たとえば、デバイス値が正常範囲を逸脱したり、デバイス値が変化するタイミングまたは回数が正常範囲を外れたりすることである。製品の製造工場では、日々、同一の製品が大量生産される。つまり、同一の工程が何度も繰り返し実行される。そのため、いつもと異なる状態を検知して表示することは、ラダープログラムを改良したり、生産設備を見直したりするうえで、非常に役に立つ。いつもと同様の状態(正常状態)を定義する正常範囲(正常条件)は、マスターデータにより定義されてもよいし、デバイス値の学習結果により定義されてもよい。検知マップ111において、工程を示す矩形は、時間の経過にしたがって右から左に移動する(上述したように、時刻は、左が古く、右が新しい)。
【0046】
画像表示領域113は、PLC1において取得されたカメラ画像を表示する。カメラ画像も運転記録に含まれていてもよい。
図9では、マスターデータのカメラ画像と、今回のカメラ画像とが対比可能に表示されている。カメラ画像も時系列データであるため、シークバー105bは、カメラ画像の再生時刻を示し、再生時刻の経過にしたがって左から右に移動する。時刻バー112bは、選択中の時刻を示しており、
図9では、検知対象デバイスR004がいつもと異なる状態になったタイミングを示している。時刻指定部106bは、カメラ画像の再生時刻を進めたり、再生時刻を戻したり、再生の開始を指示したり、再生を停止したりすることを指示するためのコントロールオブジェクトである。なお、連携部64および再生部59は、検知マップ111の再生時刻、カメラ画像の再生時刻、および、UI100における再生時刻が同期するように管理している。これにより、UI100における再生時刻と、分析レポート110における再生時刻とが一致する。
【0047】
検知リスト114は、いつもと異なる状態になったデバイスと、その状態が発生した時刻(デバイス値の収集時刻)とを示す。CPU11は、検知リスト114に表示されたデバイスに対するクリックを検知すると、プロジェクト編集部50の動作モードをリプレイモードへ切り替えてもよい。CPU11は、クリックされたデバイスの識別情報と、再生時刻情報(デバイス値の収集時刻)と、分析対象となった運転記録を特定する情報(保存パス等)をデバッグ部54に渡す。これにより、分析対象となった運転記録を用いてリプレイモードに移行し、その際に分析レポート110の再生時刻と、プロジェクト編集部50の再生時刻情報が同期する。その結果、
図7が示すように、運転記録74がラダープログラムと関連して再生される。なお、
図7は、
図9の検知リスト114においてデバイスR004が選択された状態で、UI100のリプレイモードを起動したときの表示画面に相当する。
図7のシークバー105aは、デバイスR004がいつもと異なる状態になった時刻(14:59:01)を示している。また、プログラム表示領域104では、この時刻(14:59:01)における各デバイスの状態が視覚的に区別可能に表示される。なお、分析レポート110が表示される前に、すでにプロジェクト編集部50がリプレイモードで動作していてもよい。この場合、分析レポート110において、非正常デバイスが選択されると、CPU11は、非正常状態(いつもと異なるイベント)が発生した時刻をプロジェクト編集部50に渡し、プロジェクト編集部50は、当該時刻に同期したデバイス値を記憶装置12から読み出して、ラダープログラム上でデバイス値を表示してもよい。
【0048】
図9において、時刻バー112cは、運転記録データの保存トリガが発生したタイミング(14:59:06)を示している。また、時刻バー112fは、上述したように、検知マップ111の時刻バー112eが示す時刻と連動している。たとえば、時刻バー112eを左側の丸印よりも左方に移動させると、検知リスト114において時刻バー112fはR001のデバイス欄の上端線と重なる位置に移動する。
【0049】
ここで、
図10および
図11は、分析レポート110(
図9)とプロジェクト編集プログラム14aのUI100(
図7)とが連動する様子を説明するための説明図である。上述したように、
図7は、
図9の検知リスト114においてデバイスR004が選択された状態で、UI100のリプレイモードを起動したときの表示画面に相当する。
【0050】
図10が示すように、ユーザが検知リスト114の中でMR001を選択(クリック)すると、検知マップ111において時刻バー112eが連動して移動する。時刻バー112eの移動に伴って、時刻バー112fも1つ上に移動する。また、時刻バー112eの移動に伴って、画像表示領域113における時刻バー112bも左へ移動(連動表示)する。さらに、後述する分析コメント116も、MR001の選択に伴って表示が切り替わる。詳細は後述する。
【0051】
一方、
図11が示すように、時刻バー105aは、
図7よりも少し左(時間的に前)に移動する。このとき、時刻バー105aは、デバイスMR001がいつもと異なる状態になった時刻(14:50:45)を示すようになる。このように、連携部64によって、分析レポート110の時刻バー112eや時刻バー112fによって特定される時刻と、運転記録の再生時刻(時刻バー105aによって特定される時刻)とは、同期して表示されることになる。
【0052】
なお、
図10および
図11では、予めプロジェクト編集プログラム14aのUI100を起動した状態での連動表示について説明されているが、たとえば、先に分析レポート110の検知リスト114においてMR001のデバイス欄を選択した状態で、UI100を起動した場合には、
図10および
図11に示す変化後の状態でUI100が起動される。
【0053】
また、
図10では、ユーザは検知リスト114の中からデバイスを1つ選択しているが、複数のデバイスが選択されてもよい。この場合、最上位のデバイス(時間的に一番古いデバイス)を選択したときと同様の処理が行われる。すなわち、たとえばMR001とR004の両方を選択した状態で、UI100のリプレイモードが起動されると、
図11に示す変化後の状態でUI100が起動される。本明細書でいう時刻の同期再生には、時刻バー112fによって特定される時刻インデックスと、運転記録の再生時刻インデックスとの同期再生を含む概念である。つまり、時刻そのものでなくても、時刻を表すインデックス同士を同期再生しても構わない。
【0054】
図12が示すように、CPU11は、非正常デバイスの名称と、そのデバイスコメント115をプロジェクトデータから読み出して検知リスト114に表示してもよい。デバイスコメント115はデバイスの用途などを示す。よって、ユーザは、非正常デバイスの用途などを容易に理解できるであろう。
【0055】
分析コメント116は、分析結果に含まれるコメントと、検知リスト114で選択されたデバイスについての、マスターデータと、今回のデバイス値の時系列データとを表示する。分析コメント116に表示されるデータは、1制御サイクル分のデータである。時刻バー112dは、いつもと異なる状態が発生したタイミングを示す。
【0056】
図9および
図12では、デバイスR004のデバイスについて、いつもと異なる状態が発生した1制御サイクル分のデータを示している。より具体的には、マスターデータでは、1制御サイクルにおいて、オフ→オン、オン→オフという2回の変化が発生するのに対し、今回のデータでは、変化が全く発生していない。そこで、いつもと異なる状態、すなわち、オフ→オンとなったタイミングに、時刻バー112dが表示されている。
【0057】
ここで、
図9および
図12が示す分析コメント116において、ユーザが検知リスト114の中でMR001を選択(クリック)すると、
図10に示される表示に切り替わる。
図10では、MR001のデバイスにおいて、いつもと異なる状態が発生した様子を示している。なお、本実施形態では、時刻バー112e、112b、112fの各々は、いずれも同一のタイミングを示している。
【0058】
図12が示すように、分析レポート110は、リレーションマップの表示を指示するボタン117aと、波形の表示を指示するボタン117bとを有していてもよい。以下で、リレーションマップと波形の表示が詳細に説明される。
【0059】
[リレーションマップ]
図13はリレーションマップ120を示している。リレーションマップ120は、いつもと異なる状態になったデバイス(非正常デバイス)に対してラダープログラムにおいて関連している他のデバイスを表示するUIである。これにより、ユーザは、非正常デバイスと他のデバイスとの関係を容易に理解できる。一般に、PLC1において利用されるデバイスの数は数百から数万であるため、ユーザは、いつもと異なる状態になったデバイスから、その原因となったデバイスを特定することは容易ではない。CPU11は、非正常デバイスについてラダープログラム内を検索し、非正常デバイスに関する記述を発見し、当該記述を分析することで、関連デバイスを特定する。この例では、ラダープログラム内の出力部において、非正常デバイス(例:R004)が記述されており、関連デバイスとしてMR000、MR001、MR002が存在する。CPU11は、ラダープログラムから特定した非正常デバイス、関連デバイスおよびプログラムモジュールをツリーのように表示する。この例では、出力部における演算のために入力されるデバイスが左側に表示され、プログラムモジュールが真ん中に表示され、その右側に非正常デバイスが表示されている。
図13が示すように、ポインタ103によりプログラムモジュールがダブルクリックされると、CPU11は、その情報をプロジェクト編集部50に渡し、該当するプログラムモジュールをプログラム表示領域104に表示してもよい。分析レポートは、全デバイスを対象として作成されてもよいし、一部のデバイスに限定して差作成されてもよい。一部のデバイスに限定することで、分析時間が短縮されるであろう。分析精度次第では、分析結果にノイズが多くなることが予想されるが、一部のデバイスに限定することにより、ノイズが削減されるであろう。このような一部のデバイスを対象とした分析レポートの場合、異常の要因となったデバイスは、いつもと違うと判分析されたデバイス、または、分析対象外のデバイスのいずれかに存在する。そのため、リレーションマッピングにおいて、分析対象外になったデバイスが強調表示されてもよい。
【0060】
[波形表示]
図14はCPU11が波形表示プログラム14bを実行することで表示部7に表示する波形UI130を示している。デバイスリスト131は、表示対象となるデバイスのリストを示す。たとえば、CPU11は、検知リスト114においてユーザにより選択または指定されたデバイスの名称をデバイスリスト131に列挙する。
図14は、
図9において、R001、MR001及びR004を選択した状態で、波形UI130を起動したときの様子を示している。なお、工程の制御サイクル(開始から終了まで)を示すリレーデバイスMR000は、ユーザの指定がなくても、CPU11によりデバイスリスト131に列挙される。すなわち、MR000は、上述したサイクル設定により規定されるデバイスであり、ユーザによる指定の有無に拘わらず、波形UI130に自動的に表示される。なお、波形UI130に表示されるデバイス波形を構成するデバイス値の数は、ユーザ設定により予め指定されてもよい。たとえば、分析レポート110の検知リスト114で選択されたデバイス欄に対応する時刻を基準として(基準の前、基準の後ろ、基準の前後で)所定数のデバイス値が表示されてもよい。他の例としては、波形UI130に表示されるデバイス波形を構成するデバイス値として、運転記録に含まれるデバイス値の全てが表示されるように、波形が縮小表示されてもよい。この場合、拡大表示していくことで、上述した基準となる時刻近傍のデバイス波形を、より明確に視認することができる。
【0061】
波形表示領域132は、選択されたデバイスについてのデバイス値の波形を示す。CPU11は、デバイス値の時系列データを運転記録から読み出して、波形表示領域132に表示する。CPU11は、波形に対しても時刻バー112gを表示してもよい。これにより、ユーザは、波形のどの部分でいつもと異なるイベントが発生したかを把握しやすくなろう。時刻バー112gが示す時刻は、時刻バー112e、112b、112fが示す時刻と一致している。これは、連携部64が、分析レポート110における再生時刻とイベント発生時刻と、再生部59におけるそれらとが一致するように時刻管理しているからである。
【0062】
ここで、
図15は、
図14において一点鎖線の領域を拡大した拡大図である。
図15において、デバイスMR001とR004について破線の波形が示されているが、これは、説明の便宜上記載したものであり、実際の表示画面上には表れない。
図15では、連携部64によって、分析レポート110の検知リスト114における選択デバイスによって特定される時刻と、波形UI130の時刻バー112gとが同期して再生されることを説明する。
【0063】
図14および
図15は、上から順に、MR000、R001、MR001、R004のデバイス波形が示されている。MR000は、上述したように制御サイクルを示すデバイスであり、オフ→オンから始まり、オン→オフを経て再びオフ→オンするまでの期間が1制御サイクルに相当する。
図14において、本来であれば、R001は常時OFFしているはずのデバイスである。しかし、何らの異常により、制御サイクルが始まるタイミング(MR000がオンするタイミング)で、R001がオンしている(異常が発生している)。その結果、
図7が示すR000(
図14には図示されていない)がオンしても、MR001はオンしない(
図14では、この様子を点線で示す)。さらに、MR001がオンしないことによって、
図13が示す出力部のR004もオンしない(
図14では、この様子を点線で示す)。
【0064】
図14は、
図9の検知リスト114においてデバイスR001が選択された状態で波形UI130を起動したときの様子を示す。つまり、R001がいつもと違う状態になった時刻に、時刻バー112gが表示されている。この状態で、
図9の検知リスト114においてデバイスMR001が選択されると、時刻バー112gは、MR001がいつもと違う状態になった時刻に表示される(
図15の時刻バー112ga参照)。他にも、
図9の検知リスト114においてデバイスR004が選択されると、時刻バー112gは、R004がいつもと違う状態になった時刻に表示される(
図15の時刻バー112gb参照)。このように、連携部64により、分析レポート110の検知リスト114における選択デバイスによって特定される時刻と、波形UI130上の時刻バー112gが示す時刻とは、同期指定して再生されることになる。
【0065】
なお、
図15は、予め波形UI130を起動した状態での連動表示について説明しているが、たとえば、先に検知リスト114の選択デバイスを変更(たとえばR001からMR001またはR004に変更)した状態で、波形UI130が起動されてもよい。この場合には、
図15が示す変化後の状態で波形UI130が起動される。また、
図15では、ユーザは検知リスト114の中からデバイスを1つ選択しているが、複数のデバイスを選択してもよい。この場合、最上位のデバイス(時間的に一番古いデバイス)を選択したときと同様の処理が行われる。すなわち、たとえばMR001とR004の両方を選択した状態で波形UI130が起動されると、時刻バー112gは、
図15が示す時刻バー112gaの位置に表示(連動表示)される。
【0066】
図14では、いずれのデバイスもリレーデバイスであるが、ワードデバイスが選択されてもよい。CPU11は、ワードデバイスのデバイス値を波形化して波形表示領域132に表示してもよい。
【0067】
図14では、運転記録74に含まれるデバイス値が表示されているが、これと重ねてマスターデータが表示されてもよい。マスターデータは、いつもと同じデバイス値の時系列データである。そのため、これらを重ねて表示することで、どの時点で、いつもと異なるイベントが発生したかをユーザは理解しやすくなるであろう。
【0068】
[事例]
図16はPLC1により制御されるフィールドデバイス10の一例を示している。この例では、ベルトコンベヤ140aによりワークW1が搬送される。センサ141aは、ワークW1が所定位置に到着したことを検知する。ベルトコンベヤ140bによりワークW2が搬送される。センサ141bは、ワークW2が所定位置に到着したことを検知する。ロボット143は、ワークW1とワークW2とを作業台142上で組み立ててワークW3を製造し、ワークW3をベルトコンベヤ140cに積載する。
【0069】
図17は
図16に示された事例を実現するラダープログラムを示している。プログラムモジュール150aは入力部を示している。入力デバイスR000はセンサ141aの検知結果を示すリレーデバイスである。センサ141aがワークW1を検知している場合、入力デバイスR000がオンになる。センサ141aがワークW1を検知していない場合、入力デバイスR000がオフになる。入力デバイスR001は、ロボット143がワークW1を受け入れ可能である場合に、オフとなる。入力デバイスR001は、ロボット143がワークW1を受け入れ可能でない場合に、オンとなる。MR001は、ワークW1の準備が完了したことを示すリレーデバイスである。プログラムモジュール150aの1行目によれば、入力デバイスR000がオンで、かつ、入力デバイスR001がオンでない場合に、MR001がオンになる。
【0070】
入力デバイスR002はセンサ141bの検知結果を示すリレーデバイスである。センサ141bがワークW2を検知している場合、入力デバイスR002がオンになる。センサ141bがワークW2を検知していない場合、入力デバイスR002がオフになる。入力デバイスR003は、ロボット143がワークW2を受け入れ可能である場合に、オフとなる。入力デバイスR003は、ロボット143がワークW1を受け入れ可能でない場合に、オンとなる。MR002は、ワークW2の準備が完了したことを示すリレーデバイスである。プログラムモジュール150aの2行目によれば、入力デバイスR002がオンで、かつ、入力デバイスR003がオンでない場合に、MR002がオンになる。
【0071】
プログラムモジュール150bは出力部を示している。MR000は製造ラインが稼働中であることを示すリレーデバイスである。MR000がオンで、かつ、MR001がオンで、かつ、MR002がオンである場合に、リレーデバイスR004がオンになる。リレーデバイスR004は加工開始信号と呼ばれ、ロボット143に加工開始(組み立て開始)を指示する。
【0072】
プログラムモジュール150cは加工部状態を示している。DM0はデータメモリと呼ばれるデバイスであり、ワークW1に関して0(受け入れ可能)、1(ワークが異常)、2(ワークが詰まっている)、3(材料不足)などを示す。プログラムモジュール150cの1行目によれば、DM0が0以外である場合に、R001がオンにセットされる。DM1もデータメモリと呼ばれるデバイスであり、ワークW2に関して0(受け入れ可能)、1(ワークが異常)、2(ワークが詰まっている)、3(材料不足)などを示す。プログラムモジュール150cの2行目によれば、DM1が0以外である場合に、R003がオンにセットされる。
【0073】
デバッグの一例として、ワークW1に異常が発生し、ロボット143が加工を開始しなかった例を取り上げる。まず、デバッグを開始した時点では、完成品であるワークW3が排出されないというエラーイベントが生じているものと仮定されている。ユーザは、なぜ、ワークW3が排出されなかったのか、その原因を探ろうとする。
【0074】
ユーザは、プロジェクト編集プログラム14aを起動し、モニタモードを選択する。CPU11は、通知をPLC1から受信して、通知ダイアログ108を表示する。CPU11は、ユーザにより表示ボタン109が押し下げられたことを検知し、分析レポートをPLC1から取得して表示部7に表示する。
【0075】
図12が示すように、分析レポートの検知リスト114と分析コメント116によれば、加工開始信号であるR004がオンにならなかったために、ワークW1,W2の加工が実行されず、ワークW3が排出されなかったことがわかる。R001がオンしていることから、ワークW1の準備が完了しなかったことがわかるが、ワークW1の準備が完了しなかった原因まではわからない。
【0076】
CPU11は、
図9の分析レポート110の検知リスト114において、MR001、R001およびR004が選択され、かつ、ボタン117bが押し下げられたことを検知すると、
図14に示された波形UI130を表示部7に表示する。MR000は一つの加工サイクルを示すリレーである。つまり、MR000がオンになっている期間において、一つのワークW3が製造される。
【0077】
検知リスト114において複数のデバイスが選択された場合、上述したように、CPU11は、検知リストにおいて最も上に表示されているデバイス(先頭デバイス)がいつもと違った状態になった時刻を特定し、特定された時刻に時刻バー112gを表示する。この例では、R001が先頭デバイスであるため、R001がいつもと違う状態になったタイミングに時刻バー112gが設定される。この例によれば、R001が正常状態ではオフとなるタイミングでオンとなってしまっていることがわかる。また、正常状態ではオンになるべきMR001とR004がオフになっていることも視覚的に容易にわかる。
図14では、6サイクルに相当する波形が示されているが、CPU11は、時刻バー112gが示す時刻を含む1サイクルに相当する波形のみを切り出して拡大表示してもよい。
【0078】
次に、ユーザは、R004がいつもと異なる状態になった原因を探る。
図12において、R004が選択され、かつ、ボタン117aが押し下げられたことを検知すると、CPU11は、リレーションマップ120を表示部7に表示する。CPU11は、R004の記述を含む行をラダープログラムから抽出し、リレーションマップ120を作成する。リレーションマップ120は、分析レポート110やプロジェクト編集プログラム14aのUI100とは異なるウインドウに表示されてもよい。
図13が示すように、リレーションマップ120には、出力部(プログラムモジュール150b)の1行目において、R004に対してMR000、MR001、MR002が関連していることが示される。CPU11は、いつもと異なる状態になったデバイスとプログラムモジュールの行番号とを強調表示してもよい。また、リレーションマップ120において出力部のブロックがクリックされると、CPU11は、プログラム表示領域104に、プログラムモジュール150bを表示する。CPU11は、プログラムモジュール150bにおける各デバイスに、いつもと異なる状態になったタイミングで収集されたデバイス値を反映させる。
図13では、MR001がオフであり、その結果、R004がオフになったことが判明する。プログラムモジュール150bは、リレーションマップ120とともに同一のウインドウ内に表示されてもよい。
図13に示された展開ボタン121がクリックされると、CPU11は、MR001についてリレーションを展開して表示する。
【0079】
図18によれば、MR001の展開ボタン121aがクリックされ、さらにR001の展開ボタン121bがクリックされた状態が示されている。CPU11は、MR001の展開ボタン121aがクリックされると、ラダープログラムを検索し、MR001が記述されているプログラムモジュール150aの1行目(入力部の1行目)を抽出する。これにより、CPU11は、MR001の左側に入力部の1行目を示すブロックを表示し、さらに、入力部の1行目を示すブロックのさらに左側に、R000のブロックとR001のブロックとを表示する。分析レポートまたは運転記録によれば、R001がいつもと異なる状態にあることがわかる。そのため、CPU11は、R001のブロックを強調表示する。
【0080】
R001のブロックのそばに表示される展開ボタン121bがクリックされると、CPU11はR001について検索を実行し、プログラムモジュール150c(加工部状態)の1行目を発見する。CPU11は、R001のブロックの左側に加工部状態の1行目を示すブロックを表示し、さらに、そのブロックのさらに左側にDM0のブロックを表示する。DM0が"0"でなかったために、R001がオンとなり、R004がオフになったことが、最終的に、判明する。
【0081】
図18においてプログラム表示領域122は、抽出されたプログラムモジュールを示すとともに、R004がいつもと異なる状態になったタイミングにおける各デバイスのデバイス値を示している。空欄はデバイスがオフであることを示し、斜線はデバイスがオンであることを示す。CPU11は、各デバイスのデバイス値を、記憶装置12に記憶されている運転記録から取得してリレーションマップ120に反映する。
【0082】
図18には再生時刻を表示したり、再生時刻を指定したりするためのシークバーが示されていないが、シークバーがリレーションマップ120に設けられてもよい。これにより、ユーザは、リレーションマップ120においても容易にデバイス値の再生時刻を変更することができよう。この場合も、CPU11は、リレーションマップ120における再生時刻と他のユーザインタフェースにおけるデバイス値の再生時刻とを同期させる。
【0083】
リレーションマップ120において再生時刻を変更しながら、各デバイスのデバイス値を確認することで、ユーザは、デバイス値の異常状態がどのように連鎖したかを容易に理解できるようになろう。
【0084】
なお、いつもと異なるイベントが発生したデバイスはラダープログラム上で強調表示されてもよい。
図18が示すように、R001の周囲がハッチングまたは強調色で表示されてもよい。また、正常時のデバイス値がオフとなることが、表示されてもよい。これにより、ユーザは、正常なデバイス値を容易に理解できるようになろう。
【0085】
図18は、上述したように、デバイスR004が選択された状態でボタン117aが押し下げられたときに表示されるリレーションマップを示しているが、
図18が示すリレーションマップ120が表示された状態で、分析レポート111の時刻バー112eを左方に移動させていくと、強調表示されるデバイスが切り替わっていく。このことについて、
図19を用いて説明する。
【0086】
図19は、強調表示されるデバイスが切り替わっていく様子を示す説明図である。分析レポート111の時刻バー112eが、デバイスR001およびMR001についていつもと違うが検出されたタイミング(14:50:45)と、デバイスR004についていつもと違うが検出されたタイミング(14:59:01)との間にあってもよい。この場合、リレーションマップ120で強調表示されるのは、デバイスR001およびMR001のみである(デバイスR004の強調表示は消える)。そして、分析レポート111の時刻バー112eが、デバイスR001およびMR001についていつもと違うが検出されたタイミング(14:50:45)よりも左方にある場合、リレーションマップ120ではいずれのデバイスも強調表示されない。
【0087】
図19は、分析レポート11の時刻バー112eを左へ移動させると、徐々に強調表示されるデバイスが減っていく様子を示している。これにより、どのデバイスがトラブルの原因になったかを時系列に沿って追跡することが容易になる。なお、分析レポート11の時刻バー112eを右へ移動させていくと、徐々に強調表示されるデバイスが増えて行く。時刻バー112eがデバイスR001およびMR001についていつもと違うが検出されたタイミング(14:50:45)を過ぎると、デバイスR001、MR001およびR004の全てが強調表示される。言い換えると、強調表示されるデバイスは、分析レポート11の時刻バー112eが示す時刻には既にいつもと違うが検出されているデバイスが該当する。
【0088】
なお、
図18が示すリレーションマップ120には、分析レポート110を作成する際に分析対象外のデバイスが含まれる場合がある。この場合、この分析対象外のデバイスがリレーションマップ120上で強調表示されてもよい。なぜなら、いつもと違うと判定されたデバイス以外に、分析対象外のデバイスが、トラブルの要因となるデバイスに該当する可能性もあるからである。識別性を向上させるために、いつもと違うと判定されたデバイスの強調表示と、分析対象外のデバイスの強調表示とは、たとえば、線の種別や色を変える等、異なる強調表示にされることが好ましい。また、
図18が示すリレーションマップ120では、分析レポート110で選択されたデバイス(R004)に影響を与えるデバイス(MR001やR001)が、その選択デバイスより左方に表示されている。しかし、これは一例にすぎず、本発明はこれに限られない。たとえば、分析レポート110で選択されたデバイスから影響を受けるデバイスが、その選択デバイスより右方に表示されてもよい。
【0089】
<フローチャート>
図20はCPU11により実行される方法を示すフローチャートである。操作部8を通じてプロジェクト編集プログラム14aが起動されると、CPU11は、プロジェクト編集プログラム14aにしたがって以下の処理を実行する。
【0090】
ステップS1でCPU11(プロジェクト編集部50)はユーザにより指定されたプロジェクトデータを読み込む。これにより、CPU11(プロジェクト編集部50)はUI100を表示部7に表示する。プロジェクト表示領域102にはプロジェクトデータから読み込まれた情報が反映される。プログラム表示領域104にはプロジェクトデータに含まれるラダープログラムが表示される。
【0091】
ステップS2でCPU11(プロジェクト編集部50)は動作モードを編集モードに設定する。これにより、CPU11(受付部57)は、プログラム表示領域104に入力される編集指示を受け付け、編集指示にしたがってラダープログラムを編集する。
【0092】
ステップS3でCPU11(プロジェクト編集部50)は動作モードとしてモニタモードが選択されたかどうかを判定する。モード選択メニュー101においてモニタモードが選択されると、CPU11は、S4に進む。モード選択メニュー101においてモニタモードが選択されていない場合、CPU11は、S11に進む。
【0093】
ステップS4でCPU11(デバッグ部54)はPLC1において通知が発行されたかどうかを判定する。通知処理部58は、ポーリングにより、通知発行部84から通知を取得する。なお、ステップS4はオプションのステップである。通知が存在すれば、CPU11は、ステップS5に進む。
【0094】
ステップS5でCPU11(デバッグ部54)はWebブラウザ60に分析レポート110を表示する。デバッグ部54は、通知に含まれている分析レポートのURLをWebブラウザ60に渡す。Webブラウザ60は、URLにしたがってHTTPリクエストを生成して、Webサーバ51にアクセスする。Webサーバ51は、URLにしたがってプロトコル変換部52にHTTPリクエストを渡す。プロトコル変換部52は、HTTPリクエストをカプセル化して基本ユニット3のCPU31(コマンド処理部71)に渡す。コマンド処理部71は、ヘッダ情報などに基づき、カプセル化されたHTTPリクエストをCPU41aのプロトコル変換部81に渡す。プロトコル変換部81カプセル化されたHTTPリクエストからHTTPリクエストを取り出して、Webサーバ82に渡す。Webサーバ82は、分析レポート110を表示するためのWebアプリケーション61をHTTPレスポンスとしてプロトコル変換部81に渡す。プロトコル変換部81は、Webアプリケーション61をカプセル化して、コマンド処理部71に渡す。コマンド処理部71は、カプセル化されたWebアプリケーション61をプロトコル変換部52に渡す。プロトコル変換部52は、カプセル化されたWebアプリケーション61からWebアプリケーション61を取り出して、Webサーバ51に渡す。Webサーバ51は、Webアプリケーション61をWebブラウザ60に渡す。Webブラウザ60は、Webアプリケーション61を実行することで分析レポート110を表示部7に表示する。データ取得部63は、通信処理部62を介してWebサーバ51に運転記録74を要求する。Webサーバ51は、ダウンロード部53に運転記録74をPLC1からダウンロードして記憶装置12に記憶するよう指示する。ダウンロード部53は、運転記録74をPLC1からダウンロードして記憶装置12に記憶する。Webサーバ51は、データ取得部63から要求された運転記録74をデータ取得部63に渡す。描画部65は、運転記録74に含まれている分析結果77を分析レポート110に表示する。
【0095】
ステップS6でCPU11(デバッグ部54)は分析レポート110またはUI100において動作モードがリプレイモードに切り替えられたかどうかを判定する。操作部8により動作モードがリプレイモードに切り替えられると、CPU11は、ステップS7に進む。作モードがリプレイモードに切り替えられていない場合、CPU11は、ステップS5に進む。
【0096】
ステップS7でCPU11(ラダーモニタ部56)は記憶装置12にダウンロードされた運転記録74を表示部7に再生する。上述されたようにプログラム表示領域104にはラダープログラムに記述されているデバイスのデバイス値が運転記録74から読み出され、各デバイスに反映される。デバイスに反映されるとは、デバイスがオンかオフかが視覚的にわかるように表示されること、または、デバイスに格納されているデバイス値がそのデバイスに関連付けて表示されることをいう。デバイス値がそのデバイスに関連付けて表示されるとは、たとえば、そのデバイスが記述されている行において、そのデバイスの近くにデバイス値を表示することをいう。
【0097】
ステップS3でモニタモードへの切り替えが指示されていない場合、CPU11はS11に進む。ステップS11でCPU11はリプレイモードへの切り替えが指示されたかどうかを判定する。リプレイモードへの切り替えが指示されていなければ、CPU11はS2に進む。リプレイモードへの切り替えが指示されていれば、CPU11はS12に進む。
【0098】
ステップS12でCPU11は記憶装置12に保存されている運転記録74を再生する。なお、記憶装置12に運転記録74が保存されていない場合、CPU11はPLC1から運転記録74をダウンロードして記憶装置12に保存し、運転記録74を再生する。CPU11(再生部59)は、運転記録74に含まれる時系列データとしてのデバイス値をラダープログラムに重ねて表示する。また、再生部59は、時間の経過とともに運転記録74から次のデバイス値を読み出して、表示する。
【0099】
ステップS13でCPU11は分析レポート110を表示するかどうかを判定する。たとえば、操作部8を通じて分析レポート110の表示の指示が入力されたかどうかをCPU11が判定する。分析レポート110を表示しない場合、CPU11は、S12に戻る。なお、ここで、他のモードへの切り替えが指示された場合、CPU11は、動作モードを他のモードへ切り替える。分析レポート110を表示する場合、CPU11は、S14に進む。
【0100】
ステップS14でCPU11は、Webブラウザ60に分析レポート110を表示させる。
【0101】
[分析レポートの表示処理]
図21はステップS5、S14の分析レポートの表示処理の詳細を示している。
【0102】
ステップS21でCPU11は分析レポート110を表示させるためのURL(IPアドレス)をWebブラウザ60に指定する。分析レポート110を表示させるためのURLは、たとえば、運転記録74の分析結果77に含まれていてもよい。
【0103】
ステップS22でCPU11(Webブラウザ60)は、分析レポート110を表示させるためのURLにしたがってWebサーバ51にアクセスし、分析レポート110を表示するためのWebアプリケーション61を受信する。
【0104】
ステップS23でCPU11(Webブラウザ60)はWebアプリケーション61を実行することでWebブラウザ60に分析レポート110を表示する。
【0105】
ステップS24でCPU11はリレーションマップ120を表示するかどうかを判定する。たとえば、ボタン117aがクリックされると、CPU11はリレーションマップ120を表示すると判定し、ステップS25に進む。
【0106】
ステップS25でCPU11はリレーションマップ120を表示部7に表示する。たとえば、CPU11(連携部64)は通信処理部62を介してWebサーバ51にリレーションマップ120の表示要求(HTTPリクエスト)を送信する。この表示要求には、非正常デバイスの指定情報と非正常状態が発生したタイミングを示す時刻情報などが含まれる。Webサーバ51は、リレーションマップ120の表示要求をリレーションマップ部55に渡し、リレーションマップの表示部品を用意させる。リレーションマップ部55は、非正常デバイスの指定情報と非正常状態が発生したタイミングを示す時刻情報に基づき、運転記録74から、非正常状態が発生したタイミングの前後における非正常デバイスのデバイス値を読み出して、リレーションマップ120の表示部品を作成し、Webサーバ51に渡す。Webサーバ51はリレーションマップ120の表示部品をWebブラウザ60に渡す。Webブラウザ60はリレーションマップ120の表示部品にしたがってリレーションマップ120を表示する。あるいは、リレーションマップ部55はリレーションマップ120をWebブラウザ60とは異なるウインドウとして表示部7に表示してもよい。
【0107】
ステップS24でリレーションマップ120を表示しないと判定すると、CPU11は、S26に進む。ステップS26でCPU11は、指定されたデバイス値の波形を表示するかどうかを判定する。たとえば、いずれかの非正常デバイスが指定され、かつ、
図12に示されたボタン117bがクリックされると、CPU11は波形を表示すると判定し、ステップS27に進む。
【0108】
ステップS27でCPU11は波形UI130を表示部7に表示する。たとえば、CPU11(連携部64)は通信処理部62を介してWebサーバ51に波形UIの表示要求(HTTPリクエスト)を送信する。この表示要求には、非正常デバイスの指定情報と非正常状態が発生したタイミングを示す時刻情報などが含まれる。Webサーバ51は、波形UI130の表示要求を再生部59に渡し、波形UI130の表示部品を用意させる。再生部59は、非正常デバイスの指定情報と非正常状態が発生したタイミングを示す時刻情報に基づき、運転記録74から、非正常状態が発生したタイミングの前後における非正常デバイスのデバイス値を読み出して、波形UI130の表示部品を作成し、Webサーバ51に渡す。Webサーバ51は波形UI130の表示部品をWebブラウザ60に渡す。Webブラウザ60は波形UI130の表示部品にしたがって波形UI130を表示する。あるいは、再生部59は、波形表示プログラム14bを起動して、波形UI130をWebブラウザ60とは異なるウインドウとして表示部7に表示してもよい。
【0109】
ここで、ステップS25においてリレーションマップが表示された後、CPU11は、分析レポート110の時刻バー112eが操作されたか否かを判定する(ステップS28)。時刻バー112eが操作された場合、
図19を用いて上述されたように、CPU11(連携部64)は時刻バー112eが示す時刻に基づいて、既にいつもと違うが検出されているデバイスの強調表示を行う(ステップS29)。時刻バー112eが示す時刻によっては、いずれのデバイスも強調表示されない。
【0110】
また、ステップS27において波形表示がなされた後、CPU11は、分析レポート110の時刻バー112eが操作されたか否かを判定する(ステップS30)。時刻バー112eが操作された場合、CPU11(連携部64)は時刻バー112eが示す時刻に基づいて、波形表示の時刻バー112gを連動表示させる(ステップS31)。本実施形態では、
図19を用いて説明されたように、波形表示の時刻バー112gが連動表示されている。しかしこれは一例にすぎず、本発明はこれに限られない。たとえば、時刻バー112eが示す時刻に対応するデバイス波形が表示されるように、波形表示の表示範囲が連動してもよい。
【0111】
[プロジェクトデータ、稼働ログおよび分析結果の紐づけ]
図5に示された運転記録74では、プロジェクトデータ75、稼働ログ76および分析結果77が同一のフォルダに格納されることで、これらが紐づけられている。しかし、紐づけ手法はこれに限定されることはない。ロギング部73は、プロジェクトデータ75、稼働ログ76および分析結果77を圧縮して単一のファイルを生成してもよい。あるいは、ロギング部73は、固有の識別情報を用いて、プロジェクトデータ75、稼働ログ76および分析結果77を紐づけてもよい。以下では、プロジェクトデータ75、稼働ログ76および分析結果77を紐づけることが前提とされているが、これら三つの情報のうちの二つの情報が紐づけられてもよい。
【0112】
図22は、識別情報を用いたプロジェクトデータ75、稼働ログ76および分析結果77の紐づけ手法を示している。ロギング部73は、所定ベントを検知すると、運転記録74として、稼働ログ76およびプロジェクトID200を運転記録記憶部37に保存し、分析部83に通知する。所定イベントとは、たとえば、ユーザがPLC1を管理する上で注意すべきイベントであって、ユーザにより予め定められた記録条件を満たしたイベントである。ロギング部73は、たとえば、プロジェクト記憶部35からプロジェクトID200を取得するものとする。ロギング部73は、プロジェクトデータ75に対してハッシュ演算を施すことでプロジェクトID200を決定してもよい。このように、プロジェクトID200は、所定イベントが発生したときにPLC1で実行されていたプロジェクトデータ75の識別情報である。
【0113】
分析部83は分析結果77cを作成し、分析結果77cの識別情報である分析ID201をロギング部73に通知する。この例では、過去に生成された分析結果77a、77bもメモリ42bに記憶されている。ロギング部73は、分析ID201を運転記録74に保存する。これにより、所定イベントについて記録された稼働ログ76がプロジェクトID200を介してプロジェクトデータ75bに紐づけられる。同様に、所定イベントについて記録された稼働ログ76が分析ID201を介して分析結果77cに紐づけられる。通知発行部84は、分析結果が作成されたことを示す通知(分析IDを含む)を、基本ユニット3を介してPC2に送信する。
【0114】
プロジェクト編集部50は、当該通知を受信すると、基本ユニット3から運転記録74を取得して、記憶装置12に格納する。さらに、プロジェクト編集部50は、運転記録74の再生指示が入力されると、運転記録74に含まれているプロジェクトID200に対応するプロジェクトデータ75bを記憶装置12から取得する。プロジェクトデータ75aのプロジェクトIDは0であるため、ここではプロジェクトデータ75aは選択されない。さらに、プロジェクト編集部50は、運転記録74に含まれている分析ID201に対応する分析結果77cを、基本ユニット3のコマンド処理部71および拡張ユニット4aのCPU41aを介して取得する。これにより、記憶装置12には、所定イベントが発生したときに実行されていたプロジェクトデータ75、稼働ログ76および分析結果77cが保存され、分析レポート110の表示や運転記録74の再生に利用される。
【0115】
なお、異なる複数のイベントが発生すると、複数の運転記録74が生成されることがある。この場合、ロギング部73は、複数の運転記録74のそれぞれに固有の識別情報である記録IDを付与してもよい。これにより、複数の運転記録74が識別可能とされてもよい。
【0116】
図23が示すように、分析結果を主体として他のデータが紐づけられてもよい。
図23では、記憶装置12にプロジェクトデータ75a、75bが記憶される。運転記録記憶部37には、運転記録74a~74cが記憶される。メモリ42aには分析結果77が記憶される。
【0117】
ロギング部73は、所定ベントを検知すると、稼働ログ76と記録ID202を含む運転記録74cを作成し、運転記録記憶部37に保存し、分析部83に記録IDとプロジェクトIDを通知する。ロギング部73は、プロジェクト記憶部35からプロジェクトID200を取得するものとする。プロジェクトID200は、所定イベントが発生したときにPLC1で実行されていたプロジェクトデータ75の識別情報である。
【0118】
分析部83は、稼働ログ76を分析して分析結果データ203を作成し、基本ユニットから受信されたプロジェクトID200と記録ID202を、分析結果データ203とともに、分析結果77に格納する。これにより、分析結果77は、プロジェクトID200を介してプロジェクトデータ75bに紐づけられる。同様に、分析結果77cは、記録ID202を介して所定イベントについて記録された運転記録74c(稼働ログ76)に紐づけられる。通知発行部84は、分析結果が作成されたことを示す通知(分析IDを含む)を、基本ユニット3を介してPC2に送信する。
【0119】
プロジェクト編集部50は、当該通知を受信すると、分析IDに基づき、基本ユニット3を介して拡張ユニット4aから分析結果77を取得して、記憶装置12に格納する。さらに、プロジェクト編集部50は、運転記録74の再生指示が入力されると、分析結果77に含まれているプロジェクトID200に対応するプロジェクトデータ75bを記憶装置12から取得する。プロジェクト編集部50は、分析結果77に含まれている記録ID202に対応する運転記録74cを、基本ユニット3のコマンド処理部71を介して取得する。これにより、記憶装置12には、所定イベントが発生したときに実行されていたプロジェクトデータ75b、稼働ログ76(運転記録74c)および分析結果77(分析結果データ203)が保存され、分析レポート110の表示や運転記録74の再生に利用される。
【0120】
このように、運転記録74は、相互に紐づけられたプロジェクトデータ75、稼働ログ76および分析結果77を有しているため、ラダープログラムのデバッグに必要となる情報が容易に取得可能となる。たとえば、異なる複数のバージョンのプロジェクトデータ75が存在する場合であっても、稼働ログ76が取得されたときに使用されてきたプロジェクトデータ75bが容易に取得可能となる。また、分析結果77を取得するために使用された稼働ログ76も容易に取得可能となる。
【0121】
ところで、PLC1を運用している運用責任者がトラブルを解消できない場合に、PLC1を設定したり、プロジェクトデータ75を作成したりしたエンジニアに対して、トラブルの解消について応援を依頼することがある。このような場合、運用責任者は、運転記録74を読み出して電子メールに添付してエンジニアに送信してもよい。エンジニアは、電子メールに添付されていた運転記録74を再生したり、分析レポート110を表示したり、プロジェクトデータ75を再編集したりすることで、トラブルが容易に解消されよう。
【0122】
CPU31は、FTP(ファイル転送プロトコル)クライアントとして機能してもよい。ロギング部73は運転記録74を運転記録記憶部37に保存すると、FTPクライアントに運転記録74のアップロードを指示する。FTPクライアントは、予め指定されたIPアドレスのFTPサーバに対して運転記録74をアップロードする。ここで、FTPサーバは、PC2のCPU11において稼働していてもよい。PC2のプロジェクト編集部50は、FTPサーバから運転記録74を取得できるようになる。たとえば、FTPサーバが運転記録74を記憶装置12に保存すると、プロジェクト編集部50は、記憶装置12から運転記録74を読み出すことが可能となる。
【0123】
図24は運転記録の保存方法を示すフローチャートである。
【0124】
ステップS31でCPU31(ロギング部73)は、運転記録74の記録条件(保存条件)が満たされたかどうかを判定する。記録条件は、予めPC2などによって設定されている。記録条件が満たされると、CPU31はステップS32に進む。
【0125】
ステップS32でCPU31(ロギング部73)は、稼働ログ76を取得する。上述されたように、ロギング部73は、リングバッファ36からデバイス値などを読み出して稼働ログ76を作成する。ここで、ロギング部73は、運転記録74を識別するための記録IDを稼働ログ76に付与してもよい。
【0126】
ステップS33でCPU31(ロギング部73)は、基本ユニット3において実行されているプロジェクトデータ75またはその識別情報であるプロジェクトIDを取得する。
【0127】
ステップS34でCPU31(ロギング部73)は、稼働ログ76とプロジェクト(プロジェクトIDまたはプロジェクトデータ75)を紐づける。たとえば、ロギング部73は、同一のフォルダまたはファイルに稼働ログ76とプロジェクトデータ75とを保存する。あるいは、ロギング部73は、同一のフォルダまたはファイルに稼働ログ76とプロジェクIDとを保存する。
【0128】
ステップS35でCPU31(ロギング部73)は、拡張ユニット4aの分析部83に対して分析命令を発行する。たとえば、ロギング部73は、運転記録74(稼働ログ76)を保存したことを示す通知を分析部83に送信してもよい。分析命令または通知には、分析対象となる稼働ログ76を特定可能な情報(例:運転記録74が保存されたフォルダまたはファイルのパス名、運転記録74の識別情報)が含まれている。分析部83は、この情報にしたがって稼働ログ76にアクセスして分析結果を作成する。分析部83は、分析結果77またはこの分析結果を特定する分析IDをロギング部73に送信する。
【0129】
ステップS36でCPU31(ロギング部73)は、拡張ユニット4aから分析結果77または分析IDを受信する。
【0130】
ステップS37でCPU31(ロギング部73)は、稼働ログ76とプロジェクトに分析結果77を紐づける。たとえば、ロギング部73は、同一のフォルダまたはファイルに稼働ログ76、プロジェクトデータ75(プロジェクトID)、および分析結果77を保存する。あるいは、ロギング部73は、同一のフォルダまたはファイルに稼働ログ76、プロジェクトデータ75(プロジェクトID)、および分析IDを保存する。これにより、プロジェクトデータ75、稼働ログ76、および分析結果77を相互に紐づけた運転記録74が完成する。運転記録74に、プロジェクトデータ75、稼働ログ76、および分析結果77そのものが含まれている必要は無く、IDなどの識別情報が含まれていてもよい。
【0131】
ステップS38でCPU31(コマンド処理部71)は、運転記録74をPC2に転送する。たとえば、コマンド処理部71に内蔵されたFTPクライアントが運転記録74をPC2で稼働しているFTPサーバにアップロードする。アップロードが完了すると、コマンド処理部71は、運転記録74の保存が完了したことを示すビットデバイスをオフからオンに切り替えてもよい。あるいは、コマンド処理部71は、運転記録74の保存が完了したことを示す通知をPC2に送信してもよい。これにより、プロジェクト編集部50は、運転記録74が記憶装置12に記憶されていることを認識できるようになる。
【0132】
ところで、分析部83は拡張ユニット4aに実装されているが、分析部83は、基本ユニット3またはPC2に実装されてもよい。たとえば、ロギング部73が、運転記録74のうち稼働ログ76とプロジェクトデータ75(もしくはプロジェクトID)をメモリカードに保存してもよい。メモリカードは、記憶装置32の一部を構成しているものとする。PC2は、メモリカードからデータを読み出せるメモリカードリーダを有してもよい。PC2のCPU11(分析部83)は、メモリカードから稼働ログ76を読み出して分析結果77を作成し、運転記録74に分析結果77または分析IDを保存してもよい。これにより、運転記録74を構成する稼働ログ76、プロジェクトデータ75および分析結果77が紐づけられてもよい。
【0133】
<まとめ>
[観点1]
CPU11などは、ユーザプログラムを実行するプログラマブルロジックコントローラにより複数のデバイスから収集された複数のデバイス値の分析結果として、正常条件を満たさない非正常デバイスを示す分析レポートを取得する取得手段として機能する。表示部7などは分析レポートを表示するレポート表示手段として機能する。操作部8は、分析レポートに対する選択入力を受け付ける受付手段として機能する。CPU11および連携部64は選択入力により選択された非正常デバイスを特定する特定手段として機能する。
図9などが示すように、CPU11および表示部7は、非正常デバイスに関する情報であって、プログラマブルロジックコントローラに保持されている当該デバイスに関する情報をグラフィカルに表示するグラフィカル表示手段として機能する。これにより、いつもと違う挙動をしたデバイス(非正常デバイス)の情報をユーザに提供することが可能となる。
【0134】
[観点2]
CPU11および連携部64は選択入力により選択された非正常デバイスについて正常条件を満たさないというイベントが発生した時点を特定する特定手段として機能してもよい。上述されたように分析レポート110に表示される分析結果77には非正常デバイスのデバイス値と、そのデバイス値が収集された時刻情報とが含まれている。そのため、連携部64は、ポインタ103により選択された非正常デバイスにイベントが発生した時点を分析結果77から特定できる。なお、デバイス値とその時刻情報は稼働ログ76から取得されてもよい。
図9などが示すように、CPU11および表示部7は、特定された時点の周辺においてデバイス値を収集されたデバイスに関する情報であって、プログラマブルロジックコントローラに保持されている当該デバイスに関する情報をグラフィカルに表示するグラフィカル表示手段として機能してもよい。
【0135】
[観点3]
図7を参照して説明されたように、グラフィカル表示手段(例:UI100)は、ユーザプログラムのデバッグ画面を表示するデバッグ表示手段(例:リプレイモード)を含んでもよい。デバッグ表示手段は、デバッグ画面においてユーザプログラムに関連付けて、デバイスに関する情報として当該デバイスから収集されたデバイス値を表示してもよい。デバイス値は、PLC1がプロジェクトを実際に実行している期間においてPLC1により収集されたものである。ユーザプログラムに関連付けて実際のデバイス値が表示されるため、ユーザは、ユーザプログラムをデバッグまたは改良しやすくなるであろう。
【0136】
[観点4]
取得手段(例:CPU11、ダウンロード部53)は、プログラマブルロジックコントローラにおいて収集された時系列の複数のデバイス値を含む運転記録データ(例:運転記録74)を取得するように構成されてもよい。分析レポート110は、当該運転記録データの分析に基づき決定された正常条件を満たさない非正常デバイスを提示する分析レポートであってもよい。
図7や
図9、
図14などが示すように、CPU11や再生部59は、PLC1に設けられているデバイスに格納されているデバイス値をモニタするためのモニタ画面上に、運転記録データに含まれる時系列の複数のデバイス値に基づき、時間の経過に伴うデバイス値の変化を再現表示する再現表示手段を含んでもよい。再現表示手段(例:再生部59)は、非正常デバイスから収集された時系列のデバイス値であって、運転記録データに含まれる時系列のデバイス値を時間の経過にしたがって再現表示してもよい。再現表示手段(例:再生部59)は、イベントが生じた時点の周辺で複数のデバイスから収集された時系列のデバイス値であって、運転記録データに含まれる時系列のデバイス値を時間の経過にしたがって再現表示するように構成されてもよい。
【0137】
[観点5]
リレーションマップ120は、選択された注目デバイスについてユーザプログラムを解析することで得られた解析結果に基づき、当該注目デバイスと、当該ユーザプログラムにおいて当該注目デバイスに関連している他のデバイスとを示すリレーションマップの一例である。リレーションマップ部55は、リレーションマップ120を表示部7に表示するマップ表示手段として機能する。マップ表示手段(例:リレーションマップ部55)は、イベントが発生した時点に基づいてリレーションマップを強調表示してもよい。たとえば、非正常デバイスや、非正常デバイスを記述しているプログラムモジュールなどが強調表示されてもよい。たとえば、正常デバイスの表示色と非正常デバイスの表示色とがことなってもよい。正常デバイスのアイコン画像と非正常デバイスのアイコン画像とが異なってもよい。非正常デバイスには、非正常なイベントが発生したことを示す文字や記号などが表示されてもよい。また、複数の非正常なイベントが発生した時刻のうち、ユーザが注目している時刻が強調表示されてもよい。このような、注目時刻は、時刻バー112により強調して表示されてもよい。とくに、デバイス値が波形化されて表示される場合に、ユーザは時刻バー112に着目することで、どのタイミングでいつもと異なるイベントが発生したかを容易に理解できるであろう。
【0138】
[観点6]
CPU11およびプロジェクト編集部50は、PLC1において収集された時系列の複数のデバイス値を含む運転記録データと、当該運転記録データの分析に基づき決定された正常条件を満たさない非正常デバイスを提示する分析レポートとを取得する取得手段として機能する。CPU11および再生部59(ラダーモニタ部56)は、イベントが生じた時点の周辺で複数のデバイスから収集された時系列のデバイス値であって、運転記録データに含まれる時系列のデバイス値を時間の経過にしたがって再現表示してもよい。
【0139】
[観点7]
CPU11は、ユーザプログラムを実行するPLC1により複数のデバイスから収集された複数のデバイス値の分析結果として、正常条件を満たさない非正常デバイスを示す分析レポートを取得する取得手段として機能する。CPU11やリレーションマップ部55は、選択された注目デバイスについてユーザプログラムを解析することで得られた解析結果に基づき、当該注目デバイスと、当該ユーザプログラムにおいて当該注目デバイスに関連している他のデバイスとを示すリレーションマップ120を表示するマップ表示手段として機能する。リレーションマップ部55は、当該イベントが発生した時点に基づいてリレーションマップ120を強調表示してもよい。
【0140】
[観点8]
PLC1は、ユーザプログラムを実行して被制御機器を制御するプログラマブルロジックコントローラの一例である。PC2は、PLC1と接続され、ユーザプログラムを編集してPLC1に転送するプログラム作成支援装置(監視装置)として機能する。通信部33は、プログラム作成支援装置と通信する第一通信手段の一例である。CPU31は、第一通信手段により受信されるユーザプログラムを実行する実行手段の一例である。CPU31は、複数のプロセッサコアや複数のプロセッサ回路を有してもよい。CPU31、収集部72およびロギング部73は、PLC1の動作に関する運転記録74を記録する記録手段として機能する。CPU41aおよび分析部83は、運転記録を分析して分析レポート(例:分析結果)を作成する作成手段として機能する。分析レポート110を実現するWebアプリケーション61は、メモリ42aのROM領域に記憶されており、Webサーバ82により読み出されてもよい。PC2の通信部13aは第一通信手段と通信する第二通信手段の一例である。CPU11およびプロジェクト編集部50は、ユーザプログラムの編集画面を通じて当該ユーザプログラムの編集を受け付けるプログラム編集手段の一例である。CPU11およびWebブラウザ60は、プログラム編集手段を介してPLC1から分析レポートを取得してレポート表示画面(
図9)に表示する取得手段として機能する。これにより、いつもと違う挙動をしたデバイス(非正常デバイス)の情報などを含みうる分析サポート110をユーザに提供することが可能となる。Webブラウザ60は、プロジェクト編集部50に組み込まれたブラウザであってもよい。
【0141】
[観点9]
Webサーバ51は、取得手段から分析レポートに関するHTTPリクエストを受信する第一Webサーバとして機能する。プロトコル変換部52は、第一WebサーバのHTTPプロトコルを、PLC1の第一通信手段とPC2の第二通信手段との間で使用される通信プロトコルに変換する第一変換手段として機能する。第二通信手段(例:通信部13a)は、分析レポートに関するHTTPリクエストを第一変換手段により変換して生成された要求信号(例:カプセル化されたHTTPリクエスト)を第一通信手段に送信する。第二通信手段(例:通信部13a)は、当該要求信号に対する応答として分析レポートを第一通信手段から受信して、第一変換手段に渡すように構成されている。取得手段はWebブラウザ60であってもよい。レポート表示画面(例:分析レポート110)は当該Webブラウザ60のウインドウであってもよい。
【0142】
[観点10]
拡張ユニット4aのWebサーバ82は、分析レポートを提供する第二Webサーバとして機能する。プロトコル変換部81は、要求信号を分析レポートに関するHTTPリクエストに変換して第二Webサーバに渡す第二変換手段として機能する。プロトコル変換部81は、第二Webサーバから分析レポート(Webアプリケーション61)を受信して第一通信手段に渡す。第一通信手段(例:通信部33)は分析レポートを第二通信手段(例:通信部13a)に送信する。第二通信手段(例:通信部13a)は、分析レポートを第一変換手段に渡す。第一変換手段(例:プロトコル変換部52)は分析レポートを第一Webサーバ(例:Webサーバ51)に渡す。第一Webサーバ(例:Webサーバ51)は分析レポートをWebブラウザ(例:Webブラウザ60)に渡す。このように、拡張ユニット4aとPC2とが直接的に接続されていない場合であっても、分析レポート110を提供することが可能となる。なお、通信ケーブル9bを介して拡張ユニット4aとPC2とが通信可能である場合は、拡張ユニット4aのWebサーバ82は、分析レポートを直接的にWebブラウザ60へ渡すことができる。
【0143】
[観点11]
プロジェクト編集部50は、分析レポート110に紐づけられた運転記録74の内容を、ユーザプログラムに対応付けてデバッグ画面(例:プログラム表示領域104)に表示してもよい。
【0144】
[観点12]
連携部64またはダウンロード部53は、分析レポート110(分析結果77)に含まれている情報に基づき分析レポート110に紐づけられている運転記録74を特定してもよい。ダウンロード部53は、特定された運転記録74をPLC1からダウンロードするダウンロード手段として機能してもよい。
【0145】
[観点13]
記憶装置12は、ダウンロード手段によりダウンロードされた運転記録74を保持する保持手段として機能する。再生部59やデバッグ部54は、分析レポート110に紐づけられている運転記録74を保持手段から取得して再生する再生手段として機能してもよい。
【0146】
[観点14]
検知マップ111は、PLC1においてユーザプログラムにしたがって実行される複数の工程の開始タイミングと終了タイミングとを示す工程マップの一例である。検知リスト114は、予め想定された正常条件を満たさなかったデバイスのリストの一例である。画像表示領域113は、リストにおいて選択されたデバイスに紐づけられている時刻情報に対してさらに紐づけられているカメラ画像を表示する。再生部59、デバッグ部54および連携部64は、これらの表示情報を時刻整合させて再生するように構成されていてもよい。上述したように、連携部64は、分析レポート110における再生時刻情報と、リプレイモードでラダープログラムとともに表示されるデバイス値の再生時刻情報とを、再生部59およびデバッグ部54と共有している。たとえば、連携部64は、分析レポート110におけるシークバー105bや時刻バー112e等の操作により再生時刻が変更されると、通信処理部62を介して再生部59よびデバッグ部54に再生時刻の変更を通知する。同様に、再生部59よびデバッグ部54がシークバー105a等により再生時刻が変更されたことを検知すると、連携部64に再生時刻の変更を通知する。これにより、プロジェクト編集部50とWebブラウザ60との間で運転記録74の再生時刻が同期する。
【0147】
[観点15~17]
リレーションマップ部55は、ユーザプログラムに記述されている複数のデバイス間の関係を含むリレーションマップ120を表示するマップ表示手段として機能する。これにより、ユーザは非正常なイベントの発生原因となったデバイスを容易に発見できるようになろう。
【0148】
マップ表示手段(例:リレーションマップ部55)は、リレーションマップにおいて、注目デバイスおよび他のデバイスのうち、正常条件を満たさなかったデバイスを強調表示してもよい。マップ表示手段(例:リレーションマップ部55)は、リスト(例:検知リスト114)から選択された注目デバイスと、当該注目デバイスの影響を受けるか、当該注目デバイスに影響を与える他のデバイスを含むリレーションマップ120を表示してもよい。なお、注目デバイスが影響を与えるデバイスについてはリレーションマップ120に含まれてなくてもよい。注目デバイス値が影響を与えるデバイスは、注目デバイスで非正常なイベントが発生した原因とはならないからである。つまり、非正常状態の原因となったイベントは、非正常状態が発生した時刻よりも前に発生しているはずだからである。
【0149】
マップ表示手段(例:リレーションマップ部55)は、リレーションマップ120において、リストから選択された注目デバイスを強調表示してもよい。注目デバイスのデバイス値は、複数の異なるデバイスのデバイス値の演算結果である。そのため、演算に使用された複数の関連デバイスのうち一部のデバイスが非正常であり、他のデバイスが正常である場合にも、演算結果を格納する注目デバイスは非正常となりうる。そのため、関連デバイスのうち、非正常なデバイスのみが強調されれば、ユーザは非正常状態の原因を探索しやすくなるであろう。
【0150】
[観点18]
再生部59、デバッグ部54および連携部64は、運転記録74を再生する時刻を示すシークバーを表示するともに、当該シークバーに対する操作に応じた時刻のデバイス値を保持手段から読み出してもよい。これにより、ユーザは、再生時刻を容易に変更できるようになろう。さらに、ユーザは、再生時刻を変化しながらデバイス値の変化を確認することで、容易に非正常状態の原因を探索できるようになろう。
【0151】
[観点19]
再生部59および波形UI130は、運転記録74に含まれるデバイスの値についての時系列データを波形化して表示するように構成されていてもよい。ユーザは、デバイス値の変化を容易に確認できるようになるため、非正常帯の原因を特定しやすくなるであろう。
【0152】
[観点20、21]
CPU41aおよび分析部83は所定のイベントが発生すると運転記録74を分析して分析結果を生成する生成手段として機能する。CPU41aおよび通知発行部84は、分析結果が生成されたことをプログラム作成支援装置(例:PC2)に通知する通知手段として機能する。これにより、ユーザは、注意すべきイベントが発生したことを容易に把握できるようになろう。
【0153】
なお、所定のイベントとして、例えば、スキャン毎のデバイス値が正常時のばらつき範囲を超えたこと、としてもよい。具体的には、CPU41aは、ユーザにより予め指定された一又は複数のデバイスのデバイス値が、正常時のばらつき範囲を示す閾値を超えたか否かを、常時監視(いわゆる兆候監視)する。そして、このデバイス値が正常時のばらつき範囲を示す閾値を超えた場合には、CPU41aはCPU31に対し、そのタイミングを基準として運転記録74を生成するよう指示を行う。CPU31は、CPU41aからの指示に基づいて自動的に運転記録74を生成する。運転記録74の生成が完了したら、CPU31は、CPU41aに運転記録生成完了の通知を行う。この通知を受けたCPU41aは、CPU31により生成された運転記録74に基づいて、分析レポートを自動的に生成する。このように、トラブルが発生する前の兆候を監視し、自動的に生成される分析レポートによって兆候の要因を特定できるようになる。
【0154】
分析結果が生成されたことを示す通知は、ユーザプログラムの編集画面に表示されてもよい。とりわけ、プロジェクト編集のためのUI100がモニタモードに設定されると、CPU11は、通知をポーリングする。そして、CPU11は、通知を受信すると通知ダイアログ108を表示する。これにより、ユーザは、注意すべきイベントが発生したことを容易に認識できるであろう。通知ダイアログ108に、分析レポート110を表示するための表示ボタン109が設けられていてもよい。これにより、ユーザは、分析結果77の詳細を容易に確認することが可能となる。さらに、分析レポート110から運転記録74の再生を指示することで、ユーザは、注意すべきデバイスのデバイス値を再現して確認することが可能となる。
【0155】
[観点22]
分析コメント116は、運転記録74に含まれるデバイス値の時系列データの波形と、当該デバイス値について予め取得されたマスターデータの波形とを対比させて表示する対比表示領域として機能してもよい。これにより、どのような非正常イベントが発生したかを、容易に把握することができるであろう。マスターデータは、複数の稼働ログ76などに基づき学習された学習結果であってもよいし、ユーザにより指定された過去の稼働ログ76であってもよい。
【0156】
[観点23]
CPU31は、プロジェクトに含まれるユーザプログラムを実行する実行手段として機能する。CPU31(収集部72)は、ユーザプログラムが実行されている稼働期間においてPLC1の稼働状態を監視する監視手段として機能する。リングバッファ36は、稼働状態の監視結果を一時的に保持する保持手段として機能する。CPU31(ロギング部73)は、所定のイベントが発生すると、保持手段に保持されている監視結果を運転記録(稼働ログ76)として記録する記録手段の一例である。分析部83は、運転記録を分析して分析結果77を生成する分析手段として機能する。CPU31(ロギング部73)およびCPU41aは、当該監視結果から生成された分析結果77と、当該監視結果を含む当該運転記録(稼働ログ76)とを紐づける紐づけ手段として機能する。これにより、運転記録74(稼働ログ76)に対して分析結果77が直接的にまたは間接的に紐づけられる。そのため、分析結果77からその元になった運転記録74を特定して、運転記録74に基づきPLC1の動作を再現することが可能となろう。これは、プロジェクトデータ75のデバッグを効率よく進めることを可能にするであろう。
【0157】
[観点24]
紐づけ手段はさらに、運転記録(稼働ログ76)が記録されたときに実行されていたユーザプログラムを含むプロジェクト(プロジェクトデータ75)を、運転記録74(稼働ログ76)および分析結果77に紐づけてもよい。これにより、運転記録74に基づきPLC1の動作をさらに精度よく再現することが可能となろう。
【0158】
[観点25、26]
CPU31(ロギング部73)は、分析結果77(分析ID)と、当該分析結果77の元になった監視結果(稼働ログ76または記録ID)と、プロジェクト(プロジェクトデータ75またはプロジェクトID)と、を一括して、運転記録74として記録してもよい。CPU31(ロギング部73)は、分析結果77と、当該分析結果77の元になった監視結果と、プロジェクトと、を一つのファイルとして記録してもよい。たとえば、運転記録74は、一つのフォルダまたは一つの圧縮ファイル内に格納されてもよい。
【0159】
[観点27]
PC2はPLC1と通信するコンピュータの一例である。この場合、PLC1は、上述された実行手段、監視手段、保持手段、記録手段、分析手段、および、紐づけ手段を有してもよい。PC2は、運転記録をPLC1から取得する取得手段(例:プロジェクト編集部50)と、取得手段により取得された運転記録を記憶する記憶手段(例:記憶装置12)と、を有してもよい。さらに、PC2は、運転記録に含まれている監視結果を再生する記録再生手段(再生部59、デバッグ部54、Webブラウザ60)と、運転記録に含まれている分析結果を分析レポートとして表示するレポート表示手段(Webブラウザ60)と、をさらに有してもよい。
【0160】
[観点28]
紐づけ手段(例:CPU31)は、運転記録の識別情報と、プロジェクトの識別情報と、分析結果の識別情報とを紐づけてもよい。これにより、運転記録が記録されたときに実行されていたユーザプログラムを含むプロジェクトが、監視結果から生成された分析結果に紐づけられてもよい。
【0161】
[観点29]
記憶装置12またはプロジェクト記憶部35は、プロジェクト(例:プロジェクトデータ75)と、当該プロジェクトの識別情報(例:プロジェクトID)とを記憶する第一記憶部として機能する。運転記録記憶部37は、監視結果と、プロジェクトの識別情報と、分析結果の識別情報とを記憶する第二記憶部として機能してもよい。メモリ42aは、分析結果と、当該分析結果の識別情報とを記憶する第三記憶部として機能してもよい。プロジェクトの識別情報により第一記憶部に記憶されているプロジェクトと、第二記憶部に記憶されている監視結果とが紐づけられてもよい。分析結果の識別情報により、第二記憶部に記憶されている監視結果と第三記憶部に記憶されている分析結果とが紐づけられてもよい。その結果として、監視結果、プロジェクトおよび分析結果とが紐づけられてもよい。
【0162】
[観点30]
運転記録記憶部37は、監視結果と、監視結果を含む運転記録の識別情報とを記憶する第二記憶部として機能してもよい。記憶装置32およびメモリ42aは、分析結果と、プロジェクトの識別情報と、運転記録の識別情報とを記憶する第三記憶部として機能してもよい。この場合、プロジェクトの識別情報により第一記憶部に記憶されているプロジェクトと、第三記憶部に記憶されている分析結果とが紐づけられてもよい。運転記録の識別情報により、第二記憶部に記憶されている監視結果と第三記憶部に記憶されている分析結果とが紐づけられてもよい。その結果、監視結果、プロジェクトおよび分析結果が紐づけられてもよい。
【0163】
[観点31]
CPU11(例:プロジェクト編集部50)は、運転記録の識別情報と、分析結果の識別情報と、プロジェクトの識別情報とに基づき、相互に関連付けられている運転記録、分析結果およびプロジェクトを取得する取得手段として機能してもよい。記憶装置12は、取得手段により取得された運転記録を記憶する記憶手段として機能してもよい。デバッグ部54または再生部59は、運転記録に含まれている監視結果を再生する記録再生手段として機能してもよい。Webブラウザ60は、運転記録に関連付けられている分析結果を分析レポートとして表示するレポート表示手段として機能してもよい。
【0164】
[観点32]
監視結果は、ユーザプログラムにより使用されるデバイスに記憶されているデバイス値を含む。監視結果には、ユーザプログラムにより使用される変数など、デバイスとは異なるシンボルから取得された情報が格納されてもよい。
【0165】
[観点33]
記録再生手段(例:CPU11)は、運転記録に紐づけられているプロジェクトの一部であるユーザプログラムを表示するとともに、当該ユーザプログラムに記述されているデバイスに対応付けて監視結果に含まれている当該デバイスのデバイス値を表示してもよい。
【0166】
[観点34]
CPU31およびCPU41aは、運転記録が記録されると通知を発行する発行手段として機能してもよい。CPU31およびCPU41aは、分析記録が作成されると通知を発行する発行手段として機能してもよい。運転記録が記録されると、かならず分析結果が作成される場合、運転記録が記録されたことを示す通知は、分析結果が作成されたことを示す通知と同義であろう。同様に、分析結果が作成されたことを示す通知は、運転記録が記録されたことを示す通知と同義であろう。
【0167】
[観点35]
取得手段(例:CPU11)は、PLC1からアップロードされる運転記録、プロジェクトおよび分析結果を受信するFTPサーバとして機能してもよい。
【0168】
発明は上記の実施形態に制限されるものではなく、発明の要旨の範囲内で、種々の変形・変更が可能である。