JP2023006301A - シミュレーションシステム、シミュレーションシステムの方法、およびシミュレーションのプログラム - Google Patents

シミュレーションシステム、シミュレーションシステムの方法、およびシミュレーションのプログラム Download PDF

Info

Publication number
JP2023006301A
JP2023006301A JP2021108836A JP2021108836A JP2023006301A JP 2023006301 A JP2023006301 A JP 2023006301A JP 2021108836 A JP2021108836 A JP 2021108836A JP 2021108836 A JP2021108836 A JP 2021108836A JP 2023006301 A JP2023006301 A JP 2023006301A
Authority
JP
Japan
Prior art keywords
program
simulation
display
simulation system
variables
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
Application number
JP2021108836A
Other languages
English (en)
Inventor
慎太郎 岩村
Shintaro Iwamura
はる奈 大貫
Haruna Onuki
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.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics Co
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 Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2021108836A priority Critical patent/JP2023006301A/ja
Priority to US17/824,517 priority patent/US20230004482A1/en
Priority to CN202210580612.7A priority patent/CN115542828A/zh
Priority to EP22175936.8A priority patent/EP4113293A1/en
Publication of JP2023006301A publication Critical patent/JP2023006301A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/054Input/output
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM]
    • G05B19/41885Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM] characterised by modeling, simulation of the manufacturing system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04815Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13067Use of variables, symbols in instructions, to indicate mechanisms, interfaces
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/33Director till display
    • G05B2219/33297Diagnostic, test, debug
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Abstract

【課題】より効率的にプログラムを検証するためのシミュレーション技術を提供する。【解決手段】シミュレーションシステムは、1以上の機器を制御するためのプログラムを格納するためのメモリと、プログラムによる1以上の機器の動作のシミュレーションを実行するためのプロセッサと、シミュレーション画面を表示するためのディスプレイとを備える。シミュレーション画面は、3D空間内の1以上の機器の各々の位置を表示するための3D空間表示(Three-Dimensional)1201と、プログラムによって参照される1以上の変数の各々の値の表示1204とを含み、プログラムのステップ毎に、3D空間表示1201と、1以上の変数の各々の値の表示1204とを更新する。【選択図】図12

Description

