JP7462860B1 - プログラム可能機器、バージョン管理システム、バージョン管理方法及びプログラム - Google Patents

プログラム可能機器、バージョン管理システム、バージョン管理方法及びプログラム Download PDF

Info

Publication number
JP7462860B1
JP7462860B1 JP2023576431A JP2023576431A JP7462860B1 JP 7462860 B1 JP7462860 B1 JP 7462860B1 JP 2023576431 A JP2023576431 A JP 2023576431A JP 2023576431 A JP2023576431 A JP 2023576431A JP 7462860 B1 JP7462860 B1 JP 7462860B1
Authority
JP
Japan
Prior art keywords
user
data set
dataset
area
version management
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.)
Active
Application number
JP2023576431A
Other languages
English (en)
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP7462860B1 publication Critical patent/JP7462860B1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Abstract

PLC(10)は、マスタ領域(M)と、複数のユーザに対応する複数のユーザ領域(U)とを含む記憶部(100)と、複数のユーザのそれぞれのユーザを認証するユーザ認証部(102)と、ユーザ認証部(102)により認証されたユーザが作成した第1データセットを記憶部(100)に保存してバージョン管理するバージョン管理部(103)と、を備える。バージョン管理部(103)は、第1データセットを、記憶部(100)にすでに保存されている第2データセットであって第1データセットの直近の親となる第2データセットと対応付けて、マスタ領域(M)または複数のユーザ領域(U)のうちユーザ認証部(102)により認証されたユーザに対応するユーザ領域(U)に保存する。

Description

