(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024154541
(43)【公開日】2024-10-31
(54)【発明の名称】情報処理システム、情報処理方法およびプログラム
(51)【国際特許分類】
G05B 19/05 20060101AFI20241024BHJP
G06F 11/32 20060101ALI20241024BHJP
【FI】
G05B19/05 L
G06F11/32 130
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023068402
(22)【出願日】2023-04-19
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】重森 弓束
(72)【発明者】
【氏名】玉嶋 大輔
(72)【発明者】
【氏名】大貫 はる奈
(72)【発明者】
【氏名】真鍋 美樹子
【テーマコード(参考)】
5B042
5H220
【Fターム(参考)】
5B042MC01
5B042MC07
5B042MC35
5H220AA04
5H220BB07
5H220CC03
5H220CX05
5H220JJ12
5H220JJ16
5H220JJ24
5H220JJ53
(57)【要約】
【課題】可視化対象の変数値を可視化するモジュールを容易に追加することが可能な情報処理システムを提供する。
【解決手段】情報処理システムは、PLCの制御状態を表す可視化対象の変数値を可視化する1以上の可視化モジュールと、対象期間においてPLCによって記録された時系列データセットに基づいて、対象期間におけるPLCの第1制御周期ごとの、PLCが保持していた変数値を順次再現する再現モジュールとを備える。1以上の可視化モジュールは、再現モジュールによって再現された変数値を可視化対象の変数値として取得する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
情報処理システムであって、
プログラマブルロジックコントローラの制御状態を表す可視化対象の変数値を可視化する1以上の可視化モジュールと、
対象期間において前記プログラマブルロジックコントローラによって記録された時系列データセットに基づいて、前記対象期間における前記プログラマブルロジックコントローラの第1制御周期ごとの、前記プログラマブルロジックコントローラが保持していた変数値を順次再現する再現モジュールとを備え、
前記1以上の可視化モジュールは、前記再現モジュールによって再現された前記変数値を前記可視化対象の変数値として取得する、情報処理システム。
【請求項2】
前記再現モジュールは、前記対象期間における対象の第1制御周期において前記プログラマブルロジックコントローラが保持していた前記変数値を再現してから規定時間だけ経過したタイミングにおいて、前記対象期間における前記対象の第1制御周期の次の第1制御周期において前記プログラマブルロジックコントローラが保持していた前記変数値を再現する、請求項1に記載の情報処理システム。
【請求項3】
前記時系列データセットは、前記対象期間における前記第1制御周期ごとの第1変数の値を示す第1時系列データと、前記対象期間における前記第1制御周期よりも長い第2制御周期ごとの第2変数の値を示す第2時系列データとを含み、
前記再現モジュールは、
前記第1時系列データから、前記対象の第1制御周期の前記第1変数の第1対象値を読み出し、
前記第2時系列データから、前記対象の第1制御周期以前であり、かつ、前記対象の第1制御周期に最も近い対象の第2制御周期の前記第2変数の第2対象値を読み出し、
前記第1対象値および前記第2対象値を、前記対象の第1制御周期において前記プログラマブルロジックコントローラが保持していた前記変数値として決定する、請求項2に記載の情報処理システム。
【請求項4】
前記第1時系列データは、前記対象期間における前記第1制御周期ごとの第1時刻をさらに示し、
前記第2時系列データは、前記対象期間における前記第2制御周期ごとの第2時刻をさらに示し、
前記再現モジュールは、テーブルを参照して、前記第1時系列データおよび前記第2時系列データから前記第1対象値および前記第2対象値をそれぞれ読み出し、
前記テーブルは、前記対象期間における前記第1制御周期ごとに、当該第1制御周期の序数を表すカウンタ値と、当該第1制御周期の前記第1時刻と、当該第1制御周期の前記第1時刻以前であり、かつ、当該第1制御周期の前記第1時刻に最も近い前記第2制御周期の前記第2時刻とを対応付け、
前記再現モジュールは、
前記規定時間が経過するたびに対象カウンタ値に1を加算し、
前記テーブルから、前記対象カウンタ値に対応する前記第1時刻および前記第2時刻を特定し、
前記第1時系列データから、特定された前記第1時刻に対応する前記第1変数の値を前記第1対象値として読み出し、
前記第2時系列データから、特定された前記第2時刻に対応する前記第2変数の値を前記第2対象値として読み出す、請求項3に記載の情報処理システム。
【請求項5】
前記規定時間は、前記第1制御周期と同じ時間、および、前記第1制御周期の時間を指定された倍率で割った時間から選択される、請求項2に記載の情報処理システム。
【請求項6】
前記1以上の可視化モジュールが前記再現モジュールによって再現された前記変数値を前記可視化対象の変数値として取得する第1モードと、前記1以上の可視化モジュールが前記プログラマブルロジックコントローラによって現在保持される変数値を前記可視化対象の変数値として取得する第2モードとを含む複数のモードの中から1つのモードを選択する選択部をさらに備える、請求項1から5のいずれか1項に記載の情報処理システム。
【請求項7】
プログラマブルロジックコントローラの制御状態を表す可視化対象の変数値を可視化する1以上の可視化モジュールを含む情報処理装置における情報処理方法であって、
対象期間において前記プログラマブルロジックコントローラによって記録された時系列データセットに基づいて、前記対象期間における前記プログラマブルロジックコントローラの第1制御周期ごとの、前記プログラマブルロジックコントローラが保持していた変数値を順次再現することと、
前記1以上の可視化モジュールが、再現された前記変数値を前記可視化対象の変数値として取得することとを備える、情報処理方法。
【請求項8】
プログラマブルロジックコントローラの制御状態を表す可視化対象の変数値を可視化する1以上の可視化モジュールを含むコンピュータに情報処理方法を実行させるプログラムであって、
前記情報処理方法は、
対象期間において前記プログラマブルロジックコントローラによって記録された時系列データセットに基づいて、前記対象期間における前記プログラマブルロジックコントローラの第1制御周期ごとの、前記プログラマブルロジックコントローラが保持していた変数値を順次再現することと、
前記1以上の可視化モジュールが、再現された前記変数値を前記可視化対象の変数値として取得することとを備える、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理システム、情報処理方法およびプログラムに関する。
【背景技術】
【0002】
生産設備の異常な動作の原因調査のために、生産設備を制御するプログラマブルロジックコントローラ(PLC)において収集された時系列データを記録し、記録された時系列データを可視化する技術が開発されている。
【0003】
例えば、特開2020-13528号公報(特許文献1)は、PLCにおいて収集された時系列の複数のデバイス値を保存する保存手段と、デバイス値を可視化する複数のソフトウェアモジュールとを有するエンジニアリングツールを開示している。特許文献1に開示のエンジニアリングツールは、履歴再生モードにおいて複数のソフトウェアモジュールにおける表示対象時刻を同期させる同期手段を備える。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に開示のエンジニアリングツールでは、同期手段は、複数のソフトウェアモジュールのうちのいずれか1つのソフトウェアモジュールにおいて表示対象時刻が更新されると、更新された表示対象時刻を残りのソフトウェアモジュールに反映させる。すなわち、複数のソフトウェアモジュール間において、表示対象時刻が交換される。そのため、デバイス値を可視化する新たなソフトウェアモジュールを追加する場合、ユーザは、当該新たなソフトウェアモジュールとの間で表示対象時刻の交換を行なうために既存のソフトウェアモジュールを改造する必要がある。その結果、新たなソフトウェアモジュールを追加する際の手間がかかる。
【0006】
本開示は、上記の問題に鑑みてなされたものであり、その目的は、可視化対象の変数値を可視化するモジュールを容易に追加することが可能な情報処理システム、情報処理方法およびプログラムを提供することである。
【課題を解決するための手段】
【0007】
本開示の一例によれば、情報処理システムは、プログラマブルロジックコントローラの制御状態を表す可視化対象の変数値を可視化する1以上の可視化モジュールと、対象期間においてプログラマブルロジックコントローラによって記録された時系列データセットに基づいて、対象期間におけるプログラマブルロジックコントローラの第1制御周期ごとの、プログラマブルロジックコントローラが保持していた変数値を順次再現する再現モジュールとを備える。1以上の可視化モジュールは、再現モジュールによって再現された変数値を可視化対象の変数値として取得する。
【0008】
この開示によれば、新たな可視化モジュールを追加する場合、ユーザは、可視化対象の変数値として再現モジュールによって再現された変数値を取得可能なように当該新たな可視化モジュールを設定すればよく、既存の可視化モジュールを改造する必要がない。そのため、ユーザは、新たな可視化モジュールを容易に追加できる。
【0009】
上述の開示において、再現モジュールは、対象期間における対象の第1制御周期においてプログラマブルロジックコントローラが保持していた変数値を再現してから規定時間だけ経過したタイミングにおいて、対象期間における対象の第1制御周期の次の第1制御周期においてプログラマブルロジックコントローラが保持していた変数値を再現する。
【0010】
この開示によれば、ユーザは、1以上の可視化モジュールによって可視化された情報を確認することにより、対象期間においてプログラマブルロジックコントローラが保持していた変数値の変化を把握できる。
【0011】
上述の開示において、時系列データセットは、対象期間における第1制御周期ごとの第1変数の値を示す第1時系列データと、対象期間における第1制御周期よりも長い第2制御周期ごとの第2変数の値を示す第2時系列データとを含む。再現モジュールは、第1時系列データから、対象の第1制御周期の第1変数の第1対象値を読み出す。再現モジュールは、第2時系列データから、対象の第1制御周期以前であり、かつ、対象の第1制御周期に最も近い対象の第2制御周期の第2変数の第2対象値を読み出す。再現モジュールは、第1対象値および第2対象値を、対象の第1制御周期においてプログラマブルロジックコントローラが保持していた変数値として決定する。
【0012】
この開示によれば、互いに異なる制御周期で値が更新される複数の変数が存在していたとしても、再現モジュールは、プログラマブルロジックコントローラが保持していた変数値を再現できる。
【0013】
上述の開示において、第1時系列データは、対象期間における第1制御周期ごとの第1時刻をさらに示す。第2時系列データは、対象期間における第2制御周期ごとの第2時刻をさらに示す。再現モジュールは、テーブルを参照して、第1時系列データおよび第2時系列データから第1対象値および第2対象値をそれぞれ読み出す。テーブルは、対象期間における第1制御周期ごとに、当該第1制御周期の序数を表すカウンタ値と、当該第1制御周期の第1時刻と、当該第1制御周期の第1時刻以前であり、かつ、当該第1制御周期の第1時刻に最も近い第2制御周期の第2時刻とを対応付ける。再現モジュールは、規定時間が経過するたびに対象カウンタ値に1を加算し、テーブルから、対象カウンタ値に対応する第1時刻および第2時刻を特定する。再現モジュールは、第1時系列データから、特定された第1時刻に対応する第1変数の値を第1対象値として読み出し、第2時系列データから、特定された第2時刻に対応する第2変数の値を第2対象値として読み出す。
【0014】
この開示によれば、互いに異なる制御周期で更新される複数の変数値の再現が容易に実現される。
【0015】
上述の開示において、規定時間は、第1制御周期と同じ時間、および、第1制御周期の時間を指定された倍率で割った時間から選択される。
【0016】
この開示によれば、規定時間が第1制御周期と同じ時間である場合、ユーザは、対象期間におけるプログラマブルロジックコントローラの制御状態の変化を、実際の変化速度と同じ速度で確認できる。また、規定時間が第1制御周期の時間を指定された倍率で割った時間である場合、ユーザは、対象期間におけるプログラマブルロジックコントローラの制御状態の変化を、実際の変化速度よりも速い速度で確認できる。
【0017】
上述の開示において、情報処理システムは、1以上の可視化モジュールが再現モジュールによって再現された変数値を可視化対象の変数値として取得する第1モードと、1以上の可視化モジュールがプログラマブルロジックコントローラによって現在保持される変数値を可視化対象の変数値として取得する第2モードとを含む複数のモードの中から1つのモードを選択する選択部をさらに備える。
【0018】
この開示によれば、ユーザは、1以上の可視化モジュールによって可視化される変数値を、プログラマブルロジックコントローラが現在保持する変数値と、再現モジュールによって再現された対象期間の変数値とに切り替えることができる。
【0019】
本開示の別の例によれば、情報処理方法は、プログラマブルロジックコントローラの制御状態を表す可視化対象の変数値を可視化する1以上の可視化モジュールを含む情報処理装置における情報処理方法である。情報処理方法は、対象期間においてプログラマブルロジックコントローラによって記録された時系列データセットに基づいて、対象期間におけるプログラマブルロジックコントローラの第1制御周期ごとの、プログラマブルロジックコントローラが保持していた変数値を順次再現することと、1以上の可視化モジュールが、再現された変数値を可視化対象の変数値として取得することとを備える。
【0020】
本開示のさらに別の例によれば、プログラムは、上記の情報処理方法をコンピュータに実行させる。
【0021】
これらの開示によっても、ユーザは、可視化対象の変数値を可視化するモジュールを容易に追加できる。
【発明の効果】
【0022】
本開示によれば、ユーザは、可視化対象の変数値を可視化するモジュールを容易に追加できる。
【図面の簡単な説明】
【0023】
【
図1】実施の形態に係る情報処理システムが適用される製造システムの一例を模式的に例示する図である。
【
図2】実施の形態に係る製造システムの全体構成の一例を示す模式図である。
【
図3】実施の形態に従うPLCのハードウェア構成の一例を示す模式図である。
【
図4】PCおよびPLCのソフトウェア構成の一例を示すブロック図である。
【
図5】再現PLCの再生操作を行なうための第1ウィンドウの一例を示す図である。
【
図6】時系列データ管理部の処理の一例を説明する図である。
【
図7】1以上の可視化モジュールによる可視化対象の変数値の取得先を切り替える方法を説明する図である。
【
図8】PLCシミュレーターの構成の一例を示す図である。
【
図9】プレイバックモードにおけるPCの処理の流れを示すフローチャートである。
【
図10】
図9に示すステップS3のサブルーチンの処理の流れを示すフローチャートである。
【
図11】
図9に示すステップS4のサブルーチンの処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0024】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。本明細書において、特に示さない限り、「または」の用語は、「または」の意味に加えて、「および」の意味を包含する。
【0025】
§1 適用例
図1は、実施の形態に係る情報処理システムが適用される製造システムの一例を模式的に例示する図である。
図1に示すように、製造システム1は、情報処理システム100と、プログラマブルロジックコントローラ(以下、「PLC200」と称する)と、1以上のフィールド機器300とを備える。
【0026】
PLC200は、1以上のフィールド機器300と接続され、予め作成された制御プログラムに従って1以上のフィールド機器300を制御する。1以上のフィールド機器300の各々は、生産設備または生産ラインなど(以下、「フィールド」とも総称する。)に対して何らかの物理的な作用を与えるアクチュエータ、フィールドに設置される各種のセンサ、またはフィールドとの間で情報を遣り取りする入出力装置などを含む。
【0027】
PLC200は、1以上のフィールド機器300との間で遣り取りされる各種の変数値を保持するメモリ206を有する。メモリ206に保持される変数値には、1以上のフィールド機器300の状態を示す各種の状態値と、1以上のフィールド機器300へ出力される各種の指令値とが含まれる。
【0028】
PLC200は、数100μsecオーダ~数10msecオーダの1以上の制御周期のうちのいずれかの制御周期で、メモリ206に保持される変数値を更新する。制御周期は、変数の種類に応じて予め設定される。例えば、PLC200は、メモリ206に保持される一部の変数の値を1msecで更新し、別の一部の変数の値を2msecで更新する。以下、1以上の制御周期のうち最短の制御周期を「第1制御周期」と称する。
【0029】
PLC200は、対象期間においてメモリ206に保持されていた変数値を記録することにより時系列データセット50を生成する。生成された時系列データセット50は、情報処理システム100に移動される。PLC200から情報処理システム100への時系列データセット50の移動は、特に限定されないが、例えばメモリカードなどの記憶媒体を用いて行なわれる。
【0030】
情報処理システム100は、1以上のコンピュータによって構成される。情報処理システム100は、1以上の可視化モジュール30と、再現モジュール40と、時刻指定モジュール45とを備える。
【0031】
1以上の可視化モジュール30は、PLC200の制御状態を表す可視化対象の変数値を画面上に可視化する。例えば、1以上の可視化モジュール30は、可視化対象の変数値の推移を示すグラフを含むウィンドウを示すデータを生成する可視化モジュールを含む。あるいは、1以上の可視化モジュール30は、制御プログラムを表すラダー図上に可視化対象の変数値が記述されたウィンドウを示すデータを生成する可視化モジュールを含んでもよい。
【0032】
再現モジュール40は、対象期間においてPLC200によって記録された時系列データセット50に基づいて、対象期間における第1制御周期ごとの、PLC200が保持していた変数値を順次再現する。以下、再現モジュール40によって再現された変数値を示すデータを「再現データ」と称する。
【0033】
再現モジュール40は、時刻制御モジュール41と、コントローラ制御状態再現機能42とを含む。
【0034】
時刻制御モジュール41は、対象期間のうち、変数値の再現対象となる対象時刻を制御する。時刻制御モジュール41は、時刻指定モジュール45から受けた再生開始点と再生条件とに基づいて、規定時間ごとに対象時刻を更新する。再生開始点は、対象期間に属する1つの時刻を示す。再生条件は、再生速度などを示し、上記の規定時間を定義付ける。
【0035】
コントローラ制御状態再現機能42は、規定時間ごとに、時系列データセット50から、対象時刻に対応するデータを抽出し、抽出したデータに基づいて、対象時刻においてPLC200が保持していた変数値を示す再現データを生成する。
【0036】
時刻指定モジュール45は、ユーザ入力に応じて、再生開始点および再生条件を決定し、決定した再生開始点および再生条件を再現モジュール40に出力する。
【0037】
1以上の可視化モジュール30は、再現データによって示される変数値を可視化対象の変数値として取得する。これにより、新たな可視化モジュールを追加する場合、ユーザは、可視化対象の変数値として再現モジュール40によって再現された変数値を取得可能なように当該新たな可視化モジュールを設定すればよく、既存の可視化モジュール30を改造する必要がない。そのため、ユーザは、新たな可視化モジュールを容易に追加できる。
【0038】
§2 具体例
<製造システムの全体構成>
図2は、実施の形態に係る製造システムの全体構成の一例を示す模式図である。
図2に示されるように、製造システム1は、情報処理システム100を構成するパーソナルコンピュータ(以下、「PC100A」と称する)と、PLC200と、1以上のフィールド機器300と、ネットワークカメラ400と、ネットワークストレージ500と、記憶媒体600とを備える。PC100A、PLC200、ネットワークカメラ400、およびネットワークストレージ500は、例えば汎用的なEthernet(登録商標)を用いて互いに通信可能である。なお、PC100AとPLC200とは、別の通信手段(例えば、Universal Serial Bus(USB))を用いて互いに通信してもよい。
【0039】
ネットワークカメラ400は、フィールドに設置され、1以上のフィールド機器300の少なくとも一部を撮影する。
【0040】
ネットワークストレージ500は、ネットワークカメラ400の撮影により生成された動画データ群を保存する。
【0041】
記憶媒体600は、PLC200からPC100Aへの時系列データセット50の持ち出しに利用される。記憶媒体600は、揮発性記憶媒体、不揮発性記憶媒体、CF(Compact Flash)もしくはSD(Secure Digital)などの汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)などの磁気記憶媒体、またはCD-ROM(Compact Disk Read Only Memory)などの光学記憶媒体を含む。
【0042】
PC100Aは、典型的には、汎用的なアーキテクチャを有しているコンピュータである。
図2に示されるように、PC100Aは、CPU(Central Processing Unit)またはMPU(Micro Processing Unit)などのプロセッサ101と、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)などの揮発性の記憶装置で構成されるメモリ102と、HDD(Hard Disk Drive)またはSSD(Solid State Drive)などの不揮発性の記憶装置で構成されるストレージ103と、入力インターフェイス104と、表示コントローラ105と、通信インターフェイス106と、リーダ/ライタ107とを含む。これらの各部は、バスを介して互いにデータ通信が可能なように接続されている。
【0043】
プロセッサ101は、ストレージ103に格納されたプログラムを読み出して、メモリ102に展開する。プロセッサ101は、展開されたプログラムを実行する。
【0044】
ストレージ103は、プロセッサ101によって実行されるプログラムと、メモリカードを用いてPLC200から持ち出された時系列データセット50と、ネットワークストレージ500から取得した動画データ55とを記憶する。
【0045】
プロセッサ101によって実行されるプログラムは、開発プログラム131と、ビューワープログラム132と、再現プログラム133とを含む。
【0046】
開発プログラム131は、主にPLC200が使用する制御プログラムの開発を支援する。さらに、開発プログラム131は、時系列データセット50の生成に関する設定機能と、PLC200による制御プログラムの実行状況をモニタリングする機能(以下、「制御プログラムモニタ機能」と称する)と、検索機能とを提供する。検索機能は、例えば、PLC200による制御プログラムの実行状況において、指定された変数が変化したタイミングを検索する機能を含む。
【0047】
ビューワープログラム132は、各種の情報を可視化してユーザに提供するためのプログラムである。ビューワープログラム132は、各種の変数値の推移を示す変数グラフを表示する機能(以下、「変数グラフ表示機能」と称する)と、動画データ55によって示される動画の再生機能とを提供する。
【0048】
ビューワープログラム132は、開発プログラム131が起動することにより、開発プログラム131と連結されてメモリ102に展開される。
【0049】
再現プログラム133は、PLC200の過去の制御状態を再現する。再現プログラム133は、制御状態が再現される対象時刻を管理する機能と、時系列データを管理する機能(以下、「データ管理機能」と称する)とを提供する。データ管理機能は、時系列データセット50から変数値を読み出す機能を含む。
【0050】
入力インターフェイス104は、プロセッサ101とキーボード、マウス、またはタッチパネルなどの入力装置110との間のデータ伝送を仲介する。表示コントローラ105は、ディスプレイ120と接続され、プロセッサ101によって生成された画面データによって示される画面をディスプレイ120に表示する。通信インターフェイス106は、通信ネットワークを介してPLC200およびネットワークストレージ500と通信する。リーダ/ライタ107は、プロセッサ101と外部の記憶媒体600との間のデータ伝送を仲介する。
【0051】
開発プログラム131、ビューワープログラム132および再現プログラム133の各々は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、任意のプログラムと協働して本実施の形態に従う処理が実現される。また、開発プログラム131、ビューワープログラム132および再現プログラム133によって提供される機能の一部または全部は、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)、またはFPGA(Field-Programmable Gate Array)によって実現されてもよい。
【0052】
<PLCのハードウェア構成>
図3は、実施の形態に従うPLCのハードウェア構成の一例を示す模式図である。
図3に示されるように、PLC200は、主たるコンポーネントとして、PLC200の各部に電力PWを供給する電源回路201と、CPU202と、チップセット204と、メモリ206と、ストレージ208と、USBコントローラ250と、フィールドネットワークコントローラ252と、ネットワークコントローラ254と、タイマ260と、リーダ/ライタ270とを含む。
【0053】
CPU202は、ストレージ208に格納されたプログラムを読出して、メモリ206に展開する。CPU202は、展開されたプログラムを実行する。
【0054】
メモリ206は、DRAMまたはSRAMなどの揮発性記憶装置で構成される。メモリ206は、上述したように、1以上のフィールド機器300からPLC200へ転送される状態値と、1以上のフィールド機器300へ出力される指令値とを含む各種の変数値を保持する。メモリ206に保持される各種の変数値は、ストレージ208に格納されるプログラムをCPU202が実行することにより、変数の種類に応じて予め設定された制御周期に従って更新される。
【0055】
ストレージ208は、例えば、HDD(Hard Disc Drive)、SSD(Solid State Drive)、またはフラッシュメモリなどの不揮発性記憶装置で構成されるが、一部は、揮発性ストレージで構成されてもよい。
【0056】
チップセット204は、CPU202と各コンポーネントとの間のデータの遣り取りを仲介することで、PLC200全体としての処理を実現する。
【0057】
ストレージ208には、PLC200の基本的な機能を実現するためのOS(Operating System)212およびスケジューラプログラム213を有するシステムプログラム211が格納される。
【0058】
さらに、ストレージ208は、PC100Aによって作成されたプログラムデータセット214を記憶する。プログラムデータセット214は、制御プログラムと、データ型定義データと、サンプリング設定データとを含む。
【0059】
制御プログラムは、1以上のフィールド機器300の状態を示す状態値を収集する処理と、収集された状態値に基づいた演算によって生成される、1以上のフィールド機器300への指令値を生成する処理とを定義する。状態値および指令値を含む変数値は、メモリ206に一時的に格納される。そのため、CPU202は、制御プログラムを実行することにより、メモリ206が保持する変数値を更新する。
【0060】
データ型定義データは、制御プログラムによって使用される各変数のデータ型を定義する。制御プログラムによって使用される変数には、1以上のフィールド機器300の状態を示す変数、および、1以上のフィールド機器300に出力される変数が含まれる。
【0061】
サンプリング設定データは、時系列データセット50の生成条件を定義する。時系列データセット50の生成条件は、サンプリングの開始条件、サンプリング対象となる変数、およびサンプリング時間などを示す。
【0062】
さらに、ストレージ208は、サンプリング設定データによって示される生成条件に従って生成された時系列データセット50を記憶する。
【0063】
USBコントローラ250は、USB接続を介して外部の装置(例えば、PC100A)との間のデータの遣り取りを担当する。
【0064】
フィールドネットワークコントローラ252は、フィールドネットワークに接続するコネクタ252aを有し、PLC200とフィールドネットワークを介した1以上のフィールド機器300との間のデータの遣り取りを制御する。フィールドネットワークコントローラ252は、フィールドネットワークから受信する入力データおよびPLC200からフィールドネットワークに出力される出力データを格納する内部バッファを有する。
【0065】
ネットワークコントローラ254は、上位ネットワークに接続するコネクタ254aを有し、PLC200と外部の装置(例えば、PC100A、ネットワークカメラ400またはネットワークストレージ500)との間のデータの遣り取りを制御する。
【0066】
タイマ260は、時間を計測するクロック回路またはカウンタ回路を含んで構成されるが、このような回路に限定されず、CPU202が実行するソフトウェアモジュールにより構成されてもよい。
【0067】
リーダ/ライタ270は、CPU202と外部の記憶媒体600との間のデータ伝送を仲介する。
【0068】
図3には、CPU202がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGA)を用いて実装してもよい。あるいは、PLC200の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、マルチコア技術を適用して処理を並列に実行してもよい。または、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0069】
<機能構成>
図4は、PCおよびPLCのソフトウェア構成の一例を示すブロック図である。
図4に示すように、PC100Aは、制御プログラム編集部11と、データ型定義編集部12と、データ型メモリマップ生成部13と、サンプリング設定部14と、ビルド処理部15と、再現PLC生成部16と、PLC通信制御部17と、再現PLC通信制御部18と、1以上の可視化モジュール30と、再現PLC40aと、再現PLCクロック操作部45aとを備える。
【0070】
制御プログラム編集部11、データ型定義編集部12、データ型メモリマップ生成部13、サンプリング設定部14、ビルド処理部15、および再現PLC生成部16は、
図2に示すプロセッサ101が開発プログラム131を実行することにより実現される。PLC通信制御部17は、開発プログラム131を実行するプロセッサ101および通信インターフェイス106によって実現される。再現PLC通信制御部18および再現PLC40aは、プロセッサ101が再現プログラム133を実行することにより実現される。再現PLCクロック操作部45aは、再現プログラム133を実行するプロセッサ101および入力インターフェイス104によって実現される。1以上の可視化モジュール30の各々は、プロセッサ101が開発プログラム131またはビューワープログラム132を実行することにより実現される。
【0071】
制御プログラム編集部11は、ユーザ入力に応じて、制御プログラムのソースコードの作成または編集を行なう。制御プログラムは、例えばラダープログラムであるが、これに限定されない。
【0072】
データ型定義編集部12は、ユーザ入力に応じて、制御プログラムによって使用される変数のデータ型を編集する。制御プログラムによって使用される変数には、1以上のフィールド機器300から収集される変数、制御プログラムの実行によって生成される変数(1以上のフィールド機器300に出力される変数)が含まれる。データ型定義編集部12は、各変数について編集されたデータ型を示すデータ型定義データを生成する。
【0073】
データ型メモリマップ生成部13は、ユーザ入力に応じて、配列要素または構造体メンバを有する変数について、各配列要素または構造体メンバのデータ型のサイズ、配列要素または構造体メンバの配置情報などを表すデータ型メモリマップ60を生成する。データ型メモリマップ60を用いることにより、任意の配列要素または構造体メンバの開始アドレスおよびサイズが特定され、任意の配列要素または構造体メンバの値が特定される。
【0074】
サンプリング設定部14は、ユーザ入力に応じて、時系列データセット50の生成条件を設定し、設定した生成条件を示すサンプリング設定データを生成する。時系列データセット50の生成条件は、上述したように、サンプリングの開始条件、サンプリング対象となる変数、およびサンプリング時間などを示す。サンプリングの開始条件は、例えば、特定の変数の値が第1値から第2値に変化するという条件である。サンプリングの開始条件が満たされることにより、時系列データセット50の生成が開始される。サンプリング対象となる変数は、制御プログラムによって使用される複数の変数の中から設定される。なお、制御プログラムによって使用される複数の変数の全てがサンプリング対象として設定されてもよいし、制御プログラムによって使用される複数の変数のうちの一部がサンプリング対象として設定されてもよい。サンプリング時間は、時系列データセット50の生成が開始されてから終了されるまでの期間であり、例えば10分間であるが、これに限定されない。
【0075】
ビルド処理部15は、制御プログラムのソースコードをビルドし、ソースコードからオブジェクトコードを生成する。ビルド処理部15は、生成されたオブジェクトコードの制御プログラムを含むプログラムデータセット214をPLC200に転送する。プログラムデータセット214には、オブジェクトコードの制御プログラムの他に、データ型定義編集部12によって生成されたデータ型定義データと、サンプリング設定部14によって生成されたサンプリング設定データとが含まれる。さらに、プログラムデータセット214とともに、データ型メモリマップ生成部13によって生成されたデータ型メモリマップ60もPLC200にインストールされる。
【0076】
再現PLC生成部16は、ユーザ入力に応じて、
図2に示す再現プログラム133を呼出し、再現PLC40aを生成するとともに、再現PLC40aの動作を開始させる。
【0077】
1以上の可視化モジュール30は、上述したように、PLC200の制御状態を表す可視化対象の変数値を画面上に可視化する。
【0078】
PLC通信制御部17は、PLC200との通信を制御する。PLC通信制御部17は、ユーザ入力に応じて、1以上の可視化モジュール30とPLC200とを通信接続する。
【0079】
再現PLC通信制御部18は、ユーザ入力に応じて、1以上の可視化モジュール30と再現PLC40aとを通信接続する。
【0080】
再現PLC40aは、
図1に示す再現モジュール40の一例であり、対象期間においてPLC200によって記録された時系列データセット50に基づいて、対象期間における第1制御周期ごとの、PLC200が保持していた変数値を順次再現する。再現PLC40aは、
図1に示す時刻制御モジュール41およびコントローラ制御状態再現機能42にそれぞれ対応するクロック管理部41aおよび時系列データ管理部42aを備える。
【0081】
クロック管理部41aは、対象期間における、変数値の再現対象となる対象時刻に対応する対象カウンタ値を管理する。対象カウンタ値は、第1制御周期の周期カウンタである。このため、対象カウンタ値は、変数値が再現される対象期間の開始時からの経過時間を表すことができる。
【0082】
クロック管理部41aは、再現PLCクロック操作部45aからの指示に応じて、対象カウンタ値の更新を行なう。具体的には、クロック管理部41aは、再現PLCクロック操作部45aから指示された再生開始カウンタ値を対象カウンタ値として設定し、その後、規定時間が経過するたびに対象カウンタ値に1を加算する。クロック管理部41aは、再現PLCクロック操作部45aから指示された再生条件に応じて規定時間を設定する。
【0083】
時系列データ管理部42aは、対象カウンタ値に対応する対象時刻のデータを時系列データセット50から抽出し、抽出したデータに基づいて、対象時刻においてPLC200のメモリ206に保持されていた変数値を再現する。これにより、時系列データ管理部42aは、規定時間だけ経過したタイミングにおいて、次の第1制御周期にPLC200に保持されていた変数値を再現する
なお、時系列データ管理部42aは、データ型メモリマップ60を用いて、変数の配列要素または構造体メンバの値を再現してもよい。
【0084】
再現PLCクロック操作部45aは、
図1に示す時刻指定モジュール45の一例である。再現PLCクロック操作部45aは、ユーザ入力に応じて、再生開始カウンタ値と再生条件とを設定し、設定した再生開始カウンタ値と再生条件とを再現PLC40aに出力する。
【0085】
図4に示されるように、PLC200は、プログラム実行部21と、データ収集部22とを備える。さらに、PLC200は、PC100Aから転送されたプログラムデータセット214とデータ型メモリマップ60とを記憶する。プログラム実行部21およびデータ収集部22は、
図3に示すCPU202がプログラムデータセット214に含まれる制御プログラムを実行することにより実現される。
【0086】
プログラム実行部21は、1以上のフィールド機器300の状態を示す状態値を収集するとともに、収集された状態値に基づいた演算によって1以上のフィールド機器300への指令値を生成する。
【0087】
プログラム実行部21は、変数の種類ごとに定められた制御周期に従って、
図3に示すメモリ206が保持する変数値を更新する。なお、プログラム実行部21は、メモリ206が保持する各変数値を更新する際、プログラムデータセット214に含まれるデータ型定義データに従って、各変数値が格納されるメモリ領域内の各ビットを更新する。さらに、配列要素または構造体メンバを有する変数について、プログラム実行部21は、当該変数のデータ型メモリマップ60に従って、各配列要素または各構造体メンバの値が格納されるメモリ領域内の各ビットを更新する。
【0088】
プログラム実行部21は、演算のために用いる変数について、データ型定義データに従って、当該変数に対応するメモリ領域内の各ビット値から当該変数値を読み出す。さらに、プログラム実行部21は、変数が有する配列要素または構造体メンバについて、当該変数のデータ型メモリマップ60を用いて、配列要素または構造体メンバの値を読み出す。
【0089】
データ収集部22は、プログラムデータセット214に含まれるサンプリング設定データによって示される生成条件(サンプリングの開始条件、サンプリング対象の変数およびサンプリング時間を含む)に従って、時系列データセット50を生成する。具体的には、データ収集部22は、サンプリングの開始条件が満たされたことに応じて、サンプリング対象の変数についてメモリ206が保持する変数値の記録を開始する。データ収集部22は、変数値の記録を開始してからサンプリング時間が経過すると、変数値の記録を終了し、記録を開始してから終了するまでの対象期間における時刻ごとの変数値を示す時系列データセット50を生成する。時系列データセット50は、PLC200からPC100Aに転送される。
【0090】
<再現PLCの操作画面>
図5は、再現PLCの再生操作を行なうための第1ウィンドウの一例を示す図である。
図5に示す第1ウィンドウ70は、再現PLCクロック操作部45a(
図4参照)として動作するプロセッサ101(
図2参照)によって生成され、表示コントローラ105によってディスプレイ120に表示される。
【0091】
第1ウィンドウ70は、カーソル71と、表示領域72と、再生ボタン群73と、再生速度入力欄74とを含む。
【0092】
カーソル71は、再現PLC40aによって変数値が再現される時刻(「再生位置」とも称される)を表す。再現PLC40aによって対象カウンタ値が更新されると、再現PLCクロック操作部45aは、対象カウンタ値に対応する位置にカーソル71を移動させる。さらに、再現PLCクロック操作部45aは、ユーザによるカーソル71の移動操作を受け付け、移動操作に応じてカーソル71の位置を移動させる。
【0093】
表示領域72には、カーソル71の位置に対応する時刻が表示される。そのため、カーソル71の移動に応じて、表示領域72に表示される時刻が更新される。
【0094】
再生ボタン群73は、再現PLC40aの再生に関する操作を入力するための複数のボタンを含む。具体的には、再生ボタン群73は、再生ボタン、停止ボタン、一時停止ボタン、最初に移動するためのボタン、または最後に移動するためのボタンなどを含む。
【0095】
再生速度入力欄74は、再生速度の入力のために使用される。再現PLCクロック操作部45aは、再生速度入力欄74のプルダウンボタンが操作されたことに応じて、複数の再生速度の一覧を表示する。再現PLCクロック操作部45aは、一覧の中からユーザによって選択された再生速度を再生速度入力欄74に表示する。なお、
図5に示す例では、再生速度は倍率によって表される。そのため、以下では、「再生速度」を「倍率」として表記する。
【0096】
再現PLCクロック操作部45aは、第1ウィンドウ70の再生ボタン群73へのユーザ入力に応じて、再生開始カウンタ値と再生条件とを設定し、設定した再生開始カウンタ値と再生条件とを再現PLC40aに出力する。
【0097】
具体的には、再現PLCクロック操作部45aは、再生ボタン群73に含まれるいずれかのボタンが操作されると、カーソル71の位置に対応するカウンタ値を再生開始カウンタ値として設定する。例えば、再現PLCクロック操作部45aは、再生ボタンが操作されると、カーソル71の現在位置に対応するカウンタ値を再生開始カウンタ値として設定する。再現PLCクロック操作部45aは、最初に移動するためのボタンが操作されると、カーソル71を対象期間の先頭の位置に移動させた後に、当該先頭の位置に対応するカウンタ値を再生開始カウンタ値として設定する。
【0098】
さらに、再現PLCクロック操作部45aは、再生ボタン群73のうち操作されたボタンの種類、および、再生速度入力欄74に入力されている倍率に従って、再生条件を設定する。例えば、再現PLCクロック操作部45aは、再生ボタンまたは最初に移動するためのボタンが操作された場合、再生速度入力欄74に入力されている倍率を示すように再生条件を設定する。再現PLCクロック操作部45aは、一時停止ボタンが操作された場合、再生速度「0」を示す再生条件を設定する。
【0099】
停止ボタンが操作された場合も、再現PLCクロック操作部45aは、再生速度「0」を示す再生条件を設定する。あるいは、停止ボタンが操作された場合、再現PLCクロック操作部45aは、変数値の再現処理を停止するように再現PLC40aに指示してもよい。
【0100】
再現PLC40aのクロック管理部41aは、再現PLCクロック操作部45aから受けた再生開始カウンタ値および再生条件に従って、対象カウンタ値の更新を行なう。具体的には、クロック管理部41aは、再生開始カウンタ値を対象カウンタ値として設定する。さらに、クロック管理部41aは、再生条件に応じて規定時間を設定する。例えば、再生条件として倍率「×1.0」が設定された場合、クロック管理部41aは、第1制御周期と同じ時間を規定時間として設定する。再生条件として倍率「×2.0」が設定された場合、クロック管理部41aは、第1制御周期を2で割った時間を規定時間として設定する。このように、クロック管理部41aは、第1制御周期を再生条件が示す倍率で割った時間を規定時間として設定する。
【0101】
なお、再生条件として再生速度「0」が設定された場合、クロック管理部41aは、対象カウント値の更新を停止する。
【0102】
<時系列データ管理部の処理例>
図6は、時系列データ管理部の処理の一例を説明する図である。
図6には、対象期間における第1制御周期ごとの変数値を示す時系列データ51と、対象期間における第2制御周期(>第1制御周期)ごとの変数値を示す時系列データ52とを含む時系列データセット50に対する処理の例が示される。時系列データ51は第1時系列データの一例であり、時系列データ52は第2時系列データの一例である。
【0103】
PLC200は、第1制御周期ごとに変数「IntVar-A」,「BoolVar-A」の値を更新する。
図6に示す例では、PLC200は、対象期間に含まれる時刻T1,T2,T3,T4,・・・において、変数「IntVar-A」,「BoolVar-A」の値を更新する。時刻Tkと時刻Tk+1との時間差は第1制御周期である。PLC200は、第1制御周期ごとに値が更新される変数について、時系列データ51を生成する。すなわち、時系列データ51は、時刻T1,T2,T3,T4,・・・の各々における変数「IntVar-A」,「BoolVar-A」の値を示す。
【0104】
PLC200は、第2制御周期ごとに変数「IntVar-B」,「BoolVar-B」の値を更新する。
図6に示す例では、PLC200は、時刻t1,t2,t3,・・・において、変数「IntVar-B」,「BoolVar-B」の値を更新する。時刻tkと時刻tk+1との時間差は第2制御周期である。PLC200は、第2制御周期ごとに値が更新される変数について、時系列データ52を生成する。すなわち、時系列データ52は、時刻t1,t2,t3,・・・の各々における変数「IntVar-B」,「BoolVar-B」の値を示す。
【0105】
このようにして、PLC200は、対象期間における第1制御周期ごとの変数値を示す時系列データ51と、対象期間における第2制御周期ごとの変数値を示す時系列データ52とを含む時系列データセット50を生成する。時系列データセット50は、PC100Aに転送される。
【0106】
時系列データ管理部42aは、時系列データセット50を解析して、ルックアップテーブル43を作成する。ルックアップテーブル43は、対象期間における第1制御周期ごとに、当該第1制御周期の序数を表すカウンタ値と、当該第1制御周期の第1時刻と、当該第1制御周期の第1時刻以前であり、かつ、当該第1制御周期の第1時刻に最も近い第2制御周期の第2時刻とを対応付ける。カウンタ値が0から始まる場合、例えば、ルックアップテーブル43は、カウンタ値「2」と、3番目の第1制御周期の時刻T3と、時刻T3以前であり、かつ、時刻T3に最も近い第2制御周期(1番目の第2制御周期)の時刻t1とを対応付ける。
【0107】
時系列データ管理部42aは、ルックアップテーブル43から、クロック管理部41aから受ける対象カウンタ値に対応する第1時刻および第2時刻を特定する。時系列データ管理部42aは、時系列データ51から、特定された第1時刻に対応する変数値を読み出す。時系列データ管理部42aは、時系列データ52から、特定された第2時刻に対応する変数値を読み出す。時系列データ管理部42aは、読み出した変数値を、対象期間における対象カウンタ値に対応する第1制御周期においてPLC200が保持していた変数値として再現する。
【0108】
例えば、対象カウンタ値が「2」である場合、時系列データ管理部42aは、ルックアップテーブル43から、対象カウンタ値に対応する第1時刻および第2時刻として時刻T3,t1をそれぞれ特定する。時系列データ管理部42aは、時系列データ51のうち、時刻T3に対応する変数「intVar-A」,「BoolVar-A」の値「3」,「T]を読み出す。時系列データ管理部42aは、時系列データ52のうち、時刻t1に対応する変数「intVar-B」,「BoolVar-B」の値「10」,「T]を読み出す。時系列データ管理部42aは、読み出した変数値を、対象期間における3番目の第1制御周期においてPLC200が保持していた変数値として再現する。
【0109】
<モードの切り替え>
図7は、1以上の可視化モジュールによる可視化対象の変数値の取得先を切り替える方法を説明する図である。
図7に示されるように、PC100Aは、1以上の可視化モジュール30として、プログラム表示モジュール30aと、波形表示モジュール30bと、トラブルシュート表示モジュール30cとを備える。さらに、PC100Aは、動画再生モジュール32と、データアクセサ19とを備える。プログラム表示モジュール30aおよびトラブルシュート表示モジュール30cは、
図2に示すプロセッサ101が開発プログラム131を実行することにより実現される。波形表示モジュール30bおよび動画再生モジュール32は、プロセッサ101がビューワープログラム132を実行することにより実現される。データアクセサ19は、開発プログラム131または再現プログラム133を実行するプロセッサ101および通信インターフェイス106によって実現される。
【0110】
プログラム表示モジュール30aは、PLC200による制御プログラムの実行状況をモニタリングし、モニタリングした結果を含む第2ウィンドウのデータを生成する。第2ウィンドウは、ディスプレイ120に表示される。
【0111】
波形表示モジュール30bは、各種の変数値の推移を示す変数グラフを含む第3ウィンドウのデータを生成する。第3ウィンドウは、ディスプレイ120に表示される。
【0112】
トラブルシュート表示モジュール30cは、制御プログラム内で発生したエラーが時系列に可視化された第4ウィンドウのデータを生成する。第4ウィンドウには、制御プログラムの名前、タスク、エラー位置、エラー番号等が示される。
【0113】
動画再生モジュール32は、ネットワークカメラ400によって撮影された動画が再生される第5ウィンドウのデータを生成する。第5ウィンドウは、ディスプレイ120に表示される。
【0114】
第2~第5ウィンドウは、ディスプレイ120において並べて表示されてもよい。あるいは、第2~第5ウィンドウのうちユーザによって選択された1以上のウィンドウのみがディスプレイ120に表示されてもよい。また、後述するプレイバックモードでは、第2~第5ウィンドウに加えて、
図5に示す第1ウィンドウ70もディスプレイ120に表示される。
【0115】
データアクセサ19は、複数のモードの中から1つのモードを選択する選択部の一例であり、ユーザ入力に応じて、プログラム表示モジュール30a、波形表示モジュール30bおよびトラブルシュート表示モジュール30cの接続先を切り替える。データアクセサ19が有する複数のモードには、第1モードに相当するプレイバックモードと、第2モードに相当するリアルタイムモードと、シミュレーションモードと、オフラインモードとが含まれる。プレイバックモードは、1以上の可視化モジュール30が再現PLC40aによって再現される変数値を可視化対象の変数値として取得するモードである。リアルタイムモードは、1以上の可視化モジュール30がPLC200によって現在保持される変数値を可視化対象の変数値として取得するモードである。シミュレーションモードは、1以上の可視化モジュール30がPLCシミュレーターによって生成される変数値を可視化対象の変数値として取得するモードである。オフラインモードは、1以上の可視化モジュール30が変数値を可視化しないモードである。
【0116】
データアクセサ19は、プレイバックモードへの切り替え指示を受けると、プログラム表示モジュール30a、波形表示モジュール30bおよびトラブルシュート表示モジュール30cの接続先を再現PLC40aに切り替える。これにより、プログラム表示モジュール30a、波形表示モジュール30bおよびトラブルシュート表示モジュール30cは、データアクセサ19を介して、再現PLC40aによって再現されている変数値を可視化対象の変数値として取得できる。
【0117】
なお、プレイバックモードにおいて、動画再生モジュール32は、対象期間の撮影により得られる動画データ55によって示される動画を再生する。動画再生モジュール32は、再現PLC40aのクロック管理部41aによって管理される対象カウンタ値に対応する時刻のフレームを第5ウィンドウに表示させる。
【0118】
データアクセサ19は、リアルタイムモードへの切り替え指示を受けると、プログラム表示モジュール30a、波形表示モジュール30bおよびトラブルシュート表示モジュール30cの接続先をPLC200に切り替える。これにより、プログラム表示モジュール30a、波形表示モジュール30bおよびトラブルシュート表示モジュール30cは、データアクセサ19を介して、PLC200のメモリ206に現在保持されている変数値を可視化対象の変数値として取得できる。
【0119】
なお、リアルタイムモードにおいて、動画再生モジュール32は、ネットワークカメラ400のリアルタイム映像を第5ウィンドウに表示させる。
【0120】
データアクセサ19は、シミュレーションモードへの切り替え指示を受けると、プログラム表示モジュール30a、波形表示モジュール30bおよびトラブルシュート表示モジュール30cの接続先をPLCシミュレーター700に切り替える。これにより、プログラム表示モジュール30a、波形表示モジュール30bおよびトラブルシュート表示モジュール30cは、データアクセサ19を介して、PLCシミュレーター700の仮想メモリ702に現在保持されている変数値を可視化対象の変数値として取得できる。
【0121】
データアクセサ19は、オフラインモードへの切り替え指示を受けると、プログラム表示モジュール30a、波形表示モジュール30bおよびトラブルシュート表示モジュール30cをPLC200、再現PLC40aおよびPLCシミュレーター700のいずれにも接続させない。
【0122】
図8は、PLCシミュレーターの構成の一例を示す図である。PLCシミュレーター700は、典型的には汎用のコンピュータによって実現される。
図8に示されるように、PLCシミュレーター700は、PLCロジックエミュレーター704と、PLCメモリエミュレーター706とを含む。さらに、PLCシミュレーター700には、
図4に示すプログラムデータセット214に含まれる制御プログラム214aがインストールされる。
【0123】
PLCロジックエミュレーター704は、制御プログラム214aに従ったPLC200の動作をエミュレートする。
【0124】
PLCメモリエミュレーター706は、制御プログラム214aに従って動作するPLC200のメモリ206を模倣した仮想メモリ702を生成する。
【0125】
対象期間においてPLC200に入力されたデータをPLCシミュレーター700に入力することにより、対象期間におけるPLC200のメモリ206に保持される変数値を再現させることが考えられる。しかしながら、PLCシミュレーター700ではPLC200の外部機器のシミュレーションが実施されない。すなわち、PLCシミュレーター700は、外部機器からのフィードバックデータをシミュレーションできない。そのため、PLCシミュレーター700は、対象期間におけるPLC200のメモリ206に保持される変数値を精度良く再現できない。
【0126】
これに対し、再現PLC40aは、時系列データセット50を用いて、対象期間において第1制御周期ごとにPLC200のメモリ206に保持されていた変数値を再現できる。この変数値には、外部機器からのフィードバック値を含め、PLC200と共に動作する周辺機器からの全ての入力値が含まれる。そのため、1以上の可視化モジュール30の接続先を再現PLC40aに切り替えることにより、ユーザは、対象期間におけるPLC200の状態を1以上の可視化モジュール30を用いて確認できる。
【0127】
<プレイバックモードにおけるPCの処理の流れ>
図9は、プレイバックモードにおけるPCの処理の流れを示すフローチャートである。まず、ステップS1において、PC100Aのプロセッサ101は、プレイバックモードの開始指示を受け付ける。
【0128】
次にステップS2において、データアクセサ19は、1以上の可視化モジュール30の接続先を再現PLC40aに設定する。ステップS2の後、ステップS3とステップS4との並列処理が実行される。
【0129】
ステップS3において、再現PLC40aは、対象期間において第1制御周期ごとにPLC200が保持していた変数値を再現する。
【0130】
ステップS4において、1以上の可視化モジュール30は、再現PLC40aから可視化対象の変数値(つまり、再現された変数値)を取得し、取得した変数値を可視化する。ステップS3,S4の後、プロセッサ101は、処理を終了する。
【0131】
図10は、
図9に示すステップS3のサブルーチンの処理の流れを示すフローチャートである。
【0132】
ステップS31において、クロック管理部41aは、
図5に示す第1ウィンドウ70へのユーザ入力に応じて設定された再生開始カウンタ値を対象カウンタ値として設定する。
【0133】
次のステップS32において、時系列データ管理部42aは、ルックアップテーブル43を用いて、対象カウンタ値を、時系列データセット50に含まれる各時系列データの対象時刻に変換する。
【0134】
次のステップS33において、時系列データ管理部42aは、時系列データセット50に含まれる各時系列データにアクセスし、対象時刻の変数値を取得する。
【0135】
次のステップS34において、クロック管理部41aは、最新の対象カウンタ値を設定してから規定時間経過したか否かを判断する。規定時間は、
図5に示す第1ウィンドウ70へのユーザ入力に応じて予め設定される。規定時間経過していない場合(ステップS34でNO)、処理はステップS34に戻る。
【0136】
規定時間経過した場合(ステップS34でYES)、クロック管理部41aは、ステップS35において、対象カウンタ値を1だけ進める。
【0137】
次のステップS36において、時系列データ管理部42aは、対象カウンタ値がルックアップテーブル43に存在するか否かを判断する。
【0138】
対象カウンタ値がルックアップテーブル43に存在する場合(ステップS36でYES)、処理はステップS32に戻る。
【0139】
対象カウンタ値がルックアップテーブル43に存在しない場合(ステップS36でYES)、データアクセサ19は、ステップS37において、1以上の可視化モジュール30をオフラインモードに切り替える。ステップS37の後、ステップS3の処理は終了する。
【0140】
図11は、
図9に示すステップS4のサブルーチンの処理の流れを示すフローチャートである。
【0141】
ステップS41において、1以上の可視化モジュール30は、変数取得リクエストをデータアクセサ19に発行する。
【0142】
次のステップS42において、データアクセサ19は、変数取得リクエストを再現PLC40aに発行する。
【0143】
次のステップS43において、データアクセサ19は、再現PLC40aから再現された変数値を取得する。これにより、1以上の可視化モジュール30は、再現された変数値を取得する。
【0144】
次のステップS44において、1以上の可視化モジュール30は、取得した変数値を可視化する。
【0145】
次のステップS45において、データアクセサ19は、オフラインモードに切り替えられたか否かを判断する。
【0146】
オフラインモードに切り替えられていない場合(ステップS45でNO)、1以上の可視化モジュール30は、ステップS46において、最新の変数取得リクエストを発行してから予め定められたモニタリング周期が経過したか否かを判断する。モニタリング周期は、例えば100msであるが、これに限定されない。
【0147】
モニタリング周期が経過していない場合(ステップS46でNO)、処理はステップS45に戻る。モニタリング周期が経過した場合(ステップS46でYES)、処理はステップS41に戻る。
【0148】
オフラインモードに切り替えられた場合(ステップS45でYES)、ステップS4の処理は終了する。これにより、1以上の可視化モジュール30は、変数値の可視化を終了する。
【0149】
<変形例>
上記の説明では、情報処理システム100が1つのPC100Aによって構成されるものとした。しかしながら、情報処理システム100は、複数のコンピュータによって構成されてもよい。例えば、情報処理システム100は、1以上の可視化モジュール30を実現する第1コンピュータと、再現モジュール40および時刻指定モジュール45を実現する第2コンピュータとによって構成されてもよい。
【0150】
あるいは、情報処理システム100は、クラウド上の仮想マシン等、汎用的なPC以外のハードウェア環境によって構成されてもよい。
【0151】
§3 付記
以上のように、本実施の形態は以下のような開示を含む。
【0152】
(構成1)
情報処理システム(100,100A)であって、
プログラマブルロジックコントローラ(200)の制御状態を表す可視化対象の変数値を可視化する1以上の可視化モジュール(30,30a~30c,101)と、
対象期間において前記プログラマブルロジックコントローラ(200)によって記録された時系列データセット(50)に基づいて、前記対象期間における前記プログラマブルロジックコントローラ(200)の第1制御周期ごとの、前記プログラマブルロジックコントローラ(200)が保持していた変数値を順次再現する再現モジュール(40,40a,101)とを備え、
前記1以上の可視化モジュール(30,30a~30c,101)は、前記再現モジュール(40,40a,101)によって再現された前記変数値を前記可視化対象の変数値として取得する、情報処理システム(100,100A)。
【0153】
(構成2)
前記再現モジュール(40,40a,101)は、前記対象期間における対象の第1制御周期において前記プログラマブルロジックコントローラ(200)が保持していた前記変数値を再現してから規定時間だけ経過したタイミングにおいて、前記対象期間における前記対象の第1制御周期の次の第1制御周期において前記プログラマブルロジックコントローラ(200)が保持していた前記変数値を再現する、構成1に記載の情報処理システム(100,100A)。
【0154】
(構成3)
前記時系列データセット(50)は、前記対象期間における前記第1制御周期ごとの第1変数の値を示す第1時系列データ(51)と、前記対象期間における前記第1制御周期よりも長い第2制御周期ごとの第2変数の値を示す第2時系列データ(52)とを含み、
前記再現モジュールは、
前記第1時系列データ(51)から、前記対象の第1制御周期の前記第1変数の第1対象値を読み出し、
前記第2時系列データ(52)から、前記対象の第1制御周期以前であり、かつ、前記対象の第1制御周期に最も近い対象の第2制御周期の前記第2変数の第2対象値を読み出し、
前記第1対象値および前記第2対象値を、前記対象の第1制御周期において前記プログラマブルロジックコントローラ(200)が保持していた前記変数値として決定する、構成2に記載の情報処理システム(100,100A)。
【0155】
(構成4)
前記第1時系列データ(51)は、前記対象期間における前記第1制御周期ごとの第1時刻をさらに示し、
前記第2時系列データ(52)は、前記対象期間における前記第2制御周期ごとの第2時刻をさらに示し、
前記再現モジュール(40,40a,101)は、テーブル(43)を参照して、前記第1時系列データ(51)および前記第2時系列データ(52)から前記第1対象値および前記第2対象値をそれぞれ読み出し、
前記テーブル(43)は、前記対象期間における前記第1制御周期ごとに、当該第1制御周期の序数を表すカウンタ値と、当該第1制御周期の前記第1時刻と、当該第1制御周期の前記第1時刻以前であり、かつ、当該第1制御周期の前記第1時刻に最も近い前記第2制御周期の前記第2時刻とを対応付け、
前記再現モジュール(40,40a,101)は、
前記規定時間が経過するたびに対象カウンタ値に1を加算し、
前記テーブル(43)から、前記対象カウンタ値に対応する前記第1時刻および前記第2時刻を特定し、
前記第1時系列データ(51)から、特定された前記第1時刻に対応する前記第1変数の値を前記第1対象値として読み出し、
前記第2時系列データ(52)から、特定された前記第2時刻に対応する前記第2変数の値を前記第2対象値として読み出す、構成3に記載の情報処理システム(100,100A)。
【0156】
(構成5)
前記規定時間は、前記第1制御周期と同じ時間、および、前記第1制御周期の時間を指定された倍率で割った時間から選択される、構成2から4のいずれかに記載の情報処理システム(100,100A)。
【0157】
(構成6)
前記1以上の可視化モジュール(30,30a~30c,101)が前記再現モジュール(40,40a,101)によって再現された前記変数値を前記可視化対象の変数値として取得する第1モードと、前記1以上の可視化モジュール(30,30a~30c,101)が前記プログラマブルロジックコントローラ(200)によって現在保持される変数値を前記可視化対象の変数値として取得する第2モードとを含む複数のモードの中から1つのモードを選択する選択部(19,101)をさらに備える、構成1から5のいずれかに記載の情報処理システム。
【0158】
(構成7)
プログラマブルロジックコントローラ(200)の制御状態を表す可視化対象の変数値を可視化する1以上の可視化モジュールを含む情報処理装置における情報処理方法であって、
対象期間において前記プログラマブルロジックコントローラ(200)によって記録された時系列データセット(50)に基づいて、前記対象期間における前記プログラマブルロジックコントローラ(200)の第1制御周期ごとの、前記プログラマブルロジックコントローラ(200)が保持していた変数値を順次再現すること(S3)と、
前記1以上の可視化モジュール(30,30a~30c,101)が、再現された前記変数値を前記可視化対象の変数値として取得すること(S4)とを備える、情報処理方法。
【0159】
(構成8)
プログラマブルロジックコントローラ(200)の制御状態を表す可視化対象の変数値を可視化する1以上の可視化モジュールを含むコンピュータ(100A)に情報処理方法を実行させるプログラム(133)であって、
前記情報処理方法は、
対象期間において前記プログラマブルロジックコントローラ(200)によって記録された時系列データセット(50)に基づいて、前記対象期間における前記プログラマブルロジックコントローラ(200)の第1制御周期ごとの、前記プログラマブルロジックコントローラ(200)が保持していた変数値を順次再現すること(S3)と、
前記1以上の可視化モジュール(30,30a~30c,101)が、再現された前記変数値を前記可視化対象の変数値として取得すること(S4)とを備える、プログラム(133)。
【0160】
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0161】
1 製造システム、11 制御プログラム編集部、12 データ型定義編集部、13 データ型メモリマップ生成部、14 サンプリング設定部、15 ビルド処理部、16 再現PLC生成部、17 PLC通信制御部、18 再現PLC通信制御部、19 データアクセサ、21 プログラム実行部、22 データ収集部、30 可視化モジュール、30a プログラム表示モジュール、30b 波形表示モジュール、30c トラブルシュート表示モジュール、32 動画再生モジュール、40 再現モジュール、40a 再現PLC、41 時刻制御モジュール、41a クロック管理部、42 コントローラ制御状態再現機能、42a 管理部、43 ルックアップテーブル、45 時刻指定モジュール、45a 再現PLCクロック操作部、50 時系列データセット、51,52 時系列データ、55 動画データ、60 データ型メモリマップ、70 第1ウィンドウ、71 カーソル、72 表示領域、73 再生ボタン群、74 再生速度入力欄、100 情報処理システム、100A PC、101 プロセッサ、102,206 メモリ、103,208 ストレージ、104 入力インターフェイス、105 表示コントローラ、106 通信インターフェイス、107,270 リーダ/ライタ、110 入力装置、120 ディスプレイ、131 開発プログラム、132 ビューワープログラム、133 再現プログラム、200 PLC、201 電源回路、202 CPU、204 チップセット、211 システムプログラム、213 スケジューラプログラム、214 プログラムデータセット、214a 制御プログラム、250 USBコントローラ、252 フィールドネットワークコントローラ、252a,254a コネクタ、254 ネットワークコントローラ、260 タイマ、300 フィールド機器、400 ネットワークカメラ、500 ネットワークストレージ、600 記憶媒体、700 PLCシミュレーター、702 仮想メモリ、704 PLCロジックエミュレーター、706 PLCメモリエミュレーター。