本開示は、シミュレーションシステムに関し、より特定的には、プログラムのデバッグ機能に関する。
コンピュータを用いたシミュレーションは様々な技術分野に応用されている。このようなシミュレーションを用いることで、現実の装置が存在しない状態であっても、様々な事前検討が可能となる。
シミュレーションに関し、例えば、特開2021-045797号公報(特許文献1)は、「付属機器が装着された第1の機器に対応する仮想空間に配置された第1の対象の挙動を算出する第1の挙動算出部と、第2の機器に対応する仮想空間における第2の対象の挙動を算出する第2の挙動算出部を備え、第2の機器は付属機器を含む。所定のタイムステップ毎に、当該タイムステップにおいて、第1の挙動算出部は付属機器が装着された第1の機器に対応する第1の対象の挙動を算出し、その後に、第2の挙動算出部が当該算出された第1の対象の挙動に基づき第1の機器に装着された付属機器の挙動を算出する」装置を開示している([要約]参照)。
特開2021-045797号公報
特許文献1に開示された技術によると、機器を動作させるためのプログラムの検証のためにシミュレーションを繰り返し再生する必要があり、プログラムの検証に多くの時間を要することがあった。したがって、より効率的にプログラムを検証するためのシミュレーション技術が必要とされている。
本開示は、上記のような背景に鑑みてなされたものであって、ある局面における目的は、より効率的にプログラムを検証するためのシミュレーション技術を提供することにある。
ある実施の形態に従うと、シミュレーションシステムが提供される。シミュレーションシステムは、1以上の機器を制御するためのプログラムを格納するためのメモリと、プログラムによる1以上の機器の動作のシミュレーションを実行するためのプロセッサと、シミュレーション画面を表示するためのディスプレイとを備える。シミュレーション画面は、3D空間内の1以上の機器の各々の位置を表示するための3D空間表示(Three-Dimensional)と、プログラムによって参照される1以上の変数の各々の値の表示とを含み、プログラムのステップ毎に、3D空間表示と、1以上の変数の各々の値の表示とを更新する。
この開示によれば、シミュレーションシステムは、プログラムのステップ毎に、3D空間内の1以上の機器の各々の位置を表示するための3D空間と、プログラムによって参照される1以上の変数の各々の値とを表示することができる。ユーザは、3D空間表示および1以上の変数の各々の値の表示の両方を確認することで、プログラムのデバッグを容易に行い得る。
上記の開示において、シミュレーション画面は、プログラムのステップ毎に、シミュレーションの場面を再生する操作または逆再生する操作を受け付けるための入力用UI(User Interface)をさらに含む。
この開示によれば、シミュレーションシステムは、シミュレーションの場面を再生する操作または逆再生する操作を受け付けることができる。ユーザは、再生または逆再生機能を使用して、問題のあるシミュレーションの場面の前後を容易に確認し得る。
上記の開示において、入力用UIは、プログラムのステップ毎に、シミュレーションの場面を停止する操作、または、プログラムのステップ毎にシミュレーションの場面をコマ送りする操作を受け付け可能に構成される。
この開示によれば、シミュレーションシステムは、シミュレーションの場面を停止またはコマ送りする操作を受け付けることができる。ユーザは、停止またはコマ送り機能を使用して、問題のあるシミュレーションの場面および変数の値を詳細に調べることができる。
上記の開示において、入力用UIは、プログラムの1サイクルまたは1ステップ単位で、シミュレーションの場面を再生する操作または逆再生する操作を受け付け可能に構成される。
この開示によれば、シミュレーションシステムは、プログラムの1サイクルまたは1ステップ単位で、シミュレーションの場面を再生する操作または逆再生する操作を受け付けることができる。
上記の開示において、シミュレーション画面は、プログラムにブレークポイントを設定する操作を受け付け可能に構成される。
この開示によれば、シミュレーションシステムは、プログラムにブレークポイントを設定する操作を受け付けることができる。
上記の開示において、入力用UIは、シミュレーションの場面をスロー再生する操作またはスロー逆再生する操作を受け付け可能に構成される。
この開示によれば、シミュレーションシステムは、シミュレーションの場面をスロー再生する操作またはスロー逆再生する操作を受け付けることができる。
上記の開示において、シミュレーション画面は、1以上の機器の各々の位置の数値情報をさらに含み、プログラムのステップ毎に、1以上の機器の各々の位置の数値情報を更新する。
この開示によれば、シミュレーションシステムは、プログラムのステップ毎に、1以上の機器の各々の位置の数値情報を表示し得る。
上記の開示において、シミュレーション画面は、プログラムをさらに表示可能に構成されている。プログラムの表示は、プログラムのコードと、1以上の変数の各々の値とを含む。シミュレーション画面は、プログラムのステップ毎に、プログラムの表示に含まれる1以上の変数の各々の値を更新する。
この開示によれば、シミュレーションシステムは、変数に値を代入したプログラムを表示し得る。ユーザは、ステップ毎にプログラムの表示を確認することで、プログラムをデバッグし得る。
上記の開示において、シミュレーション画面は、プログラムのステップが進むまたは戻る場合に、プログラムの表示に含まれる1以上の変数の各々の値に変化があったとき、変化した値または変化した値が代入されている変数名を強調表示する。
この開示によれば、シミュレーションシステムは、ユーザに、値が変化した変数を強調表示することができる。
上記の開示において、プログラムの表示は、1以上の変数の各々を選択可能に構成されている。シミュレーション画面は、プログラムの表示から選択された変数を含むグラフを表示する。
この開示によれば、シミュレーションシステムは、選択された変数を含むグラフを表示し得る。
上記の開示において、プログラムの表示は、グラフに含まれる変数を強調表示する。
この開示によれば、シミュレーションシステムは、プログラムの表示中のグラフに含まれる変数を強調表示し得る。
上記の開示において、シミュレーション画面は、プログラムのフローチャートをさらに表示可能に構成されている。フローチャートの表示は、フローチャートに含まれる1以上のブロックの中で現在実行されているブロックを強調表示する。
この開示によれば、シミュレーションシステムは、フローチャートに含まれる1以上のブロックの中で現在実行されているブロックを強調表示することができる。ユーザは、現在実行されているブロックを容易に把握し得る。
上記の開示において、フローチャートの表示は、フローチャートに含まれる1以上のブロックのいずれかを選択可能に構成されている。プログラムの表示は、選択されたブロックに対応するPOU(Program Organization Unit)を表示、または、POUを強調表示する。
この開示によれば、シミュレーションシステムは、選択されたブロックに対応するPOUを表示または強調表示し得る。ユーザは、フローチャート中の所望のブロックに対応するPOUを容易に確認し得る。
他の実施の形態に従うと、シミュレーションシステムによって実行される方法が提供される。方法は、1以上の機器を制御するためのプログラムによる1以上の機器の動作のシミュレーションを実行するステップと、シミュレーション画面を表示するステップとを含む。シミュレーション画面は、3D空間内の1以上の機器の各々の位置を表示するための3D空間表示と、プログラムによって参照される1以上の変数の各々の値の表示とを含み、プログラムのステップ毎に、3D空間表示と、1以上の変数の各々の値の表示とを更新する。
この開示によれば、シミュレーションシステムによって実行される方法は、プログラムのステップ毎に、3D空間内の1以上の機器の各々の位置を表示するための3D空間と、プログラムによって参照される1以上の変数の各々の値とを表示することができる。ユーザは、3D空間表示および1以上の変数の各々の値の表示の両方を確認することで、プログラムのデバッグを容易に行い得る。
他の実施の形態に従うと、上記の方法を1または複数のプロセッサに実行させるためのプログラムが提供される。
この開示によれば、プログラムは、上記の方法を1または複数のプロセッサに実行させることができる。
ある実施の形態に従うと、より効率的にプログラムを検証するためのシミュレーション技術を提供することが可能である。
この開示内容の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解される本開示に関する次の詳細な説明から明らかとなるであろう。
ある実施の形態に従うシミュレーションシステムにより動作をシミュレート可能な機器の一例を示す図である。 シミュレーションシステム500によるシミュレーションの実行の様子の一例を示す図である。 ある実施の形態に従うシミュレーション技術を適用可能な機器を含む制御システム2のユニット構成の一例を示す図である。 装置100のハードウェア構成の一例を示す図である。 シミュレーションシステム500の機能構成の一例を示す図である。 シミュレーションの様子の第1の例を示す図である。 シミュレーションの様子の第2の例を示す図である。 シミュレーションの様子の第3の例を示す図である。 リポジトリ570に格納されるデータの第1の例を示す図である。 リポジトリ570に格納されるデータの第2の例を示す図である。 シミュレーションシステム500におけるデバッグ画面の第1の例を示す図である。 シミュレーションシステム500におけるデバッグ画面の第2の例を示す図である。 シミュレーションシステム500におけるデバッグ画面の第3の例を示す図である。 シミュレーションシステム500におけるデバッグ画面の第4の例を示す図である。 シミュレーションシステム500によるシミュレーションの記録処理の一例を示すフローチャートである。 シミュレーションシステム500によるデバッグ処理の一例を示すフローチャートである。 シミュレーションシステム500によるプログラムのシミュレーション結果と、プログラムの実環境での実行結果との比較処理の一例を示すフローチャートである。
以下、図面を参照しつつ、本開示に係る技術思想の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<A.適用例>
まず、図1および図2を参照して、本発明が適用される場面の一例について説明する。
(a.シミュレーションの対象となる機器)
図1は、本実施の形態に従うシミュレーションシステムにより動作をシミュレート可能な機器の一例を示す図である。本実施の形態に従うシミュレーションシステム500(図5参照)は、一例として、工場のFA(Factory Automation)等に使用される任意の機器の動作をシミュレートし得る。シミュレーションシステム500は、ロボットアーム、ベルトコンベア、ロータリーナイフ、センサ類、その他の任意の機器、および、これらの組み合わせの動作をシミュレートし得る。
図1に示される機器150は、コンベア151およびロータリーナイフ154からなる複合機器である。機器150は、コンベア151上を流れるシート158を予め定められた長さにカットする機能を有する。機器150は、その構成部品として、コンベア151と、モータ152と、モータ制御装置153と、ロータリーナイフ154と、モータ155と、モータ制御装置156と、センサ157とを備える。
コンベア151は、シート158を運搬する。モータ152は、コンベアを回転させるための主軸と接続されており、コンベア151を駆動させる。モータ制御装置153は、モータ152の速度またはトルク等を制御する。
ロータリーナイフ154は、回転するローラ上にナイフが設けられている。ローラが回転することにより、ナイフがコンベア151上を流れるシート158をカットする。モータ155は、ロータリーナイフ154のローラと接続されており、ロータリーナイフ154を駆動させる。モータ制御装置156は、モータ155の速度またはトルク等を制御する。
センサ157は、シート158上のカット位置159を検出する。ロータリーナイフ154は、センサ157が検出したカット位置159をカットする。
モータ制御装置153,156、およびセンサ157等は、PLC(Programmable Logic Controller)200(図3参照)等に接続され得る。この場合、PLC200は、センサ157から信号を読み取って、当該信号に基づいて、ロータリーナイフ154を制御し得る。PLC200は、インストールされたプログラムに基づいて、機器150を制御する。
シミュレーションシステム500は、シミュレーション内で、プログラムをインストールされたPLC200の動作と、PLC200によって制御される機器150の動作とを再現する。ユーザは、シミュレーション内の機器150の動作を確認することで、PLCのプログラムをデバッグし得る。ある局面において、シミュレーションシステム500がシミュレートできるプログラムは、IECプログラムであってもよい。IECプログラムは、IEC61131-3の規格に準拠したプログラムであり、ラダープログラム、ST(ストラクチャード テキスト:Structured Text)等を含む。
(b.シミュレーションシステムの機能)
図2は、シミュレーションシステム500によるシミュレーションの実行の様子の一例を示す図である。図2を参照して、シミュレーションシステム500の機能について説明する。シミュレーションシステム500は、シミュレーションの記録機能と、記録されたシミュレーション結果を用いたプログラムのデバッグ機能とを備える。これ以降の説明では、機器150を例に、シミュレーションシステム500の機能について説明する。
(b-1.シミュレーションの記録機能)
まず、シミュレーションの記録機能について説明する。上述のように、シミュレーションシステム500は、3D空間におけるシミュレーションで、プログラムをインストールされたPLC200の動作と、PLC200によって制御される機器150の動作とを再現する。
その際、シミュレーションシステム500は、シミュレーションログ250を記録する。シミュレーションログ250は、プログラムの実行時間(または実行タイミング)毎の3D空間内のオブジェクトの位置情報252と、実行時間毎のプログラムの変数の値254とを含む。ここでの3D空間内のオブジェクトは、例えば、3D空間内の機器、機器を構成する部品、ワーク、それ以外の任意の物、および、それらの組合わせを含み得る。
ある局面において、実行時間(または実行タイミング)は、プログラムの命令のステップと、プログラムを繰り返し実行した回数(サイクル)とによって定義されてもよい。ステップとは、例えば、プログラムの1命令単位、または、エディタに記載されたプログラムの1行分の命令を示す(ラダープログラムの1命令、またはエディタに記載されたSTの1行等)。プログラムの1命令または1行分の命令が実行された場合(ラダープログラムの1命令、またはエディタに記載されたSTの1行分の命令が実行された場合等)、1ステップが進んだと見なされる。なお、ステップの間隔は、PLC200の命令周期により定められ得る。一例として、プログラムが10ステップの命令を含んでいた場合とする。この場合、10ステップの命令が実行された時点で、プログラムは1回(サイクル)実行されたことになり、100ステップの命令が実行された時点で、プログラムは10回(サイクル)繰り返し実行されたことになる。また、他の局面において、実行時間(または実行タイミング)は、予め定められた任意の時間間隔(1秒、100ミリ秒等)で定義されてもよい。
図2に示される例では、シミュレーションシステム500は、実行時間(3420サイクル、118ステップ)の時における、3D空間内のオブジェクトの位置情報252と、プログラムの変数の値254とを関連付けてシミュレーションログ250として記録している。
3D空間内のオブジェクトの位置情報252は、3D空間内に存在する1以上のオブジェクトの各々の位置情報を含む。図2に示される例では、3D空間内のオブジェクトの位置情報252は、主軸240(モータ152に接続されるコンベアの軸)の角度と、従軸245(ロータリーナイフ154のローラ)の角度と、カット位置248(ブレードの位置)と、その他のオブジェクトの位置とを含む。
プログラムの変数の値254は、PLC200にインストールされるプログラム253から参照される1以上の変数の各々の値を含む。図2に示される例では、プログラムの変数の値254は、GEAROMPOS1_STARTSYNCの値と、GEAROMPOS1_INSYNCの値と、MC_Axis000.Act.Posの値と、MC_Axis001.Act.Posの値と、その他の変数の値とを含む。
(b-2.デバッグ機能)
次に、デバッグ機能について説明する。シミュレーションシステム500は、シミュレーションログ250に基づいて、シミュレーションを再生し、ステップ毎のシミュレーションの場面を画面251に表示し得る。
画面251は、3D空間の表示260と、プログラムの表示265と、実行時間毎の3D空間内のオブジェクトの位置情報252と、実行時間毎のプログラムの変数の値254とを含む。
また、シミュレーションシステム500は、ユーザからの操作入力に基づいて、ステップ毎に一時停止しながらシミュレーションを再生または逆再生する機能を有する。
例えば、シミュレーションの場面が第1の実行時間であったとする。この場合、画面251には、第1の実行時間における、3D空間の表示260、プログラムの表示265、3D空間内のオブジェクトの位置情報252、および、プログラムの変数の値254が表示される。
ユーザからの操作入力に基づいて、シミュレーションの場面が第1の実行時間から1ステップ進んで(または戻って)、第2の実行時間に変化したとする。この場合、画面251には、第2の実行時間における、3D空間の表示260、プログラムの表示265、3D空間内のオブジェクトの位置情報252、および、プログラムの変数の値254が表示される。ある局面において、プログラムの表示265は、プログラムの変数の値254を代入されたプログラムの実行状態を含んでもよい。
ユーザは、画面251を参照することで、3D空間の表示260、プログラムの表示265、3D空間内のオブジェクトの位置情報252、および、プログラムの変数の値254を同時に確認することができる。これにより、ユーザは、機器150の動作を確認しながら、プログラムを容易にデバッグし得る。
<B.システム構成>
次に、図3~図5を参照して、シミュレーションシステム500のシミュレーション対象となるシステムの全体像と、シミュレーションシステム500として動作する装置のハードウェア構成と、シミュレーションシステム500の機能構成とについて説明する。
図3は、本実施の形態に従うシミュレーション技術を適用可能な機器を含む制御システム2のユニット構成の一例を示す図である。図1に示される機器150は、例えば、制御システム2の一部として実現され得る。
制御システム2は、一例として、PLC200と、PLC200とフィールドネットワーク22を介して接続されるサーボモータドライバ531,532およびIOリモートターミナル5と、ロボットコントローラ310と、フィールドに設けられたIOデバイス(センサ6およびエンコーダ236、238等)とを含む。
PLC200は、主たる演算処理を実行する演算ユニット13、1つ以上のIOユニット14および特殊ユニット17を含む。これらのユニットは、システムバス81を介して、データを互いに遣り取りできるように構成されるとともに、電源ユニット12から電力の供給を受ける。演算ユニット13には、シミュレーション用の装置100が接続され得る。
装置100は、シミュレーションシステム500として動作し得る。また、装置100は、シミュレーションにて動作検証が完了したプログラムを演算ユニット13にインストールし得る。演算ユニット13は、インストールされたプログラムに基づいて、制御システム2に含まれる各装置を制御し得る。装置100は、ネットワーク80を介して、演算ユニット13に接続されてもよい。
IOユニット14は、センサ6、エンコーダ236,238等を含むIOデバイスから検出値61,237および239を収集する。例えば、センサ6は、図1に示されるシート158のカット位置159を検出するためのセンサ157であってもよい。また、エンコーダ236,238は、コンベア151を駆動させるためのモータ152またはロータリーナイフ154を駆動させるためのモータ155に取り付けられていてもよい。各IOデバイスからの検出値は、例えばIOユニット14が備えるメモリの対応ビットに設定(書込)される。
演算ユニット13は、IOユニット14により収集された値を用いて制御プログラムの演算を実行し、演算結果の値をIOユニット14の対応のビットに設定(書込)する。周辺機器またはIOデバイスは、IOユニット14の各ビットの値を参照して動作する。このように、PLC200は、IOユニット14を介してIOデバイスおよび周辺機器と相互にデータを遣り取りしながら、制御対象であるロボットまたはコンベア等を制御することができる。
特殊ユニット17は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット14ではサポートされない機能を有する。
フィールドネットワーク22には、例えば、ロボットコントローラ310、サーボモータドライバ531,532、およびIOリモートターミナル5等が接続されてもよい。
IOリモートターミナル5は、基本的には、IOユニット14と同様に、一般的な入出力処理に関する処理を行う。より具体的には、IOリモートターミナル5は、フィールドネットワーク22でのデータ伝送に係る処理を行うための通信カプラ52と、1つ以上のIOユニット53とを含む。これらのユニットは、IOリモートターミナルバス51を介して、データを互いに遣り取りできるように構成される。
サーボモータドライバ531,532は、フィールドネットワーク22を介して演算ユニット13に接続されるとともに、演算ユニット13からの指令値に従ってサーボモータ41,42を駆動する。具体的には、サーボモータドライバ531,532は、PLC200から、制御周期等の一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。演算ユニット13は、エンコーダ236,238からの検出値237,239に基づいて、これらの指令値を生成してもよい。ある局面において、サーボモータ41,42は、ロータリーナイフ154を駆動させるモータ155として使用されてもよい。
演算ユニット13は、上記に述べたIOデバイスからの検出値を参照して、所定の制御プログラムを実行することで、ロボットハンド210に、ワークのピックアンドプレース、ワークの押さえ等の操作を実行させることができる。
具体的には、演算ユニット13は、ロボットアームのための制御指令211と、ロボットハンド210のための制御指令222とを生成し、ロボットコントローラ310を介して、ロボットハンド210にこれらの制御信号を出力する。また、演算ユニット13は、制御指令211を生成する際には、上記に述べたIOデバイスからの検出値61に加えて、ロボットハンド210の状態値を参照し得る。ロボットアームは、例えば、サーボモータ1301~1304等の任意の数のサーボモータを含んでいてもよい。
シミュレーションシステム500は、上記の制御システム2全体をシミュレーションの対象としてもよいし、制御システム2に含まれる一部の構成のみをシミュレーションの対象としてもよい。
図4は、装置100のハードウェア構成の一例を示す図である。装置100は、シミュレーションシステム500として動作し得る。ある局面において、シミュレーションシステム500は、複数の装置100、装置100のハードウェア構成の少なくとも一部を備えるシステム、装置100のハードウェア構成の少なくとも一部を備えるクラウド環境上の仮想マシン等により実現されてもよい。
装置100は、主たるコンポーネントとして、オペレーティングシステム(OS:Operating System)およびOS上で動作するプログラムを実行するプロセッサ102と、プロセッサ102によるプログラムの実行に必要なデータを格納するための作業領域を提供する主メモリ104と、キーボードやマウス等のユーザ操作を受付ける操作ユニット106(操作受付部)と、ディスプレイ109、各種インジケータ、プリンタ等の処理結果を出力する出力ユニット108と、ネットワーク80を含む各種ネットワークに接続されるネットワークインターフェイス110と、光学ドライブ112と、外部装置と通信するローカル通信インターフェイス116と、ストレージ111とを含む。これらのコンポーネントは、内部バス118等を介してデータ通信可能に接続される。
装置100は、光学ドライブ112を有しており、コンピュータ読取可能なプログラムを非一過的に格納する光学記録媒体(例えば、DVD(Digital Versatile Disc)等)を含むコンピュータ読取可能な記録媒体114から各種プログラムを読み取って、ストレージ111等に当該各種プログラムをインストールしてもよい。
装置100で実行される各種プログラムは、コンピュータ読取可能な記録媒体114を介して装置100にインストールされてもよいが、ネットワーク上の図示しないサーバ装置等からネットワークインターフェイス110を介して装置100にインストールされてもよい。
ストレージ111は、例えば、HDD(Hard Disk Drive)またはSSD(Flash Solid State Drive)等で構成され、プロセッサ102で実行されるプログラムを格納する。より具体的には、ストレージ111は、OS120と、統合開発環境130とを格納する。統合開発環境130は、OS120上で動作するアプリケーションとして実現され得る。
統合開発環境130は、図1を参照して説明されたシミュレーションシステム500の機能を提供する。言い換えれば、プロセッサ102が、主メモリ104に展開された統合開発環境130を実行することにより、シミュレーションシステム500の機能は実現される。
ある局面において、図1を参照して説明されたシミュレーションの記録機能と、デバッグ機能とは、統合開発環境130のアドインとして実現されてもよい。
ある局面において、装置100は、統合開発環境130の機能の一部または全てを、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)等を用いて実現してもよい。
図5は、シミュレーションシステム500の機能構成の一例を示す図である。図5に示される各機能構成は、プログラムコンポーネントとして実現され得る。この場合、各機能構成は、ソフトウェアとして、装置100のハードウェア上で動作し得る。
シミュレーションシステム500は、機能構成として、3D形状表示部510と、PLCシミュレーション部520と、IECプログラム編集部530と、変数メモリグラフ表示部540と、データ管理部550と、実機・シミュレーションデータ比較部560と、リポジトリ570とを含む。
3D形状表示部510は、3D空間におけるシミュレーションをディスプレイに描画する。そのための構成として、3D形状表示部510は、3D形状読取部511と、3D形状描画部512と、3Dメモリ表示部513とを含む。
3D形状読取部511は、シミュレーションで使用するCADファイル580を読み込んで、当該CADファイル580を3D形状描画部512で描画可能に変換する。ある局面において、3D形状読取部511は、ストレージ111からCADファイル580を読み込んでもよい。他の局面において、3D形状読取部511は、ネットワークインターフェイス110、光学ドライブ112またはローカル通信インターフェイス116を介して外部から入力されたCADファイル580を読み込んでもよい。
3D形状描画部512は、3D空間内のオブジェクト(3D形状読取部511から取得したデータ)およびオブジェクトの動作をディスプレイ109に表示する。3D空間におけるオブジェクトは、制御システム2に含まれる各機器だけでなく、ワーク等も含み得る。例えば、3D形状描画部512は、3D空間の表示260をディスプレイ109に表示する。
3Dメモリ表示部513は、実行時間毎の3D空間内のオブジェクトの位置情報252をディスプレイ109に表示する。また、シミュレーションログ250をリポジトリ570から読み込んで、過去に記録したシミュレーションを再現する。ある局面において、3Dメモリ表示部513は、過去に記録したシミュレーションを再現するときに、3D形状描画部512の描画機能を用いてもよい。ある局面において、3Dメモリ表示部513は、図2、図11~図14に示される画面全てを描画してもよい。
PLCシミュレーション部520は、PLC200にインストールされるプログラムをシミュレーション上で実行する。そのための構成として、PLCシミュレーション部520は、ステップ実行部521を含む。ある局面において、PLCシミュレーション部520は、シミュレーションの再生時の表示機能も備えていてもよい。この場合、PLCシミュレーション部520は、図2、図11~図14に示される画面全てを描画してもよい。
ステップ実行部521は、ステップ毎にプログラムを実行する。ステップ実行部521は、リポジトリ570に記録されたシミュレーションログ250をステップ毎に再生または逆再生することもできる。さらに、ステップ実行部521は、実行時間毎のプログラムの変数の値254をディスプレイ109に表示する。3D形状表示部510は、ステップ実行部521から取得したプログラムの実行位置(ステップの位置)および実行回数(サイクル数)に基づいて、3D空間内のオブジェクトの表示を更新し得る。
IECプログラム編集部530は、操作ユニット106を介して、プログラムの編集操作を受け付ける。ある局面において、ステップ実行部521は、IECプログラム編集部530によるプログラムの変更を即座に反映してシミュレーションを実行してもよい。
変数メモリグラフ表示部540は、リポジトリ570に記録された変数メモリ572に基づいて、変数の値の変化を示すグラフ1310等(図13参照)をディスプレイ109に表示し得る。
データ管理部550は、シミュレーションログ250を管理する。そのための構成として、データ管理部550は、データ入力部551と、データ読取部552と、データ差分抽出部553と、データ差分記録部554とを含む。ある局面において、データ管理部550は、操作ユニット106を介して、シミュレーションの記録の設定を取得してもよい。シミュレーションの記録の設定は、記録対象のオブジェクトの指定、記録対象の変数の指定、シミュレーションを実行する期間の指定等を含む。データ管理部550は、取得した設定に基づいて、シミュレーションログ250を記録し得る。ある局面において、シミュレーションを実行する期間は、シミュレーションの開始時刻および終了時刻により設定されてもよい。他の局面において、シミュレーションを実行する期間は、開始時のプログラムのステップ数およびサイクル数と、終了時のプログラムのステップ数およびサイクル数により設定されてもよい。
データ入力部551は、3D形状表示部510から、実行時間毎の3D空間内のオブジェクトの位置情報252を取得する。また、データ読取部552は、PLCシミュレーション部520から、実行時間毎のプログラムの変数の値254を取得する。
データ読取部552は、デバッグ時に(記録したシミュレーションを再現する時に)、3D形状表示部510に3Dシミュレーションメモリ571のデータを渡す。同様に、データ読取部552は、デバッグ時に、PLCシミュレーション部520に変数メモリ572のデータを渡す。
データ差分抽出部553は、データ入力部551が取得したデータ(3D空間内のオブジェクトの位置情報252およびプログラムの変数の値254)の実行時間毎の差分を抽出する。より具体的には、データ差分抽出部553は、第1の実行時間における3D空間内のオブジェクトの位置情報252と、第2の実行時間における3D空間内のオブジェクトの位置情報252とを比較して、オブジェクトの位置の差分を抽出する。同様に、データ差分抽出部553は、第1の実行時間におけるプログラムの変数の値254と、第2の実行時間におけるプログラムの変数の値254とを比較して、変数の値の差分を抽出する。
データ差分記録部554は、シミュレーションログ250の一部として、オブジェクトの位置の差分を3Dシミュレーションメモリ571に格納する。また、データ差分記録部554は、シミュレーションログ250の一部として、変数の値の差分を変数メモリ572に格納する。
ステップ毎に全ての3D空間内のオブジェクトの位置情報252およびプログラムの変数の値254をリポジトリ570に格納した場合、シミュレーションログ250は膨大な量になってしまう。そのため、データ差分抽出部553およびデータ差分記録部554は、前回の記録に対する差分のみをリポジトリ570に保存することで、リポジトリ570の記憶容量を節約する。
実機・シミュレーションデータ比較部560は、プログラムのシミュレーションでの実行結果と、プログラムの実環境での実行結果とを比較する。そのための構成として、実機・シミュレーションデータ比較部560は、同期部561と、データ比較部562と、表示部563とを含む。
ある局面において、PLCシミュレーション部520は、カメラの映像およびセンサから得られる信号等に基づいて、実環境における、タイムスタンプと、実行時間毎のオブジェクトの位置情報と、プログラムの変数の値と関連付けて、データ管理部550に出力してもよい。実機・シミュレーションデータ比較部560は、リポジトリ570に格納されたシミュレーションログ250と、実環境のログ(図示せず)とを再生することで、プログラムのシミュレーションでの実行結果と、プログラムの実環境での実行結果とを比較し得る。
同期部561は、シミュレーションのサイクルと、実環境とのサイクルとを一致させる。より具体的には、シミュレーションの実行時間(サイクルおよびステップ)と、実環境の実行時間(タイムスタンプ、または実環境でのプログラムのステップおよびサイクル)とを対応付ける。
データ比較部562は、同一の実行時間における、プログラムのシミュレーションでの実行結果と、プログラムの実環境での実行結果とを比較する。
表示部563は、同一の実行時間における、プログラムのシミュレーションでの実行結果と、プログラムの実環境での実行結果とを表示し得る。ある局面において、表示部563は、プログラムのシミュレーションでの実行結果と、プログラムの実環境での実行結果の差分をディスプレイ109に表示してもよい。他の局面において、表示部563は、プログラムのシミュレーションでの実行結果と、プログラムの実環境での実行結果の差分を強調表示してもよい。これにより、ユーザは、実環境に合わせてプログラムを容易に修正し得る。
リポジトリ570は、シミュレーションログ250を記録する。リポジトリ570は、3Dシミュレーションメモリ571と、変数メモリ572とを含む。ある局面において、リポジトリ570は、バージョン管理システムのリポジトリであってもよい。
3Dシミュレーションメモリ571は、ステップ毎に、実行時間と関連付けられた3D空間内のオブジェクトの位置情報252を格納する。
変数メモリ572は、ステップ毎に、実行時間と関連付けられたプログラムの変数の値254を格納する。
また、リポジトリ570は、実環境におけるプログラムの実行ログも記録し得る。この場合、リポジトリ570は、ステップ毎に、実環境の実行時間と関連付けられた実環境のオブジェクトの位置情報を格納する。同様に、リポジトリ570は、ステップ毎に、実環境の実行時間と関連付けられた実環境のプログラムの変数の値を格納する。
<C.シミュレーションログの記録の手順>
次に、図6~図10を参照して、シミュレーションシステム500がシミュレーションログ250を記録する手順について説明する。図6~図10に示される例では、シミュレーションシステム500は、機器150のシミュレーションログ250を記録する。
図6は、シミュレーションの様子の第1の例を示す図である。図6に示される例では、シミュレーションシステム500は、プログラム611をシミュレーション内で実行している。各オブジェクトの動きおよび位置は、3D空間601で再現されている。
3D空間601は、実行時間(1920サイクル、118ステップ)における、3D空間内の各オブジェクトを含む。実行時間(1920サイクル、118ステップ)とは、言い換えれば、PLC200がプログラム611を実行する回数が1920回目であり、PLC200がプログラム611の第118ステップを実行した時点を示す。
シミュレーションシステム500は、シミュレーション内でPLC200がプログラム611を1ステップ実行する毎に、3D空間601内のオブジェクトの位置情報と、実行時間毎のプログラムの変数の値とをシミュレーションログ250としてリポジトリ570に格納する。より具体的には、シミュレーションシステム500は、前回の記録との差分情報をリポジトリ570に格納する。
図6に示される例の場合、シミュレーションシステム500は、実行時間(1920サイクル、118ステップ)における、3D空間内のオブジェクトの位置情報602と、プログラムの変数の値612とをシミュレーションログ250として、リポジトリ570に格納する。
図7は、シミュレーションの様子の第2の例を示す図である。図7に示される例は、プログラム611の実行状態を図6に示される状態から1ステップ進めた状態を示す。3D空間601は、実行時間(1920サイクル、119ステップ)における、3D空間内の各オブジェクトを含む。
シミュレーション内でPLC200がプログラム611を1ステップ実行したため、シミュレーションシステム500は、実行時間(1920サイクル、119ステップ)における、3D空間内のオブジェクトの位置情報702と、プログラムの変数の値712とをシミュレーションログ250として、リポジトリ570に格納しようとする。
このとき、実行時間(1920サイクル、118ステップ)における3D空間内のオブジェクトの位置情報602およびプログラムの変数の値612と、実行時間(1920サイクル、119ステップ)における3D空間内のオブジェクトの位置情報702およびプログラムの変数の値712とは、「GEAROMPOS1_INSYNC」のみが異なっている。この場合、シミュレーションシステム500は、差分である「GEAROMPOS1_INSYNC」の値をシミュレーションログ250として、リポジトリ570に格納する。このように、シミュレーションシステム500は、前回記録したシミュレーションログ250との差分をリポジトリ570に格納することで、リポジトリ570の記憶容量を節約し得る。
図8は、シミュレーションの様子の第3の例を示す図である。図8に示される例は、プログラム611の実行状態を図6に示される状態から1500サイクル進めた状態を示す。3D空間601は、実行時間(3420サイクル、118ステップ)における、3D空間内の各オブジェクトを含む。
シミュレーションシステム500は、シミュレーション内でPLC200がプログラム611を1ステップ実行する毎に、繰り返しシミュレーションログ250をリポジトリ570に格納し続ける。その際、シミュレーションシステム500は、前回記録したシミュレーションログ250との差分のみをリポジトリ570に格納する。
図8に示される時点では、リポジトリ570は、図6に示される時点から、さらに1500サイクル分先の実行時間(3420サイクル、118ステップ)における、3D空間内のオブジェクトの位置情報802と、プログラムの変数の値812とをシミュレーションログ250として、リポジトリ570に格納する。
図9は、リポジトリ570に格納されるデータの第1の例を示す図である。図9に示される例では、リポジトリ570は、シミュレーションログ250を格納する。シミュレーションログ250は、IEC変数の値901と、ロボット変数の値902と、IECプログラムのステップおよびサイクルのカウント903と、3D空間内のオブジェクトの位置情報252とを含む。
IEC変数の値901と、ロボット変数の値902とは、プログラムの変数の値254に含まれる。IEC変数の値901は、PLC200によって実行されるプログラムで参照される1以上の変数の値を含む。ロボット変数の値902は、ロボットハンド210等の制御用の変数等を含む。
IECプログラムのステップおよびサイクルのカウント903は、プログラムが繰り返し実行された回数(サイクル)および直前に実行されたステップを含む。IECプログラムのステップおよびサイクルのカウント903は、シミュレーションの実行時間として、3D空間内のオブジェクトの位置情報252およびプログラムの変数の値254と関連付けられる。
IEC変数の値901、ロボット変数の値902、IECプログラムのステップおよびサイクルのカウント903、およびオブジェクトの位置情報252は、ステップ毎に、シミュレーションログ250の差分情報としてリポジトリ570に格納される。
ある局面において、リポジトリ570に前回保存されたシミュレーションログ250と、今回のシミュレーションログ250とに差分がない場合は、シミュレーションシステム500は、今回のシミュレーションログ250をリポジトリ570に保存しなくてもよい。また、他の局面において、リポジトリ570に前回保存されたシミュレーションログ250と、今回のシミュレーションログ250とに差分がない場合は、シミュレーションシステム500は、IEC変数の値901と、ロボット変数の値902と、3D空間内のオブジェクトの位置情報252とをリポジトリ570に保存せずに、IECプログラムのステップおよびサイクルのカウント903をリポジトリ570に保存してもよい。
図10は、リポジトリ570に格納されるデータの第2の例を示す図である。図10に示される例では、リポジトリ570は、プログラムのシミュレーションログ250と、プログラムの実環境のログ1050とを格納する。
実環境のログ1050は、実環境のIEC変数の値1011と、実環境のロボット変数の値1012と、実環境のIECプログラムのステップおよびサイクルのカウント1013と、実環境のオブジェクトの位置情報1014とを含む。
実環境のIEC変数の値1011は、プログラムを実環境で実行した場合のPLC200によって実行されるプログラムで参照される1以上の変数の値を含む。
実環境のロボット変数の値1012は、プログラムを実環境で実行した場合のロボットハンド210等の制御用の変数等を含む。
実環境のIECプログラムのステップおよびサイクルのカウント1013は、プログラムを実環境で実行した場合の実行時間を示す。ある局面において、実環境のIECプログラムのステップおよびサイクルのカウント1013は、PLC200のプログラムの実行周期等から算出されたタイムスタンプを含んでいてもよい。他の局面において、シミュレーションシステム500は、何らかのセンサがワークまたは機器の動作を検出した時点を実環境におけるプログラムの1ステップ目であると判定してもよい。シミュレーションシステム500は、実環境におけるプログラムの1ステップ目と、シミュレーションにおけるプログラムの1ステップ目とを対応付けることで、シミュレーション内のプログラムの実行タイミングと、実環境でのプログラムの実行タイミングとを同期させることができる。
実環境のオブジェクトの位置情報1014は、プログラムを実環境で実行した場合のオブジェクトの位置を示す。ある局面において、実環境のオブジェクトの位置情報1014は、カメラ(または3Dカメラ)およびセンサ等を用いて検出され得る。シミュレーションログ250および実環境のログ1050は、実機・シミュレーションデータ比較部560により参照される。実機・シミュレーションデータ比較部560は、シミュレーションログ250および実環境のログ1050を参照して、プログラムのシミュレーションでの実行結果と、プログラムの実環境での実行結果とを比較し得る。
ある局面において、シミュレーションシステム500は、バージョン管理システムで複数のブランチを作成して、各ブランチにシミュレーションログ250および実環境のログ1050を保存してもよい。
<D.プログラムのデバッグの手順>
次に、図11~図14を参照して、シミュレーションシステム500を用いたプログラムのデバッグの手順について説明する。図11~図14に示される例では、シミュレーションシステム500は、過去に記録された機器150のシミュレーションログ250をステップ毎に再生している。
図11は、シミュレーションシステム500におけるデバッグ画面の第1の例を示す図である。画面1100は、過去に記録された機器150のシミュレーションログ250に基づいて再現されたシミュレーションの場面を含む。画面1100は、ディスプレイ109に表示される。画面1100は、ステップ毎にシミュレーションの場面を再生、逆再生、一時停止およびシミュレーションの停止等の任意の操作を行うための操作用UI1101を含んでいてもよい。この場合、ユーザは、操作用UI1101を操作することで、ステップ毎にシミュレーションの場面を更新し得る。
画面1100には、切断位置1120で切断されていないシート158が映っている。このような場合、ユーザは、操作用UI1101を介してシミュレーションの場面を少し前(例えば、切断位置1120の一つ前の切断位置1130におけるシート158の切断前後等)に戻してから再生することで、プログラムの不具合の原因を調査し得る。
例えば、画面1100Aは、切断位置1130におけるシート158の切断前の場面を写す。画面1100Bは、切断位置1130におけるシート158の切断時の場面を写す。画面1100Cは、切断位置1130におけるシート158の切断後の場面を写す。画面1100A~画面1100Cを見ると、切断位置1130におけるシート158の切断後に、ブレード1110がシート158の切断位置1120に到達していないことがわかる。言い換えれば、従軸245の回転速度が、シート158が進む速度に対して遅れていることがわかる。ある局面において、シミュレーションシステム500は、画面1100A~画面1100Cのように連続したシミュレーションの場面を同時にディスプレイ109に表示してもよい。
このように、ユーザは、ステップ毎にシミュレーションの画面を再生または逆再生することで、機器の配置、動作の問題点等を容易に把握し、当該把握した問題点に基づいて、プログラムを修正し得る。
図12は、シミュレーションシステム500におけるデバッグ画面の第2の例を示す図である。画面1200は、過去に記録された機器150のシミュレーションログ250に基づいて再現されたシミュレーションの場面1201(3D空間の表示)と、プログラム1202と、オブジェクトの位置情報1203と、プログラムの変数の値1204とを含む。ある局面において、シミュレーションシステム500(またはPLCシミュレーション部520)は、トレースする変数の選択入力を受け付けてもよい。シミュレーションシステム500(またはPLCシミュレーション部520)は、トレースする変数の選択入力を受け付けたことに基づいて、プログラムの変数の値1204にトレース対象変数の値のみを含め得る。
ユーザは、操作用UI1101を操作してシミュレーションの画面を再生または逆再生することで、ステップ毎にシミュレーションの場面1201を更新し得る。ステップ毎にシミュレーションの場面1201が更新される毎に、プログラム1202、オブジェクトの位置情報1203、およびプログラムの変数の値1204も更新される。
ユーザは、例えば、シミュレーションの場面1201で問題を発見した場合、操作用UI1101を操作することで、問題のある場面の前後の数ステップのシミュレーションの場面1201を確認し得る。さらに、ユーザは、問題のある場面の前後の数ステップにおける、プログラム1202、オブジェクトの位置情報1203、およびプログラムの変数の値1204を同時に確認することで、プログラムの問題点を容易に把握することができる。
ユーザは、少なくとも、シミュレーションの場面1201と、プログラムの変数の値1204とを確認することにより、プログラムを容易にデバッグし得る。より具体的には、ユーザは、シミュレーションの場面1201(3D空間)での異常を発見した場合、プログラムの変数の値1204を確認することで、3D空間内での異常の原因となる変数の値を特定することができる。
また、ユーザは、シミュレーションの場面1201およびプログラムの変数の値1204に加えて、数値情報を含むオブジェクトの位置情報1203を確認することで、より詳細にプログラムをデバッグし得る。例えば、図12に示される例では、主軸240および従軸245は、シート158をカット位置159でカットするために、互いにタイミングを合わせて回転する必要がある。仮に主軸240および従軸245間の回転タイミングがずれている場合、ユーザは、オブジェクトの位置情報1203を確認することで、具体的な回転タイミングのずれの量を把握することができる。ユーザは、当該回転タイミングのずれの量に基づいて、プログラム(変数に代入する値等)を修正し得る。
さらに、ユーザは、シミュレーションの場面1201およびプログラムの変数の値1204に加えて、または、シミュレーションの場面1201、オブジェクトの位置情報1203およびプログラムの変数の値1204に加えて、プログラム1202を確認することで、より詳細にプログラムをデバッグし得る。より具体的には、ユーザは、シミュレーションの場面1201(3D空間)での異常を発見した場合、プログラムの変数の値1204およびプログラム1202(ソースコード)を確認することで、問題となるプログラムのコードおよび変数の値を把握し得る。
操作用UI1101は、上述したように、ステップ毎のシミュレーションの再生操作と、ステップ毎のシミュレーションの逆再生操作と、ステップ毎のシミュレーションの一時停止操作と、シミュレーションの停止操作とを受け付け得る。ある局面において、操作用UI1101は、1サイクル(または1ステップ)再生の操作、1サイクル(または1ステップ)逆再生の操作、ブレークポイント設定の操作、スロー再生の操作、および、スロー逆再生の操作を受け付けてもよい。
ユーザが、操作用UI1101を介して、シミュレーションの再生操作を行ったとする。この場合、シミュレーションの場面1201は、プログラムのステップ単位で更新される(再生される)。また、オブジェクトの位置情報1203およびプログラムの変数の値1204も、プログラムのステップ単位で更新される(次のステップの値に更新される)。これにより、ユーザは、明確にシミュレーションの場面1201で問題が発生するタイミングを把握することができる。また、ユーザは、当該問題が発生するタイミングにおけるオブジェクトの位置情報1203を確認することにより、各オブジェクトの位置を正確に把握し得る。同様に、ユーザは、当該問題が発生するタイミングにおけるプログラムの変数の値1204を確認することにより、プログラムの誤動作の原因を特定し得る。
ユーザが、操作用UI1101を介して、シミュレーションの逆再生操作を行ったとする。この場合、シミュレーションの場面1201は、プログラムのステップ単位で更新される(逆再生される)。また、オブジェクトの位置情報1203およびプログラムの変数の値1204も、プログラムのステップ単位で更新される(前のステップの値に更新される)。これにより、ユーザは、シミュレーションの場面1201での問題発生時から遡って、問題の原因を特定することができる。
ある局面において、ユーザが、操作用UI1101を介して、シミュレーションの再生操作または逆再生操作を行った場合(例えば、再生ボタン(逆再生ボタン)が1回押された場合)、シミュレーションの場面1201、オブジェクトの位置情報1203およびプログラムの変数の値1204は、ステップ単位で連続再生(または連続逆再生)されてもよい。
他の局面において、ユーザが、操作用UI1101を介して、シミュレーションの再生操作または逆再生操作を行った場合(例えば、再生ボタン(逆再生ボタン)が1回押された場合)、シミュレーションの場面1201、オブジェクトの位置情報1203およびプログラムの変数の値1204は、1ステップだけ再生(逆再生)されてもよい。
ユーザが、操作用UI1101を介して、シミュレーションを一時停止(または停止)する操作を行ったとする。この場合、現在実行されているプログラムのステップで、シミュレーションの場面1201、オブジェクトの位置情報1203およびプログラムの変数の値1204は、停止する。これにより、ユーザは、任意のステップにおける、各オブジェクトの位置および各変数の値を詳細に確認することができる。
ユーザが、操作用UI1101を介して、シミュレーションをコマ送り(コマ送りでの逆再生を含む)する操作を行ったとする。この場合、シミュレーションの場面1201、オブジェクトの位置情報1203およびプログラムの変数の値1204は、プログラムのステップ単位で、ゆっくりと再生される。これにより、ユーザは、プログラムのステップが進む毎に、どのように各オブジェクトの位置および各変数の値が変化したのかを詳細に確認することができる。
ユーザが、操作用UI1101を介して、シミュレーションを1サイクル(または1ステップ)再生する操作を行ったとする。この場合、シミュレーションの場面1201、オブジェクトの位置情報1203およびプログラムの変数の値1204は、1サイクル(または1ステップ)分だけ再生される。ユーザは、1サイクル(または1ステップ)再生の機能を使用することで、シミュレーションを再生しながら各オブジェクトの位置および各変数の値の変化を詳細に確認することができる。
ユーザが、操作用UI1101を介して、シミュレーションを1サイクル(または1ステップ)逆再生する操作を行ったとする。この場合、シミュレーションの場面1201、オブジェクトの位置情報1203およびプログラムの変数の値1204は、1サイクル(または1ステップ)分だけ逆再生される。ユーザは、1サイクル(または1ステップ)逆再生の機能を使用することで、シミュレーションを逆再生しながら各オブジェクトの位置および各変数の値の変化を詳細に確認することができる。
ユーザが、操作用UI1101を介して、プログラムに対するブレークポイント設定の操作およびシミュレーションの再生操作を行ったとする。この場合、シミュレーションの場面1201、オブジェクトの位置情報1203およびプログラムの変数の値1204は、再生され続け、ブレークポイントが設定されたプログラムのステップにおいて、一時停止する。ある局面において、ブレークポイント設定機能は、プログラム1202,1320,1410の表示が備えていてもよい。
ユーザが、操作用UI1101を介して、シミュレーションをスロー再生する操作を行ったとする。この場合、シミュレーションの場面1201、オブジェクトの位置情報1203およびプログラムの変数の値1204は、スローで再生される。ある局面において、ユーザは、操作用UI1101を介して、スロー再生の再生速度の設定を入力できてもよい。
ユーザが、操作用UI1101を介して、シミュレーションをスロー逆再生する操作を行ったとする。この場合、シミュレーションの場面1201、オブジェクトの位置情報1203およびプログラムの変数の値1204は、スローで逆再生される。ある局面において、ユーザは、操作用UI1101を介して、スロー逆再生の再生速度の設定を入力できてもよい。
ある局面において、シミュレーションの場面1201が切り替わった(シミュレーションが再生、逆再生、またはコマ送りされた)場合において、オブジェクトの位置情報1203およびプログラムの変数の値1204に変化があったとき、シミュレーションシステム500は、変化のあった値(オブジェクトの位置の値または変数の値)を強調表示してもよい。
図13は、シミュレーションシステム500におけるデバッグ画面の第3の例を示す図である。画面1300は、過去に記録されたプログラムの変数の値254に基づいて生成された変数のグラフ1310と、過去に記録されたプログラムの変数の値254に基づいて状態を再現されたプログラム1320とを含む。
ある局面において、変数のグラフ1310およびプログラム1320は、シミュレーションの場面1201、オブジェクトの位置情報1203およびプログラムの変数の値1204の全てまたは一部と共に表示され得る。
シミュレーションシステム500は、プログラム1320に表示される各変数の値をステップ毎に更新し得る。ある局面において、シミュレーションシステム500は、ユーザからステップの再生または逆再生操作入力を受け付けたことに基づいて、または、シミュレーションの場面が更新されたことに基づいて、変数のグラフ1310およびプログラム1320を更新してもよい。例えば、シミュレーションシステム500は、変数をプログラムに代入することで、実行時間毎のプログラムの動作を再生してもよい。
ユーザは、各変数の値の変化のタイミングと、プログラムの状態の変化(プログラムの動作)とを同時に確認することにより、プログラムの問題点を容易に把握することができる。
図13に示される例では、プログラム1320の各変数には、実行時間毎の値が代入されている。一例として、実行時間が「1920サイクル、118ステップ」である場合、プログラム1320の各変数には、プログラムの実行回数が1920サイクル目であり、118ステップ目の処理が実行された時点の値が代入される。
プログラム1320の各変数に代入される値は、ステップ毎に更新される。例えば、シミュレーションの場面1201が1ステップ分更新された場合、プログラム1320の各変数に代入される値も1ステップ分更新される。
ある局面において、シミュレーションシステム500は、プログラム1320の各変数に代入される値に変化があった場合、変化した値、代入される値が変化した変数の名称、またはその両方を強調表示してもよい。
また、他の局面において、シミュレーションシステム500は、プログラム1320に含まれる1以上の変数のいずれかが選択された場合、選択された変数を含む変数のグラフ1310を生成してもよい。
さらに、他の局面において、シミュレーションシステム500は、プログラム1320において、グラフ表示されている変数を強調表示してもよい。図13に示される例の場合、シミュレーションシステム500は、プログラム1320において、変数のグラフ1310中の「マーク検出信号」および「切断完了信号」に対応する変数を強調表示し得る。
ユーザは、変数のグラフ1310を参照することで視覚的に変数の変化を確認することができる。また、ユーザは、プログラム1320中の強調表示された変数(変化のあった変数)の値を参照することで変数の値の正確な変化量を把握し得る。
図14は、シミュレーションシステム500におけるデバッグ画面の第4の例を示す図である。画面1400は、プログラム1410と、プログラムのフローチャート1420と、過去に記録されたプログラムの変数の値254に基づいて生成された変数のグラフ1430とを含む。なお、プログラム1410は、プログラム1320と同様に、ステップ毎に変数に値を代入されたものであってもよい。
ある局面において、プログラム1410、プログラムのフローチャート1420および変数のグラフ1430は、シミュレーションの場面1201、オブジェクトの位置情報1203およびプログラムの変数の値1204の全てまたは一部と共に表示され得る。
シミュレーションシステム500は、ユーザからステップの再生または逆再生操作入力を受け付けたことに基づいて、または、シミュレーションの場面が更新されたことに基づいて、プログラム1410に表示される各変数の値を更新してもよい。また、シミュレーションシステム500は、ユーザからステップの再生または逆再生操作入力を受け付けたことに基づいて、または、シミュレーションの場面が更新されたことに基づいて、フローチャート1420中の処理を強調表示してもよい。さらに、シミュレーションシステム500は、ユーザからステップの再生または逆再生操作入力を受け付けたことに基づいて、または、シミュレーションの場面が更新されたことに基づいて、変数のグラフ1430を更新してもよい。
ユーザは、各変数の値の変化のタイミングと、プログラムの状態の変化(プログラムの動作)と、フローチャート上で実行されている処理とを同時に確認することにより、プログラムの問題点を容易に把握することができる。
フローチャート1420の各ブロックは、一例として、プログラム1410の各POUと関連付けられてもよい。ある局面において、シミュレーションシステム500は、プログラム1410からフローチャート1420を生成してもよい。他の局面において、シミュレーションシステム500は、ユーザから、フローチャート1420の各ブロックと、プログラム1410の各POUと関連付けるための操作入力を受け付けてもよい。また、他の局面において、シミュレーションシステム500は、プログラム1410において、フローチャート1420の現在実行されている処理のブロックに対応するPOUを強調表示してもよい。さらに、他の局面において、フローチャート1420の各ブロックは選択可能に構成されていてもよく、シミュレーションシステム500は、フローチャート1420上で選択されたブロックに対応するPOUをプログラム1410上に表示してもよいし、フローチャート1420上で選択されたブロックに対応するPOUをプログラム1410上で強調表示してもよい。
プログラム1410、プログラムのフローチャート1420および変数のグラフ1430は、ステップ単位で更新され得る。例えば、シミュレーションの場面が1ステップ進むまたは戻る毎に、プログラム1410、プログラムのフローチャート1420および変数のグラフ1430の表示も、1ステップ分進むまたは戻る。
ある局面において、図11~図14に示される各画面に含まれる要素は任意に組み合わされてディスプレイ109に表示されてもよい。例えば、シミュレーションシステム500は、シミュレーションの場面1201と、過去に記録されたプログラムの変数の値254に基づいて状態を再現されたプログラム1320と、フローチャート1420と、変数のグラフ1430とをディスプレイ109に表示してもよい。
<E.フローチャート>
次に、図15~図17を参照して、シミュレーションシステム500によるシミュレーション結果の記録処理、およびデバッグ処理の処理手順について説明する。ある局面において、プロセッサ102は、図15~図17の処理を行うためのプログラム(統合開発環境130等の任意のプログラム)をストレージ111から主メモリ104に読み込んで、当該プログラムを実行してもよい。他の局面において、当該処理の一部または全部は、当該処理を実行するように構成された回路素子の組み合わせとしても実現され得る。
図15は、シミュレーションシステム500によるシミュレーションの記録処理の一例を示すフローチャートである。
ステップS1510において、シミュレーションシステム500は、例えばユーザからのシミュレーションの開始操作を受け付けたことに基づいて、シミュレーションを開始する。
ステップS1520において、シミュレーションシステム500は、3Dシミュレーションメモリ571、変数メモリ572への記録を開始する。
ステップS1530において、シミュレーションシステム500は、シミュレーションが完了するまでステップS1540以降の処理を繰り返し実行する。
ステップS1540において、シミュレーションシステム500は、シミュレーション(またはプログラム)のステップ毎に、3D空間内のオブジェクトの位置情報252と、プログラムの変数の値254とを取得する。
ステップS1550において、シミュレーションシステム500は、取得したデータ(シミュレーションログ250:3D空間内のオブジェクトの位置情報252およびプログラムの変数の値254)をデータ管理部550に渡す。データ管理部550は、取得したデータをリポジトリ570にコミットする。
ステップS1560において、シミュレーションシステム500は、シミュレーション(またはプログラム)のステップを進める。
ステップS1570において、シミュレーションシステム500は、シミュレーションの記録が完了したか否かを判定する。ある局面において、シミュレーションシステム500は、指定されたサイクル分の記録が完了したことに基づいて、シミュレーションの記録が完了したと判定してもよい。他の局面において、シミュレーションシステム500は、指定されたフラグが立ち上がった(または立ち下がった)ことに基づいて、シミュレーションの記録が完了したと判定してもよい。また、他の局面において、シミュレーションシステム500は、ユーザからシミュレーションの停止操作の入力を受け付けたことに基づいて、シミュレーションの記録が完了したと判定してもよい。シミュレーションシステム500は、シミュレーションの記録が完了したと判定した場合(ステップS1570にてYES)、処理を終了する。そうでない場合(ステップS1570にてNO)、シミュレーションシステム500は、制御をステップS1530に移す。ある局面において、シミュレーションシステム500は、ステップS1570の処理をステップS1530にて実行してもよい。
なお、シミュレーションシステム500は、プログラムの実環境での実行結果を記録する場合も、カメラの映像およびセンサの信号等を用いることを除いて、上記と同様の手順にて記録処理を行い得る。
図16は、シミュレーションシステム500によるデバッグ処理の一例を示すフローチャートである。
ステップS1610において、シミュレーションシステム500は、例えばユーザからの操作を受け付けたことに基づいて、シミュレーション内の問題箇所を再生する。
ステップS1620において、シミュレーションシステム500は、トレースする変数の選択を受け付ける。ある局面において、PLCシミュレーション部520またはデータ管理部550がトレースする変数の選択を受け付ける機能を備えていてもよい。
ステップS1630において、シミュレーションシステム500は、グラフ化開始時刻および終了時刻の指定を受け付ける。ある局面において、グラフ化開始時刻および終了時刻は、開始時のプログラムのステップ数およびサイクル数と、終了時のプログラムのステップ数およびサイクル数により指定されてもよい。なお、ステップS1620,S1630の処理は、ステップS1610の前に実行されてもよい。
ステップS1640において、シミュレーションシステム500は、変数トレース結果のグラフ(変数の値の変化を示すグラフ1310に相当)をディスプレイ109に表示する。シミュレーションシステム500は、ステップS1630にてグラフ化開始時刻と終了時刻の指定を受け付けたことに基づいて、指定された期間におけるグラフをディスプレイ109に表示し得る。
ステップS1650において、シミュレーションシステム500は、問題発生時のプログラムをディスプレイ109に表示する。例えば、シミュレーションシステム500は、ステップS1610にて問題箇所のシミュレーションの場面がディスプレイ109に表示されたことに基づいて、当該問題箇所のシミュレーションの場面の実行時間(ステップおよびサイクル)に対応するプログラム(変数が入力された状態のプログラム)をディスプレイ109に表示し得る。
ステップS1660において、シミュレーションシステム500は、プログラムの修正を受け付けたか否かを判定する。シミュレーションシステム500は、プログラムの修正を受け付けたと判定した場合(ステップS1660にてYES)、制御をステップS1670に移す。そうでない場合(ステップS1660にてNO)、シミュレーションシステム500は、制御をステップS1680に移す。
ステップS1670において、シミュレーションシステム500は、修正をプログラムに反映する。
ステップS1680において、シミュレーションシステム500は、トレースする変数の再選択を受け付ける。例えば、ユーザは、ステップS1650にて表示されたプログラムの修正箇所を見つけられなかった場合に、トレースする変数の再選択を行うことで、別の視点からプログラムの修正箇所を探すことができる。
図17は、シミュレーションシステム500によるプログラムのシミュレーション結果と、プログラムの実環境での実行結果との比較処理の一例を示すフローチャートである。
ステップS1710において、シミュレーションシステム500は、比較開始条件の指定を受け付ける。比較開始条件は、シミュレーションにおける実行時間と、実環境における実行時間とを対応付けるための条件を含む。ある局面において、シミュレーションシステム500は、一例として、実環境の特定のセンサがワークまたは機器の動作等を検出する等して信号を出力したタイミングを、シミュレーションにおける実行時間(0サイクル、1ステップ)に対応付けてもよい。
ステップS1720において、シミュレーションシステム500は、同じ実行時間(プログラムのサイクルおよびステップ数が等しいタイミング)における、シミュレーションログ250と、実環境のログ1050とを比較する。ある局面において、シミュレーションシステム500は、各ログに含まれる変数の値を比較してもよいし、オブジェクトの位置情報を比較してもよいし、その両方を比較してもよい。
ステップS1730において、シミュレーションシステム500は、シミュレーションログ250と、実環境のログ1050とに差分があるか否かを判定する。シミュレーションシステム500は、シミュレーションログ250と、実環境のログ1050とに差分があると判定した場合(ステップS1730にてYES)、制御をステップS1740に移す。そうでない場合(ステップS1730にてNO)、シミュレーションシステム500は、制御をステップS1720に移す。
ステップS1740において、シミュレーションシステム500は、差分のある変数の名称および値と、シミュレーション情報とを表示する。ここでのシミュレーション情報は、差分が確認されたステップにおけるシミュレーションの場面を含む。ある局面において、シミュレーション情報は、3D空間内のオブジェクトの位置情報252も含んでいてもよい。
ステップS1750において、シミュレーションシステム500は、比較処理の終了要求を受け付けたか否かを判定する。例えば、シミュレーションシステム500は、操作ユニット106またはネットワークインターフェイス110を介して、比較処理の終了要求を受け付け得る。シミュレーションシステム500は、比較処理の終了要求を受け付けたと判定した場合(ステップS1750にてYES)、処理を終了する。そうでない場合(ステップS1750にてNO)、シミュレーションシステム500は、制御をステップS1720に移す。
以上説明した通り、本実施の形態に従うシミュレーションシステム500は、シミュレーション実行時の3D空間内のオブジェクトの位置情報252と、プログラムの変数の値254とを実行時間毎に関連付けて記録する機能を備える。また、シミュレーションシステム500は、当該記録した3D空間内のオブジェクトの位置情報252およびプログラムの変数の値254を用いて、シミュレーションのステップ毎の再生および逆再生機能を備える。さらに、シミュレーションシステム500は、各ステップにおける3D空間内のオブジェクトの位置情報252およびプログラムの変数の値254を表示する機能を備える。これらの機能により、ユーザは、シミュレーションをステップ毎に再生して機器の動作に問題点があるシミュレーションの場面を容易に特定できる。さらに、ユーザは、当該問題点があるシミュレーションの場面におけるプログラムの変数の値254を参照することにより、容易にプログラムをデバッグし得る。
また、シミュレーションシステム500は、シミュレーションログ250と、実環境のログ1050とを比較する機能を備える。当該機能により、ユーザは、実環境におけるプログラムの問題点または機器の配置の問題点等を容易に把握し得る。
<F.付記>
以上のように、本実施の形態は以下のような開示を含む。
[構成1]
シミュレーションシステム(500)であって、
1以上の機器を制御するためのプログラムを格納するためのメモリ(111)と、
上記プログラムによる上記1以上の機器の動作のシミュレーションを実行するためのプロセッサ(102)と、
シミュレーション画面を表示するためのディスプレイ(109)とを備え、
上記シミュレーション画面は、
3D空間内の上記1以上の機器の各々の位置を表示するための3D空間表示(Three-Dimensional)(1201)と、
上記プログラムによって参照される1以上の変数の各々の値の表示(1204)とを含み、
上記プログラムのステップ毎に、上記3D空間表示(1201)と、1以上の変数の各々の値の表示(1204)とを更新する、シミュレーションシステム(500)。
[構成2]
上記シミュレーション画面は、上記プログラムのステップ毎に、上記シミュレーションの場面を再生する操作または逆再生する操作を受け付けるための入力用UI(User Interface)(1101)をさらに含む、構成1に記載のシミュレーションシステム(500)。
[構成3]
上記入力用UI(1101)は、上記プログラムのステップ毎に、上記シミュレーションの場面を停止する操作、または、上記プログラムのステップ毎に上記シミュレーションの場面をコマ送りする操作を受け付け可能に構成される、構成2に記載のシミュレーションシステム(500)。
[構成4]
上記入力用UI(1101)は、上記プログラムの1サイクルまたは1ステップ単位で、上記シミュレーションの場面を再生する操作または逆再生する操作を受け付け可能に構成される、構成2に記載のシミュレーションシステム(500)。
[構成5]
上記シミュレーション画面は、上記プログラムにブレークポイントを設定する操作を受け付け可能に構成される、構成2に記載のシミュレーションシステム(500)。
[構成6]
上記入力用UI(1101)は、上記シミュレーションの場面をスロー再生する操作またはスロー逆再生する操作を受け付け可能に構成される、構成2に記載のシミュレーションシステム(500)。
[構成7]
上記シミュレーション画面は、
上記1以上の機器の各々の位置の数値情報(1203)をさらに含み、
上記プログラムのステップ毎に、上記1以上の機器の各々の位置の数値情報(1203)を更新する、構成1~6のいずれかに記載のシミュレーションシステム(500)。
[構成8]
上記シミュレーション画面は、上記プログラムをさらに表示可能に構成されており、
上記プログラムの表示(1320)は、
上記プログラムのコードと、
上記1以上の変数の各々の値とを含み、
上記シミュレーション画面は、上記プログラムのステップ毎に、上記プログラムの表示(1320)に含まれる上記1以上の変数の各々の値を更新する、構成1~7のいずれかに記載のシミュレーションシステム(500)。
[構成9]
上記シミュレーション画面は、上記プログラムのステップが進むまたは戻る場合に、上記プログラムの表示(1320)に含まれる上記1以上の変数の各々の値に変化があったとき、変化した値または上記変化した値が代入されている変数名を強調表示する、構成8に記載のシミュレーションシステム(500)。
[構成10]
上記プログラムの表示(1320)は、上記1以上の変数の各々を選択可能に構成されており、
上記シミュレーション画面は、上記プログラムの表示(1320)から選択された変数を含むグラフ(1310)を表示する、構成8または9に記載のシミュレーションシステム(500)。
[構成11]
上記プログラムの表示(1320)は、上記グラフ(1310)に含まれる変数を強調表示する、構成10に記載のシミュレーションシステム(500)。
[構成12]
上記シミュレーション画面は、上記プログラムのフローチャート(1420)をさらに表示可能に構成されており、
上記フローチャート(1420)の表示は、上記フローチャート(1420)に含まれる1以上のブロックの中で現在実行されているブロックを強調表示する、構成1~11のいずれかに記載のシミュレーションシステム(500)。
[構成13]
上記フローチャート(1420)の表示は、上記フローチャート(1420)に含まれる1以上のブロックのいずれかを選択可能に構成されており、
上記プログラムの表示(1320)は、選択されたブロックに対応するPOU(Program Organization Unit)を表示、または、上記POUを強調表示する、構成12に記載のシミュレーションシステム(500)。
[構成14]
シミュレーションシステム(500)により実行される方法であって、
1以上の機器を制御するためのプログラムによる上記1以上の機器の動作のシミュレーションを実行するステップと、
シミュレーション画面を表示するステップとを含み、
上記シミュレーション画面は、
3D空間内の上記1以上の機器の各々の位置を表示するための3D空間表示(1201)と、
上記プログラムによって参照される1以上の変数の各々の値の表示(1204)とを含み、
上記プログラムのステップ毎に、上記3D空間表示(1201)と、1以上の変数の各々の値の表示(1204)とを更新する、方法。
[構成15]
構成14に記載の方法を1または複数のプロセッサ(102)に実行させるためのプログラム。
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内で全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された開示内容は、可能な限り、単独でも、組合わせても、実施することが意図される。
2 制御システム、5 リモートターミナル、6,157 センサ、12 電源ユニット、13 演算ユニット、14,53 ユニット、17 特殊ユニット、22 フィールドネットワーク、41,42 サーボモータ、51 リモートターミナルバス、52 通信カプラ、61,237,239 検出値、80 ネットワーク、81 システムバス、100 装置、102 プロセッサ、104 主メモリ、106 操作ユニット、108 出力ユニット、109 ディスプレイ、110 ネットワークインターフェイス、111 ストレージ、112 光学ドライブ、114 記録媒体、116 ローカル通信インターフェイス、130 統合開発環境、150 機器、151 コンベア、152,155 モータ、153,156 モータ制御装置、154 ロータリーナイフ、158 シート、159,248 カット位置、210 ロボットハンド、211,222 制御指令、236,238 エンコーダ、240 主軸、245 従軸、250 シミュレーションログ、251,1100,1100A,1100B,1100C,1200,1300,1400 画面、252,602,702,802,1203 オブジェクトの位置情報、253,611,1202,1320,1410 プログラム、254,612,712,812,1204 プログラムの変数の値、260,265 表示、310 ロボットコントローラ、500 シミュレーションシステム、510 3D形状表示部、511 3D形状読取部、512 形状描画部、513 メモリ表示部、520 シミュレーション部、521 ステップ実行部、530 プログラム編集部、531,532 サーボモータドライバ、540 変数メモリグラフ表示部、550 データ管理部、551 データ入力部、552 データ読取部、553 データ差分抽出部、554 データ差分記録部、560 シミュレーションデータ比較部、561 同期部、562 データ比較部、563 表示部、570 リポジトリ、571 シミュレーションメモリ、572 変数メモリ、580 ファイル、601 空間、901 IEC変数の値、902 ロボット変数の値、903 IECプログラムのステップおよびサイクルのカウント、1011 実環境のIEC変数の値、1012 実環境のロボット変数の値、1013 実環境のIECプログラムのステップおよびサイクルのカウント、1014 実環境のオブジェクトの位置情報、1050 実環境のログ、1101 操作用UI、1110 ブレード、1120,1130 切断位置、1201 シミュレーションの場面、1310,1430 グラフ、1420 プログラムのフローチャート。

