従来技術の背景及び問題点についてより詳細に説明する。
PLCの制御プログラム開発においては、開発効率の向上及びデバッグ期間の短縮を図るために、PLCシミュレータを活用しながら、開発作業を進めるケースが近年増加している。PLCシミュレータは、PLCで動作するラダー言語プログラムと全く同一のプログラムをそのままの形式でダウンロードすることができ、容易にPLC環境のプログラムを利用できる。したがって、PLCシミュレータは、運用面において非常に効果が高い。さらに、PLCシミュレータによっては模擬入力の機能が備わっている場合もあり、ユーザは、模擬入力の機能を有効活用することで、PLC環境により近いデバッグ環境を構築することも可能である。
このようなPLCシミュレータが幅広く活用されている状況下で、PLCシミュレータに対して、従来の開発用途以外での用途に対する要求が高まっている。その中でもPLC環境でエラー状態が発生した場合に、エラー状態をPLCシミュレータ上に再現してエラー解析に役立てたいという要求が非常に高まっている。
しかしながら、現状のPLCシミュレータでは、PLCにより近いプログラム構成を再現することはできるが、実稼働中の装置の状態としてPLCの内部メモリデータを取得して、PLCシミュレータ上に当該データを読み込み、PLCにより近い状態を再現することは容易ではない。例えば、制御対象となる各種センサ等の接続機器と接続されたPLCでは、リアルタイムに、かつ動的にデータの値が変化する。これらのデータをPLCシミュレータ上に例えばワンステップで容易に再現する方法が存在しなかった。したがって、PLCシミュレータをエラー解析の用途に使用することは困難であった。
本開示は、以上のような問題点を解決するために、制御装置の状態を精度良く再現できるプログラム及び情報処理装置を提供することを目的とする。以下では、添付図面を参照しながら本開示の一実施形態について主に説明する。
図1は、本開示の一実施形態に係る情報処理システム1の概略構成を示すブロック図である。図1を参照しながら、本開示の一実施形態に係る情報処理システム1の概要について主に説明する。情報処理システム1は、情報処理装置10及び制御装置20を有する。図1では説明の簡便のため、情報処理装置10及び制御装置20について、それぞれ1つずつ図示しているが、情報処理システム1が有する情報処理装置10及び制御装置20の数はそれぞれ2つ以上であってもよい。
情報処理装置10及び制御装置20は、例えばインターネット及び移動体通信網を含むネットワークを介して互いに通信可能に接続されている。これに限定されず、情報処理装置10及び制御装置20は、ネットワークを介さずに、例えば任意の通信ケーブルによって互いに通信可能に接続されていてもよい。
情報処理装置10は、例えばPC(Personal Computer)又はスマートフォン等の汎用の電子機器である。情報処理装置10は、例えば制御装置20において実行される制御プログラムの開発者としてのユーザが使用する電子機器である。情報処理装置10は、これらに限定されず、ユーザが使用する1つ又は互いに通信可能な複数のサーバ装置であってもよいし、情報処理システム1に専用の電子機器であってもよい。
制御装置20は、例えばPLCである。制御装置20は、制御対象となる任意の接続機器と通信可能に接続され、当該接続機器を制御する。本明細書において、「接続機器」は、例えばフィールド機器を含む。接続機器は、被測定対象に対する測定処理を実行して測定値を取得する。
本明細書において、「被測定対象」は、例えば、接続機器が配置されているプラント設備において発生した気体及び液体を含む流体の温度、圧力、及び流量、並びにプラント設備の腐食度及び振動量を含む。これに限定されず、被測定対象は、バルブ、モータ、及びリレーを含むアクチュエータに関連する、温度、圧力、及び電圧を含む任意のパラメータを含む。
本明細書において、「プラント設備」は、例えば、化学等の工業プラントの他、ガス田及び油田を含む井戸元、並びにその周辺を管理制御するプラントを含む。その他にも、プラント設備は、水力発電、火力発電、及び原子力発電を含む発電を管理制御するプラント、太陽光発電及び風力発電を含む環境発電を管理制御するプラント、並びに上下水及びダム等を管理制御するプラントを含んでもよい。
一実施形態の概要として、情報処理装置10は、制御装置20に格納され、制御装置20の状態を反映した内部メモリデータを取得するときのデータ取得範囲を設定する。本明細書において、「制御装置20の状態」は、例えば、制御装置20のエラー状態、及び後述する制御装置20の運転状態を含む。「エラー状態」は、例えば、スキャンタイムの超過等のプログラムに起因したエラー、及び瞬停等のハードウェアに起因したエラーを含む。「内部メモリデータ」は、例えば、制御装置20と接続されている接続機器及び制御装置20を含む装置の内部のリレー入出力を管理するビットデータ、並びに制御装置20と接続されている接続機器及び制御装置20を含む装置の内部の数値情報を管理するための数値データを含む。
情報処理装置10は、設定されたデータ取得範囲に基づいて内部メモリデータの少なくとも一部を制御装置20から取得するためのコマンド情報を生成する。情報処理装置10は、当該コマンド情報によって制御装置20から取得された内部メモリデータの少なくとも一部に基づいて、情報処理装置10側のメモリデータを更新する。本明細書において、「メモリデータ」は、例えば、後述する情報処理装置10の記憶部12に格納され、制御装置20の状態のシミュレーションに用いられるデータを含む。これに限定されず、メモリデータは、情報処理装置10から任意の方法でアクセス可能な外部装置が有する任意の記憶媒体に格納されているデータを含んでもよい。
図1に示すように、情報処理装置10は、通信部11、記憶部12、入力部13、出力部14、読込部15、及び制御部16を有する。
通信部11は、有線又は無線に基づく任意の通信プロトコルに対応した任意の通信モジュールを含む。例えば、通信部11は、インターネット規格に対応する通信モジュール、並びに4G(4th Generation)及び5G(5th Generation)を含む移動体通信規格に対応する通信モジュールの少なくとも一方を含んでもよい。一実施形態において、情報処理装置10は、通信部11を介して制御装置20と通信可能に接続されている。
記憶部12は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、ROM(Read-Only Memory)、及びRAM(Random Access Memory)を含む任意の記憶モジュールを含む。記憶部12は、例えば、主記憶装置、補助記憶装置、又はキャッシュメモリとして機能してもよい。記憶部12は、情報処理装置10の動作に用いられる任意の情報を記憶する。例えば、記憶部12は、システムプログラム、アプリケーションプログラム、及び通信部11によって受信された各種情報等を記憶してもよい。記憶部12は、情報処理装置10に内蔵されているものに限定されず、USB(Universal Serial Bus)等のデジタル入出力ポート等によって接続されている外付け型の記憶モジュールであってもよい。例えば、記憶部12は、上述したメモリデータを記憶する。
入力部13は、ユーザ入力を検出して、ユーザの操作に基づく入力情報を取得する1つ以上の入力インタフェースを含む。例えば、入力部13は、物理キー、静電容量キー、出力部14のディスプレイと一体的に設けられたタッチスクリーン、又は音声入力を受け付けるマイク等であるが、これらに限定されない。
出力部14は、情報を出力してユーザに通知する1つ以上の出力インタフェースを含む。例えば、出力部14は、情報を映像で出力するディスプレイ、又は情報を音声で出力するスピーカ等であるが、これらに限定されない。
読込部15は、可搬記憶媒体を装着可能な任意の装着モジュールを含む。本明細書において、「可搬記憶媒体」は、例えば、SDカード及びUSBメモリを含む。本明細書において、「装着モジュール」は、例えば、SDカードスロット及びUSBコネクタを含む。読込部15は、制御部16による制御に基づいて、読込部15に装着された可搬記憶媒体に格納されている任意のデータの読み込みを可能にする。
制御部16は、1つ以上のプロセッサを含む。一実施形態において「プロセッサ」は、汎用のプロセッサ、又は特定の処理に特化した専用のプロセッサであるが、これらに限定されない。制御部16は、情報処理装置10を構成する各構成部と通信可能に接続され、情報処理装置10全体の動作を制御する。
図1に示すように、制御装置20は、通信部21、記憶部22、読込部23、及び制御部24を有する。
通信部21は、有線又は無線に基づく任意の通信プロトコルに対応した任意の通信モジュールを含む。例えば、通信部21は、インターネット規格に対応する通信モジュール、並びに4G及び5Gを含む移動体通信規格に対応する通信モジュールの少なくとも一方を含んでもよい。一実施形態において、制御装置20は、通信部21を介して情報処理装置10と通信可能に接続されている。
記憶部22は、HDD、SSD、EEPROM、ROM、及びRAMを含む任意の記憶モジュールを含む。記憶部22は、例えば、主記憶装置、補助記憶装置、又はキャッシュメモリとして機能してもよい。記憶部22は、制御装置20の動作に用いられる任意の情報を記憶する。例えば、記憶部22は、システムプログラム、アプリケーションプログラム、及び通信部21によって受信された各種情報等を記憶してもよい。記憶部22は、制御装置20に内蔵されているものに限定されず、USB等のデジタル入出力ポート等によって接続されている外付け型の記憶モジュールであってもよい。例えば、記憶部22は、上述した内部メモリデータを記憶する。
読込部23は、可搬記憶媒体を装着可能な任意の装着モジュールを含む。読込部23は、制御部24による制御に基づいて、読込部23に装着された可搬記憶媒体に格納されている任意のデータの読み込みを可能にする。
制御部24は、1つ以上のプロセッサを含む。制御部24は、制御装置20を構成する各構成部と通信可能に接続され、制御装置20全体の動作を制御する。
図2は、図1の情報処理システム1の機能を示すブロック図である。図2は、図1の情報処理システム1に含まれる構成部が有する各種機能をより詳細に示したものである。図2を参照しながら、情報処理システム1の構成部が有する各種機能について主に説明する。図2に示すとおり、情報処理装置10は、大きく分けて、制御プログラム開発支援機能100及びPLCシミュレータ200の2つの機能を有する。
制御プログラム開発支援機能100は、ラダー言語プログラミング部101、プログラム変換部102、通信制御部103、取得コマンド作成部104、及び読込変換部105を含む。制御プログラム開発支援機能100に含まれる各機能部は、情報処理装置10の制御部16が有する機能を示すものである。
PLCシミュレータ200は、プログラム格納部201、実行型中間言語変換部202、実行型中間言語格納部203、仮想PLCプログラム演算処理部204、内部メモリ205、使用範囲抽出部206、及び再現部207を含む。PLCシミュレータ200に含まれる各機能部は、情報処理装置10の制御部16が有する機能を示すものである。
制御装置20は、PLC300の機能を有する。PLC300は、プログラム格納部301、プログラム実行部302、プログラム演算処理部303、内部メモリ304、及び取得処理部305を含む。PLC300に含まれる各機能部は、制御装置20の制御部24が有する機能を示すものである。
ラダー言語プログラミング部101は、PLC300上で動作する制御プログラムを開発するためのプログラム言語エディタ機能を含む。プログラム変換部102は、ラダー言語をPLC300上で動作する中間コードに変換する機能を含む。通信制御部103は、プログラム変換部102によって変換された中間コードをPLC300にダウンロードするときに通信部11を制御する機能を含む。
取得コマンド作成部104は、制御装置20の記憶部22に格納され、制御装置20の状態を反映した内部メモリデータを取得するときのデータ取得範囲を設定する機能を含む。例えば、取得コマンド作成部104は、通信制御部103及び使用範囲抽出部206を経由して、PLCシミュレータ200上の実行型中間言語格納部203によって生成され記憶部12に格納されている管理情報を参照する。本明細書において、「管理情報」は、例えば、制御装置20の状態のシミュレーションに実際に用いられるメモリデータのデータ使用範囲を管理するための管理テーブルを含む。
取得コマンド作成部104は、生成された管理情報を参照してメモリデータのデータ使用範囲を取得する。取得コマンド作成部104は、取得されたデータ使用範囲に基づいて内部メモリデータのデータ取得範囲を設定する。より具体的には、取得コマンド作成部104は、PLCシミュレータ200と同一のPLCプログラムがダウンロードされたPLC300における内部メモリデータのデータ使用範囲と、PLCシミュレータ200上のPLCプログラムで使用しているメモリデータのデータ使用範囲と、を同等として扱う。これにより、取得コマンド作成部104は、取得されたメモリデータのデータ使用範囲と同等の範囲を、PLC300における内部メモリデータのデータ取得範囲として自動的に設定する。
例えば、制御装置20の記憶部22に格納されている内部メモリデータのアドレスが、コンフィギュレーションによって、1~50000の領域で確保されている場合を考える。このとき、例えば、PLCシミュレータ200上のPLCプログラムにおいて、実際には10001、10010のアドレスしか使用されていないとき、データ取得範囲は、10001~10010のアドレス範囲に設定される。
データ取得範囲の設定方法は、上記のように、取得コマンド作成部104によって自動的に実行される方法に限定されない。例えば、PLCシミュレータ200及びPLC300におけるそれぞれのPLCプログラムが一致している場合、及び一致していない場合の両方において、取得コマンド作成部104は、制御装置20の記憶部22から取得する内部メモリデータのデータ取得範囲を任意に設定されてもよい。例えば、取得コマンド作成部104は、ユーザによって任意に設定された内部メモリデータのデータ取得範囲に関する入力情報を情報処理装置10の入力部13から取得して、当該入力情報に対応するデータ取得範囲を設定してもよい。
取得コマンド作成部104は、設定されたデータ取得範囲に基づいて内部メモリデータの少なくとも一部を制御装置20の記憶部22から取得するためのコマンド情報を生成する機能を含む。取得コマンド作成部104は、生成されたコマンド情報を、例えば、読込部15に装着された情報処理装置10及び制御装置20によって読み込み可能な可搬記憶媒体400に格納する機能を含む。このとき、可搬記憶媒体400は、情報処理装置10及び制御装置20と共に情報処理システム1に含まれていてもよい。
取得コマンド作成部104は、内部メモリデータの少なくとも一部を制御装置20の記憶部22から取得するときに制御装置20の運転状態を制御するための制御情報を生成する機能を含んでもよい。本明細書において、「制御装置20の運転状態」は、例えば、制御装置20の稼働状態及び停止状態を含む。「制御情報」は、例えば、制御装置20の稼働状態及び停止状態を制御部24が制御するために必要となる任意の情報を含む。例えば、制御情報は、内部メモリデータ取得前及び取得後において制御装置20の稼働状態及び停止状態のいずれかを制御部24が設定する情報を含む。
読込変換部105は、PLC300の内部メモリデータとして取得したデータファイルを読み込む機能を含む。例えば、読込変換部105は、読込部15に装着され、上記のコマンド情報によって取得された内部メモリデータの少なくとも一部を記憶する可搬記憶媒体400から、内部メモリデータの少なくとも一部を読み込む。読込変換部105は、読み込まれた内部メモリデータの少なくとも一部を、PLCシミュレータ200が読み取ることのできるデータ形式に変換する機能を含む。読込変換部105は、変換されたデータをPLCシミュレータ200上の内部メモリ205により情報処理装置10の記憶部12に反映するためのコマンドを、通信制御部103を経由して再現部207に送信する機能を含む。
プログラム格納部201は、制御プログラム開発支援機能100によってダウンロードされた制御プログラムの中間コードを、情報処理装置10の記憶部12に格納する機能を含む。実行型中間言語変換部202は、当該中間コードをPLCシミュレータ200上で実行するための実行型中間言語に変換する機能を含む。
実行型中間言語格納部203は、変換された実行型中間言語を、情報処理装置10の記憶部12に格納する機能を含む。加えて、実行型中間言語格納部203は、管理情報に基づいて、PLCシミュレータ200上のPLCプログラムで実際に使用しているメモリデータのデータ使用範囲を管理する機能を含む。
仮想PLCプログラム演算処理部204は、当該実行型中間言語を解釈して実行する機能を含む。内部メモリ205は、当該実行型中間言語を実行する上で使用するメモリデータを、情報処理装置10の記憶部12に格納する機能を含む。
使用範囲抽出部206は、制御プログラム開発支援機能100によって通信制御部103を経由して送信された、PLCシミュレータ200上のPLCプログラムで実際に使用しているメモリデータのデータ使用範囲の取得を要求するコマンドを受け付ける機能を含む。使用範囲抽出部206は、メモリデータのデータ使用範囲の取得を要求するコマンドに応じて、当該データ使用範囲を管理している実行型中間言語格納部203により記憶部12を参照して、メモリデータのデータ使用範囲を返答する機能を含む。
再現部207は、制御プログラム開発支援機能100によって通信制御部103を経由して送信されたコマンドを受け付ける機能を含む。再現部207は、PLCシミュレータ200上の内部メモリ205を介して、内部メモリデータの少なくとも一部に基づく、受け付けたコマンドに係るデータを記憶部12に反映する機能を含む。これにより、再現部207は、上記のコマンド情報によって制御装置20から取得された内部メモリデータの少なくとも一部に基づいて、制御装置20の状態のシミュレーションに用いられるメモリデータを更新する。
プログラム格納部301は、制御プログラム開発支援機能100によってダウンロードされた制御プログラムの中間コードを、制御装置20の記憶部22に格納する機能を含む。プログラム実行部302は、当該中間コードを実際に動作する形式のプログラムに変換して実行する機能を含む。プログラム演算処理部303は、このような実行プログラムを解釈して実行する機能を含む。
内部メモリ304は、プログラムを実行する上で使用する内部メモリデータを、制御装置20の記憶部22に格納する機能を含む。取得処理部305は、PLC300上の内部メモリ304を介して記憶部22から内部メモリデータを取得するためのコマンドとなるスクリプト言語を記載した実行形式型のファイルの内容を解釈する機能を含む。スクリプト言語を記載した実行形式型のファイルの内容は、例えば、制御装置20の読込部23に装着された可搬記憶媒体400に記憶されている、取得コマンド作成部104によって生成された上記のコマンド情報を含む。取得処理部305は、PLC300の内部メモリ304を介して、記憶部22に格納されている内部メモリデータを取得し、取得された内部メモリデータをテキスト型のデータに変換してデータファイルとして取得する機能を含む。取得処理部305は、読込部23に装着された可搬記憶媒体400に対して当該データファイルを格納する機能を含む。
図1の情報処理システム1の動作は、以下の3つの動作を含む。1つは、主に、制御装置20の記憶部22に格納されている内部メモリデータを取得するために、取得処理部305で解釈されるコマンド情報を情報処理装置10が生成する第1動作である。1つは、主に、制御装置20の記憶部22から内部メモリデータを取得するための制御装置20の第2動作である。1つは、制御装置20の記憶部22から取得した内部メモリデータをPLCシミュレータ200上に再現するための情報処理装置10の第3動作である。
図3は、図1の情報処理システム1の第1動作を説明するためのフローチャートである。図3を参照しながら、情報処理システム1の第1動作について主に説明する。
ステップS100では、情報処理装置10の制御部16、例えば実行型中間言語格納部203は、制御装置20の状態のシミュレーションに実際に用いられるメモリデータのデータ使用範囲を管理するための管理情報を生成し、記憶部12に格納する。
ステップS101では、制御部16は、PLCシミュレータ200のPLCプログラムを使用するか否かを判定する。制御部16は、PLCシミュレータ200のPLCプログラムを使用すると判定すると、ステップS102の処理を実行する。制御部16は、PLCシミュレータ200のPLCプログラムを使用しないと判定すると、ステップS103の処理を実行する。
ステップS102では、制御部16、例えば取得コマンド作成部104は、取得コマンド作成部104からの要求を受け付けた使用範囲抽出部206、及び実行型中間言語格納部203を介して、ステップS100において記憶部12に格納された管理情報を参照し、メモリデータのデータ使用範囲を取得する。
ステップS103では、制御部16、例えば取得コマンド作成部104は、制御装置20に格納され、制御装置20の状態を反映した内部メモリデータを取得するときのデータ取得範囲を設定する。例えば、制御部16は、ステップS101においてPLCシミュレータ200のPLCプログラムを使用すると判定すると、ステップS102において取得されたデータ使用範囲に基づいて、データ取得範囲を自動的に設定する。このとき、例えば、制御部16は、自動的に設定されたデータ取得範囲をユーザがさらに微調整するための入力情報を情報処理装置10の入力部13から取得して、取得された入力情報に基づいて、データ取得範囲を再設定してもよい。例えば、制御部16は、ステップS101においてPLCシミュレータ200のPLCプログラムを使用しないと判定すると、ユーザによって任意に設定された内部メモリデータのデータ取得範囲に関する入力情報を情報処理装置10の入力部13から取得して、取得された入力情報に基づいて、データ取得範囲を設定する。
ステップS104では、制御部16、例えば取得コマンド作成部104は、ステップS103において設定されたデータ取得範囲に基づいて内部メモリデータの少なくとも一部を制御装置20から取得するためのコマンド情報を生成する。例えば、取得コマンド作成部104は、内部メモリデータを取得するためのコマンドとなるスクリプト言語を記載した実行形式型のファイルを作成する。
ステップS105では、制御部16、例えば取得コマンド作成部104は、内部メモリデータの少なくとも一部を制御装置20から取得するときに制御部24が制御装置20の運転状態を制御するための制御情報を生成する。
ステップS106では、制御部16、例えば取得コマンド作成部104は、ステップS104において生成されたコマンド情報と、ステップS105において生成された制御情報と、を情報処理装置10及び制御装置20によって読み込み可能な可搬記憶媒体400に格納する。例えば、取得コマンド作成部104は、ステップS104において作成されたファイルを可搬記憶媒体400に保存する。
図4は、図1の情報処理システム1の第2動作を説明するためのフローチャートである。図4を参照しながら、情報処理システム1の第2動作について主に説明する。当該第2動作は、例えば、図3のステップS106において必要な情報が格納された可搬記憶媒体400が制御装置20の読込部23に装着されることで、制御装置20の制御部24によって実行される。
ステップS200では、制御装置20の制御部24、例えば取得処理部305は、図3のステップS105において生成された制御情報に基づいて、内部メモリデータの取得前に制御装置20の運転状態を停止状態に変更する必要があるか否かを判定する。取得処理部305は、制御装置20の運転状態を停止状態に変更する必要があると判定すると、ステップS201の処理を実行する。例えば、取得する内部メモリデータの同時性が要求されるような場合、取得処理部305によって制御装置20の運転状態を停止状態に変更することが望ましい。取得処理部305による内部メモリデータの取得処理では所定の取得期間が発生するため、仮に制御装置20の運転状態が稼働状態のままであると、取得期間の最初と最後に取得した内部メモリデータ間で、タイムラグが発生する。取得処理部305は、制御装置20の運転状態を停止状態に変更する必要がないと判定すると、ステップS202の処理を実行する。例えば、制御装置20が稼働状態にあって、停止状態に変更すると現場の運用に影響が及ぶ場合、取得処理部305によって制御装置20の運転状態を稼働状態に維持することが望ましい。
ステップS201では、制御部24、例えば取得処理部305は、内部メモリデータを取得する動作の前に制御装置20の運転状態を停止状態に変更する。
ステップS202では、制御部24、例えば取得処理部305は、図3のステップS104において生成されたコマンド情報を処理し、記憶部22に格納されている内部メモリデータの少なくとも一部を可搬記憶媒体400に格納する。
ステップS203では、制御部24、例えば取得処理部305は、内部メモリデータの取得後に制御装置20の運転状態が稼働状態にあるか否かを判定する。取得処理部305は、運転状態が稼働状態にあると判定すると、ステップS204の処理を実行する。取得処理部305は、運転状態が停止状態にあると判定すると、ステップS206の処理を実行する。
ステップS204では、制御部24、例えば取得処理部305は、図3のステップS105において生成された制御情報に基づいて、内部メモリデータの取得後に制御装置20の運転状態を稼働状態から停止状態に変更する必要があるか否かを判定する。取得処理部305は、制御装置20の運転状態を稼働状態から停止状態に変更する必要があると判定すると、ステップS205の処理を実行する。取得処理部305は、制御装置20の運転状態を稼働状態から停止状態に変更する必要がないと判定すると、処理を終了する。
ステップS205では、制御部24、例えば取得処理部305は、内部メモリデータを取得する動作の後に制御装置20の運転状態を稼働状態から停止状態に変更する。
ステップS206では、制御部24、例えば取得処理部305は、図3のステップS105において生成された制御情報に基づいて、内部メモリデータの取得後に制御装置20の運転状態を停止状態から稼働状態に変更する必要があるか否かを判定する。取得処理部305は、制御装置20の運転状態を停止状態から稼働状態に変更する必要があると判定すると、ステップS207の処理を実行する。取得処理部305は、制御装置20の運転状態を停止状態から稼働状態に変更する必要がないと判定すると、処理を終了する。
ステップS207では、制御部24、例えば取得処理部305は、内部メモリデータを取得する動作の後に制御装置20の運転状態を停止状態から稼働状態に変更する。
図5は、図1の情報処理システム1の第3動作を説明するためのフローチャートである。図5を参照しながら、情報処理システム1の第3動作について主に説明する。当該第3動作は、例えば、図4のステップS202において必要なデータが格納された可搬記憶媒体400が情報処理装置10の読込部15に装着されることで、情報処理装置10の制御部16によって実行される。
ステップS300では、情報処理装置10の制御部16、例えば読込変換部105は、図4のステップS202において制御装置20の記憶部22から取得した内部メモリデータを、可搬記憶媒体400から読み込む。
ステップS301では、制御部16、例えば読込変換部105は、ステップS300において読み込まれた内部メモリデータの少なくとも一部を、PLCシミュレータ200が読み取ることのできるデータ形式に変換する。
ステップS302では、制御部16、例えば読込変換部105は、ステップS301において変換されたデータをPLCシミュレータ200上の内部メモリ205により情報処理装置10の記憶部12に反映するためのコマンドを、通信制御部103を経由して再現部207に送信する。
ステップS303では、制御部16は、PLCシミュレータ200が機能している場合、その機能を停止させる。例えば、ユーザは、PLCシミュレータ200のデバッグ機能を利用する際に、制御装置20の記憶部22から取得した内部メモリデータをPLCシミュレータ200上に再現してPLCシミュレータ200の機能を一旦停止させるのが一般的である。また、実際問題として、内部メモリデータの再現後にPLCシミュレータ200上で制御装置20の状態をユーザが確認せずにシミュレーション動作を開始させることは考えにくい。したがって、制御部16は、強制的にPLCシミュレータ200の機能を停止させる。これにより、制御部16は、内部メモリデータの再現時に当該機能を停止させる、又は維持するといった判定処理を実行する必要がない。したがって、制御部16による処理が簡易的になる。
ステップS304では、制御部16、例えば再現部207は、ステップS302において読込変換部105から受信したコマンドに基づいて、制御装置20の状態のシミュレーションに用いられるメモリデータを更新する。
ステップS305では、制御部16は、PLCシミュレータ200の機能を再実行する必要があるか否かを判定する。制御部16は、PLCシミュレータ200の機能を再実行する必要があると判定すると、ステップS306の処理を実行する。例えば、再現された制御装置20の状態をユーザが一通り確認した後、その後の制御装置20の状態を把握したい場合に、制御部16は、ステップS306の処理を実行する。制御部16は、PLCシミュレータ200の機能を再実行する必要がないと判定すると、処理を終了する。例えば、再現された制御装置20の状態をユーザが念入りに確認する必要がある場合に、制御部16は、処理を終了する。このとき、ユーザは、PLCシミュレータ200の機能を再実行させずに、デバッグの作業を行う。
ステップS306では、制御部16は、PLCシミュレータ200の機能を再実行する。
以上のような一実施形態に係る情報処理装置10によれば、制御装置20の状態を精度良く再現できる。より具体的には、制御部16は、制御装置20から取得された内部メモリデータの少なくとも一部に基づいて、制御装置20の状態のシミュレーションに用いられるメモリデータを更新する。制御装置20の内部メモリデータ内には、接続機器及び制御装置20自体に関する状態についてのデータが含まれている。例えば、制御装置20の内部メモリデータ内には、制御装置20のエラー状態についてのデータが含まれている。したがって、制御部16は、制御装置20で使用している内部メモリデータの所定の範囲を取得してPLCシミュレータ200上に読み込むことで、制御装置20と同等の状態を精度良く再現することができる。これにより、ユーザは、制御装置20の内部メモリデータを再現した状態からPLCシミュレータ200の機能を再実行することで、制御装置20の実際の状態により近付けて精度良くシミュレーションを行うことができる。
例えば、制御部16は、制御装置20がエラー状態にあるときに内部メモリデータを取得してPLCシミュレータ200上に再現すると、制御装置20のエラー状態を含めて制御装置20の状態をPLCシミュレータ200上に再現できる。すなわち、制御部16は、制御装置20のエラー状態を擬似的に再現することができる。ユーザは、PLCシミュレータ200上に再現されたエラー状態に基づいて、現場に設置されている制御装置20のエラー状態を擬似的にデバッグすることができる。
ユーザは、制御装置20が設置されている現場へ移動することなく、PLCシミュレータ200上でエラー状態のデバッグを行うことができる。したがって、移動コストが削減可能である。ユーザは、PLCシミュレータ200上のデバッグでエラーを解決できず、現地でデバッグを行う必要がある場合であっても、すでにPLCシミュレータ200上でエラーの状態を確認している。したがって、ユーザは、現地でのデバッグ作業を効率良く行うことができる。これにより、デバッグ作業に係る対応工数が削減される。加えて、ユーザは、現場に設置されている制御装置20の状態を認識して現場に移動するので、心理的な負荷を軽減可能である。
制御部16は、制御装置20の状態をPLCシミュレータ200上に精度良く再現することができる。したがって、ユーザは、エラー解析の用途だけでなく、現場に設置されている制御装置20の動作の理解を深める用途で、又は制御装置20の使用方法に関する教育用途で情報処理装置10を使用することもできる。
制御部16は、生成された管理情報を参照して取得されたデータ使用範囲に基づいてデータ取得範囲を設定することで、PLCシミュレータ200のプログラムを利用して内部メモリデータのデータ取得範囲を自動で設定することができる。これにより、内部メモリデータのデータ取得範囲の設定処理が簡易化される。したがって、情報処理装置10を用いるユーザにとって、情報処理装置10の利便性が向上する。
このように、内部メモリデータのデータ取得範囲が自動的に設定されれば、内部メモリデータを取得するためのコマンド情報を生成する工数が削減される。加えて、制御部16は、必要最小限のデータ取得範囲を設定することが可能となる。したがって、コマンド情報を含む実行形式型のファイル自体のファイルサイズが削減される。かつ、制御装置20から内部メモリデータを取得するときのデータ容量も削減され、データ転送にかかる時間も短縮可能である。
制御部16が、生成されたコマンド情報を可搬記憶媒体400に格納することで、ユーザは、制御装置20の内部メモリデータを取得するときに、可搬記憶媒体400を読込部23に装着する動作だけ行えばよい。これにより、現地ユーザでも、制御装置20の内部メモリデータの取得作業に容易に対応することができる。したがって、情報処理システム1を用いるユーザにとって、情報処理システム1の利便性が向上する。
ユーザは、制御装置20の内部メモリデータを取得する機能として、制御装置20に備わっている既存機能を利用することができる。すなわち、ユーザは、既存の制御装置20設備に対して変更を加える必要がない。
ユーザは、制御装置20の内部メモリデータを取得するときに、可搬記憶媒体400が用いられることで、情報処理装置10及び制御装置20のそれぞれをネットワークに直接接続する必要がない。したがって、ユーザは、ネットワークセキュリティに対して厳しい現場であっても、安心して内部メモリデータの取得作業を行うことができる。
制御部16が、内部メモリデータの少なくとも一部を可搬記憶媒体400から読み込むことで、ユーザは、制御装置20の内部メモリデータに基づいて情報処理装置10のメモリデータを更新するときに、可搬記憶媒体400を読込部15に装着する動作だけ行えばよい。これにより、ユーザは、情報処理装置10のメモリデータの更新作業を容易に行うことができる。したがって、情報処理システム1を用いるユーザにとって、情報処理システム1の利便性が向上する。
ユーザは、情報処理装置10のメモリデータを更新するときに、可搬記憶媒体400が用いられることで、情報処理装置10及び制御装置20のそれぞれをネットワークに直接接続する必要がない。したがって、ユーザは、現場がネットワークセキュリティに対して厳しい環境であっても、安心してメモリデータの更新作業を行うことができる。
制御部16は、制御装置20の運転状態を制御するための制御情報を生成することで、制御装置20の内部メモリデータを取得するときの制御装置20の運転状態を制御可能である。ユーザは、情報処理装置10の入力部13及び出力部14を用いて、自身が希望する制御内容に基づく制御情報を容易に作成することができる。これにより、情報処理装置10を用いるユーザにとって、情報処理装置10の利便性が向上する。
本開示を諸図面及び実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形及び修正を行うことが容易であることに注意されたい。したがって、これらの変形及び修正は本開示の範囲に含まれることに留意されたい。例えば、各構成又は各ステップ等に含まれる機能等は論理的に矛盾しないように再配置可能であり、複数の構成又はステップ等を1つに組み合わせたり、或いは分割したりすることが可能である。
例えば、本開示は、上述した情報処理システム1の各機能を実現する処理内容を記述したプログラム又はプログラムを記録した記憶媒体としても実現し得る。本開示の範囲には、これらも包含されると理解されたい。
上記では、一の情報処理装置10が制御プログラム開発支援機能100及びPLCシミュレータ200の2つの機能を有するとして説明したが、これに限定されない。制御プログラム開発支援機能100及びPLCシミュレータ200は、互いに任意の方法で通信可能に接続されている2つの情報処理装置に対してそれぞれ別々に備わっていてもよい。このとき、PLCシミュレータ200を実行する上で必要となる上述した各種情報は、PLCシミュレータ200が備わっている情報処理装置の任意の記憶媒体に格納されていてもよい。
上記では、可搬記憶媒体400によって、制御装置20の内部メモリデータを取得し、情報処理装置10のメモリデータを更新するとして説明したが、これに限定されない。例えば、制御装置20は、取得コマンド作成部104によって生成された上記のコマンド情報を、ネットワークを介して情報処理装置10から受信し、受信したコマンド情報に基づいて、取得処理部305の機能を実行してもよい。例えば、情報処理装置10は、取得処理部305によって取得された内部メモリデータを、ネットワークを介して制御装置20から受信し、受信した内部メモリデータに基づいて、読込変換部105及び再現部207の機能を実行してもよい。
上記では、PLCシミュレータ200と同一のPLCプログラムがPLC300にダウンロードされているとして、取得コマンド作成部104による内部メモリデータのデータ取得範囲の自動設定について説明したが、これに限定されない。PLCシミュレータ200のPLCプログラムとPLC300のPLCプログラムとは、互いに異なるものであってもよい。
例えば、制御装置20の読込部23に装着された可搬記憶媒体400は、制御装置20の内部メモリデータを定期的に取得してもよい。これにより、制御部16は、PLCシミュレータ200上において、制御装置20の状態を時系列で再現することも可能である。