JP2022175568A - バージョン管理方法、バージョン管理のプログラム、および、バージョン管理のシステム - Google Patents
バージョン管理方法、バージョン管理のプログラム、および、バージョン管理のシステム Download PDFInfo
- Publication number
- JP2022175568A JP2022175568A JP2021082089A JP2021082089A JP2022175568A JP 2022175568 A JP2022175568 A JP 2022175568A JP 2021082089 A JP2021082089 A JP 2021082089A JP 2021082089 A JP2021082089 A JP 2021082089A JP 2022175568 A JP2022175568 A JP 2022175568A
- Authority
- JP
- Japan
- Prior art keywords
- project
- simulation
- version
- executable
- file
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 143
- 238000004088 simulation Methods 0.000 claims abstract description 161
- 238000000034 method Methods 0.000 claims abstract description 50
- 238000001514 detection method Methods 0.000 claims abstract description 9
- 230000007547 defect Effects 0.000 claims description 25
- 230000006870 function Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 6
- 238000011960 computer-aided design Methods 0.000 description 6
- 230000002950 deficient Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 238000005401 electroluminescence Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】不具合のあるプログラムの検証に使用された実環境に対応するシミュレーション環境を特定するための技術を提供する。【解決手段】制御装置のプログラムのバージョン管理方法は、第1のバージョンのプロジェクト210から、第1の実行ファイル200と、第1のシミュレーション実行ファイルとを生成して実行データリポジトリ304に登録するステップと、第1の実行ファイル200を制御装置にデプロイするステップと、制御装置と第1のバージョンのプロジェクト210とを紐付けるステップと、制御装置にデプロイされた第1の実行ファイル200の不具合が検出されたことに基づいて、制御装置に紐付けられた第1のバージョンのプロジェクト210を特定するステップと、第1の実行ファイル200のシミュレーションのために、第1の実行ファイル200と、第1のシミュレーション実行ファイルとを取得するステップを含む。【選択図】図6
Description
本開示は、プロジェクトのバージョン管理に関し、より特定的には、制御装置のプログラムおよびシミュレーション用のデータを含むプロジェクトのバージョン管理に関する。
PLC(Programmable Logic Controller)等の制御装置は、プログラムをインストールされることにより、当該インストールされたプログラムに基づいて産業用機械等を制御し得る。開発者は、制御装置のプログラムを開発する際、バージョン管理システムを用いてプログラムを管理することがある。
プログラムのバージョン管理に関し、例えば、国際公開第2019/229845号(特許文献1)は、「プログラムPv2を編集してプログラムPv3を作成し、コンパイルによって、プログラムPv2との差分に対応する実行モジュールM3を作成するプログラミング支援装置と、制御装置で実行中の実行モジュールと、最新バージョンのプログラムと、最新バージョンのプログラムがコンパイル済みであるか否かを示すコンパイル情報と、を管理する管理装置と、を備える。管理装置は、実行モジュールM1を実行中のPLCに実行モジュールM3が書き込まれる場合には、プログラムPv3と、実行モジュールM3に固有の情報と、プログラムPv3がコンパイル済みであることを示すコンパイルフラグとを管理し、実行モジュールM3がPLCに書き込まれない場合には、プログラムPv3と、実行モジュールM1に固有の情報と、プログラムPv3が未コンパイルであることを示すコンパイルフラグとを管理する」プログラム管理システムを開示している([要約]参照)。
制御装置のプログラムは、シミュレーションにより動作を検証されることがある。そのため、実環境で不具合が発生した場合、不具合のあるプログラムの検証に使用された実環境に対応するシミュレーション環境を特定する必要がある。しかしながら、特許文献1に開示された技術によると、不具合のあるプログラムの検証に使用された実環境に対応するシミュレーション環境を特定することができない。したがって、不具合のあるプログラムの検証に使用された実環境に対応するシミュレーション環境を特定するための技術が必要とされている。
本開示は、上記のような背景に鑑みてなされたものであって、ある局面における目的は、不具合のあるプログラムの検証に使用された実環境に対応するシミュレーション環境を特定するための技術を提供することにある。
ある実施の形態に従うと、制御装置のプログラムのバージョン管理方法が提供される。バージョン管理方法は、第1のバージョンのプロジェクトから、第1の実行ファイルと、第1の実行ファイルのシミュレーションに必要な第1のシミュレーション実行ファイルとを生成して実行データリポジトリに登録するステップと、第1の実行ファイルを制御装置にデプロイするステップと、制御装置と、第1のバージョンのプロジェクトとを紐付けるステップと、制御装置にデプロイされた第1の実行ファイルの不具合が検出されたことに基づいて、制御装置に紐付けられた第1のバージョンのプロジェクトを特定するステップと、第1の実行ファイルのシミュレーションのために、第1の実行ファイルと、第1のシミュレーション実行ファイルとを取得するステップを含む。
この開示によれば、制御装置にデプロイされた第1の実行ファイルの不具合が検出された場合、ユーザーは、第1の実行ファイルのソースファイルを含むプロジェクトと、第1の実行ファイルのシミュレーションに必要な第1のシミュレーション実行ファイルとを特定することができる。その結果、第1の実行ファイルのデバッグが容易になる。
上記の開示において、制御装置と、第1のバージョンのプロジェクトとを紐付けるステップは、制御装置の装置ID(Identifier)と、第1のバージョンのプロジェクトのバージョンIDおよびプロジェクトIDとを紐付けるステップを含む。
この開示によれば、第1の実行ファイルをデプロイされた制御装置の装置IDに基づいて、特定のバージョンの特定のプロジェクトを検索し得る。
上記の開示において、バージョン管理方法は、制御装置にデプロイされた第1の実行ファイルの不具合が検出されたことに基づいて、不具合に関する情報と、第1のバージョンのプロジェクトとをユーザーの端末に通知するステップをさらに含む。
この開示によれば、ユーザーは、第1の実行ファイルの不具合を認識することができ、さらに、通知されたプロジェクトを用いてデバッグ作業を開始し得る。
上記の開示において、第1の実行ファイルは、装置IDと紐付けられている。第1のシミュレーション実行ファイルは、プロジェクトIDに紐付けられている。第1の実行ファイルのシミュレーションのために、第1の実行ファイルと、第1のシミュレーション実行ファイルとを取得するステップは、装置IDに基づいて、実行データリポジトリから、第1の実行ファイルを取得するステップと、プロジェクトIDに基づいて、実行データリポジトリから、第1のシミュレーション実行ファイルを取得するステップとを含む。
この開示によれば、実行データリポジトリから、不具合のある第1の実行ファイルのシミュレーションに必要なデータを取得することができる。
上記の開示において、第1の実行ファイルのシミュレーションのために、第1の実行ファイルと、第1のシミュレーション実行ファイルとを取得するステップは、第1のバージョンのプロジェクトから、第1の実行ファイルと、第1のシミュレーション実行ファイルとを再度生成するステップを含む。
この開示によれば、検索されたプロジェクトから、不具合のある第1の実行ファイルのシミュレーションに必要なデータを再度生成(コンパイル)することができる。
上記の開示において、バージョン管理方法は、制御装置で不具合が発生したことに基づいて、第1のバージョンのプロジェクトよりも古い第2のバージョンのプロジェクトから生成された第2の実行ファイルを制御装置にデプロイするステップをさらに含む。
この開示によれば、制御装置を稼働させ続けることができる。
上記の開示において、バージョン管理方法は、制御装置にデプロイされた第1の実行ファイルの不具合が検出されたことに基づいて、第1のシミュレーション実行ファイルを用いて、第1の実行ファイルのシミュレーションを実行するステップをさらに含む。
上記の開示において、バージョン管理方法は、制御装置にデプロイされた第1の実行ファイルの不具合が検出されたことに基づいて、第1のシミュレーション実行ファイルを用いて、第1の実行ファイルのシミュレーションを実行するステップをさらに含む。
この開示によれば、シミュレーションを実行することで、第1の実行ファイルの不具合を検証することができる。
上記の開示において、バージョン管理方法は、第1の実行ファイルのシミュレーションが完了したことに基づいて、第1のバージョンのプロジェクトのコミットを受け付けるステップをさらに含む。
この開示によれば、シミュレーションが完了したプロジェクトのコミットのみを受け付けることで、制御装置にデプロイされる実行ファイルのバグを減らすことができる。
他の実施の形態に従うと、上記の方法をコンピューターに実行させるためのプログラムが提供される。
この開示によれば、コンピューターに、上記のバージョン管理の方法を実行させ得る。
他の実施の形態に従うと、上記のプログラムを格納した記憶部と、プログラムを実行するためのプロセッサーとを含むシステムが提供される。
他の実施の形態に従うと、上記のプログラムを格納した記憶部と、プログラムを実行するためのプロセッサーとを含むシステムが提供される。
この開示によれば、システムに、上記のバージョン管理の方法を実行させ得る。
ある実施の形態に従うと、不具合のあるプログラムの検証に使用された実環境に対応するシミュレーション環境を特定することが可能である。
この開示内容の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解される本開示に関する次の詳細な説明から明らかとなるであろう。
以下、図面を参照しつつ、本開示に係る技術思想の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<A.適用例>
図1は、本実施の形態に従う管理システム100の一例を示す図である。図1を参照して、本実施の形態に従う技術が適用される場面について説明する。
図1は、本実施の形態に従う管理システム100の一例を示す図である。図1を参照して、本実施の形態に従う技術が適用される場面について説明する。
管理システム100は、バージョン管理・コンテナ管理システム110と、仮想環境再現サービス120とを含む。さらに、管理システム100は、IDE(Integrated Development Environment:統合開発環境)130を含んでいてもよい。
管理システム100は、制御装置のプログラムのバージョンを管理し、制御装置にプログラムをデプロイ(インストール)するものであり、主に、次に説明する3つの機能を備える。なお、制御装置は、例えば、複数の装置からなる制御装置であってもよい。
第1の機能は、プログラムのバージョン管理機能である。管理システム100は、IDE130からユーザーが開発した制御装置のプログラムを受信する。そして、管理システム100は、ユーザーが開発した制御装置のプログラムをバージョンごとに管理する。実際には、管理システム100は、プログラム単体でだけでなく、プログラムおよびその他のデータを含むプロジェクトを受信して、当該プロジェクトをバージョンごとに管理する。
「プロジェクト」は、一例として、制御装置のプログラムのソースファイル(以下、「装置ソースファイル」と呼ぶ)と、プログラムの設定データと、プログラムのシミュレーション用のデータであるシミュレーションソースファイルとを含む。ある局面において、プロジェクトは、他のデータを含んでいてもよい。
「装置ソースファイル」がコンパイルされることで、実行ファイルが生成される。制御装置は、当該実行ファイルおよび設定データをインストールされることで、実行ファイルに基づいて動作し得る。なお、コンパイルは、管理システム100が行ってもよいし、IDE130がインストールされたユーザーの端末が行ってもよい。この場合、IDE130は、コンパイルした実行ファイルを管理システム100にアップロードする。
一例として、ユーザーが新しくプロジェクト(Ver.1)を作成し、当該プロジェクト(Ver.1)を管理システム100に登録したとする。この場合、管理システム100は、2次記憶装置3(図4参照)に、プロジェクト(Ver.1)を保存する。
次に、ユーザーが、プロジェクト(Ver.1)を編集してプロジェクト(Ver.2)を作成し、当該プロジェクト(Ver.2)を管理システム100に登録したとする。この場合、管理システム100は、2次記憶装置3(図4参照)に、プロジェクト(Ver.1)およびプロジェクト(Ver.2)の差分のみを保存する。このように、管理システム100は、プロジェクトが編集されるごとに(バージョンが変わるごとに)、プロジェクトの各バージョン間の差分のみを2次記憶装置3に記憶していく。ユーザーが管理システム100にプロジェクトの各バージョンを登録することを「コミット」と呼ぶこともある。
第1の機能により、ユーザーは、例えば、制御装置にインストールされた実行ファイル(プログラム)に不具合がった場合に、制御装置に古いバージョンの実行ファイルをインストールし直し、また、不具合のあるバージョンの実行ファイルをデバッグすることができる。
第2の機能は、シミュレーション機能である。制御装置は工場等でワークの搬送またはワークの組み立て等を行う。そのため、制御装置の実行ファイルが問題なく動作するか否かを確かめるためには、実環境160を模したシミュレーション環境(仮想環境150)が必要になる。
上述したようにプロジェクトファイルは、シミュレーションソースファイルを含んでいる。「シミュレーションソースファイル」は、仮想環境150でのテストプログラム231(図2参照)、仮想センサープログラム232(図2参照)、ワークの動作を規定するワークプログラム(図2参照)、および、実環境160を再現するための装置およびワークの3DCAD(3-Dimensional Computer-Aided Design)データ234(図2参照)等のシミュレーション環境を構築するためのデータを含む。
シミュレーションソースファイルがコンパイルされることにより、シミュレーション実行ファイルが生成される。なお、コンパイルは、管理システム100によって行なわれてもよいし、IDE130がインストールされたユーザーの端末によって行なわれてもよい。この場合、IDE130は、コンパイルしたシミュレーション実行ファイルを管理システム100にアップロードする。シミュレーションソースファイルおよびシミュレーション実行ファイルは、いずれも、シミュレーションの実行に必要となるシミュレーション用データであると言える。
管理システム100は、実行ファイルと、シミュレーション実行ファイルとを用いて、シミュレーションを行う。そして、管理システム100は、シミュレーションが問題なく完了したことに基づいて、プロジェクトのコミットを受け付ける。
第2の機能により、管理システム100にコミットされたプロジェクトに含まれるプログラムは、少なくとも仮想環境150上でのテストにパスしたプログラムであることが保証される。
第3の機能は、プログラムの不具合発生時に、当該不具合の原因特定をサポートする機能である。通常、管理システム100は、最新の実行ファイルを実環境160の制御装置にインストールする。しかし、実行ファイルが実環境160の制御装置にインストールされたことにより、実行ファイルの不具合が発見されることもある。この場合、管理システム100は、制御装置に古いバージョンの実行ファイルをインストールし直す。この処理を「ロールバック」と呼ぶこともある。ある局面において、管理システム100は、制御装置から通知を受けたことに基づいて、または、ユーザーからの要求等を受け付けたことに基づいて、ロールバックを実行してもよい。
一例として、制御装置にインストール(デプロイ)された実行ファイル(A)に不具合が発生したとする。この場合、ロールバックにより、制御装置はとりあえず稼働し続けることができるが、ユーザーは実行ファイル(A)の不具合を調査する必要がある。実行ファイル(A)の不具合の調査のために、管理システム100は、実行ファイル(A)のシミュレーションに用いたシミュレーション実行ファイル(A)を特定する必要がある。なお、管理システム100は、当該プログラムのシミュレーションに用いたシミュレーションソースファイルを特定してもよい。
そこで、管理システム100は、実行ファイル(A)を生成するための装置ソースファイル(A)、および、シミュレーション実行ファイル(A)を生成するためのシミュレーションソースファイル(A)を含むプロジェクト(A)のプロジェクトIDと、プロジェクト(A)のバージョンIDと、実行ファイル(A)をインストールされた制御装置の装置IDとを予め紐付けて2次記憶装置3に保存する。また、管理システム100は、実行ファイル(A)を、装置ID、または、装置IDおよびバージョンIDに予め紐付けて2次記憶装置3に保存する。さらに、管理システム100は、シミュレーション実行ファイル(A)をプロジェクトID、または、プロジェクトIDおよびバージョンIDに予め紐付けて2次記憶装置3に保存する。
管理システム100は、例えば、制御装置から不具合の通知と共に当該制御装置の装置IDを受信したとする。この場合、管理システム100は、当該制御装置の装置IDに紐付けられたプロジェクト(A)のプロジェクトIDおよびバージョンIDを特定し得る。さらに、管理システム100は、プロジェクトID、または、プロジェクトIDおよびバージョンIDに紐付けられたシミュレーション実行ファイル(A)を特定し得る。
当然ながら、管理システム100は、プロジェクト(A)を特定したことで、プロジェクト(A)に含まれる装置ソースファイルをコンパイルすることで生成される実行ファイル(A)と、シミュレーションソースファイルをコンパイルすることで生成されるシミュレーション実行ファイル(A)とを特定し得る。ある局面において、管理システム100は、プロジェクト(A)内の各種ファイルを再度コンパイルして、実行ファイル(A)およびシミュレーション実行ファイル(A)を生成してもよい。
管理システム100は、実行ファイル(A)と、シミュレーション実行ファイル(A)とに基づいて、実行ファイル(A)のシミュレーションを再度実行し得る。
さらに、管理システム100は、不具合に関する情報と、プロジェクト(A)に関する情報とをIDE130がインストールされたユーザーの端末に送信してもよい。ユーザーは、当該通知に基づいて、装置ソースファイル(A)を参照することで、デバッグ作業を行い得る。また、ユーザーは、デバッグ作業において、上記の再構築された仮想環境150を利用することができる。
第3の機能により、ユーザーは、不具合のある実行ファイル(A)のシミュレーション用の仮想環境150を容易に再構築することができ、当該仮想環境150を用いて実行ファイル(A)のデバッグを行うことができる。
バージョン管理・コンテナ管理システム110は、プロジェクトと、実行ファイルと、シミュレーション実行ファイルとを格納する。また、バージョン管理・コンテナ管理システム110は、プロジェクトのコミット機能、プロジェクトのロールバック機能、および実行ファイルのデプロイ機能を提供する。なお、コンテナは、後述する実行ファイルおよびシミュレーション実行ファイル等を含み得る。
仮想環境再現サービス120は、仮想環境150の構築機能を提供する。仮想環境再現サービス120は、実行ファイルと、シミュレーション実行ファイルとに基づいて、プログラムのシミュレーションを実行する。
IDE130は、プロジェクトの編集機能を提供する。より具体的には、IDE130は、装置ソースファイルの編集機能と、シミュレーションソースファイルに含まれるデータ(3DCADデータ等)の編集機能とを備える。また、IDE130は、プロジェクトと、実行ファイルと、シミュレーション実行ファイルとをバージョン管理・コンテナ管理システム110にコミットする機能を備える。さらに、IDE130は、コンテナ管理システム110にロールバック、デプロイ等の処理の実行を要求する機能を備える。
ある局面において、IDE130は、パーソナルコンピューター、スマートフォン、またはタブレット等のユーザーの端末にインストールされて使用され得る。他の局面において、IDE130は、ウェブアプリケーションとして提供されてもよい。
<B.データおよびシステムの構成>
次に、図2~図4を参照して、管理システム100が扱うデータおよびプログラムの構成例と、管理システム100の詳細な構成例とについて説明する。
次に、図2~図4を参照して、管理システム100が扱うデータおよびプログラムの構成例と、管理システム100の詳細な構成例とについて説明する。
図2は、管理システム100が扱うデータおよびプログラムの一例を示す図である。管理システム100が扱うデータは、主に実行ファイル200と、プロジェクト(プロジェクトファイルとも呼ぶ)210と、装置ランタイム240と、シミュレーションランタイム250と、3Dビジュアライザー260とを含む。
実行ファイル200は、実際に制御装置にインストールされるデータであり、設定データ201と、POU(Program Organization Unit)実行ファイル202とを含む。
POU実行ファイル202は、制御装置により実行されるプログラムである。設定データ201は、POU実行ファイル202により参照されるデータである。
プロジェクト210は、制御装置のプログラムおよびシミュレーションに必要なデータ等を含む。ユーザーは、IDE130を用いて、プロジェクト210を生成および編集する。プロジェクト210は、装置ソースファイル220と、シミュレーションソースファイル230とを含む。
装置ソースファイル220は、装置設定データ221と、HMI(Human Machine Interface)デザインデータ222と、センサー設定データ223と、POUプログラム224とを含む。
装置設定データ221は、制御装置の各種設定を含む。HMIデザインデータ222は、ディスプレイまたはタッチパネル等に表示されるユーザーインターフェイスのデザインを含む。センサー設定データ223は、工場等で使用されるセンサーに関するデータを含む。POUプログラム224は、制御装置により実行されるPOU実行ファイル202のソースファイルである。POUプログラム224は、装置設定データ221、HMIデザインデータ222およびセンサー設定データ223を参照し得る。
シミュレーションソースファイル230は、テストプログラム231と、仮想センサープログラム232と、ワークプログラム233と、3DCADデータ234とを含む。
テストプログラム231は、シミュレーション内容(仮想環境150上で制御装置が行う作業の内容)を定義したプログラムである。仮想センサープログラム232は、仮想環境150上でのセンサーの動作を定義したプログラムである。ワークプログラム233は、仮想環境150上でのワークの動作を定義したプログラムである。3DCADデータ234は、仮想環境150上における各種オブジェクト(装置、ワーク等)の形状を定義したデータである。
装置ランタイム240は、制御装置を動作させるときに必要となる各種機能を提供するプログラムである。POU実行ファイル202は、装置ランタイム240の機能を呼び出して使用することができる。
シミュレーションランタイム250は、シミュレーション機能を提供するためのプログラムである。シミュレーションランタイム250は、仮想環境再現サービス120の各種機能を提供する。
3Dビジュアライザー260は、仮想環境150上でのシミュレーションの内容をユーザーに提示する機能を提供する。一例として、IDE130(ユーザーの端末)は、3Dビジュアライザー260の機能を用いて、シミュレーションの内容をディスプレイ等に表示し得る。
なお、図2に示す各種データは一例であり、実際には、管理システム100は、図2に示す各種データ以外のデータを扱ってもよい。また、他の局面において、管理システム100は、図2に示す各種データの一部を扱わなくてもよい。
図3は、管理システム100の詳細なシステム構成の一例を示す図である。管理システム100は、プロジェクト・装置間連携管理システム301と、バージョン管理システム302と、CI/CD(Continuous Integration/Continuous Delivery)303と、実行データリポジトリ304と、仮想環境再現サービス120とを含む。
なお、図1に示したバージョン管理・コンテナ管理システム110は、プロジェクト・装置間連携管理システム301、バージョン管理システム302、CI/CD303、および実行データリポジトリ304の全てを含む。
バージョン管理システム302は、プロジェクト210のバージョンを管理する。ユーザーは、IDE130を用いて編集したプロジェクト210をバージョン管理システム302にコミットすることができる。また、ユーザーは、複数のプロジェクト210をバージョン管理システム302にコミットしてもよい。各プロジェクト210は、ユニークなプロジェクトID333を含む。
バージョン管理システム302は、コミットを受け付ける毎に、前回のプロジェクト210のバージョンと、今回のプロジェクト210のバージョンとの間の差分を保存する。なお、バージョン管理システム302は、複数の異なるプロジェクト210のコミットを受け付けた場合、各プロジェクト210のバージョンを個別に管理する。さらに、バージョン管理システム302は、コミットされたプロジェクトにバージョンID331を紐付ける。管理システム100は、プロジェクトID333と、バージョンID331とを参照することで、特定のプロジェクト210の特定のバージョンを検索することができる。
CI/CD303は、プロジェクト210に含まれるプログラムをテストし、当該プログラムを制御装置に自動でデプロイする機能等を備える。CI/CD303は、バージョン管理システム302から、実行ファイル200およびシミュレーション実行ファイル321を取得する。ある局面において、CI/CD303は、バージョン管理システム302から、プロジェクト210を取得して、プロジェクト210のコンパイル処理を実行してもよい。
次に、CI/CD303は、実行ファイル200およびシミュレーション実行ファイル321を実行データリポジトリ304に登録する。また、CI/CD303は、仮想環境再現サービス120に、実行ファイル200およびシミュレーション実行ファイル321を用いたシミュレーションを依頼する。当該依頼は、実行データリポジトリ304を介して実行されてもよい。
さらに、CI/CD303は、バージョンID331と、装置ID332と、プロジェクトID333とを紐付けてプロジェクト・装置間連携管理システム301に登録する。装置ID332は、実行ファイル200をデプロイされる制御装置を一意に識別する。管理システム100は、バージョンID331と、装置ID332と、プロジェクトID333とを参照することで、不具合が発生した制御装置にインストールされた実行ファイル200に関係するプロジェクト210を特定することができる。さらに、管理システム100は、プロジェクト210を特定したことで、プロジェクト210に含まれる装置ソースファイル220をコンパイルすることで生成される実行ファイル200と、シミュレーションソースファイル230をコンパイルすることで生成されるシミュレーション実行ファイル321とを特定し得る。
実行データリポジトリ304は、実行ファイル200およびシミュレーション実行ファイル321を格納する。実行データリポジトリ304は、各バージョンの実行ファイル200およびシミュレーション実行ファイル321を格納してもよい。各実行ファイル200には、各装置ID332が紐付けられている。また、各シミュレーション実行ファイル321には、各プロジェクトID333が紐付けられている。ある局面において、CI/CD303が、これらの紐付け処理を実行してもよい。ある局面において、実行ファイル200およびシミュレーション実行ファイル321には、バージョンID331も紐付けられていてもよい。
実行データリポジトリ304は、例えば、CI/CD303からの命令に基づいて、実行ファイル200を制御装置にデプロイし得る。また、実行データリポジトリ304は、例えば、CI/CD303からの命令に基づいて、実行ファイル200およびシミュレーション実行ファイル321を仮想環境再現サービス120にデプロイし得る。
プロジェクト・装置間連携管理システム301は、実環境160等から装置ID332を含む不具合の通知を受けたことに基づいて、バージョンID331と、装置ID332と、プロジェクトID333とを参照することで、不具合が発生した制御装置にインストールされた実行ファイル200に関係するプロジェクト210およびシミュレーション実行ファイル321を特定する。ある局面において、プロジェクト・装置間連携管理システム301は、CI/CD303を介して、不具合の通知を受けてもよい。
また、プロジェクト・装置間連携管理システム301は、特定したプロジェクト210に関する情報をCI/CD303に通知する。CI/CD303は、当該特定したプロジェクト210に関する情報に基づいて、仮想環境再現サービス120に、特定したプロジェクト210のシミュレーションを依頼してもよい。また、CI/CD303は、不具合に関する情報と、特定したプロジェクト210に関する情報とをIDE130(ユーザーの端末)に通知し得る。ある局面において、プロジェクト・装置間連携管理システム301が、不具合に関する情報と、特定したプロジェクト210に関する情報とをIDE130に通知してもよい。
図4は、管理システム100を実現する装置400のハードウェア構成の一例を示す図である。ある局面において、管理システム100は、1または複数のハードウェア上でソフトウェアとして実現され得る。他の局面において、管理システム100は、複数の装置400からなるサーバーまたはクラウド環境上でソフトウェアとして実現されてもよい。また、他の局面において、装置400は、IDE130がインストールされるユーザーの端末として使用されてもよい。また、他の局面において、制御装置は、装置400の一部または全ての構成を含んでいてもよい。
装置400は、CPU(Central Processing Unit)1と、1次記憶装置2と、2次記憶装置3と、外部機器インターフェイス4と、入力インターフェイス5と、出力インターフェイス6と、通信インターフェイス7とを含む。
CPU1は、装置400の各種機能を実現するためのプログラムを実行し得る。CPU1は、例えば、少なくとも1つの集積回路によって構成される。集積回路は、例えば、少なくとも1つのCPU、少なくとも1つのFPGA(Field Programmable Gate Array)、またはこれらの組み合わせ等によって構成されてもよい。
1次記憶装置2は、CPU1によって実行されるプログラムと、CPU1によって参照されるデータとを格納する。ある局面において、1次記憶装置2は、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)等によって実現されてもよい。
2次記憶装置3は、不揮発性メモリーであり、CPU1によって実行されるプログラムおよびCPU1によって参照されるデータを格納してもよい。その場合、CPU1は、2次記憶装置3から1次記憶装置2に読み出されたプログラムを実行し、2次記憶装置3から1次記憶装置2に読み出されたデータを参照する。ある局面において、2次記憶装置3は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)またはフラッシュメモリー等によって実現されてもよい。
外部機器インターフェイス4は、プリンター、スキャナーおよび外付けHDD等の任意の外部機器に接続され得る。ある局面において、外部機器インターフェイス4は、USB(Universal Serial Bus)端子等によって実現されてもよい。
入力インターフェイス5は、キーボード、マウス、タッチパッドまたはゲームパッド等の任意の入力装置に接続され得る。ある局面において、入力インターフェイス5は、USB端子、PS/2端子およびBluetooth(登録商標)モジュール等によって実現されてもよい。
出力インターフェイス6は、ブラウン管ディスプレイ、液晶ディスプレイまたは有機EL(Electro-Luminescence)ディスプレイ等の任意の出力装置に接続され得る。ある局面において、出力インターフェイス6は、USB端子、D-sub端子、DVI(Digital Visual Interface)端子およびHDMI(登録商標)(High-Definition Multimedia Interface)端子等によって実現されてもよい。
通信インターフェイス7は、有線または無線のネットワーク機器と接続される。ある局面において、通信インターフェイス7は、有線LAN(Local Area Network)ポートおよびWi-Fi(登録商標)(Wireless Fidelity)モジュール等によって実現されてもよい。他の局面において、通信インターフェイス7は、TCP/IP(Transmission Control Protocol/Internet Protocol)、UDP(User Datagram Protocol)等の通信プロトコルを用いてデータを送受信してもよい。
<C.コミットおよびロールバックの手順>
次に、図5および図6を参照して、本実施の形態に従う管理システム100におけるコミットの手順と、ロールバックの手順とについて説明する。
次に、図5および図6を参照して、本実施の形態に従う管理システム100におけるコミットの手順と、ロールバックの手順とについて説明する。
図5は、管理システム100におけるコミットの手順の一例について説明する図である。なお、図5には、図3に示す構成からコミットの手順の説明に必要な構成のみを抜粋して記載している。管理システム100におけるコミットは、通常のバージョン管理システムと異なり、シミュレーションを用いたプロジェクトの検証処理を含む。
まず、IDE130は、ユーザーからの操作に基づいて、プロジェクト210に含まれる装置ソースファイル220およびシミュレーションソースファイル230をコンパイルすることにより、実行ファイル200およびシミュレーション実行ファイル321を生成する。ある局面において、IDE130は、装置ソースファイル220およびシミュレーションソースファイル230に含まれる一部のファイル(POUプログラム224、テストプログラム231、仮想センサープログラム232およびワークプログラム233等)に対してのみコンパイルを実行してもよい。
次に、IDE130は、プロジェクト210およびシミュレーション実行ファイル321を用いて、シミュレーションを実行する。シミュレーションは、仮想環境150において、プロジェクト210が正しく動作するか否かを検証し得る。
なお、シミュレーションは、仮想環境再現サービス120によって実行される。ある局面において、IDE130は、仮想環境再現サービス120を機能の一部として含んでいてもよい。他の局面において、IDE130は、サーバーまたはクラウド環境上の仮想環境再現サービス120にシミュレーションの実行を依頼してもよい。
次に、IDE130は、プロジェクト210のシミュレーションが完了したことに基づいて、プロジェクト210をバージョン管理システム302にコミットし得る。同様に、IDE130は、プロジェクト210のシミュレーションが完了したことに基づいて、実行ファイル200を実行データリポジトリ304にコミットし得る。また、IDE130は、実行ファイル200に加えて、シミュレーション実行ファイル321を実行データリポジトリ304にコミットしてもよい。
「プロジェクト210のシミュレーションが完了したこと」とは、シミュレーションの実行中にエラーが発生せずに、ワークの搬送または組立等の所定の処理が完了したことを示す。ある局面において、IDE130または仮想環境再現サービス120は、予め定められた回数以上シミュレーションが成功したことに基づいて、プロジェクト210のシミュレーションが完了したと判定してもよい。
バージョン管理システム302および実行データリポジトリ304は、プロジェクト210のシミュレーションが完了したことに基づいて、コミットを受け付ける。そうでない場合、バージョン管理システム302および実行データリポジトリ304は、コミットを受け付けない。ある局面において、実行データリポジトリ304へのコミットは、CI/CD303、または、バージョン管理システム302およびCI/CD303を介して実行されてもよい。
次に、実行データリポジトリ304は、実行ファイル200を実環境160にデプロイする。ある局面において、実行データリポジトリ304は、CI/CD303からの指令に基づいて、実行ファイル200を実環境160にデプロイしてもよい。
上記のように、管理システム100は、シミュレーションにより動作検証された実行ファイル200のみを実環境160にデプロイすることで不具合の発生を抑制し得る。
図6は、管理システム100におけるロールバックの手順の一例について説明する図である。なお、図6には、図3に示す構成からロールバックの手順の説明に必要な構成のみを抜粋して記載している。
管理システム100は、図3に示す構成に加えて、コンテナ・ソースファイルバージョン管理システム600を備える。コンテナ・ソースファイルバージョン管理システム600は、ロールバックおよびプルリクエスト等の各種通知を管理する。ある局面において、コンテナ・ソースファイルバージョン管理システム600は、CI/CD303の機能の一部であってもよい。他の局面において、コンテナ・ソースファイルバージョン管理システム600は、独立したサービスとして実現されてもよい。
管理システム100におけるロールバックは、不具合のある実行ファイル200(または装置ソースファイル220)のシミュレーションに必要なシミュレーション実行ファイル321(またはシミュレーションソースファイル230)を特定する処理を含む。
まず、仮想環境150または実環境160においてプロジェクト210の不具合が検知される。仮想環境150においては、仮想環境再現サービス120が、プロジェクト210の不具合を検知し得る。実環境160においては、制御装置が、プロジェクト210の不具合を検知し得る。
次に、コンテナ・ソースファイルバージョン管理システム600は、仮想環境150または実環境160からプロジェクト210の不具合の通知と、プロジェクト210のロールバック依頼とを受け付ける。不具合の通知またはロールバック依頼は、少なくとも装置ID332を含む。
次に、コンテナ・ソースファイルバージョン管理システム600は、実環境160で不具合のあるプロジェクト210が動作している場合、実行データリポジトリ304にロールバック依頼を出力する。ある局面において、コンテナ・ソースファイルバージョン管理システム600は、CI/CD303にロールバック依頼を出力してもよい。この場合、CI/CD303は、実行データリポジトリ304にロールバック依頼を転送する。
次に、コンテナ・ソースファイルバージョン管理システム600は、CI/CD303にプルリクエストを出力する。プルリクエストは、少なくとも装置ID332を含む。
CI/CD303は、プルリクエストを受信したことに基づいて、装置ID332に紐付けられたバージョンID331およびプロジェクトID333を特定する。CI/CD303は、バージョンID331およびプロジェクトID333により特定したプロジェクトのプルリクエストをバージョン管理システム302に転送する。ある局面において、CI/CD303は、プロジェクト・装置間連携管理システム301の機能を利用して、プルリクエストに必要な一連の処理を実行してもよい。
次に、IDE130は、ユーザーの操作に基づいて、プルリクエストされたプロジェクトを取得する。ユーザーは、取得したプロジェクトの不具合を検証する。なお、IDE130は、ユーザーの操作に基づいてまたは自動で、プロジェクトのシミュレーションを開始してもよい。ユーザーは、検証が完了したプロジェクトをバージョン管理システム302にコミットし得る。コミットの手順は図5に示した手順と同様である。
上記のように、管理システム100は、プロジェクト210に不具合があった場合、装置ID332に基づいて、特定のバージョンのプロジェクト210を発見する。当該特定のバージョンのプロジェクト210は、不具合のある実行ファイル200のコンパイル前の装置ソースファイル220と、不具合のある実行ファイル200のシミュレーションに必要なシミュレーションソースファイル230とを含む。
ある局面において、管理システム100は、シミュレーションの実行のために、装置ID332、または、装置ID332およびバージョンID331に基づいて、実行データリポジトリ304から実行ファイル200を検索してもよい。さらに、管理システム100は、プロジェクトID333、または、プロジェクトID333およびバージョンID331に基づいて、実行データリポジトリ304からシミュレーション実行ファイル321を検索してもよい。他の局面において、管理システム100は、装置ソースファイル220をコンパイルして、実行ファイル200を生成し、シミュレーションソースファイル230をコンパイルして、シミュレーション実行ファイル321を生成してもよい。また、他の局面において、管理システム100は、自動的にまたはIDE130からの要求に基づいて、不具合のある実行ファイル200のシミュレーションを開始してもよい。
なお、管理システム100により検索されたシミュレーション実行ファイル321およびシミュレーションソースファイル230は、例えば、不具合のある実行ファイル200がインストールされた実環境160を模したシミュレーションの実行に必要なデータである。
<D.フローチャート>
次に、図7および図8を参照して、管理システム100の処理の手順について説明する。ある局面において、管理システム100、ユーザーの端末および制御装置のCPU1は、図7または図8の処理を行うためのプログラムを2次記憶装置3から1次記憶装置2に読み込んで、当該プログラムを実行してもよい。他の局面において、当該処理の一部または全部は、当該処理を実行するように構成された回路素子の組み合わせとしても実現され得る。
次に、図7および図8を参照して、管理システム100の処理の手順について説明する。ある局面において、管理システム100、ユーザーの端末および制御装置のCPU1は、図7または図8の処理を行うためのプログラムを2次記憶装置3から1次記憶装置2に読み込んで、当該プログラムを実行してもよい。他の局面において、当該処理の一部または全部は、当該処理を実行するように構成された回路素子の組み合わせとしても実現され得る。
図7は、管理システム100におけるコミットの手順の一例を示すフローチャートである。ステップS705において、ユーザーの端末は、ユーザーの操作に基づいて、IDE130で、シミュレーションソースファイル230を作成する。ステップS710において、ユーザーの端末は、ユーザーの操作に基づいて、IDE130で、装置ソースファイル220を作成する。ステップS715において、ユーザーの端末は、ユーザーの操作に基づいて、装置ソースファイル220から実行ファイル200を、シミュレーションソースファイル230からシミュレーション実行ファイル321をそれぞれ生成する。
ステップS720において、ユーザーの端末は、ユーザーの操作に基づいて、実行ファイル200およびシミュレーション実行ファイル321を実行データリポジトリ304に転送する。このとき、実行データリポジトリ304は、実行ファイル200およびシミュレーション実行ファイル321を一時的に受け付ける。なお、実行データリポジトリ304は、シミュレーションによる実行ファイル200の検証が完了するまで、実行ファイル200およびシミュレーション実行ファイル321の永続的な保存および実行ファイル200のデプロイを実行しない。
ステップS725において、管理システム100は、仮想環境150上でプロジェクト210を実行し、当該プロジェクトの動作を検証する。より具体的には、仮想環境再現サービス120が、シミュレーション実行ファイル321を用いて、プロジェクト210に含まれる実行ファイル200の動作を検証する。
ステップS730において、管理システム100は、プロジェクト210の動作が正常に完了したか否かを判定する。プロジェクト210の動作とは、プロジェクト210に含まれる実行ファイル200の動作である。管理システム100は、プロジェクト210の動作が正常に完了したと判定した場合(ステップS730にてYES)、制御をステップS735に移す。そうでない場合(ステップS730にてNO)、管理システム100は、制御をステップS750に移す。
ステップS735において、管理システム100は、装置ソースファイル220およびシミュレーションソースファイル230をプロジェクト210としてバージョン管理システム302にコミットする。ある局面において、管理システム100は、シミュレーションの完了通知をユーザーの端末に送信してもよい。この場合、ユーザーの端末は、ユーザーの操作に基づいて、装置ソースファイル220およびシミュレーションソースファイル230をプロジェクト210としてバージョン管理システム302にコミットし得る。
ステップS740において、管理システム100は、実行ファイル200およびシミュレーション実行ファイル321を実行データリポジトリ304に転送する(コミットする)。実行データリポジトリ304は、実行ファイル200の検証が完了しているため、実行ファイル200およびシミュレーション実行ファイル321を永続的に保存し得る。ある局面において、シミュレーションの完了通知を受信したユーザーの端末が、実行ファイル200およびシミュレーション実行ファイル321を実行データリポジトリ304に転送してもよい。
ステップS745において、管理システム100は、実行ファイル200を実環境の制御装置にインストールする(デプロイする)。ステップS750において、管理システム100は、コミットせずに、実行ファイル200の検証を続行する。ある局面において、IDE130がインストールされたユーザーの端末が実行ファイル200の検証を行ってもよい。
図8は、管理システム100におけるロールバックの手順の一例を示すフローチャートである。ステップS810において、実環境160の制御装置は、制御装置にインストールされた実行ファイル200の不具合を検出する。ステップS820において、実環境160の制御装置は、管理システム100に、不具合発生を知らせる通知(装置ID332、I(Input)/O(Output)情報、装置エラー情報、操業情報(HMIからの操作等)、および、これらの各項目の時刻情報等を含む)を送信する。
ステップS830において、管理システム100は、通知に含まれる装置ID332を用いて、実行データリポジトリ304の中から、制御装置が現在実行している実行ファイル200を特定する。ステップS840において、管理システム100は、通知に含まれる装置ID332に紐付けられているプロジェクトID333およびバージョンID331を特定する。ある局面において、管理システム100は、ステップS830の処理の代わりに、特定したプロジェクト210に含まれる装置ソースファイル220をコンパイルして、実行ファイル200を生成してもよい。他の局面において、管理システム100は、装置ID332およびバージョンID331を用いて、実行データリポジトリ304の中から、制御装置が現在実行している実行ファイル200を特定してもよい。
ステップS850において、管理システム100は、プロジェクトID333を用いて、実行データリポジトリ304の中から、実環境160に対応するシミュレーション実行ファイル321を特定する。ある局面において、管理システム100は、ステップS850の処理の代わりに、特定したプロジェクト210に含まれるシミュレーションソースファイル230をコンパイルして、シミュレーション実行ファイル321を生成してもよい。他の局面において、管理システム100は、プロジェクトID333およびバージョンID331を用いて、実行データリポジトリ304の中から、実環境160に対応するシミュレーション実行ファイル321を特定してもよい。
ステップS860において、管理システム100は、特定した実行ファイル200およびシミュレーション実行ファイル321を仮想環境150にデプロイする。ステップS870において、管理システム100は、プロジェクトID333が示すプロジェクト210をユーザー(ユーザーの端末)に通知する。より具体的には、管理システム100は、ユーザーの端末にインストールされたIDE130に、プロジェクトID333が示すプロジェクト210を通知する。ある局面において、管理システム100は、ユーザーのメールアドレスに、プロジェクトID333が示すプロジェクト210を通知してもよい。ある局面において、管理システム100は、不具合に関する情報(ステップS820の通知に含まれる各種情報等)をユーザーの端末に通知してもよい。ユーザーは、これらの各種情報を参照して、実行ファイル200の不具合を検証し得る。その間、管理システム100は、実環境160の制御装置に古いバージョンの実行ファイル200をデプロイして、制御装置の稼働を継続させてもよい。
ステップS880において、ユーザーの端末は、ユーザーの操作に基づいて、実行ファイル200の不具合の再現および修正を行う。ステップS890において、ユーザーの端末は、ユーザーの操作に基づいて、修正したプロジェクト210をバージョン管理システム302にコミットし、さらに、実行ファイル200を実環境160にデプロイする。ある局面において、実行ファイル200のデプロイは、CI/CD303および実行データリポジトリ304を介して実行され得る。
以上説明した通り、本実施の形態に従う管理システム100は、シミュレーションにより動作検証されたプログラム(実行ファイル200)のコミットを受け付ける機能を備える。この機能により、ユーザーは、プログラムを実環境160にデプロイする前に、当該プログラムを仮想環境150において検証することができる。
さらに、管理システム100は、実環境160におけるプログラムの不具合が検知されたときに、当該実環境160を模したシミュレーションに必要なデータ(シミュレーション実行ファイル321)を特定する機能を備える。この機能により、ユーザーは、実環境160においてプログラムの不具合が発生したときに、不具合のあるプログラムのシミュレーションを即座に実行することができる。
<E.付記>
以上のように、本実施の形態は以下のような開示を含む。
[構成1]
制御装置のプログラムのバージョン管理方法であって、
第1のバージョンのプロジェクト(210)から、実行ファイル(200)と、上記実行ファイル(200)のシミュレーションに必要な第1のシミュレーション実行ファイル(321)とを生成して実行データリポジトリ(304)に登録するステップと、
上記実行ファイル(200)を上記制御装置にデプロイするステップと、
上記制御装置と、上記第1のバージョンのプロジェクト(210)とを紐付けるステップと、
上記制御装置にデプロイされた上記実行ファイル(200)の不具合が検出されたことに基づいて、上記制御装置に紐付けられた上記第1のバージョンのプロジェクト(210)を特定するステップと、
上記実行ファイル(200)のシミュレーションのために、上記実行ファイル(200)と、上記第1のシミュレーション実行ファイル(321)とを取得するステップを含む、バージョン管理方法。
[構成2]
上記制御装置と、上記第1のバージョンのプロジェクト(210)とを紐付けるステップは、上記制御装置の装置ID(332)(Identifier)と、上記第1のバージョンのプロジェクト(210)のバージョンID(331)およびプロジェクトID(333)とを紐付けるステップを含む、構成1に記載のバージョン管理方法。
[構成3]
上記制御装置にデプロイされた上記実行ファイル(200)の不具合が検出されたことに基づいて、不具合に関する情報と、上記第1のバージョンのプロジェクト(210)とをユーザーの端末に通知するステップをさらに含む、構成2に記載のバージョン管理方法。
[構成4]
上記実行ファイル(200)は、上記装置ID(332)と紐付けられており、
上記第1のシミュレーション実行ファイル(321)は、上記プロジェクトID(333)に紐付けられており、
上記実行ファイル(200)のシミュレーションのために、上記実行ファイル(200)と、上記第1のシミュレーション実行ファイル(321)とを取得するステップは、
上記装置ID(332)に基づいて、実行データリポジトリ(304)から、上記実行ファイル(200)を取得するステップと、
上記プロジェクトID(333)に基づいて、実行データリポジトリ(304)から、上記第1のシミュレーション実行ファイル(321)を取得するステップとを含む、構成2または3に記載のバージョン管理方法。
[構成5]
上記実行ファイル(200)のシミュレーションのために、上記実行ファイル(200)と、上記第1のシミュレーション実行ファイル(321)とを取得するステップは、上記第1のバージョンのプロジェクト(210)から、上記実行ファイル(200)と、上記第1のシミュレーション実行ファイル(321)とを再度生成するステップを含む、構成2~4のいずれかに記載のバージョン管理方法。
[構成6]
上記制御装置で不具合が発生したことに基づいて、上記第1のバージョンのプロジェクト(210)よりも古い第2のバージョンのプロジェクト(210)から生成された第2の実行ファイルを上記制御装置にデプロイするステップをさらに含む、構成1~5のいずれかに記載のバージョン管理方法。
[構成7]
上記制御装置にデプロイされた上記実行ファイル(200)の不具合が検出されたことに基づいて、上記第1のシミュレーション実行ファイル(321)を用いて、上記実行ファイル(200)のシミュレーションを実行するステップをさらに含む、構成1~6のいずれかに記載のバージョン管理方法。
[構成8]
上記実行ファイル(200)のシミュレーションが完了したことに基づいて、上記第1のバージョンのプロジェクト(210)のコミットを受け付けるステップをさらに含む、構成1に記載のバージョン管理方法。
[構成9]
構成1~8のいずれかに記載の方法をコンピューターに実行させるためのプログラム。
[構成10]
構成9に記載のプログラムを格納した記憶部(3)と、
上記プログラムを実行するためのプロセッサー(1)とを含む、システム(100)。
以上のように、本実施の形態は以下のような開示を含む。
[構成1]
制御装置のプログラムのバージョン管理方法であって、
第1のバージョンのプロジェクト(210)から、実行ファイル(200)と、上記実行ファイル(200)のシミュレーションに必要な第1のシミュレーション実行ファイル(321)とを生成して実行データリポジトリ(304)に登録するステップと、
上記実行ファイル(200)を上記制御装置にデプロイするステップと、
上記制御装置と、上記第1のバージョンのプロジェクト(210)とを紐付けるステップと、
上記制御装置にデプロイされた上記実行ファイル(200)の不具合が検出されたことに基づいて、上記制御装置に紐付けられた上記第1のバージョンのプロジェクト(210)を特定するステップと、
上記実行ファイル(200)のシミュレーションのために、上記実行ファイル(200)と、上記第1のシミュレーション実行ファイル(321)とを取得するステップを含む、バージョン管理方法。
[構成2]
上記制御装置と、上記第1のバージョンのプロジェクト(210)とを紐付けるステップは、上記制御装置の装置ID(332)(Identifier)と、上記第1のバージョンのプロジェクト(210)のバージョンID(331)およびプロジェクトID(333)とを紐付けるステップを含む、構成1に記載のバージョン管理方法。
[構成3]
上記制御装置にデプロイされた上記実行ファイル(200)の不具合が検出されたことに基づいて、不具合に関する情報と、上記第1のバージョンのプロジェクト(210)とをユーザーの端末に通知するステップをさらに含む、構成2に記載のバージョン管理方法。
[構成4]
上記実行ファイル(200)は、上記装置ID(332)と紐付けられており、
上記第1のシミュレーション実行ファイル(321)は、上記プロジェクトID(333)に紐付けられており、
上記実行ファイル(200)のシミュレーションのために、上記実行ファイル(200)と、上記第1のシミュレーション実行ファイル(321)とを取得するステップは、
上記装置ID(332)に基づいて、実行データリポジトリ(304)から、上記実行ファイル(200)を取得するステップと、
上記プロジェクトID(333)に基づいて、実行データリポジトリ(304)から、上記第1のシミュレーション実行ファイル(321)を取得するステップとを含む、構成2または3に記載のバージョン管理方法。
[構成5]
上記実行ファイル(200)のシミュレーションのために、上記実行ファイル(200)と、上記第1のシミュレーション実行ファイル(321)とを取得するステップは、上記第1のバージョンのプロジェクト(210)から、上記実行ファイル(200)と、上記第1のシミュレーション実行ファイル(321)とを再度生成するステップを含む、構成2~4のいずれかに記載のバージョン管理方法。
[構成6]
上記制御装置で不具合が発生したことに基づいて、上記第1のバージョンのプロジェクト(210)よりも古い第2のバージョンのプロジェクト(210)から生成された第2の実行ファイルを上記制御装置にデプロイするステップをさらに含む、構成1~5のいずれかに記載のバージョン管理方法。
[構成7]
上記制御装置にデプロイされた上記実行ファイル(200)の不具合が検出されたことに基づいて、上記第1のシミュレーション実行ファイル(321)を用いて、上記実行ファイル(200)のシミュレーションを実行するステップをさらに含む、構成1~6のいずれかに記載のバージョン管理方法。
[構成8]
上記実行ファイル(200)のシミュレーションが完了したことに基づいて、上記第1のバージョンのプロジェクト(210)のコミットを受け付けるステップをさらに含む、構成1に記載のバージョン管理方法。
[構成9]
構成1~8のいずれかに記載の方法をコンピューターに実行させるためのプログラム。
[構成10]
構成9に記載のプログラムを格納した記憶部(3)と、
上記プログラムを実行するためのプロセッサー(1)とを含む、システム(100)。
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内で全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された開示内容は、可能な限り、単独でも、組合わせても、実施することが意図される。
1 CPU、2 1次記憶装置、3 2次記憶装置、4 外部機器インターフェイス、5 入力インターフェイス、6 出力インターフェイス、7 通信インターフェイス、100 管理システム、110 コンテナ管理システム、120 仮想環境再現サービス、130 IDE、150 仮想環境、160 実環境、200 実行ファイル、201 設定データ、202 POU実行ファイル、210 プロジェクト、220 装置ソースファイル、221 装置設定データ、222 HMIデザインデータ、223 センサー設定データ、224 POUプログラム、230 シミュレーションソースファイル、231 テストプログラム、232 仮想センサープログラム、233 ワークプログラム、234 3DCADデータ、240 装置ランタイム、250 シミュレーションランタイム、260 3Dビジュアライザー、301 プロジェクト・装置間連携管理システム、302 バージョン管理システム、304 実行データリポジトリ、321 シミュレーション実行ファイル、331 バージョンID、332 装置ID、333 プロジェクトID、400 装置、600 ソースファイルバージョン管理システム。
Claims (10)
- 制御装置のプログラムのバージョン管理方法であって、
第1のバージョンのプロジェクトから、第1の実行ファイルと、前記第1の実行ファイルのシミュレーションに必要な第1のシミュレーション実行ファイルとを生成して実行データリポジトリに登録するステップと、
前記第1の実行ファイルを前記制御装置にデプロイするステップと、
前記制御装置と、前記第1のバージョンのプロジェクトとを紐付けるステップと、
前記制御装置にデプロイされた前記第1の実行ファイルの不具合が検出されたことに基づいて、前記制御装置に紐付けられた前記第1のバージョンのプロジェクトを特定するステップと、
前記第1の実行ファイルのシミュレーションのために、前記第1の実行ファイルと、前記第1のシミュレーション実行ファイルとを取得するステップとを含む、バージョン管理方法。 - 前記制御装置と、前記第1のバージョンのプロジェクトとを紐付けるステップは、前記制御装置の装置ID(Identifier)と、前記第1のバージョンのプロジェクトのバージョンIDおよびプロジェクトIDとを紐付けるステップを含む、請求項1に記載のバージョン管理方法。
- 前記制御装置にデプロイされた前記第1の実行ファイルの不具合が検出されたことに基づいて、不具合に関する情報と、前記第1のバージョンのプロジェクトとをユーザーの端末に通知するステップをさらに含む、請求項2に記載のバージョン管理方法。
- 前記第1の実行ファイルは、前記装置IDと紐付けられており、
前記第1のシミュレーション実行ファイルは、前記プロジェクトIDに紐付けられており、
前記第1の実行ファイルのシミュレーションのために、前記第1の実行ファイルと、前記第1のシミュレーション実行ファイルとを取得するステップは、
前記装置IDに基づいて、実行データリポジトリから、前記第1の実行ファイルを取得するステップと、
前記プロジェクトIDに基づいて、実行データリポジトリから、前記第1のシミュレーション実行ファイルを取得するステップとを含む、請求項2または3に記載のバージョン管理方法。 - 前記第1の実行ファイルのシミュレーションのために、前記第1の実行ファイルと、前記第1のシミュレーション実行ファイルとを取得するステップは、前記第1のバージョンのプロジェクトから、前記第1の実行ファイルと、前記第1のシミュレーション実行ファイルとを再度生成するステップを含む、請求項2~4のいずれかに記載のバージョン管理方法。
- 前記制御装置で不具合が発生したことに基づいて、前記第1のバージョンのプロジェクトよりも古い第2のバージョンのプロジェクトから生成された第2の実行ファイルを前記制御装置にデプロイするステップをさらに含む、請求項1~5のいずれかに記載のバージョン管理方法。
- 前記制御装置にデプロイされた前記第1の実行ファイルの不具合が検出されたことに基づいて、前記第1のシミュレーション実行ファイルを用いて、前記第1の実行ファイルのシミュレーションを実行するステップをさらに含む、請求項1~6のいずれかに記載のバージョン管理方法。
- 前記第1の実行ファイルのシミュレーションが完了したことに基づいて、前記第1のバージョンのプロジェクトのコミットを受け付けるステップをさらに含む、請求項1に記載のバージョン管理方法。
- 請求項1~8のいずれかに記載の方法をコンピューターに実行させるためのプログラム。
- 請求項9に記載のプログラムを格納した記憶部と、
前記プログラムを実行するためのプロセッサーとを含む、システム。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021082089A JP2022175568A (ja) | 2021-05-14 | 2021-05-14 | バージョン管理方法、バージョン管理のプログラム、および、バージョン管理のシステム |
US18/288,414 US20240211248A1 (en) | 2021-05-14 | 2022-03-29 | Version management method, non-transitory computer-readable medium storing version management program, and version management system |
CN202280029858.3A CN117178255A (zh) | 2021-05-14 | 2022-03-29 | 版本管理方法、版本管理的程序以及版本管理的系统 |
EP22807254.2A EP4339768A1 (en) | 2021-05-14 | 2022-03-29 | Version management method, version management program, and version management system |
PCT/JP2022/015492 WO2022239549A1 (ja) | 2021-05-14 | 2022-03-29 | バージョン管理方法、バージョン管理のプログラム、および、バージョン管理のシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021082089A JP2022175568A (ja) | 2021-05-14 | 2021-05-14 | バージョン管理方法、バージョン管理のプログラム、および、バージョン管理のシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022175568A true JP2022175568A (ja) | 2022-11-25 |
Family
ID=84028227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021082089A Pending JP2022175568A (ja) | 2021-05-14 | 2021-05-14 | バージョン管理方法、バージョン管理のプログラム、および、バージョン管理のシステム |
Country Status (5)
Country | Link |
---|---|
US (1) | US20240211248A1 (ja) |
EP (1) | EP4339768A1 (ja) |
JP (1) | JP2022175568A (ja) |
CN (1) | CN117178255A (ja) |
WO (1) | WO2022239549A1 (ja) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110208324A1 (en) * | 2010-02-25 | 2011-08-25 | Mitsubishi Electric Corporation | Sysyem, method, and apparatus for maintenance of sensor and control systems |
US20140304683A1 (en) * | 2013-04-08 | 2014-10-09 | Obigo Inc. | Method, server and computer-readable recording media for managing metastore |
KR101775808B1 (ko) * | 2013-04-12 | 2017-09-06 | 미쓰비시덴키 가부시키가이샤 | 프로그래머블 컨트롤러의 주변장치 및 디버그 지원 프로그램 |
JP2015011372A (ja) * | 2013-06-26 | 2015-01-19 | 日本電気株式会社 | デバッグ支援システム、方法、プログラム及び記録媒体 |
JP2019114043A (ja) * | 2017-12-22 | 2019-07-11 | キヤノン株式会社 | ソフトウェア評価システム |
CN112204479B (zh) | 2018-05-29 | 2021-12-07 | 三菱电机株式会社 | 程序管理系统、编程辅助装置、程序管理方法及编程辅助程序 |
JP7331818B2 (ja) * | 2019-03-18 | 2023-08-23 | 株式会社オートネットワーク技術研究所 | 車載更新装置、更新処理プログラム及び、プログラムの更新方法 |
JP2020170403A (ja) * | 2019-04-04 | 2020-10-15 | 株式会社デンソーテン | シミュレーションシステム、収集装置、収集方法およびシミュレーション方法 |
US11080176B2 (en) * | 2019-09-26 | 2021-08-03 | Rockwell Automation Technologies, Inc. | Testing framework for automation objects |
-
2021
- 2021-05-14 JP JP2021082089A patent/JP2022175568A/ja active Pending
-
2022
- 2022-03-29 EP EP22807254.2A patent/EP4339768A1/en active Pending
- 2022-03-29 CN CN202280029858.3A patent/CN117178255A/zh active Pending
- 2022-03-29 US US18/288,414 patent/US20240211248A1/en active Pending
- 2022-03-29 WO PCT/JP2022/015492 patent/WO2022239549A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20240211248A1 (en) | 2024-06-27 |
CN117178255A (zh) | 2023-12-05 |
EP4339768A1 (en) | 2024-03-20 |
WO2022239549A1 (ja) | 2022-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4961123B2 (ja) | 自動化されたテストケース実行に関して疎結合された自動化されたテストケース検証 | |
US8856724B2 (en) | Systems and methods for incremental software development | |
US9569204B2 (en) | End-to-end continuous integration and verification of software | |
CN110554965B (zh) | 自动化模糊测试方法及相关设备、计算机可读存储介质 | |
US8762971B2 (en) | Servicing a production program in an integrated development environment | |
EP2972821B1 (en) | Application compatibility checking in a distributed computing environment | |
US8813030B2 (en) | Detecting plug-in and fragment issues with software products | |
WO2016177124A1 (zh) | 一种实现持续集成测试的方法及装置 | |
US20100313185A1 (en) | Access to test-ready virtual environments | |
CN117714527A (zh) | 利用微服务的边缘设备和关联的网络 | |
US20110296398A1 (en) | Systems and methods for determining when to update a package manager software | |
US10042744B2 (en) | Adopting an existing automation script to a new framework | |
US8875064B2 (en) | Automated design rule checking (DRC) test case generation | |
GB2508643A (en) | Method for Performing a Regression Test after Modifying Source Code File | |
JP2011510418A (ja) | コンポーネント・モデル基盤の仮想ソフトウェア・プラットホームを生成する方法、これを利用してソフトウェア・プラットホーム・アーキテクチャを検証する方法及びその装置 | |
US9715440B2 (en) | Test scope determination based on code change(s) | |
BR112019004964B1 (pt) | gerador de caso de teste construído em editor de fluxo de trabalho de integração de dados | |
US9317254B1 (en) | Fault tolerance model, methods, and apparatuses and their validation techniques | |
CN108351790B (zh) | 用于期望状态配置的非单调最终收敛的设备、方法和介质 | |
JP2015011372A (ja) | デバッグ支援システム、方法、プログラム及び記録媒体 | |
JP2018532169A (ja) | 失敗したテストスクリプトについてのデバッグ情報を生成、収集、格納、およびロードするための方法および装置 | |
US10990507B2 (en) | System and method for provisioning a virtual machine test environment | |
CN105677394A (zh) | 一种终端设备的应用程序升级方法和装置 | |
WO2022239549A1 (ja) | バージョン管理方法、バージョン管理のプログラム、および、バージョン管理のシステム | |
WO2017088547A1 (zh) | 一种数据升级方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240314 |