Claims (15)

  1. シミュレーションシステムであって、
    1以上の機器を制御するためのプログラムを格納するためのメモリと、
    前記プログラムによる前記1以上の機器の動作のシミュレーションを実行するためのプロセッサと、
    シミュレーション画面を表示するためのディスプレイとを備え、
    前記シミュレーション画面は、
    3D空間内の前記1以上の機器の各々の位置を表示するための3D空間表示(Three-Dimensional)と、
    前記プログラムによって参照される1以上の変数の各々の値の表示とを含み、
    前記プログラムのステップ毎に、前記3D空間表示と、1以上の変数の各々の値の表示とを更新する、シミュレーションシステム。
  2. 前記シミュレーション画面は、前記プログラムのステップ毎に、前記シミュレーションの場面を再生する操作または逆再生する操作を受け付けるための入力用UI(User Interface)をさらに含む、請求項1に記載のシミュレーションシステム。
  3. 前記入力用UIは、前記プログラムのステップ毎に、前記シミュレーションの場面を停止する操作、または、前記プログラムのステップ毎に前記シミュレーションの場面をコマ送りする操作を受け付け可能に構成される、請求項2に記載のシミュレーションシステム。
  4. 前記入力用UIは、前記プログラムの1サイクルまたは1ステップ単位で、前記シミュレーションの場面を再生する操作または逆再生する操作を受け付け可能に構成される、請求項2に記載のシミュレーションシステム。
  5. 前記シミュレーション画面は、前記プログラムにブレークポイントを設定する操作を受け付け可能に構成される、請求項2に記載のシミュレーションシステム。
  6. 前記入力用UIは、前記シミュレーションの場面をスロー再生する操作またはスロー逆再生する操作を受け付け可能に構成される、請求項2に記載のシミュレーションシステム。
  7. 前記シミュレーション画面は、
    前記1以上の機器の各々の位置の数値情報をさらに含み、
    前記プログラムのステップ毎に、前記1以上の機器の各々の位置の数値情報を更新する、請求項1~6のいずれかに記載のシミュレーションシステム。
  8. 前記シミュレーション画面は、前記プログラムをさらに表示可能に構成されており、
    前記プログラムの表示は、
    前記プログラムのコードと、
    前記1以上の変数の各々の値とを含み、
    前記シミュレーション画面は、前記プログラムのステップ毎に、前記プログラムの表示に含まれる前記1以上の変数の各々の値を更新する、請求項1~7のいずれかに記載のシミュレーションシステム。
  9. 前記シミュレーション画面は、前記プログラムのステップが進むまたは戻る場合に、前記プログラムの表示に含まれる前記1以上の変数の各々の値に変化があったとき、変化した値または前記変化した値が代入されている変数名を強調表示する、請求項8に記載のシミュレーションシステム。
  10. 前記プログラムの表示は、前記1以上の変数の各々を選択可能に構成されており、
    前記シミュレーション画面は、前記プログラムの表示から選択された変数を含むグラフを表示する、請求項8または9に記載のシミュレーションシステム。
  11. 前記プログラムの表示は、前記グラフに含まれる変数を強調表示する、請求項10に記載のシミュレーションシステム。
  12. 前記シミュレーション画面は、前記プログラムのフローチャートをさらに表示可能に構成されており、
    前記フローチャートの表示は、前記フローチャートに含まれる1以上のブロックの中で現在実行されているブロックを強調表示する、請求項1~11のいずれかに記載のシミュレーションシステム。
  13. 前記フローチャートの表示は、前記フローチャートに含まれる1以上のブロックのいずれかを選択可能に構成されており、
    前記プログラムの表示は、選択されたブロックに対応するPOU(Program Organization Unit)を表示、または、前記POUを強調表示する、請求項12に記載のシミュレーションシステム。
  14. シミュレーションシステムにより実行される方法であって、
    1以上の機器を制御するためのプログラムによる前記1以上の機器の動作のシミュレーションを実行するステップと、
    シミュレーション画面を表示するステップとを含み、
    前記シミュレーション画面は、
    3D空間内の前記1以上の機器の各々の位置を表示するための3D空間表示と、
    前記プログラムによって参照される1以上の変数の各々の値の表示とを含み、
    前記プログラムのステップ毎に、前記3D空間表示と、1以上の変数の各々の値の表示とを更新する、方法。
  15. 請求項14に記載の方法を1または複数のプロセッサに実行させるためのプログラム。