本開示は、プログラム可能機器、バージョン管理システム、バージョン管理方法及びプログラムに関する。
プログラマブルロジックコントローラ、モーションユニットなどのFA(Factory Automation)用のプログラム可能機器は、ユーザの開発により作成されたプログラムを実行して被制御機器を制御する。開発における変化点管理、進捗管理等のために、プログラムと当該プログラムに関連するデータとをバージョン管理することについて需要がある。
上記の事情に関連するものとして、例えば特許文献1には、自身がバージョン管理機能を有するプログラマブルロジックコントローラが開示されている。
国際公開第2022/259374号
特許文献1のプログラマブルロジックコントローラでは、複数人による開発を前提としていないため、ユーザ別にバージョン管理することができないという問題がある。そのため、複数のユーザが個別にプログラムの開発作業を行うにあたり、予めユーザ間でプログラマブルロジックコントローラにどの順番でプログラムを更新するかなどの運用ルールを定める必要があり、作業ミスを誘発するおそれがある。
本開示の目的は、上記の事情に鑑み、複数人が開発する環境において容易にバージョン管理できるプログラム可能機器等を提供することにある。
上記の目的を達成するため、本開示に係るプログラム可能機器は、
マスタ領域と、複数のユーザに対応する複数のユーザ領域とを含む記憶手段と
前記複数のユーザのそれぞれのユーザを認証するユーザ認証手段と、
前記ユーザ認証手段により認証されたユーザが作成した第1データセットを前記記憶手段に保存してバージョン管理するバージョン管理手段と、
を備え、
前記バージョン管理手段は、前記第1データセットを、前記記憶手段にすでに保存されている第2データセットであって前記第1データセットの直近の親となる第2データセットと対応付けて、前記マスタ領域または前記複数のユーザ領域のうち前記ユーザ認証手段により認証されたユーザに対応するユーザ領域に保存し、前記第2データセットが前記マスタ領域に保存されているとき、前記第1データセットを前記ユーザ認証手段により認証されたユーザに対応するユーザ領域に保存する。
本開示によれば、複数人が開発する環境において容易にバージョン管理できる。
本開示の実施の形態1に係るバージョン管理システムの全体構成を示す図 本開示の実施の形態1に係るバージョン管理システムによるバージョン管理の一例を示す図 本開示の実施の形態1に係るPLCの機能的構成を示すブロック図 本開示の実施の形態1に係るPLC及び本開示の実施の形態2に係る開発装置のハードウェア構成の一例を示す図 本開示の実施の形態1に係るPLCによるバージョン管理の動作の一例を示すフローチャート 本開示の実施の形態1の変形例に係るバージョン管理システムの全体構成を示す図 本開示の実施の形態2に係る開発装置の機能的構成を示すブロック図 本開示の実施の形態2に係るバージョン管理システムによる分散バージョン管理の一例を説明する図 本開示の実施の形態2に係るバージョン管理システムによる分散バージョン管理の一例を説明する図 本開示の実施の形態2に係るバージョン管理システムによる分散バージョン管理の一例を説明する図 本開示の実施の形態2に係るバージョン管理システムによる分散バージョン管理の一例を説明する図 本開示の実施の形態2に係るバージョン管理システムによる分散バージョン管理の一例を説明する図 本開示の実施の形態2の変形例に係るバージョン管理システムによる分散バージョン管理の一例を説明する図 本開示の実施の形態2の変形例に係るバージョン管理システムによる分散バージョン管理の一例を説明する図
以下、図面を参照しながら、本開示の実施の形態に係るバージョン管理システムを説明する。各図面においては、同一又は同等の部分に同一の符号を付す。
(実施の形態1)
図1を参照しながら、実施の形態1に係るバージョン管理システム1を説明する。バージョン管理システム1は、PLC(Programmable Logic Controller:プログラマブルロジックコントローラ)10と複数の開発装置20とを備える。バージョン管理システム1は、本開示に係るバージョン管理システムの一例である。
バージョン管理システム1においては、複数のユーザがそれぞれの開発装置20によりPLC10で実行されるプログラムを開発する。ユーザは、開発装置20により開発したプログラムと当該プログラムに関連するデータとをまとめたデータセットをPLC10に送信する。当該プログラムに関連するデータは、例えばプログラムのもととなるソースコード、プログラムに必要な設定ファイル及びリソースファイル、プログラムの仕様を説明するドキュメントファイルなどを含む。
ユーザは、例えばプログラムの変更作業が完了するたびに、データセットをPLC10に送信する。PLC10は、受信したデータセットをバージョン管理しつつ、データセットに含まれるプログラムを実行する。ユーザが変更作業完了のたびにデータセットをPLC10に送信する場合、PLC10は変更作業完了ごとのデータセットをバージョン管理することとなる。
PLC10は、ユーザが開発したプログラムを実行し、図示しない被制御機器を制御する。また、PLC10は、プログラムの実行のほか、上述のとおりデータセットをバージョン管理する。PLC10の機能的構成については後述する。PLC10は、本開示に係るプログラム可能機器の一例である。
開発装置20は、PLC10で実行されるプログラムの開発に使用される。開発装置20は、例えばエンジニアリングツールのプログラムがインストールされたパーソナルコンピュータである。ユーザは、開発装置20によりPLC10で実行されるプログラムを含むデータセットを作成し、作成したデータセットをPLC10に送信する。開発装置20は、本開示に係る開発装置の一例である。
次に、バージョン管理システム1におけるバージョン管理を概略的に説明する。バージョン管理システム1においては、概ね以下の流れでプログラムの開発が行われる。
(1)ユーザが開発作業によりプログラムを含むデータセットを作成。
(2)PLC10がユーザを認証。
(3)ユーザがPLC10にデータセットを送信。
(4)PLC10が、受信したデータセットをバージョン管理。
(5)ユーザが、PLC10に送信したデータセットに含まれるプログラムをPLC10上で実行してデバッグ作業。
(6)必要に応じて修正作業をして(1)からの作業を繰り返す。
(7)一通り修正作業が完了したら、プログラムをPLC10上で実行して複数のユーザが動作確認をする。
(8)動作確認の結果に応じて、ユーザは(1)からの作業を繰り返す。
上記(1)-(8)のうち、(7)は複数のユーザが共同で行う作業であるが、その他はユーザが個別に行う作業である。そのため、ユーザの個別作業に関するデータセットと、共同作業に関するデータセットとを分けて管理できるとよい。
PLC10は、データセットを、マスタ領域とユーザごとのユーザ領域とに分けて管理する。マスタ領域は、どのユーザでもアクセス可能な領域であり、ユーザ領域は、それぞれのユーザのみがアクセス可能であり他のユーザはアクセスできない領域である。ユーザが作成したデータセットは、原則としてユーザ領域に保存されるが、全ユーザ間で共有すべきデータセットは、ユーザの操作に基づいてマスタ領域に保存される。ユーザの操作に基づいてデータセットがマスタ領域に保存されることを、以下では「マスタ領域にデータセットを適用する」という。全ユーザ間で共有すべきデータセットとして、例えばユーザによる変更作業が一通り完成して全ユーザ間で共通してテストをするべき実行ファイルを含むデータセット、製品として出荷してよいレベルに達した実行ファイルを含むデータセットなどが挙げられる。
具体例を、図2を参照しながら説明する。図2に示す丸印は、1つのデータセットを表す。図2に示す矢印は、あるデータセットを直近の親として子のデータセットが作成されていることを示す。あるデータセットに対して変更作業を行い別のデータセットが作成されたとき、変更前のデータセットが「直近の親」であり、変更後のデータセットが「子」である。なお、「最初のデータセット」であるデータセットx1は、例えばPLC10が初めてデータセットを受信したときに、当該データセットをマスタ領域に保存することにより作成される。
まず、ユーザAが、マスタ領域にあるデータセットx1をもとに変更作業を行い、変更したデータセットをPLC10に送信する。以下、データセットをもとに変更作業を行い、変更したデータセットをPLC10に送信することを「更新」という。ユーザAによる更新により、マスタ領域のデータセットx1から分岐したデータセットy1が、マスタ領域ではなくユーザA領域に保存される。データセットx1は、データセットy1の直近の親となる。
ユーザAがデータセットy1を更新することにより、データセットy1を直近の親とするデータセットy2がユーザ領域Aに保存される。続けて、同様の更新作業により、データセットy2を直近の親とするデータセットy3がユーザ領域Aに保存される。
その後、ユーザAは、データセットy3をマスタ領域に適用する作業を行うことにより、データセットy3と同内容のデータセットx2が、データセットx1とデータセットy3とを直近の親としてマスタ領域に保存される。このデータセットx2は、データセットy1からy3までの間のユーザAによる変更作業の内容が適用されたものとなる。データセットy3の大元の親はデータセットx1であり、かつこの時点でのマスタ領域の最新のデータセットはデータセットx1であるため、問題なくデータセットy3をマスタ領域に適用することができる。なお、ここでいう「大元の親」とは、データセットの親を1世代以上遡ってたどり着くデータセットのことをいう。図2に示す例では、データセットx1は、データセットy1、y2、y3のいずれに対しても「大元の親」となる。
次に、ユーザBの作業について説明する。まず、ユーザBも、ユーザAと同様に、マスタ領域のデータセットx1を更新することにより、マスタ領域のデータセットx1から分岐しデータセットx1を直近の親とするデータセットz1が、ユーザB領域に保存される。ユーザBは、続けて更新を2回行い、データセットz1を直近の親とするデータセットz2がユーザB領域に保存され、データセットz2を直近の親とするデータセットz3がユーザ領域Bに保存される。なお、ここまでのユーザBの作業は、マスタ領域にデータセットx2が保存される前に行われているものとする。
その後、ユーザBは、自身の変更作業の内容が適用されたデータセットz3をマスタ領域に適用しようとする。しかし、マスタ領域に保存されている最新のデータセットがデータセットx1でなくデータセットx2となっているため、データセットz3をマスタ領域に適用しようとしても競合している。そのため、このままでは適用することができない。
そこでユーザBは、ユーザB自身の最新の変更作業が適用されたデータセットz3と、マスタ領域のデータセットx2とをマージする作業を行い、この作業にて変更されたデータセットにて更新する。これにより、データセットz3を直近の親とするデータセットz4がユーザ領域Bに保存される。
そしてユーザBは、データセットz4をマスタ領域に適用する作業を行うことにより、データセットz4と同内容のデータセットx3が、データセットx2とデータセットz4とを直近の親としてマスタ領域に保存される。このデータセットx3は、データセットz1からz3までの間のユーザBによる変更作業の内容と、データセットx2の内容とがマージされたものとなる。
PLC10は、データセットをマスタ領域とユーザ領域とに分けて管理することにより、データセットをユーザ単位で管理することができる。これにより、ユーザはプログラムの開発の際に、マスタ領域のデータセットと自身に対応するユーザ領域のデータセットのみに着目すればよく、複数人が開発する環境においてバージョン管理の運用が容易となる。
次に、図3を参照しながら、PLC10の機能的構成を説明する。PLC10は、記憶部100と通信部101とユーザ認証部102とバージョン管理部103とプログラム実行部104とを備える。
記憶部100は、後述のバージョン管理部103によるバージョン管理に基づいて、データセットを保存する。記憶部100は、マスタ領域Mとユーザごとに設けられた複数のユーザ領域Uとを含む。記憶部100は、本開示に係る記憶手段の一例である。マスタ領域Mは、本開示に係るマスタ領域の一例である。ユーザ領域Uは、本開示に係るユーザ領域の一例である。
通信部101は、開発装置20と通信する。通信部101は、例えばネットワークインタフェースである。通信部101は、本開示に係る通信手段の一例である。
ユーザ認証部102は、通信部101による通信先となっている開発装置20に対応するユーザを認証する。ユーザ認証部102は、例えばパスワード認証によりユーザを認証する。あるいは、PLC10の管理者が予め開発装置20ごとに対応するユーザをPLC10に登録し、ユーザ認証部102は開発装置20を識別することによりユーザを自動的に認証してもよい。ユーザ認証部102は、本開示に係るユーザ認証手段の一例である。
バージョン管理部103は、通信部101が受信したデータセットをバージョン管理する。バージョン管理部103は、データセットをマスタ領域Mと各ユーザ領域Uとに分けて保存して管理する。バージョン管理部103は、マスタ領域Mに保存されたデータセットを直近の親とするデータセットを、更新を行ったユーザに対応するユーザ領域Uに保存する。そのため、保存されるデータセットは、マスタ領域Mのデータセットから「分岐」したものとなる。また、バージョン管理部103は、ユーザ領域Uに保存されたデータセットを直近の親とするデータセットは、原則としてユーザ領域Uに保存する。そのため、原則として、ユーザが送信したデータセットはユーザ領域Uに保存される。
ただし、ユーザが、自身のユーザ領域Uに保存されたデータセットをマスタ領域Mに適用する作業を行うときには、バージョン管理部103は、当該データセットをマスタ領域Mに保存する。なお、ユーザがマスタ領域Mに適用しようとするデータセットの大元の親が、マスタ領域Mに保存された最新のデータセットと異なる場合には、バージョン管理部103は、ユーザによる適用を拒否する。この場合、ユーザは、マスタ領域Mに保存された最新のデータセットと自身のデータセットとをマージする作業を行う必要がある。
バージョン管理部103は、データセットをマスタ領域Mあるいはユーザ領域Uに保存するとき、データセット本体のみでなくデータセットを個別に識別するメタデータと、保存対象となるデータセットの直近の親のデータセットを示すメタデータとを、データセット本体と対応付けて保存する。メタデータとして、例えばデータセット本体を1つのバイナリデータとして扱ったときの当該バイナリデータのハッシュ値を使用することができる。これにより、データセットの保存時に直近の親のデータセットと対応付けることができるので、データセット間の親子関係を管理することができ、全体としてデータセットのバージョン管理をすることができる。バージョン管理部103は、本開示に係るバージョン管理手段の一例である。
プログラム実行部104は、バージョン管理部103を介して記憶部100に保存されたプログラムを読み出し、読み出したプログラムを実行する。プログラム実行部104は、例えば記憶部100に保存された最新のデータセットに含まれるプログラムを読み出して実行する。あるいは、プログラム実行部104は、ユーザが指定するデータセットに含まれるプログラムを読み出して実行してもよい。例えば、作業工程の都合上、ソースコードが一時的にコンパイルできないものとなり最新のデータセットに実行ファイルが存在しない状態となることがある。このような場合には、ユーザが実行ファイルの存在するデータセットを指定する必要が生じる。
また、プログラム実行部104は、プログラムの実行に関するログを、実行したプログラムに対応するデータセットと対応付けて記憶部100に保存する。プログラムの実行に関するログは、例えば実行日時を示す情報、プログラム実行時に発生したイベント及びエラーに関する情報、実行したプログラムに対応するデータセットを示す情報などを含む。例えばユーザは、このログを分析することにより、データセットごとにプログラムの品質を評価することができる。
次に、PLC10のハードウェア構成の一例について、図4を参照しながら説明する。PLC10はプログラマブルロジックコントローラであるため、コンピュータの一種である。
PLC10は、バス1000を介して互いに接続された、プロセッサ1001と、メモリ1002と、インタフェース1003と、二次記憶装置1004と、を備える。
プロセッサ1001は、例えばCPU(Central Processing Unit:中央演算装置)である。プロセッサ1001が、二次記憶装置1004に記憶された動作プログラムをメモリ1002に読み込んで実行することにより、PLC10の各機能が実現される。なお、プロセッサ1001は、動作プログラムを実行するプロセッサとは別に、記憶部100に保存されたデータセットを読み込んで実行するプロセッサを含んでもよい。この場合、後者のプロセッサによりプログラム実行部104の機能が実現される。
メモリ1002は、例えば、RAM(Random Access Memory)により構成される主記憶装置である。メモリ1002は、プロセッサ1001が二次記憶装置1004から読み込んだ動作プログラムを記憶する。また、メモリ1002は、プロセッサ1001が動作プログラムを実行する際のワーキングメモリとして機能する。
インタフェース1003は、例えばシリアルポート、USB(Universal Serial Bus)ポート、ネットワークインタフェースなどのI/O(Input/Output)インタフェースである。インタフェース1003により通信部101の機能が実現される。
二次記憶装置1004は、例えば、フラッシュメモリ、HDD(Hard Disk Drive)、SSD(Solid State Drive)である。二次記憶装置1004は、プロセッサ1001が実行する動作プログラムを記憶する。二次記憶装置1004により記憶部100の機能が実現される。
次に、図5を参照しながら、PLC10によるバージョン管理の動作の一例を説明する。図5に示す動作は、例えばユーザが開発装置20を操作して、開発装置20がデータセットをPLC10に送信するために通信を開始した時点で実行される。
PLC10のユーザ認証部102は、開発装置20と通信し、開発装置20のユーザを認証する(ステップS101)。この動作により、データセットを送信したユーザが特定される。
ユーザが認証されると、開発装置20はPLC10にデータセットを送信し、PLC10の通信部101は、送信されたデータセットを受信する(ステップS102)。
PLC10のバージョン管理部103は、ユーザがマスタ領域Mにデータセットを適用しようとしているか否かを判定する(ステップS103)。
ユーザがマスタ領域Mにデータセットを適用しようとしていないとき(ステップS103:No)、バージョン管理部103は、ステップS102で受信したデータセットを、ステップS101で認証したユーザに対応したユーザ領域Uに保存する(ステップS104)。この動作において、当該保存されるデータセットの直近の親がマスタ領域Mにあるデータセットであるときには、当該保存されるデータセットはマスタ領域Mのデータセットから「分岐」したものとなる。そしてPLC10は、バージョン管理の動作を終了する。
ユーザがマスタ領域Mにデータセットを適用しようとしているとき(ステップS103:Yes)、バージョン管理部103は、適用しようとしているデータセットの大元の親のデータセットと、マスタ領域Mの最新のデータセットとが一致するかを判定する(ステップS105)。
適用しようとしているデータセットの大元の親のデータセットと、マスタ領域Mの最新のデータセットとが一致するとき(ステップS105:Yes)、バージョン管理部103は、適用しようとしているデータセットをマスタ領域Mに保存する(ステップS106)。そしてPLC10は、バージョン管理の動作を終了する。
適用しようとしているデータセットの大元の親のデータセットと、マスタ領域Mの最新のデータセットとが一致しないとき(ステップS105:No)、バージョン管理部103は、マスタ領域Mへのデータセットの適用を拒否する(ステップS107)。そしてPLC10は、バージョン管理の動作を終了する。
以上、実施の形態1に係るバージョン管理システム1を説明した。バージョン管理システム1のPLC10は、マスタ領域Mとユーザごとのユーザ領域Uとに分けてデータセットを保存してバージョン管理する。それにより、ユーザはプログラムの開発の際に、マスタ領域Mのデータセットと自身に対応するユーザ領域Uのデータセットのみに着目すればよく、複数人が開発する環境において容易にバージョン管理できる。
(実施の形態1の変形例)
実施の形態1において、図6に示すようにPLC10は外部システム30と通信可能に接続され、PLC10のバージョン管理部103が、記憶部100に保存されたデータセットを予め定められたタイミングで外部システム30に送信してバックアップをとるようにしてもよい。バックアップのタイミングは、データセットが新たに追加されるタイミングであってもよいし、定期的に行われるものであってもよい。
また、PLC10ではなく開発装置20が外部システム30と通信可能に接続され、開発装置20がPLC10の記憶部100に保存されたデータセットを読み出して外部装置30に送信することによりバックアップをとるものであってもよい。例えば、開発装置20はインターネットに接続可能だがPLC10はインターネットに接続可能でない場合に、この形態を採用することができる。
実施の形態1において、各ユーザは自身に対応するユーザ領域Uのデータセットにはアクセスできる一方で、他のユーザに対応するユーザ領域Uのデータセットにはアクセスできないものとした。ここで、単にアクセスできないものとするのみでなく、各ユーザ領域Uのデータセットを、各ユーザに対応する暗号化キーにより暗号化してもよい。
また、マスタ領域Mのデータセットを、PLC10に固有の暗号化キーにより暗号化してもよい。これにより、PLC10を所有していない者はマスタ領域Mのデータセットを復号できないため、マスタ領域Mに保存されたデータセットが何らかの理由により漏洩しても第三者がデータセットの内容を知ることを防ぐことができる。
実施の形態1において、ユーザは、マスタ領域Mの最新のデータセットと競合しない限り、任意のタイミングでユーザ領域Uのデータセットをマスタ領域Mに適用できる。一方、マスタ領域Mに全く適用しないままデータセットの更新が続くと、マスタ領域Mのデータセットの内容とユーザ領域Uのデータセットの内容との乖離が大きくなり、開発に支障がでるおそれがある。そのため、例えばバージョン管理部103は、ユーザ領域U内でデータセットの更新が一定回数以上続いた場合に、ユーザに警告を出してもよい。例えば、バージョン管理部103が通信部101を介して警告を示すデータを開発装置20に送信し、開発装置20が当該警告をユーザに報知する。
(実施の形態2)
以下、実施の形態2に係るバージョン管理システム1を説明する。実施の形態2に係るバージョン管理システム1の全体構成は、図1に示す実施の形態1のものと同様である。実施の形態2においては、開発装置20もデータセットのバージョン管理をする点が実施の形態1と異なる。
これにより、ユーザは、変更のたびに毎回PLC10にデータセットを送信する必要がなくなる。例えばユーザは、データセットを複数回変更し、変更作業が一通り完了してから、複数回の変更に対応する複数のデータセットをまとめてPLC10に送信してもよい。
例えば図2に示す例において、実施の形態1において、ユーザAはデータセットy1、y2、y3をそれぞれ毎回PLC10に送信することによりデータセットを更新していた。一方、実施の形態2において、ユーザAはデータセットx1を取得すればその後はPLC10と通信することなくデータセットy1、y2、y3についての変更作業をすることができ、データセットy1、y2、y3をまとめてPLC10に送信してデータセットy3をマスタ領域Mに適用することができる。
図7を参照しながら、実施の形態2に係る開発装置20の機能的構成を説明する。実施の形態2に係る開発装置20は、記憶部200と通信部201とデータセット作成部202とバージョン管理部203とを備える。
記憶部200は、後述のバージョン管理部203によるバージョン管理に基づいて、データセットを保存する。記憶部200は、マスタ領域Mとユーザ領域Uとを含む。ただし、PLC10の記憶部100と異なり、ユーザ領域Uは、開発装置20のユーザに対応する1つの領域のみとなる。
通信部201は、PLC10と通信する。後述のバージョン管理部203の制御に基づいて、通信部201は、開発装置20によりユーザが作成したデータセットをPLC10に送信し、PLC10から、記憶部100に保存されたデータセットを受信する。通信部201は、例えばネットワークインタフェースにより実現される。
データセット作成部202は、図示しない入力装置を介したユーザの操作に基づいて、PLC10にて実行されるプログラムと、当該プログラムに関連するデータとを作成する。つまりデータセット作成部202は、ユーザの操作に基づいてデータセットを作成する。データセット作成部202は、例えばソースコード、設定ファイル、ドキュメントなどを記述するためのエディタの機能を有する。
バージョン管理部203は、データセット作成部202が作成したデータセットを記憶部200のユーザ領域Uに保存してバージョン管理する。バージョン管理部203は、データセットを保存する際に、PLC10のバージョン管理部103と同様に、データセット本体のみでなくデータセットを個別に識別するメタデータと、保存対象となるデータセットの直近の親のデータセットを示すメタデータとを、データセット本体と対応付けて保存する。これにより、開発装置20内で、ユーザが作成したデータセットがバージョン管理されることとなる。
バージョン管理部203は、記憶部200のユーザ領域Uに保存されたデータセットのうち、PLC10にまだ送信されていない1以上のデータセットを、通信部201を介してPLC10にまとめて送信する。これにより、開発装置20にてユーザが行った変更作業の内容をPLC10に同期できる。
バージョン管理部203は、通信部201を介して、PLC10の記憶部100のマスタ領域Mに保存されたデータセットのうち記憶部200のマスタ領域Mに保存されていない1以上のデータセットを取得して記憶部200のマスタ領域Mに保存する。これにより、PLC10のマスタ領域Mの変更内容を開発装置20に同期できる。
ここで、実施の形態2に係るPLC10について、実施の形態1と異なる点を説明する。上述のとおり、実施の形態2に係る開発装置20は、複数のデータセットをPLC10に送信しうる。また、上述のとおり、実施の形態2に係る開発装置20は、PLC10からマスタ領域Mのデータセットを取得する。そのため、実施の形態2に係るバージョン管理部103もこれに対応する。実施の形態2に係るバージョン管理部103は、複数のデータセットを開発装置20からまとめて受信し、受信したデータセットをまとめて記憶部100のユーザ領域Uに保存する。実施の形態2に係るバージョン管理部103は、開発装置20の要求に応じて、マスタ領域Mの1以上のデータセットを開発装置20に送信する。
開発装置20のバージョン管理部203の機能及びPLC10のバージョン管理部103の機能により、PLC10と開発装置20とで個別にデータセットをバージョン管理しつつ、必要に応じてPLC10と開発装置20とで同期をとることができる。そのため、実施の形態2に係るバージョン管理システム1によれば、分散バージョン管理を実現できる。
以下、図面を参照しながら具体例を説明する。初めはPLC10の記憶部100にはデータセットx1のみが保存されて、開発装置20の記憶部200には何らデータセットが保存されていないものとする。
まず、ユーザの操作に基づいて、開発装置20のバージョン管理部203は、PLC10から記憶部100に保存されたデータセットx1を取得して記憶部200のマスタ領域Mに保存する。これにより、図8に示すように、開発装置20の記憶部200のマスタ領域Mにもデータセットx1が保存される。
次に、開発装置20のユーザがデータセットx1に対する変更作業を行う。これにより、開発装置20のデータセット作成部202が新たなデータセットを作成し、図9に示すように、バージョン管理部203が当該新たなデータセットを記憶部200のユーザ領域Uにデータセットy1として保存する。この時点ではPLC10と開発装置20とは通信していないため、PLC10の記憶部100には特に変化がない。
その後、ユーザが2回変更作業を行い、図10に示すように、データセットy2、y3が記憶部200のユーザ領域Uに保存される。この時点でも、PLC10の記憶部100には特に変化がない。
次に、ユーザの操作に基づいて、バージョン管理部203が、記憶部200のユーザ領域Uに保存されたデータセットy1、y2、y3をまとめてPLC10に送信する。PLC10のバージョン管理部103は、図11に示すように、受信したデータセットy1、y2、y3を、記憶部100のユーザ領域Uに保存する。この時点で初めて、開発装置20とPLC10とで同期をとることができる。
そしてユーザは、データセットy3をPLC10の記憶部100のマスタ領域Mに適用する操作を行うことにより、データセットy3と同内容のデータセットx2が記憶部100のマスタ領域Mに保存される。開発装置20のバージョン管理部203はこの後、PLC10から記憶部100のマスタ領域Mに保存されたデータセットx2を取得し、記憶部200のマスタ領域Mに保存する。これにより、図12に示すように、PLC10、開発装置20のいずれも、データセットx1、x2、y1、y2、y3をバージョン管理できることとなる。
なお、図2に示すデータセットz3、x2、z4及びx3に例示されるように、ユーザ領域Uのデータセットをマスタ領域Mに適用しようとするときに競合が発生してそのままでは適用できない場合がある。その場合には、まず、開発装置20のバージョン管理部203がPLC10から記憶部100のマスタ領域Mに保存されたデータセットを取得し、記憶部200のマスタ領域Mに保存する。次にユーザが、記憶部200のマスタ領域Mに保存されたデータセットに対してマージ作業を行い、データセット作成部202がデータセットを作成し、バージョン管理部203がデータセットを記憶部200のユーザ領域Uに保存する。そしてバージョン管理部203は、記憶部200のユーザ領域Uに保存された新たなデータセットをPLC10に送信し、PLC10のバージョン管理部103が受信したデータセットを記憶部100のユーザ領域Uに保存する。その後ユーザは、再度ユーザ領域Uのデータセットをマスタ領域Mに適用しようとすればよい。
PLC10のプログラム実行部104は、実施の形態1と同様に、記憶部100に保存されたデータセットに含まれるプログラムを実行する。そのため、ユーザは、バージョン管理の対象となっているソースコードと、PLC10で実行されるプログラムとの整合性を容易に管理することができる。
なお、実施の形態2に係る開発装置20のハードウェア構成は、図4に示すものと概ね同様のものとなる。これは、実施の形態1において説明したとおり、開発装置20は、例えばエンジニアリングツールのプログラムがインストールされたパーソナルコンピュータであるからである。
以上、実施の形態2に係るバージョン管理システム1を説明した。実施の形態2に係るバージョン管理システム1によれば、PLC10と開発装置20とで個別にデータセットをバージョン管理しつつ、必要に応じてPLC10と開発装置20とで同期をとることができる。そのため、実施の形態2に係るバージョン管理システム1によれば、分散バージョン管理を実現できる。また、実施の形態1と同様に、PLC10は記憶部100に保存されたデータセットに含まれるプログラムを実行するので、ユーザは、バージョン管理の対象となっているソースコードと、PLC10で実行されるプログラムとの整合性を容易に管理することができる。そのため、実施の形態2に係るバージョン管理システム1によれば、プログラム可能機器に関連するデータを容易に分散バージョン管理できる。
また、データセットをマスタ領域Mとユーザ領域Uとで分けて管理することにより、ユーザが作成したデータセットをマージしようとする際に、ユーザ領域Uのデータセットとマスタ領域Mのデータセットとを確認し、意志決定をした上でマージをすることとなる。そのため、データセットをマスタ領域Mとユーザ領域Uとで分けて管理することにより、マージの際にユーザに大きな負担を与えることなく自然と意志決定の機会が得られることとなり、意図せずにデータセットがマージされてしまう事態を回避することができる。例えば、デバッグが完了していないデータセットが意図せずマージされてしまうことを回避できる。
(実施の形態2の変形例)
実施の形態2は実施の形態1の変形であるため、実施の形態1と同様、ユーザは複数であるものとした。一方、実施の形態2において、ユーザが単数であったとしても、ユーザの開発装置20とPLC10とでデータセットを分散バージョン管理することは可能である。この場合、PLC10の記憶部100はマスタ領域Mと1つのユーザ領域Uとを有することとなる。また、PLC10は、ユーザ認証部102を必ずしも備える必要がなくなる。
また、実施の形態2において、マスタ領域Mとユーザ領域Uとに分けず1つの領域にてデータセットを管理する形態も考えられる。この形態において、複数のユーザが各開発装置20にてデータセットを作成し、作成したデータセットをPLC10に送信して更新する際の例を以下に説明する。
図13に示すように、ユーザA、ユーザBが、PLC10の記憶部100に保存されたデータセットx1を元に、各開発装置20にて開発を行う場合を考える。ユーザAはデータセットy1、y2、y3を作成し、ユーザBはデータセットz1、z2を作成する。次に、ユーザAがユーザBよりも先にデータセットの更新を行い、その後にユーザBがデータセットの更新を行うとする。この場合、図14に示すように、先にデータセットを更新したユーザAのデータセットy1、y2、y3はそのままPLC10の記憶部100に保存される。データセットx1、y1、y2、y3が保存されているラインはいわゆる「マスターライン」となる。そして、後にデータセットを更新したユーザBのデータセットz1、z2は、マスターラインから分岐する形でPLC10の記憶部100に保存される。このように、「早い者勝ち」でデータセットの更新を適用し、最先で更新されなかったデータセットについてはマスターラインから分岐する形で保存することにより、マスタ領域Mとユーザ領域Uとに分けることなく、複数のユーザによる分散バージョン管理を実現できる。なお、y3とz2とのマージについては実施の形態1、2と同様に可能である。
また、実施の形態2において、ユーザ領域Uに、マスタ領域Mに長期間マージされないデータセットが存在する場合、ユーザに警告メールを送信するようにしてもよい。警告メールは、例えばユーザ認証部102にてユーザを認証した際に、認証に利用した情報を元に当該ユーザにメールを送信してもよい。長期間マスタ領域Mにマージされないデータセットは、マスタ領域Mのデータセットと乖離が大きくなっている可能性が高いため、警告をすることが有用である。
(その他の変形例)
上述の各実施の形態では、PLC10がデータセットをバージョン管理した。一方、PLC以外の他のプログラム可能機器も、PLC10の各機能部と同様の機能部を備えることによりバージョン管理が可能となる。例えばモーションユニットで実行されるプログラムの開発において、モーションユニットがPLC10の各機能部と同様の機能部を備えることにより、モーションユニットで実行されるプログラムに関するデータセットをバージョン管理することができる。
図4に示すハードウェア構成においては、PLC10及び開発装置20が二次記憶装置1004を備えている。しかし、これに限らず、二次記憶装置1004をPLC10及び開発装置20の外部に設け、インタフェース1003を介してPLC10及び開発装置20と二次記憶装置1004とが接続される形態としてもよい。この形態においては、USBフラッシュドライブ、メモリカードなどのリムーバブルメディアも二次記憶装置1004として使用可能である。
また、図4に示すハードウェア構成に代えて、ASIC(Application Specific Integrated Circuit:特定用途向け集積回路)、FPGA(Field Programmable Gate Array)などを用いた専用回路によりPLC10及び開発装置20を構成してもよい。また、図4に示すハードウェア構成において、PLC10及び開発装置20の機能の一部を、例えばインタフェース1003に接続された専用回路により実現してもよい。
PLC10及び開発装置20で用いられるプログラムは、CD-ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)、USBフラッシュドライブ、メモリカード、HDD等のコンピュータ読み取り可能な記録媒体に格納して配布することが可能である。そして、かかるプログラムを特定の又は汎用のコンピュータにインストールすることによって、当該コンピュータをPLC10及び開発装置20として機能させることが可能である。
また、上述のプログラムをインターネット上の他のサーバが有する記憶装置に格納しておき、当該サーバから上述のプログラムがダウンロードされるようにしてもよい。
本開示は、本開示の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、本開示を説明するためのものであり、本開示の範囲を限定するものではない。つまり、本開示の範囲は、実施の形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の開示の意義の範囲内で施される様々な変形が、本開示の範囲内とみなされる。
1 バージョン管理システム、10 PLC、20 開発装置、30 外部システム、100 記憶部、101 通信部、102 ユーザ認証部、103 バージョン管理部、104 プログラム実行部、200 記憶部、201 通信部、202 データセット作成部、203 バージョン管理部、1000 バス、1001 プロセッサ、1002 メモリ、1003 インタフェース、1004 二次記憶装置、M マスタ領域、U ユーザ領域。

