以下、本発明の実施形態を図面に基づいて説明する。ただし、以下に示す実施形態は、本発明の技術思想を具体化するための例示であって、本発明は以下のものに特定されない。また、本明細書は特許請求の範囲に示される部材を、実施形態の部材に特定するものでは決してない。特に実施形態に記載されている構成部品の寸法、材質、形状、その相対的配置等は特に特定的な記載がない限りは、本発明の範囲をそれのみに限定する趣旨ではなく、単なる説明例にすぎない。なお、各図面が示す部材の大きさや位置関係等は、説明を明確にするため誇張していることがある。さらに以下の説明において、同一の名称、符号については同一若しくは同質の部材を示しており、詳細説明を適宜省略する。さらに、本発明を構成する各要素は、複数の要素を同一の部材で構成して一の部材で複数の要素を兼用する態様としてもよいし、逆に一の部材の機能を複数の部材で分担して実現することもできる。
[実施形態1]
図1に、プログラマブルロジックコントローラシステム1000の概要図を示す。この図に示すプログラマブルロジックコントローラシステム1000は、ラインを流れる対象物WKをカメラ部98で撮像して、モータMTで加工し、センサ等の入出力機器SSで検査するシステムを例示している。このプログラマブルロジックコントローラシステム1000は、プログラマブルロジックコントローラ1と、プログラマブル表示器50と、プログラム作成装置70と、画面データ作成装置60を備える。プログラマブルロジックコントローラ(以下「PLC」ともいう。)1は、プログラム作成装置70と接続されている。プログラム作成装置70は、PLC1で実行されるラダープログラム等のユーザプログラムの作成や編集を行う。またプログラマブル表示器50は、画面データ作成装置60と接続されている。画面データ作成装置60は、プログラマブル表示器50で表示される画面の設定、例えば表示画面上に表示されるページ毎に、配置される部品の選択やレイアウトなどの設定を行う。これらプログラム作成装置70や画面データ作成装置60は、専用の機器で構成する他、汎用のPCにインストールされたソフトウェアで実現することもできる。
[PLCのシステム構成]
PLCシステムは、工場等に設置される入出力機器を統括的に制御するPLC1、PLC1を動作させるラダープログラムを作成するプログラム作成装置70、PLC1のデバイスの状態を監視したり変更させたりするプログラマブル表示器50、及びプログラマブル表示器50で表示用データを生成するための画面データを作成する画面データ作成装置60を含む。
なお、デバイスとは、ラダープログラムによって参照されるPLC1内の記憶領域を指す名称である。デバイスのデバイス値は、入出力機器の入力状態又は出力状態、ラダープログラム上に記述される内部リレー(補助リレー)、タイマ、カウンタ等の状態を示す。
デバイス値の型には、ビット型とワード型があり、ビットデバイスは1ビットのデバイス値、ワードデバイスは1ワードのデバイス値を記憶する。
PLC1は、CPUユニット3と拡張ユニット4に大別される。拡張ユニット4は、CPUユニット3の機能を拡張する機能拡張ユニットであり、図1では、センサなどの入力機器、警報ランプなどの出力機器を含む入出力機器が接続されるI/Oユニット4f、製造ラインを流れるワークを所定タイミングで撮像するカメラが接続されるカメラユニット4c、製造ラインやロボットを駆動するモータが接続されるモーションユニット4dを例示している。モーションユニット4dは、位置決めユニットとも呼ばれ、軸と呼ばれる制御対象の位置を制御し、一般に軸ごとにモータ等の駆動源が存在する。CPUユニット3は、これら拡張ユニット4からのデータを収集し、ラダープログラムを実行して必要な演算処理を行って、各拡張ユニット4を制御する。
プログラム作成装置70は、ラダープログラムの作成、作成済みのラダープログラムの編集、修正を行うことができる。またプログラム作成装置70は、CPUユニット3に接続される一又は複数の拡張ユニット4の構成や、拡張ユニット4の動作パラメータを編集することもできる。なおラダープログラムやユニット構成情報を含むデータを、プロジェクトデータと呼ぶ。プログラム作成装置70は、ユーザ操作に基づいて、プロジェクトデータを作成し、作成したプロジェクトデータをニモニックコードに変換し、変換後のラダープログラムをCPUユニット3に転送する。
CPUユニット3は、ラダープログラムをマシンコードに変換し、PLC1の運転時、マシンコードからなるラダープログラムを繰返し周期的に実行する。ここで、CPUユニット3は、ラダープログラムを周期的に実行している際、複数のデバイスに記憶されているデバイス値を現在時刻と関連付けて収集し、リングバッファ等の一時記録部91aに一時的に記録する。リングバッファが一杯になると、古いデバイス値から上書きしていくため、リングバッファの記憶容量に応じて、一定期間分のデバイス値の時系列データが一時記憶される。そして、例えば製造ラインでトラブルが発生する等、予め定められた保存条件が成立すると、プログラム作成装置70において予め保存対象として選択されたデバイスの時系列データが、ログデータとして、フラッシュメモリやSDカード等の保存メモリ36に自動的に保存される(後述する図6を参照)。
このとき、デバイスの時系列データと共に、カメラユニット4cにて時系列に収集された画像データが、ログデータとして併せて保存される。また、保存条件が成立した際にCPUユニット3で実行されていたラダープログラムや、その際のユニット構成情報も、ログデータと関連付けて保存される。このように、予め定められた保存条件が成立した際、デバイスの時系列データや時系列の画像データを含むログデータと、ラダープログラムやユニット構成情報とが、例えば共通の識別子を有するファイル群で管理される等、互いに関連付けられて保存メモリ36に保存される。このファイル群を、「運転記録データ」と呼ぶ。本実施形態では、プログラム作成装置70のみならず、プログラマブル表示器50においても、運転記録データの中身を確認することができる。この詳細については後述する。
[プログラマブル表示器50のシステム構成]
プログラマブル表示器50は、PLC1と通信ケーブルによって接続され、PLC1のデバイスに記憶されているデバイス値は、通信ケーブルを介してプログラマブル表示器50に転送される。プログラマブル表示器50の表示画面には、図2に示すように、ランプやスイッチなどの各種の機能部品FPが配置され、それぞれの機能部品FPに対してデバイスが割り当てられる。一般に、各種機能部品FPが一又は複数配置された一画面をページと呼び、複数のページは、それぞれ異なる画面IDによって管理されている。プログラマブル表示器50は、画面IDに対応するページを表示画面に表示する。また、画面IDを表示画面上に表示させてもよい。図2の例では、右上に画面ID表示欄IAを設けている。なお画面ID表示欄IAは、常時表示させる他、必要時にのみ表示させるようにしてもよい。例えば表示画面の何もないところを右クリックすることで、画面ID表示を呼び出すようにする。あるいはフリック動作でページを切り替える際に、表示画面上にオーバーレイ表示で大きく画面IDを重ねて表示させてもよい。
ここで、図2に示す各種部品について、より詳細に説明する。図2に示す画面には、上述した各種機能部品FPだけでなく、様々な部品が配置されている。上述した「画面ID表示欄1A」に記載された“1”というテキストや、左上の「監視画面」というテキストは、いわゆるテキスト部品TXである。テキスト部品TXには、一般的にデバイスは割てられていない。
「監視画面」テキスト部品TX1の下には、「生産品番」というテキスト部品TX2が配置され、その下には、数値表示欄241として文字表示部品CPが配置されている。文字表示部品CPには、特定のデバイス(プログラマブル表示器50内の内部デバイスであってもよいし、PLC1内の外部デバイスであってもよい。以下同様)が割り当てられており、そのデバイスによって特定される文字又は文字列が、文字表示部品CPに表示される。図2の例では、数値表示欄241に文字表示部品CPとして「ABC-123」という文字列が表示されている。
「監視画面」テキスト部品TX1の右には、「正常」と「異常」を示すランプ部品RP(機能部品FPの一つ)が配置され、各ランプ部品RPには、それぞれ特定のデバイスが割り当てられている。そして、デバイスのデバイス値に応じて、点灯状態を示す部品画像が表示されたり、消灯状態を示す部品画像が表示されたりする。図2では、「正常」を示すランプ部品RP1は、点灯状態を示す部品画像が表示され、「異常」を示すランプ部品RP2は、消灯状態を示す部品画像が表示されている。
ランプ部品RPの右側には、「温度メータ」からなるメータ部品MPが配置されている。メータ部品MPにも、特定のデバイスが割り当てられている。そのデバイスのデバイス値に応じて、メータ部品MPの指針の位置が動的に変わるようになっている。図2では、デバイス値が60のときの状態を示している。
図2の中央には、「カウンタ 設定値 現在値 リセット カウンタグラフ」というテキスト部品TX3が配置されている。そして、その下には、「製品A」、「製品B」、「製品C」、「製品D」というテキスト部品TX4、TX5、TX6、TX7が配置されると共に、それらの右側に、各製品に対する設定値と現在値を表す数値表示部品NPが配置されている。数値表示部品NPには、特定のデバイスが割り当てられており、そのデバイスのデバイス値が、数値表示部品NPに表示される。図2の例では、製品Aに対して「100」、「80」、製品Bに対して「100」、「10」、製品Cに対して「100」、「100」、製品Dに対して「100」、「80」、の各数値表示部品NPが、それぞれ対応付けて配置されている。
数値表示部品NPの右側には、RESETスイッチ246として、「RESET」と書かれたスイッチ部品SPが配置されている。スイッチ部品SPにも、特定のデバイスが割り当てられている。そのデバイスのデバイス値に応じて、スイッチONかスイッチOFFが切り替わるようになっている。図2では、RESETスイッチ246をタッチ操作することで、割り当てられた特定のデバイスの状態を変えることができる(例えば1→0)。これにより、各製品の現在値を0にリセットすることができる(すなわち、数値表示部品NPに割り当てられたデバイスのデバイス値を0に書き換えることができる)。
RESETスイッチ246のスイッチ部品SPの右側には、カウンタグラフを示すグラフ部品GPが配置されている。グラフ部品GPにも、特定のデバイスが割り当てられている。そのデバイスのデバイス値に応じて、バーグラフの状態が動的に変化するようになっている。図2では、各製品の現在値に応じて、バーの長さが変わるようになっている(つまり、現在値を示す数値表示部品NPに割り当てられたデバイスと、カウンタグラフを示すグラフ部品GPに割り当てられたデバイスとが同じになっている)。
このように、画面IDによって識別される一画面(一ページ)上に配置された各種部品は、多種多様なものがあり、デバイスが割り付いる部品や、デバイスが割り付いていない部品、部品画像が割り付いている部品や、部品画像が割り付いていない部品などがある。一画面のデータ構造の詳細については後述する。
またプログラマブル表示器50は、表示画面に設けられたタッチパネルを用いて、ユーザのタッチ操作を検出する。ユーザが任意の機能部品FPをタッチすると、その機能部品FPに対して割り当てられたデバイスの状態を変化させることができる。例えば、スイッチの機能部品をタッチした場合、そのスイッチに割り当てられたデバイスのON/OFF状態を変化させ、スイッチの機能を実現することができる。ユーザのタッチの検出は、後述する図11に示すタッチ検出部53で行われる。
(PLC1)
まずPLC1の構成について、説明する。図1に示すPLC1は、複数のユニットを接続して構成される。複数のユニット間は、ユニット間バス90を介して通信可能に接続されている。ユニットは、CPUユニット3と拡張ユニット4に大別される。CPUユニット3はメインユニットや基本ユニットとも呼ばれ、PLC1の基本動作を行う。また拡張ユニット4は、CPUユニット3の機能を拡張する機能拡張ユニットである。図1の例では、拡張ユニット4はカメラユニット4cと、モーションユニット4dと、通信ユニット4eと、I/Oユニット4fを含む。拡張ユニット4の一種であるカメラユニット4cは、カメラ部98と接続されて、対象物WKを所定のタイミングで撮像して、CPUユニット3に送出する。モーションユニット4dは、位置決めユニットとも呼ばれ、軸とよばれる制御対象の位置を制御する。一般に軸ごとにモータ等の駆動源が存在する。通信ユニット4eは、通信ユニット処理部41eを備えており、外部機器と通信を行う。I/Oユニット4fは、I/Oユニット処理部41fを備えており、センサ等の入出力機器SSを接続している。またCPUユニット3は、これら拡張ユニット4からのデータを収集して、必要な制御を行う。
(PLCシステムのシステム構成)
ここで、PLC1を当業者にとってよりよく理解できるようにするために、一般的なPLC1の構成とその動作について説明する。
本発明の実施の形態によるプログラマブルロジックコントローラシステムの一構成例を図3に示す。この図に示すように、プログラマブルロジックコントローラシステムは、ラダープログラム等のユーザプログラムの編集を行うためのPC2と、工場等に設置される各種制御装置を統括的に制御するためのPLC1とを備えている。PCはパーソナルコンピュータの略称である。ユーザプログラムは、ラダー言語やSFC(シーケンシャルファンクションチャート)等のフローチャート形式のモーションプログラム等のグラフィカルプログラミング言語を用いて作成してもよいし、C言語等の高級プログラミング言語を用いて作成してもよい。以下では、説明の便宜上ユーザプログラムをラダープログラムとして説明するが、本発明はユーザプログラムをラダープログラムに限定しない。
PLC1は、CPUが内蔵されたCPUユニット3と、一乃至複数の拡張ユニット4を備えている。CPUユニット3に対して一乃至複数の拡張ユニット4が着脱可能となっている。例えば、拡張ユニット4aはモータ(フィールドデバイス10a)を駆動してワークの位置決めする位置決めユニットであり、拡張ユニット4bはカウンタユニットであってもよい。カウンタユニットは手動パルサ等のエンコーダ(フィールドデバイス10b)からの信号をカウントする。なお、参照符号の末尾に付与されているa、b、c・・・の文字は省略されることがある。なお、PLC1とPC2とを含むシステムはプログラマブルロジックコントローラシステムと呼ばれてもよい。
CPUユニット3には、PLC側表示部5及びPLC側操作部6が備えられている。PLC側表示部5は、CPUユニット3に取り付けられている各拡張ユニット4の動作状況等を表示することができる。PLC側操作部6の操作内容に応じてPLC側表示部5は表示内容を切り替える。またPLC側操作部6は、CPUユニット3と一体に組み込まれたボタン等とする他、、外付けのコンソールやマウスやキーボード等の入力装置としてもよい。あるいは、PLC側表示部5をタッチパネルとして操作部の機能を兼用させることもできる。
PLC側表示部5は、通常、PLC1内のデバイスの現在値(デバイス値)やPLC1内で生じたエラー情報等を表示する。デバイスとは、デバイス値(デバイスデータ)を格納するために設けられたメモリ上の領域を指す名称であり、デバイスメモリとも呼ばれる。デバイス値とは、入力機器からの入力状態、出力機器への出力状態及びユーザプログラム上で設定される内部リレー(補助リレー)、タイマ、カウンタ、データメモリ等の状態を示す情報である。デバイス値の型にはビット型とワード型がある。ビットデバイスは1ビットのデバイス値を記憶する。ワードデバイスは1ワードのデバイス値を記憶する。
拡張ユニット4は、PLC1の機能を拡張するために用意されている。各拡張ユニット4には、その拡張ユニット4の機能に対応するフィールドデバイス(被制御装置)10が接続され、これにより、各フィールドデバイス10が拡張ユニット4を介してCPUユニット3に接続される。フィールドデバイス10は、センサやカメラ部等の入力機器であってもよいし、アクチュエータ等の出力機器であってもよい。また、一つの拡張ユニット4に対して複数のフィールドデバイス10が接続されてもよい。
(プログラム作成装置70)
PC2は、プログラム作成装置70を実現する。プログラム作成装置70は、PLC1と接続して、その設定や、運用時の制御や動作確認等を行うための装置である。また、PLC1やこれを含めたプログラマブルロジックコントローラシステムを動作させる各種プログラムの作成や、作成済みのプログラムの編集、修正を行うこともできる。この意味ではプログラム作成装置70は、プログラム作成支援装置やプログラマブルロジックコントローラ用エンジニアリングツール等とも称される。さらにプログラム作成装置70は、過去のプログラマブルロジックコントローラシステムの動作を記録した運転記録データに基づいて、その当時の各デバイスの動作状況を再現することもできる。運転記録データは、ラダープログラム等のユーザプログラムや、各ユニットのユニット構成情報などの設定データを含むプロジェクトデータ、及び運転当時の各デバイスのデバイス値やカメラ部の画像データ等の運用データであるログデータを含んでいる。このプログラム作成装置70は、運転記録データの内、プロジェクトデータを読み込んで編集することも可能である。この意味でプログラム作成装置70は、プロジェクトデータ編集プログラムとも呼ばれる。
PC2は、例えば携帯可能なノートタイプやタブレットタイプのパーソナルコンピュータであって、表示部7及びPC側操作部8を備えている。PLC1を制御するためのユーザプログラムの一例であるラダープログラムは、PC2を用いて作成される。その作成されたラダープログラムは、PC2内でニモニックコードに変換される。PC2は、USB(Universal Serial Bus)等の通信ケーブル9を介してPLC1のCPUユニット3に接続され、ニモニックコードに変換されたラダープログラムをCPUユニット3に送る。CPUユニット3はラダープログラムをマシンコードに変換し、CPUユニット3に備えられたメモリ内に記憶する。なお、ここではニモニックコードがCPUユニット3に送信されているが、本発明はこれに限られない。例えば、PC2は、ニモニックコードを中間コードに変換し、中間コードをCPUユニット3に送信してもよい。
なお、PC2のPC側操作部8には、PC2に接続されたマウス等のポインティングデバイスが含まれていてもよい。またPC2は、USB以外の他の通信ケーブル9を介して、PLC1のCPUユニット3に対して着脱可能に接続されるような構成であってもよい。また、通信ケーブル9等の物理的なケーブルを介さず、PLC1に対して無線で接続する態様としてもよい。
(ラダープログラム)
ラダープログラムの作成時にPC2の表示部7に表示されるラダー図Ldの一例を、図4に示す。PC2は、マトリックス状に配置された複数のセルを表示部7に表示する。各セルには、仮想デバイスのシンボルが配置される。シンボルは、入力リレーや出力リレー等を示している。このような複数のシンボルによってリレー回路が形成される。ラダー図Ldには、例えば10列×N行(Nは任意の自然数)のセルが配置されている。そして各行のセル内には、仮想デバイスのシンボルが適宜配置される。
図4が示すリレー回路は、入力装置からの入力信号に基づいてON/OFFされる3つの仮想デバイス(以下、「入力デバイス」と呼ぶ。)のシンボルと、出力装置の動作を制御するためにON/OFFされる仮想デバイス(以下、「出力デバイス」と呼ぶ。)のシンボルと、が適宜結合されることにより構成されている。
各入力デバイスのシンボルの上方に表示されている文字(「R0001」、「R0002」及び「R0003」)は、その入力デバイスのデバイス名(アドレス名)を表している。各入力デバイスのシンボルの下方に表示されている文字(「フラグ1」、「フラグ2」及び「フラグ3」)は、その入力デバイスに対応付けられたデバイスコメントを表している。出力デバイスのシンボルの上方に表示されている文字(「原点復帰」)は、その出力デバイスの機能を表す文字列からなるラベルである。
図4に示す例では、デバイス名「R0001」及び「R0002」にそれぞれ対応する2つの入力デバイスのシンボルが直列的に結合されることにより、AND回路が構成されている。また、これらの2つの入力デバイスのシンボルからなるAND回路に対して、デバイス名「R0003」に対応する入力デバイスのシンボルが並列的に結合されることにより、OR回路が構成されている。すなわち、このリレー回路では、一行目の2つのシンボルに対応する入力デバイスがいずれもONした場合、又は二行目のシンボルに対応する入力デバイスがONした場合にのみ、一行目のシンボルに対応する出力デバイスがONになる。
(プログラム作成装置70)
プログラム作成装置70を実現するPC2のブロック図を、図5に示す。この図に示すように、PC2は、PC側メモリ部11、PC側CPU21、表示部7、PC側操作部8、PC側記憶装置22及びPC側通信部23を備えている。表示部7、PC側操作部8、PC側記憶装置22及びPC側通信部23は、それぞれPC側CPU21に対して電気的に接続されている。
PC側メモリ部11は、PC側CPU21が処理を実行するための作業空間となる作業メモリであり、典型的にはRAM等で構成される。運転記録データは、プロジェクトデータを含んでいる。
PC側記憶装置22はハードディスクや半導体メモリ、ROM等を含み、さらに着脱可能なメモリカードを含んでもよい。CPUは中央演算処理装置の略称である。ROMはリードオンリーメモリの略称である。RAMはランダムアクセスメモリの略称である。
ユーザは、PC側記憶装置22に記憶されているコンピュータプログラムである編集ソフトウエアをPC側CPU21に実行させて、PC側操作部8を通じてプロジェクトデータを編集する。この編集ソフトウエアは、PC2で実行されるプロジェクトデータ編集プログラムにあたる。
(プロジェクトデータ)
プロジェクトデータは、一つ以上のユーザプログラム(例えばラダープログラム)と、CPUユニット3や拡張ユニット4のユニット構成情報等を含む。またプロジェクトデータは、ユーザプログラムがどのようなプログラム部品から構成されているかを示すプログラム構成情報を含めてもよい。さらにユニット構成情報は、CPUユニット3に対する複数の拡張ユニット4の接続位置や、CPUユニット3に備えられた機能(例えば通信機能や位置決め機能)を示す情報、拡張ユニット4の機能(例えば撮影機能)等を示す情報である。
ここで、プロジェクトデータの編集には、プロジェクトデータの作成及び変更が含まれる。プロジェクトデータ編集プログラムを用いて作成されたプロジェクトデータは、PC側記憶装置22に記憶される。またユーザは、必要に応じてPC側記憶装置22に記憶されているプロジェクトデータを読み出し、そのプロジェクトデータを、プロジェクトデータ編集プログラムを用いて変更することができる。PC側通信部23は、通信ケーブル9を介してPC2をCPUユニット3に通信可能に接続するためのものである。PC側CPU21はPC側通信部23を介してプロジェクトデータをCPUユニット3に転送する。
プロジェクトデータ編集プログラムは、編集モードと監視モードと履歴再生モードを備える。編集モードはエディットモード等とも呼ばれ、プロジェクトデータを編集することができる。また監視モードは、ユーザプログラムの作成時にデバッグ等を行うためのシミュレーション動作や、FAシステム運用時の被制御装置のデバイス値の変化を示すデバイス波形のリアルタイム表示を行うことができる。さらに履歴再生モードは、リプレイモードやタイムマシン再生等とも呼ばれ、再生表示を行うことができる。これらの編集モード、監視モード、履歴再生モードの切り替えは、モード切替部で行われる。
(PLC1)
PLC1の機能ブロック図を図6に示す。この図に示すように、CPUユニット3は、CPUユニット処理部31、PLC側表示部5、PLC側操作部6、CPUユニット記憶部32及びPLC側通信部33を備えている。PLC側表示部5、PLC側操作部6、CPUユニット記憶部32及びPLC側通信部33は、それぞれCPUユニット処理部31に電気的に接続されている。
(CPUユニット記憶部32)
CPUユニット記憶部32は、プロジェクト記憶部35、PLC側デバイス部34、一時記録部91a、保存メモリ36を備えている。
プロジェクト記憶部35は、PC2から入力されたプロジェクトデータを記憶する。またCPUユニット記憶部32はCPUユニット3用の制御プログラムも記憶する。
PLC側デバイス部34はビットデバイスやワードデバイス等を有し、各デバイスはデバイス値を記憶する。このPLC側デバイス部34は、複数のデバイスの各デバイス値を記憶するデバイスメモリとして機能する。またユーザプログラムに従い参照される記憶領域として機能させてもよい。
一時記録部91aは、PLC側デバイス部34に記憶されているデバイス値を時系列に記録する。この一時記録部91aは、リングバッファ等で構成できる。
保存メモリ36は、一時記録部91aに時系列に記録されたデバイス値を保存する。保存メモリ36は、不揮発性メモリとして、内部メモリ37や着脱可能なメモリカード36A等で構成される。
このようにCPUユニット記憶部32は複数の記憶領域を有している。このCPUユニット記憶部32はRAMやROM、メモリカード等を含んでもよい。例えば図6の例では、保存メモリ36として着脱可能なメモリカード36AであるSDカード(商品名)で構成されている。
(CPUユニット処理部31)
CPUユニット処理部31は、プログラム実行部40と、保存条件設定部45と、記録制御部39と、保存制御部39Cと、イベント収集部92bを備えている。プログラム実行部40は、ユーザプログラムを繰り返し実行する。ユーザプログラムに従い、プログラム実行部40により参照される記憶領域であるPLC側デバイス部34は、複数のデバイスの各デバイス値を記憶している。
保存条件設定部45は、各種の条件を設定するための部材である。ここでは保存条件設定部45は、一時記録部91aに記録するための記録トリガについての第1トリガ条件と、保存メモリ36に保存するための保存トリガについての第2トリガ条件と、記録トリガが示す時点を基準時とし、この基準時までの期間及び該基準時からの期間の少なくとも一方を含む期間であって、一時記録部91aに一時的な記録を行う期間を示すバッファ記録期間を設定する。
保存条件設定部45で、第1トリガ条件として、一時記録部91aへの記録を開始するための記録開始トリガについての条件を設定することができる。またバッファ記録期間として、この記録開始トリガが示す基準時からの期間を設定することができる。
記録制御部39は、記録トリガについての第1トリガ条件が成立すると、この記録トリガが示す時点を基準時とするバッファ記録期間に対応した時系列のデバイス値をログデータとして一時記録部91aに記録する。また記録制御部39は、保存トリガについての第2トリガ条件が成立する時点、又は次に記録トリガについての第1トリガ条件が成立する時点の、いずれか早い時点までの間、記録した該ログデータを一時記録部91aに保持させる。そして、次に記録トリガについての第1トリガ条件が成立すると、次に該記録トリガが示す時点を基準時とするバッファ記録期間に対応した時系列のデバイス値をログデータとして、一時記録部91aに記録する。
保存制御部39Cは、保存トリガについての第2トリガ条件が成立すると、記録制御部39により一時記録部91aに保持されたログデータを保存メモリ36に保存する。ここで保存制御部39Cは、保存トリガについての第2トリガ条件が成立すると、記録制御部39により一時記録部91aに保持され、保存トリガからみて直前の記録トリガに対応するログデータを、保存メモリ36に保存することが好ましい。このように保存制御部39Cは、バッファ記録期間を経過した後も、バッファ記録期間中に記録したログデータを保持しておき、保存トリガが起動すると、記録トリガに対応付けて保持されたログデータを保存する。ただ記録制御部39が保存するログデータは、直近の記録トリガに対応するログデータに限らず、2個前の記録トリガや、3回前の記録トリガとしてもよい。
イベント収集部92bは、PLC1又はPLC1により制御される被制御装置(フィールドデバイス10)にて発生した複数のイベントに応じたイベントデータを収集し、このイベントの発生時刻とイベントデータとを関連付けて一時記録部91aに時系列に記憶する。
図6に示すように、CPUユニット3と拡張ユニット4とは拡張バスの一種であるユニット間バス90を介して接続されている。なお、ユニット間バス90に関する通信機能は、PLC側通信部33の一部として実装されてもよい。またPLC側通信部33は、ネットワーク通信回路を有してもよい。CPUユニット処理部31は、PLC側通信部33を介してログデータ等をPC2やクラウド等に送信してもよい。
ここで、ユニット間バス90について、補足説明する。このユニット間バス90は、次に説明する入出力リフレッシュ等が行われるバスである。ユニット間バス90における通信制御は、いわゆるバスマスタ38によって実現される。なお、PLC側通信部33の一部としてバスマスタを設けてもよいし、CPUユニット処理部31の一部としてバスマスタを設けてもよい。バスマスタ38は、ユニット間バス90での通信を制御するための制御回路であって、CPUユニット処理部31からの通信要求を受けて、拡張ユニット4との間で、後述する入出力リフレッシュ等の通信を行う。
拡張ユニット4は、拡張ユニット処理部41と拡張ユニットメモリ42を備えている。拡張ユニット処理部41は、デバイスに格納されたCPUユニット3からの指示(デバイス値)に従って、フィールドデバイス10を制御する。また拡張ユニット処理部41は、フィールドデバイス10の制御結果をバッファメモリとよばれるデバイスに格納する。デバイスに格納された制御結果は入出力リフレッシュによってCPUユニット3に転送される。またデバイスに格納されている制御結果は、CPUユニット3からの読み出し命令に従って、入出力リフレッシュとは異なるタイミングであっても、CPUユニット3に転送される。拡張ユニットメモリ42はRAMやROM等を含む。とりわけ、RAMにはバッファメモリとして使用される記憶領域が確保されている。また拡張ユニットメモリ42は、フィールドデバイス10によって取得されたデータ(例えば静止画データや動画データ)を一時的に保持するバッファを有してもよい。
(CPUユニット3のスキャンタイム)
CPUユニット3のスキャンタイムを図7の模式図に示す。この図に示すように一のスキャンタイムSTは、入出力のリフレッシュを行うためのユニット間通信201、プログラム実行202、END処理204により構成されている。ユニット間通信201で、CPUユニット3は、ラダープログラムを実行して得られた出力データを、CPUユニット3内のCPUユニット記憶部32から拡張ユニット4等の外部機器に送信する。さらにCPUユニット3は、拡張ユニット4等の外部機器から受信した入力データを、CPUユニット3内のCPUユニット記憶部32に取り込む。つまりCPUユニット3のPLC側デバイス部34に記憶されているデバイス値は、出力リフレッシュによって拡張ユニット4のデバイスに反映される。同様に、拡張ユニット4のデバイスに記憶されているデバイス値は、入力リフレッシュによってCPUユニット3のデバイスに反映される。また同様に、プログラマブル表示器50のデバイス(後述する図11に示す表示器側デバイス部56a)に記憶されているデバイス値も、入力リフレッシュによってCPUユニット3のデバイスに反映される。このように入出力リフレッシュによって、CPUユニット3のデバイスと拡張ユニット4のデバイスが同期される、いわゆるミラーリングが実現される。
なお、リフレッシュ以外のタイミングでデバイス値をユニット間で更新する仕組み(ユニット間同期)を採用することもできる。ただ、CPUユニット3のデバイスは、CPUユニット3が随時書き換えており、同様に拡張ユニット4のデバイスは拡張ユニット4が随時書き換えている。つまりCPUユニット3のデバイスは、CPUユニット3の内部の装置によって随時アクセス可能となっており、同様に拡張ユニット4のデバイスは拡張ユニット4の内部の装置によって随時アクセス可能となっている。CPUユニット3と拡張ユニット4との間では、基本的にリフレッシュのタイミングにおいて相互にデバイス値を更新して同期する。
CPUユニット3は、図7に示すプログラム実行202のタイミングで、更新された入力データを用いてプログラムを実行(演算)する。この図に示すように、プログラム実行202においては、複数のプログラムモジュール又はラダープログラムを、プロジェクトデータに従って順番に実行することもできる。なおプログラムモジュールとは、ユーザプログラムを構成する複数のプログラム部品の一である。例えばプログラムモジュールは、メインのラダープログラムとサブのラダープログラムを含む。またプログラムを機能毎にブロック化したファンクションブロックと呼ぶこともある。CPUユニット3は、このようなプログラムの実行によりデータを演算処理する。
またEND処理204は、PC2やCPUユニット3に接続されたプログラマブル表示器50等の外部機器とのデータ通信、システムのエラーチェック等の周辺サービスに関する処理全般を意味する。
このように、PC2はユーザの操作に応じたラダープログラムを作成し、作成したラダープログラムをPLC1に転送する。PLC1は、入出力リフレッシュ、ラダープログラムの実行及びEND処理を1サイクル(1スキャン)として、このサイクルを周期的、すなわちサイクリックに繰り返し実行する。これにより、各種の入力機器(センサ等)からのタイミング信号に基づいて、各種の出力機器(モータ等)を制御する。なお、スキャン周期とは別に、CPUユニット3や拡張ユニット4はそれぞれ内部制御周期を有している。CPUユニット3や拡張ユニット4は内部制御周期を基準としてフィールドデバイス10等の機能を制御する。
(ロギング)
ユーザがユーザプログラムを改良したり、修正したりする際に、PLCがユーザプログラムを実行している際に取得されたデバイス値が役立つことがある。そこで、PLCは予め指定されたデバイス値を取得し、ログデータを作成する。ここで、PLCが管理するデバイスには、ユーザプログラムによって利用されるものだけでなく、ユーザプログラムによって利用されないものも存在する。また、ユーザプログラムを改良したり、修正したりする際に役立つデバイスもあれば、役に立たないデバイスもある。一般にデバイスの数は数千個に及ぶため、ユーザが必要なデバイスを指定することは大きな負担となっていた。そこでPCは、ユーザプログラムを解析し、ユーザプログラムに使用又は記述されているデバイスをロギング対象として抽出する。これにより、ユーザの負担が軽減される。
PLCが管理するすべてのデバイスをロギングの対象とすると、スキャンタイムが長くなってしまう。なぜなら、ロギングは、ユーザプログラムの一つとして実行されたり、入出力リフレッシュの際に実行されたりするからである。時には、ロギングのもたらす遅延によって、ユーザプログラムがユーザの希望通りに動作しないこともありうる。したがって、ロギング対象のデバイスの数は適切に維持されるべきであろう。
ユーザプログラムは、上述の通り複数のプログラム部品から構成されることがある。この内、ユーザが修正を希望するプログラム部品に関連したデバイスがロギングされれば、ユーザにとって十分な場合がある。また、複数のプログラム部品の内で、ユーザは特定のプログラム部品を抽出対象から除外したり、特定のプログラム部品を抽出対象に追加したりすることを希望することもあろう。よって、プログラム部品を単位として、ロギング対象からデバイスを追加又は削除できればユーザにとって便利であろう。
ここで、CPUユニット3のCPUユニット処理部31の詳細な機能ブロック図を図8に示す。上述した部材と同じ部材には同一の参照符号を付し、詳細説明を省略する。ここではCPUユニット処理部31は、PC2から受信したプロジェクトデータ71とログ設定データ72を、CPUユニット記憶部32に記憶しているものとする。CPUユニット記憶部32のPLC側デバイス部34は、CPUユニットデバイス部34aと拡張ユニットデバイス部34bを備える。
図8に示すCPUユニット処理部31は、プログラム実行部40と、ユニット制御部80bと、検知部82と、記録部81と、イベント収集部92aと、時刻管理部83aと、出力部84を備える。検知部82は、例えばPLC側デバイス部34に含まれているいずれかのデバイスに対する外部機器からのデバイス値の書き換えを検知する。出力部84は、ユーザプログラムの実行が終了したとき、或いはメモリカードへの保存トリガリレーがONした場合等、所定の出力条件が満たされると、プロジェクトデータ71、ログデータ73、画像データを、保存メモリ36を構成するメモリカード36Aや内部メモリ37に書き込む。所定の出力条件が満たされるまでは、ログデータ73がメモリ(例えばリングバッファ)に記録されていき、容量が一杯になると、一番古いログデータ73が消去され、新しいログデータ73が追加記録されていく(いわゆるFIFO形式で記録する)。このメモリカード36AはCPUユニット3から取り外されて、PC2の装着部に装着される。これにより、PC2の表示部7にログデータ73が表示されるようになる。なお、出力部84は、PLC側通信部33を介してPC2やクラウド等にログデータ73を送信してもよい。
プログラム実行部40は、上述の通りユーザプログラムを繰り返し実行する。ユニット制御部80bは、このプログラム実行部40を制御したり、拡張ユニット4との入出力リフレッシュを実行したりする。プログラム実行部40は、プロジェクトデータ71に含まれるユーザプログラムを繰り返し実行し、ユーザプログラムに従って拡張ユニット4を制御する。なお、プログラム実行部40は、ユーザプログラムに従って、PLC側デバイス部34のCPUユニットデバイス部34aに保持されている出力系のデバイスにデバイス値を書き込んだり、CPUユニットデバイス部34aに保持されている入力系のデバイスからデバイス値を読み込んだりする。
記録部81は、ログ設定データ72に従ってPLC側デバイス部34(CPUユニットデバイス部34a又は拡張ユニットデバイス部34b)からデバイス値を取得したり、拡張ユニット4のバッファメモリからデバイス値を取得したりして、一時記録部91a(例えばリングバッファ)に書き込む。また記録部81は、上述の通りEND処理の際等、所定のタイミングでロギング処理を実行する。ログデータ73やプロジェクトデータ71は、保存メモリ36(例えばメモリカード36Aや内部メモリ37)に書き込まれる。
イベント収集部92aは、所定の保存条件、すなわちデータの収集を行う収集開始条件が満たされると、PLC側デバイス部34に保持されているデバイス値の内、ログ設定データ72により指定されたデバイス値をデバイス部から読み出すと共に、時刻管理部83aから時刻情報を取得する。イベント収集部92aは、デバイス値と時刻情報とを関連付けて一時記録部91aに格納する。またイベント収集部92aは、ログ設定データ72により指定された収集周期(例えばスキャン周期)毎に、デバイス値と時刻情報とを取得して一時記録部91aに格納してもよい。
一時記録部91aには、リングバッファが好適に採用される。リングバッファが採用されている理由は、リングバッファに記憶されているすべてのデータがログデータ73として保存メモリ36に保存されるわけではないからである。例えば保存部93は、所定の保存条件が満たされたときに、リングバッファの一時記録部91aからデバイス値と時刻情報を読み出し、ログデータ73を作成して保存メモリ36に保存してもよい。同様に保存部93は、所定の保存条件が満たされたときに、拡張ユニット4から多くのデバイス値を含む大容量のデータと時刻情報とを読み出し、ログデータ73を作成して保存メモリ36に保存してもよい。
保存部93は、上述したデバイス値及び時刻情報と、上述した大容量データ及び時刻情報とを、対応付けて保存する。ここで、「対応付けて」保存とは、PC2にて再生しやすい形で保存されていればよく、例えば複数のファイルを対応付けたファイル管理がなされていてもよい。具体的に説明すると、保存メモリ36において、特定のフォルダの下に、デバイス値及び時刻情報が格納された第1サブフォルダと、大容量データ及び時刻情報が格納された第2サブフォルダとが置かれている場合には、特定のフォルダまでのパス(ディレクトリパス)が共通フラグとなり、この共通フラグを使って、第1サブフォルダ内のファイルと第2サブフォルダ内のファイルを「対応付けて」保存することが可能になる。また、上述した特定のフォルダと同じレベル(ディレクトリ)に置かれた別フォルダがある場合、その別フォルダは、他のタイミングで保存されたデータパッケージを意味する。もちろん、この別フォルダの下にも上述同様のサブフォルダが置かれている。このように、保存部93は、上述したデバイス値及び時刻情報と、上述したデータ(大容量データ)及び時刻情報とを、共通フラグ(所定のディレクトリパス)により識別される複数のファイルに格納し、それら複数のファイルを保存してもよい。その他、例えば共通フラグとしてファイル名を採用し、同一又は対応するファイル名を持つファイルを生成することで、「対応付けて」保存することも可能である。他にも、例えば時刻情報をキーとして、デバイス値とデータ(大容量データ)を対応付けてリスト化し、これを一のファイルに纏めることによっても、「対応付けて」保存することが可能である。
なお本実施形態では、監視機器からのデータの一例として大容量データを考えたが、他にも、例えばモーションデータや通信データ、音声データ等の連続データであってもよいことは言うまでもない。送信部94は、PC2やクラウド等にログデータ73を送信してもよい。リングバッファの一時記録部91aが満杯になると、イベント収集部92aは、リングバッファに保持されている最も古い情報に対して、最も新しい情報を上書きする。ここでは一時記録部91aに、バッファの一例としてリングバッファが採用されているが、これは一例にすぎない。バッファとしては、FIFO形式のバッファが採用されれば十分であろう。さらに、上述した記録部81とイベント収集部92aとは、個別の部材とする他、一の部材に統合してもよい。
上述したように、CPUユニット3や拡張ユニット4は一つ以上の機能を有している。各機能には様々なデバイスが割り付けられている。よって、これらの機能を単位として、ロギング対象からデバイスを追加又は削除できれば、ユーザにとって便利であろう。例えば、CPUユニット3の通信機能に関する望ましくないイベントが発生した場合、ユーザはCPUユニット3の通信機能に関するデバイスのデバイス値を参照することで、このイベントを解消することが容易になろう。
(カメラユニット4c)
PLC1には、カメラを接続することができる。このためPLC1を構成する拡張ユニット4には、カメラを接続可能なカメラユニット4cを含めることができる。このようなPLC1の例を、図9の機能ブロック図に示す。この図に示すPLC1は、外部インターフェース97と、画像記録部520と、カメラユニット処理部41cを含んでいる。外部インターフェース97は、外部のカメラと接続されており、このカメラから画像データの入力を受ける。また画像記録部は、外部インターフェース97を介してカメラから入力される画像データを一時的に記録する。さらにカメラユニット処理部41cは、外部インターフェース97を介してカメラから入力される画像データを収集し、この画像データが取得された取得時刻に関する情報と、この画像データとを関連付けて、画像記録部に一時記憶する。
PLC1は、保存条件が満たされると、カメラユニット処理部41cにより画像記録部に一時記憶された画像データを、運転記録データと関連付けて保存する。保存は、例えばCPUユニット3側の保存メモリ36としてもよいし、あるいはカメラユニット側のカメラ設定情報記憶部530としてもよい。
プログラマブル表示器50は、保存メモリ36に保存された運転記録データを取得して、運転記録データに含まれる取得時刻に関する情報に基づいて、この運転記録データに含まれる画像データに基づく画像を表示部に表示させる。
ここで、カメラ入力機能を有する拡張ユニット4であるカメラユニット4cの拡張ユニット処理部41の機能を、図10の機能ブロック図に基づいて説明する。時刻管理部83bの時計は、図8に示したCPUユニット3の時刻管理部83aの時計と同期している。例えば、CPUユニット3の時刻管理部83aは、END処理の際に時刻情報を時刻管理部83bに送信する。時刻管理部83bは、受信した時刻情報に基づき、時刻管理部83bの時計をCPUユニット3の時刻管理部83aの時計に同期させる。時計は、時刻情報に基づき時間をカウントするカウンタにより実現されてもよい。イベント収集部92bは、所定の収集条件(例えば所定のリレーデバイスがONになったこと)が満たされると、例えば周期的にトリガ信号を出力する。時刻管理部83bはトリガ信号が入力されたときの時刻情報を時計から取得し、時刻情報バッファ95に格納する。拡張ユニットメモリ42は時刻情報バッファ95と一時記録部91aを有している。外部インターフェース97はカメラ部98をカメラユニット4cに接続するためのインターフェースである。外部インターフェース97は、イベント収集部92bにより発行されたトリガ信号をカメラ部98に周期的に出力したり、カメラ部98が出力する画像データを画像受信部96aに出力したりする。画像データは大容量データの一例である。外部インターフェース97は、カメラ部98等の監視機器と接続され、その監視機器からデータ(画像データ)が入力されるインターフェースの一例である。画像受信部96aは、外部インターフェース97を介してカメラ部98からの画像データの入力を伴う撮像機能を実行する機能実行部96の全部又は一部となる。本実施形態では、機能実行部96(画像受信部96a)は、露光時間、ゲイン、ホワイトバランス、コントラスト等の撮像パラメータ(設定情報の一例)に基づいて、カメラ部98の制御を実行する。このような撮像パラメータは、PC2において、所望のパラメータ値が設定され、図6に示すCPUユニット3のPLC側通信部33及びCPUユニット処理部31を介して、機能実行部96に送られる。そのため、図6に示すPLC側通信部33は、PC2や表示器等の外部設定機器から設定情報を受け付ける他のインターフェースの一例である。なお、PLC側通信部33は、上述したようにPC2にて作成されたユーザプログラムも受け付ける。カメラ部98は、トリガ信号に従って撮像を実行し、画像データを出力する。画像受信部96aは、画像データをイベント収集部92bに転送する。イベント収集部92bは、時刻情報バッファ95に保持されている時刻情報と、画像受信部96aから出力された画像データとを関連付けてリングバッファ91bに格納する。リングバッファ91bが満杯になると、イベント収集部92bは、リングバッファ91bに保持されている最も古い情報に対して、最も新しい情報を上書きする。なお、本実施形態では、イベント収集部92bが自動的かつ周期的に撮像トリガ信号をカメラ部98に出力することとしたが、本発明はこれに限られず、イベント収集部92bは、例えばユーザプログラムからの指令に基づいて撮像トリガ信号をカメラ部98に出力してもよい。
ところで、CPUユニット3は毎スキャンごとに実行するリフレッシュ通信と、いつでも実行可能なダイレクト通信と、イベント的にベストエフォートで実行されるメッセージ通信とのいずれかを用いて拡張ユニット4と通信する。保存部は、例えば、ダイレクト通信を使用して拡張ユニット4のリングバッファ91bから画像データと時刻情報とを読み出して、ログデータ73に追記する。なお、ダイレクト通信として、優先度つきの複数のダイレクト通信が実装されてもよい。この場合、ユーザプログラムに関連して実行されるダイレクト通信の優先度は相対的に高く設定され、ロギングのためのダイレクト通信の優先度は相対的に低く設定されてもよい。これにより、ロギングがユーザプログラムの実行に与える影響を小さくすることが可能となる。
上述の通り図9は、カメラユニット4cを含むプログラマブルロジックコントローラシステムの機能ブロック図を示している。この図に示すプログラマブルロジックコントローラシステムは、CPUユニット3とカメラユニット4cと拡張ユニット4でPLC1を構成している。CPUユニット3とカメラユニット4cと拡張ユニット4とは、ユニット間バス90を介して接続されている。またCPUユニット3には、通信線CLを介してPC2を接続している。さらにカメラユニット4cには、撮像トリガラインを介してカメラ部98が接続されている。カメラ部98は、カメラ設定記録部575を備える。一方CPUユニット3は、デバイス部を備える。カメラ設定記録部575には、カメラ部98の設定情報が記録される。
図9のカメラユニット4cは、基本ユニットであるCPUユニット3とユニット間バス90で接続されている。カメラユニット4cにカメラ部98を接続する外部インターフェース97には、撮像トリガラインと画像通信ラインが接続されている。カメラ部98に対して撮像トリガを規定するON/OFF信号を、撮像トリガラインを介して送信することで、ユニット間バス90における同期タイミングをカメラ部98にまで拡張し、ひいてはデバイス値の記録時刻とカメラ画像データの取得時刻とを、精度よく同期させることができる。
(カメラユニット4c)
カメラユニット4cは、CPUユニット3とユニット間バス90を介して電気的に接続される。このカメラユニット4cは、PLC1からの撮像トリガに応じて所定領域を撮像し、撮像した該所定領域に対応する画像データを生成するカメラ部98を接続するためのユニットである。図9に示すカメラユニット4cは、外部インターフェース97と、カメラ設定情報記憶部530と、カメラユニット処理部41cと、画像記録部520とを備える。
カメラ設定情報記憶部530は、撮像トリガの条件を含むカメラ部98の設定情報を記憶する。カメラ設定情報記憶部530に記憶されるカメラ部98の設定情報は、プログラム作成装置70により作成され、CPUユニット3を介して受信された設定情報を含む。なおCPUユニット3により実行されるユーザプログラムは、CPUユニット3に接続されるプログラム作成装置70によって作成される。
カメラユニット処理部41cは、カメラ設定情報記憶部530に記憶されたカメラ部98の設定情報に基づいて、撮像トリガを規定するON/OFF信号を生成し、このON/OFF信号を撮像トリガとしてカメラ部98で生成された画像データを処理する。
画像記録部520は、カメラユニット処理部41cで取得された画像データを記録する。また画像記録部520は、カメラユニット処理部41cで取得された画像データを、この画像データが取得された時刻に関する情報と関連付けて時系列に記録する。さらに画像記録部520は、CPUユニット3からの指示に応じて、画像データ及び時刻に関する情報をCPUユニット3に送信する。
外部インターフェース97は、カメラユニット処理部41cとカメラ部98との間に設けられる。この外部インターフェース97は、撮像トリガラインと、画像通信ラインを含む。
撮像トリガラインは、カメラユニット処理部41cで生成され、カメラ部98に撮像を実行させる撮像トリガを規定するON/OFF信号をカメラ部98に送るためのインターフェースである。この撮像トリガラインは、非通信ラインであることが好ましい。これにより、通信でなくON/OFFのI/Oで撮像トリガを指示できるため、通信による撮像コマンドの送信と比べて極めて高速な撮像トリガの指示が実現される。
外部インターフェース97とカメラ部98とを接続するカメラ接続ケーブル550は、画像通信ライン502と、撮像トリガライン501とを束ねている。これにより、カメラユニット4cとカメラ部98とを、外部インターフェース97を接続するのみで、カメラ部98を動作させるすべての電気信号のやりとりを実現でき、配線をシンプルとして構成の簡素化が図られる。
カメラ設定情報記憶部530は、CPUユニット3からユニット間バス90を介して受信した、カメラ部98の設定情報を記憶している。カメラ部の設定情報は、例えば撮像時のフレームレート、画質、回転、露出、ゲイン、露光時間、ホワイトバランス、コントラスト、ガンマ、シャープネス、アンチフリッカーなど、各種情報が挙げられる。カメラユニット処理部41cは、ユニット間バス90を介してCPUユニット3や拡張ユニット4と接続されている。このカメラユニット処理部41cは、カメラ設定情報記憶部530に記憶されたカメラ部98の設定情報に基づいて、外部インターフェース97を介してカメラ部98から画像データを取得する。画像記録部520は、カメラ部98で取得された画像データを収集し、この画像データが取得された時刻に関する情報とこの画像データとを関連付けて記録する。この構成により、カメラ部98で撮像した画像データに関するデバイス記録と高精度に時刻を同期させることが可能となる。特に撮像を指示する撮像トリガを通信線やコマンド解釈を介することなく、専用線の撮像トリガラインでON/OFF信号として送出することで、時間遅れを避けた高精度な時刻の同期が実現できる。
(時系列データ)
ここで図1に示すプログラマブルロジックコントローラシステムにおいて、デバイス値を時系列データとして保存すると共に、プログラマブル表示器50でデバイス波形として表示させる構成を説明する。PLC1は、ユーザプログラムによって参照される記憶領域であるデバイスについて、予め定められた保存条件に基づいて該デバイスのデバイス値に関する時系列データを保存する。このPLC1は、図6に示したように、CPUユニット処理部31と、CPUユニット記憶部を備える。CPUユニット処理部31は、ユーザプログラムを繰り返し実行するプログラム実行部40と、記録制御部39と、保存制御部39Cを備える。CPUユニット記憶部は、プログラム実行部40によって参照される記憶領域であるデバイスを有するデバイス部と、一時記録部91aと、保存メモリ36を含んでいる。一時記録部91aは、記録制御部39により記録を制御される。ここでは、記録制御部39は、デバイス部に記憶されているデバイスのデバイス値を収集し、このデバイス値の取得時刻に関する情報とデバイス値とを関連付けて時系列に、一時記録部91aに一時記録する。また保存メモリ36は、保存制御部39Cにより保存を制御される。ここでは、保存制御部39Cは、予め定められた保存条件が満たされると、一時記録部91aに一時記録されているデバイス値に関する時系列データを、運転記録データとして保存メモリ36に保存する。
一方で、このPLC1に接続されたプログラマブル表示器50は、予め画面データ作成装置60で設定された表示画面を、表示部55に表示させる。ここで、画面データ作成装置60に接続されたプログラマブル表示器50の機能ブロック図を、図11に示す。この図に示すように、プログラマブル表示器50には、画面データ作成装置60が接続可能となっており、プログラマブル表示器50で表示させる各種画面データは、画面データ作成装置60を用いて作成される。まず、画面データ作成装置60について説明する。
(画面データ作成装置60)
画面データ作成装置60は、例えば、パーソナルコンピュータ等の情報処理端末で動作する作画エディタプログラムを実行することによって、具現化される。ユーザは、各種機能部品FPを所望レイアウトで配置した複数のページを作成する。画面データ作成装置60は、ユーザの操作入力に基づいて、これら複数のページに対して行われた画面データをプログラマブル表示器50に転送する。プログラマブル表示器50は、転送された画面データをフラッシュメモリなどに記憶し、ユーザのタッチ操作に基づいて、画面IDに応じたページを表示する。一例を挙げると、プログラマブル表示器50の表示部55の表示画面に、画面ID1に対応するページが表示され、そのページには、画面ID2に対応するページに切り替えるための切替部品が配置されているとする。この場合、ユーザによって、切替部品に対するタッチ操作が検出されると、画面ID2に対応するページの表示用データが生成され、生成された表示用データに基づいて、画面ID2に対応するページが表示される。
ここで、本実施形態に係るプログラマブル表示器50は、上述したように、PLC1において保存された運転記録データの中身を確認できるようになっている。例えば、プログラマブル表示器50の表示部55の表示画面に、画面ID1に対応するページが表示され、そのページには、運転記録データに含まれるデバイスの時系列データからなるデバイス波形を表示させるための波形表示部品が配置されているとする。ユーザにより波形表示部品がタッチされると、PLC1のCPUユニット3から運転記録データが読み出され、デバイス波形を表示させるための表示用データが生成される。そして、生成された表示用データに基づいて、表示対象となるデバイスのデバイス波形がシステム画面に表示される。
このとき、表示対象となるデバイスは、後述する対象デバイス設定52cによって定まる。対象デバイス設定52cは、デバイス波形を表示させる対象となるデバイスを特定するための設定である。すなわち、運転記録データのうち、ログデータに含まれるデバイスの種類は非常に多く、プログラマブル表示器50に表示させるべきデバイス波形の種類や数は、プログラマブル表示器50が設置された現場によって異なる。そこで、本実施形態に係るプログラマブル表示器50では、画面データ作成装置60を用いてユーザにより予め指定されたデバイスを、対象デバイス設定52cとしてプログラマブル表示器50に記憶させておく。これにより、ユーザにより波形表示部品がタッチされたとき、プログラマブル表示器50は、PLC1に保存された運転記録データのうち、現場に応じて最適な種類や数のデバイスのデバイス波形を表示させることができるので、FA現場で起きたトラブルを現場ですぐに解決しやすくなる。
(プログラマブル表示器50)
次にプログラマブル表示器50について説明する。図11に示すプログラマブル表示器50は、設定記憶部52と、表示器処理部51と、タッチ検出部53と、表示部55と、データメモリ56と、画面データ受信部57と、表示器側通信部58を備える。
(設定記憶部52)
設定記憶部52は、部品設定52a、ページ設定52b、対象デバイス設定52c、取得デバイス設定52d、システム既定画面情報52f、ガイダンス情報52gなど、プログラマブル表示器50において表示用データを生成するために必要な各種画面データを記憶するための部材である。なおガイダンス情報52gとは、対象デバイス設定により特定されるデバイスに関連付けられ、保存条件が成立したときのエラーイベントを解消するための対処方法を誘導するための情報である。ガイダンス情報52gを記憶する設定記憶部52は、ガイダンス情報記憶部として機能する。
部品設定52aは、PLC1のデバイスの状態をモニタする、又は変化させるための部品が複数配置される一画面をページとして、この一画面に配置される部品の各々に対して、デバイスを割り当てる設定である。例えば部品設定52aとして、表示画面上に配置された各部品に対して割り当てられたデバイスや、各部品がタッチ操作されたときに実行される機能を設定する。また部品設定52aには、各部品を示す部品画像を含む。例えば、ランプの点灯状態を示す画像と、ランプの消灯状態を示す画像などが挙げられる。
ページ設定52bは、部品設定52aを、複数の異なるページを識別するページ識別子によりページ単位で管理するための設定である。ページ識別子は、例えばページ番号を示す画面IDである。ページ設定52bにより、一又は複数の部品が配置された一画面をページとして、複数の異なる画面IDによりページ単位で管理する。
対象デバイス設定52cは、PLC1に保存された時系列データを波形状に示したデバイス波形を表示させる対象デバイスを特定するための設定である。対象デバイス設定52cにより、運転記録データのうち、プログラマブル表示器50にデバイス波形を表示させる対象となる対象デバイスが選択され、設定される。
取得デバイス設定52dは、後述するリアルタイムチャートモニタのモニタモードで表示させるデバイス波形として、取得するデバイスを特定するため設定である。システム既定画面情報52fは、予め用意されたシステム既定画面に関する情報である。
表示器処理部51は、CPUとプログラムによるソフトウェアによって実現してもよいし、FPGAやASIC等のハードウェアによって実現してもよいし、両者の混在によって実現してもよい。もちろん、複数のCPUや複数のハードウェアを用いるなど、表示器処理部51を実現するための具体構成の如何は問わない。この表示器処理部51は、表示用データ生成部51aと、運転記録データ解釈部51bを備える。
表示用データ生成部51aは、設定記憶部52に記憶された部品設定52a及びページ設定52bに基づいて、複数の異なるページ識別子に対応する各ページの表示用データを生成するための部材である。この表示用データ生成部51aにより、表示部55の表示画面に表示される表示用データが生成される。ここでは、タッチ検出部53によりユーザのタッチ操作を有無を検出すると共に、タッチ操作があった場合は、このタッチ操作に応じた表示内容に変更する。ここでは、ユーザのタッチ操作により指示された表示画面上の位置に、特定の機能を割り当てられた部品(例えばスイッチ部品SPなど)が存在するか否かを表示データ生成部で判定する。そして、タッチされた位置に部品が存在する場合には、その部品に応じた機能を実行する。具体的には、例えばスイッチ部品SPであれば、スイッチ部品SPに割り当てられたデバイスの状態を変化させると共に、デバイスの状態に応じた部品画像(例えばスイッチONを示す部品画像またはスイッチOFFを示す部品画像など)を表示画面に表示させる。
一方で表示用データ生成部51aは、タッチ操作がない場合には、デバイス監視のための表示用データを生成する。例えば図2に示すようなページをPLC1の運転中に表示させるように、表示用データ生成部51aはPLC1のデバイスの状態を監視するための表示用データを生成する。具体的には、表示用データにおいて使用されるデバイスのデバイス値を一定周期でデータメモリ56から読み出して、表示用データの内容を書き換えることにより新たな表示用データを生成する。表示部55は、生成された新たな表示用データに応じたページを表示画面に表示する。データメモリ56の内容は、後述する表示器側通信部58によって、PLC1のデバイスの内、表示用データで使用されるデバイスのデバイス値とミラーリングされている。そのため、PLC1のデバイスの状態をリアルタイムでモニタしたり、リアルタイムで変化させたりすることができる。なおデバイス監視時の基本処理動作については、後述する。
運転記録データ解釈部51bは、運転記録データのうち管理情報データを読み出して、運転記録データに何が含まれているかを判断する(詳細は後述)。
(タッチ検出部53)
タッチ検出部53は、表示部55の表示画面に対するタッチ操作を検出するための部材である。このタッチ検出部53は、表示画面に対するタッチ操作を、タッチパネル式に検出する。タッチ操作の種別としては、ロングタップ(長押し)、ダブルタップ、フリック、ピンチイン、ピンチアウト等が挙げられる。
(表示部55)
表示部55は、表示画面を備えている。表示部55には、表示用データ生成部51aにより生成された表示用データに基づいて、表示用データに応じたページ識別子に対応するページが表示される。この表示部55は、例えばタッチパネル機能を有するLCDや有機EL等で構成できる。
(データメモリ56)
データメモリ56は、各種の設定を保持するための部材である。ここでは、デバイス値を保持する表示器側デバイス部56aを含んでいる。表示器側デバイス部56aは、PLC1のデバイスの内、表示用データで使用されるデバイスのデバイス値を記憶している。後述する表示器側通信部58によって内容が適宜更新されている。
(画面データ受信部57)
画面データ受信部57は、画面データ作成装置60で作成され転送される画面データを受信するインターフェースである。表示器処理部51は、画面データ受信部57を介して受信した画面データを設定記憶部52に記憶させる。
(表示器側通信部58)
表示器側通信部58は、外部の機器、例えばPLC1と通信を行うための通信インターフェースである。この表示器側通信部58は、PLC1と予め定められた周期(例えば10ms)で通信を繰り返し、データメモリ56の内容と、PLC1のデバイスのうち表示用データで使用されるデバイスのデバイス値とを、同期(ミラーリング)させている。例えばラダープログラムの1スキャンが100μs程度で、PLC1とプログラマブル表示器50との通信周期が10msの場合は、ラダープログラムの100スキャンに1度、プログラマブル表示器50はPLC1のデバイスを読み出すことになる。また表示器側通信部58は、必要に応じてプロトコル変換などを行うこともできる。
(表示用データ生成部51a)
表示用データ生成部51aは、表示画面に表示された第一ページに配置されたページ切替部品131に対する第一のタッチ操作を、タッチ検出部53により検出した場合には、ページ設定52bに基づいて該第二ページ識別子に対応する第二ページの表示用データを生成する。
また表示用データ生成部51aは、表示画面において、予め設定された第二のタッチ操作を、タッチ検出部53により検出した場合には、PLC1に保存された時系列データに基づいて、対象デバイス設定52cにより特定されるデバイスのデバイス波形を表示させるための表示用データを生成する。そして表示部55は、表示用データ生成部51aにより生成された表示用データに基づいて、第二ページ又はデバイス波形を表示画面に表示するよう構成されている。
例えば図12に示すデバイス波形表示画面160では、予め設定されたデバイスのデバイス波形が、表示画面に表示される。図12の例では、デバイスDM100、DM200、R000が、グラフとして表示されている。各デバイスの左側に設けられたチェックボックスをON/OFFすることにより、該当するデバイス波形の表示/非表示が切り替えられる。
このような構成により、プログラマブル表示器50に対するタッチ操作によって、異なるページに切り替える操作と、PLC1に保存された時系列データのデバイス波形を表示させる操作とを選択的に実行することが可能となる。特に、プログラマブル表示器50の表示画面においてデバイス波形を確認することができるので、FA現場で起きたトラブルを現場で速やかに解決するための情報を容易に取得できる。
ここで、図12に示すデバイス波形表示画面160は、プログラマブル表示器50のシステム画面の一種であり、そのため、図12の右上の「×」ボタン166をタッチ操作すると、システム画面から通常の監視画面(画面データ作成装置60においてユーザが作画した画面)に戻るようになっている。また、図12に示すデバイス波形表示画面160は、プログラマブル表示器50の開発者によって予め用意されたシステム既定画面(いわゆる定型の既定仕様画面)上に、運転記録データから読み出した時系列データを重ね合わせることによって実現している。システム画面のデータ構造の詳細については、後述する。
なお、以上の例ではページ切替部品をタッチする第一のタッチ操作でページを切り替える構成を説明したが、本発明はページを切り替える手段を、専用のページ切替部品を用いる方法に限定するものでない。例えばフリック操作など、予め設定された所定のタッチ操作でページを切り替えるよう構成してもよいことはいうまでもない。この場合においては、ページ切替を行うための所定の操作が、第一のタッチ操作となる。
(画面データ作成装置60の機能ブロック図)
次に、画面データ作成装置60について説明する。図11に示す画面データ作成装置60は、画面データ作成側入力部63と、画面データ作成側表示部65と、画面データ作成部61と、画面データ作成側記憶部62と、画面データ転送部67を備える。
画面データ作成側入力部63は、マウスやキーボード等の入力デバイスである。ユーザは、画面データ作成側入力部63を介して画面データ作成装置60を操作し、ページ内の部品のレイアウトを定めたり、部品に対してデバイスの割り当てを行うことができる。
画面データ作成側表示部65は、画面データ作成装置60に接続されたディスプレイ等であり、画面データの確認を行う。
画面データ作成部61は、画面データ作成側入力部63を介したユーザ操作入力に従って、部品設定52a、ページ設定52b、対象デバイス設定52cを含む画面データを作成する。編集中の画面データは、画面データ作成側表示部65に表示させ、ユーザに確認させる。
画面データ作成側記憶部62は、部品設定52a、ページ設定52b、対象デバイス設定52cを含む画面データを記憶する。
画面データ転送部67は、画面データ作成部61により作成された画面データを画面データ作成側記憶部62から読み出して、プログラマブル表示器50に転送する。
(画面データ作成装置60のユーザインターフェース画面)
画面データ作成装置60のユーザインターフェース画面の例を、図13~図16に示す。図13は、メニュー画面などの設定を行うページ設定画面110を示している。このページ設定画面110から、ユーザはプログラマブル表示器50の各画面(ページ)に配置されるボタンや、各ボタンの機能を設定する。ページ設定画面110の右側には、設定可能な画面をリストした画面選択欄111が、右側には画面表示欄112が、それぞれ設けられる。画面選択欄111では、設定可能な画面が、ページ識別子である画面IDと共に表示されている。画面選択欄111で選択された画面が、画面表示欄112に表示される。図13の例では、メニュー画面(画面IDは0001)が選択された状態を示している。また画面選択欄111の下部には「画面」タブ113と「システム設定」タブ114が設けられている。「システム設定」タブ114を選択すると、図16のシステム設定画面130に切り替わる。また画面表示欄112に配置するスイッチ等の表示部品の設定は、図14に示すスイッチ設定画面120から行われる。図13のページ設定画面110の画面表示欄112において、任意のスイッチを選択、あるいは右クリックからプロパティを選択すると、図14に示すスイッチ設定画面120に切り替わる。
図14に示すスイッチ設定画面120は、スイッチの機能を割り当てるスイッチ機能選択欄121を設けている。割り当て可能なスイッチとしては、「ビットセット」、「ページ切替」、「リプレイモード起動」、「リアルタイムチャートモニタ(リプレイモード)」、「リアルタイムチャートモニタ(モニタモード)」等が挙げられる。ここではスイッチ機能選択欄121は、ドロップダウンリストでスイッチ機能を選択可能としている。ユーザはドロップダウンリストに表示される複数の候補から、所望のスイッチ機能を選択する。またスイッチ機能選択欄121でスイッチ機能が選択されると、スイッチ設定画面120は図15に示すように、選択されたスイッチ機能に応じた設定項目が表示される。ここではスイッチ機能選択欄121で「リプレイモード起動」が選択されており、これに応じて初期表示画面選択欄122、運転記録データ選択欄123、リアルタイムチャートモニタ(リプレイモード)詳細設定欄124が、それぞれ表示されている。
一方、図16はシステム設定画面130を示している。このシステム設定画面130では、リアルタイムチャートモニタ(この例ではリプレイモード)で表示させるデバイス波形の対象となる対象デバイスを設定する対象デバイス設定画面220を表示している。詳細は後述する。
このようにして画面データ作成装置60で作成された画面データは、画面データ転送部67を通じてプログラマブル表示器50側に送信される。プログラマブル表示器50は、画面データ受信部57で画面データを受信すると、設定記憶部52に記憶する。
(部品設定52a)
図11に示すプログラマブル表示器50の設定記憶部52に保存される部品設定52aは、波形表示部品の設定や、ページ切替部品131の設定、リアルタイム表示部品、リプレイ表示部品の設定の少なくともいずれかを含む。
(波形表示部品)
波形表示部品は、デバイス波形を表示させるための表示部品である。ユーザは、図11の画面データ作成装置60を用いて、画面データ作成側入力部63を操作して画面データ作成部61からユーザ画面を定義する。ここでは、画面データ作成側表示部65上にユーザ画面を表示させながら、画面データ作成側記憶部62に保持された波形表示部品やページ切替部品131等の表示部品を選択して、ユーザ画面のページ上の所望の位置に波形表示部品やページ切替部品131等を配置する。このようにしてユーザ画面が作成されると、画面データ転送部67から、プログラマブル表示器50の画面データ受信部57に対して、画面データが転送される。プログラマブル表示器50では、転送された画面データに基づいて、画面表示に必要な情報、例えば対象デバイス設定52cで指定されたデバイス値を、PLC1側から表示器側通信部58を介して取得し、表示器処理部51の表示用データ生成部51aで表示用データを生成し、表示部55に表示させる。そして、表示部55の表示画面に表示された表示部品にユーザがタッチしたことをタッチ検出部53で検出して、該当する処理を表示器処理部51で行う。例えば、波形表示部品にタッチ操作が行われると、図12のデバイス波形表示画面120を表示させる。
(ページ切替部品131)
ページ切替部品131は、表示画面において、複数の異なるページ識別子の内、任意の第一ページ識別子に対応する第一ページに配置される、第一ページ識別子と異なる第二ページ識別子に対応する第二ページに切り替えるための部品である。
ページ切替部品131を配置したユーザ画面の例を、図17~図20に示す。図17に示すユーザ画面130Aの例では、ページ切替部品131は「次ページ」と表示されたボタン132であり、ユーザは表示画面上に表示されたこの「次ページ」ボタン132を押下することで、指定されたページ(例えば現在表示されているページをインクリメントした次のページ)に、表示画面における表示内容を切り替えることができる。また図18に示すユーザ画面130Bの例では、ページ切替部品131として「→」、「←」の2つのボタン133、134を配置しており、「→」ボタン133を押下するとページ番号を増やした該当ページに、「←」ボタン134を押下するとページ番号を減らした該当ページに、それぞれ表示内容を切り替えることができる。さらに図19に示すユーザ画面130Cの例では、ページ切替部品131として「△」、「▽」ボタン135、136とページ番号表示欄137を有している。ユーザは「△」ボタン135を押下すると、現在ページ番号表示欄137に表示されたページ番号を増やし、「▽」ボタン136を押下すると、現在ページ番号表示欄137に表示されたページ番号を減らすことができる。またページの切り替えは、これら「△」ボタン135や「▽」ボタン136を押してページ番号を増減させたタイミングで実行させてもよいし、あるいは「△」、「▽」ボタン135、136とは別に「移動」ボタン138を配置して、「△」、「▽」ボタン135、136でページ番号表示欄137に所望のページ番号を表示させた状態で、「移動」ボタン138を押下して移動させるようにしてもよい。さらに図20に示すユーザ画面130Dの例では、ページ切替部品131として、各ページのサムネイル画面139を表示させており、ユーザは所望のページに該当するサムネイル画面139を押下することで、該当するページに表示内容を切り替えることができる。
(プログラマブル表示器50のユーザインターフェース画面)
プログラマブル表示器50のユーザインターフェース画面の例を、図12、図21~図27に示す。これらの図において、図21はプログラマブル表示器50のメニュー画面140、図22は図21のメニュー画面140で「リプレイモード起動」ボタン141をタッチした場合に表示されるリプレイモードの初期画面150、図12はリプレイモードで「リアルタイムチャートモニタ」タブ161を選択して表示されるデバイス波形表示画面160、図23は「カメラ・イベント」タブ162を選択して表示されるカメラ・イベント表示画面170、図24は「ビューワ」タブ163を選択して表示されるビューワ表示画面180、図25は「ユニット」タブ164を選択して表示されるユニット表示画面190、図26は図25のユニット表示画面190で「詳細」ボタン191をタッチして表示されるユニット表示画面190B、図27は「プログラム」タブ165を選択して表示されるプログラム表示画面200を、それぞれ示している。図24に示す「ビューワ」タブ163をタッチ操作したときに表示される「メンテナンス用画面」等のユーザ画面は、ユーザがプログラム作成装置70を用いて作成したものである。
図23に示すカメラ・イベント表示画面170は、本実施形態ではシステム画面の一例であり、上述したデバイス波形表示画面160と同様に、システム既定画面上に、運転記録データから読み出したカメラ画像や、発生時刻と対応付けられたイベントが重ね合わせて表示されたものである。このカメラ・イベント表示画面170は、画面右側にカメラ画像表示欄172を設けている。イベント・エラー履歴欄171には、運転記録データに含まれる各イベントが、イベントの内容と発生日時と共に一覧表示される。図23の例では、イベント・エラー履歴欄171に列挙されたイベント群EVのうち、「モード切替(PROG>RUN)」の行がハイライトされている。これは「モード切替(PROG>RUN)」のイベントが発生した時刻にフォーカスしていることを示す。
このとき、左方に設けられたカメラ画像表示欄172で表示されるカメラ画像は、このイベントが発生した時刻に最も近い時刻に取得されたカメラ画像が、運転記録データから抽出されて表示されている。さらにカメラ画像表示欄172の下方には、表示されているカメラ画像を撮像した日時や撮像枚数何枚中の何番目であるか等の画像情報IXが表示される。
また、時刻表示領域409には、「20XX/4/20 11:26:23」と表示されているが、この時刻は、上述した「モード切替(PROG>RUN)」のイベント発生時刻と同期している。つまり、イベント・エラー履歴欄171において、タッチ操作したイベントの発生時刻が、時刻表示領域409に表示されるようになっている。
ここで、イベント・エラー履歴欄171のうち、「モード切替(PROG>RUN)」と異なる任意のイベントをタッチ操作した場合には、任意のイベントがハイライトされる。これに伴って、その任意のイベントの発生時刻が、時刻表示領域409に表示される。加えて、カメラ画像表示欄172に表示されるカメラ画像も切り替わる。具体的には、その任意のイベントが発生した時刻に最も近い時刻に取得されたカメラ画像に切り替わる。
また、時刻表示領域409の右方には、スライダ状に左右に移動可能な時刻指定カーソル404が表示されている。時刻指定カーソル404は、時刻表示領域409に表示された「20XX/4/20 11:26:23」を示している。また、時刻指定カーソル404を左右に移動させると、この操作に追従して、カメラ画像が切り替わり、同時に、イベント・エラー履歴欄171のハイライト箇所も切り替わるようになっている。
このように、カメラ画像の切り替え、ハイライトするイベントの切り替え、および時刻指定カーソルの位置は、互いに連動(同期)している。ユーザは、時刻指定カーソル404を左右にスライダ操作したり、イベント・エラー履歴欄171において特定のイベントにタッチ操作したりすることで、連動表示させる基準となる時刻を変更させることができる。連動表示の詳細については、後述する。
図24に示すビューワ表示画面180は、本実施形態ではシステム画面の一例であり、上述したデバイス波形表示画面160と同様に、システム既定画面上に、運転記録データから読み出したデバイス値が重ね合わされ表示されたものである。ビューワ表示画面180は、画面データ作成装置60においてユーザが作画した「メンテナンス用画面」が、システム既定画面の中に組み込まれている。メンテナンス用画面には、図2を用いて詳述したように、「メンテナンス用画面」や「リプレイ再生中」といったテキスト部品TXが配置されている。また、「全般」、「AD変換データ」、「特殊データ」、「オフセット値」、「アナログデータ」、「断線検知」、「スケーリング」、「上限値」、「下限値」、「コンパレータ」、「項目」、「値」、「リレー」、「上限値ONレベル」、「上限値OFFレベル」、「下限値OFFレベル」、「下限値ONレベル」といった文字表示部品CPが配置されている。幾つかの文字表示部品CPに対応して、数値表示部品NP(12345や3452等を表示)又は文字表示部品CP(ONやOFFを表示)が配置されている。
また、図24に示すビューワ表示画面180では、時刻指定カーソル404の位置と、数値表示部品NPによって表示されるデバイス値とが連動している。すなわち、時刻指定カーソル404を左右にスライダ操作することで、数値表示部品NP又は文字表示部品CPの表示内容を変更させることができる。例えば、図24では、時刻表示領域409に「20XX/4/20 11:26:23」が表示されているので、数値表示部品NP又は文字表示部品CPは、「20XX/4/20 11:26:23」におけるデバイス値を表示している。
さらに、図24に示すビューワ表示画面180は、上述した図23に示すカメラ・イベント表示画面170とも連動(同期)している。上述したように、図23に示すカメラ・イベント表示画面170の時刻表示領域409には「20XX/4/20 11:26:23」が表示されているところ、この状態で、ユーザが「ビューワ」タブ163をタッチ操作すると、時刻表示領域409に「20XX/4/20 11:26:23」が表示され、かつ、この時刻に対応するデバイス値が数値表示部品NP又は文字表示部品CPに表示されたビューワ表示画面180(図24)が表示される。
なお、図24における「波形確認」ボタン181は、いわゆるスイッチ部品SPであり、ユーザがこれをタッチ操作すると、図24に示す「メンテナンス用画面」で使用されているデバイスを表示対象とするリアルタイムチャートモニタ(リプレイモード)が表示される。
図25に示すユニット表示画面190は、本実施形態ではシステム画面の一例であり、上述したデバイス波形表示画面160と同様に、システム既定画面上に、運転記録データから読み出したユニット構成が重ね合わされ表示されたものである。また、「詳細」ボタン191や「波形確認」ボタン181も、システム既定画面に予め組み込まれたものであり(ユーザが作画したものではない)、ユニット構成の数に応じて表示される。図25では、運転記録データの中に含まれるユニット構成ULとして、「CPUユニット」、「I/Oユニット」、「カメラユニット」、「モーションユニット」という4つのユニットが含まれると仮定している。そのため、「詳細」ボタン191や「波形確認」ボタン181も、4セット表示されている。例えば、「モーションユニット」に対応する「詳細」ボタン191をタッチ操作すると、図26に示すユニット表示画面が表示される。
図26に示すユニット表示画面190Bは、本実施形態ではシステム画面の一例であり、上述したデバイス波形表示画面160と同様に、システム既定画面上に、運転記録データから読み出したモーションユニットにおけるデバイスであるバッファメモリ(UG)、及びそのデバイス値が表示される。図26では、UGの一例として、「現在座標」、「指令座標」、「現在速度」、「指令速度」、「帰還トルク」が表示され、各UGの右側にはデバイス値が表示されている。
図26の時刻表示領域409には、「20XX/4/20 11:26:23」が表示されており、この時刻は、上述した図23~図25と同じ時刻である。つまり、図26に示すユニット表示画面190Bに示す時刻も、上述した図23に示すカメラ・イベント表示画面170に示す時刻や、図24に示すビューワ表示画面180に示す時刻と連動(同期)している。また、図26の時刻指定カーソル404を左右にスライダ操作させると、スライダ操作後の時刻指定カーソル404の位置によって時刻が特定され、特定された時刻におけるデバイス値が表示される。すなわち、時刻指定カーソル404のスライダ操作に応じて、運転記録データから、時刻指定カーソル404の位置に対応するデバイス値が読み出され、表示される。
なお、図26に示す「波形確認」ボタン181をタッチ操作すると、図26に示すユニット表示画面190Bで使用されているデバイスを表示対象とするリアルタイムチャートモニタ(リプレイモード)が表示される。
図27に示すプログラム表示画面200は、本実施形態ではシステム画面の一例であり、上述したデバイス波形表示画面160と同様に、システム既定画面上に、運転記録データから読み出したユニット構成やラダープログラムが重ね合わされ表示されたものである。図27では、左側にユニット構成表示欄207、右側にラダープログラム表示欄208が設けられている。
図27の時刻表示領域409には、「20XX/4/20 11:26:23」が表示されており、この時刻は、上述した図23~図26と同じ時刻である。つまり、図27のプログラム表示画面200に示す時刻も、上述した図23に示すカメラ・イベント表示画面170に示す時刻や図24に示すビューワ表示画面180に示す時刻、図25及び図26に示すユニット表示画面190、190Bと連動(同期)している。また、図27に示す時刻指定カーソル404を左右にスライダ操作させると、スライダ操作後の時刻指定カーソル404の位置によって時刻が特定され、特定された時刻におけるデバイス値が、ラダープログラム表示欄208で表示されるラダープログラム上に重畳表示される。すなわち、時刻指定カーソル404のスライダ操作に応じて、運転記録データから、時刻指定カーソル404の位置に対応するデバイス値が読み出され、ラダープログラム上に重畳表示される。
(プログラマブル表示器50の処理動作)
ここで、プログラマブル表示器50で図12のリプレイモードにおいてデバイス波形を表示させる処理動作を、図28Aのフローチャートに基づいて説明する。まずステップS2801において、ユーザのタッチ操作を受け付ける。次にステップS2802において、このタッチ操作が、波形表示部品に対するタッチ操作か否かを判定する。ここで、波形表示部品に対するタッチ操作でない場合は、ステップS2803に進み、スイッチ部品に対するタッチ操作か否かを判定する。ここで他の部品に対するタッチ操作でもない場合は、何も処理を行わずに処理を終了する。一方でステップS2803において、他の部品に対するタッチ操作である場合には、ステップS2804に進み、タッチされた部品に応じた機能を実行して処理を終了する。
一方、ステップS2802において、波形表示部品に対するタッチ操作であると判定された場合は、ステップS2806に進み、運転記録データの選択を受け付ける。ここではユーザに対して、どの運転記録データの波形を表示させるかの選択を促す。そして、何れかの運転記録データが選択されると、ステップS2807において、該当する運転記録データの読み込みを行う。より具体的には、プログラマブル表示器50の表示用データ生成部51aは、PLC1の保存メモリに格納された運転記録データ、又は予めプログラマブル表示器50のデータメモリ56に保存された運転記録データから、運転記録データを取得する。
さらにステップS2808において、表示対象となるデバイスを特定し、さらにステップS2809において、表示用データ生成部51aで表示用データを生成する。最後にステップS2810において、デバイス波形を表示部55に表示させて処理を終了する。
(部品に応じた機能実行)
ここで、図28Aに示すステップS2804の詳細を、図28Bのフローチャートに基づいて説明する。図28Bで行われる「部品に応じた機能実行」は、図28AのステップS2803において、ユーザによってスイッチ部品がタッチ操作された場合に実行される。スイッチ部品の機能としては2種類あり、1つは、図2を用いて上述したビットセット機能である。もう1つは、ページ切替機能である。ビットセット機能が設定されたスイッチ部品は、特定のデバイスが割り付けられている一方、ページ切替機能が設定されたスイッチ部品は、特定のページ(画面ID)が割り付けられている。例えば、図2に示すRESETスイッチ246は、ビットセット機能を有しており、特定のデバイスが割り付けられている。また、図17に示すページ切替部品131は、ページ切替機能を有しており、切替先(ジャンプ先)のページ番号(画面ID)が割り付けられている。
図28Bにおいて、まずステップS2804-1において、スイッチ部品のもつ機能がビットセット機能か否かを判断する。ビットセット機能であれば、ステップS2804-2に進み、タッチ操作に応じて、スイッチ部品に割り付けられたデバイスのデバイス値を書き換える(1→0など)。一方でビットセット機能でなければ、ステップS2804-3に進み、スイッチ部品のもつ機能がページ切替機能か否かを判断する。ページ切替機能であれば、ステップS2804-4において、タッチ操作に応じて、スイッチ部品に割り付けられたページ番号(画面ID)にページ切替を行う。一方でページ切替機能でなければ、図28Aのフローチャートに戻り、処理を終了する。
(表示用データ生成)
また、図28に示すステップS2809の詳細を、図28Cのフローチャートに基づいて説明する。図28Cのフローチャートにおいては、表示用データの生成を行う。ここではまず、ステップS2809-1において、システム既定画面を表示するためのシステム既定画面情報52fが読み出される。このシステム既定画面情報52fは、プログラマブル表示器50の開発者によって作られ、図11に示す設定記憶部52に記憶されている。プログラマブル表示器50の表示用データ生成部51aは、設定記憶部52からシステム既定画面情報52fを読み出す。
次にS2809-2において、運転記録データからデバイス値の時系列データが抽出される。より具体的には、プログラマブル表示器50の表示用データ生成部51aが、ステップS2807において取得した運転記録データから、ステップS2808により特定されるデバイスのデバイス値の時系列データを抽出する。そしてS2809-3において、表示用データ生成部51aが、読み出したシステム既定画面情報52fと、抽出したデバイス値の時系列データとに基づいて、システム既定画面に時系列データが重畳表示された表示用データを生成する。
(デバイス波形表示)
さらに、図28Aに示すステップS2810の詳細を、図28Dのフローチャートに基づいて説明する。図28Dは、デバイス波形の表示を行う手順を示している。まずステップS2810-1において、表示器処理部51は、ステップS2809で表示用データ生成部51aが生成した表示用データに基づいて、デバイス波形表示する。
次にステップS2810-2において、表示器処理部51は、デバイス波形が表示されているときに、時刻指定カーソル404が移動操作されたか否かを判断する。移動操作されていなければ、特に処理は行わず、ステップS2810-2の処理を繰り返す。
一方で、時刻指定カーソル404が移動操作された場合は、ステップS2810-3に進み、表示器処理部51の表示用データ生成部51aは、移動後の時刻指定カーソル404の時刻に応じた時系列データを、運転記録データから抽出する。抽出範囲については、例えば、移動後の時刻指定カーソルの時刻を中心として、波形表示可能な時間範囲の分だけ抽出すればよい。そしてステップS2810-4において、表示用データ生成部51aは、抽出した時系列データを用いて、表示用データを生成し、表示内容を更新する。
例えば、図12の例で言えば、時刻指定カーソル404は、「20XX/4/20 11:26:23」の時刻(スキャン回数35000)に対応する位置にあるところ、ユーザがこれを右方へスライダ操作し、時刻を進めたとする。例えばスキャン回数35000からスキャン回数40000に対応する時刻にまで進めたとする。そうすると、表示器処理部51の表示用データ生成部51aは、スキャン回数40000から前後に所定スキャン回数分に対応する時系列データを、運転記録データから抽出する。そして、表示用データ生成部51aは、抽出した時系列データを用いて、スキャン回数40000が識別線ILと重なるような表示用データを生成し、表示内容を更新する。
なお、表示器処理部51の表示用データ生成部51aは、ワンステップ再生ボタン408がタッチ操作されたとき、このタッチ操作によって特定される時刻を基準とし、この基準の前後所定スキャン回数分に対応する時系列データを抽出し、表示用データを生成し、表示内容を更新する。また表示用データ生成部51aは、再生ボタン406がタッチ操作されたときには、運転記録データから時系列データを順次抽出し、対応するデバイス波形が表示されるよう表示内容を順次更新する(これにより、デバイス波形が横方向スクロールする)。
また、図28Dでは、デバイス波形が表示されている際に時刻指定カーソルが移動操作されたときの処理動作について説明したが、例えば図23に示すカメラ・イベント表示画面170に示すイベント・エラー履歴欄171において、複数のイベント群EV中から任意のイベントに対するタッチ操作の場合の処理も同様である。
具体的には、表示器処理部51の表示用データ生成部51aは、図23に示すカメラ・イベント表示画面170が表示されている状態で、イベント・エラー履歴欄171の任意のイベントに対してタッチ操作されたか否かを判断する。タッチ操作されたと判断した場合、表示用データ生成部51aは、イベント・エラー履歴欄171におけるハイライト箇所をその任意のイベントに切り替えるだけでなく、その任意のイベントの発生時刻を特定して時刻表示領域409に表示させる。また、表示用データ生成部51aは、時刻指定カーソル404の表示位置も、その任意のイベントの発生時刻に合わせて変更させる。さらに、表示用データ生成部51aは、その任意のイベントが発生した時刻に最も近い時刻に取得されたカメラ画像を、運転記録データから抽出して、これをカメラ画像表示欄172に表示させる。
(リアルタイムチャートモニタ)
またプログラマブル表示器50は、PLC1を介してデバイス波形を取得し、リアルタイムで表示させることもできる。このようなリアルタイム表示は、プログラマブル表示器50で表示させるリアルタイムチャートモニタのモニタモードとして実現されている。なおリアルタイムチャートモニタでは、現在のデバイス値を逐次収集してリアルタイムに動画像で表示させるモニタモードの他、過去に取得した時系列データを読み出して表示させるリプレイモードを備えている。すなわちリアルタイムチャートモニタは、現在の様子をそのまま表示させるモニタモードと、過去のある時点の様子を再現するリプレイモードを有している。これらのモードの切り替えは、モード切替部で行うことができる。モード切替部は、例えば図21のメニュー画面140において表示された表示部品である「リアルタイムチャートモニタ(リプレイモード)」ボタン142、「リアルタイムチャートモニタ(モニタモード)」ボタン143の切り替えによって実現できる。図21の画面において「リアルタイムチャートモニタ(モニタモード)」ボタン143をタッチすると、プログラマブル表示器50ではリアルタイムチャートモニタのモニタモードが実行され、図29のデバイス波形表示画面210が表示される。図29のデバイス波形表示画面210は、リアルタイムで表示内容が更新される動画像として表示される。
(取得デバイス設定52d)
また図11に示すプログラマブル表示器50の設定記憶部52は、リアルタイムチャートモニタのモニタモードで表示させるデバイス波形として、取得デバイスを特定するための取得デバイス設定52dを記憶している。PLC1は、取得デバイス設定52dで特定されたデバイスのデバイス値を、時系列データとして記録制御部39により一時記録部91aに一時記録する。そしてプログラマブル表示器50は、表示器側通信部58を介してこの時系列データを取得すると共に、図29に示すデバイス波形表示画面210でそのデバイス値を逐次更新しながら動画像として表示する。
このように設定記憶部52は、デバイス値の時系列データを繰り返し取得する対象となる取得デバイスを特定する取得デバイス設定52dを記憶している。また設定記憶部52は、この取得デバイスの時系列データを逐次表示させるためのリアルタイム表示部品の設定を含む。
(モニタモード)
上述の通り、リアルタイムチャートモニタのモニタモードにおいて、プログラマブル表示器50は、PLC1の一時記録部91aに一時記録されたデバイス値の時系列データを、表示部55に逐次表示させる。このためプログラマブル表示器50は、予め、繰り返し取得する取得デバイスを特定する取得デバイス設定52dと、この取得デバイスの時系列データの逐次表示を行うリアルタイム表示部品の設定を行い、設定記憶部52に保存しておく。これにより、ユーザがユーザ画面上でリアルタイム表示部品をタッチすると、タッチ検出部53がこのタッチ操作を検出し、表示用データ生成部51aが、PLC1の一時記録部91aに一時記録された取得デバイスのデバイス値の時系列データに基づいて、このデバイス値を表示画面に順次表示させる表示用データを生成する。なおリアルタイム表示部品は、図21の例では「リアルタイムチャートモニタ(モニタモード)」ボタン143が該当する。
(対象デバイス設定画面)
リアルタイムチャートモニタにおいて、モニタモードやリプレイモードで表示させるデバイス波形の対象となる対象デバイスは、対象デバイス設定画面で設定する。このような対象デバイスの設定を行う対象デバイス設定画面220の一例を、図16に示す。対象デバイス設定画面220は、モード毎、すなわちリプレイモード用、モニタモード用に個別に設定できる。また各モードにおいて複数のユーザ画面を設定している場合は、ユーザが面ごと、すなわちRTCMID毎に行うことができる。図16の例では、リプレイモードのRTCMID0について、表示される対象デバイスを設定している。ここでは、対象デバイスの候補をユニット選択欄221に一覧で表示させ、各デバイスについて、ユニット名、デバイス名、表示形式がそれぞれ表示される。また表示形式は、表示部55に表示させる際の形式(例えば10進数表示か2進数表示かの別、ビット数、正負の符号の有無など)を示している。表示形式は、予め設定された形式とする他、ユーザが各デバイスの表示形式を任意に指定できるようにしてもよい。例えば図16の画面から、ユーザが所望のデバイスを選択して、表示形式を指定する。
この対象デバイス設定画面220での設定に従い、リアルタイムチャートモニタでの表示が行われる。例えば図16の例では、対象デバイスとしてDM100、DM200、R000が選択されているところ、図12のリアルタイムチャートモニタのリプレイモードの表示に際しては、これら対象デバイスとして指定されたDM100、DM200、R000のデバイス波形が表示されている。
(リアルタイムチャートモニタ(モニタモード))
本実施形態に係るプログラマブル表示器50は、リアルタイムチャートモニタ(モニタモード)を表示させることができる。リアルタイムチャートモニタ(モニタモード)は、図6のPLC1において、CPUユニット記憶部32にPLD側デバイス部34とは別に設けられた一時記録部91a(リングバッファ)を使用する。
ここで、プログラマブル表示器50のリアルタイムチャートモニタをモニタモードとする場合の処理動作を、図30のフローチャートに基づいて説明する。まず、プログラマブル表示器50の表示器処理部51は、表示器側通信部58を介して、PLC1に対してデバイス波形の監視要求を行う(ステップS3001)。CPUユニット処理部31は、この監視要求を受け取ると、監視要求の対象となっているデバイスのデバイス値を一定期間、リングバッファに格納する。これにより、リングバッファには、監視要求の対象となっているデバイスについて、一定期間のデバイス値の時系列データが記憶される。
表示器処理部51は、表示器側通信部58を介して、一定周期でPLC1に対してデータ転送要求を行う(ステップS3002)。このデータ転送要求は、CPUユニット記憶部32に設けられた一時記録部91aであるリングバッファに順次記憶されたデバイス値の時系列データのうち、前回読み出した位置から所定容量のデータ転送要求を行う。CPUユニット処理部31は、リングバッファに記憶されているデバイス値の時系列データのうち、前回読み出した位置から所定容量分のデータをプログラマブル表示器50に転送する(ステップS3003)。また、プログラマブル表示器50においてデバイス波形(横軸が時間軸)を表示するため、デバイス値をリングバッファに格納した時刻の情報を、内部時計(図8の時刻管理部83b)などから取得する。そして、デバイス値の時系列データと、各デバイス値がリングバッファに記憶された時刻の情報とを、プログラマブル表示器50に転送する。そして表示器処理部51は、これらのデータを受信し、時刻の情報に基づいて、デバイス波形の追加表示を行う(ステップS3004)。このように、デバイス波形の追加表示を、デバイス波形の監視が終了するまで繰り返し行われる(ステップS3005)。
(モニタモードの表示例)
次にリアルタイムチャートモニタ(モニタモード)の表示例を、図29のデバイス波形表示画面210に示す。このように、リアルタイムチャートモニタのモニタモードにおいては、デバイス波形をグラフ状に表示させる。このグラフにおいて、時間軸はスキャン回数を示しており、時刻表示に切り替えてもよい。グラフの左方が時間的に古く、グラフの右方が時間的に新しい。図29のデバイス波形表示画面210の例では、デバイスDM100、DM200、R000の各デバイス波形が表示されている。いずれのデバイス波形も、右端が最新のデバイス値を示している。この後、表示器処理部51は、各デバイス波形の右端に、PLCから受信したデバイス値の時系列データを追加表示していく。これにより、各デバイス波形の右へ延びていく。デバイス波形がリアルタイムチャートモニタ欄の右端に到達したら、グラフを含むモニタ画面が左にスクロールするようになり、デバイス波形の左端から順次デバイス値が非表示になっていく。
ここで、図29に示したリアルタイムチャートモニタ(モニタモード)は、次のような設定を行うことにより、プログラマブル表示器50の表示部55に表示させることができる。すなわち、まず画面データ作成装置60において、「リアルタイムチャートモニタ(モニタモード)」のスイッチ部品に、スイッチ機能として、「リアルタイムチャートモニタ(モニタモード)」を割り当てる。そして図16に示すシステム設定画面130の対象デバイス設定画面220において、「リアルタイムチャートモニタ(モニタモード)」の際に表示させるRTCMIDを指定すると共に、そのRTCMIDに対応する画面にてデバイス波形を表示させるべきデバイスの種類や数を設定する。なお、デバイス波形を表示させるべきデバイスの種類や数については、上述した「リアルタイムチャートモニタ(リプレイモード)」において設定した内容と共通にしてもよい。このようにして作成された画面データを画面データ作成装置60からプログラマブル表示器50に転送する。これにより、図21のメニュー画面140において「リアルタイムチャートモニタ(モニタモード)」ボタン143をタッチ操作することにより、プログラマブル表示器50のシステム画面に、所望の種類や数のデバイスの時系列データ(デバイス波形)を表示させることができる。
(リプレイ表示部品)
さらにリプレイモードに切り替える場合は、リプレイ表示部品をタッチする。なお上述した図21のメニュー画面140の例では、リプレイ表示部品として「リアルタイムチャートモニタ(リプレイモード)」ボタン142と、「リプレイモード起動」ボタン141の2つが用意されている。「リプレイモード起動」ボタン141がタッチされると、事前の設定に従って、(例えば図12、図23~図27などの)リプレイモードの画面が表示される。これらのリプレイモード画面からユーザは、リプレイモードに関する各種の設定や表示内容の切り替え等を行える。具体的には、画面の上方に設けられたタブをタッチすることで、異なる表示画面に切り替えることができる。例えば「リアルタイムチャートモニタ」タブ161を選択すると、図12のデバイス波形表示画面160が表示される。また「カメラ・イベント」タブ162を選択すると、図23のカメラ・イベント表示画面170が表示される。さらに、「ビューワ」タブ163を選択すると、図24のビューワ表示画面180が表示される。さらにまた、「ユニット」タブ164を選択すると、図25や図26のユニット表示画面190、190Bが表示される。さらに「プログラム」タブ165を選択すると、図27のプログラム表示画面200が表示される。
一方、「リアルタイムチャートモニタ(リプレイモード)」ボタン142をタッチすると、図31のデバイス波形表示画面160Bが表示される。この画面では、図12や図23~図27のような複数のタブが表示されず、デバイス波形表示画面のみの表示となる。
細かな設定等を行うことなく、リアルタイムのデバイス波形のみを表示させたい場合に、一発で呼び出せるようにしたものである。
(初期表示画面設定部)
またリプレイモードにおいて初期表示される初期表示画面は、画面データ作成装置60で設定される。ここで初期表示画面においてデバイス波形を表示させる際に、表示させる対象デバイスを選択することができる。加えて、条件に応じて初期表示される対象デバイスを変更させることもできる。リプレイモードは、トラブル発生時の原因究明に活用されるところ、トラブルの種類に応じて、発生原因と考えられるデバイスも異なることが多いと思われる。そこで、トラブルの発生時、すわなち保存条件の種類に応じて、リプレイモードで初期表示させる対象デバイスを変化させることで、速やかに対象デバイスの状態を検討できるようになって、トラブルの原因究明に資すると思われる。そこで、例えば図32に示すように、トラブルの発生原因によって、リプレイモードでプログラマブル表示器50に表示させるデバイス波形を変化させるよう、予め画面データ作成装置60で設定しておく。これにより、FAシステムの運用時に何らかのトラブルが発生した際、トラブルの原因に関係しそうなデバイスのデバイス波形を選択的に表示させるようにすることで、トラブルの原因解明に有用な情報を提示して早期復旧に役立つプログラマブル表示器50を実現できる。また表示画面においてデバイス波形を表示させる際、一以上の対象デバイスと、その表示形式を設定する設定画面を表示可能とすることができる。
このような設定は、図33に示すような画面データ作成装置60の初期表示画面設定部230から行う。この図に示す初期表示画面設定部230は、図15に示したスイッチ設定画面120と共通であり、詳細説明は省略する。ここではリアルタイムチャートモニタ(リプレイモード)詳細設定欄124において「RTCMIDの指定方法」欄126を設けている。RTCMIDの指定方法は、外部指定とすることができる。外部指定の場合は、対象となるデバイスの場所とデバイス名を、それぞれ場所選択欄127、デバイス名選択欄128から指定する。図33の例では、場所として「PLC1」、デバイス名として「DM300」のデバイス値を、RTCMIDとして指定している。この場合において、DM300のデバイス値が0であれば、RTCMID=0を指定したことになり、DM300のデバイス値が1であれば、RTCMID=1を指定したことになる。このように、RTCMIDの指定方法としてデバイス割り当ての仕組みを用いれば、トラブルが発生したときに、プログラマブル表示器50に表示されるリアルタイムチャートモニタ(リプレイモード)のRTCMIDを動的に変更することができる。なお、「RTCMIDの指定方法」欄126におけるRTCMIDの指定方法として「外部指定」と「内部指定」を選択できるようにし、上述したようにRTCMIDを固定値としたい場合には「内部指定」を選択してもよい。
(データ構造)
次に、本実施形態において、画面データ作成装置60において作成されたユーザ画面の画面データのデータ構造を図34Aに示し、プログラマブル表示器50の開発者によって予め組み込まれたシステム画面のデータ構造を図34Bに示し、上述したRTCMIDとデバイスの紐付けが行われたデータ構造の模式図を図34Cに示す。
図34Aに示すように、ユーザが作画した画面データのデータ構造は、画面ID(例えば0001~0003)によって管理される各ページのページ設定と、1ページ内に配置される各種部品の部品設定とを有している。1ページ内に配置される部品の部品種別としては、図2を用いて詳述したように、テキスト部品TX、文字表示部品CP、数値表示部品NP、スイッチ部品SP(ページ切替部品を含む)、ランプ部品RP、メータ部品MP、グラフ部品GPなどがある。また、同種の複数部品を見分けるために、部品IDも割り付けられている。例えば、テキスト部品が2つある場合は、別々の部品IDが割り付けられる。
また、各部品には、テキスト部品TXを除き、デバイスが割り当てられる。例えば図34Aの例では、部品ID0002の文字表示部品CPには、DM1001のデバイスが割り当てられ、部品ID0003の数値表示部品NPには、DM1002のデバイスが割り当てられ、部品ID0004のスイッチ部品SPには、R1001のデバイスが割り当てられ、部品ID0005のランプ部品RPには、R1002のデバイスが割り当てられ、部品ID0006のメータ部品MPには、DM1003のデバイスが割り当てられ、部品ID0007のグラフ部品GPには、DM1004のデバイスが割り当てられた様子を示している。
また、全ての部品は、1ページにおいて配置されるXY座標が対応付けられている。例えば、図34Aの例では、テキスト部品は1ページ内の座標(10,10)に配置される様子を示している。他の部品についても同様である。
さらに、各部品には、テキスト部品を除き、一又は複数の部品画像が割り付けられている。例えば、図34Aの例では、文字表示部品CPや数値表示部品NPの場合、文字や数値を表示させる枠の部品画像が割り付けられ、この枠の太さや色は、ユーザが自由に設定可能である。他の部品についても同様である。
図34Bに示すように、システム既定画面を表示するための情報(システム既定画面情報52f)は、プログラマブル表示器50の開発者によって、予め、設定記憶部52に記憶されている(あるいは、データメモリ56又はその他のシステムメモリに記憶されていてもよい)。図28Aを用いて説明したように、プログラマブル表示器50の表示用データ生成部51aは、このシステム既定画面情報52fを読み出すと共に、運転記録データから必要なデバイス値の時系列データ等を抽出し、システム既定画面にデバイス値の時系列データを重畳表示するための表示用データDPを生成する。そして、表示器処理部51は、表示用データ生成部51aにより生成された表示用データDPに基づいて、所望の画面表示を行う。図34Bでは、図12に示すデバイス波形表示画面160を表示するためのデータ構造について説明したが、図23~図27に示す各画面を表示するためのデータ構造についても同様である。
図34Cに示すように、RTCMIDには、RTCMIDを指定する指定デバイス、リアルタイムチャートモニタリプレイモードにて表示される対象デバイスが、異なるRTCMIDごとに割り当てられている。
このようにして、トラブル発生時のアラームと表示用データを連動させることができる。例えば、図21のシステム画面から「リプレイモード起動」ボタン141をタッチすると、図33での設定に従い、指定された対象デバイス(DM300)のデバイス値に従ったユーザ画面が表示される。上述の通り、DM300のデバイス値が0のときはRTCMID0のページ、DM300のデバイス値が1のときはRTCMID1のページが、リプレイモードの初期画面150(図22)として選択される。これにより、トラブルの状態に応じて、適切なユーザ画面(表示されるデバイス)を選択して初期表示させることができ、トラブルの事象に応じて関連性の高いデバイスを予め紐付けておくことにより、スムーズなトラブル解決に役立てる。
(ラダーモニタ)
またプログラマブル表示器50は、リアルタイムチャートモニタのリプレイモードにおいて、図27のプログラム表示画面200に示すように、ラダープログラムを表示するラダーモニタ機能を備えてもよい。具体的には、PLC1は、保存条件が満たされると、この保存条件の成立時にプログラム実行部40により実行されていたユーザプログラムを、運転記録データに関連付けられるように運転記録データに含めて保存メモリ36に保存する。そしてプログラマブル表示器50は、PLC1の保存メモリ36に保存された運転記録データを取得して、この運転記録データに含まれる取得時刻に関する情報に基づいて、表示部55にユーザプログラムを表示させる。この際、取得時刻に対応するデバイス値を、この運転記録データに含まれるユーザプログラム(例えばラダープログラム)上に表示させる。図27に示すように、ラダー図表示欄206に示す各デバイスには、デバイス値がそれぞれ表示されている。
(イベントモニタ)
さらにプログラマブル表示器50は、イベントを表示させるイベントモニタ機能を備えてもよい。PLC1のイベント収集部92bは、PLC1又はPLC1に制御される被制御装置で発生した複数のイベントに応じたイベントデータを収集し、イベントの発生時刻とイベントデータとを関連付けて一時記録部91aに時系列に記憶している。イベント収集部92bにより記憶されたイベントデータは、保存条件が満たされると、運転記録データに関連付けられるように運転記録データに含めて保存メモリ36に保存される。
そしてプログラマブル表示器50は、保存メモリ36に保存された運転記録データを取得して、この運転記録データに含まれる発生時刻に基づいて、運転記録データに含まれるイベントデータに応じたイベントを表示部55に表示させる。図23に、リアルタイムチャートモニタのリプレイモードにおいて、イベントモニタ機能を実行した様子を示す。この例では、カメラ・イベント表示画面170の左にイベント・エラー履歴欄171、右にカメラ画像表示欄172を設けている。イベント・エラー履歴欄171には、運転記録データに含まれる各イベントが、イベントの内容と発生日時と共に一覧表示される。またイベント・エラー履歴欄171で所望のイベントを選択すると、このイベントと対応してカメラで撮像されたカメラ画像がカメラ画像表示欄172に表示される。
(再生制御欄402)
さらに、カメラ・イベント表示画面170の下段には、保存されたデバイス値等のログデータの再生を操作するための再生制御欄402を設けている。スライダ状に表示された時刻指定カーソル404は左右に移動可能である。時刻指定カーソル404は、運転記録データに含まれる時刻情報に連動して、左ほど過去、右ほど未来となるように時間に応じて割り当てられている。時刻指定カーソル404をタップして移動させると、これに応じた時刻のイベントがイベント・エラー履歴欄171で選択され、またカメラ画像表示欄172のカメラ画像が切り替えられる。また時刻表示領域409には、現在選択されている時刻情報が表示される。
再生ボタン406はデバイス値の時系列的な表示を指示するためのボタンである。再生ボタン406がタップされると、イベントが時間変化し、カメラ画像表示欄172のカメラ画像が動画像のように表示される。ワンステップ逆再生ボタン407は、表示時刻をワンステップずつ更新(巻き戻し)しながらデバイス値を時系列的に表示することを指示するためのボタンである。ワンステップ再生ボタン408は、表示時刻をワンステップずつ更新しながらデバイス値を時系列的に表示することを指示するためのボタンである。
(PLC1の機能ブロック図)
以上のPLC1で実行するラダープログラム等のユーザプログラムは、プログラム作成装置70で作成する。プログラム作成装置70で作成されたユーザプログラムは、PLC1に転送される。プログラム作成装置70にPLC1を接続した機能ブロック図を、図35に示す。図35に示すPLC1は、CPUユニット記憶部32と、CPUユニット処理部31と、バスマスタ38と、PLC側通信部33と、プログラム受信部47を備える。CPUユニット記憶部32は、プロジェクト記憶部35と、PLC側デバイス部34と、一時記録部91aと、保存メモリ36を備える。
プロジェクト記憶部35は、プログラム作成装置70から入力された、ラダープログラムを含むプロジェクトデータを記憶するための部材である。PLC側デバイス部34は、ビットデバイスやワードデバイスを有し、各デバイスはデバイス値を記憶するための部材である。PLC側デバイス部34は、複数のデバイスの各デバイス値を記憶するデバイスメモリとして機能する。このPLC側デバイス部34は、ユーザプログラムに従い参照される記憶領域となる。一時記録部91aは、PLC側デバイス部34に記憶されているデバイス値を、スキャン毎に時系列に記録するための部材である。一時記録部91aは、リングバッファ等で構成される。保存メモリ36は、所定の保存条件が成立したら、一時記録部91aに記憶されているデバイス値の時系列データを保存するための部材である。保存メモリ36は、内部メモリや着脱可能なメモリカード等で構成される。
CPUユニット処理部31は、プログラム実行部40と、記録制御部39と、保存制御部39Cと、イベント管理部76を備える。プログラム実行部40は、ラダープログラムの実行エンジンである。記録制御部39は、一時記録部91aへの記録を開始するための記録開始トリガ条件が成立すると、予め定められたデバイスのデバイス値を収集し、デバイス値の取得時刻に関する情報(現在の時刻でもよいし、ラダープログラムのスキャン回数でもよい)と、そのデバイス値とを対応付けて一時記録部91aに記録する。ここで記録開始トリガ条件は、PLC1が設定モードからRUNモードに移行した時とすることができる。ただ記録開始トリガ条件は、これに限らず、その他の条件としてもよい。保存制御部39Cは、保存メモリ36への保存を行うための保存トリガ条件が成立すると、記録制御部39に一時記録されているデバイス値を、取得時刻に関する情報と共にログデータとして保存する。イベント管理部76は、イベントを検出するための部材である。イベント管理部76の詳細は後述する。
バスマスタ38は、CPUユニット3と拡張ユニット4を接続するユニット間バスの通信制御を行う部材である。このバスマスタ38によって、入出力リフレッシュが行われる。CPUユニット3は、入出力リフレッシュ、ラダープログラムの実行、END処理を1スキャンとして、このスキャン処理を高速に繰り返し実行している。入出力リフレッシュによって、CPUユニット3のデバイスと拡張ユニット4のデバイスが同期される。またプログラム実行部40によってラダープログラムが実行された結果が、入出力リフレッシュによって拡張ユニット4のデバイスに反映される。なおEND処理は、システムのエラーチェック等の周辺サービスを行ったり、PLC側通信部33によってプログラマブル表示器50とデータ通信を行ったりする。PLC側通信部33は、PLC1と予め定められた周期で、プログラマブル表示器50と通信を繰り返すための部材である。プログラム受信部47は、プログラム作成装置70から転送されるラダープログラムを含むプロジェクトデータを受信するための部材である。
(プログラム作成装置70の機能ブロック図)
一方で、図35に示すプログラム作成装置70は、プログラム作成側入力部74と、プログラム作成側表示部75と、プログラム作成側記憶部76と、プログラム作成部77と、プログラム転送部78を備える。なお、プログラム作成装置70は、インストールするPCを、画面データ作成装置60と兼用してもよい。プログラム作成側入力部74は、マウスやキーボード等が利用できる。ユーザはプログラム作成側入力部74を介して、ラダープログラムの編集入力を行ったり、ユニット構成の設定を行ったりすることができる。プログラム作成側表示部75は、PCに接続されたディスプレイ等である。
プログラム作成部77は、プログラム作成側入力部74を介したユーザの操作入力に従って、ラダープログラムを作成する。また、ユニット構成の設定も行う。ラダープログラムとユニット構成を併せて、プロジェクトデータと呼ぶ。プログラム作成側記憶部76は、プログラム作成部77により作成されたプロジェクトデータを記憶する。またプログラム作成側記憶部76は、PLC1の運転記録データも記憶する。プログラム転送部78は、プログラム作成側記憶部76に記憶されたラダープログラムを含むプロジェクトデータをPLC1に転送するための部材である。
(運転記録データ)
ここで、保存メモリ36に保存される運転記録データについて、詳述する。運転記録データは、プロジェクトデータとログデータを含む。運転記録データの構成の一例を、図36に示す。運転記録データに含まれるプロジェクトデータは、保存トリガ条件が成立したときにプログラム実行部40により実行されていた、運転時のプロジェクトデータである。ログデータは、取得時刻に関する情報と対応付けられたデバイス値の時系列データや、カメラユニット4cによる時系列の画像データ、イベントデータなどである。この画像データやイベントデータも、画像データの取得時刻やイベントデータの発生時刻に関する情報と対応付けられており、これらの対応付けの詳細については後述する。
また、運転記録データは、複数のファイルをパッケージにしたものであり、管理情報データやプロジェクト識別情報を含む。ここで管理情報データは、運転記録データに何が含まれているかの情報である。その拡張子は、例えばTMNとできる。運転記録データに含まれるプロジェクトデータの識別子は、例えばTPJとできる。プロジェクト識別情報は、運転記録データを保存した際にプロジェクトデータを識別するための情報である。その拡張子は、例えばTPIとできる。デバイス値の時系列データの拡張子は、例えばTDVとできる。時系列の画像データの拡張子は、例えばTCAとできる。イベントデータの拡張子は、例えばTEVとできる。これら拡張子の例は例示であって、拡張子には任意の文字列等が利用できる。
さらに、プロジェクトデータ(拡張子TPJ)には、プロジェクトファイル、モジュールファイル、ファンクションブロック、ユニット設定ファイル等が含まれる。プロジェクトファイルは、プロジェクトの設定に関する情報であり、その拡張子は、例えばkprとする。モジュールファイルは、いわゆるラダープログラムの情報であり、その拡張子は、例えばmodとする。ファンクションブロックは、部品化されたラダープログラムの情報であり、その拡張子は、例えばkfbとする。ユニット設定ファイルは、ユニットの構成情報で、その拡張子はue2とする。これらのうち一部の情報のみをプロジェクトデータに含めてもよいし、あるいは、これ以外の情報を追加してもよい。図35のプログラム作成部77は、運転記録データに含まれる管理情報データを解釈し、プログラム作成側表示部75上に運転記録データの内容を表示させることができる。
(運転記録データ解釈部51b)
上述したように、PLC1に限らず、プログラマブル表示器50においても、運転記録データの内容を表示させることができる。このためプログラマブル表示器50は、運転記録データ解釈部51bを備えている。ここで、プログラマブル表示器50側で運転記録データの内容を表示させる様子を、図36に基づいて説明する。この図に示すプログラマブル表示器50の表示器処理部51は、運転記録データ解釈部51bを備えている。運転記録データ解釈部51bは、運転記録データのうち管理情報データを読み出して、運転記録データに何が含まれているかを判断する。また、プロジェクト識別情報に対応するプロジェクトデータを読み出して、プロジェクトデータを構成するプロジェクトファイル、モジュールファイル、ファンクションブロック、ユニット設定ファイル等を読み込む。これにより、表示器処理部51は、リプレイモードにおいて、各種ユーザインターフェースを同期表示(連動表示)することができる。
(運転記録データの同期表示(連動表示))
プログラマブル表示器50の表示器処理部51の機能ブロック図を、図37に示す。この図に示すように、表示器処理部51は、波形表示モジュール322、画像表示モジュール323、イベント表示モジュール326、ビューワ表示モジュール327、ユニット表示モジュール325、プログラム表示モジュール321、及びリプレイ同期制御モジュール324を有している。波形表示モジュール322は、ログデータに含まれるデバイス値の時系列データをデバイス波形として表示部55に表示するモジュールである。
図12に示すデバイス波形表示画面160では、時刻指定カーソル404をドラッグして左右に移動させると、デバイス波形が連動して左右に動くようになっている。そして、デバイス波形表示画面160の中央(スキャン回数35000の位置)には、太縦線からなる識別線ILが表示されており、時刻指定カーソル404によって特定される時刻(スキャン回数)が、識別線ILと重なるように、デバイス波形が左右に移動する。例えば、時刻指定カーソル404を、図12の状態から右方向に移動させ、スキャン回数40000の位置に合わせると、デバイス波形のうちスキャン回数40000の位置が識別線ILに重なるように、デバイス波形が左に移動する。なお、デバイス波形のうち識別線ILと重なったデバイス値を画面上に表示させてもよい。
画像表示モジュール323、イベント表示モジュール326、ビューワ表示モジュール327、ユニット表示モジュール325、プログラム表示モジュール321の詳細を、図37~図40に基づいて説明する。
図37に示す表示器処理部51は、プログラム表示モジュール321を備えている。プログラム表示モジュール321は、プロジェクトデータ71に含まれるユーザープログラムと共に、ログデータ73に含まれるデバイス値を表示部55に表示するモジュールである。またプログラム表示モジュール321は、ユーザープログラムのみならず、プロジェクトデータ71に含まれるプログラム構成情報、複数のプログラム部品、ユニット構成、ユニット毎の機能設定等、ユーザがプロジェクトデータ71の設定内容を視認するための各種情報を表示可能としてもよい。画像表示モジュール323は、ログデータ73に含まれる時系列の画像データを表示部55に表示する。
波形表示モジュール322は、ログデータ73に含まれる時系列のデバイス値を波形化して表示部55に表示するモジュールである。リプレイ同期制御モジュール324は、プログラム表示モジュール321によって表示される情報と波形表示モジュール322によって表示される情報とを時間的に同期させる。リプレイ同期制御モジュール324によって、図12のデバイス波形表示画面160にデバイス波形をリプレイ表示させることができる。またイベント表示モジュール326は、図23に示すように運転記録データからイベントを時系列で抽出して、イベント・エラー履歴欄171に一覧表示させる。さらにビューワ表示モジュール327は、図24に示すように運転記録データからメンテナンス用の情報を抽出して、メンテナンス用画面等を表示させる。
これらのモジュールはエンジニアリングソフトウエアと呼ばれてもよい。なお、画像表示モジュール323は、プログラム表示モジュール321の一機能(画像表示部)として具現化されてもよいし、波形表示モジュール322の一機能(画像表示部)として具現化されてもよい。
(プログラム表示モジュール321)
図38はプログラム表示モジュール321の詳細を示している。時刻UI330aは、ユーザープログラムと共に表示されるデバイスの取得時刻(表示時刻)を操作するためのUI(例えばスライドバーやカーソル等)を提供する。表示時刻制御部331aは時刻UI330aにより指定された表示時刻をリプレイ同期制御モジュール324に送出したり、リプレイ同期制御モジュール324から通知された表示時刻を時刻UI330aに設定したりする。プログラム表示部332は、プロジェクトデータ71を表示部55に表示したり、識別情報に対応したプロジェクトデータ71をPC側記憶装置22から読み出して表示部55に表示したりする。また、プログラム表示部332はデバイス値取得部333aにより取得されたデバイス値を、ユーザープログラムに使用又は記述されているデバイスと関連付けて表示する。デバイス値取得部333aは、リアルタイム再生モードと履歴再生モード(ログ再生モード)とを有している。デバイス値取得部333aは、リアルタイム再生モードにおいて、PLC1のリアルタイム送信部にアクセスし、デバイス値を取得し、プログラム表示部332に渡す。デバイス値取得部333aは、ログ再生モードにおいて、図37のリプレイ同期制御モジュール324にアクセスし、表示時刻とデバイス値を取得し、プログラム表示部332に渡す。
図39は、プログラム表示部332等によってプログラマブル表示器50の表示部55に表示されるユーザインターフェース画面1300の一例を示す模式図である。図39において、左欄のプロジェクト表示領域420には、プロジェクトデータ71を構成する様々な情報が表示されている。上から順に、ユニット構成(CPUユニット3、モーションユニット4d、アナログ入力ユニット、カメラユニット4c)、プログラム構成(毎スキャンモジュール、定周期モジュール、ユニット間同期モジュール、ファンクションブロック、マクロ)が表示されている。モーションユニット4dについては、機能設定として軸構成や軸制御の設定パラメータが表示されている。ユーザは、図39に示すユーザインターフェース画面1300上において、軸構成や軸制御をダブルクリックすることで、これらの設定パラメータについて、どのような設定内容になっているかを確認することができる。また、プロジェクト表示領域420において、毎スキャンモジュールに対してMainとSubが表示されているところ、ユーザがMainをクリックすると、中央のラダーモニタ450のプログラム表示領域410に、Mainプログラムが表示される。
図37に示すプログラム表示モジュール321は、メモリカード36Aからプロジェクトデータ71を読み出して、プロジェクト表示領域420に各種情報を表示したり、プログラム表示領域410に所望プログラムを表示したりする。
ここで、プログラム表示領域410は、いわゆるラダーモニタ450の一部であり、リアルタイム再生モードにおいて単独で動作させることができるものである。×印をクリックすることで、ラダーモニタ450のみを非表示にすることも可能である。一方で、ログ再生モードでは、プログラム表示部332によって、運転記録を保存した際のプロジェクトに含まれるラダープログラムを再現することができるようになっている。また、プログラム表示部332は、ログ再生モードにおいて、デバイス値取得部333aを介してログデータ73に含まれるデバイス値を、Mainプログラムに記述されているデバイスと関連付けて表示する。表示対象となるデバイス値は、時刻指定カーソル404によって指定された時刻に対応するデバイス値となる。
図39でいえば、時刻表示領域409に表示されている20XX/10/01の18:52:54と対応付けられたデバイス値が、Mainプログラムに記述されているデバイスと関連付けて表示される。この日付の右側に表示された[35000/74286]は、全スキャン回数74286に対する現在のスキャン回数35000を示している。ユーザは、時刻指定カーソル404をドラッグして移動させることで、表示時刻及びスキャン回数の更新と共に、デバイス値の表示も更新される。例えば、更新後の表示時刻において、ONしているリレーデバイスの箇所にはON表示(例えば色で塗潰す等)がなされ、OFFしているリレーデバイスの箇所にはOFF表示(例えば色抜き等)がなされる。
図39において、右上欄には、カメラモニタ430の画像表示領域が設けられている。画像表示モジュール323は、プログラム表示モジュール321によってラダーモニタ450に表示された表示時刻と同期して、ログデータ73から画像データを読み出してカメラモニタ430の画像表示領域に表示する。図39では、表示時刻である20XX/10/01の18:52:54と対応付けられた画像データが、カメラモニタ430に表示されている。また、この表示時刻の右側には、282/601と表示されているが、これは、全撮像枚数601に対する現在の画像データの順番(282枚目)を表している。ユーザは、カメラモニタ430において、時刻指定カーソル404aをドラッグして移動させることで、表示時刻及び現在の画像データの順番を更新させることができる。
このとき、時刻指定カーソル404aの移動に伴って、上述したラダーモニタ450における時刻指定カーソル404も連動して移動する。例えば、時刻指定カーソル404aを、表示時刻20XX/10/01の19:00:00に合わせた場合には、ラダーモニタ450における時刻指定カーソル404も、表示時刻20XX/10/01の19:00:00の位置に追従して移動する。そして、時刻指定カーソル404の移動に伴って、ラダーモニタ450におけるデバイス値も更新される。ここでは時刻指定カーソル404aを移動させたが、逆も同様である。例えば、ラダーモニタ450における時刻指定カーソル404を移動させると、それに応じて、カメラモニタ430における時刻指定カーソル404aも移動する。このような処理動作が可能になるのは、プログラム表示モジュール321と、画像表示モジュール323とが、リプレイ同期制御モジュール324を介して表示時刻に関する同期制御を実行しているからである。
また、図39において、右下欄には、ユニットモニタ440が表示されている。例えば、ユニットモニタ440は、モーションユニット4dにおけるバッファメモリ(UG)のデバイス値を表示する。より具体的には、表示器処理部51のユニット表示モジュール325は、リプレイ同期制御モジュール324から現在再生すべき表示時刻を受け取ると、その時刻と対応付けられたデバイス値をメモリカード36Aから読み出して、ユニットモニタ440に表示させる。したがって、例えば図39でいえば、表示時刻20XX/10/01の18:52:54と対応付けられたデバイス値の一覧が、ユニットモニタ440に表示される。
図40は、ログ再生モードにおけるユーザインターフェース画面を表示するためのデータソースを模式化した図である。図40に示すように、プロジェクト表示領域420は、プロジェクトデータ71に含まれるユニット構成、機能設定、プログラム構成、プログラム部品をメモリから読み出して、これらをツリー形式で表示する。ラダーモニタ450は、プログラム構成(どのようなプログラム部品からなるか)、プログラム部品をメモリから読み出して、ユーザによって指定されたプログラム部品を表示すると共に、ログデータ73から表示時刻に対応するデバイス値を読み出して表示する。カメラモニタ430は、ユニット構成(カメラモニタがあるか否か)と機能設定(カメラモニタの機能。例えば複数ポートある場合にはポート番号、撮像周期やゲイン設定等)等の情報に基づいて、ログデータ73から表示時刻に対応する画像データを読み出して表示する。ユニットモニタ440は、ユニット構成(どのようなユニットがあるか)と機能設定(モーションユニット4dであれば軸構成や軸制御等)等の情報に基づいて、ログデータ73から表示時刻に対応するデバイス値を読み出して表示する。
図39や図40から判るように、リプレイ同期制御モジュール324の機能によって、プログラム表示モジュール321、画像表示モジュール323、ユニット表示モジュール325を同期制御して、連携させることができる。なお、波形表示モジュール322の連携の詳細については後述する。
ここで、本実施形態では、現在のプロジェクトデータが、実際のトラブル発生時のプロジェクトデータ71と一致するか否かを検証できるようにしている。より具体的には、図38に示すプログラム表示モジュール321の内の照合部334は、PLC1から出力されるプロジェクトデータ71(ユーザープログラム)の識別情報と、PC側記憶装置22に記憶されているプロジェクトデータ71(ユーザープログラム)の識別情報とを照合し、照合結果を警告部335に出力する。警告部335は、PLC1から出力される、運転記録を保存した時のプロジェクトデータ71(ユーザープログラム)の識別情報と、PC側記憶装置22に記憶されているプロジェクトデータ(ユーザープログラム)の識別情報とが不一致である場合に、警告を表示部55に表示させる。
なお、本実施形態では、2つのプロジェクトデータの識別情報を比較して、一致・不一致を検証することとした。より詳細には、プロジェクトデータに含まれるプログラム構成、複数のプログラム部品、ユニット構成、ユニット毎に機能設定に対し、それぞれ識別情報が付加されており、それら全てが一致するか否かにより検証することとした。しかし、本発明はこれに限られず、少なくとも、複数のプログラム部品から構成されるユーザープログラムの識別情報を比較して、一致・不一致を検証すればよい。
ログデータには、運転記録を保存した際のデバイス値やカメラ部98の画像データに加えて、運転記録を保存した際のプロジェクトデータに含まれるラダープログラム等のユーザプログラムや、各ユニットの設定ファイルも含まれる。例えばトラブル発生時にカメラ部98で撮像した画像データや、各ユニットの状態、モーションユニット4dの角度や座標等の情報が含まれる。これにより、ログデータに過去の各デバイスの状態や接続状態、各ユニットの情報等を保存できるので、ログデータを保存しておくことで、過去の状態を再現することができる。すなわち、トラブル発生時に遡って、どのような設定でどのような出力がなされていたのかを確認できるため、トラブルの原因解明に有益となる。またログデータは、プログラム作成装置70で読み込むことで、ログデータに保存された各設定などを解析して、再現表示できる。
図41はログデータ73の一例を示している。この例では、デバイス値d1~d10と、カメラ部98aにより取得されたワーク画像i1~i3と、カメラ部98bにより取得された他の画像j1~j3の取得タイミングが示されている。デバイス値d1~d10はスキャン周期ごとに取得されている。ワーク画像i1~i3はトリガ信号が発生したタイミングに取得されている。ワーク画像j1~j3はトリガ信号が発生したタイミングに取得されている。各データの位置はそれぞれの時刻情報を示している。図41が示すように、各データの取得時刻や取得周期は一致していない。そのため、表示器処理部51は、各データの時刻情報に基づき各データの表示タイミングを調整する。
図42はログデータ73の表示タイミングと表示継続時間とを説明する図である。表示器処理部51は、各デバイス値の時刻情報に従って各デバイス値を表示部55に表示する。例えば、表示器処理部51は、デバイス値d1の時刻情報とデバイス値d2の時刻情報との差分時間をデバイス値d1の表示継続時間に決定する。表示器処理部51は、デバイス値d1の表示を開始してから表示継続時間が経過すると、デバイス値d2の表示を開始する。以下、同様に表示継続時間が求められ、表示されるデバイス値が時刻情報や表示継続時間に従って切り替えられて行く。
すでに図41が示したように、デバイス値d1の取得時刻と、ワーク画像i1の取得時刻とは一致していない。そこで表示器処理部51は、ワーク画像i1の取得時刻をデバイス値d1乃至d10の取得時刻と比較し、ワーク画像i1の取得時刻に最も近いデバイス値dxの取得時刻を求める。この例では、ワーク画像i1の取得時刻に最も近いのは、デバイス値d1の取得時刻である。よって表示器処理部51は、デバイス値d1の表示を開始すると共に、ワーク画像i1の表示を開始する。次に表示器処理部51は、ワーク画像i2の取得時刻に最も近いデバイス値dxの取得時刻を求める。この例では、デバイス値d4の取得時刻が、ワーク画像i2の取得時刻が最も近い。そこで表示器処理部51は、デバイス値d4の表示タイミングが到来すると、デバイス値d4とワーク画像i2の表示を開始する。表示器処理部51は、他の画像j1の取得時刻に最も近いデバイス値dxの取得時刻を求める。この例では、他の画像j1の取得時刻に最も近いのは、デバイス値d2の取得時刻である。よって表示器処理部51は、デバイス値d2の表示タイミングが到来すると、デバイス値d2の表示を開始すると共に、他の画像j1の表示を開始する。
このようにログデータ73に含まれる複数のデータの内、ロギングの周期がもっとも短いデータを基準として、各データの表示タイミングが調整されてもよい。
(画像データと取得時刻との紐づけ一例)
本実施形態では、上述したように、カメラで撮像した画像データとイベントとを同期させて表示させることができる。リプレイモードの「カメラ・イベント」タブ162において、任意のイベントを選択すると、この選択されたイベントの時刻と対応する時刻に撮像された画像データに基づくカメラ画像が表示され、時刻指定カーソルも、対応する再生時刻に移動される。また、再生ボタンを押すと、カメラモニタ欄において動画が再生されると共に、時間の経過に応じてイベントの選択が切り替わっていく。また、「プログラム」タブ165におけるラダープログラムのデバイス値も更新されていく。このような同期表示が可能になるのは、画像データと取得時刻が紐付けられて記憶されているためである。以下、画像データと取得時刻やデバイス値との対応付けを、図41及び図42を用いて詳述する。
(ログデータ(デバイス値と画像データ)の一例)
図1に示すようなカメラユニット4cで、デバイス値と画像を収集するロギングのタイミングを図41に示す。なお、ここではカメラユニット4cには最大2個のカメラを接続可能としている。また各カメラは、撮像視野を異ならせてもよい。
図41は、デバイス値d1~d10と、カメラ1により取得されたワーク画像i1~i3と、カメラ2により取得された他の画像j1~j3の取得タイミングを示している。デバイス値d1~d10は、スキャン周期ごとに取得されている。ワーク画像i1~i3はトリガ信号(画像取得信号)が発生したタイミングに取得されている。ワーク画像j1~j3は別のトリガ信号が発生したタイミングに取得されている。各データの位置はそれぞれの時刻情報を示している。一般に、図41で示すように、各データの取得時刻や取得周期は一致していない。そのため、プログラマブル表示器50の表示器処理部51は、各データの時刻情報に基づき各データの表示タイミングを調整する。
(ログデータの表示タイミングと表示継続時間との説明)
ログデータの表示タイミングと表示継続時間とを図42に示す。表示器処理部51は、各デバイス値の時刻情報にしたがって、各デバイス値を表示部55に表示する。例えば、表示器処理部51は、デバイス値d1の時刻情報とデバイス値d2の時刻情報との差分時間をデバイス値d1の表示継続時間に決定する。表示器処理部51は、デバイス値d1の表示を開始してから表示継続時間が経過すると、デバイス値d2の表示を開始する。以下、同様に表示継続時間が求められ、表示されるデバイス値が時刻情報や表示継続時間にしたがって切り替えられて行く。
既に説明したように、デバイス値d1の取得時刻と、ワーク画像i1の取得時刻とは一致していない。そこで、表示器処理部51は、ワーク画像i1の取得時刻をデバイス値d1乃至d10の取得時刻と比較し、ワーク画像i1の取得時刻に最も近いデバイス値dxの取得時刻を求める。この例では、ワーク画像i1の取得時刻に最も近いのは、デバイス値d1の取得時刻である。よって、表示器処理部51は、デバイス値d1の表示を開始すると共に、ワーク画像i1の表示を開始する。次に、表示器処理部51は、ワーク画像i2の取得時刻に最も近いデバイス値dxの取得時刻を求める。この例では、デバイス値d4の取得時刻は、ワーク画像i2の取得時刻が最も近い。そこで、表示器処理部51は、デバイス値d4の表示タイミングが到来すると、デバイス値d4とワーク画像i2の表示を開始する。表示器処理部51は、他の画像j1の取得時刻に最も近いデバイス値dxの取得時刻を求める。この例では、他の画像j1の取得時刻に最も近いのは、デバイス値d2の取得時刻である。よって、表示器処理部51は、デバイス値d2の表示タイミングが到来すると、デバイス値d2の表示を開始すると共に、他の画像j1の表示を開始する。このように、ログデータに含まれる複数のデータのうち、ロギングの周期がもっとも短いデータを基準として、各データの表示タイミングが調整される。
(画像データと時刻情報の連動)
図23のカメラ・イベント表示画面170においては、画像データと時刻情報を連動させて表示させている。ここで画像データと時刻情報を連動させる手順を、図43のフローチャートに基づいて説明する。ここでは、カメラユニット4cにおいて、図10に示すリングバッファ91bを用いてロギングする手順を示している。まずステップS4301において、取得リレーがONか否かを判定する。ここでは、カメラユニット4cのカメラユニット処理部41c(CPU等)は、画像データの取得条件(例えば、PLC1がPROGモード(設定モード)からRUNモード(実行モード)に切り替えられ、取得リレーがONしたか等)が満たされたか否かを判定する。取得リレーがONでない場合は、ステップS4301の処理を繰り返す。
取得リレーがONになると、ステップS4302に進み、取得タイミングの到来を判定する。ここでは、カメラユニット処理部41cは、画像データの取得タイミングが到来したかどうかを判定する。取得タイミングは、例えばカメラユニット4cにおいて予め定められた撮像周期(内部制御周期)などである。取得タイミングでない場合は、ステップS4302に戻って処理を繰り返す。
取得タイミングが到来すると、ステップS4303に進み画像データと時刻情報を取得してリングバッファに書き込む。ここでは、カメラに対して撮像指令を出し、カメラから画像データを取得する。また、画像データを取得した時刻を紐付けるために、内部タイマ等の時刻管理部から現在時刻情報を読み出して、画像データと時刻情報を関連づけてリングバッファに書き込む。
次いで、ステップS4304において、読み出し要求の有無を判定する。ここでは、カメラユニット処理部41cが、CPUユニット3からカメラユニット4cのリングバッファに対する読み出し要求(読み出し命令)が発行されたか否かを判定する。読み出し要求がない場合は、ステップS4302に戻って処理を繰り返す。
一方、読み出し要求を受信したら、ステップS4305に進み、リングバッファにから画像データと時刻情報を取得して、CPUユニット3に送信する。CPUユニット3は、画像データと時刻情報とをログデータとして、運転記録データに追記する。このようにして、運転記録データにおいて、画像データと時刻情報の紐付けが行われる。
(モーションデータと時刻情報の紐付けについて)
なお、上述した図43では、カメラで撮像した画像データと時刻情報の紐付けについて説明したが、モーションデータと時刻情報についても、同様の手順で紐付けできる。具体的には、モーションユニット4dには、モーションユニット4dの動作を規定するプログラムやパラメータ(軸構成や軸制御に関するパラメータ等)の設定情報が記憶されている。図1に示すモーションユニット4dはモーションユニット処理部41dを備えている。モーションユニット処理部41dは、その設定情報に従って、外部に接続されたモータ(モータアンプ)に対して目標座標や目標速度などの動作指令値を送信する。モータアンプからは、エンコーダを介して、現在座標や現在速度などのモーションデータを受信する。現在座標や現在速度などのモーションデータを受信する制御周期は、ラダープログラムのスキャン周期よりも短く、ラダープログラムのスキャン周期と非同期である。そこで、モーションユニット処理部41dは、所定の周期でモーションデータを収集し、モーションデータを受信した受信時刻に関する情報と該モーションデータと時刻情報(内部タイマ等の時刻管理部から読み出す)を関連付けて、自己のリングバッファに書き込む。その後、図43で説明したカメラユニット4cの場合と同様に、保存タイミングになると、リングバッファからモーションデータ(現在座標や現在速度など)と時刻情報を取得して、CPUユニット3に送信する。CPUユニット3は、モーションデータと時刻情報とをログデータとして、運転記録データに追記する。このようにして、運転記録データにおいて、モーションデータと時刻情報の紐付けが行われる。
(イベントデータと時刻情報との連動)
次に、図23のカメラ・イベント表示画面170において、イベントデータと時刻情報とを連動させる手順を、図44のフローチャートに基づいて説明する。まずステップS4401において、CPUユニット処理部31のイベント管理部が、イベントを検出する。ここでいうイベントには、様々なものが含まれる。例えば、PLC1のユーザプログラム及び各ユニットのユニット構成情報を含むプロジェクトデータの書き換え、入出力機器の電源のON/OFF、PLC1の設定を行うための設定モード又はPLC1を実行(運転)させるための運転モードのモード切替、各種履歴のクリア、記憶装置(メモリカード等)の挿抜、他の機器と通信を行うイーサネットケーブルの挿抜、PLC1に接続されるプログラマブル表示器50から要求されるデバイス書換信号、あるいはPLC1におけるモーションユニットのモーションエラー等である。
なお、モーションユニットなどの拡張ユニット4において発生したイベントについて、例えば以下のようにして検出可能である。すなわち、モーションユニット処理部41dは、イベントを入れたメッセージ通信コマンドを、ユニット間バスを介してCPUユニット3に送信する。そして、CPUユニット処理部31は、割込み処理を用いることで、イベントが入ったメッセージ通信コマンドを受信する。これを受信したCPUユニット処理部31は、メッセージ通信コマンドからイベントを抽出することによって、モーションユニットにおいて発生した各種イベントをタイムリーに認識することができる。
次に、ステップS4402において、CPUユニット3のイベント管理部が、イベントログの残容量を確認する。本実施形態では、一時記録部91aの所定の記憶領域を、イベントログ用メモリとして使っている。一時記録部91aとは独立して、別途イベントログ用のメモリを設けてもよいことは言うまでもない。イベントログの残容量がない場合は、ステップS4403に進み、古いイベントをイベントログ用メモリから削除する。一方、残容量がある場合には、ステップS4404に進み、μsオーダーの時刻情報を取得し、イベントと紐付けてイベントログメモリに格納する。
(プログラマブル表示器50によるデバイス監視)
ここで、プログラマブル表示器50がデバイス監視を行う基本処理動作を、図45のフローチャートに基づいて説明する。プログラマブル表示器50は、PLC1のデバイスを監視している。プログラマブル表示器50に表示されるデバイスは、PLC1側では判らない。このため、プログラマブル表示器50の表示器側通信部58は、一定の間隔(例えば10ms)で、PLC1にアクセスし、表示用データで使用されるデバイスのデバイス値を読み出している(ステップS4501)。読み出したデバイス値は、プログラマブル表示器50のデータメモリ56に格納される。
そして、プログラマブル表示器50の表示器処理部51は、読み出したデバイス値が、現在のデバイス値から変化しているか否かを判断する(ステップS4502)。変化していなければ、いまの画面をそのまま維持すればよいので、特に何もしない。一方、変化していれば、読み出したデバイス値を用いて表示用データを生成し、読み出したデバイス値によって表示内容を更新する(ステップS4503)。
以上が、基本処理動作である。なお、ここではデバイス値の読み出しに着目しているが、スイッチ部品のタッチ操作など、PLC1との通信においてデバイス値の書き込みも行われる。つまり、プログラマブル表示器50のデータメモリ56においてデバイス値が変化したデバイスを認識すると、その情報をPLC1との通信によってPLC1側に送り、CPUユニット処理部31は、CPUユニット記憶部32のPLC側デバイス部34に書き込む処理を行う。
図2は、監視画面240のユーザインターフェース画面である。上述した図21のメニュー画面140の中の「監視画面」ボタン144をタッチ操作することで、図2の監視画面240を表示させることができる。この監視画面240には、スイッチ、メータ、ランプ等の各種部品が配置されている。生産品番の数値表示欄241には、「ABC-123」が表示されており、この数値表示欄241は、PLC1のデバイスが割り当てられた欄である。その右には、正常または異常を示すランプ242、243が配置されており、図2の例では正常ランプ242が点灯し、異常ランプ243は消灯している。正常ランプ242、異常ランプ243には、それぞれ部品ラベル(部品識別番号)が付されると共に、それぞれデバイス及ぶ部品画像が割り当てられており、デバイスの状態によって部品の表示形態が変化する。つまり、正常ランプ242に対し、点灯状態の部品画像と、消灯状態の部品画像の2つが割り当てられており、デバイスの状態によっていずれの部品画像を表示するかが定められている。ランプ242、243の右には、温度メータ244が配置されており、60℃を示している。温度メータ244にも部品ラベルが付されると共に、デバイス及び部品画像が割り当てられている。温度メータ244は、デバイスのデバイス値に応じて、メータの指示針が移動する。
図2の下方には、製品A~製品Dの進捗管理表245が表示され、それぞれの製品に対する数値表示欄241には、設定値と現在値が表示されている。現在値の右側には、RESETスイッチ246が配置されている。RESETスイッチ246にも、部品ラベルが付され、デバイス及び部品画像が割り当てられている。部品画像として、RESETスイッチ246を押下した状態の画像と、RESETスイッチ246から指を離した状態の画像とが含まれる。RESETスイッチ246の右には、カウンタグラフが配置され、上述同様である。このように、各種部品は、部品ラベルが付されると共に、デバイスと部品画像が割り当てられている。
[実施形態2]
以上の実施形態1では、プログラマブル表示器50側で提供する規定のページであるシステム画面において、タッチ操作によりデバイス波形表示画面に切り替える構成について説明した。すなわち、システム画面に配置された波形表示部品に対してタッチ操作が行われたことをタッチ検出部53で検出して、PLC1に保存された時系列データに基づいて対象デバイスのデバイス波形を表示させるようにしている。具体的には、図21に示すメニュー画面140上で波形表示部品に相当する「リプレイモード起動」ボタン141又は「リアルタイムチャートモニタ(リプレイモード)」をユーザがタッチすることで、図12に示すデバイス波形表示画面160(リアルタイムチャートモニタ画面)を表示させ、過去に記録した運転記録データをリプレイモードで表示させている。
ただ本発明は、必ずしもシステム画面のような、予め提供されたページ上からデバイス波形表示画面を呼び出す構成に限らず、例えばユーザが作成したユーザ画面にデバイス波形表示画面に切り替える波形表示部品を配置してもよい。このような例を実施形態2に係るプログラマブル表示器のユーザ画面250として、図46に示す。この図に示すユーザ画面250では、ユーザが作成した各種の表示部品が配置されている。このユーザ画面250において右下に配置された波形表示部品である「リプレイモード起動」ボタン251を押下すると、図12に示すデバイス波形表示画面160が表示される。このように、システム画面のみならず、ユーザが作成したユーザ画面においてもデバイス波形表示画面160に速やかに切り替えることが可能となり、トラブル解決に有益な情報を簡便に呼び出しやすくなって、復旧作業に移行し易くなり利便性が向上する。
[実施形態3]
また、以上の実施形態1や2では、システム画面、ユーザ画面のいずれにおいても、表示画面に表示されたページ上に配置された波形表示部品に対してタッチ操作が行われたことをタッチ検出部53で検出して、PLC1に保存された時系列データに基づいて対象デバイスのデバイス波形を表示させるようにしている。
ただ本発明はこの構成に限らず、予め定めた特殊なタッチ操作を検出することで、デバイス波形を表示させるように構成してもよい。このような例を、実施形態3に係るプログラマブル表示器のユーザ画面260として図47に示す。プログラマブル表示器は、表示部にユーザが作成した任意のユーザ画面260を表示させている。この状態で、ページ中の表示部品が配置されていない非配置領域NA(図47において斜線で示す領域)に対して、ユーザが特定の操作することで、デバイス波形表示画面160を呼び出すことができる。特定の操作は、例えば非配置領域NAに対する長押し、フリック、ピンチイン、ピンチアウト等とできる。ここでは、図47の状態から非配置領域NAをユーザが上向きにフリックすることで、図12のデバイス波形表示画面160に切り替えるように構成している。また元のページに戻る場合は、図12の表示画面上でいずれかの位置を下向きにフリックすることで、図47の画面に復帰される。さらに、表示画面に対するフリックの方向で、画面切替の動作を割り当ててもよい。例えば、任意のページにおいて、上向きのフリックでデバイス波形表示画面160を表示させ、下向きのフリックで元のページに復帰させる。
さらにまた、左右のフリックをページ切替動作に割り当ててもよい。例えば右方向にフリックすれば、画面IDを一増やしたページ(次ページ)を表示させ、左方向にフリックすれば画面IDを一減らしたページ(前ページ)を表示させるようにする。このように構成することで、フリックの方向によって異なるページに切り替えることができ、ユーザは簡単な操作で感覚的にページ切り替えを行えるようになって利便性が向上する。
また、以上の例では非配置領域へのタッチ操作を、デバイス波形表示画面の切り替えの条件としているが、これに限らず、表示部品が配置された領域を含めて、デバイス波形表示画面の切り替えを可能としてもよい。例えばフリック操作であれば、ユーザが指などで触れた位置が偶偶、表示部品の配置された配置領域であっても、この表示部品に対する操作とは見なさないようにすることで、この表示部品に対してユーザが意識的に選択する操作、例えば通常のタップや長押しがなされた場合と区別することが可能となる。
[実施形態4]
さらに以上の実施形態1~3では、表示部55の表示内容をデバイス波形表示画面160に切り替える構成について説明した。ただ本発明は、必ずしも専用のデバイス波形表示画面に切り替えずとも、システム画面やユーザ画面などのページ上で、デバイス波形を表示させるように構成してもよい。このような例を実施形態4に係るプログラマブル表示器のユーザ画面270として、図48に示す。ここでは、ユーザが選択、配置可能な表示部品の一として、表示部品そのものに、デバイス波形を表示する波形表示領域を有する波形領域表示部品271を提供している。図48に示すユーザ画面は、右下に波形領域表示部品271を配置する例を示している。波形領域表示部品271は、表示部品の大きさを比較的大きくして、デバイス波形を視認できる大きさに表示させる波形表示領域を確保している。表示用データ生成部51aは、PLC1から取得した運転記録データを、波形領域表示部品271の波形表示領域に、デバイス波形として表示させる。波形領域表示部品271に表示されるデバイス波形は、動画像として表示させることもできるし、特定の時刻の波形を静止画として表示させることもできる。
また波形領域表示部品271は、デバイス波形として表示させるデバイスの選択や表示させる時刻を変更する機能を持たせてもよい。例えば図48の例では、「詳細」ボタン272を備えており、この「詳細」ボタン272をタッチすることで、デバイスの選択メニューや時間軸を表すスライダ状の操作バーを表示させてもよい。あるいは「詳細」ボタン272をタッチすることで、図12に示すリプレイモードのリアルタイムチャートモニタを表示させてもよい。
このようにして、プログラマブル表示器50上で、トラブル発生時のデバイス波形を容易に確認できるようにしたことで、トラブル発生時にはFAシステムのプログラムを設計したエンジニアに解析を依頼することなく、現場の担当者レベルでも解決可能なトラブルについては、その場で確認して解決策を検討することが可能となり、トラブル復旧までの時間を短縮化し、またトラブル原因の究明作業自体も、必要なデバイスのデバイス波形を選択的に表示させることで、トラブル原因の特定作業に資することが可能となる。
[実施形態5]
また本発明に係るプログラマブル表示器は、トラブル発生時の対処法について、ユーザを誘導するよう構成してもよい。例えば、ガイダンス表示画面を準備し、トラブル発生時の対処法を表示させてユーザを誘導する。このような例を、実施形態5に係るプログラマブル表示器として、図49に基づいて説明する。図49は、プログラマブルロジックコントローラシステムを構成する画面データ作成装置に表示されるスイッチ設定画面120Bの例を示す模式図である。なお図49のスイッチ設定画面120Bは、図14に示す画面データ作成装置のスイッチ設定画面120において、スイッチ機能選択欄121で「リプレイモード起動」が選択されたときに表示させるように構成してもよい。
図49のスイッチ設定画面120Bにおいて、リアルタイムチャートモニタ(リプレイモード)詳細設定欄124で、「RTCM」タブ125aをクリックすると、図15におけるリアルタイムチャートモニタ(リプレイモード)の詳細設定に対応する内容が表示される。また図49に示すスイッチ設定画面120Bは、リアルタイムチャートモニタ(リプレイモード)詳細設定欄124で、「ガイダンス」タブ125bをクリックした状態を示している。
図49において、リアルタイムチャートモニタ(リプレイモード)詳細設定欄124にはコンテンツ指定欄124A、メッセージブロックNo.指定欄124B、ブロックNo.欄124Cが設けられる。コンテンツ指定欄124Aにおいては、メッセージか画像を選択する。ここではメッセージを選択した例を示している。またメッセージブロックNo.指定欄124Bでは、内部指定と外部指定を選択することができ、ここでは内部指定を選択した例を示している。内部指定を選択したときに用いるブロックNo.として、ブロックNo.欄124Cで0を選択する。すると、リアルタイムチャートモニタ(リプレイモード)詳細設定欄124の下方に設けられたガイダンスメッセージ表示欄124Dに、既に入力済みのガイダンスメッセージが表示される(初期状態は空欄である)。プログラマブル表示器50におけるガイダンスメッセージの表示内容は、メッセージ編集ボタン129をクリックして、編集することができる。
以上のようにして、図13の画面表示欄112に表示されたメニュー画面に示す「リプレイモード起動」ボタン141bに対し、ガイダンスメッセージを予め図49の画面から対応付けて設定しておくと、運転時のプログラマブル表示器50では、図12に示したようなリプレイモードの画面に重ねて、図50に示すようなポップアップ表示(フローティングウィンドウ表示)280がなされた、デバイス波形表示画面160Cが表示される。換言すれば、このガイダンスメッセージは、保存条件が成立したときのエラーイベントを解消するための対処方法を誘導するためのガイダンス情報の一例である。このガイダンス情報は、例えば図16に示すように、デバイス波形を表示するために予め設定されるデバイス(DM100,DM200,R000)に関連付けられている。そして、図13において、「リプレイモード起動」ボタン141bがクリックされると、このガイダンス情報を表示させるための表示用データが生成されるので、図50のデバイス波形表示画面160Cには、デバイス波形と共にガイダンスメッセージが表示されることになる。
図50は、リプレイモードのデバイス波形表示画面の変形例を示す模式図である。この図に示すように、図49のスイッチ設定画面120Bにて設定したガイダンスメッセージが、デバイス波形表示画面160Cの最前面にポップアップ表示される。図50では、「リアルタイムチャートモニタ」タブ161が選択されたときに、デバイス波形に重畳的に表示されている。特に、図50に示すポップアップ表示280で表示されるガイダンスメッセージの内、3.には、「R000のデバイス波形において、最後のON周辺の状況をカメラで確認してください。」といったメッセージが表示されている。この表示を見た現場担当者は、R000のデバイス波形のうち最後のON周辺の状況をカメラで確認することにより、トラブル解決を試みることができる。
なお、例えば図49のコンテンツ指定欄124Aで、画像を選択したときは、メッセージブロックNo.指定欄124Bの代わりに、ファイルNo.指定欄が表示される。このファイルNo.指定欄は、特定の画像ファイルを指定するための欄である。ファイルNo.指定欄では、特定のディレクトリ内に配置された画像ファイルのファイル名を指定してもよいし、特定の画像ファイルを識別するための識別子を指定してもよいし、或いは画像ファイルが格納された場所を示すパスを指定してもよい。この場合、図50のポップアップ表示280において、ガイダンスメッセージの代わりに、ファイルNo.指定欄によって指定された画像がポップアップ表示されることになる。画像ファイルは、ユーザによって予め作成され、図49のポップアップ表示280に示すようなメッセージや、トラブル発生時の対処法を誘導するイラストを含んでいてもよい。
また、例えば図49のメッセージブロックNo.指定欄124Bで、外部指定を選択した場合には、PLC内の特定デバイスのデバイス値を参照して、メッセージブロックNo.を運転中のデバイス値で動的に指定することができる。これは、図33の「RTCMIDの指定方法」欄126におけるRTCMIDの指定方法で説明した外部指定と同様である。
なお、図34Cでは、RTCMIDとデバイスの紐づけが行われたデータ構造の模式図を示したが、図49に示す設定を行った場合も同様に、メッセージブロックNo.とデバイスの紐づけ(対応付け)が行われる。すなわち、例えば指定デバイスDM300=0に対し、RTCMID=0と併せて、図49を用いて説明したメッセージブロックNo.=0が対応付けられる。コンテンツ指定で画像を選択した場合も同様に、ファイルNo.とデバイスの紐づけ(対応付け)が行われる。
また、図49に示すスイッチ設定画面120Bにおいて、ガイダンス表示の表示/非表示を切り替えるための選択欄を設けてもよい。この場合において、ユーザがガイダンス表示を非表示に選択している場合には、図50のポップアップ表示280に示すようなガイダンスメッセージは表示されない。
上述した実施形態では、PLC1において保存条件が満たされると、プログラマブル表示機50は、PLC1の保存メモリ36に保存された運転記録データを取得する構成となっているが、この際に、予め定められた特定アドレスに、運転記録データを取得した旨を示すEメールを自動送信してもよい(いわゆるメール通知機能)。これにより、例えば現場担当者は、生産ラインに何らかの異常が生じたことを把握することができる。また、このEメールを外部に送信する際に、運転記録データを自動的に添付する構成としてもよい。さらに、運転記録データのデータ容量が大きい場合には、複数の運転記録データに分割して、各運転記録データを添付した複数のEメールを順次送信する構成としてもよい。また、画面キャプチャした画像データを添付して送信する構成としてもよい。これにより、例えばシステム設計者は、異常が生じたことだけでなく、運転記録データを受け取って、原因を分析することができる。