IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士電機株式会社の特許一覧

特開2023-167381プログラマブルロジックコントローラ、支援装置、及び表示装置、並びに、ロギング方法、支援方法、及び表示方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023167381
(43)【公開日】2023-11-24
(54)【発明の名称】プログラマブルロジックコントローラ、支援装置、及び表示装置、並びに、ロギング方法、支援方法、及び表示方法
(51)【国際特許分類】
   G05B 19/05 20060101AFI20231116BHJP
【FI】
G05B19/05 F
【審査請求】有
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022078536
(22)【出願日】2022-05-12
(11)【特許番号】
(45)【特許公報発行日】2022-12-13
(71)【出願人】
【識別番号】000005234
【氏名又は名称】富士電機株式会社
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100132067
【弁理士】
【氏名又は名称】岡田 喜雅
(74)【代理人】
【識別番号】100141232
【弁理士】
【氏名又は名称】飯塚 達
(72)【発明者】
【氏名】仲野 良祐
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220BB09
5H220CC06
5H220CX01
5H220HH01
5H220JJ12
5H220JJ27
5H220JJ34
5H220JJ53
(57)【要約】
【課題】ユーザアプリケーションの実行や機器の制御に影響なくロギングを可能にする。
【解決手段】処理実行部61は、S210の入力処理、S220のプログラム実行処理、S230の出力処理、S240のシステム処理、及びS250のロギング処理を含む、S200の制御処理のサイクルを繰り返し実行する。S250のロギング処理は、S200の制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定して、当該実行時間が当該制御周期に収まらないと判定したサイクルにおけるS200の制御処理に含まれるS250のロギング処理において当該変数の値の収集を中断する処理を含む。
【選択図】図12
【特許請求の範囲】
【請求項1】
プログラマブルロジックコントローラであって、
外部機器から送られてくる入力データを取り込む入力処理、前記入力データを用いてユーザアプリケーションプログラムを実行するプログラム実行処理、前記ユーザアプリケーションプログラムの実行結果を出力して外部機器を制御する出力処理、前記プログラマブルロジックコントローラ自身の動作を管理するシステム処理、及び、前記ユーザアプリケーションプログラムにおいて使用されている変数の値を収集するロギング処理を含む制御処理のサイクルを繰り返し実行する処理実行部を備え
前記ロギング処理は、前記制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定して、前記実行時間が前記制御周期に収まらないと判定したサイクルの制御処理に含まれる前記ロギング処理において前記変数の値の収集を中断する処理を含む、
ことを特徴とするプログラマブルロジックコントローラ。
【請求項2】
前記ロギング処理による前記変数の値の収集時刻と前記収集時刻に収集された前記変数の値を対応付けた収集データを、前記変数の値を収集する度に保存するリングバッファを更に備え、
前記ロギング処理は、前記変数の値の収集を中断する処理として、前記実行時間が前記制御周期に収まらないと判定したサイクルの制御処理に含まれる前記ロギング処理おいて収集された前記変数の値を含む前記収集データを前記リングバッファから破棄する処理を含む、
ことを特徴とする請求項1に記載のプログラマブルロジックコントローラ。
【請求項3】
前記収集データには、前記収集時刻が到来した回数をカウントする収集タイミングカウンタの値が、前記収集時刻と前記収集時刻に収集された前記変数の値とに対応付けられて含まれていることを特徴とする請求項2に記載のプログラマブルロジックコントローラ。
【請求項4】
前記リングバッファにおいて破棄されずに保存されている前記収集データを順次読み出して外部記憶装置に保存する保存部を更に備えることを特徴とする請求項3に記載のプログラマブルロジックコントローラ。
【請求項5】
プログラマブルロジックコントローラであって、外部機器から送られてくる入力データを取り込む入力処理、前記入力データを用いてユーザアプリケーションプログラムを実行するプログラム実行処理、前記ユーザアプリケーションプログラムの実行結果を出力して外部機器を制御する出力処理、前記プログラマブルロジックコントローラ自身の動作を管理するシステム処理、及び、前記ユーザアプリケーションプログラムにおいて使用されている変数の値を収集するロギング処理を含む制御処理のサイクルを繰り返し実行する前記プログラマブルロジックコントローラの支援装置であって、
前記ユーザアプリケーションプログラムを解析して、前記ユーザアプリケーションプログラムにおいて使用されている変数を抽出するプログラム解析部と、
前記プログラム解析部により抽出された前記変数のうちから、前記ロギング処理による収集の対象とする変数を対象変数として選択する選択部と、
前記対象変数を特定する情報を前記プログラマブルロジックコントローラに対するロギング設定データとして出力する第1出力部と、
前記選択部により選択された前記対象変数の全てについて前記ロギング処理を実行した場合における前記制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定し、前記制御処理の前記実行時間が前記制御周期に収まらない場合に、注意情報を出力する第2出力部と、
を備えることを特徴とする支援装置。
【請求項6】
前記第2出力部は、前記選択部により選択された前記対象変数の全てについて前記ロギング処理を実行した場合における前記制御処理の1サイクルの実行に要すると推定される時間を推定制御周期として更に出力することを特徴とする請求項5に記載の支援装置。
【請求項7】
前記ロギング設定データは、前記対象変数を特定する情報として、前記プログラマブルロジックコントローラが備えているメモリ上の記憶領域であって、前記プログラマブルロジックコントローラにおいて前記ユーザアプリケーションプログラムが実行されたときに前記対象変数の値の保持に使用される前記記憶領域についての前記メモリ上の位置を特定する情報を含むことを特徴とする請求項5又は6に記載の支援装置。
【請求項8】
プログラマブルロジックコントローラであって、外部機器から送られてくる入力データを取り込む入力処理、前記入力データを用いてユーザアプリケーションプログラムを実行するプログラム実行処理、前記ユーザアプリケーションプログラムの実行結果を出力して外部機器を制御する出力処理、前記プログラマブルロジックコントローラ自身の動作を管理するシステム処理、及び、前記ユーザアプリケーションプログラムにおいて使用されている変数の値を収集するロギング処理を含む制御処理のサイクルを繰り返し実行する前記プログラマブルロジックコントローラによる前記ロギング処理によって収集された前記変数の値を表示する表示装置であって、
前記ロギング処理により収集された前記変数の値を前記変数の値の収集時刻に対応付けた収集データが前記収集時刻順に並べられているロギング収集データであって、前記プログラマブルロジックコントローラにより外部記憶装置に保存された前記ロギング収集データを前記外部記憶装置から読み出す読み出し部と、
前記外部記憶装置から読み出した前記ロギング収集データに基づいて、前記収集時刻と前記変数の値とを関係付けて表示する表示部と、
前記外部記憶装置から読み出した前記ロギング収集データから前記ロギング処理の中断の痕跡を発見した場合に、前記中断による前記変数の値の欠損を示す表示を、前記欠損した前記変数の値が前記ロギング処理により収集されていた収集時刻に対応付けて、前記表示部に更に表示させる表示制御部と、
を備えることを特徴とする表示装置。
【請求項9】
前記ロギング収集データにおいて並べられている前記収集データのそれぞれには、前記収集時刻が到来した回数をカウントする収集タイミングカウンタの値が、前記収集時刻と前記収集時刻に収集された前記変数の値とに対応付けられて含まれており、
前記表示制御部は、前記外部記憶装置から読み出した前記ロギング収集データにおいて連続して並べられている2つの前記収集データそれぞれに含まれる前記収集タイミングカウンタの値の差分値に基づいて、前記ロギング処理の中断の痕跡を発見する、
ことを特徴とする請求項8に記載の表示装置。
【請求項10】
前記表示制御部は、前記変数の値の欠損を示す表示として、前記変数の値が不定値であることを示す表示を、前記欠損した前記変数の値が前記ロギング処理により収集された収集時刻に対応付けて、前記表示部に表示させることを特徴とする請求項8又は9に記載の表示装置。
【請求項11】
プログラマブルロジックコントローラが、
外部機器から送られてくる入力データを取り込む入力処理、前記入力データを用いてユーザアプリケーションプログラムを実行するプログラム実行処理、前記ユーザアプリケーションプログラムの実行結果を出力して外部機器を制御する出力処理、前記プログラマブルロジックコントローラ自身の動作を管理するシステム処理、及び、前記ユーザアプリケーションプログラムにおいて使用されている変数の値を収集するロギング処理を含む制御処理のサイクルを繰り返し実行し、
前記ロギング処理の実行において、前記制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定して、前記実行時間が前記制御周期に収まらないと判定したサイクルの制御処理に含まれる前記ロギング処理において前記変数の値の収集を中断する処理を実行する、
ことを特徴とするロギング方法。
【請求項12】
プログラマブルロジックコントローラであって、外部機器から送られてくる入力データを取り込む入力処理、前記入力データを用いてユーザアプリケーションプログラムを実行するプログラム実行処理、前記ユーザアプリケーションプログラムの実行結果を出力して外部機器を制御する出力処理、前記プログラマブルロジックコントローラ自身の動作を管理するシステム処理、及び、前記ユーザアプリケーションプログラムにおいて使用されている変数の値を収集するロギング処理を含む制御処理のサイクルを繰り返し実行する前記プログラマブルロジックコントローラの支援装置が行う支援方法であって、
前記ユーザアプリケーションプログラムを解析して、前記ユーザアプリケーションプログラムにおいて使用されている変数を抽出し、
抽出された前記変数のうちから、前記ロギング処理による収集の対象とする変数を対象変数として選択し、
前記対象変数を特定する情報を前記プログラマブルロジックコントローラに対するロギング設定データとして出力し、
選択された前記対象変数の全てについて前記ロギング処理を実行した場合における前記制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定し、
前記制御処理の前記実行時間が前記制御周期に収まらない場合に、注意情報を出力する、
ことを特徴とする支援方法。
【請求項13】
プログラマブルロジックコントローラであって、外部機器から送られてくる入力データを取り込む入力処理、前記入力データを用いてユーザアプリケーションプログラムを実行するプログラム実行処理、前記ユーザアプリケーションプログラムの実行結果を出力して外部機器を制御する出力処理、前記プログラマブルロジックコントローラ自身の動作を管理するシステム処理、及び、前記ユーザアプリケーションプログラムにおいて使用されている変数の値を収集するロギング処理を含む制御処理のサイクルを繰り返し実行する前記プログラマブルロジックコントローラによる前記ロギング処理によって収集された前記変数の値を表示する表示装置が行う表示方法であって、
前記ロギング処理により収集された前記変数の値を前記変数の値の収集時刻に対応付けた収集データが前記収集時刻順に並べられているロギング収集データであって、前記プログラマブルロジックコントローラにより外部記憶装置に保存された前記ロギング収集データを前記外部記憶装置から読み出し、
前記外部記憶装置から読み出した前記ロギング収集データに基づいて、前記収集時刻と前記変数の値とを関係付けて表示し、
前記外部記憶装置から読み出した前記ロギング収集データから前記ロギング処理の中断の痕跡を発見した場合に、前記中断による前記変数の値の欠損を示す表示を、前記欠損した前記変数の値が前記ロギング処理により収集された収集時刻に対応付けて更に表示する、
ことを特徴とする表示方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラマブルロジックコントローラの技術に関する。
【背景技術】
【0002】
プログラマブルロジックコントローラは、ファクトリーオートメーションにおいて製造機器や搬送装置、検査装置を制御するコントローラである。プログラマブルロジックコントローラは、ラダープログラムなどの、ユーザにより作成されるユーザアプリケーションプログラムを実行することで様々な制御機器を制御する。
【0003】
制御装置による機器の制御において異常が発生した場合には、その異常の原因を特定することが望ましい。また、このような異常の発生の場合に限られず、機器の制御に関する情報を記録しておいて、その後に当該情報を検証したいという要望がある。そこで、ユーザが、データの履歴を残すための条件を予め制御装置に設定しておき、この条件に基づいて機器及び制御装置自体の動作状態を示すデータを制御装置がロギングするという第1の技術が知られている(例えば、特許文献1参照)。
【0004】
図1は、この第1の技術において制御装置が実行する各処理の実行期間の例を示している。図1における上側部分は、ロギング処理が実行されない場合の各処理の実行期間を示しており、制御周期の各周期において、入力処理、プログラム実行処理、及び出力処理の各処理がこの順序で実行されることを表している。また、図1における下側部分は、ロギング処理が実行される場合の各処理の実行期間を示しており、各制御周期において、入力処理、プログラム実行処理、及び出力処理の各処理に続いてロギング処理が実行されることを表している。
【0005】
また、この他の背景技術として、これより説明する第2の技術が知られている。プログラマブルロジックコントローラにおいて、アプリケーションスケジューラで管理されない処理のうち、データ処理系のようにメッセージ応答性能に影響ある処理を優先したい場合とユーザアプリケーションの実行性能を優先したい場合とがある。この第2の技術は、両者の優先度をユーザが設定可能にするというものである(例えば、特許文献2参照)。
【0006】
図2は、第2の技術における帯域割合の調整の例を示している。図2において、「タスク1」、「タスク2」、及び「タスク3」は、ユーザアプリケーションが実行されるタスクを表しており、「タスクA」及び「タスクB」は、通信処理やシステム維持のための処理などの、ユーザアプリケーション以外の処理のタスクを表している。また、この例では、制御周期の1周期がアプリ帯域の期間とシステム帯域の期間とに分割されており、アプリ帯域ではユーザアプリケーションのタスクが実行され、システム帯域では、ユーザアプリケーション以外の処理のタスクが実行される。また、各帯域内では、各タスクが、それぞれの優先度に応じた順序で実行される。
【0007】
図2において、上側部分は帯域割合の調整前の様子を表しており、下側部分は調整後の様子を表している。第2の技術は、このように、ユーザの目的に応じて、各制御周期におけるアプリ帯域とシステム帯域との割合をユーザが調整可能とすることで、ユーザアプリケーション性能を優先するのか、システム処理の性能を優先するのかの変更を可能にしている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2020-13526号公報
【特許文献2】特開2008-146357号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
前述した第1の技術では、ロギング処理の実行が追加されることで制御周期が長くなるため、その他の入力処理、プログラム実行処理、及び出力処理の実行期間が遅延することになり、ユーザアプリケーションがユーザの意図した通りに動作しないことがあり得る。
【0010】
1つの側面において、本発明は、ユーザアプリケーションの実行や機器の制御に影響なくロギングを行えるようにすることを目的とする。
【課題を解決するための手段】
【0011】
実施形態のひとつでは、プログラマブルロジックコントローラが処理実行部を備える。処理実行部は、入力処理、プログラム実行処理、出力処理、システム処理、及び、ロギング処理を含む制御処理のサイクルを繰り返し実行する。入力処理は、外部機器から送られてくる入力データを取り込む処理である。プログラム実行処理は、当該入力データを用いてユーザアプリケーションプログラムを実行する処理である。出力処理は、当該ユーザプログラムの実行結果を出力して外部機器を制御する処理である。システム処理は、当該プログラマブルロジックコントローラ自身の動作を管理する処理である。ロギング処理は、当該ユーザアプリケーションプログラムにおいて使用されている変数の値を収集する処理である。このロギング処理は、当該制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定して、当該実行時間が当該制御周期に収まらないと判定したサイクルの制御処理に含まれる当該ロギング処理において当該変数の値の収集を中断する処理を含む。
【0012】
また、実施形態の別のひとつでは、上述した制御処理のサイクルを繰り返し実行するプログラマブルロジックコントローラの支援装置が、プログラム解析部、選択部、第1出力部、及び、第2出力部を備える。プログラム解析部は、ユーザアプリケーションプログラムを解析して、当該ユーザアプリケーションプログラムにおいて使用されている変数を抽出する。選択部は、プログラム解析部により抽出された当該変数のうちから、ロギング処理による収集の対象とする変数を対象変数として選択する。第1出力部は、当該対象変数を特定する情報を当該プログラマブルロジックコントローラに対するロギング設定データとして出力する。第2出力部は、選択部により選択された対象変数の全てについて当該ロギング処理を実行した場合における当該制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定し、当該制御処理の当該実行時間が当該制御周期に収まらない場合に、注意情報を出力する。
【0013】
また、実施形態の更なる別のひとつでは、実施形態の別のひとつでは、上述した制御処理のサイクルを繰り返し実行するプログラマブルロジックコントローラによるロギング処理によって収集された変数の値を表示する表示装置が、読み出し部と、表示部と、表示制御部とを備える。読み出し部は、ロギング処理により収集された変数の値を当該変数の値の収集時刻に対応付けた収集データが収集時刻順に並べられているロギング収集データであって、プログラマブルロジックコントローラにより外部記憶装置に保存されたロギング収集データを当該外部記憶装置から読み出す。表示部は、当該外部記憶装置から読み出したロギング収集データに基づいて、収集時刻と変数の値とを関係付けて表示する。表示制御部は、当該外部記憶装置から読み出したロギング収集データから当該ロギング処理の中断の痕跡を発見した場合に、中断による変数の値の欠損を示す表示を、欠損した変数の値がロギング処理により収集されていた収集時刻に対応付けて、表示部に更に表示させる。
【発明の効果】
【0014】
1つの側面によれば、ロギングの実行がユーザアプリケーションの実行や機器の制御に与える影響を抑制することが可能になる。
【図面の簡単な説明】
【0015】
図1】第1の技術において制御装置が実行する各処理の実行期間の例を示した図である。
図2】第2の技術における帯域割合の調整の例を示した図である。
図3】PLCシステムの構成例を示す図である。
図4】PLCが実行する各処理の実行期間の例を示した図である。
図5】PLCのハードウェア構成例を示した図である。
図6】PCのハードウェア構成例を示した図である。
図7】支援装置の機能構成例を示した図である。
図8】ロギング処理の実行の条件の設定を行う方法を説明する図である。
図9】UI画面の画面例である。
図10】ロギング設定データのデータ構造の一例を示した図である。
図11】収集対象設定情報のデータ構造の一例を示した図である。
図12】PLCの機能構成例を示した図である。
図13】PLCによるロギング実行方法を説明する図である。
図14】ロギング処理及び保存処理の処理内容の詳細を示したフローチャートである。
図15】ロギング収集データのデータ構造の一例を示した図である。
図16】収集データのデータ構造の一例を示した図である。
図17】収集処理の処理内容の詳細を示したフローチャートである。
図18】収集タイミングカウンタ値の用途を説明する図(その1)である。
図19】収集タイミングカウンタ値の用途を説明する図(その2)である。
図20】収集データ表示装置のハードウェア構成例を示した図である。
図21】収集データ表示装置の機能構成例を示した図である。
図22】収集データを表示する方法の一例を説明する図である。
図23】プログラム表示処理の詳細を説明する図である。
図24】収集データの表示図面の第1の例である。
図25】警告画面の画面例である。
図26】波形表示処理の詳細を説明する図である。
図27】収集データの波形表示画面の第1の例である。
図28】ロギングファイル解析・変換処理の詳細を説明する図である。
図29】ロギングファイル解析・変換処理の処理内容を示したフローチャートである。
図30】表示制御処理の詳細を説明する図である。
図31】収集データの表示図面の第2の例である。
図32】収集データの波形表示画面の第2の例である。
【発明を実施するための形態】
【0016】
以下、図面を参照しながら、実施形態を詳細に説明する。
【0017】
図3は、PLCシステム10の構成例を示している。このPLCシステム10は、PLC1と、PC2と、入出力モジュール3と、通信モジュール4とを備えている。PLC1とPC2とは通信ケーブル6を介して接続されている。なお、「PLC」とはプログラマブルロジックコントローラの略称である。また、「PC」とはパーソナルコンピュータの略称である。
【0018】
PLC1は、工場等に設置される各種制御機器を統括的に制御する。
【0019】
PC2はPLC1を支援する支援装置としての機能を提供する。PC2は、例えば、ユーザアプリケーションプログラムの編集を行うために用いられる。なお、以降の説明では、ユーザアプリケーションプログラムを「ユーザプログラム」と称することもある。ユーザプログラムは、例えば、IEC61131-3準拠のラダー言語や、シーケンシャルファンクションチャート(SFC)などのフローチャート形式のモーションプログラムなどといったグラフィカルプログラミング言語を用いて作成されてもよい。また、ユーザプログラムは、例えば、C言語などの高級プログラミング言語を用いて作成されてもよい。
【0020】
また、後述するように、PC2は、ロギング処理の実行の条件の設定を行う機能も提供する。
【0021】
PLC1は、1以上の入出力モジュール3や通信モジュール4といった外部機器が着脱可能に構成されている。PLC1と入出力モジュール3及び通信モジュール4とは通信バス7を介して接続されている。
【0022】
入出力モジュール3は、サーボアンプやエンコーダ、あるいは、センサの信号を電気信号に変換するものであり、また、デジタル信号若しくはアナログ信号を入出力するものであってもよい。
【0023】
通信モジュール4は、他の機器との通信インタフェースを提供する。
【0024】
図4は、図3のPLCシステム10におけるPLC1が実行する各処理の実行期間の例を示している。
【0025】
PLC1は、入力処理、プログラム実行処理、出力処理、及びシステム処理を含む制御処理のサイクルを繰り返し実行する。入力処理は、外部機器である入出力モジュール3から受信した入力データを取り込む処理である。プログラム実行処理は、ユーザにより作成されたユーザプログラムを実行する処理である。このユーザプログラムの実行では、入力処理により取り込まれた入力データが用いられる。出力処理は、ユーザプログラムの実行結果を出力することによって入出力モジュール3を制御して、当該実行結果を入出力モジュール3の出力に反映させる処理である。システム処理は、PLC1自身の動作を管理して、適正な動作を維持するための処理である。
【0026】
図4の上側部分で表されているように、PLC1は、制御周期である各サイクルにおいて、入力処理、プログラム実行処理、出力処理、及びシステム処理を、この順序で実行する。なお、制御周期の長さは、ユーザによって指定される。
【0027】
PLC1により実行される制御処理には、これらの処理に加えて、ロギング処理が更に含まれている。ロギング処理は、ユーザプログラムにおいて使用されている変数の値を収集する処理であって、PLC1自身を含むPLCシステム10の各構成機器の動作状態を示すデータを記録し、履歴として保存する処理である。
【0028】
図4の下側部分で表されているように、PLC1は、ロギング処理を各制御周期における出力処理の実行期間に続くシステム処理の実行期間中に実行するようにする。PLC1は、このように、システム処理の実行期間であった期間にロギング処理を行うことによって、ユーザプログラムと機器の制御に関連する入力処理、プログラム実行処理、及び出力処理の実行期間に影響を与えることなくロギング処理を行うことを可能にする。
【0029】
なお、プログラム実行処理、システム処理、及びロギング処理のそれぞれの実行期間の割合を変更することによってロギング処理の実行時間を調整可能にしてもよい。
【0030】
次に、PLCシステム10におけるPLC1及びPC2ついて更に詳細に説明する。
【0031】
まず、PLC1のハードウェア構成について、図5に示されているハードウェア構成例を参照しながら説明する。このPLC1は通信I/F11、CPU12、バスコントローラ13、メモリ14、及び記憶装置I/F15を備えている。これらの構成要素はいずれも内部バス16に接続されており、相互にデータの授受を行うことが可能である。なお、「CPU」とはセントラルプロセシングユニットの略称である。また、「I/F」とはインタフェースの略称である。
【0032】
通信I/F11は通信ケーブル6に接続されており、PC2との間で行われる各種のデータの授受を管理する。
【0033】
CPU12は、ユーザプログラム、PLC1自身の動作を管理するためのシステムプログラム、ロギング実行プログラム等の各種のプログラムを実行する。
【0034】
バスコントローラ13は通信バス7に接続されており、外部機器である入出力モジュール3や通信モジュール4との間で行われる各種のデータの授受を管理する。
【0035】
メモリ14は、例えば半導体メモリであり、RAM領域及びROM領域を含む。RAM領域は、CPU12が各種のプログラムを実行する際に各種のデータを一時的に記憶しておく記憶領域として利用される。ROM領域は、各種のプログラムやデータが保存される領域であり、例えば不揮発性メモリが用いられる。なお、「RAM」とはランダムアクセスメモリの略称である。また、「ROM」とは、リードオンリメモリの略称である。
【0036】
記憶装置I/F15は、メモリカード等の外部記憶装置17に対する各種のデータの書き込み処理や読み出し処理を管理する。
【0037】
次に、PC2のハードウェア構成について、図6に示されているハードウェア構成例を参照しながら説明する。このPC2はCPU21、メモリ22、入力装置23、表示装置24、補助記憶装置25、及び通信I/F26を備えている。これらの構成要素はいずれも内部バス27に接続されており、相互にデータの授受を行うことが可能である。
【0038】
CPU21は、例えば、メモリ22を利用して所定のプログラムを実行することにより、ユーザプログラムの編集機能や、ロギング処理の実行の条件の設定を行うための機能を提供する。
【0039】
入力装置23は、例えば、キーボードやポインティングデバイス等であり、ユーザからの指示又は情報の入力に用いられる。
【0040】
表示装置24は、例えば、ユーザへの問い合わせ又は指示や、処理結果の表示出力に用いられる。
【0041】
補助記憶装置25は、磁気ディスク装置、光ディスク装置、光磁気ディスク装置等であり、例えば、ハードディスクドライブやフラッシュメモリであってもよい。PC2は、補助記憶装置25にプログラム及びデータを格納しておき、それらをメモリ22にロードして使用することができる。
【0042】
通信I/F26は通信ケーブル6に接続されており、PLC1との間で行われる各種のデータの授受を管理する。
【0043】
<ロギングの設定>
【0044】
次に、図3のPLCシステム10において、ロギング処理の実行の条件をPLC1に設定する手法について説明する。
【0045】
まず図7について説明する。図7は支援装置30の機能構成例を示した図である。この構成例は、PLC1によるロギング処理の実行の条件を設定する機能を支援装置30が提供する場合の一例である。PLCシステム10では、所定の設定ツールプログラムをPC2に実行させることによって、支援装置30の機能をPC2が提供する。
【0046】
図7において、支援装置30は、プログラム解析部31、選択部32、第1出力部33、及び第2出力部34を備えている。なお、支援装置30には、前述の制御処理をPLC1に行わせるときの制御周期がユーザにより予め設定されているものとする。
【0047】
プログラム解析部31は、PLC1に実行させるユーザプログラムを解析して、当該ユーザプログラムにおいて使用されている変数を抽出する。
【0048】
選択部32は、プログラム解析部31により抽出された変数のうちから、PLC1に行わせるロギング処理による収集の対象とする変数を選択する。この選択部32により選択された変数を、「対象変数」と称することとする。
【0049】
第1出力部33は、選択部32により選択された対象変数を特定する情報をロギング設定データ42として出力する。詳細は後述するが、このロギング設定データ42は、対象変数を特定する情報として、例えば、PLC1においてユーザプログラムが実行されたときに対象変数の値の保持に使用される記憶領域についてのメモリ14上の位置を特定する情報を含む。
【0050】
第2出力部34は、選択部32により選択された対象変数の全てについてPLC1がロギング処理を実行した場合における前述の制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定する。ここで、当該実行時間が当該制御周期に収まらない場合には、そのことを注意喚起するための注意情報を出力する。このようにすることで、このときのロギング設定データ42に基づいたロギング処理をPLC1に行わせた場合には、ロギングデータの欠損の可能性があることをユーザに認識させることが可能になる。また、このようにすることで、収集の対象とする変数の個数の制限についての検討をユーザに促すことが可能になり、結果として、ロギングの実行がユーザプログラムの実行や機器の制御に与える影響が抑制される。
【0051】
なお、第2出力部34は、選択部32により選択された対象変数の全てについてロギング処理を実行した場合における前述の制御処理の1サイクルの実行に要すると推定される時間を推定制御周期として更に出力するようにしてもよい。
【0052】
このような構成を備えている支援装置30によって行われる支援方法の一例である、ロギング処理の実行の条件の設定を行う方法について、図8を用いて更に詳細に説明する。
【0053】
支援装置30には設定ツール40が備えられている。PC2では、所定の設定ツールプログラムをCPU21に実行させることによって設定ツール40の機能が提供される。
【0054】
設定ツール40にはプロジェクトデータ41が入力される。プロジェクトデータ41は、PLCシステム10のシステム構成の情報、PLC1で実行させるユーザプログラム、及び、PLCシステム10が備えている外部機器である入出力モジュール3や通信モジュール4などについての機能設定情報を含む情報である。ここでは、このプロジェクトデータ41は、例えばPC2において所定のプロジェクトデータ編集プログラムを実行することによりユーザによって既に作成されていて、例えば補助記憶装置25に既に記憶されているものとする。
【0055】
設定ツール40により、まず、このプロジェクトデータ41に対してS110の収集対象設定処理が行われる。この処理は、ユーザプログラムで使用されている変数から、ロギングの対象とする変数を設定する処理であって、図7の支援装置30におけるプログラム解析部31及び選択部32の機能を提供する処理である。
【0056】
このS110の処理はS111のプログラム解析処理を含む。プログラム解析処理は、プロジェクトデータ41に含まれているユーザプログラムを解析して、当該ユーザプログラムで使用されている変数を抽出する処理である。S110の収集対象設定処理では、プログラム解析処理の実行によって抽出された変数から、対象変数、すなわち、PLC1に行わせるロギング処理による収集の対象とする変数を選択する処理が更に行われる。
【0057】
ここで図9について説明する。図9は、S110の収集対象設定処理で用いられるUI画面100の画面例を表している。なお、「UI」とはユーザインタフェースの略称である。
【0058】
図9の画面例では、UI画面100は、プログラム選択部101、抽出変数表示部102、及び対象変数表示部103を含む。支援装置30の機能を図6のPC2が提供する場合、このUI画面100は表示装置24によって表示される。
【0059】
プログラム選択部101には、プロジェクトデータ41に含まれていたユーザプログラムを示す情報が表示される。なお、本実施形態では、複数のプログラムの集合体としてタスクが構成され、複数のタスクの集合体としてユーザプログラムが構成されているものとする。図9の画面例において、「アプリ名称」はユーザプログラムの名称であり、「タスク1」、「タスク2」、及び「タスク3」は各タスクのそれぞれの名称であり、「プログラム」、「プログラムN」は各タスクに属するプログラムそれぞれの名称である。この画面例では、ユーザプログラムと各タスクと各プログラムとの関係をツリー形式で表現することが表されている。
【0060】
プログラム選択部101に表示されているプログラムの名称のいずれかを選択する操作がユーザにより行われると、選択された名称に対応するプログラムに対してS111のプログラム解析処理が行われ、当該プログラムで使用されている変数が抽出される。なお、プログラムの名称の代わりにタスクの名称を選択する操作が行われた場合には、選択された名称に対応するタスクに属するプログラムのそれぞれから変数が抽出される。このとき、抽出された変数の名称が抽出変数表示部102に一覧表示される。
【0061】
抽出変数表示部102に表示されている変数の名称のうちからいずれか1以上を選択し、登録ボタン104を押下する操作がユーザにより行われると、選択された名称に対応する変数が対象変数として選択される。このとき、選択された対象変数の名称が対象変数表示部103に一覧表示される。
【0062】
なお、対象変数表示部103に表示されている対象変数の名称のうちからいずれか1以上を選択し、解除ボタン105を押下する操作がユーザにより行われると、選択された名称に対応する変数が対象変数の選択結果から除外される。
【0063】
また、一括登録ボタン106を押下する操作がユーザにより行われると、抽出変数表示部102に名称が表示されている変数の全てが対象変数として選択され、その名称が対象変数表示部103に一覧表示される。その一方で、一括解除ボタン107を押下する操作がユーザにより行われると、対象変数表示部103に名称が表示されている変数の全てが対象変数の選択結果から除外される。
【0064】
また、S110の収集対象設定処理では、以上のようにして選択された対象変数の全てについてロギング処理を実行した場合に収集される総データ量がプロジェクトデータ41に基づいて算出される。得られた総データ量は、UI画面100における収集データサイズ表示部108に表示される。
【0065】
また、PLC1により実行される前述の制御処理の1サイクルにおける、前述した入力処理、プログラム実行処理、出力処理、及びシステム処理のそれぞれの実行時間は、プロジェクトデータ41から算出可能である。S110の収集対象設定処理では、これらの各処理の実行時間の算出と、以上のようにして選択された対象変数についてロギング処理を実行した場合に推定されるロギング処理の実行時間の算出とが行われ、得られた各処理の実行時間の合計値が算出される。この実行時間の合計値は、PLC1により実行される前述の制御処理の1サイクルの実行に要すると推定される時間である。この合計値は、UI画面100における推定制御周期表示部109に表示される。
【0066】
収集データサイズや推定制御周期についてのこれらの表示をUI画面100で行うことによって、例えば、予め設定されている制御周期に収めるための対象変数の選択の検討をユーザに想起させることが可能になる。また、ロギング処理を優先させる意向の場合には、予め設定されている制御周期に対する変更についての検討をユーザに想起させることが可能になる。
【0067】
図8の説明に戻る。S120では収集動作設定処理が行われる。この処理はロギング処理の動作設定のための情報を作成する処理である。この情報によって、例えば、収集対象のデータである対象変数の値の収集タイミング、当該データの収集を行う期間、収集した当該データをPLC1が外部記憶装置17に保存させる保存タイミング等の設定がPLC1に対して行われる。
【0068】
上述したS110及びS120の処理に続いて、S130の設定内容確認処理が行われる。この処理は、S110の処理により選択された対象変数の全てについてPLC1がロギング処理を実行した場合における前述の制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定する処理である。
【0069】
この処理では、例えば、まず、PLC1により実行される前述の制御処理の1サイクルにおける、前述した入力処理、プログラム実行処理、出力処理、及びシステム処理の実行時間がプロジェクトデータ41から算出される。そして、これらの実行時間の合計が、予め設定されている制御周期から減算される。この減算によって得られる時間は、ロギング処理が実行可能な時間であり、この時間を「最大処理時間」と称することとする。次に、この最大処理時間に基づき、この時間内に収集可能なデータの最大サイズが求められる。そして、この最大サイズと、S110の処理により算出していた総データ量(UI画面100における収集データサイズ表示部108に表示される値)との大小比較が行われ、当該総データ量が当該最大サイズ以下であるかどうかが判定される。
【0070】
ここで、当該総データ量が当該最大サイズを超えている場合には、選択された対象変数の全てについてPLC1がロギング処理を実行した場合における前述の制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まらないとの判定結果が下される。このとき、選択された対象変数の全てについてPLC1がロギング処理を実行した場合には当該実行時間が予め設定されている制御周期に収まらないことを示す注意情報が出力される。支援装置30の機能を図6のPC2が提供する場合には、このような注意情報が表示装置24によって表示される。
【0071】
以上のように、S130の設定内容確認処理によって、図7の支援装置30における第2出力部34の機能が提供される。
【0072】
次に、S140の設定ファイル作成処理が行われる。この設定ファイル作成処理は、図7の支援装置30における第1出力部33の機能を提供する処理である。
【0073】
設定ファイル作成処理は、S110の処理により選択された対象変数を特定する情報とS120の処理により設定されたロギング処理の動作設定情報とをロギング設定データ42として出力する処理である。このロギング設定データ42はPLC1に転送され、PLC1では、ロギング処理についての動作設定が、ロギング設定データ42の内容に基づいて行われる。
【0074】
ロギング設定データ42について更に説明する。図10は、ロギング設定データ42のデータ構造の一例を示している。
【0075】
ロギング設定データ42は、プロジェクトデータ情報51と、収集動作設定情報52と、収集対象設定情報53とを含む。
【0076】
プロジェクトデータ情報51は、PLC1に実行させるユーザプログラムを特定する情報であり、例えば、ユーザプログラムをコンパイルして得られるオブジェクトコードに付された名称や、当該コンパイルの実行日時などの情報を含む。なお、プロジェクトデータ情報51は、プロジェクトデータ41の一部として含まれている。
【0077】
収集動作設定情報52はS120の収集動作設定処理によって作成される情報である。収集動作設定情報52には、例えば、データの収集タイミングや収集を行う期間、収集したデータをPLC1が外部記憶装置17に保存させる保存タイミング、収集したデータを保存させる保存先の外部記憶装置17を特定する情報が含まれている。
【0078】
収集対象設定情報53は、S110の収集対象設定処理によって選択された対象変数についての情報である。収集対象設定情報53のデータ構造の一例が図11に示されている。
【0079】
図11の例では、収集対象設定情報53には、データの収集タイミングにおける収集データの合計サイズの情報が含まれている。また、収集対象設定情報53には、データ収集の対象である対象変数の個数の情報が含まれている。更に、収集対象設定情報53には、対象変数のそれぞれについての情報として、メモリ種別、データ型、メモリアドレス、及びデータサイズの情報が含まれている。これらの情報によって、PLC1においてユーザプログラムが実行されたときに対象変数の値の保持に使用される記憶領域についてのメモリ14上の位置が特定される。
【0080】
PLC1によるロギング処理の実行の条件の設定は、上述した設定ツール40を用いることによって、支援装置30によって行われる。
【0081】
<ロギングの実行>
【0082】
次に、図3のPLCシステム10において、支援装置30としてのPC2によって設定された条件に従ってPLC1により行われるロギング処理について説明する。
【0083】
まず図12について説明する。図12はPLC1の機能構成例を示した図である。なお、PLC1には、前述の制御処理を行うときの制御周期がユーザにより予め設定されているものとする。
【0084】
図12に示した構成例では、PLC1は、処理実行部61、リングバッファ62、及び保存部63を備えている。
【0085】
前述したように、PLC1は、S210の入力処理、S220のプログラム実行処理、S230の出力処理、及びS240のシステム処理と、S250のロギング処理とを含むS200の制御処理のサイクルを繰り返し実行する。図12に示した機能構成例では、処理実行部61が、このS200の制御処理のサイクルを繰り返し実行する。図5に示したハードウェア構成例では、この制御処理はCPU12によって実行される。
【0086】
リングバッファ62は、S250のロギング処理による対象変数の値の収集時刻を当該収集時刻に収集された対象変数の値に対応付けた収集データを、対象変数の値を収集する度に保存する記憶領域である。図5に示したハードウェア構成例では、メモリ14の記憶領域の一部によってリングバッファ62が構成される。
【0087】
S250のロギング処理は、S200の制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定する処理を含む。このロギング処理は、更に、当該実行時間が当該制御周期に収まらないと判定したサイクルの制御処理に含まれるロギング処理において、対象変数の値の収集を中断する処理を含む。対象変数の値の収集の中断がこのような場合に行われることで、ロギング処理の処理期間の長期化が防止されるので、ユーザプログラムの実行や外部機器の制御に与える影響が抑制される。
【0088】
なお、収集を中断する処理として、例えば、実行時間が制御周期に収まらないと判定したサイクルの制御処理に含まれるロギング処理において収集された変数の値を含む収集データをリングバッファ62から破棄する処理をロギング処理が含むようにしてもよい。
【0089】
また、リングバッファ62により保存される収集データには、例えば、収集時刻が到来した回数をカウントする収集タイミングカウンタ64の値が、当該収集時刻と当該収集時刻に収集された対象変数の値とに対応付けられて含まれていてもよい。この収集タイミングカウンタ64の値は、対象変数の値の収集結果の確認が後に行われるときにおいて、対象変数の値の収集の中断が生じていたことの認識を可能にする。
【0090】
保存部63は、リングバッファ62において破棄されずに保存されている収集データを順次読み出して外部記憶装置17に保存する。図5に示したハードウェア構成例では記憶装置I/F15がCPU12による制御の下で保存部63の機能を提供する。この記憶装置I/F15に対する制御を、例えば、CPU12によって提供される処理実行部61がロギング処理の一部として行ってもよい。
【0091】
このような構成要素を備えているPLC1によって行われるロギング実行方法について、図13を用いて更に詳細に説明する。
【0092】
S200の制御処理において実行されるS220のプログラム実行処理は、S210の入力処理で取り込まれた、入出力モジュール3や通信モジュール4などの外部機器から送られてくる入力データを用いてユーザプログラムを実行する処理である。この実行結果は、当該外部機器の制御のためにS230の出力処理によって出力される。図5のハードウェア構成例において、このプログラム実行処理を実行するCPU12は、ユーザプログラムの実行のためにメモリ14の記憶領域を使用する。このときに使用される記憶領域を、プログラム使用領域14aと称することとする。
【0093】
S200の制御処理において実行されるS250のロギング処理は、S220のプログラム実行処理により実行されるユーザプログラムにおいて使用されている変数のうちの前述した対象変数のそれぞれの値を収集する処理である。この対象変数についての情報と、ロギング処理の動作設定情報とを含むロギング設定データ42は、支援装置30(PC2)において前述したようにして作成されてPLC1に予め提供されているものとする。
【0094】
PLC1のCPU12は、処理実行部61として実行するS200の制御処理と並行して、S260の時刻管理処理とS270の収集タイミング検知処理とを行っている。時刻管理処理は現在の時刻を計時する処理である。収集タイミング検知処理は、ロギング設定データ42に含まれている収集動作設定情報52により示されているデータの収集タイミングの到来を検知する処理である。
【0095】
S250のロギング処理では、収集タイミング検知処理による収集タイミングの到来の検知に応じて、対象変数のそれぞれの値を収集する処理が行われる。また、ロギング処理では、当該値の収集時刻を時刻管理処理による計時結果から取得し、当該値と当該収集時刻とをそれぞれ対応付けた収集データをリングバッファ62に保存する処理が行われる。
【0096】
また、PLC1のCPU12はS280の保存処理を実行する。この保存処理は、ロギング設定データ42に含まれている収集動作設定情報52により示されている保存タイミングの到来を検知する処理を含む。また、この保存処理は、記憶装置I/F15を制御して、リングバッファ62に保存されている収集データを保存タイミングの到来の検知に応じて読み出させて、当該収集動作設定情報52により示されている保存先である外部記憶装置17に保存させる処理を含む。
【0097】
ここで、S250のロギング処理とS280の保存処理とについて、図14に示したフローチャートを用いて更に詳細に説明する。
【0098】
図14において、S281及びS282の処理は保存処理の詳細を表しており、残余のS251からS254まで及びS290の各処理はロギング処理の詳細を表している。
【0099】
図14に示されている処理は、S200の制御処理の各サイクルにおいて、ロギング処理の処理開始タイミングが到来すると開始される。
【0100】
まず、S251において、S200の制御処理についての今回の実行サイクルにおけるロギング処理の実行時間の計測を開始する処理が行われる。
【0101】
次に、S252において、前述したS270の収集タイミング検知処理によって収集タイミングの到来が検知されたか否かを判定する処理が行われる。この判定処理において、収集タイミングの到来が検知されたと判定されたとき(判定結果がYESのとき)には、S290の収集処理が行われる。一方、この判定処理において、収集タイミングの到来が検知されないと判定されたとき(判定結果がNOのとき)には、図14に示されている処理が終了する。
【0102】
S290の収集処理は、対象変数のそれぞれの値を収集し、収集した値を、後述する収集データ73として、リングバッファ62に保存する処理である。この収集処理の詳細については後述する。
【0103】
S290の処理に続き、S253では、S251の処理により計測を開始した今回のロギング処理の実行時間が、前述した最大処理時間内に収まっているか否かを判定する処理が行われる。この最大処理時間は、例えば、予め設定されている制御周期に基づいて、支援装置30により行われる手法と同様の手法を用いてPLC1において算出するようにしもよい。また、支援装置30によって既に算出されていた最大処理時間を、例えばロギング設定データ42に含める等して、支援装置30からPLC1が受け取るようにしてもよい。
【0104】
S253の判定処理において、今回のロギング処理の実行時間が最大処理時間内に収まっていると判定されたとき(判定結果がYESのとき)にはS281に処理を進める。一方、S253の判定処理において、今回のロギング処理の実行時間が最大処理時間内に収まらなかったと判定されたとき(判定結果がNOのとき)にはS254に処理を進める。
【0105】
S254では、今回実行中のロギング処理におけるS290の収集処理によりリングバッファ62に保存された収集データ73を破棄する処理が行われ、その後、図14に示されている処理が終了する。
【0106】
S281では、ロギング設定データ42に含まれている収集動作設定情報52により示されている保存タイミングが到来したか否かを判定する処理が行われる。この判定処理において、保存タイミングが到来したと判定したとき(判定結果がYESのとき)にはS282に処理を進める。一方、この判定処理において、保存タイミングが到来しないと判定したとき(判定結果がNOのとき)には、S282の処理を行わずに、図14に示されている処理が終了する。
【0107】
S282では、今回実行中のロギング処理におけるS290の収集処理によりリングバッファ62に保存された収集データ73を読み出し、収集動作設定情報52で示されている保存先の外部記憶装置17にロギング収集データ70として保存する処理が行われる。
【0108】
ロギング収集データ70について更に説明する。図15は、ロギング収集データ70のデータ構造の一例を示している。
【0109】
ロギング収集データ70は、プロジェクトデータ情報51と、収集データ数71と、収集データサイズ72と、1以上の収集データ73とを含む。
【0110】
プロジェクトデータ情報51は、PLC1で実行されたユーザプログラムを特定する情報であり、例えば、ユーザプログラムをコンパイルして得られるオブジェクトコードに付された名称や、当該コンパイルの実行日時の情報を含む。つまり、ロギング収集データ70に含まれているプロジェクトデータ情報51は、ロギング設定データ42に含まれていたプロジェクトデータ情報51と同様のものである。CPU12は、S290の収集処理において、ロギング設定データ42からプロジェクトデータ情報51を読み出してロギング収集データ70に取り込む。
【0111】
収集データ数71は、ロギング収集データ70に含まれている収集データ73の個数を表している情報である。また、収集データサイズ72は、ロギング収集データ70に含まれている収集データ73の総データ量を表している情報である。
【0112】
ロギング収集データ70には、収集データ73として、収集された対象変数の値についてのデータが、当該値が収集された順序に従って含まれている。この収集データ73のデータ構造の一例が図16に示されている。
【0113】
図16の例では、収集データ73にはタイムスタンプの情報が含まれている。このタイムスタンプは、対象変数の値の収集が行われたときの時刻を表している。
【0114】
また、収集データ73には、収集タイミングカウンタ値の情報が含まれている。収集タイミングカウンタ64は、前述したS270の収集タイミング検知処理による検知回数、すなわち、対象変数の値の収集を行う収集タイミングが到来した回数をカウントするカウンタである。従って、収集タイミングカウンタ64は、収集タイミングが到来する度にカウント値が1ずつカウントアップされる。なお、図15のデータ構造例においては、収集データ73に含まれている収集タイミングカウンタ値は、「収集データ1」では「1」であり、「収集データ2」では「2」であり、「収集データN」では「N」であるとする。この収集タイミングカウンタ値の用途については後述する。
【0115】
更に、収集データ73には、「タイムスタンプ」の時刻において収集された対象変数のそれぞれの値を表すデータが、「変数データ1」、「変数データ2」、…、「変数データN」として含まれている。
【0116】
S282の処理では、ロギング設定データ42とリングバッファ62に保存された収集データとを用いて、このようなデータ構造を有するロギング収集データ70を作成して外部記憶装置17に保存する処理が行われる。
【0117】
その後、S282の処理が終了すると、図14に示されている処理が終了する。
【0118】
なお、図14にフローチャートで示したロギング処理が終了したときには、CPU12は、ロギング設定データ42を外部記憶装置17に更に保存する処理も行うようにする。このロギング設定データ42は、後述する収集データ73の表示の際に使用される。
【0119】
次に、図14におけるS290の収集処理について、図17に示したフローチャートを用いて更に詳細に説明する。
【0120】
まず、S291において、前述したS260の時刻管理処理により計時されている現在の時刻をタイムスタンプとして取得し、得られたタイムスタンプを収集データ73の先頭位置のデータとしてリングバッファ62に書き込む処理が行われる。
【0121】
次に、S292において、収集タイミングカウンタ64の現在のカウント値、すなわち、収集タイミングが到来した回数を取得し、収集データ73のタイムスタンプの書き込み位置に続けて、得られたカウント値をリングバッファ62に書き込む処理が行われる。
【0122】
S293では、対象変数それぞれの現在の値を取得し、収集データ73の収集タイミングカウンタ値の書き込み位置に続けて、取得した各値を、変数データとして、対象変数のそれぞれに対応づけられた所定の順序でリングバッファ62に書き込む処理が行われる。
【0123】
対象変数の値は、ロギング設定データ42の収集対象設定情報53に含まれている対象変数についてのメモリ種別、データ型、メモリアドレス、及びデータサイズの情報に基づいて特定される、プログラム使用領域14a上の位置で保持されている。従って、S293の処理では、この位置で保持されているデータを読み出すことによって、対象変数の値の取得が行われ、リングバッファ62への書き込みが行われる。
【0124】
次に、S294において、図14のS251の処理により計測を開始した今回のロギング処理の実行時間が、前述した最大処理時間内に収まっているか否かを判定する処理が行われる。この判定処理において、今回のロギング処理の実行時間が最大処理時間内に収まっていると判定されたとき(判定結果がYESのとき)にはS295に処理を進める。一方、この判定処理において、今回のロギング処理の実行時間が最大処理時間内に収まらなかったと判定されたとき(判定結果がNOのとき)には、今回の収集処理が終了する。なお、処理の高速化を目的として、このS294の処理を、次に説明するS295の判定処理における、対象変数の全てについて値の収集を済ませたと判定されたとき(判定結果がYESのとき)の後に行うようにしてもよい。
【0125】
S295では、ロギング設定データ42の収集対象設定情報53に情報が含まれていた対象変数の全てについて値の収集を済ませたか否かを判定する処理が行われる。この判定処理において、対象変数の全てについて値の収集を済ませたと判定されたとき(判定結果がYESのとき)には今回の収集処理が終了する。一方、この判定処理において、値の収集を済ませていない対象変数が残っていると判定されたとき(判定結果がNOのとき)にはS293へ処理を戻して、値の収集を済ませていない対象変数について、その値を収集する処理が行われる。
【0126】
以上の収集処理が終了すると、収集データ73のリングバッファ62への保存が完了し、続いて図14のS253の処理が行われる。
【0127】
次に、収集データ73に含まれている収集タイミングカウンタ値の用途について、図18及び図19を用いて説明する。
【0128】
図18及び図19に表されているS299の割り込み処理とは、例えば、図3のPLCシステム10においての入出力モジュール3の入出力リフレッシュや通信モジュール4からのメッセージ通信などに対応するための処理であって、優先度の高い処理である。PLC1の運転状況によっては、このような割り込み処理の実行によって、前述した最大処理時間内のロギング処理では全ての対象変数の値の収集が間に合わないことがある。
【0129】
このような割り込み処理が発生した場合でもロギング処理により全ての対象変数についての値の収集を行った場合の例を図18は表している。この図18の例では、S299の割り込み処理を実行すると共に全ての対象変数の値の収集をS250のロギング処理を実行した制御周期の制御処理では、システム処理が実行されなくなってしまったことを表している。従って、この制御周期では、PLC1自身の動作管理が不十分となり、結果として、ロギング処理がユーザプログラムの実行や外部機器の制御に影響を及ぼしてしまう可能性が考えられる。
【0130】
このような事態を防止するために、本実施形態のPLC1では、図14のS253及びS254の処理が実行される。この実行によって、図19で表現されているように、S250のロギング処理の実行時間が最大処理時間内に収まらない場合にはリングバッファ62の収集データ73を破棄してロギング処理を中断させるので、S240のシステム処理の実行時間が確保される。
【0131】
図19の下側部分では、ロギング処理の中断によって収集データ73が破棄されたときのリングバッファ62での収集データ73の格納状況を表している。より詳細には、「収集データN」に続く「収集データN+1」が破棄され、「収集データN+1」が破棄された制御周期に続く次の制御周期におけるロギング処理により、「収集データN」に続いて「収集データN+2」が格納された状況が表されている。
【0132】
このとき、外部記憶装置17に保存されるロギング収集データ70には、収集データ73として、「収集データN」と「収集データN+2」とがこの順序で配置されることとなる。ここで、「収集データN」及び「収集データN+2」に含まれる収集タイミングカウンタ値はそれぞれ「N」及び「N+2」であり、両者の差の値は「1」ではなく「2」となる。このように、ロギング収集データ70において連続して配置されている2つの収集データ73それぞれの収集タイミングカウンタ値の差が1よりも大きいことを検出することで、ロギング処理の中断により収集データ73が破棄されたことの検知が可能になる。
【0133】
<ロギングによる収集データの表示>
【0134】
次に、図3のPLCシステム10におけるPLC1により行われたロギング処理により得られた収集データ73を表示する手法について説明する。
【0135】
まず、収集データ73を表示する装置のハードウェア構成について説明する。図20は収集データ表示装置80のハードウェア構成例を示している。
【0136】
図20の構成例では、収集データ表示装置80は、CPU81、メモリ82、入力装置83、補助記憶装置84、表示装置85、及び記憶装置I/F86を備えている。これらの構成要素はいずれも内部バス87に接続されており、相互にデータの授受を行うことが可能である。
【0137】
CPU81は、例えば、メモリ82を利用して所定のプログラムを実行することにより、収集データの表示や収集データの波形表示、データ欠損時の不定値表示などの各種の表示を制御する機能を提供する。
【0138】
入力装置83は、例えば、キーボードやポインティングデバイス等であり、ユーザからの指示又は情報の入力に用いられる。
【0139】
補助記憶装置84は、磁気ディスク装置、光ディスク装置、光磁気ディスク装置等であり、例えば、ハードディスクドライブやフラッシュメモリであってもよい。収集データ表示装置80は、補助記憶装置84にプログラム及びデータを格納しておき、それらをメモリ82にロードして使用することができる。
【0140】
表示装置85は、例えば、ユーザへの問い合わせ又は指示や、処理結果の表示出力に用いられる。
【0141】
記憶装置I/F86は、メモリカード等の外部記憶装置17に対する各種のデータの読み出し処理を管理する。
【0142】
収集データ表示装置80は以上のハードウェア構成を有している。なお、このようなハードウェア構成は、一般的なコンピュータが有している標準的な構成であるので、このようなコンピュータを用いて収集データ表示装置80を構成するようにしてもよい。また、図3のPLCシステム10において支援装置30として機能させたPC2を更に用いて、収集データ表示装置80を構成するようにしてもよい。
【0143】
次に図21について説明する。図21は収集データ表示装置80の機能構成例を示した図である。
【0144】
図21において、外部記憶装置17には、前述したロギング収集データ70がPLC1によって保存されているものとする。図15及び図16を用いて説明したように、ロギング収集データ70には、PLC1が実行したS250のロギング処理により収集された対象変数の値を当該対象変数の値の収集時刻に対応付けた収集データ73が当該収集時刻順に並べられている。また、収集データ73には、当該収集時刻が到来した回数をカウントする収集タイミングカウンタ64の値が、当該収集時刻と当該収集時刻に収集された対象変数の値とに対応付けられて含まれている。
【0145】
図21の構成例では、収集データ表示装置80は、読み出し部91、表示部92、及び表示制御部93を備えている。
【0146】
読み出し部91は、ロギング収集データ70を外部記憶装置17から読み出す。
【0147】
表示部92は、外部記憶装置17から読み出したロギング収集データ70に基づいて、収集時刻と当該収集時刻に収集された対象変数の値とを関係付けて表示する。
【0148】
表示制御部93は、外部記憶装置17から読み出したロギング収集データ70からロギング処理の中断の痕跡を発見した場合に、当該中断による対象変数の値の欠損を示す表示を表示部92に更に表示させる。この欠損を示す表示では、当該欠損した対象変数の値がロギング処理により収集されていた収集時刻に対応付けて表示させる。なお、表示制御部93は、対象変数の値の欠損を示す表示として、例えば、対象変数の値が不定値であることを示す表示を、欠損した対象変数の値がロギング処理により収集された収集時刻に対応付けて、表示部92に表示させるようにしてもよい。
【0149】
このような対象変数の値の欠損を示す表示を行うことにより、ロギング処理の中断が生じたことをユーザに認識させることを可能にする。また、対象変数の値の表示において値の欠損を許容することで、ユーザアプリケーションの実行や機器の制御に影響を及ぼさない範囲でのロギングをPLC1に行わせることが可能になる。
【0150】
なお、表示制御部93は、例えば、外部記憶装置17から読み出したロギング収集データ70において連続して並べられている2つの収集データ73それぞれに含まれる収集タイミングカウンタ64の値の差分値に基づいて、当該中断の痕跡を発見してもよい。
【0151】
このような構成を備えている収集データ表示装置80によって行われる、収集データを表示する方法の一例について、図22を用いて更に詳細に説明する。
【0152】
収集データ表示装置80は、S310のプログラム表示処理、S320の波形表示処理、S330のロギングファイル解析・変換処理、及びS340の表示制御処理を行う。これらの各処理をCPU81に行わせるプログラムはエンジニアリングソフトウエアと称されることもある。
【0153】
S310のプログラム表示処理は、前述したプロジェクトデータ41に含まれるユーザプログラムを表示すると共に、ロギング収集データ70に含まれている収集データ73を用いて、当該ユーザプログラムについての対象変数の値を表示する処理である。なお、ここでは、プロジェクトデータ41は、例えばPC2において所定のプロジェクトデータ編集プログラムを実行することによりユーザによって既に作成されていて、例えば補助記憶装置84に既に記憶されているものとする。
【0154】
S320の波形表示処理は、ロギング収集データ70に含まれている収集データ73を用いて、収集時刻と対象変数の値との関係を波形によって表示する処理である。
【0155】
S330のロギングファイル解析・変換処理は、ロギング設定データ42とロギング収集データ70を解析して、収集データ73を、S310のプログラム表示処理とS320の波形表示処理とのそれぞれに対する入力データに変換する処理である。なお、ここでは、ロギング設定データ42及びロギング収集データ70は外部記憶装置17により提供されるものとする。ロギングファイル解析・変換処理では、これらのデータが外部記憶装置17から読み出されて使用される。
【0156】
S340の表示制御処理は、S330のロギングファイル解析・変換処理によって得られる、収集タイミングが対応付けられている対象変数の値をS310のプログラム表示処理とS320の波形表示処理とに提供する処理を含む。また、この表示制御処理は、プログラム表示処理と波形表示処理との表示を連動させる処理を含む。
【0157】
以下、収集データ表示装置80によって行われる、図22に示した各処理の詳細を更に説明する。
【0158】
まず、S310のプログラム表示処理の詳細について、図23を用いて説明する。
【0159】
図23で表されているように、S310のプログラム表示処理は、S311の操作UI処理と、S312の対象変数値表示制御処理と、S313のユーザプログラム表示処理とを含む。
【0160】
S311の操作UI処理は、収集データ表示装置80のユーザによる入力装置83に対する操作に応じた入力を受け付ける処理である。
【0161】
S312の対象変数値表示制御処理は、S311の操作UI処理により受け付けられた入力の情報や、S340の表示制御処理からの連動の情報を受け付けて、対象変数の値の表示を制御する処理である。
【0162】
S313のユーザプログラム表示処理は、プロジェクトデータ41に含まれるユーザプログラムを表示すると共に、S312の対象変数値表示制御処理による制御の下で、対象変数の値を、ユーザプログラムの表示上に表示させる処理である。
【0163】
ここで図24について説明する。図24は、収集データの表示画面の第1の例である。この表示画面は、CPU81がS310のプログラム表示処理を実行することによって表示装置85に表示される。
【0164】
図24の画面例は、S313のユーザプログラム表示処理により得られるユーザプログラム表示画面110に重ねて、S311の操作UI処理により得られるUI画面120が表示されている状態を表している。
【0165】
S313のユーザプログラム表示処理によって、プロジェクトデータ41に含まれているユーザプログラムの内容を表す図(例えばラダープログラム)が作成され、ユーザプログラム表示画面110として表示される。
【0166】
UI画面120は、収集タイミング毎に収集されている対象変数の値についての表示を順次更新させる指示を与えるコマ送りボタン121やシークバー122、表示させる対象変数の値の収集タイミングの時刻を直接入力する時刻入力欄123等を有している。なお、時刻入力欄123は、コマ送りボタン121やシークバー122への操作によって指定される収集タイミングの時刻を表示する表示欄としての機能も有している。
【0167】
S311の操作UI処理によって、コマ送りボタン121やシークバー122への操作に応じて指定された収集タイミングが取得され、このタイミングの時刻が時刻入力欄123に表示される。また、時刻の入力操作が時刻入力欄123に対して行われた場合には、この操作UI処理によって、入力された時刻が、指定した収集タイミングとして取得される。
【0168】
S312の対象変数値表示制御処理により、ロギング収集データ70において収集タイミングが対応付けられている対象変数の値や、S311の操作UI処理によって取得された収集タイミングの指定が取得される。なお、ロギング収集データ70はS330のロギングファイル解析・変換処理により取得されてS340の表示制御処理に送付されたものであり、対象変数値表示制御処理は、表示制御処理からロギング収集データ70の提供を受ける。また、この対象変数値表示制御処理により、指定された収集タイミングにおける対象変数の値がS313のユーザプログラム表示処理に送られ、ユーザプログラム表示処理により、当該対象変数の値についての表示が、ユーザプログラム表示画面110で行われる。
【0169】
図24の画面例において、ON/OFF表示111や変数表示112は、対象変数の値を表示するものである。
【0170】
ON/OFF表示111は、ONとOFFとのどちらかの状態を有するプログラム構成要素の当該状態が対象変数として選択されている場合に、変数の値で示される状態に応じた異なる色彩で当該要素を塗りつぶした表示を行って変数値を表すものである。図24の画面例では、ON/OFF表示111として、ユーザプログラム中の収集対象の要素が黒塗りで表示されているが、実際には、例えば、「ON」の場合には赤塗りで、また、「OFF」の場合には青塗りで当該要素が表示される。
【0171】
変数表示112は、プログラム構成要素に関する数値が対象変数として選択されている場合に、当該数値を変数値として直接表示するものである。
【0172】
以上のように、S311、S312、及びS313の処理によって、図24の画面例で表されているように、収集時刻と当該収集時刻に収集された対象変数の値とが関係付けされて表示装置85で表示される。
【0173】
また、S310のプログラム表示処理はS314の照合処理とS315の警告処理とを更に含む。
【0174】
S314の照合処理は、プロジェクトデータ41と、ロギング設定データ42と、ロギング収集データ70とのプロジェクトデータ情報51との照合を行う処理である。
【0175】
S315の警告処理は、S314の照合処理によって、各データのプロジェクトデータ情報51が一致しない場合に所定の警告を行う処理である。
【0176】
図25は、表示装置85に表示される警告画面の画面例を表している。S315の警告処理による所定の警告は、例えばこのような警告画面を表示装置85に表示することによって行われる。この画面例には、プロジェクトデータ情報51が一致しないことをユーザに警告する警告ダイアログ130が含まれている。なお、例えばユーザプログラムのデバッグを行う場合などには有益であるので、収集データ表示装置80では、プロジェクトデータ情報51が不一致であっても対象変数の値の表示の機能は利用可能としている。
【0177】
次に、S320の波形表示処理の詳細について、図26を用いて説明する。
【0178】
図26で表されているように、S320の波形表示処理は、S321の操作UI処理と、S322の対象変数値表示制御処理と、S323の波形作成処理とを含む。
【0179】
S321の操作UI処理は、S311の処理と同様の処理であり、収集データ表示装置80のユーザによる入力装置83に対する操作に応じた入力を受け付ける処理である。
【0180】
S322の対象変数値表示制御処理は、S312の処理と同様の処理であり、S321の操作UI処理により受け付けられた入力の情報や、S340の表示制御処理からの前述の連動の情報を受け付けて、対象変数の値の表示を制御する処理である。
【0181】
S323の波形作成処理は、S340の表示制御処理により提供される、収集タイミングが対応付けられている対象変数の値に基づいて、収集タイミングと当該対象変数との関係を表している波形を作成して表示する処理である。
【0182】
ここで図27について説明する。図27は、収集データの波形表示画面140の第1の例である。この波形表示画面140は、CPU81がS320の波形表示処理を実行することによって表示装置85に表示される。
【0183】
波形表示画面140に含まれている波形141は、S323の波形作成処理によって作成されたものである。なお、図27の画面例では、「変数1」、「変数2」、及び「変数3」のそれぞれについての波形141が、それぞれ実線、破線、及び一点鎖線を用いて表示されている。また、波形表示画面140に含まれている時刻表示142は、波形141により変数値との関係が表されている収集タイミングを表しており、S323の波形作成処理によって波形表示画面140に表示される。
【0184】
また、S321の操作UI処理によって、収集タイミングの範囲の移動指示が受け付けられると、S323の波形作成処理により、移動後の収集タイミングの範囲についての波形141が波形表示画面140に表示される。また、波形表示画面140に表示されている太線143によって示される収集タイミングの時刻が、S323の波形作成処理によって時刻表示欄144に表示される。
【0185】
S322の対象変数値表示制御処理により、S340の表示制御処理により提供されるロギング収集データ70において収集タイミングが対応付けられている対象変数の値が取得される。また、このS322の対象変数値表示制御処理により、時刻表示欄144に表示された収集タイミングの時刻が取得される。更に、この対象変数値表示制御処理により、取得された収集タイミングにおける対象変数の値が、波形141と太線143との交点の位置で表される対象変数の値として、変数値表示欄145に表示される。
【0186】
以上のように、S321、S322、及びS323の処理によって、図27の画面例で表されているように、収集時刻と当該収集時刻に収集された対象変数の値とが関係付けされて表示装置85で表示される。
【0187】
次に、S330のロギングファイル解析・変換処理の詳細について、図28を用いて説明する。
【0188】
図28で表されているように、S330のロギングファイル解析・変換処理は、S331のロギング設定データ取得処理、S332のロギング収集データ取得処理、S333の収集データ欠損判定処理、及び、S334の表示用データ作成処理を含んでいる。
【0189】
S331のロギング設定データ取得処理は、ロギング設定データ42を外部記憶装置17から取り込む処理である。
【0190】
S332のロギング収集データ取得処理は、ロギング収集データ70を外部記憶装置17から読み出して取り込む処理であり、図21に示した機能構成例における読み出し部91の機能を提供する処理である。
【0191】
S333の収集データ欠損判定処理は、外部記憶装置17から読み出したロギング収集データ70からロギング処理の中断の痕跡を発見する処理である。より具体的には、この収集データ欠損判定処理は、S332のロギング収集データ取得処理により取得されたロギング収集データ70に含まれている収集データ73を参照することによって、収集データ73の欠損が生じているかどうかを判定する処理である。
【0192】
S334の表示用データ作成処理は、S333の収集データ欠損判定処理によって欠損が生じていると判定された場合に、欠損していた収集データ73の代わりのデータとして、対象変数の値が不定値であることを示す欠損表示データを作成する処理である。
【0193】
次に図29について説明する。図29は、S330のロギングファイル解析・変換処理の処理内容を示したフローチャートである。
【0194】
図29において、まず、S401では、ロギング設定データ42とロギング収集データ70とを外部記憶装置17から読み出して取り込む処理が行われる。この処理は、図28におけるS331のロギング設定データ取得処理とS332のロギング収集データ取得処理とに相当する処理である。
【0195】
続くS402及びS403の処理は、図18及び図19を用いて説明した、ロギング処理の中断により収集データ73が破棄されたことの検知を、収集タイミングカウンタ値を用いて行う処理である。このS402及びS403の処理は、図28におけるS333の収集データ欠損判定処理に相当する処理である。
【0196】
まず、S402において、ロギング収集データ70において前述した順序で含まれている収集データ73を1つ取り出し、当該収集データ73と1つ前の順序の収集データ73とのそれぞれの収集タイミングカウンタ値の差分値を算出する処理が行われる。つまり、ロギング収集データ70において連続して並べられている2つの収集データ73それぞれに含まれる収集タイミングカウンタ64の値の差分値を算出する処理がS402において行われる。なお、取り出した収集データ73がロギング収集データ70における先頭のものである場合には、差分値は「1」とする。
【0197】
次に、S403において、S402の処理で算出された差分値が2以上であるか否か(すなわち1ではないか否か)を判定する処理が行われる。この判定処理において、差分値が2以上であると判定したとき(判定結果がYESのとき)には、収集データ73が破棄されて欠損しており、ロギング処理の中断の痕跡を発見したと判断してS404に処理を進める。一方、この判定処理において、差分値が2以上ではないと判定したとき(判定結果がNOのとき)には、S404の処理を実行せずにS405に処理を進める。
【0198】
S404では、欠損している収集データ73の代わりのデータとして前述の欠損表示データを作成し、ロギング収集データ70における、S402の処理で取り出した収集データ73と1つ前の順序の収集データ73との間に挿入する処理が行われる。
【0199】
このS404の処理により作成される欠損表示データの個数は、S402の処理で算出された差分値よりも1つ少なくする。また、作成される欠損表示データのデータ構造は、図16に示した収集データ73と同一の構造とし、対象変数のそれぞれの値として、不定値を示すデータ(例えばヌルデータ)を欠損表示データに配置する。
【0200】
S404の処理により作成される欠損表示データにおけるタイムスタンプの情報及び収集タイミングカウンタ値の情報には、それぞれの推定値が含まれようにする。すなわち、タイムスタンプの情報には、欠損している収集データ73に含まれているはずであった対象変数の値の収集が行われたと推定される時刻の情報が含まれるようにする。また、収集タイミングカウンタ値の情報には、欠損している収集データ73に含まれていたと推定される収集タイミングカウンタ値の情報が含まれるようにする。これらの推定値は、例えば、欠損表示データが挿入される前後の収集データ73のそれぞれに含まれている値を線形補間することによって得られる値とする。
【0201】
以上のS404の処理は、図28におけるS334の表示用データ作成処理に相当する処理である。
【0202】
S405では、S402の処理による収集データ73の取り出しの回数を計数する収集データ数カウントの値をインクリメントする(1増加させる)処理が行われる。
【0203】
S406では、収集データ数カウントの現在の値がロギング収集データ70に含まれている収集データ数71で示されている値に達したか否かを判定する処理が行われる。この判定処理において、収集データ数カウントの値が収集データ数71で示されている値に達したと判定したとき(判定結果がYESのとき)には、このロギングファイル解析・変換処理を終了する。一方、この判定処理において、収集データ数カウントの値が収集データ数71で示されている値には未だ達してはいないと判定したとき(判定結果がNOのとき)には、S402に処理を戻す。このときには、ロギング収集データ70から未だ取り出されていない残余の収集データ73についてS402以降の処理が行われる。
【0204】
以上の処理がS330のロギングファイル解析・変換処理である。
【0205】
次に、S340の表示制御処理の詳細について、図30を用いて説明する。
【0206】
図30で表されているように、S340の表示制御処理は、S341の変数値提供処理、S342の再生制御処理、及び、S343の収集データ取得処理を含む。
【0207】
S341の変数値提供処理は、S330のロギングファイル解析・変換処理により得られたロギング収集データ70を、収集タイミングが対応付けられている対象変数の値として、S310のプログラム表示処理とS320の波形表示処理とに提供する処理である。なお、提供されるロギング収集データ70には、ロギングファイル解析・変換処理により作成された欠損表示データが含まれている場合がある。
【0208】
S342の再生制御処理は、所定の連動の指示を受けると、S310のプログラム表示処理とS320の波形表示処理とを制御して、それぞれの処理により表示される画面の内容を連動させる処理である。この再生制御処理により、例えば、図24の画面例におけるUI画面120に対する操作により指定された収集タイミングと、図27の画面例における太線143によって示される収集タイミングとを同一の時刻とする処理が行われる。
【0209】
S343の収集データ取得処理は、S330のロギングファイル解析・変換処理により得られたロギング収集データ70を取得してS341の変数値提供処理に提供する処理である。
【0210】
以上のように、S340の表示制御処理によって、S330のロギングファイル解析・変換処理により得られたロギング収集データ70が、S310のプログラム表示処理とS320の波形表示処理とに提供される。このときに提供されるロギング収集データ70には前述した表示欠損データが含まれている場合がある。次に、この場合にプログラム表示処理と波形表示処理とが表示装置85にそれぞれ表示させる画面について説明する。
【0211】
まず図31について説明する。図31は、収集データの表示画面の第2の例であって、ロギング処理の中断の痕跡が発見された場合に、当該中断による対象変数の値の欠損を示す表示がユーザプログラム表示画面110に含まれている画面例である。
【0212】
図31の画面例を図24の画面例と比較すると分かるように、図31の画面例では、塗りつぶしが施されていないプログラム構成要素の表示が、ON/OFF不定表示113としてユーザプログラム表示画面110に含まれている。このON/OFF不定表示113は、ONとOFFとのどちらかの状態を有するプログラム構成要素の当該状態が対象変数として選択されており、且つ、当該対象変数の値が不定値であることがロギング収集データ70で示されている場合の表示である。
【0213】
また、図31の画面例では、プログラム構成要素に関する数値の表示として「???」なる表示が、ユーザプログラム表示画面110に変数不定値表示114として含まれている。この変数不定値表示114は、プログラム構成要素に関する数値が対象変数として選択されており、且つ、当該対象変数の値が不定値であることがロギング収集データ70で示されている場合の表示である。
【0214】
S311の操作UI処理によって取得された収集タイミングに対応付けられている表示欠損データがロギング収集データ70に含まれている場合には、このON/OFF不定表示113や変数不定値表示114がユーザプログラム表示画面110で表示される。この表示はS313のユーザプログラム表示処理によって行われる。
【0215】
次に図32について説明する。図32は、収集データの波形表示画面140の第2の例であって、ロギング処理の中断の痕跡が発見された場合に、当該中断による対象変数の値の欠損を示す表示が波形表示画面140に含まれている画面例である。
【0216】
図32の画面例を図27の画面例と比較すると分かるように、図32の画面例では、3つの対象変数のそれぞれについての波形141の一部を覆い隠す表示が、波形不定表示146として波形表示画面140に含まれている。この波形不定表示146は、選択されている対象変数の値が不定値であることがロギング収集データ70で示されている場合の表示である。
【0217】
表示欠損データがロギング収集データ70に含まれている場合には、波形表示画面140における収集タイミングに対応する位置に、このような波形不定表示146が波形141の代わりに表示される。この表示はS323の波形作成処理によって作成される。
【0218】
以上のように、S310のプログラム制御処理やS320の波形表示処理によって、図21に示した機能構成例における表示部92の機能が提供される。また、S330のロギングファイル解析・変換処理及びS340の表示制御処理によって、図21に示した機能構成例における表示制御部93の機能が提供される。この結果、収集データ表示装置80による、対象変数の値の欠損を示す表示を含む、ロギング処理により収集された対象変数の値の表示が行われる。
【0219】
以上、開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【符号の説明】
【0220】
1 PLC
2 PC
3 入出力モジュール
4 通信モジュール
6 通信ケーブル
7 通信バス
10 PLCシステム
11、26 通信I/F
12、21、81 CPU
13 バスコントローラ
14、22、82 メモリ
14a プログラム使用領域
15、86 記憶装置I/F
16、27、87 内部バス
17 外部記憶装置
23、83 入力装置
24、85 表示装置
25、84 補助記憶装置
30 支援装置
31 プログラム解析部
32 選択部
33 第1出力部
34 第2出力部
40 設定ツール
41 プロジェクトデータ
42 ロギング設定データ
51 プロジェクトデータ情報
52 収集動作設定情報
53 収集対象設定情報
61 処理実行部
62 リングバッファ
63 保存部
64 収集タイミングカウンタ
70 ロギング収集データ
71 収集データ数
72 収集データサイズ
73 収集データ
80 収集データ表示装置
91 読み出し部
92 表示部
93 表示制御部
100、120 UI画面
101 プログラム選択部
102 抽出変数表示部
103 対象変数表示部
104 登録ボタン
105 解除ボタン
106 一括登録ボタン
107 一括解除ボタン
108 収集データサイズ表示部
109 推定制御周期表示部
110 ユーザプログラム表示画面
111 ON/OFF表示
112 変数表示
113 ON/OFF不定表示
114 変数不定値表示
120 UI画面
121 コマ送りボタン
122 シークバー
123 時刻入力欄
130 警告ダイアログ
140 波形表示画面
141 波形
142 時刻表示
143 太線
144 時刻表示欄
145 変数値表示欄
146 波形不定表示
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
【手続補正書】
【提出日】2022-10-06
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
プログラマブルロジックコントローラであって、
外部機器から送られてくる入力データを取り込む入力処理、前記入力データを用いてユーザアプリケーションプログラムを実行するプログラム実行処理、前記ユーザアプリケーションプログラムの実行結果を出力して外部機器を制御する出力処理、前記プログラマブルロジックコントローラ自身の動作を管理するシステム処理、及び、前記ユーザアプリケーションプログラムにおいて使用されている変数の値を収集するロギング処理を含む制御処理のサイクルを繰り返し実行する処理実行部と、
前記ロギング処理による前記変数の値の収集時刻と前記収集時刻に収集された前記変数の値を対応付けた収集データを、前記変数の値を収集する度に保存するリングバッファと、
を備え
前記ロギング処理は、前記制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定して、前記実行時間が前記制御周期に収まらないと判定したサイクルの制御処理に含まれる前記ロギング処理において前記変数の値の収集を中断する処理として、前記実行時間が前記制御周期に収まらないと判定したサイクルの制御処理に含まれる前記ロギング処理おいて収集された前記変数の値を含む前記収集データを前記リングバッファから破棄する処理を含む、
ことを特徴とするプログラマブルロジックコントローラ。
【請求項2】
前記収集データには、前記収集時刻が到来した回数をカウントする収集タイミングカウンタの値が、前記収集時刻と前記収集時刻に収集された前記変数の値とに対応付けられて含まれていることを特徴とする請求項に記載のプログラマブルロジックコントローラ。
【請求項3】
前記リングバッファにおいて破棄されずに保存されている前記収集データを順次読み出して外部記憶装置に保存する保存部を更に備えることを特徴とする請求項に記載のプログラマブルロジックコントローラ。
【請求項4】
プログラマブルロジックコントローラであって、外部機器から送られてくる入力データを取り込む入力処理、前記入力データを用いてユーザアプリケーションプログラムを実行するプログラム実行処理、前記ユーザアプリケーションプログラムの実行結果を出力して外部機器を制御する出力処理、前記プログラマブルロジックコントローラ自身の動作を管理するシステム処理、及び、前記ユーザアプリケーションプログラムにおいて使用されている変数の値を収集するロギング処理を含む制御処理のサイクルを繰り返し実行する前記プログラマブルロジックコントローラの支援装置であって、
前記ユーザアプリケーションプログラムを解析して、前記ユーザアプリケーションプログラムにおいて使用されている変数を抽出するプログラム解析部と、
前記プログラム解析部により抽出された前記変数のうちから、前記ロギング処理による収集の対象とする変数を対象変数として選択する選択部と、
前記対象変数を特定する情報を前記プログラマブルロジックコントローラに対するロギング設定データとして出力する第1出力部と、
前記選択部により選択された前記対象変数の全てについて前記ロギング処理を実行した場合における前記制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定し、前記制御処理の前記実行時間が前記制御周期に収まらない場合に、注意情報を出力すると共に、前記選択部により選択された前記対象変数の全てについて前記ロギング処理を実行した場合における前記制御処理の1サイクルの実行に要すると推定される時間を推定制御周期として更に出力する第2出力部と、
を備えることを特徴とする支援装置。
【請求項5】
前記ロギング設定データは、前記対象変数を特定する情報として、前記プログラマブルロジックコントローラが備えているメモリ上の記憶領域であって、前記プログラマブルロジックコントローラにおいて前記ユーザアプリケーションプログラムが実行されたときに前記対象変数の値の保持に使用される前記記憶領域についての前記メモリ上の位置を特定する情報を含むことを特徴とする請求項に記載の支援装置。
【請求項6】
プログラマブルロジックコントローラであって、外部機器から送られてくる入力データを取り込む入力処理、前記入力データを用いてユーザアプリケーションプログラムを実行するプログラム実行処理、前記ユーザアプリケーションプログラムの実行結果を出力して外部機器を制御する出力処理、前記プログラマブルロジックコントローラ自身の動作を管理するシステム処理、及び、前記ユーザアプリケーションプログラムにおいて使用されている変数の値を収集するロギング処理を含む制御処理のサイクルを繰り返し実行する前記プログラマブルロジックコントローラによる前記ロギング処理によって収集された前記変数の値を表示する表示装置であって、
前記ロギング処理により収集された前記変数の値を前記変数の値の収集時刻に対応付けた収集データが前記収集時刻順に並べられているロギング収集データであって、前記プログラマブルロジックコントローラにより外部記憶装置に保存された前記ロギング収集データを前記外部記憶装置から読み出す読み出し部と、
前記外部記憶装置から読み出した前記ロギング収集データに基づいて、前記収集時刻と前記変数の値とを関係付けて表示する表示部と、
前記外部記憶装置から読み出した前記ロギング収集データから前記ロギング処理の中断の痕跡を発見した場合に、前記中断による前記変数の値の欠損を示す表示を、前記欠損した前記変数の値が前記ロギング処理により収集されていた収集時刻に対応付けて、前記表示部に更に表示させる表示制御部と、
を備えることを特徴とする表示装置。
【請求項7】
前記ロギング収集データにおいて並べられている前記収集データのそれぞれには、前記収集時刻が到来した回数をカウントする収集タイミングカウンタの値が、前記収集時刻と前記収集時刻に収集された前記変数の値とに対応付けられて含まれており、
前記表示制御部は、前記外部記憶装置から読み出した前記ロギング収集データにおいて連続して並べられている2つの前記収集データそれぞれに含まれる前記収集タイミングカウンタの値の差分値に基づいて、前記ロギング処理の中断の痕跡を発見する、
ことを特徴とする請求項に記載の表示装置。
【請求項8】
前記表示制御部は、前記変数の値の欠損を示す表示として、前記変数の値が不定値であることを示す表示を、前記欠損した前記変数の値が前記ロギング処理により収集された収集時刻に対応付けて、前記表示部に表示させることを特徴とする請求項又はに記載の表示装置。
【請求項9】
プログラマブルロジックコントローラが、
外部機器から送られてくる入力データを取り込む入力処理、前記入力データを用いてユーザアプリケーションプログラムを実行するプログラム実行処理、前記ユーザアプリケーションプログラムの実行結果を出力して外部機器を制御する出力処理、前記プログラマブルロジックコントローラ自身の動作を管理するシステム処理、及び、前記ユーザアプリケーションプログラムにおいて使用されている変数の値を収集するロギング処理を含む制御処理のサイクルを繰り返し実行し、
前記ロギング処理による前記変数の値の収集時刻と前記収集時刻に収集された前記変数の値を対応付けた収集データを、前記変数の値を収集する度に、前記プログラマブルロジックコントローラが備えるリングバッファに保存し、
前記ロギング処理の実行において、前記制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定して、前記実行時間が前記制御周期に収まらないと判定したサイクルの制御処理に含まれる前記ロギング処理において前記変数の値の収集を中断する処理として、前記実行時間が前記制御周期に収まらないと判定したサイクルの制御処理に含まれる前記ロギング処理おいて収集された前記変数の値を含む前記収集データを前記リングバッファから破棄する処理を実行する、
ことを特徴とするロギング方法。
【請求項10】
プログラマブルロジックコントローラであって、外部機器から送られてくる入力データを取り込む入力処理、前記入力データを用いてユーザアプリケーションプログラムを実行するプログラム実行処理、前記ユーザアプリケーションプログラムの実行結果を出力して外部機器を制御する出力処理、前記プログラマブルロジックコントローラ自身の動作を管理するシステム処理、及び、前記ユーザアプリケーションプログラムにおいて使用されている変数の値を収集するロギング処理を含む制御処理のサイクルを繰り返し実行する前記プログラマブルロジックコントローラの支援装置が行う支援方法であって、
前記ユーザアプリケーションプログラムを解析して、前記ユーザアプリケーションプログラムにおいて使用されている変数を抽出し、
抽出された前記変数のうちから、前記ロギング処理による収集の対象とする変数を対象変数として選択し、
前記対象変数を特定する情報を前記プログラマブルロジックコントローラに対するロギング設定データとして出力し、
選択された前記対象変数の全てについて前記ロギング処理を実行した場合における前記制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定し、
前記制御処理の前記実行時間が前記制御周期に収まらない場合に、注意情報を出力すると共に、選択された前記対象変数の全てについて前記ロギング処理を実行した場合における前記制御処理の1サイクルの実行に要すると推定される時間を推定制御周期として更に出力する
ことを特徴とする支援方法。
【請求項11】
プログラマブルロジックコントローラであって、外部機器から送られてくる入力データを取り込む入力処理、前記入力データを用いてユーザアプリケーションプログラムを実行するプログラム実行処理、前記ユーザアプリケーションプログラムの実行結果を出力して外部機器を制御する出力処理、前記プログラマブルロジックコントローラ自身の動作を管理するシステム処理、及び、前記ユーザアプリケーションプログラムにおいて使用されている変数の値を収集するロギング処理を含む制御処理のサイクルを繰り返し実行する前記プログラマブルロジックコントローラによる前記ロギング処理によって収集された前記変数の値を表示する表示装置が行う表示方法であって、
前記ロギング処理により収集された前記変数の値を前記変数の値の収集時刻に対応付けた収集データが前記収集時刻順に並べられているロギング収集データであって、前記プログラマブルロジックコントローラにより外部記憶装置に保存された前記ロギング収集データを前記外部記憶装置から読み出し、
前記外部記憶装置から読み出した前記ロギング収集データに基づいて、前記収集時刻と前記変数の値とを関係付けて表示し、
前記外部記憶装置から読み出した前記ロギング収集データから前記ロギング処理の中断の痕跡を発見した場合に、前記中断による前記変数の値の欠損を示す表示を、前記欠損した前記変数の値が前記ロギング処理により収集された収集時刻に対応付けて更に表示する、
ことを特徴とする表示方法。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0011
【補正方法】変更
【補正の内容】
【0011】
実施形態のひとつでは、プログラマブルロジックコントローラが処理実行部とリングバッファとを備える。処理実行部は、入力処理、プログラム実行処理、出力処理、システム処理、及び、ロギング処理を含む制御処理のサイクルを繰り返し実行する。入力処理は、外部機器から送られてくる入力データを取り込む処理である。プログラム実行処理は、当該入力データを用いてユーザアプリケーションプログラムを実行する処理である。出力処理は、当該ユーザプログラムの実行結果を出力して外部機器を制御する処理である。システム処理は、当該プログラマブルロジックコントローラ自身の動作を管理する処理である。ロギング処理は、当該ユーザアプリケーションプログラムにおいて使用されている変数の値を収集する処理である。リングバッファは、当該ロギング処理による変数の値の収集時刻と当該収集時刻に収集された変数の値を対応付けた収集データを、当該変数の値を収集する度に保存する。ロギング処理は、当該制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定して、当該実行時間が当該制御周期に収まらないと判定したサイクルの制御処理に含まれる当該ロギング処理において当該変数の値の収集を中断する処理として、当該実行時間が当該制御周期に収まらないと判定したサイクルの制御処理に含まれる当該ロギング処理おいて収集された変数の値を含む当該収集データをリングバッファから破棄する処理を含む。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0012
【補正方法】変更
【補正の内容】
【0012】
また、実施形態の別のひとつでは、上述した制御処理のサイクルを繰り返し実行するプログラマブルロジックコントローラの支援装置が、プログラム解析部、選択部、第1出力部、及び、第2出力部を備える。プログラム解析部は、ユーザアプリケーションプログラムを解析して、当該ユーザアプリケーションプログラムにおいて使用されている変数を抽出する。選択部は、プログラム解析部により抽出された当該変数のうちから、ロギング処理による収集の対象とする変数を対象変数として選択する。第1出力部は、当該対象変数を特定する情報を当該プログラマブルロジックコントローラに対するロギング設定データとして出力する。第2出力部は、選択部により選択された対象変数の全てについて当該ロギング処理を実行した場合における当該制御処理の1サイクルの実行時間が、予め設定されている制御周期に収まるかどうかを判定し、当該制御処理の当該実行時間が当該制御周期に収まらない場合に、注意情報を出力すると共に、選択部により選択された対象変数の全てについて当該ロギング処理を実行した場合における当該制御処理の1サイクルの実行に要すると推定される時間を推定制御周期として更に出力する