Claims (6)

  1. マスタ領域と、複数のユーザに対応する複数のユーザ領域とを含む記憶手段と
    前記複数のユーザのそれぞれのユーザを認証するユーザ認証手段と、
    前記ユーザ認証手段により認証されたユーザが作成した第1データセットを前記記憶手段に保存してバージョン管理するバージョン管理手段と、
    を備え、
    前記バージョン管理手段は、前記第1データセットを、前記記憶手段にすでに保存されている第2データセットであって前記第1データセットの直近の親となる第2データセットと対応付けて、前記マスタ領域または前記複数のユーザ領域のうち前記ユーザ認証手段により認証されたユーザに対応するユーザ領域に保存し、前記第2データセットが前記マスタ領域に保存されているとき、前記第1データセットを前記ユーザ認証手段により認証されたユーザに対応するユーザ領域に保存する、
    プログラム可能機器。
  2. 前記バージョン管理手段はさらに、前記記憶手段に保存された前記第1データセットを予め定められたタイミングで外部システムに送信して前記第1データセットをバックアップする、
    請求項1に記載のプログラム可能機器。
  3. 前記複数のユーザに対応する複数のユーザ領域のそれぞれのユーザ領域に保存されたデータセットは、該ユーザ領域に対応するユーザのみがアクセス可能である、
    請求項1に記載のプログラム可能機器。
  4. 請求項1からのいずれか1項に記載のプログラム可能機器と、
    前記複数のユーザに対応する複数の開発装置と、
    を備え、
    前記複数の開発装置のそれぞれの開発装置は、前記ユーザが作成した前記第1データセットを送信し、
    前記プログラム可能機器は、前記複数の開発装置のそれぞれの開発装置から前記第1データセットを受信する通信手段をさらに備える、
    バージョン管理システム。
  5. マスタ領域と、複数のユーザに対応する複数のユーザ領域とを含む記憶手段を備えるプログラム可能機器が実行するバージョン管理方法であって、
    前記複数のユーザのそれぞれのユーザを認証し、
    前記認証されたユーザが作成した第1データセットを、前記記憶手段にすでに保存されている第2データセットであって前記第1データセットの直近の親となる第2データセットと対応付けて、前記マスタ領域または前記複数のユーザ領域のうち前記認証されたユーザに対応するユーザ領域に保存し、前記第2データセットが前記マスタ領域に保存されているとき、前記第1データセットを前記認証されたユーザに対応するユーザ領域に保存してバージョン管理する、
    バージョン管理方法。
  6. マスタ領域と、複数のユーザに対応する複数のユーザ領域とを含む記憶手段を備えるコンピュータを、
    前記複数のユーザのそれぞれのユーザを認証するユーザ認証手段、
    前記ユーザ認証手段により認証されたユーザが作成した第1データセットを前記記憶手段に保存してバージョン管理するバージョン管理手段、
    として機能させ、
    前記バージョン管理手段は、前記第1データセットを、前記記憶手段にすでに保存されている第2データセットであって前記第1データセットの直近の親となる第2データセットと対応付けて、前記マスタ領域または前記複数のユーザ領域のうち前記ユーザ認証手段により認証されたユーザに対応するユーザ領域に保存し、前記第2データセットが前記マスタ領域に保存されているとき、前記第1データセットを前記ユーザ認証手段により認証されたユーザに対応するユーザ領域に保存する、
    プログラム。