JP2021108836A 2021-06-30 2021-06-30 シミュレーションシステム、シミュレーションシステムの方法、およびシミュレーションのプログラム Pending JP2023006301A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2021108836A JP2023006301A (ja) 2021-06-30 2021-06-30 シミュレーションシステム、シミュレーションシステムの方法、およびシミュレーションのプログラム
US17/824,517 US20230004482A1 (en) 2021-06-30 2022-05-25 Simulation system, method for simulation system, and non-transitory computer-readable storage medium storing simulation program
CN202210580612.7A CN115542828A (zh) 2021-06-30 2022-05-26 仿真系统、仿真系统的方法及计算机可读的数据存储介质
EP22175936.8A EP4113293A1 (en) 2021-06-30 2022-05-27 Simulation system, method for simulation system, and simulation program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021108836A JP2023006301A (ja) 2021-06-30 2021-06-30 シミュレーションシステム、シミュレーションシステムの方法、およびシミュレーションのプログラム

Publications (1)

Publication Number Publication Date
JP2023006301A true JP2023006301A (ja) 2023-01-18

Family

ID=82258510

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021108836A Pending JP2023006301A (ja) 2021-06-30 2021-06-30 シミュレーションシステム、シミュレーションシステムの方法、およびシミュレーションのプログラム

