JP2009037329A - Plcシステム模擬装置 - Google Patents
Plcシステム模擬装置 Download PDFInfo
- Publication number
- JP2009037329A JP2009037329A JP2007199481A JP2007199481A JP2009037329A JP 2009037329 A JP2009037329 A JP 2009037329A JP 2007199481 A JP2007199481 A JP 2007199481A JP 2007199481 A JP2007199481 A JP 2007199481A JP 2009037329 A JP2009037329 A JP 2009037329A
- Authority
- JP
- Japan
- Prior art keywords
- state
- plc
- unit
- delay
- virtual
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Programmable Controllers (AREA)
Abstract
【課題】PLCシステムで発生するネットワーク共有メモリへの書込み遅延を正確に模擬する模擬装置を提供する。
【解決手段】遅延模擬装置1000は、各実機PLCと一対一に対応し、実機PLCのプログラム111を実行してネットワーク共有メモリへの値の書込み要求を出力する複数の仮想PLCユニット100と、各プログラム111の状態遷移を監視する状態遷移監視部300と、いずれかの仮想PLCユニット100から書込み要求を入力すると状態遷移監視部300からすべての仮想PLCユニット100のプログラム111の現在の遷移状態を取得し、書込み要求を出力した以外の各仮想PLCユニット100の遅延模擬結果メモリ120へ前記値を書込むべきタイミングを示す遅延時間を取得された遷移状態に基づき個別に決定し、遅延時間が経過すると、対応する遅延模擬結果メモリ120に前記値を書込む遅延模擬部500とを備えた。
【選択図】図3
【解決手段】遅延模擬装置1000は、各実機PLCと一対一に対応し、実機PLCのプログラム111を実行してネットワーク共有メモリへの値の書込み要求を出力する複数の仮想PLCユニット100と、各プログラム111の状態遷移を監視する状態遷移監視部300と、いずれかの仮想PLCユニット100から書込み要求を入力すると状態遷移監視部300からすべての仮想PLCユニット100のプログラム111の現在の遷移状態を取得し、書込み要求を出力した以外の各仮想PLCユニット100の遅延模擬結果メモリ120へ前記値を書込むべきタイミングを示す遅延時間を取得された遷移状態に基づき個別に決定し、遅延時間が経過すると、対応する遅延模擬結果メモリ120に前記値を書込む遅延模擬部500とを備えた。
【選択図】図3
Description
この発明は、複数のPLC(Programmable Logic Controller)を備えたPLCシステムを模擬する装置に関する。
従来のエミュレータ装置は、複数のPLCを伝送路で接続したシステム(プログラム)についてPLC等の実機を必要とせずデバッグ・テストを可能することを目的として、実機に近い振る舞いを模擬するにあたり、エミュレータ装置上で動作する各仮想PLC部に伝送路を用いてデータの送受信を行う仮想通信ユニット手段を設け、本仮想通信ユニット手段同士を伝送路エミュレーション手段で接続する。仮想通信ユニット手段は、伝送路等による遅延を模擬するために、遅延時間を設定する入力手段を持ち、本遅延時間を手動またはプログラムによって設定可能とする。また、仮想通信ユニットはタイムアウトによる定期的な遅延を行うことを可能としていた(例えば、特許文献1)。
特開平11−73210号公報「エミュレーション方法およびエミュレータ装置」第1図
従来のエミュレーション方法およびエミュレータ装置では、PLC間の伝送路等よる遅延を模擬する際に、手動またはプログラムによって固定的に設定された遅延時間を用いて模擬するか、あるいは、タイマー部を用いた固定的な遅延時間を模擬するか、のいずれかの方法をとっていた。どちらの方法も遅延時間については固定的であり、各PLCのプログラム実行状態とともに変化し得る遅延時間を正確に模擬できないという課題があった。
この発明は上記のような課題を解決するためになされたもので、各PLCのプログラム実行状態から遅延時間を計算し正確な遅延模擬方法を提供することを目的とする。
この発明のPLCシステム模擬装置は、
それぞれが所定のプログラムを実行する複数のPLC(Programmable Logic Controller)をネットワークで接続したPLCシステムであって、それぞれの前記PLCによって共有が可能なメモリ空間であるネットワーク共有メモリを備えたPLCシステムを模擬するPLCシステム模擬装置において、
前記複数のPLCと一対一に対応する複数の仮想PLC部であって、対応する前記PLCが実行する前記プログラムを格納して実行することにより前記ネットワーク共有メモリへの所定の値の書込みを要求する書込み要求と前記ネットワーク共有メモリの参照を要求する参照要求とを出力する複数の仮想PLC部と、
前記ネットワーク共有メモリに相当するとともに前記複数の仮想PLC部に一対一に対応する複数の対応メモリと、
前記複数の仮想PLC部のそれぞれにより実行される前記プログラムの状態遷移を監視する状態遷移監視部と、
いずれかの前記仮想PLC部が前記書込み要求を出力すると、前記状態遷移監視部からすべての前記仮想PLC部における前記プログラムの現在の状態を取得し、取得された前記状態に基づくことにより前記書込み要求を出力した前記仮想PLC部である出力仮想PLC以外のすべての前記仮想PLC部に対応する前記対応メモリに前記所定の値を書込むべきタイミングを示す遅延時間を個別に決定し、個別に決定された前記遅延時間が経過したときに、経過した前記遅延時間に対応する前記対応メモリに前記所定の値を書込む遅延模擬部と
を備えたことを特徴とする。
それぞれが所定のプログラムを実行する複数のPLC(Programmable Logic Controller)をネットワークで接続したPLCシステムであって、それぞれの前記PLCによって共有が可能なメモリ空間であるネットワーク共有メモリを備えたPLCシステムを模擬するPLCシステム模擬装置において、
前記複数のPLCと一対一に対応する複数の仮想PLC部であって、対応する前記PLCが実行する前記プログラムを格納して実行することにより前記ネットワーク共有メモリへの所定の値の書込みを要求する書込み要求と前記ネットワーク共有メモリの参照を要求する参照要求とを出力する複数の仮想PLC部と、
前記ネットワーク共有メモリに相当するとともに前記複数の仮想PLC部に一対一に対応する複数の対応メモリと、
前記複数の仮想PLC部のそれぞれにより実行される前記プログラムの状態遷移を監視する状態遷移監視部と、
いずれかの前記仮想PLC部が前記書込み要求を出力すると、前記状態遷移監視部からすべての前記仮想PLC部における前記プログラムの現在の状態を取得し、取得された前記状態に基づくことにより前記書込み要求を出力した前記仮想PLC部である出力仮想PLC以外のすべての前記仮想PLC部に対応する前記対応メモリに前記所定の値を書込むべきタイミングを示す遅延時間を個別に決定し、個別に決定された前記遅延時間が経過したときに、経過した前記遅延時間に対応する前記対応メモリに前記所定の値を書込む遅延模擬部と
を備えたことを特徴とする。
この発明により、PLCシステムにおける正確な遅延模擬を提供する模擬装置を提供することができる。
実施の形態1.
図1は、コンピュータである遅延模擬装置1000(PLCシステム模擬装置)の外観の一例を示す図である。図1において、遅延模擬装置1000は、システムユニット830、CRT(Cathode・Ray・Tube)やLCD(液晶)の表示画面を有する表示装置813、キーボード814(Key・Board:K/B)、マウス815、FDD817(Flexible・Disk・ Drive)、コンパクトディスク装置818(CDD:Compact Disk Drive)、プリンタ装置819などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
図1は、コンピュータである遅延模擬装置1000(PLCシステム模擬装置)の外観の一例を示す図である。図1において、遅延模擬装置1000は、システムユニット830、CRT(Cathode・Ray・Tube)やLCD(液晶)の表示画面を有する表示装置813、キーボード814(Key・Board:K/B)、マウス815、FDD817(Flexible・Disk・ Drive)、コンパクトディスク装置818(CDD:Compact Disk Drive)、プリンタ装置819などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット830は、コンピュータであり、また、ネットワークに接続されている。
図2は、実施の形態1における遅延模擬装置1000のハードウェア資源の一例を示す図である。図2において、遅延模擬装置1000は、プログラムを実行するCPU810(中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU810は、バス825を介してROM(Read Only Memory)811、RAM(Random Access Memory)812、表示装置813、キーボード814、マウス815、通信ボード816、FDD817、CDD818、プリンタ装置819、磁気ディスク装置820と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置820の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
RAM812は、揮発性メモリの一例である。ROM811、FDD817、CDD818、磁気ディスク装置820等の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部、格納部の一例である。通信ボード816、キーボード814、FDD817などは、入力部、入力装置の一例である。また、通信ボード816、表示装置813、プリンタ装置819などは、出力部、出力装置の一例である。
通信ボード816は、ネットワーク(LAN等)に接続されている。通信ボード816は、LANに限らず、インターネット、ISDN等のWAN(ワイドエリアネットワーク)などに接続されていても構わない。
磁気ディスク装置820には、オペレーティングシステム821(OS)、ウィンドウシステム822、プログラム群823、ファイル群824が記憶されている。プログラム群823のプログラムは、CPU810、オペレーティングシステム821、ウィンドウシステム822により実行される。
上記プログラム群823には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU810により読み出され実行される。
ファイル群824には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明する情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU810によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明においては、データや信号値は、RAM812のメモリ、FDD817のフレキシブルディスク、CDD818のコンパクトディスク、磁気ディスク装置820の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disk)等の記録媒体に記録される。また、データや信号は、バス825や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「手段」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ROM811に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU810により読み出され、CPU810により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
図3は、本実施の形態1における遅延模擬装置1000(PLCシステム模擬装置)の構成を示す図である。遅延模擬装置1000は、パーソナルコンピュータ等の汎用計算機上で動作する。本実施の形態1(実施の形態2〜4も同様)は、PCLネットワークにおける「ネットワーク共有メモリ」への値の書込みにおける遅延の模擬を目的とする。
遅延模擬装置1000は、仮想PLCユニット100a、100bと、スキャンタイムテーブル格納部200と、状態遷移監視部300と、クロック部400と、遅延模擬部500と、共有メモリ部600とを備える。一つの仮想PLCユニットは、実際の一台のPLC(以下、実PLCという場合がある。)に対応する。例えば、仮想PLCユニット100aは実際の一台のPLCに対応し、仮想PLCユニット100bは、別の実際の一台のPLCに対応する。図3では仮想PLCユニット100a、100bの2つのユニットを示しているが、これは説明の便宜のためであり、仮想PLCユニットの数は限定されない。仮想PLCユニットの構成は同じであるので、仮想PLCユニット100aを例に説明する。仮想PLCユニット100aは、仮想PLC部110aと遅延模擬結果メモリ120a(対応メモリの一例)とを備える。また、仮想PLC部110aは、実際のPLCに格納されるプログラムに対応するプログラム111a、内部メモリ113a、プログラム111aを実行する実行部112a、状態変更検出部114a、コンフィグレーション部115aを備える。なお、仮想PLCユニット100a、仮想PLCユニット100b等あるいはその構成要素を区別する必要のない場合には、アルファベットを省略する場合がある。これらの構成要素の機能は、以下の動作説明等で述べる。また、スキャンタイムテーブル格納部200は、スキャンタイムテーブル210とスキャンタイム入力部220とを備える。状態遷移監視部300は、メモリ/状態対応テーブル310を備える。遅延模擬部500は、遅延時間管理テーブル510を備える。なお、構成要素の具体的な機能は、動作の説明で述べる。
仮想PLCユニット100aを例に説明する。仮想PLC部110は、パーソナルコンピュータ等の汎用計算機上で動作する実PLC(Programmable Logic Controller)の模擬ソフトウェア(インタプリタ)である。プログラム111aは実PLCで実行されるプログラムである。実PLCで実行されるプログラム111aを仮想PLC部110aに与えることで、実PLCを必要とせずプログラム111aの実行/デバッグが可能である。実行部112aは、プログラム111aを実行する。内部メモリ113aは、プログラム111aの実行状態を格納する。状態変更検出部114a、コンフィグレーション部115については、後述する。
(共有メモリ600)
実PLCのPLCシステムでは、複数の実PLCをネットワークで接続し、連携動作させることが可能である。このようなネットワーク(PLCシステム)の例としてMELSECNET(登録商標)やCC−Link(登録商標)などがある。特に、MELSECNET(登録商標)では、「共有メモリ型のネットワークシステム」が提供されており、全PLCから共有可能なメモリ空間(以下ではこれをと呼ぶ)が提供される。前記のように、本実施の形態1(実施の形態2〜4も同様)は、「ネットワーク共有メモリ」への値の書込みにおける遅延の模擬を目的とする。本実施の形態1における共有メモリ部600は、この「ネットワーク共有メモリ」を模擬する。実際のPLCシステムでは、それぞれの実PLCは、「ネットワーク共有メモリ」への値の書込み、また、「ネットワーク共有メモリ」上の値の参照が可能である。通常、ある実PLCが「ネットワーク共有メモリ」上に書込んだ値が、ネットワークを介して別の実PLCに物理的に伝播するまで遅延が存在する。遅延模擬部500と遅延模擬結果メモリ120とは、「ネットワーク共有メモリ」における更新値の伝播遅延を模擬するものである。なお、クロック部400は、遅延模擬部500に対して遅延時間を計測するためのクロックを供給する。
実PLCのPLCシステムでは、複数の実PLCをネットワークで接続し、連携動作させることが可能である。このようなネットワーク(PLCシステム)の例としてMELSECNET(登録商標)やCC−Link(登録商標)などがある。特に、MELSECNET(登録商標)では、「共有メモリ型のネットワークシステム」が提供されており、全PLCから共有可能なメモリ空間(以下ではこれをと呼ぶ)が提供される。前記のように、本実施の形態1(実施の形態2〜4も同様)は、「ネットワーク共有メモリ」への値の書込みにおける遅延の模擬を目的とする。本実施の形態1における共有メモリ部600は、この「ネットワーク共有メモリ」を模擬する。実際のPLCシステムでは、それぞれの実PLCは、「ネットワーク共有メモリ」への値の書込み、また、「ネットワーク共有メモリ」上の値の参照が可能である。通常、ある実PLCが「ネットワーク共有メモリ」上に書込んだ値が、ネットワークを介して別の実PLCに物理的に伝播するまで遅延が存在する。遅延模擬部500と遅延模擬結果メモリ120とは、「ネットワーク共有メモリ」における更新値の伝播遅延を模擬するものである。なお、クロック部400は、遅延模擬部500に対して遅延時間を計測するためのクロックを供給する。
(状態遷移監視部300)
状態遷移監視部300は、それぞれの仮想PLC部110で実行中のプログラム111の状態遷移を監視する。プログラム111の状態遷移条件と各状態とについては、SFC(Sequential Function Chart)やUML(Unified Modeling Language)などによってユーザが設計(定義)するものとする。状態遷移を基本とする設計手法は本実施の形態1と密接な関連があるため、以下、図4を用いてSFCと状態とについて簡単に説明する。
状態遷移監視部300は、それぞれの仮想PLC部110で実行中のプログラム111の状態遷移を監視する。プログラム111の状態遷移条件と各状態とについては、SFC(Sequential Function Chart)やUML(Unified Modeling Language)などによってユーザが設計(定義)するものとする。状態遷移を基本とする設計手法は本実施の形態1と密接な関連があるため、以下、図4を用いてSFCと状態とについて簡単に説明する。
図4は、具体的な設例のSFCを示す図である。この設例では、次の様な場合を想定する。
(1)台車21は、最初A地点に停止(状態S0)している。
(2)スタートボタンを押すことにより、台車21はB地点へ向かって移動(状態S1)を開始する。
(3)台車21はB地点に到着すると、1分間停止(状態S2)した後、A地点へと移動(状態S3)を開始する。
(4)台車21はA地点に到着すると、次にスタートボタンが押されるまで、A地点で停止(状態S0へ戻る)する。
(1)台車21は、最初A地点に停止(状態S0)している。
(2)スタートボタンを押すことにより、台車21はB地点へ向かって移動(状態S1)を開始する。
(3)台車21はB地点に到着すると、1分間停止(状態S2)した後、A地点へと移動(状態S3)を開始する。
(4)台車21はA地点に到着すると、次にスタートボタンが押されるまで、A地点で停止(状態S0へ戻る)する。
(SFCとラダープログラム)
このような制御を記述するSFCは、図4の左に示すSFC2002のようになる。本設例のSFCの実行状態には状態S0〜状態S3がある。その各実行状態での処理を記述したラダープログラムでは、状態S0〜状態S3は、それぞれM00、M01、M02、M03等の仮想PLC部110の内部メモリ113の値として表現できる。
このような制御を記述するSFCは、図4の左に示すSFC2002のようになる。本設例のSFCの実行状態には状態S0〜状態S3がある。その各実行状態での処理を記述したラダープログラムでは、状態S0〜状態S3は、それぞれM00、M01、M02、M03等の仮想PLC部110の内部メモリ113の値として表現できる。
例えば、図5は、ラダープログラムにおいて状態S1をM01に記憶する方法を示している。本プログラムにおいて、スタートボタンX01が押されると、メモリX001が1(ONを意味する)になる。メモリX001が1(ON)になると、メモリM01が1(ON)になり、その後、台車21がB地点に到着するまで、自己保持回路によりM01は1(ON)を維持する。このように、SFCでは、1つまたは複数のメモリ値によってプログラム実行の状態を表すことが可能であり、状態遷移監視部300は本メモリ値を参照することで、プログラム実行の状態を検出する。スキャンタイムテーブル格納部200のスキャンタイムテーブル210には、各仮想PLCで実行中のプログラムの状態とそれに対応するスキャンタイム値を格納する。
次に、図4の台車21の設例における動作について説明する。ここでは、図4に示した制御を仮想PLC1(仮想PLC部110aに相当)と仮想PLC2(仮想PLC部110bに相当)とを用いて実施する場合について説明する。
図6は、仮想PLC1と仮想PLC2が制御するI/O(読み書きするメモリ)についてまとめた表である。図6に示すように、
X00はスタートボタン、
Y01は台車21をB地点へ移動するためのモーター、
X01は台車21がA地点に到着したことを検知するためのセンサー、
X02は台車21がB地点に到着したことを検知するためのセンサー、
T02は台車21がB地点で1分間停止するためのタイマー、
Y02は台車21がA地点へ移動するためのモーター
を表している。そして、図6の右欄には、各メモリ(I/O)に関して直接的に制御を実行する仮想PLCを明記した。例えば、スタートボタンX00の値(ON/OFF)は、仮想PLC1が入力として受け取る。B地点への台車21の移動は、仮想PLC1がモーターY01をONにすることで開始する。A地点への台車21の移動は仮想PLC2がY02をONにすることで開始する。
X00はスタートボタン、
Y01は台車21をB地点へ移動するためのモーター、
X01は台車21がA地点に到着したことを検知するためのセンサー、
X02は台車21がB地点に到着したことを検知するためのセンサー、
T02は台車21がB地点で1分間停止するためのタイマー、
Y02は台車21がA地点へ移動するためのモーター
を表している。そして、図6の右欄には、各メモリ(I/O)に関して直接的に制御を実行する仮想PLCを明記した。例えば、スタートボタンX00の値(ON/OFF)は、仮想PLC1が入力として受け取る。B地点への台車21の移動は、仮想PLC1がモーターY01をONにすることで開始する。A地点への台車21の移動は仮想PLC2がY02をONにすることで開始する。
図4のLB01およびLB02は、仮想PLC1および仮想PLC2によって共有されるメモリ(ネットワーク共有メモリ空間上のメモリ)を表している。LB01についてはセンサーX01がON(1)/OFF(0)すると、その値を仮想PLC1上のプログラム(プログラム111a)がLB01に書き込む。同様に、LB02についてはセンサーX02がON/OFFすると、その値を仮想PLC2上のプログラム(プログラム111b)がLB02に書き込む。LB01の値は仮想PLC2上のプログラムからも参照可能であり、LB02の値は仮想PLC1からも参照可能である。
図7は、それぞれの仮想PLCで動作するプログラムの状態遷移を表したものである。通常、このようなPLCシステムでは、1つの状態遷移を2つの仮想PLCで共有することが考えられるが、ここではより一般的な状況として、仮想PLC1と仮想PLC2の状態遷移を別々に記述した。最初に仮想PLC1の状態遷移5001について説明する。
(仮想PLC1の状態遷移5001)
仮想PLC1(のプログラム)の初期状態S11は、台車21がAに停車している状態を表す。スタートボタンX00がONになると、仮想PLC1はモーターY01をONにし、Bへの移動状態S12へと遷移する。一方、センサーX02がONになると仮想PLC2によってLB02がONに設定され、仮想PLC1はモーターY01をOFFする。これにより、仮想PLC1は、台車21がBへ到着した状態S13へと遷移する。この後、仮想PLC2によって台車21がAに戻されると、センサーX01がONになり、仮想PLC1のプログラムは状態S11へと戻る。
仮想PLC1(のプログラム)の初期状態S11は、台車21がAに停車している状態を表す。スタートボタンX00がONになると、仮想PLC1はモーターY01をONにし、Bへの移動状態S12へと遷移する。一方、センサーX02がONになると仮想PLC2によってLB02がONに設定され、仮想PLC1はモーターY01をOFFする。これにより、仮想PLC1は、台車21がBへ到着した状態S13へと遷移する。この後、仮想PLC2によって台車21がAに戻されると、センサーX01がONになり、仮想PLC1のプログラムは状態S11へと戻る。
(仮想PLC2の状態遷移5002)
次に、仮想PLC2の状態遷移5002について説明する。仮想PLC2の初期状態S21は、台車21がAに到着している状態を表す(この状態はすでにAを出発して移動している状態を含んでいる)。センサーX02がONになると、仮想PLC2はLB02をONにし、仮想PLC1はモーターY01をOFFにする。これにより、仮想PLC2は台車21がBに停止した状態S22へと遷移する。Bに停止後、タイマーT02は設定して1分後にONになる。T02がONになると、仮想PLC2はモーターY02をONにし、Aへの移動状態S23になる。台車21がAへ到着するとセンサーX01がONになる。仮想PLC1がLB01をONにすると、仮想PLC2は状態S21へと戻る。本実施の形態1では、単純化のため、図7に示すように上記の仮想PLC(上のプログラム)の各状態S11〜S23をそれぞれ対応する単一のメモリM11〜M23で表す。具体的には、M11がONの場合、仮想PLC1のプログラムは状態S11にあり、M23がONの場合、仮想PLC2のプログラムは状態S23にある。
次に、仮想PLC2の状態遷移5002について説明する。仮想PLC2の初期状態S21は、台車21がAに到着している状態を表す(この状態はすでにAを出発して移動している状態を含んでいる)。センサーX02がONになると、仮想PLC2はLB02をONにし、仮想PLC1はモーターY01をOFFにする。これにより、仮想PLC2は台車21がBに停止した状態S22へと遷移する。Bに停止後、タイマーT02は設定して1分後にONになる。T02がONになると、仮想PLC2はモーターY02をONにし、Aへの移動状態S23になる。台車21がAへ到着するとセンサーX01がONになる。仮想PLC1がLB01をONにすると、仮想PLC2は状態S21へと戻る。本実施の形態1では、単純化のため、図7に示すように上記の仮想PLC(上のプログラム)の各状態S11〜S23をそれぞれ対応する単一のメモリM11〜M23で表す。具体的には、M11がONの場合、仮想PLC1のプログラムは状態S11にあり、M23がONの場合、仮想PLC2のプログラムは状態S23にある。
(スキャンタイムテーブル格納部200)
図8は、スキャンタイムテーブル格納部200が格納するスキャンタイムテーブル210を示す図である。図3のスキャンタイムテーブル格納部200は、図8のようにそれぞれの仮想PLC部におけるプログラムの状態と、プログラムの状態に対応するスキャンタイムとの組から構成されるスキャンタイムテーブル210を格納する。スキャンタイムテーブル格納部200はスキャンタイム入力部220を備える。スキャンタイム入力部220により、プログラムの各状態と状態に対応するスキャンタイムを外部から設定可能である。図8に示したスキャンタイムの設定例では、仮想PLC1については、状態S11のスキャンタイムは10ms、状態S12のスキャンタイムは20ms、状態S13のスキャンタイムは15ms、仮想PLC2ついては、状態S21のスキャンタイムは40ms、状態S22のスキャンタイムは10ms、状態S23のスキャンタイムは25msと設定されている。
図8は、スキャンタイムテーブル格納部200が格納するスキャンタイムテーブル210を示す図である。図3のスキャンタイムテーブル格納部200は、図8のようにそれぞれの仮想PLC部におけるプログラムの状態と、プログラムの状態に対応するスキャンタイムとの組から構成されるスキャンタイムテーブル210を格納する。スキャンタイムテーブル格納部200はスキャンタイム入力部220を備える。スキャンタイム入力部220により、プログラムの各状態と状態に対応するスキャンタイムを外部から設定可能である。図8に示したスキャンタイムの設定例では、仮想PLC1については、状態S11のスキャンタイムは10ms、状態S12のスキャンタイムは20ms、状態S13のスキャンタイムは15ms、仮想PLC2ついては、状態S21のスキャンタイムは40ms、状態S22のスキャンタイムは10ms、状態S23のスキャンタイムは25msと設定されている。
(状態遷移監視部300)
状態遷移監視部300は、各仮想PLCの状態遷移を監視する。監視の具体的な方法については、次の「(1)ポーリング」と「(2)仮想PLC部からの通知」とがある。
(1)ポーリング:状態遷移監視部300が各仮想PLC部内にある状態を表すメモリ(M11〜M23)の値の変化を期的にポーリングすることによって監視する。
(2)仮想PLC部からの通知:プログラムを実行中の仮想PLC部から状態を示すメモリ値を書き換えたという通知を受けることによって監視する。
これら、いずれの方法も適用できる。
状態遷移監視部300は、各仮想PLCの状態遷移を監視する。監視の具体的な方法については、次の「(1)ポーリング」と「(2)仮想PLC部からの通知」とがある。
(1)ポーリング:状態遷移監視部300が各仮想PLC部内にある状態を表すメモリ(M11〜M23)の値の変化を期的にポーリングすることによって監視する。
(2)仮想PLC部からの通知:プログラムを実行中の仮想PLC部から状態を示すメモリ値を書き換えたという通知を受けることによって監視する。
これら、いずれの方法も適用できる。
(「(1)ポーリング」による方法)
図9は、状態遷移監視部300による「(1)ポーリング」の方法を示している。状態遷移監視部300は、メモリ/状態対応テーブル310を持つ。メモリ/状態対応テーブル310は、各仮想PLC部の状態(即ち各仮想PLC部の格納するプログラムの状態)を表す内部メモリ識別子(M11〜M23)と、その内部メモリがONになった場合の状態との対応を示すテーブルである。ここでは、仮想PLC1の内部メモリM11が状態S11に対応し、内部メモリM12が状態S12に対応し、内部メモリM13が状態S13に対応する。また、仮想PLC2の内部メモリM21が状態S21に対応し、内部メモリM22が状態S22に対応し、内部メモリM33が状態S23に対応する。
図9は、状態遷移監視部300による「(1)ポーリング」の方法を示している。状態遷移監視部300は、メモリ/状態対応テーブル310を持つ。メモリ/状態対応テーブル310は、各仮想PLC部の状態(即ち各仮想PLC部の格納するプログラムの状態)を表す内部メモリ識別子(M11〜M23)と、その内部メモリがONになった場合の状態との対応を示すテーブルである。ここでは、仮想PLC1の内部メモリM11が状態S11に対応し、内部メモリM12が状態S12に対応し、内部メモリM13が状態S13に対応する。また、仮想PLC2の内部メモリM21が状態S21に対応し、内部メモリM22が状態S22に対応し、内部メモリM33が状態S23に対応する。
状態遷移監視部300は、クロック部400を用いて時間間隔を設定し、これに基づいて定期的に全仮想PLC部の内部メモリ113の変化(OFF→ON)を監視し、各仮想PLC部の現在状態7002を追跡する。それぞれの仮想PLC部110上のプログラム111は、実行部112により実行され、それぞれの仮想PLC部110上のプログラム111の状態は、実行部112により内部メモリ113に書き込まれる。図9では、ある周期のポーリングにて仮想PLC1のM11がONであり、仮想PLC1は状態S11にある。また、仮想PLC2のM23がONであり、仮想PLC2は状態S23にあることを表している。
図10は、状態遷移監視部300によるポーリング動作を示すフローチャートである。ステップ8001において、状態遷移監視部300は、クロック部400を用いてタイムアウト待ちをする。ステップ8002において、状態遷移監視部300は、ポーリングしていない仮想PLC部があるかどうかを判定する。ある場合はステップ8003に進み、ない場合はステップ8001にもどる。ステップ8003において、状態遷移監視部300は、ポーリングしていない仮想PLC部の内部メモリ113の値を取得する。ステップ8004において、状態遷移監視部300は、内部メモリ113の値から現在の状態を識別して保存する。
(「(2)仮想PLC部からの通知」による方法:状態変更検出部114)
図11は、「(2)仮想PLC部からの通知」による方法を示す図である。この方法は、仮想PLC部が状態の変化を状態遷移監視部300に通知する。この場合、仮想PLC部110は、状態変更検出部114を持つ。実行部112は、プログラム111の実行の際、状態変更検出部114を介して内部メモリ113へ値を書込む。状態変更検出部114は、メモリ/状態対応テーブル114−1を持つ。メモリ/状態対応テーブル114−1は、「(1)ポーリング」の場合の状態遷移監視部300が持つメモリ/状態対応テーブル310に対応するテーブルである。状態変更検出部114は、内部メモリ113への値の書込みが発生すると、メモリ/状態対応テーブル114−1を更新するとともに更新後のメモリ/状態対応テーブル114−1をもとに、新たな状態を状態遷移監視部300へ通知する。状態遷移監視部300は、この通知に基づいて各仮想PLC部(即ち各プログラム)の現在状態7002を更新する。このように上記の「(1)ポーリング方式」とは異なり「(2)仮想PLCからの通知方式」では、状態遷移監視部300は、その監視にクロック部400を利用しない。
図11は、「(2)仮想PLC部からの通知」による方法を示す図である。この方法は、仮想PLC部が状態の変化を状態遷移監視部300に通知する。この場合、仮想PLC部110は、状態変更検出部114を持つ。実行部112は、プログラム111の実行の際、状態変更検出部114を介して内部メモリ113へ値を書込む。状態変更検出部114は、メモリ/状態対応テーブル114−1を持つ。メモリ/状態対応テーブル114−1は、「(1)ポーリング」の場合の状態遷移監視部300が持つメモリ/状態対応テーブル310に対応するテーブルである。状態変更検出部114は、内部メモリ113への値の書込みが発生すると、メモリ/状態対応テーブル114−1を更新するとともに更新後のメモリ/状態対応テーブル114−1をもとに、新たな状態を状態遷移監視部300へ通知する。状態遷移監視部300は、この通知に基づいて各仮想PLC部(即ち各プログラム)の現在状態7002を更新する。このように上記の「(1)ポーリング方式」とは異なり「(2)仮想PLCからの通知方式」では、状態遷移監視部300は、その監視にクロック部400を利用しない。
(遅延模擬部500)
次に、遅延模擬部500の動作を説明する。遅延模擬部500は、各仮想PLC部110から「ネットワーク共有メモリ」(LB01、LB02)に対する書込み要求を受ける。各仮想PLC部110は、「ネットワーク共有メモリ」上の値を参照する場合、遅延模擬結果メモリ120上の値を参照する。遅延模擬結果メモリ120は、図3に示したように仮想PLC部110ごとに存在する。以下の例では、LB01やLB02が「ネットワーク共有メモリ」であり、遅延模擬部500は、仮想PLC1(仮想PLC部110aに対応)上のプログラム(プログラム111に相当)のLB01への書込み要求、仮想PLC2のLB02への書込み要求を受ける。
次に、遅延模擬部500の動作を説明する。遅延模擬部500は、各仮想PLC部110から「ネットワーク共有メモリ」(LB01、LB02)に対する書込み要求を受ける。各仮想PLC部110は、「ネットワーク共有メモリ」上の値を参照する場合、遅延模擬結果メモリ120上の値を参照する。遅延模擬結果メモリ120は、図3に示したように仮想PLC部110ごとに存在する。以下の例では、LB01やLB02が「ネットワーク共有メモリ」であり、遅延模擬部500は、仮想PLC1(仮想PLC部110aに対応)上のプログラム(プログラム111に相当)のLB01への書込み要求、仮想PLC2のLB02への書込み要求を受ける。
(1)遅延模擬部500は、仮想PLC部110から「ネットワーク共有メモリ」に対する書込み要求を受けると、要求を受けた仮想PLC部110(出力ユニットの仮想PLC部)の遅延模擬結果メモリ120と共有メモリ部600とに対して、すぐにその値を書き込む。
(2)一方、遅延模擬部500は、それ以外(出力ユニット以外)の仮想PLC部110の遅延模擬結果メモリ120に対しては、以下で説明する遅延の後、共有メモリ部600より値を取り出し遅延模擬結果メモリ120に対して値の書込みを行う。
(2)一方、遅延模擬部500は、それ以外(出力ユニット以外)の仮想PLC部110の遅延模擬結果メモリ120に対しては、以下で説明する遅延の後、共有メモリ部600より値を取り出し遅延模擬結果メモリ120に対して値の書込みを行う。
例えば、図12は、仮想PLC1がLB01(ネットワーク共有メモリ)に対して書込みを行った様子を表している。遅延模擬部500は、仮想PLC1から「書込み要求」を受けると、仮想PLC1用の遅延模擬結果メモリ120と共有メモリ部600とにLB01の値を書き込む。一方、遅延模擬部500は、仮想PLC2の遅延模擬結果メモリ120に対しては、所定の時間が経過した後、LB01の値を共有メモリ部600から取り出して書込みを行う。例えば、遅延模擬部500は、図12の「式10001」で計算される遅延時間の後、LB01の値を共有メモリ部600から取り出して仮想PLC2の遅延模擬結果メモリ120に書き込む。
「式10001」において、遅延模擬部500は、仮想PLC1および仮想PLC2のスキャンタイム「S1、S2」及びその他の各種値「α1、α2、LS」から遅延時間を計算しているが、「α1、α2、LS」については、各仮想PLC部110のコンフィグレーション部115を参照することで、遅延時間を計算することができる。コンフィグレーション部115は、実PLCで用いる設定情報などを保有しており、「α1、α2、LS」は、この設定情報から導かれる値であるが、ここでは簡単化のため固定値として扱う。遅延模擬部500は、仮想PLC1と仮想PLC2とのスキャンタイム「S1,S2」は、それぞれで実行中のプログラムの状態に依存し、遅延模擬部500が状態遷移監視部300に問い合わせて取得する。遅延模擬部500は、スキャンタイム「S1,S2」や「α1、α2、LS」に基づいて計算された遅延時間の経過後に、仮想PLC2の遅延模擬結果メモリ120に対してLB01の値を書き込む必要があることを、遅延時間管理テーブル510に記録する。遅延模擬部500は、クロック部400を用いて、記録した遅延時間だけ経過した後、共有メモリ部600からLB01の値を取り出し、仮想PLC2の遅延模擬結果メモリ120に対してLB01の値を書き込む。
図13は、仮想PLC3部を加えた3台がネットワーク共有メモリを共有している場合を示す図である。以上の説明では、仮想PLC1と仮想PLC2との2台が「ネットワーク共有メモリ」を共有し、「ネットワーク共有メモリ」(LB01)の値が仮想PLC1から仮想PLC2へ伝播する遅延の模擬方法を示したが、図13に示すように、仮想PLC3を加えた3台がネットワーク共有メモリを共有しても良いのはもちろんである。3台の場合は、2台の場合と同様に、仮想PLC1がLB01に対して値を書き込むとする。ここでの注意点は、LB01を参照する仮想PLCが複数台いる場合、図13の「式11001」、「式11002」に示すように、遅延時間をそれぞれの仮想PLC部(即ちプログラム)の「状態」とスキャンタイムとに応じて求める必要がある。即ち遅延模擬部500は、遅延時間を決定する場合に、書込み要求を出力した仮想PLC部110のプログラム111の現在の遷移状態に対応するスキャンタイムと、遅延時間を決定するべき遅延模擬結果メモリ120を有するその仮想PLC部のプログラムの現在の遷移状態に対応するスキャンタイムとに基づいて、遅延時間を決定するべき遅延模擬結果メモリ120を有するその仮想PLCユニットについての遅延時間を決定する。この設例で具体的に説明すれば、遅延模擬部500は、仮想PLC1から仮想PLC2へ伝播する遅延時間については図13の「式11001」を用いて計算し、仮想PLC1から仮想PLC3へ伝播する遅延時間については「式11002」を用いて計算する。
以上のように、複数台のPLCをMELSECNET(登録商標)のような共有メモリ型のネットワークシステムによって接続したPLCシステムにおいて、このようなPLCシステムを汎用計算機上でエミュレーションするに際し、各仮想PLC部のプログラムの状態遷移を把握する手段(監視部300)を提供し、かつ、それぞれの状態におけるスキャンタイムを設定/取得する手段を提供することで、ネットワーク共有メモリに書込んだ値のPLC間での伝播遅延の計算を容易化し、各仮想PLCのI/O(メモリの値の変化)のタイミングを正確に模擬することで、プログラムのデバッグを仮想PLCにおいても正確に行える効果がある。
実施の形態2.
実施の形態1では、各仮想PLC部の状態が確定的な場合において、それぞれの遷移状態に対応したスキャンタイムを取得し、このスキャンタイムを遅延時間の計算に用いて遅延を模擬した。本実施の形態2では、仮想PLC部の遷移状態がネストしており、ネストした状態のいずれの状態にあるかが確定的でない場合の遅延時間の計算方法について示す。但し、ネストした状態を含む上位レベルの状態では、どの状態にあるのかが確定できるものとする。
実施の形態1では、各仮想PLC部の状態が確定的な場合において、それぞれの遷移状態に対応したスキャンタイムを取得し、このスキャンタイムを遅延時間の計算に用いて遅延を模擬した。本実施の形態2では、仮想PLC部の遷移状態がネストしており、ネストした状態のいずれの状態にあるかが確定的でない場合の遅延時間の計算方法について示す。但し、ネストした状態を含む上位レベルの状態では、どの状態にあるのかが確定できるものとする。
遅延模擬装置1000の構成は、実施の形態1の図3と同じである。
図14は、仮想PLC1が、状態S11においてネストした状態S111,状態S112、状態S113を持つ状態遷移図12001を示す。例えば、台車21には荷物を入れる開口部があり、状態S111は開口部の扉のロックが解かれた状態を表し、状態S112は開口部の扉が開いた状態を表し、状態S113は開口部の扉が閉まりロックがかけられた状態を表している。状態S113になってからも、更に、荷物を入れるためにロックが再び解かれ状態S111に遷移することもある。また、本実施の形態2においては、台車21がA地点に停車してセンサーX01がONした際、状態S111、状態S112、状態S113のいずれかを初期状態として取るかは条件によって変わるものとする(図14ではハレルの表記に従いこれをConditionのCで表している)。すなわち、本実施野形態2においては、遅延模擬部500は、仮想PLC1が状態S11にあることは識別できても、ネストした状態状態S111、状態S112、状態S113のいずれの状態にあるかは識別できないとする。このようなケースは、プログラム設計において、状態S111、状態S112、状態S113を区別するメモリを用意しない等の理由により発生することがある。仮想PLC2の状態遷移図12003については実施の形態1と同様であり、説明は省略する。
(遅延模擬部500の動作)
実際の遅延模擬部500の動作について説明する。実施の形態1と同様に、センサーX01がONすることで、仮想PLC1上のプログラム111は、LB01に対してONを書き込む。このとき遅延模擬部500は、仮想PLC1用の遅延模擬結果メモリ120と共有メモリ部600にLB01の値を書込む。一方、遅延模擬部500は、仮想PLC2の遅延模擬結果メモリ120対しては、図14に示す「式12002」を用いて遅延時間の計算を行い、計算された遅延時間の後、仮想PLC2の遅延模擬結果メモリ120に対してLB01の値を書き込む。
実際の遅延模擬部500の動作について説明する。実施の形態1と同様に、センサーX01がONすることで、仮想PLC1上のプログラム111は、LB01に対してONを書き込む。このとき遅延模擬部500は、仮想PLC1用の遅延模擬結果メモリ120と共有メモリ部600にLB01の値を書込む。一方、遅延模擬部500は、仮想PLC2の遅延模擬結果メモリ120対しては、図14に示す「式12002」を用いて遅延時間の計算を行い、計算された遅延時間の後、仮想PLC2の遅延模擬結果メモリ120に対してLB01の値を書き込む。
図14に示すように、スキャンタイムテーブル210には、ネストした状態S111、状態S112、状態S113におけるスキャンタイムがそれぞれ15ms、20ms、10msと与えられている。遅延模擬部500は、仮想PLC1の現在の状態が状態S11にある場合、これらのうち最大のスキャンタイム20msを用いて遅延時間の計算を行う。仮想PLC2についてはネストした状態がないので、実施の形態1と同様に状態に対応するスキャンタイムを用いる。「式12002」では、仮想PLC1のスキャンタイムをS1(Max)、仮想PLCのスキャンタイムをS2(Max)で表している。
以上のように、遅延模擬部500が、遅延時間の計算を行う際、仮想PLCの上位レベルの状態は識別できてもネストした状態が識別できない場合、取り得るネスト状態のそれぞれのスキャンタイムから最大のスキャンタイムを取得し、これを用いて遅延時間を計算することで、遅延時間の最悪値を容易に求めることが可能となり、タイミングを考慮したプログラムのデバッグを仮想PLCにおいても正確に行えるという効果がある。
実施の形態3.
実施の形態2では、仮想PLCの状態がネストしており、ネストした状態のいずれの状態にあるかが確定的でない場合の遅延時間の計算方法について示した。本実施の形態3では、実施の形態1で示したスキャンタイムテーブル210に記載されるスキャンタイムを自動的に計算する方法を示す。
実施の形態2では、仮想PLCの状態がネストしており、ネストした状態のいずれの状態にあるかが確定的でない場合の遅延時間の計算方法について示した。本実施の形態3では、実施の形態1で示したスキャンタイムテーブル210に記載されるスキャンタイムを自動的に計算する方法を示す。
図15は、実施の形態3における遅延模擬装置1000の構成を示す図である。実施の形態3の遅延模擬装置1000は、実施の形態1に対して、さらに、スキャンタイムを自動的に計算するスキャンタイム計算部700を備える。
図16は、図15からスキャンタイム計算部700を抜きだした図である。スキャンタイム計算部700は、入力としてプログラム111の状態とその状態で実行されるプログラム(プログラム111の一部分である部分プログラム)を受け取り、その状態に対応するプログラムのスキャンタイムを出力する。出力結果はスキャンタイム入力部220へと渡され、スキャンタイム入力部220がスキャンタイムテーブル210に、その状態とその状態におけるスキャンタイムとを登録する。
図15、図16に示すように、スキャンタイム計算部700は、スキャンタイム積算算出部710と命令実行時間データベース部720とを備える。命令実行時間データベース部720には、仮想PLC部110が実行する全命令と、それぞれの命令の実行時間が記録されている。例えば、スキャンタイム計算部700は、状態S11で実行されるプログラムが入力されると、スキャンタイム積算算出部710が、そのプログラムの命令列を解析する。図16では、スキャンタイム積算算出部710により、状態S11で実行されるプログラムは命令11〜命令19で構成されていることが解析される。スキャンタイム積算算出部710は、命令11〜命令19について、それぞれの命令の実行時間を命令実行時間データベース部720から取得し、全実行時間の和を求める。そして、状態S11と算出された実行時間(全実行時間)をスキャンタイム入力部220へ渡す。スキャンタイム入力部220は、状態S11と算出された実行時間を入力すると、その組をスキャンタイムテーブル210に登録する。
以上のように、スキャンタイムテーブル格納部200のスキャンタイムテーブル210に状態とスキャンタイムとを登録する際、各状態で実行されるプログラムの命令列をオフラインで解析し、命令実行時間データベース部720を用いて、命令列全体の実行時間を算出し、状態と算出結果とをスキャンタイムテーブル210に登録する。これにより、正確なスキャンタイムを取得することが可能となる。正確なスキャンタイムにより、遅延模擬部500が算出する遅延時間も正確な値を計算することが可能となる。
実施の形態4.
実施の形態3では、スキャンタイムテーブル210に登録するスキャンタイムをオフライン時にプログラム解析を行い自動的に計算する方法を示した。実施の形態1〜実施の形態3ではスキャンタイムテーブル210から取得していたスキャンタイムを、本実施の形態4では、仮想PLCの実行時(ランタイム時)に取得する方法を説明する。
実施の形態3では、スキャンタイムテーブル210に登録するスキャンタイムをオフライン時にプログラム解析を行い自動的に計算する方法を示した。実施の形態1〜実施の形態3ではスキャンタイムテーブル210から取得していたスキャンタイムを、本実施の形態4では、仮想PLCの実行時(ランタイム時)に取得する方法を説明する。
図17は、実施の形態4における遅延模擬装置1000の構成を示すブロック図である。実施の形態4の遅延模擬装置1000は、実施の形態1の場合と比較して、スキャンタイムテーブル格納部200を持たないこと、一方、最大スキャンタイム記録部116、最大値記憶部117を備える点が異なる。図18は、プログラム実行時におけるスキャンタイム算出を説明する図である。
最大スキャンタイム記録部116は、プログラムを実行する際、クロック部400を用いてスキャンタイムを計測する。最大スキャンタイム記録部116は、プログラムの実行部112からプログラム(プログラム111が状態遷移する場合における一つの状態に対応するプログラム)の開始イベント14003とENDイベント14004を受ける。開始イベント14003は、その状態(例えば図8における状態S11)のプログラム実行がプログラムの先頭に移った際に発生する。ENDイベント14004は、その状態(例えば図8における状態S11)のプログラム実行がプログラム(ここでは状態S11に対応するプログラムを意味する)の終わりに達した際に発生する。通常、ラダープログラムでは、プログラム実行がプログラムの終わりに達すると、その他の処理を行った後、プログラム実行は先頭に戻る。例えば、状態S11に対応するプログラムが繰り返し実行される。
(1)最大スキャンタイム記録部116は、イベントを受けた際、時刻をクロック部400から取得し、開始イベントを受け取った時刻とENDイベントを受け取った時刻の差分からスキャンタイムを計測する。
(2)そして、最大スキャンタイム記録部116は、計測されたスキャンタイムが最大値記憶部117に記録されたスキャンタイムよりも大きい場合、新たな最大スキャンタイムとして最大値記憶部117に記録する。すなわち、前記のように、例えば、状態S11に対応するプログラムは繰り返し実行されるので、最大スキャンタイム記録部116は、その状態S11における最大のスキャンタイムを最大値記憶部117に記録する(繰り返し実行されるプログラムのスキャンタイムは通常、異なる)。
(3)また、本実施の形態4では、状態変更検出部114は、新たな状態にプログラムが遷移した場合に、すなわち、状態S11に対応するプログラムが状態S12に対応するプログラムに遷移した場合、最大値記憶部117に記憶されているスキャンタイムをゼロにリセットする。また、状態変更検出部114は、実施の形態1とは異なり、状態遷移監視部300に新たな状態に関する通知は行わない。
(1)最大スキャンタイム記録部116は、イベントを受けた際、時刻をクロック部400から取得し、開始イベントを受け取った時刻とENDイベントを受け取った時刻の差分からスキャンタイムを計測する。
(2)そして、最大スキャンタイム記録部116は、計測されたスキャンタイムが最大値記憶部117に記録されたスキャンタイムよりも大きい場合、新たな最大スキャンタイムとして最大値記憶部117に記録する。すなわち、前記のように、例えば、状態S11に対応するプログラムは繰り返し実行されるので、最大スキャンタイム記録部116は、その状態S11における最大のスキャンタイムを最大値記憶部117に記録する(繰り返し実行されるプログラムのスキャンタイムは通常、異なる)。
(3)また、本実施の形態4では、状態変更検出部114は、新たな状態にプログラムが遷移した場合に、すなわち、状態S11に対応するプログラムが状態S12に対応するプログラムに遷移した場合、最大値記憶部117に記憶されているスキャンタイムをゼロにリセットする。また、状態変更検出部114は、実施の形態1とは異なり、状態遷移監視部300に新たな状態に関する通知は行わない。
(遅延模擬部500)
遅延模擬部500は、遅延時間を計算する際、実施の形態1と同様に状態遷移監視部300(PLC監視部の一例)に各仮想PLC部のスキャンタイムを問い合わせる。この際、状態遷移監視部300は、スキャンタイムテーブル210を参照するのではなく(実施の形態3の遅延模擬装置1000はスキャンタイムテーブル210を持たない)、各仮想PLC部110の最大値記憶部117に記憶されているスキャンタイムの値を参照し、この値を遅延模擬部500に返す。遅延模擬部500はこの値を用いて、実施の形態1と同様に図12の「式10001」を用いて、遅延時間を計算する。この実施の形態4では、各仮想PLC部のプログラムの状態を取得する必要がない。状態遷移監視部300は、取得したスキャンタイムの最大値がどの仮想PLC部のものかを知っている。このため、この情報を状態遷移監視部300から取得することで、遅延模擬部500は、「式10001」のS1、S2にどの仮想PLC部から取得した値を代入すればよいかがわかるからである。よって、各仮想PLC部におけるプログラムの状態を取得するには及ばない。
遅延模擬部500は、遅延時間を計算する際、実施の形態1と同様に状態遷移監視部300(PLC監視部の一例)に各仮想PLC部のスキャンタイムを問い合わせる。この際、状態遷移監視部300は、スキャンタイムテーブル210を参照するのではなく(実施の形態3の遅延模擬装置1000はスキャンタイムテーブル210を持たない)、各仮想PLC部110の最大値記憶部117に記憶されているスキャンタイムの値を参照し、この値を遅延模擬部500に返す。遅延模擬部500はこの値を用いて、実施の形態1と同様に図12の「式10001」を用いて、遅延時間を計算する。この実施の形態4では、各仮想PLC部のプログラムの状態を取得する必要がない。状態遷移監視部300は、取得したスキャンタイムの最大値がどの仮想PLC部のものかを知っている。このため、この情報を状態遷移監視部300から取得することで、遅延模擬部500は、「式10001」のS1、S2にどの仮想PLC部から取得した値を代入すればよいかがわかるからである。よって、各仮想PLC部におけるプログラムの状態を取得するには及ばない。
実施の形態1に示した設計者によるスキャンタイムの入力が不可能な場合、また、実施の形態3に示したオフラインでのスキャンタイムの計算が困難な場合、本実施の形態3の方式を用いることで、最大スキャンタイムを実行時に取得することを可能とし、遅延の模擬を正確に行うことができる。
以上の実施の形態1〜4では装置としての遅延模擬装置1000を説明したが、遅延模擬装置1000の各構成要素の動作を処理ととらえることにより、遅延模擬装置1000の動作をコンピュータに実行させるプログラムとして把握することも可能である。また、このプログラムを記憶した記憶媒体として把握することも可能である。
以上の実施の形態では、複数の実PLCをPLCネットワークで接続したシステムを汎用計算機上で模擬するにあたり、各実PLCについてそこでのプログラム実行を模擬する仮想PLCを提供し、各仮想PLCの状態とそれぞれの状態に対応するスキャンタイム(プログラム実行時間)を定義しそれをスキャンタイムテーブルに格納し参照可能とする手段を提供し、各仮想PLCで実行中のプログラムの現在状態について状態を示す一連のメモリをポーリングまたはイベントによって監視する手段を提供するとともに、ある仮想PLCがPLCネットワークに対してデータを書込んだ際、本PLCネットワークに接続するすべての仮想PLCの現在状態から上記スキャンタイムテーブルを用いて各仮想PLCのスキャンタイムを取得し、取得したスキャンタイムから導かれる遅延時間を計算し、本遅延時間に基づいて遅延の後、各仮想PLCが個別に参照するメモリに対して書き込まれたデータを書き込む、上記のような特徴を持つ遅延模擬装置を説明した。
以上の実施の形態では、複数の実PLCをPLCネットワークで接続したシステムを汎用計算機上で模擬するにあたり、各実PLCについてそこでのプログラム実行を模擬する仮想PLCを提供し、各仮想PLCの状態またはネストした状態とそれぞれの状態に対応するスキャンタイム(プログラム実行時間)を定義しそれをスキャンタイムテーブルに格納し参照可能とする手段を提供し、各仮想PLCで実行中のプログラムの現在状態を示す一連のメモリをポーリングまたはイベントによって監視する手段を提供するとともに、ある仮想PLCがPLCネットワークに対してデータを書込んだ際、本PLCネットワークに接続するすべての仮想PLCの現在状態を取得するが、上位レベルの現在状態は判定できるが同状態におけるネストしたどの状態にあるのか不明の場合、上記スキャンタイムテーブルを用いて、ネストした状態のうち最大のスキャンタイムを取得し、取得したスキャンタイムから導かれる遅延時間を計算し、本遅延時間に基づいて遅延の後、各仮想PLCが個別に参照するメモリに対して書き込まれたデータを書き込む、上記のような特徴を持つ遅延模擬装置を説明した。
以上の実施の形態では、遅延模擬装置において、スキャンタイムテーブルの値を定義するにあたり、各状態において実行されるプログラムについてどのような命令列から構成されるかを解析する手段を提供し、命令と各命令実行にかかる時間を記録した命令実行時間データベースを提供しこれを参照することで、前記プログラムの実行にかかる時間を算出する手段を提供し、更に、本手段によって積算された値と状態とを前記スキャンタイムテーブルの入力部を通じて入力する、上記のような特徴を持つ遅延模擬装置を説明した。
以上の実施の形態では、遅延模擬装置において、各仮想PLCの現在状態におけるスキャンタイムを取得するにあたり、各仮想PLCに内に、プログラムの開始イベントとENDイベントからスキャンタイムを計測する手段を提供し、計測された値と過去のスキャンで計測した値とを比べ、もし今回の値が大きければ、本値を記憶部に記録し最大値を更新する手段を提供し、ある仮想PLCがPLCネットワークに対してデータを書込んだ際、本PLCネットワークに接続するすべての仮想PLCの現在状態を取得するが、この際、上記記憶部を参照しスキャンタイムを取得し、取得したスキャンタイムから導かれる遅延時間を計算し、本遅延時間に基づいて遅延の後、各仮想PLCが個別に参照するメモリに対して書き込まれたデータを書き込む、上記のような特徴を持つ遅延模擬装置を説明した。
21 台車、100,100a,100b 仮想PLCユニット、110,110a,110b 仮想PLC部、111,111a,111b プログラム、112,112a,112b 実行部、113,113a,113b 内部メモリ、114,114a,114b 状態変更検出部、114−1,114−a,114−b メモリ/状態対応テーブル、115,115a,115b コンフィグレーション部、116,116a,116b 最大スキャンタイム記録部、117,117a,117b 最大値記憶部、120,120a,120b 遅延模擬結果メモリ、200 スキャンタイムテーブル格納部、210 スキャンタイムテーブル、220 スキャンタイム入力部、300 状態遷移監視部、310 メモリ/状態対応テーブル、400 クロック部、500 遅延模擬部、510 遅延時間管理テーブル、600 共有メモリ部、700 スキャンタイム計算部、710 スキャンタイム積算算出部、720 命令実行時間データベース部、1000 遅延模擬装置。
Claims (6)
- それぞれが所定のプログラムを実行する複数のPLC(Programmable Logic Controller)をネットワークで接続したPLCシステムであって、それぞれの前記PLCによって共有が可能なメモリ空間であるネットワーク共有メモリを備えたPLCシステムを模擬するPLCシステム模擬装置において、
前記複数のPLCと一対一に対応する複数の仮想PLC部であって、対応する前記PLCが実行する前記プログラムを格納して実行することにより前記ネットワーク共有メモリへの所定の値の書込みを要求する書込み要求と前記ネットワーク共有メモリの参照を要求する参照要求とを出力する複数の仮想PLC部と、
前記ネットワーク共有メモリに相当するとともに前記複数の仮想PLC部に一対一に対応する複数の対応メモリと、
前記複数の仮想PLC部のそれぞれにより実行される前記プログラムの状態遷移を監視する状態遷移監視部と、
いずれかの前記仮想PLC部が前記書込み要求を出力すると、前記状態遷移監視部からすべての前記仮想PLC部における前記プログラムの現在の状態を取得し、取得された前記状態に基づくことにより前記書込み要求を出力した前記仮想PLC部である出力仮想PLC以外のすべての前記仮想PLC部に対応する前記対応メモリに前記所定の値を書込むべきタイミングを示す遅延時間を個別に決定し、個別に決定された前記遅延時間が経過したときに、経過した前記遅延時間に対応する前記対応メモリに前記所定の値を書込む遅延模擬部と
を備えたことを特徴とするPLCシステム模擬装置。 - 前記PLCシステム模擬装置は、さらに、
前記仮想PLC部により格納される前記プログラムごとに、前記プログラムが状態遷移する場合のそれぞれの状態とその状態の実行に要する時間を示すスキャンタイムとの対応が記載されたスキャンタイムテーブルを格納するスキャンタイムテーブル格納部を備え、
前記遅延模擬部は、
前記スキャンタイムテーブルを参照することにより取得された前記状態に対応するスキャンタイムを特定し、特定されたスキャンタイムに基づいて、前記遅延時間を個別に決定することを特徴とする請求項1記載のPLCシステム模擬装置。 - 前記遅延模擬部は、
前記遅延時間を決定する場合に、前記出力仮想PLCにおける前記プログラムの現在の状態に対応するスキャンタイムと、前記遅延時間を決定するべき前記対応メモリに対応する前記仮想PLC部における前記プログラムの現在の状態に対応するスキャンタイムとに基づいて、その前記仮想PLC部に対応する前記対応メモリについての前記遅延時間を決定することを特徴とする請求項2記載のPLCシステム模擬装置。 - 前記仮想PLCに格納される前記プログラムのうちの少なくともいずれかは、
状態遷移するうちの少なくともいずれかの状態がネスト状態であり、
前記スキャンタイムテーブルは、
前記ネスト状態のそれぞれの状態について、スキャンタイムであるネスト状態スキャンタイムが記載され、
前記遅延模擬部は、
前記遅延時間を決定する場合に前記出力仮想PLCにおける前記プログラムと前記遅延時間を決定するべき対象となる前記対応メモリに対応する前記仮想PLC部における前記プログラムとの少なくともいずれかに前記ネスト状態が存在するときは、前記スキャンタイムテーブルを参照することにより、前記ネスト状態である前記状態のスキャンタイムとして、その前記ネスト状態における最大の前記ネスト状態スキャンタイムを用いることを特徴とする請求項3記載のPLCシステム模擬装置。 - 前記PLCシステム模擬装置は、さらに、
それぞれの前記仮想PLC部から前記仮想PLC部の格納する前記プログラムが遷移し得るそれぞれの状態と前記状態に対応する前記プログラムのうちの部分的な部分プログラムとを入力し、前記部分プログラムを解析することにより前記状態ごとに前記スキャンタイムを算出するスキャンタイム計算部を備え、
前記スキャンタイムテーブル格納部は、
前記スキャンタイム計算部により算出された前記スキャンタイムを前記スキャンタイムテーブルに記載することを特徴とする請求項2〜4のいずれかに記載のPLCシステム模擬装置。 - 状態遷移するとともに各状態を複数回繰り返しながら状態遷移するプログラムを実行する複数のPLC(Programmable Logic Controller)をネットワークで接続したPLCシステムであって、それぞれの前記PLCによって共有が可能なメモリ空間であるネットワーク共有メモリを備えたPLCシステムを模擬するPLCシステム模擬装置において、
前記複数のPLCと一対一に対応する複数の仮想PLC部であって、対応する前記PLCが実行する前記プログラムを格納して実行することにより前記ネットワーク共有メモリへの所定の値の書込みを要求する書込み要求と前記ネットワーク共有メモリの参照を要求する参照要求とを出力する複数の仮想PLC部と、
前記ネットワーク共有メモリに相当するとともに前記複数のPLCに一対一に対応する複数の対応メモリと、
前記複数の仮想PLC部のそれぞれを監視するPLC部監視部と、
いずれかの前記仮想PLC部が前記書込み要求を出力すると、前記書込み要求を出力した前記仮想PLC部以外のそれぞれの前記仮想PLC部に対応する前記対応メモリに前記所定の値を書込むべきタイミングを示す遅延時間を決定する遅延模擬部と
を備え、
前記複数の仮想PLC部のそれぞれは、
自己の格納する前記プログラムの状態が複数回繰り返される場合に、その状態ごとに、1回ぶんのスキャンタイムを順次計測するとともに前回の計測値よりも今回の計測値のほうが大きい場合には、今回の計測値をその状態のスキャンタイムとして記憶し、
前記遅延模擬部は、
いずれかの前記仮想PLC部により前記書込み要求が出力されると、前記PLC監視部に対してすべての前記仮想PLC部における前記プログラムの現在の状態のスキャンタイムの取得を依頼する取得要求を出力し、
前記PLC監視部は、
前記遅延模擬部から前記取得要求を入力し、前記取得要求を入力するとすべての前記仮想PLC部からそれぞれの前記仮想PLC部の記憶している前記スキャンタイムを収集し、収集されたそれぞれの前記スキャンタイムを前記遅延模擬部に出力し、
前記遅延模擬部は、
前記PLC監視部の出力したそれぞれの前記スキャンタイムを入力し、それぞれの前記スキャンタイムに基づき前記書込み要求を出力した前記仮想PLC部以外のそれぞれの前記仮想PLC部に対応する前記対応メモリに前記所定の値を書込むべき前記遅延時間を個別に決定し、個別に決定された前記遅延時間が経過したときに、経過した前記遅延時間に対応する前記対応メモリに前記所定の値を書込むことを特徴とするPLCシステム模擬装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007199481A JP2009037329A (ja) | 2007-07-31 | 2007-07-31 | Plcシステム模擬装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007199481A JP2009037329A (ja) | 2007-07-31 | 2007-07-31 | Plcシステム模擬装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009037329A true JP2009037329A (ja) | 2009-02-19 |
Family
ID=40439189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007199481A Pending JP2009037329A (ja) | 2007-07-31 | 2007-07-31 | Plcシステム模擬装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009037329A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011107866A (ja) * | 2009-11-16 | 2011-06-02 | Hakko Denki Kk | 接続機器シミュレータのシーケンス制御装置、方法、及びプログラム |
JP2012022564A (ja) * | 2010-07-15 | 2012-02-02 | Denso Corp | 制御装置およびチューニング方法 |
JP2015057697A (ja) * | 2013-09-16 | 2015-03-26 | ゼネラル・エレクトリック・カンパニイ | 制御システムシミュレーションシステムおよび方法 |
CN108614516A (zh) * | 2018-06-20 | 2018-10-02 | 深圳市同立方科技有限公司 | 一种虚拟plc仿真系统及方法 |
CN111025933A (zh) * | 2019-11-12 | 2020-04-17 | 哈尔滨安天科技集团股份有限公司 | 工控系统中的plc仿真装置、方法、电子设备及存储介质 |
-
2007
- 2007-07-31 JP JP2007199481A patent/JP2009037329A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011107866A (ja) * | 2009-11-16 | 2011-06-02 | Hakko Denki Kk | 接続機器シミュレータのシーケンス制御装置、方法、及びプログラム |
JP2012022564A (ja) * | 2010-07-15 | 2012-02-02 | Denso Corp | 制御装置およびチューニング方法 |
JP2015057697A (ja) * | 2013-09-16 | 2015-03-26 | ゼネラル・エレクトリック・カンパニイ | 制御システムシミュレーションシステムおよび方法 |
CN108614516A (zh) * | 2018-06-20 | 2018-10-02 | 深圳市同立方科技有限公司 | 一种虚拟plc仿真系统及方法 |
CN111025933A (zh) * | 2019-11-12 | 2020-04-17 | 哈尔滨安天科技集团股份有限公司 | 工控系统中的plc仿真装置、方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10310822B1 (en) | Method and system for simulating a control program | |
Newcombe | Why amazon chose TLA+ | |
EP3715975B1 (en) | Method and apparatus for analysing a ladder program | |
Liebrenz et al. | Deductive verification of hybrid control systems modeled in Simulink with KeYmaera X | |
JP2009037329A (ja) | Plcシステム模擬装置 | |
Denil et al. | DEVS for AUTOSAR-based system deployment modeling and simulation | |
Harel et al. | Wise computing: toward endowing system development with proactive wisdom | |
JP7418608B2 (ja) | プログラマブルロジックコントローラプログラムの解析方法 | |
TWI792141B (zh) | 基於iap的模擬方法、裝置以及晶圓清洗設備 | |
JP4637175B2 (ja) | 二次的に実行されるプロセスにおけるデッドロックを検出する方法 | |
Avrunin et al. | Benchmarking finite-state verifiers | |
Basile et al. | Residuals-based fault diagnosis of industrial automation systems using timed and untimed Interpreted Petri nets | |
McLendon Jr et al. | Analysis of an Ada system using coloured Petri nets and occurrence graphs | |
Bourdil et al. | Model-checking real-time properties of an auto flight control system function | |
US10223077B2 (en) | Determination of signals for readback from FPGA | |
Elseaidy et al. | Verification of an active control system using temporal process algebra | |
WO2012053392A1 (ja) | ソフトウェアプロダクトライン開発支援装置、その方法およびそのプログラム | |
Lindsay et al. | Automation of test case generation from behavior tree requirements models | |
Magnin et al. | An efficient method for computing exact state space of Petri nets with stopwatches | |
Osen | Teaching PLC Program Organisation: How to Transfer PLC Best Practice Experience from Industry Experts to University Students. | |
RU2783906C1 (ru) | Комплекс тестирования встроенного программного обеспечения электронных устройств | |
Yang et al. | A Model Checking Based Software Requirements Specification Approach for Embedded Systems | |
Lucas | Understanding and assessing logic control design methodologies | |
Chambers et al. | Introducing X-machine models to verify PLC ladder diagrams | |
Cavalcanti et al. | Challenges in testing of cyclic systems |