JP2023576431A 2023-06-20 2023-06-20 プログラム可能機器、バージョン管理システム、バージョン管理方法及びプログラム Active JP7462860B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2023022705 2023-06-20

Publications (1)

Publication Number Publication Date
JP7462860B1 true JP7462860B1 (ja) 2024-04-05

Family

ID=90526550

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023576431A Active JP7462860B1 (ja) 2023-06-20 2023-06-20 プログラム可能機器、バージョン管理システム、バージョン管理方法及びプログラム

Country Status (1)

Country Link
JP (1) JP7462860B1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022135464A (ja) 2021-03-05 2022-09-15 オムロン株式会社 制御装置、ならびに制御装置の記憶部に保存されたデータの入出力を管理するプログラムおよび方法
WO2022259374A1 (ja) 2021-06-08 2022-12-15 三菱電機株式会社 プログラマブルロジックコントローラ、端末装置、プログラム管理システム、プログラム管理方法及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022135464A (ja) 2021-03-05 2022-09-15 オムロン株式会社 制御装置、ならびに制御装置の記憶部に保存されたデータの入出力を管理するプログラムおよび方法
WO2022259374A1 (ja) 2021-06-08 2022-12-15 三菱電機株式会社 プログラマブルロジックコントローラ、端末装置、プログラム管理システム、プログラム管理方法及びプログラム