Country Status (4)

Country Link
US (1) US20230004482A1 (ja)
EP (1) EP4113293A1 (ja)
JP (1) JP2023006301A (ja)
CN (1) CN115542828A (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719775B1 (en) * 2008-06-16 2014-05-06 Adobe Systems Incorporated Methods and apparatus for recording and playback of an executed process
US8990777B2 (en) * 2013-05-21 2015-03-24 Concurix Corporation Interactive graph for navigating and monitoring execution of application code
US10437694B2 (en) * 2014-02-21 2019-10-08 Rolf Segger Real time terminal for debugging embedded computing systems
JP7052250B2 (ja) * 2017-08-10 2022-04-12 オムロン株式会社 情報処理装置、情報処理方法、および情報処理プログラム
JP7388074B2 (ja) 2019-09-17 2023-11-29 オムロン株式会社 シミュレーション装置、シミュレーションプログラムおよびシミュレーション方法
CN116583797A (zh) * 2020-12-22 2023-08-11 三菱电机株式会社 问题解析辅助程序、问题解析辅助装置、问题解析辅助方法及三维数据显示程序

Also Published As

Publication number Publication date
CN115542828A (zh) 2022-12-30
US20230004482A1 (en) 2023-01-05
EP4113293A1 (en) 2023-01-04

Similar Documents

Publication Publication Date Title
US5485620A (en) Integrated control system for industrial automation applications
US8959399B2 (en) Capturing data during operation of an industrial controller for the debugging of control programs
JP2020013526A (ja) プログラマブルロジックコントローラおよびメインユニット
CN111164524B (zh) 一种数控机床的故障诊断信息库的生成方法和装置
JP2020013527A (ja) プログラマブルロジックコントローラおよびプログラム作成支援装置
JP7320953B2 (ja) プログラマブルロジックコントローラ及びそのログデータ保存方法
WO2019061481A1 (zh) 一种数控机床的故障诊断方法和装置
EP3441831B1 (en) Information processing device, information processing method, and information processing program
CN105630661A (zh) 用于自动化跨系统程序调试的方法和装置
KR102198204B1 (ko) 시뮬레이션 장치
US8428914B2 (en) Method and simulator for real-time calculation of state variables of a process model
JP2023006301A (ja) シミュレーションシステム、シミュレーションシステムの方法、およびシミュレーションのプログラム
JP2023006299A (ja) シミュレーションシステム、シミュレーションシステムの方法、およびシミュレーションのプログラム
JP7414461B2 (ja) プログラム作成支援装置、プログラム作成支援システム、及びプログラム作成支援方法
US9304508B2 (en) System and method for performing undo and redo operations during machining simulation
JP7173826B2 (ja) プログラマブルロジックコントローラシステム、プログラム作成支援装置およびコンピュータプログラム
JP7212496B2 (ja) プログラマブルロジックコントローラシステム、プログラム作成支援装置およびコンピュータプログラム
WO2023074249A1 (ja) シミュレーションのためのプログラムおよびシステム
CN104239201A (zh) 一种软单步系统中内存读写监控方法
US11294788B2 (en) Predicting performance of a computer system
JP2022189270A (ja) シミュレーションシステム、シミュレーション方法およびシミュレーションプログラム
CN116431627A (zh) 一种电子设备数据库表生成方法、系统、设备及介质
JP5937530B2 (ja) ソフトエラー解析装置、エラー情報作成装置
JP7412076B2 (ja) プログラマブルロジックコントローラ用のエンジニアリングツール
JP2010033567A (ja) シミュレーション支援方法、シミュレーション支援プログラムを記憶した記憶媒体およびシミュレーション支援装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240314