IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アズビル株式会社の特許一覧

特開2022-174856プログラム開発装置及びプログラム開発システム
<>
  • 特開-プログラム開発装置及びプログラム開発システム 図1
  • 特開-プログラム開発装置及びプログラム開発システム 図2
  • 特開-プログラム開発装置及びプログラム開発システム 図3
  • 特開-プログラム開発装置及びプログラム開発システム 図4
  • 特開-プログラム開発装置及びプログラム開発システム 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022174856
(43)【公開日】2022-11-25
(54)【発明の名称】プログラム開発装置及びプログラム開発システム
(51)【国際特許分類】
   G06F 11/36 20060101AFI20221117BHJP
   G06F 8/30 20180101ALI20221117BHJP
【FI】
G06F11/36 164
G06F8/30
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2021080862
(22)【出願日】2021-05-12
(71)【出願人】
【識別番号】000006666
【氏名又は名称】アズビル株式会社
(74)【代理人】
【識別番号】110003166
【氏名又は名称】弁理士法人山王内外特許事務所
(72)【発明者】
【氏名】新海 庸平
【テーマコード(参考)】
5B042
5B376
【Fターム(参考)】
5B042HH07
5B042HH17
5B042HH39
5B376AA25
5B376AA32
5B376BC07
5B376BC70
(57)【要約】
【課題】 デバッグ対象のプログラムを修正する度にコントローラへインストールすることなく、実運用時と同等の環境でデバッグ可能とする。
【解決手段】プログラム開発装置3は、デバッグ対象のプログラムがインストールされるコントローラ2と通信可能に接続された仮想環境33を備え、仮想環境33は、コントローラ2にインストールされる前のデバッグ対象のプログラムを参照するプログラム参照部331と、コントローラ2がデバッグ対象のプログラムを実行する際に使用する実データをコントローラ2から取得するデータ取得部332と、データ取得部332により取得された実データを用いて、プログラム参照部331により参照されたデバッグ対象のプログラムを実行するプログラム実行部333と、を有する。
【選択図】図1
【特許請求の範囲】
【請求項1】
デバッグ対象のプログラムがインストールされるコントローラと通信可能に接続された仮想環境を備え、
前記仮想環境は、
前記コントローラにインストールされる前のデバッグ対象のプログラムを参照するプログラム参照部と、
前記コントローラがデバッグ対象のプログラムを実行する際に使用する実データを当該コントローラから取得するデータ取得部と、
前記データ取得部により取得された実データを用いて、前記プログラム参照部により参照されたデバッグ対象のプログラムを実行するプログラム実行部と、を有する
ことを特徴とするプログラム開発装置。
【請求項2】
前記デバッグ対象のプログラムは、監視システムにより標準的に提供される標準機能以外の特定の機能を記述したプログラムであることを特徴とする請求項1記載のプログラム開発装置。
【請求項3】
前記デバッグ対象のプログラムを作成するプログラム作成部を有し、
前記プログラム参照部は、前記プログラム作成部により作成された、前記コントローラにインストールされる前のプログラムを参照することを特徴とする請求項1又は請求項2に記載のプログラム開発装置。
【請求項4】
前記コントローラに構築されているコントローラ側仮想環境の構成情報を取得し、当該取得した構成情報に基づいて前記仮想環境を構築するプラットフォームを有することを特徴とする請求項1から請求項3のうちいずれか1項に記載のプログラム開発装置。
【請求項5】
前記プログラム実行部により実行されているプログラムの実行経過を取得して表示部に表示させる表示制御部を有することを特徴とする請求項1から請求項4のうちいずれか1項に記載のプログラム開発装置。
【請求項6】
コントローラとプログラム開発装置とを含んで構成されるプログラム開発システムであって、
前記プログラム開発装置は、デバッグ対象のプログラムがインストールされる前記コントローラと通信可能に接続された仮想環境を備え、
前記仮想環境は、
前記コントローラにインストールされる前のデバッグ対象のプログラムを参照するプログラム参照部と、
前記コントローラがデバッグ対象のプログラムを実行する際に使用する実データを当該コントローラから取得するデータ取得部と、
前記データ取得部により取得された実データを用いて、前記プログラム参照部により参照されたデバッグ対象のプログラムを実行するプログラム実行部と、を有する
ことを特徴とするプログラム開発システム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、プログラム開発装置及びプログラム開発システムに関する。
【背景技術】
【0002】
一般に、コントローラには、種々の機能を実現するために作成されたプログラムがインストールされる。コントローラでは、インストールされたプログラムが実行されることにより、当該プログラムの記述内容に沿った機能が実現される。
【0003】
このようなプログラムは、エンジニアがプログラム開発機能を有する装置を用いて作成する。エンジニアは、作成したプログラムの動作確認を行うために、作成したプログラムを実際にコントローラへインストールし、当該プログラムがコントローラで正常に動作するかを確認する。そして、当該プログラムにバグ(不良)が見つかった場合、エンジニアは当該プログラムからバグを取り除く修正(デバッグ)を行い、修正したプログラムを再度コントローラにインストールして動作確認を行う。
【0004】
エンジニアは、プログラムの動作確認を行い、バグがあればプログラムを修正し、修正したプログラムをコントローラへインストールして再び動作確認を行うといった作業(以下、プログラムの動作確認及びデバッグを併せてデバッグという)を、プログラムの作成が完了するまで繰り返し行う必要がある。このようなデバッグはきわめて煩雑であり、プログラム開発における生産性が低くなる要因となっていた。
【0005】
このような問題を解決する可能性がある技術として、例えば特許文献1がある。特許文献1では、デバッグ対象である組み込みプログラムのデバッグを行うために、当該組み込みプログラムが組み込まれる実機(上述のコントローラに相当)の環境に似た疑似的な環境を用意する手法が開示されている。
【0006】
具体的には、特許文献1のプログラム開発キットは、実機のデバイスドライバに代えて疑似デバイスドライバを備え、実機のエンジン制御プログラムに代えてエミュレータを備えている。組み込みプログラムは、本来は実機に搭載されたエンジン制御プログラムとコマンドの送受信をするが、特許文献1のプログラム開発キットでは、組み込みプログラムは疑似デバイスドライバを経由して、エミュレータとコマンドの送受信をする。これにより、組み込みプログラムを実機にインストールすることなく、実機と同様の環境で組込プログラムのデバッグを行っている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2008-217574
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献1では、疑似デバイスドライバ及びエミュレータを用いて、実機の環境に似た疑似的な環境を用意することはできるが、デバッグ対象のプログラムを実運用時と同等の環境でデバッグすることは困難であった。
【0009】
この発明は、上記のような課題を解決するためになされたもので、デバッグ対象のプログラムを修正する度にコントローラへインストールすることなく、実運用時と同等の環境でデバッグ可能なプログラム開発装置を提供することを目的とする。
【課題を解決するための手段】
【0010】
この発明に係るプログラム開発装置は、デバッグ対象のプログラムがインストールされるコントローラと通信可能に接続された仮想環境を備え、仮想環境は、コントローラにインストールされる前のデバッグ対象のプログラムを参照するプログラム参照部と、コントローラがデバッグ対象のプログラムを実行する際に使用する実データを当該コントローラから取得するデータ取得部と、データ取得部により取得された実データを用いて、プログラム参照部により参照されたデバッグ対象のプログラムを実行するプログラム実行部と、を有することを特徴とする。
【発明の効果】
【0011】
この発明によれば、上記のように構成したので、デバッグ対象のプログラムを修正する度にコントローラへインストールすることなく、実運用時と同等の環境でデバッグ可能となる。
【図面の簡単な説明】
【0012】
図1】実施の形態1に係るプログラム開発装置を含むプログラム開発システムの構成例を示す図である。
図2】実施の形態1に係るプログラム開発装置による制御プログラムの開発手順を示すフローチャートである。
図3】実施の形態1におけるプログラム管理画面の一例を示す図である。
図4】実施の形態1における制御プログラムの実行経過の表示例を示す図である。
図5】実施の形態1に係るプログラム開発装置において仮想環境を構築する手順を説明する図である。
【発明を実施するための形態】
【0013】
以下、この発明の実施の形態について図面を参照しながら詳細に説明する。
実施の形態1.
図1は実施の形態1に係るプログラム開発装置を含むプログラム開発システムの構成例を示す図である。
【0014】
プログラム開発システムは、図1に示すように、コントローラ2及びプログラム開発装置3を備えている。プログラム開発装置3は、通信線を介してコントローラ2に接続されている。
【0015】
プログラム開発装置3は、コントローラ2にインストールされるプログラムのひとつである制御プログラム(図1の符号233)を開発するための装置である。なお、以下では説明を分かりやすくするため、まず制御プログラム233の概要を含むコントローラ2の構成例について説明し、次にプログラム開発装置3の構成例について説明する。また、以下では、コントローラ2が、監視システムを構成するコントローラである場合を例に説明する。
【0016】
(コントローラ2)
コントローラ2は、監視システムにおいて監視の対象となる機器(以下、監視ポイントという)の監視を行う。監視ポイントは、例えば温度センサ及び湿度センサなどの各種センサ、空調機器、並びに照明機器等で構成される。監視ポイントは、通信線を介してコントローラ2に接続されているが、図1では表示を省略している。
【0017】
コントローラ2には、オペレーティングシステム(OS)として、例えばLinux(登録商標)が搭載されている。そして、コントローラ2には、図1に示すように、オペレーティングシステム上に2つの環境(実行環境21及び仮想環境23)が構築されている。
【0018】
実行環境21は、コントローラ2のメインフレームワーク211と、標準機能プログラム213とを含んで構成されている。
【0019】
コントローラ2のメインフレームワーク211(以下、単にメインフレームワーク211という)は、オペレーティングシステム上で動作し、標準機能プログラム213を動作(実行)させるための土台として機能するソフトウェアである。
【0020】
標準機能プログラム213は、監視システムが導入される建物の多くで使用される機能(以下、標準機能という)を実現するためのプログラムである。標準機能の例としては、例えばスケジュール制御機能、最適起動停止制御機能、及び電力デマンド制御機能がある。なお、これらの各機能は既知のため、詳しい説明は省略する。
【0021】
仮想環境23は、仮想化技術の1つであるDockerを用いてコントローラ2に構築された、制御プログラム233を実行するための仮想的な実行環境である。Dockerでは、コンテナ型仮想化と呼ばれる仕組みで仮想化を実現している。図1の例では、仮想環境23がコンテナに相当し、この仮想環境23で制御プログラム233が実行される。
【0022】
制御プログラム233は、例えば監視システムが導入される建物のうち特定の建物で要求される機能であって、コントローラ2が標準機能プログラム213を実行するだけでは実現困難な機能を記述したプログラムである。このような制御プログラム233は、標準機能プログラム213とは別に作成され、コントローラ2に追加的にインストールされる。制御プログラム233のプログラム言語は、例えばPythonである。
【0023】
制御プログラム233は、例えばあらかじめ設定されたスケジュールに従って実行される。また、制御プログラム233は、標準機能プログラム213とも連携して動作可能であり、標準機能プログラム213の動作結果を受けて実行される場合もある。なお、図1の例では、制御プログラム233が1つである場合を示しているが、制御プログラム233は複数あってもよい。
【0024】
なお、Dockerでは、仮想環境ごとに利用可能なリソース(例えばCPU及びメモリ)を制限することができる。そして、実施の形態1でも、仮想環境23で利用可能なリソース(例えばCPU及びメモリ)が、コントローラ2が備えるリソースのうちの一部に制限されている。例えば、仮想環境23で利用可能なCPU(仮想CPU)の使用率、及び、仮想環境23で利用可能なメモリ(仮想メモリ)の使用量が、所定の使用率及び所定の使用量にそれぞれ制限されている。これにより、コントローラ2では、仮想環境23において制御プログラム233が異常な状態になったり、制御プログラム233の負荷が高くなった場合でも、標準機能プログラム213に影響を及ぼすことなく、標準機能プログラム213の処理を継続することができる。
【0025】
(プログラム開発装置3)
プログラム開発装置3は、コントローラ2にインストールされる制御プログラム233を開発するための装置である。ここでは、プログラム開発装置3によるデバッグ対象のプログラムが制御プログラム233である。
【0026】
プログラム開発装置3には、図1に示すように、例えばWindows(登録商標)などのオペレーティングシステム(OS)30が搭載されている。そして、プログラム開発装置3では、OS30上に、制御プログラム233を開発するための統合開発環境31が構築されている。
【0027】
また、プログラム開発装置3では、仮想環境のプラットフォーム32がOS30上で動作する。仮想環境のプラットフォーム32は、仮想環境33を提供するためのソフトウェアであり、この仮想環境のプラットフォーム32上に仮想環境33が構築されている。
【0028】
(統合開発環境31)
統合開発環境31は、図1に示すように、プログラム作成部311及び表示制御部312を含んで構成されている。
【0029】
プログラム作成部311は、例えばキーボード等の入力装置(不図示)を介したエンジニアの入力操作に応じて、制御プログラム233を作成(編集)する。ここでは、プログラム作成部311により作成された制御プログラム233が、後述のプログラム実行部333により実行されるデバッグ対象のプログラムとなる。
【0030】
表示制御部312は、後述のプログラム実行部333により実行されている制御プログラム233の実行経過を取得し、取得した実行経過をモニタ等の表示部(不図示)に表示させる。表示部はプログラム開発装置3が備えるものでもよいし、プログラム開発装置3の外部に備えられたものでもよい。
【0031】
統合開発環境31、及び統合開発環境31に含まれるプログラム作成部311並びに表示制御部312の各部の機能は、例えばプログラム開発装置3が備える不図示のCPU(Central Processing Unit)が、不図示のメモリに展開された統合開発環境ソフトウェアを実行することにより実現される。
【0032】
(仮想環境33)
仮想環境33は、コントローラ2の仮想環境23と同等の環境であり、仮想環境のプラットフォーム32上に構築されている。仮想環境のプラットフォーム32は、制御プログラム233を実行するための仮想的な実行環境(仮想環境33)を提供するソフトウェアである。具体的には、仮想環境のプラットフォーム32は、コントローラ2に構築されている仮想環境23(コントローラ側仮想環境)の構成情報(Dockerイメージ)を読み込み、読み込んだ構成情報に基づいて仮想環境33を構築する。ここで構築される仮想環境33は、後述するプログラム参照部331及びデータ取得部332を除き、コントローラ2の仮想環境23と同等の環境である。また、仮想環境33は、デバッグ対象のプログラムである制御プログラム233がインストールされるコントローラ2と通信可能に接続されている。なお、仮想環境のプラットフォーム32による仮想環境33の構築処理の詳細については後述する。
【0033】
仮想環境33は、図1に示すように、プログラム参照部331と、データ取得部332と、プログラム実行部333とを含んで構成されている。
【0034】
プログラム参照部331は、デバッグ対象のプログラムである制御プログラム233を参照する。ここで参照される制御プログラム233は、コントローラ2にインストールされる前の制御プログラムであり、プログラム開発装置3に保存されている制御プログラムである。例えば、プログラム参照部331には、制御プログラム233の保存場所に関する情報がエンジニアから事前に与えられており、プログラム参照部331はこの保存場所に関する情報に基づいて制御プログラム233を参照する。
【0035】
データ取得部332は、コントローラ2が実際の運用時に使用する実データをコントローラ2から取得する。具体的には、データ取得部332は、コントローラ2が実際に制御プログラム233を実行する際に使用する実データをコントローラ2から取得する。
【0036】
プログラム実行部333は、データ取得部332により取得された実データを用いて、プログラム参照部331により参照された制御プログラム233を実行する。プログラム実行部333による制御プログラム233の実行経過は、表示制御部312により表示部に表示される。実行経過の表示例については後述する。
【0037】
次に、プログラム開発装置3による制御プログラム233の開発手順について、図2を参照しながら説明する。図2は、プログラム開発装置3による制御プログラム233の開発手順を示すフローチャートである。なお、図2のフローチャートに示す処理を開始する前に、コントローラ2ではあらかじめ実行環境21及び仮想環境23が構築されているものとする。
【0038】
まず、プログラム開発装置3は、エンジニアの入力操作に応じて、統合開発環境31において制御プログラム233を作成する(ステップST201)。具体的には、プログラム開発装置3は、表示制御部312がエンジニアからの指示に応じてプログラム管理画面を表示部に表示させ、操作受付部(不図示)がこのプログラム管理画面を介してエンジニアからキーボード等の入力装置の操作を受け付ける。プログラム作成部311は、操作受付部で受け付けたエンジニアの入力操作に応じて制御プログラム233を作成(編集)する。
【0039】
図3は、表示部に表示されるプログラム管理画面の一例を示す図である。プログラム管理画面は、主に3つの領域(プログラム作成領域350、プログラム選択領域360、及び入出力領域370)で構成されている。
【0040】
プログラム作成領域350は、制御プログラム233の作成(編集)及び動作確認を行うための領域であり、このプログラム作成領域350に実際の制御プログラム233のコードが表示される。プログラム作成部311は、プログラム作成領域350に、エンジニアの入力操作に応じて、制御プログラム233のコードを表示する。プログラム作成領域350で作成された制御プログラム233は、所定のファイル形式を有するファイルとして、HDD(Hard Disk Drive)などの保存装置(不図示)に保存することができる。制御プログラム233の保存場所に関する情報は、エンジニアによりプログラム参照部331に与えられる。
【0041】
なお、プログラム作成部311は、エンジニアの指示に応じて、プログラム作成領域350にブレークポイント351を設定することができる。ブレークポイント351は、制御プログラム233のデバッグ中に動作を一時的に止めたい箇所(行)に設定されるもので、エンジニアにより任意に設定される。例えば図3では、ブレークポイント351は制御プログラム233の6行目及び26行目に設定されている。
【0042】
プログラム選択領域360は、保存された制御プログラム233のファイルを選択するための領域である。表示制御部312は、プログラム開発装置3のフォルダ構成をプログラム選択領域360に階層的に表示する。エンジニアは、プログラム選択領域360に表示されたフォルダ構成から、デバッグ対象の制御プログラム233のファイルを選択する。操作受付部がエンジニアによる選択操作を受け付けると、表示制御部312は、操作受付部により受け付けられたファイルに保存されている制御プログラム233を読み出してプログラム作成領域350に表示させる。
【0043】
なお、入出力領域370は、制御プログラム233のデバッグ中に、制御プログラム233で使用されている引数の値の入力を受け付けたり、制御プログラム233の実行結果を出力するために使用される領域である。操作受付部は、入出力領域370を介して、エンジニアから制御プログラム233で使用されている引数の値の入力を受け付ける。また、表示制御部312は、入出力領域370に制御プログラム233の実行結果を出力する。
【0044】
次に、エンジニアは、統合開発環境31において、制御プログラム233を実行するための仮想環境33を構築する(ステップST202)。この仮想環境33の構築手順については後述する。
【0045】
次に、プログラム開発装置3は、エンジニアの入力操作に応じて、制御プログラム233を識別するための識別子(例えばプログラムID)をコントローラ2に登録する(ステップST203)。この識別子の登録は、処理が次のステップST204に遷移する前に一度だけ行えばよく、この識別子の登録作業が制御プログラム233のインストールに相当する。
【0046】
次に、プログラム開発装置3は、エンジニアの指示に応じて、制御プログラム233の実行開始を指示する信号をコントローラ2から出力させる(ステップST204)。コントローラ2では、どの制御プログラム233に対して実行開始を指示するかは、ステップST203で登録された制御プログラム233の識別子により識別可能である。
【0047】
プログラム開発装置3は、制御プログラム233の実行開始を指示する信号をコントローラ2から受信すると、プログラム参照部331が、デバッグ対象のプログラムである制御プログラム233を参照する(ステップST205)。また、データ取得部332が、コントローラ2が実際の運用時に使用する実データをコントローラ2から取得する(ステップST206)。そして、プログラム実行部333は、データ取得部332により取得された実データを用いて、プログラム参照部331により参照された制御プログラム233を実行する(ステップST207)。このとき、制御プログラム233の実行経過は、表示制御部312により表示部に表示される。
【0048】
次に、エンジニアは、表示制御部312により表示部に表示される実行経過を確認することにより、制御プログラム233の動作を確認する(ステップST208)。具体的には、エンジニアは、上述のプログラム管理画面のプログラム作成領域350及び入出力領域370に表示される実行経過を確認することにより、制御プログラム233の動作を確認する。この場合の実行経過の表示例を図4に示す。
【0049】
表示制御部312は、図4に示すように、制御プログラム233のコードをプログラム作成領域350に表示する。このとき、表示制御部312は、符号352に示すように、現在実行されている制御プログラム233の行をハイライト表示させる。プログラムの実行に伴い、このハイライト表示される行は遷移していくが、ブレークポイント351が設定されていれば、プログラム実行部333は制御プログラム233の実行をその行で一時的に停止させる。これに伴い、表示制御部312もハイライト表示の遷移を一時的に停止させる。また、操作受付部は、エンジニアの入力操作に応じて、制御プログラム233で使用されている引数の値を入出力領域370を介して受け付け、プログラム実行部333は、受け付けた引数の値を用いて制御プログラム233を実行する。また、表示制御部312は、制御プログラム233の最終的な実行結果を入出力領域370に出力し、エンジニアはこの実行結果を確認する。なお、図4では、引数「Count」(鶴と亀の合計数)に10、引数「Legs」(鶴と亀の脚の合計数)に30がそれぞれ設定され、制御プログラム233の実行結果として「Crane:5 Turtle:5」(鶴の数と亀の数)が表示されている。
【0050】
次に、プログラム開発装置3は、エンジニアから制御プログラム233の修正が必要との指示を受け付けたかを確認する(ステップST209)。修正指示を受け付けていなければ(ステップST209;No)、プログラム開発装置3は制御プログラム233の作成を完了し、処理を終了する。なお、作成が完了した制御プログラム233は、実際にコントローラ2にインストールされ、コントローラ2の仮想環境23で実行される。
【0051】
修正指示を受け付けていれば(ステップST209;Yes)、プログラム開発装置3はエンジニアの指示に応じて制御プログラム233の動作を停止させ、仮想環境33とコントローラ2との接続を切断する(ステップST210)。そして、プログラム作成部311は、エンジニアの入力操作に応じて、統合開発環境31において制御プログラム233の修正を行う(ステップST211)。その後、処理はステップST204へ戻り、以下、制御プログラム233の作成が完了するまで、ステップST204からステップST211を繰り返す。
【0052】
このように、エンジニアは、制御プログラム233の実行経過を1行ずつ(1ステップずつ)確認することができる。また、エンジニアは、ブレークポイント351を設定することにより、動作中の制御プログラム233を所望の箇所(行)で一時的に停止させることもできる。これにより、制御プログラム233の生産性及び品質の向上を図ることができる。
【0053】
最後に、プログラム開発装置3において仮想環境33を構築する手順を説明する。図5は、仮想環境33を構築する手順を説明する図である。まず、エンジニアは、符号(1)に示すように、コントローラ2に構築されている仮想環境23のDockerイメージ(構成情報)を作成する。Dockerイメージは、仮想環境23(コンテナ)の構成情報を1つのファイルに書き出したものである。このDockerイメージの作成は、例えばエンジニアがプログラム開発装置3からコントローラ2に接続し、コントローラ2でDockerのsaveコマンドを実行して行えばよい。
【0054】
次に、エンジニアは、符号(2)に示すように、作成したDockerイメージをプログラム開発装置3にコピーする。次に、エンジニアは、コピーしたDockerイメージの読み込みをプログラム開発装置3に指示する。例えば、エンジニアは、プログラム管理画面の入出力領域370に表示されるコマンドプロンプトでDockerのloadコマンドを実行することにより、Dockerイメージの読み込みを指示する。このコマンドの実行を受けて、仮想環境のプラットフォーム32は、コピーされたDockerイメージの読み込みを行う。次に、エンジニアは、統合開発環境31を仮想環境のプラットフォーム32に接続し、統合開発環境31から仮想環境33の構築を指示する。この指示を受けて、仮想環境のプラットフォーム32は、読み込んだDockerイメージに基づいて仮想環境33を構築する。こうしてプログラム開発装置3では、仮想環境のプラットフォーム32上に、コントローラ2に構築されている仮想環境23と同等の環境である仮想環境33が構築される。したがって、エンジニアは、制御プログラム233を修正する度にコントローラ2にインストールせずとも、あたかもコントローラ2の仮想環境23で実行されているかのように制御プログラム233を動作させることができる。また、これに加えて、仮想環境33では、コントローラ2が実運用時に使用する実データを用いて制御プログラム233のデバッグを行うことができるため、エンジニアは実運用時により近い環境での制御プログラム233のデバッグが可能となる。
【0055】
以上のように、実施の形態1によれば、プログラム開発装置3は、デバッグ対象のプログラムがインストールされるコントローラ2と通信可能に接続された仮想環境33を備え、仮想環境33は、コントローラ2にインストールされる前のデバッグ対象のプログラムを参照するプログラム参照部331と、コントローラ2がデバッグ対象のプログラムを実行する際に使用する実データをコントローラ2から取得するデータ取得部332と、データ取得部332により取得された実データを用いて、プログラム参照部331により参照されたデバッグ対象のプログラムを実行するプログラム実行部333と、を有する。これにより、プログラム開発装置3では、デバッグ対象のプログラムを修正する度にコントローラ2へインストールすることなく、実運用時と同等の環境でデバッグ可能となる。
【0056】
また、デバッグ対象のプログラムは、監視システムにより標準的に提供される標準機能以外の特定の機能を記述した制御プログラム233である。これにより、プログラム開発装置3では、制御プログラム233をデバッグ対象のプログラムとすることができ、制御プログラム233の生産性及び品質の向上を図ることができる。
【0057】
また、プログラム開発装置3は、デバッグ対象のプログラムを作成するプログラム作成部311を有し、プログラム参照部331は、プログラム作成部311により作成された、コントローラ2にインストールされる前のプログラムを参照する。これにより、プログラム開発装置3では、デバッグ対象のプログラムを自機で作成し、デバッグすることができる。
【0058】
また、プログラム開発装置3は、コントローラ2に構築されている仮想環境23(コントローラ側仮想環境)の構成情報を取得し、当該取得した構成情報に基づいて仮想環境33を構築する仮想環境のプラットフォーム32を有する。これにより、プログラム開発装置3では、コントローラ2に構築されている仮想環境23(コントローラ側仮想環境)と同等の環境を仮想環境33として構築することができる。
【0059】
また、プログラム開発装置3は、プログラム実行部333により実行されているプログラムの実行経過を取得して表示部に表示させる表示制御部312を有する。これにより、エンジニアは、プログラムの実行経過を表示部を介して容易に確認することができる。
【0060】
また、実施の形態1によれば、プログラム開発システムは、コントローラ2とプログラム開発装置3とを含んで構成され、プログラム開発装置3は、デバッグ対象のプログラムがインストールされるコントローラ2と通信可能に接続された仮想環境33を備える。仮想環境33は、コントローラ2にインストールされる前のデバッグ対象のプログラムを参照するプログラム参照部331と、コントローラ2がデバッグ対象のプログラムを実行する際に使用する実データをコントローラ2から取得するデータ取得部332と、データ取得部332により取得された実データを用いて、プログラム参照部331により参照されたデバッグ対象のプログラムを実行するプログラム実行部333とを有する。これにより、プログラム開発システムでは、デバッグ対象のプログラムを修正する度にコントローラ2へインストールすることなく、実運用時と同等の環境でデバッグ可能となる。
【0061】
なお、本願発明はその発明の範囲内において、実施の形態の任意の構成要素の変形、若しくは実施の形態において任意の構成要素の省略が可能である。例えば、上記の説明では、コントローラ2のオペレーティングシステム(OS)としてLinux(登録商標)が搭載され、制御プログラム233のプログラム言語がPythonであり、仮想環境23を構築するための仮想化技術としてDocker(コンテナ型仮想化)が使用されている例を説明したが、これらはあくまで一例であって、ここで例示した構成に限られない。
【符号の説明】
【0062】
2 コントローラ
3 プログラム開発装置
21 実行環境
23 仮想環境(コントローラ側仮想環境)
30 OS
31 統合開発環境
32 仮想環境のプラットフォーム
33 仮想環境
211 メインフレームワーク
213 標準機能プログラム
233 制御プログラム(デバッグ対象のプログラム)
311 プログラム作成部
312 表示制御部
331 プログラム参照部
332 データ取得部
333 プログラム実行部
350 プログラム作成領域
351 ブレークポイント
352 ハイライト表示
360 プログラム選択領域
370 入出力領域
図1
図2
図3
図4
図5