Similar Documents

Publication Publication Date Title
AU2016264496B2 (en) Custom communication channels for application deployment
JP7162677B2 (ja) 特に適合性追跡用の、データを供給するためのコンピュータ実装方法
US11334408B2 (en) Big data distributed processing and secure data transferring with fault handling
JPWO2014199464A1 (ja) 開発環境システム、開発環境装置、開発環境提供方法及びプログラム
US9239717B1 (en) Systems, methods, and computer medium to enhance redeployment of web applications after initial deployment
US20190384594A1 (en) Management method, management apparatus, and program
BR112019025269A2 (pt) microprocessador incluindo um modelo corporativo
US20180052683A1 (en) System design supporting device, system design supporting method, and system design supporting program
WO2024002102A1 (zh) 一种数据资产主动管理系统、计算设备及存储介质
WO2024002103A1 (zh) 一种数据资产的管理方法及数据资产主动管理系统
WO2024002105A1 (zh) 一种数据资产的使用控制方法、客户端及中间服务平台
CN107918564B (zh) 数据传输异常处理方法、装置、电子设备及存储介质
US11363029B2 (en) Big data distributed processing and secure data transferring with hyper fencing
US8863304B1 (en) Method and apparatus for remediating backup data to control access to sensitive data
Finn et al. Windows Server 2012 Hyper-V Installation and Configuration Guide
JP2020197873A (ja) 情報処理システム、及び情報処理システムの制御方法
JP2024501401A (ja) 非集中型のブロードキャスト暗号化および鍵生成ファシリティ
JP7462860B1 (ja) プログラム可能機器、バージョン管理システム、バージョン管理方法及びプログラム
WO2020195348A1 (ja) 制御システム、セキュリティ装置および方法
CN106471510A (zh) 复合文档访问
US20170351666A1 (en) Secure hyper transfer of large files
US20150278027A1 (en) Backup apparatus, backup method, and storage medium that stores backup program
WO2022126372A1 (zh) 多服务多环境管理方法及系统
US20210209235A1 (en) Big Data Distributed Processing and Secure Data Transferring with Resource Allocation and Rebate
US20220317649A1 (en) Control system, control device, and management method

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231212

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231212

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20231212

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: 20240227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240326

R150 Certificate of patent or registration of utility model

Ref document number: 7462860

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150