JP6631301B2 - シミュレーション装置及びシミュレーション方法 - Google Patents

シミュレーション装置及びシミュレーション方法 Download PDF

Info

Publication number
JP6631301B2
JP6631301B2 JP2016025912A JP2016025912A JP6631301B2 JP 6631301 B2 JP6631301 B2 JP 6631301B2 JP 2016025912 A JP2016025912 A JP 2016025912A JP 2016025912 A JP2016025912 A JP 2016025912A JP 6631301 B2 JP6631301 B2 JP 6631301B2
Authority
JP
Japan
Prior art keywords
command
request command
transmission
response
communication interface
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.)
Expired - Fee Related
Application number
JP2016025912A
Other languages
English (en)
Other versions
JP2017054476A (ja
Inventor
安藤 博文
博文 安藤
修平 内田
修平 内田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Publication of JP2017054476A publication Critical patent/JP2017054476A/ja
Application granted granted Critical
Publication of JP6631301B2 publication Critical patent/JP6631301B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、シミュレーション装置に外部装置を接続するシステム構成において、外部装置からシミュレーション装置へ要求コマンドを送信し、シミュレーション装置から外部装置へ要求コマンドに対する応答コマンドを返信するシミュレーション装置及びシミュレーション方法に関する。
従来、組込み機器のソフトウェア開発において、開発したソフトウェアを実機の代わりにパーソナルコンピュータ上でシミュレーションを行い、動作確認を行うという手法が採られている。この手法は、実機の製作や準備が不要であり、またパソコン上で予め動作確認を行うことにより実機で動作させても、爆発や感電等の危険がないことなど安全性を確認できるなどの利点がある。
具体的には、このシミュレーション装置に、実運用において実機との間でデータを送受信して実機の動作設定や監視を行う装置(以下、「外部装置」という。)を使用し、外部装置からの要求コマンドに対して、開発ソフトウェアの動作するシミュレーション装置が正しく応答コマンドを返してくるかという動作確認を行うことがある。
外部装置は、最終的には実機と接続して用いられる。このため、実機の応答性能を前提として一定の時間内に応答コマンドが返信されなかった場合は通信タイムアウトを検出し、必要に応じて要求コマンドを再送するという構成となっていることが多い。
ところが、シミュレーション装置は、実機に比べて動作が遅い場合が多く、特にシミュレーション装置が、シミュレーション機能に特化した専用機器(HILS:Hardware in the Loop Simulator)等ではなく、市販のパーソナルコンピュータを用いるような場合は顕著である。この場合、外部装置は要求コマンドに対する応答を一定時間内に受信しなかったとしてタイムアウトになるため再送を繰り返し、通信を正常に行うことができず、シミュレーションを継続することが困難になる。
以下、図面を用いて、従来のシミュレーション装置の構成と、シミュレーション動作が実機に比べて遅いときの通信装置との通信シーケンスについて詳述する。
従来のシミュレーション装置は、図20に示すように外部装置8との間でデータの送受信を行う通信手段2、データを記憶する記憶手段4、データを用いて演算処理を実行する演算処理手段3とを備えている。このシミュレーション装置1は、パーソナルコンピュータなどの汎用のコンピュータ装置によって実現することができる。また、演算処理手段3は、その機能として開発ソフトウェアを実装してシミュレーションを実行するシミュレータ部32と、外部装置8と当該シミュレータ部32との間の通信処理を実行する通信インタフェース部31から構成されている。なお、外部装置8は、通信回線7を介してシミュレーション装置1の通信手段2に接続されている。
シミュレーション動作が遅いときの通信シーケンスを図21に示す。
まず外部装置8からシミュレーション装置1の通信インタフェース部31へ要求コマンドが送られる(a1)。通信インタフェース部31は要求コマンドを受信すると、その要求コマンドをシミュレータ部32へ渡し(a2)、シミュレータ部32はその要求コマンドを実行する(a3)。なお、図21において、スローモーション動作とは、シミュレーション動作が実機に比べて遅いことを意味する。シミュレータ部32は実行結果を応答コマンドとして通信インタフェース部31へ渡す(a4)。
シミュレータ部32は、実機に比べると処理スピードが遅いため、外部装置8側では応答コマンドのタイムアウト監視により(a6)、タイムオーバーとなり、応答コマンドを受信した時点では既に通信異常が発生したと判定して再送処理に入る。このときシミュレーション装置1から応答コマンドが返信されてきたとしても(a5)、それが再送処理開始後であると、外部装置8から要求コマンドが再送されることになる(a7)。
再送された要求コマンドは、上記と同様に、通信インタフェース部31で受信され、シミュレータ部32から渡された応答コマンドを外部装置8へ送信する(a8〜a11)。しかし、このときも外部装置8側では通信異常と判定され再送処理が行われる(a12)。したがって、再送処理が永遠に繰り返されることになる。
この問題を解決する一つの方法として、外部装置8のタイムアウト時間の設定を都度変更することも考えられるが、外部装置8においてその接続先が実機の場合とシミュレーション装置の場合とで設定を変更することは試験作業の負担が大きくなり、また試験後に設定を実機用に戻す際のミスも発生しやすくなる。また、外部装置8が実機との接続を前提としており、シミュレーション装置に適した設定に変更できない場合もある。
外部装置のタイムアウトの問題に関する技術として、たとえば特許文献1では、タイムアウトを検出する側の装置(外部装置)において、通信方式を切り替える技術が提案されている。しかしながら、この技術は外部装置の接続先がシミュレーション装置か、あるいは実機かによって通信方式を切り替える必要が生じ、設定を都度変更する作業負担や設定ミスの発生の可能性を解消することはできない。
特開2006−5746号公報
本発明は上述のかかる事情に鑑みてなされたものであり、既存の外部装置の設定を変更することなく、実時間よりも遅く動作するシミュレーション装置によるシミュレーションテストを可能とし、効果的な試験を実施することのできるシミュレーション装置およびシミュレーション方法を提供することを目的とする。
上記目的を達成するため、本発明に係るシミュレーション装置は、
ソフトウェアにより機器のシミュレーションを実行するシミュレータ部と、
要求コマンド送信後、一定時間内に応答コマンドを受信しなかった場合には、再度同一要求コマンドを送信する機能を有する外部装置との間で通信を行い、前記外部装置から受信した要求コマンドを前記シミュレータ部へ通知し、当該要求コマンドに基づいて前記シミュレータ部で生成される応答コマンドを受け取る通信インタフェース部と、を備えたシミュレーション装置であって、
前記外部装置からの要求コマンドと、前記シミュレータ部からの応答コマンドとを保存するための記憶手段を備え、
前記通信インタフェース部は、前記外部装置からの要求コマンドが前回受信した要求コマンドと同一か否かを判定し、同一の場合には前記記憶手段に保存されている応答コマンドを前記外部装置へ送信することを特徴とする。
本発明では、シミュレーション装置において、外部装置からの要求コマンドを受信したときに、その要求コマンド、およびシミュレーション結果による応答コマンドを記憶しておき、外部装置から再度同じ要求コマンドが送信されてきたときは、記憶されている応答コマンドを直ちに返信する。これにより、外部装置は再送処理を繰り返すことなく、次の処理に進むことができる。
特に、本発明に係るシミュレーション装置は、前記通信インタフェース部が受信した要求コマンドに対応して前記記憶手段に保存されている応答コマンドを前記外部装置へ送信する一方、前記シミュレータ部は当該要求コマンドの指令に従って応答コマンドを生成し、前記記憶手段に保存されている応答コマンドを更新することを特徴とする。
今回受信した要求コマンドに対して、予め応答コマンドを生成し、次回の要求コマンドの受信に備えておくことにより、同一要求コマンドを受信したときに即座に応答コマンドを返信できるので、外部装置側でのタイムアウトによる再送処理を回避でき、円滑なシミュレーションテストが可能になる。
なお、前記通信インタフェース部は、受信した要求コマンドが前記記憶手段に保存されている要求コマンドと同一ではない場合は、保存されている要求コマンドに関連付けられている応答コマンドを削除する一方、新たに受信した要求コマンドを保存する。
これにより、新たな要求コマンドに対しても同様に、外部装置側のタイムアウトによる再送の繰り返しを回避することができる。
また、本発明に係るシミュレーション装置は、一または二以上の要求コマンドと、夫々の前記要求コマンドに対応する応答コマンドとを関連付けて格納する送受信データテーブルを備え、前記通信インタフェース部は、要求コマンド受信時に前記送受信データテーブルに当該要求コマンドが存在するか否かを判定し、当該要求コマンドが前記送受信データテーブルに存在する場合は、当該要求コマンドに対応する応答コマンドを前記外部装置に送信し、当該要求コマンドが前記送受信データテーブルに存在しない場合は、前記シミュレータ部によって当該要求コマンドに基づいて応答コマンドを生成し、生成した応答コマンドを当該要求コマンドに関連付けて前記送受信データテーブルに格納することを特徴とする。
この場合、前記通信インタフェース部は、前記要求コマンドに対応する応答コマンドが前記送受信データテーブルに存在する場合は、当該応答コマンドを前記外部装置に送信した後に、前記送受信データテーブルから該要求コマンド及び該応答コマンドを削除する。
本発明では、各要求コマンドと応答コマンドを関連付けたテーブルを備えるので、外部装置側でタイムアウト検出する前に複数の要求コマンドが送信された場合でも、夫々の要求コマンドごとに即座に応答コマンドを返信することができる。
また、本発明に係るシミュレーション装置では、前記送受信データテーブルは、さらに、夫々の前記要求コマンドに関連付けてレディフラグを格納し、
前記レディフラグのオン時間を計測する計測手段を備え、
前記通信インタフェース部は、要求コマンド受信時に前記送受信データテーブルに当該要求コマンドが存在しない場合、または当該要求コマンドが存在し、かつ該要求コマンドに関連付けられたレディフラグがオフの場合は、前記シミュレータ部によって該要求コマンドに対応する応答コマンドが生成されるのを待って、当該応答コマンドを前記外部装置へ送信すると共に、当該レディフラグをオンにし、
要求コマンド受信時に前記送受信データテーブルに当該要求コマンドが存在し、かつ、当該要求コマンドに関連付けられたレディフラグがオンの場合は、当該要求コマンドに関連付けられた応答コマンドを前記外部装置へ送信し、その後、当該レディフラグが一定時間以上オンか否かを判定し、一定時間以上オンの場合は当該レディフラグをオフにすることを特徴とする。
本発明では、送受信データテーブルに、要求コマンド、応答コマンド、及びレディフラグを関連付けて格納する。そして、レディフラグの状態によって直ちに応答コマンドを送信するか否かを判定し、また一定時間以上オンの場合は当該レディフラグをオフにする。これにより、物理的原因により一時的に通信障害が発生し、再送処理が行われたような場合には、効果的に復帰することが可能になる。
また、本発明に係るシミュレーション装置は、前記シミュレータ部への通知対象である要求コマンド、または、前記シミュレータ部への通知対象でない要求コマンドを登録する再送許可コマンドテーブルを備え、前記通信インタフェース部は、前記外部装置から要求コマンドが再送されたときに前記再送許可コマンドテーブルに基づいて当該要求コマンドをシミュレータ部へ通知するか否かを決定することを特徴とする。なお、要求コマンドが初送、すなわち再送でない場合には、通信インタフェース部は無条件で当該要求コマンドをシミュレータ部へ通知し、シミュレーション処理を実行させる。
本発明では、外部装置から要求コマンドの再送があったときに当該要求コマンドに対する応答コマンドを直ちに返信する一方、シミュレーション部に対しては不要な呼び出し(起動)をしないようにして誤動作を防止する。
本発明に係るシミュレーション方法は、シミュレータ装置において、受信データに基づいて生成された送信データを出力するシミュレーション方法であって、
前記受信データと前記送信データとを前記シミュレータ装置の記憶手段に保存しておき、前記受信した受信データと同一のデータを受信した場合は、前記記憶手段に保存されている送信データを出力する一方、今回の受信データに基づいて送信データを生成し、当該送信データによって前記記憶手段に格納されている送信データを更新することを特徴とする。
本発明によれば、シミュレーション装置において、外部装置から送られてくる要求コマンドを受信したときに、その要求コマンドおよびシミュレーション動作による応答コマンドを記憶しておき、外部装置から再度同じ要求コマンドが送信されてきたときには、記憶されている応答コマンドを直ちに返信するので、既存の外部装置の設定を変更することなく、実時間よりも遅く動作するシミュレーション装置によるシミュレーションテストが可能になる。これにより、シミュレーションテスト時の作業負担が軽減し、設定ミスを回避することができる。
本発明の第1の実施の形態によるシミュレーション装置の機能ブロック図である。 図1の通信インタフェース部の要求コマンド受信処理手順を示すフローチャートである。 図1の通信インタフェース部の応答コマンド送信処理手順を示すフローチャートである。 図1のシミュレーション装置と外部装置との通信シーケンスの説明図である。 本発明の第2の実施の形態による外部装置からの送信データのフォーマットの説明図である。 本発明の第2の実施の形態による送受信データテーブルのデータ構成の説明図である。 本発明の第2の実施の形態による通信インタフェース部の処理手順を示すフローチャートである。 本発明の第2の実施の形態によるシミュレーション装置と外部装置との通信シーケンスの説明図である。 本発明の第3の実施の形態によるシミュレーション装置の機能ブロック図である。 図9の送受信データテーブルのデータ構成の説明図である。 図9の通信インタフェース部の要求コマンド受信処理手順を示すフローチャートである。 図9の通信インタフェース部の応答コマンド送信処理手順を示すフローチャートである。 本発明の第4の実施の形態によるシミュレーション装置の機能ブロック図である。 図13の再送許可コマンドテーブルの説明図である。 図13の送受信データテーブルの説明図である。 図13の通信インタフェース部の処理手順を示すフローチャートである。 本発明の第4の実施の形態によるシミュレーション装置と外部装置との通信シーケンスの説明図である。 図13の再送許可コマンドテーブルを備えず、通信インタフェース部が常に要求コマンドの再送に対してシミュレーション処理を実行するとした場合の通信シーケンス図である。 図13の再送許可コマンドテーブルを備えず、通信インタフェース部が常に要求コマンドの再送に対してシミュレーション処理を実行しないとした場合の通信シーケンス図である。 従来技術によるシミュレーション装置の機能ブロック図である。 従来技術によるシミュレーション装置と外部装置との通信シーケンスの説明図である。
[第1の実施の形態]
以下に本発明に係るシミュレーション装置の第1の実施の形態を図1に基づいて説明する。本発明に係るシミュレーション装置1は、外部装置8との間でデータの送受信を行う通信手段2、データを記憶する記憶手段4、データを用いて演算処理を実行する演算処理手段3とを備えている。外部装置8は、通信回線7を介してシミュレーション装置1の通信手段2に接続されている。通信回線7は、無線、有線、LAN、WANあるいはシリアル通信など既存の技術によるものが含まれる。
演算処理手段3は、その機能としてシミュレーションを実行するシミュレータ部32と、外部装置8と当該シミュレータ部32との間での通信処理を実行する通信インタフェース部31aとを備えている。この通信インタフェース部31aとシミュレータ部32は、CPUの機能としてプログラムによって実現することができる。
図1において、図20の従来の構成との主な違いは、通信インタフェース部31aの処理内容にある。以下、シミュレーション装置1の動作について通信インタフェース部31aの処理を中心に説明する。
(通信インタフェース部の要求コマンド受信処理手順)
まず図2を用いて上記の処理を実行する通信インタフェース部31aの要求コマンド受信処理手順を説明する。
通信インタフェース部31aは、シミュレーション装置1の動作開始によって起動されるとまず要求コマンドの受信待ち状態になる(S101)。この状態で外部装置8から要求コマンドが送られてくると通信手段2によって受信される。通信インタフェース部31aは、通信手段2から受信通知を受けると、動作モードを受信済み状態にする(S102)。次に通信インタフェース部31aは、通信手段2から渡された要求コマンド(以下、「今回値」という)と、記憶手段4に保存されている要求コマンド(以下、「前回値」という。)とを比較する(S103)。
ステップS103の比較の結果、今回値と前回値が等しくない場合は、要求コマンドを前回値として記憶手段4の一時記憶バッファ41に保存して(S104)、応答コマンドの前回値をクリアする(S105)。そして要求コマンドをシミュレータ部32へ通知する(S109)。
一方、ステップS103の比較の結果、今回値と前回値が等しい場合は、さらに一時記憶バッファ41内の応答コマンドの前回値の有無を判定し(S106)、前回値が存在する場合は、外部装置8へその応答コマンドの前回値を送信する(S107)。そして、動作モードを初期状態、すなわち未受信の状態にする(S108)。その後、要求コマンドの今回値をシミュレータ部32へ通知する(S109)。
通信インタフェース部31aは、ステップS106の判定の結果、今回値が存在しない場合は、直ちにステップS109へ移行して要求コマンドをシミュレータ部32へ通知する。
(通信インタフェース部の応答コマンド送信処理)
次に図3を用いて通信インタフェース部31aの応答コマンド送信処理について説明する。この応答コマンド送信処理は、上述した要求コマンド受信処理とは独立して動作するものである。
応答コマンド送信処理は、装置1の動作開始によって起動されると、シミュレータ部32からの応答コマンド通知の待ち合わせ状態になる(S201)。そして、シミュレータ部32から応答コマンドの生成完了済みの通知があると以降のステップを実行する。
通信インタフェース部31aは、まず動作モードが受信済状態か否かを判定して(S202)、受信済状態の場合は応答コマンドを送信し(S203)、動作モードを初期状態にセットする(S204)。そして応答コマンドを前回値として保存する(S205)。その後、ステップS201へ戻り上述した処理を繰り返す。
したがって、通信インタフェース部31aの応答コマンド送信処理は、シミュレータ部32からの応答コマンド通知の待ち合わせ状態のときに実質的に処理が実行されることになるので、要求コマンド受信処理のステップS103(図2)で要求コマンドの前回値と今回値が等しくないとき、またはステップS106(図2)で応答コマンドの前回値が存在しないときに応答コマンド送信処理のステップS202以降の処理が実行されることになる。
(通信シーケンス)
次に図4を用いて、上記処理手順を実行する通信インタフェース部31aと、外部装置8との通信シーケンスについて説明する。
外部装置8から送信されたデータ(要求コマンド)は、通信回線7を介してシミュレーション装置1へ送られ、シミュレーション装置1の通信手段2によって受信される。通信インタフェース部31aは通信手段2から要求コマンドを受け取ると(b1)、その要求コマンドを記憶手段4の一時記憶バッファ41に保存するとともに、シミュレータ部32へ渡す(b2)。シミュレータ部32は、通信インタフェース部31aから渡された要求コマンドを実行し(b3)、実行結果から応答コマンドを生成して通信インタフェース部31aへ渡す(b4)。通信インタフェース部31aは、シミュレータ部32から渡された応答コマンドを一時記憶バッファ41へ保存するとともに、外部装置8へ送信する(b5)。
外部装置8は、通信インタフェース部31aから送信されてきた応答コマンドを受信した時点がタイムアウト検出前ならば、その応答コマンドを有効とみなして処理を継続し、次の要求コマンドを送信することになるが、応答コマンド受信前にタイムアウトを検出した場合は、前回の要求コマンドの再送処理に入る(b6)。
外部装置8から再送された要求コマンドは、シミュレーション装置1の通信インタフェース部31aに受信される(b7)。
通信インタフェース部31aは、今回受信した要求コマンドと一時記憶バッファ41に保存されている要求コマンドとを比較して、同一かどうかを判定する。その結果、同一の場合は、一時記憶バッファ41に保存されている応答コマンドを外部装置8へ送信し(b8)、またその要求コマンドをシミュレータ部32へ渡す(b9)。シミュレータ部32は、その要求コマンドに基づいて、シミュレーションソフトウェアの動作によって作成した応答コマンドを通信インタフェース部31aへ渡す(b10,b11)。通信インタフェース部31aは渡された応答コマンドを一時記憶バッファ41に保存する。
以上、本実施の形態によれば、シミュレーション装置において、外部装置からの要求コマンドを受信したときに、その要求コマンドおよび、シミュレーション結果による応答コマンドを記憶しておき、外部装置から再度同じ要求コマンドが送信されてきたときは、記憶されている応答コマンドを直ちに返信するので、既存の外部装置の設定を変更することなく、実時間よりも遅く動作するシミュレーション装置によるシミュレーションテストが可能になる。
[第2の実施の形態]
次に第2の実施の形態について説明する。第2の実施の形態の特徴は、第1の実施の形態が、通信装置からは常に一つずつ要求コマンドが送信されることを前提としているのに対して、本実施の形態では、外部装置からタイムアウト検出前に複数の異なる要求コマンドが送信される場合に、実機に比べて動作の遅いシミュレーション装置に対しても正常に送受信できるようにしたものである。
より具体的に説明すると、第1の実施の形態によるシミュレーション装置1は、外部装置8から複数種類の要求コマンド(要求コマンドX、要求コマンドY)が一度に送られると、後から送られてきた要求コマンドYに対する応答コマンドが一時記憶バッファ41に保存されることになる。
そうすると、外部装置8がタイムアウトを検出し、要求コマンドXを再送したときに、要求コマンドYに対する応答コマンド(応答コマンドY)が送信されることになる。このため、外部装置8は、受信した応答コマンドYを、要求コマンドXに対する応答コマンドであると判断してしまう。本実施の形態は、この問題を解決するものである。
本実施の形態と第1の実施の形態との主な構成の違いは、図1において、記憶手段4に一時記憶バッファ41の代わりに、要求コマンド別にその要求コマンドと応答コマンドとを関連付けて保存する送受信データテーブル42(図示せず)を設けたことである。なお、本実施の形態では、外部装置8からの送信データは、図5に示すように、送信順に付されるシーケンス番号と、要求コマンドで構成されているものとして説明する。
この送受信データテーブル42のデータ構成を図6に示す。
この図6において、送受信データテーブル42は、それぞれの行ごとに受信データに含まれているシーケンス番号と要求コマンド、およびその要求コマンドに対する応答コマンドが互いに関連付けられて保存されている。
次に上記の構成を有するシミュレーション装置1の動作について通信インタフェース部31aの処理を中心に説明する。なお本実施の形態では、通信インタフェース部31aは、通信手段2からの割り込みにより起動し、通信手段2から渡される要求コマンドを処理するという構成になっている。
図7において、通信インタフェース部31aは起動されると、まず受信データ中の要求コマンドが送受信データテーブル42に含まれているか否かを判定する(S301)。
その結果、要求コマンドが送受信データテーブル42に含まれている場合は、送受信データテーブル42の行にアクセスして、要求コマンドに関連付けられた応答コマンドを外部装置8へ送信する(S302)。その後、送受信データテーブル42から当該要求コマンドが含まれている行を削除する(S303)。
一方、ステップS301で受信データ中の要求コマンドが送受信データテーブル42に含まれていない場合は、送信すべき応答コマンドを作成するため、シミュレータ部32を呼び出す(S304)。その後、通信インタフェース部31aは応答コマンドをシミュレータ部32から受け取ると、外部装置8へ送信する(S305)。
そして、送受信データテーブル42の行に、受信データに含まれているシーケンス番号、要求コマンド、および応答コマンドを互いに関連付けて追加する(S306)。
以上の処理手順により、外部装置8とシミュレーション装置1との通信シーケンスは図8のようになる。なお、上記は処理手順の一実施例であり、必要により種々変形して実施することができる。例えば、ステップS303において、都度、送受信データテーブル42から当該要求コマンドが含まれている行を削除する代わりに、その行の追加から一定時間経過した時点で削除するようにしても良い。
外部装置8から送信されたデータ、すなわち要求コマンドX,要求コマンドYは、通信回線7を介してシミュレーション装置1へ送られ、シミュレーション装置1の通信手段2によって受信される(cx1、cy1)。通信インタフェース部31aは通信手段2から要求コマンドを受け取ると、その要求コマンドを記憶手段4の送受信データテーブル42に保存するとともに、シミュレータ部32へ渡す(cx2,cy2)。シミュレータ部32は、通信インタフェース部31aから渡された要求コマンドを実行し(c3)、実行結果から応答コマンドX,Yを生成して通信インタフェース部31aへ渡す(cx4,cy4)。
なお、通信インタフェース部31aにおいて、はじめて要求コマンドX,Yを受けたときの処理は、図7のステップS301で「NO」の判定になる。このため、ステップS304〜ステップS306の処理において、要求コマンドX,Yとそれに対応する応答コマンドX,Yがそれぞれ関連付けられて送受信データテーブル42に保存されことになる。
したがって、外部装置8の再送処理において、要求コマンドXが再送されたときには(cx7)、シミュレーション装置1の通信インタフェース部31aは図7のステップS302の処理により送受信データテーブル42から要求コマンドXの行から応答コマンドXを選択して、外部装置8へ送信する(cx8)。そしてシミュレータ部32により、この要求コマンドXに基づいて応答コマンドXが生成され、送受信データテーブル42が更新される(cx11)。
図8は、要求コマンドXが再送されたときの手順を示しているが、要求コマンドYが再送されたときも同様に、通信インタフェース部31aは送受信データテーブル42から要求コマンドYの行から応答コマンドYを選択して、外部装置8へ送信する。
本実施の形態によれば、複数種類の要求コマンドごとに応答コマンドを関連付けた送受信データテーブルを用いて管理するので、外部装置から複数の異なる要求コマンドがタイムアウト検出前に送信される場合においても、実機に比べて動作の遅いシミュレーション装置に対して正常に送受信できるようにしたものである。
なお、本実施の形態において、送受信データテーブル中にシーケンス番号を保存することにより、受信した要求コマンドが再送か否かを容易に把握することができる。この送受信データテーブルを用いた構成は、要求コマンドが一種類のときにも有効に機能することは明らかである。
[第3の実施の形態]
次に第3の実施の形態について説明する。図9は第3の実施の形態によるシミュレーション装置1の機能ブロック図である。本実施の形態の主な特徴は、第2の実施の形態の送受信データテーブルの構成に対して、レディフラグを設け、通信インタフェース部31aは、このレディフラグに基づいて応答コマンドを外部装置8へ送信するようにしたこと、およびレディフラグのオン時間を計測する計測手段33を設けたことである。
図10にこの送受信データテーブル42aの構成例を示す。要求コマンドの種別ごとに、シミュレータ部32で生成される応答コマンド、レディフラグ、および経過時間(レディフラグのオン時間)が関連付けられて保存されている。この経過時間は、計測手段33によって設定されるものである。すなわち計測手段33は周期的に起動されると、送受信データテーブル42aの各レディフラグがオンか否かを判定し、オンになっている場合は、そのレディフラグの経過時間をカウントアップし、レディフラグがオフの場合はクリアする。
次に、本実施の形態による通信インタフェース部31aの処理手順について図11を用いて説明する。なお本実施の形態は、第2の実施の形態と同様に、通信インタフェース部31aは、通信手段2からの割り込みにより起動し、通信手段2から渡される要求コマンドを処理するという構成になっている。
通信インタフェース部31aは起動されると、受信データから要求コマンドを抽出し(S401)、その要求コマンドが送受信データテーブル42aに含まれているか否かを判定する(S402)。この判定の結果、送受信データテーブル42aに含まれている場合は、当該要求コマンドに関連付けられたレディフラグがオンか否かを判定する(S403)。この判定の結果、レディフラグがオンの場合は、当該要求コマンドに関連付けられた応答コマンドを外部装置8へ送信する(S404)。そして、レディフラグ継続時間が所定時間以上か否かを判定し(S405)、所定時間以上の場合は、当該要求コマンドに関連付けられたレディフラグをオフにする(S406)。そして要求コマンドをシミュレータ部32へ通知して(S407)、ステップS401へ移行し、以降の処理を繰り返す。
一方、ステップS402において、送受信データテーブル42aに要求コマンドが含まれていない場合は、送受信データテーブル42aに当該要求コマンドの行を追加する(S408)。このとき、応答コマンドはブランク、レディフラグはオフに設定する。そして、ステップS407へ移行する。
次に、本実施の形態による通信インタフェース部31aがシミュレータ部32から応答コマンドの通知を受けたときの処理手順を説明する。
図12において、通信インタフェース部31aは、シミュレータ部32からの割り込み等により起動すると、応答コマンドを送受信データテーブル42aの要求コマンドに関連付けて保存する(S501)。そして、レディフラグがオフか否かを判定し(S502)、オフの場合は、直ちに応答コマンドを送信し(S503)、レディフラグをオンにする(S504)。ステップS502において、レディフラグが既にオンになっている場合は、そのまま終了する。
以上、本実施の形態によれば、要求コマンドごとにレディフラグを持たせた送受信データテーブルを用い、一旦セットされたレディフラグは、一定時間経過するまでオンしているので、シミュレータの処理が遅く通常ならば外部装置のタイムアウト監視でタイムオーバーになるような場合でも、順次予め準備した応答コマンドが返信されるのでタイムアウトの度重なる発生を回避することができ、シミュレーションテストの実施が可能になる。
さらに、シミュレーション処理の遅れではなく、一時的な通信エラーによって応答コマンドが通信装置に届かなかったような場合には正常に復帰し、要求コマンド受信時にその要求コマンドに対する応答コマンドを返信できるようになる。
[第4の実施の形態]
次に第4の実施の形態について説明する。図13は第4の実施の形態によるシミュレーション装置1の機能ブロック図である。本実施の形態の主な特徴は、第2の実施の形態の構成において、外部装置8から要求コマンドが再送されたときにシミュレーション処理を実行するか否かを判定するための再送許可コマンドテーブル43を設けたことである。図14に再送許可コマンドテーブル43のデータ例を示す。通信インタフェース部31aは、要求コマンドの再送時にこの再送許可コマンドテーブル43に基づいてシミュレータ部32を起動するか否かを決定する。
以下、本実施の形態におけるシミュレーション装置1の動作について通信インタフェース部31aの処理を中心に説明する。
図16は、通信インタフェース部31aの処理手順を示すフローチャートである。この図において、通信インタフェース部31aは外部装置8から送られてくる要求コマンドを受信すると、送受信データテーブル42にその要求コマンドが含まれているか否かを判定する(S601)。ここで、送受信データテーブル42は、図15に例示するように要求コマンドとその応答(応答コマンド)とを関連付けて登録したテーブルである。送受信データテーブル42を図15に示すようなリスト形式で形成する場合は、要求コマンドとそれに対応する応答コマンドを同じ行に書き込むことにより互いのデータを関連付けることができる。
ステップS601の判定の結果、送受信データテーブル42に当該要求コマンドが含まれていない場合には、当該要求コマンドを引数として指定して、シミュレータ部32を起動する(S602)。シミュレータ部32は起動されると、渡された要求コマンドに基づいて処理を実行し、その結果を戻り値として通信インタフェース部31aに返す。通信インタフェース部31aは、この戻り値から応答コマンドを生成し(S603)、この応答コマンドと受信した要求コマンドとを関連付けて送受信データテーブル42に追加する(S604)。そして、通信インタフェース部31aは、この応答コマンドを外部装置8へ送信する(S605)。
一方、ステップS601において、受信した要求コマンドが送受信データテーブル42に含まれている場合には、通信インタフェース部31aは送受信データテーブル42の中で、その要求コマンドに関連付けられている応答コマンドを抽出して外部装置8へ送信する(S606)。その後、通信インタフェース部31aは送受信データテーブル42から、ステップS606で送信した要求コマンドおよびこれに関連付けられた応答コマンドを削除する(S607)。次に通信インタフェース部31aは、受信した要求コマンドが再送許可コマンドテーブル43に含まれているか否かを判定し(S608)、含まれている場合には、前述したステップS602〜ステップS604の処理を繰り返す(S609〜S611)。
すなわち、本実施の形態では、外部装置8から再送があったときに再度シミュレーション処理を実行してよい要求コマンドのみを予め再送許可コマンドテーブル43に登録しておく。そして通信インタフェース部31aは、外部装置8から再送要求があった場合は、この再送許可コマンドテーブル43を参照して、再送に係る要求コマンドが再送許可コマンドテーブル43に登録されている場合には、シミュレータ部32を起動する。一方、再送に係る要求コマンドが再送許可コマンドテーブル43に登録されていない場合には、通信インタフェース部31aはシミュレータ部32を起動しない。
次に、上記の処理手順を有する通信インタフェース部31aが、外部装置8から要求コマンドの再送を受けたときの通信シーケンスについて、要求コマンドとして運転開始コマンドと電圧取得コマンドを例にして図16と図17を参照しながら説明する。なお、運転開始コマンドは、再送時のシミュレーション処理は禁止され、電圧取得コマンドは、再送時のシミュレーションは許可されているものとする。この場合、再送許可コマンドテーブル43には予め電圧取得コマンドのみを登録しておく。
図17において外部装置8から送信された運転開始コマンドX(要求コマンド)は、通信回線7を介してシミュレーション装置1へ送られ、シミュレーション装置1の通信手段2によって受信される(d1)。通信インタフェース部31aは通信手段2からの割り込み等によって起動されると、受信データすなわち運転開始コマンドXを引数として受け取る。そして通信インタフェース部31aは、図16のステップS601の処理によって記憶手段4の送受信データテーブル42にアクセスして、運転開始コマンドXが登録済みか否かを判定する。
通信インタフェース部31aが運転開始コマンドXを最初に受信した場合は、送受信データテーブル42に運転開始コマンドXは存在しないので、ステップS601において「No」の判定になる。したがって、通信インタフェース部31aは、ステップS602において、シミュレータ部32を呼び出して、運転開始コマンドXを引数としてシミュレーション処理を実行させる(d2)。その後、通信インタフェース部31aは、シミュレータ部32から処理結果である戻り値を受け取ると(d3)、ステップS603,ステップS604において、当該戻り値から生成した応答コマンドと運転開始コマンドXとを関連付けて送受信データテーブル42に追加し、ステップS605においてその応答コマンドを外部装置8へ送信する。
しかし、このとき既に外部装置8でタイムアウトを検出して、運転開始コマンドXを再送していたとすると(d4)、当該コマンド受信により起動された通信インタフェース部31aは、図16のステップS601の処理において「Yes」の判定になり、ステップS606において、送受信データテーブル42中の運転開始コマンドXに関連付けられた応答コマンドを外部装置8へ送信する(d5)。そして通信インタフェース部31aは、送受信データテーブル42から運転開始コマンドXを削除する。この運転開始コマンドXは、再送許可コマンドテーブル43に含まれていないので、ステップS608において「No」の判定になり、通信インタフェース部31aは処理を終了する。すなわち、シミュレーション装置1は、運転開始コマンドXの再送に対してはシミュレーション処理を実行しないことになる。これにより、運転開始コマンドXの複数回実行によるシステムの誤動作を防止することができる。
次に外部装置8から電圧取得コマンドY(要求コマンド)がシミュレーション装置1へ送られてくると、シミュレーション装置1は通信手段2によってこれを受信する(d6)。そして、通信手段2によって起動された通信インタフェース部31aは、受信データすなわち電圧取得コマンドXを引数として受け取り、図16のステップS601の処理によって記憶手段4の送受信データテーブル42にアクセスして、電圧取得コマンドYが登録済みか否かを判定する。通信インタフェース部31aが電圧取得コマンドYを最初に受信した場合は、送受信データテーブル42に電圧取得コマンドYは存在しないので、ステップS601において「No」の判定になる。したがって、通信インタフェース部31aは、ステップS602において、シミュレータ部32を呼び出して、電圧取得コマンドYを引数としてシミュレーション処理を実行させる(d7)。その後、通信インタフェース部31aは、シミュレータ部32から処理結果である戻り値を受け取ると(d8)、ステップS603,ステップS604において、当該戻り値から生成した応答コマンドと電圧取得コマンドYとを関連付けて送受信データテーブル42に追加し、ステップS605においてその応答コマンドを外部装置8に送信する。
しかし、このとき既に外部装置8でタイムアウトを検出して、電圧取得コマンドYを再送していたとすると(d9)、当該コマンド受信により起動された通信インタフェース部31aは、図16のステップS601の処理において「Yes」の判定になり、ステップS606において、送受信データテーブル42中の電圧取得コマンドYに関連付けられた応答コマンドを外部装置8へ送信する(d12)。そして通信インタフェース部31aは、送受信データテーブル42から電圧取得コマンドYを削除する。この電圧取得コマンドYは、再送許可コマンドテーブル43に含まれているので、ステップS608において「Yes」の判定になり、通信インタフェース部31aは、ステップS609〜ステップ611の処理を実行することになる。すなわち通信インタフェース部31aは、シミュレータ部32を呼び出して、電圧取得コマンドYを引数としてシミュレーション処理を実行させる(d10)。その後、通信インタフェース部31aは、シミュレータ部32から処理結果である戻り値を受け取ると(d11)、当該戻り値から生成した応答コマンドと電圧取得コマンドYとを関連付けて送受信データテーブル42に追加する。
したがって、外部装置8から電圧取得コマンドYが送られてきたときには、通信インタフェース部31aは、当該電圧取得コマンドYが再送処理によるものでなくても、ステップS601で「Yes」の判定になり、ステップS606〜ステップS611の処理を実行することになる。即ち通信インタフェース部31aは、次の電圧取得コマンドYの受信(d13)に対して、送受信データテーブル42に登録されている電圧取得コマンドYに関連付けられた応答コマンドを返信するとともに(d16)、ステップd13で受信した電圧取得コマンドYに対するシミュレーション処理を実行し(d14)、その結果を応答コマンドとして送受信データテーブル42に追加する。これにより、シミュレーション装置1は、電圧取得コマンドYに対しては常に最新の値を応答コマンドとして外部装置8へ送信することができる。
ちなみに、再送許可コマンドテーブル43を備えず、通信インタフェース部31aが常に要求コマンドの再送に対してシミュレーション処理を実行するとした場合は、図18に示すように運転開始コマンドを二重に実行することになり(図18の処理e6)、この結果システムの誤動作を招くことになる。一方、通信インタフェース部31aが常に要求コマンドの再送に対してシミュレーション処理を実行しないとすると、次に要求コマンドを受信したときに、図19に示すように、古い情報が返信されることになる。
本実施の形態によれば、再送許可コマンドテーブル43を備え、予め許可された要求コマンドに対してのみ、再送があったときに当該要求コマンドを実行するので、運転開始コマンドが再送により複数回実行されてしまうことや、過去の古い電圧データを取得するような事態を回避することができる。
なお、この再送許可コマンドテーブル43は、シミュレーション装置1の図示しない入力手段から登録してもよいし、あるいは、外部装置8から設定するようにしてもよい。また、再送許可コマンドテーブル43には、図14の例示の如く個々の要求コマンドごとにその識別情報を登録するようにしてもよいが、運転開始などの制御コマンドは再送時のシミュレーション処理を実行しない、電圧取得などの監視コマンドは再送時のシミュレーション処理を実行するなど要求コマンドの種別ごとに設定するようにしてもよい。
なお本実施の形態では、第2の実施の形態の構成に対して再送許可コマンドテーブル43を設けることを例にして説明したが、図1に示す第1の実施の形態や図9に示す第3の実施の形態の構成に対して再送許可コマンドテーブル43を設け、通信インタフェース部31aはこの再送許可コマンドテーブル43を参照しながら、シミュレータ部32を起動するか否かを決定するようにしてもよい。
本発明は、上述した実施の形態に限定されることなく、その要旨を逸脱しない範囲で種々変形して実現することができる。例えば、第3の実施の形態においてレディフラグの代わりにシーケンス番号を用いて、ある種別の要求コマンドに対して前回受信時のシーケンス番号と今回受信時のシーケンス番号の差が一定以下のときのみ、送受信データテーブルに保存されている応答コマンドを返信するようにしても良い。
あるいは、計測手段の代わりにシーケンス番号を用いて、シーケンス番号の前回値と今回値の差が一定以上になったときに、レディフラグをリセットするようにしても良い。
また第4の実施の形態では、外部装置8からの再送時にもシミュレーション処理を実行する要求コマンドのみを予め再送許可コマンドテーブル43に登録しておくことを前提として説明したが、再送のあったときにシミュレーション処理を実行しない要求コマンドのみを予めテーブルに登録しておき、通信インタフェース部31aは、再送に係る要求コマンドが当該テーブルに登録されている場合はシミュレータ部32を起動せず、それ以外の場合は起動して当該要求コマンドをシミュレータ部32へ通知するという構成にしてもよい。
1 シミュレーション装置
2 通信手段
3 演算処理手段
4 記憶手段
7 通信回線
8 外部装置
31,31a 通信インタフェース部
32 シミュレータ部
33 計測手段
41 一時記憶バッファ
42,42a 送受信データテーブル
43 再送許可コマンドテーブル

Claims (8)

  1. ソフトウェアにより機器のシミュレーションを実行するシミュレータ部と、
    要求コマンド送信後、一定時間内に応答コマンドを受信しなかった場合には、同一要求コマンドを再送する機能を有する外部装置との間で通信を行い、前記外部装置から受信した要求コマンドを前記シミュレータ部へ通知し、当該要求コマンドに基づいて前記シミュレータ部で生成される応答コマンドを受け取る通信インタフェース部と、を備えたシミュレーション装置であって、
    前記外部装置からの要求コマンドと、前記シミュレータ部からの応答コマンドと保存するための記憶手段を備え、
    前記通信インタフェース部は、前記外部装置からの要求コマンドが再送されたものか否かを判定し、再送された要求コマンドの場合には前記記憶手段に保存されている応答コマンドを前記外部装置へ送信することを特徴とするシミュレーション装置。
  2. 前記通信インタフェース部は、受信した要求コマンドに対応して前記記憶手段に保存されている応答コマンドを前記外部装置へ送信する一方、前記シミュレータ部は、前記通信インタフェース部から通知される当該要求コマンドの指令に従って応答コマンドを生成し、前記記憶手段に保存されている応答コマンドを更新することを特徴とする請求項1に記載のシミュレーション装置。
  3. 前記通信インタフェース部は、受信した要求コマンドが前記記憶手段に保存されている要求コマンドと同一ではない場合は、前記記憶手段に保存されている応答コマンドを削除する一方、新たに受信した要求コマンドを保存することを特徴とする請求項1に記載のシミュレーション装置。
  4. 一または二以上の要求コマンドと、夫々の前記要求コマンドに対応する応答コマンドとを関連付けて格納する送受信データテーブルを備え、
    前記通信インタフェース部は、要求コマンド受信時に前記送受信データテーブルに当該要求コマンドが存在するか否かを判定し、当該要求コマンドが前記送受信データテーブルに存在する場合は、当該要求コマンドに対応する応答コマンドを前記外部装置に送信し、当該要求コマンドが前記送受信データテーブルに存在しない場合は、前記シミュレータ部によって当該要求コマンドに基づいて応答コマンドを生成し、生成した応答コマンドを当該要求コマンドに関連付けて前記送受信データテーブルに格納することを特徴とする請求項1に記載のシミュレーション装置。
  5. 前記通信インタフェース部は、前記要求コマンドに対応する応答コマンドが前記送受信データテーブルに存在する場合は、当該応答コマンドを前記外部装置に送信した後に、前記送受信データテーブルから該要求コマンド及び該応答コマンドを削除することを特徴とする請求項4に記載のシミュレーション装置。
  6. 前記送受信データテーブルは、さらに、夫々の前記要求コマンドに関連付けてレディフラグを格納し、
    前記レディフラグのオン時間を計測する計測手段を備え、
    前記通信インタフェース部は、要求コマンド受信時に前記送受信データテーブルに当該要求コマンドが存在しない場合、または、当該要求コマンドが存在し、かつ該要求コマンドに関連付けられたレディフラグがオフの場合は、前記シミュレータ部によって該要求コマンドに対応する応答コマンドが生成されるのを待って、当該応答コマンドを前記外部装置へ送信すると共に、当該レディフラグをオンにし、
    要求コマンド受信時に前記送受信データテーブルに当該要求コマンドが存在し、かつ、当該要求コマンドに関連付けられたレディフラグがオンの場合は、当該要求コマンドに関連付けられた応答コマンドを前記外部装置へ送信し、その後、当該レディフラグが一定時間以上オンか否かを判定し、一定時間以上オンの場合は当該レディフラグをオフにすることを特徴とする請求項4または5に記載のシミュレーション装置。
  7. 前記シミュレータ部への通知対象である要求コマンド、または、前記シミュレータ部への通知対象でない要求コマンドを登録する再送許可コマンドテーブルを備え、
    前記通信インタフェース部は、前記外部装置から要求コマンドが再送されたときに前記再送許可コマンドテーブルに基づいて当該要求コマンドをシミュレータ部へ通知するか否かを決定することを特徴とする請求項1乃至6のいずれか一項に記載のシミュレーション装置。
  8. シミュレータ装置において、受信データに基づいて生成された送信データを出力するシミュレーション方法であって、
    前記受信データと前記送信データとを前記シミュレータ装置の記憶手段に保存しておき、前記受信した受信データと同一のデータを受信した場合は、前記記憶手段に保存されている送信データを出力する一方、今回の受信データに基づいて送信データを生成し、当該送信データによって前記記憶手段に格納されている送信データを更新することを特徴とするシミュレーション方法。
JP2016025912A 2015-09-10 2016-02-15 シミュレーション装置及びシミュレーション方法 Expired - Fee Related JP6631301B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015178036 2015-09-10
JP2015178036 2015-09-10

Publications (2)

Publication Number Publication Date
JP2017054476A JP2017054476A (ja) 2017-03-16
JP6631301B2 true JP6631301B2 (ja) 2020-01-15

Family

ID=58320837

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016025912A Expired - Fee Related JP6631301B2 (ja) 2015-09-10 2016-02-15 シミュレーション装置及びシミュレーション方法

Country Status (1)

Country Link
JP (1) JP6631301B2 (ja)

Also Published As

Publication number Publication date
JP2017054476A (ja) 2017-03-16

Similar Documents

Publication Publication Date Title
US8959405B2 (en) Signal transmission device for elevator
CN109002368B (zh) 监控设备的工作方法及多核系统
CN110349029B (zh) 一种基于区块链的交易一致性的处理方法、设备以及系统
JP4683346B2 (ja) マスタ・スレーブ通信システムおよびマスタ・スレーブ通信方法
CN103838551B (zh) 并行计算机及其控制方法
JP2012532385A (ja) システムオンチップエラー識別
CN111970339A (zh) 请求控制方法、装置及电子设备
JP2012257122A (ja) 車両制御装置、車両制御システム
CN106557522B (zh) 一种用于提供定时功能的方法与设备
CN116887418B (zh) Epa网络中对高优先级消息进行调度的方法、设备和介质
JP6631301B2 (ja) シミュレーション装置及びシミュレーション方法
CN103312554B (zh) 一种多服务器交互业务的测试方法及系统
WO2007099584A1 (ja) エラー検出装置
CN107005433B (zh) 一种流表项的定时处理方法及装置
US20100251018A1 (en) Memory access control device, memory access control method and memory access control program
JP5123968B2 (ja) 通信制御方法、通信制御プログラムおよびマスタ通信装置
CN106788916B (zh) 用于总线的数据传输方法及数据传输装置
JP2024506093A (ja) クロスチェーントランザクション処理方法と装置、電子機器及びコンピュータプログラム
WO2007119424A1 (ja) 電気機器および電気機器における通信機能正常判定方法
CN111615819B (zh) 一种传输数据的方法和装置
CN108958986B (zh) 用于识别微处理器中的硬件错误的方法和设备
CN110741607B (zh) 用于在故障发生时稳定BACnet MSTP网络的系统和方法
CN109800202B (zh) 一种基于pcie的数据传输系统、方法及装置
CN105939258B (zh) Vrrp报文的发送方法及装置
US20220128966A1 (en) Context-Sensitive Technical Audit Trail of A Technical System

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191031

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191125

R150 Certificate of patent or registration of utility model

Ref document number: 6631301

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees