JP2018151936A - プログラム作成装置およびプログラム - Google Patents

プログラム作成装置およびプログラム Download PDF

Info

Publication number
JP2018151936A
JP2018151936A JP2017048515A JP2017048515A JP2018151936A JP 2018151936 A JP2018151936 A JP 2018151936A JP 2017048515 A JP2017048515 A JP 2017048515A JP 2017048515 A JP2017048515 A JP 2017048515A JP 2018151936 A JP2018151936 A JP 2018151936A
Authority
JP
Japan
Prior art keywords
program
components
dependency
compiled
unit
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.)
Granted
Application number
JP2017048515A
Other languages
English (en)
Other versions
JP6812861B2 (ja
Inventor
大輔 ▲高▼橋
大輔 ▲高▼橋
Daisuke Takahashi
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 JP2017048515A priority Critical patent/JP6812861B2/ja
Priority to EP17192151.3A priority patent/EP3376370B1/en
Publication of JP2018151936A publication Critical patent/JP2018151936A/ja
Application granted granted Critical
Publication of JP6812861B2 publication Critical patent/JP6812861B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Programmable Controllers (AREA)

Abstract

【課題】コンパイルの所要時間を短縮する。【解決手段】HMIプログラムは、複数の構成要素を含み、プログラム作成装置のコンパイラ部(212)は、複数の構成要素のうちから、コンパイルされるべき対象となる1つ以上の構成要素を検出する対象検出部と、各構成要素に、当該構成要素の変更内容と、当該変更の影響が及ぶ依存関係を有した他の構成要素とを関連付けた関連付け情報を格納するための記憶部と、を含む。対象検出部は、1つ以上の構成要素の変更がなされたとき、複数の構成要素のうちから当該変更内容に関連付けられた1つ以上の構成要素を、コンパイルされるべき対象として検出する。【選択図】図4

Description

この発明はプログラム作成装置およびプログラムに関し、特に、FA(Factory Automationの略)に適用されるHMI(Human Machine Interface)のためのアプリケーションプログラムの開発を支援するプログラム作成装置およびプログラムに関する。
FAの分野に適用されるプログラマブルターミナルは、タッチパネル式の入力装置である。プログラマブルターミナルは、HMIに関して、ユーザ(この明細書においては、プログラマブルターミナルのプログラムを設計または実装する人を指す)が、ユーザの目的(仕様)に合うように画面を作成して表示し、データ入力を可能ならしめる機器である。
FAを実現するアプリケーションプログラム(以下、FAアプリケーションともいう)の開発に関して、特許文献1(特開2009−157533号公報)の技術が開示される。特許文献1では、制御手順プログラムが再度コンパイルされると、変数へのアドレス割り当てが変わったか否かが判定されて、自動的に新たなアドレス割り当てに対応した画面データが生成される。
特開2009−157533号公報
FAアプリケーションに関しては、たとえばIEC61131-3標準規格の普及とともに、変数を利用したプログラミングが普及してきている。変数を使用したプログラムを高速に実行するために、変数の解決を実行時に行うのではなく、あらかじめプログラムをコンパイルする時に実施する方法が採用されている。しかしながら、FAアプリケーション、とりわけHMIアプリケーションは大規模プログラムになりやすいために、アプリケーション全体のコンパイルに数分程度以上の時間がかかる場合がある。
また、FAアプリケーションの開発では、アプリケーションを作成してコンパイルし、コンパイル後のアプリケーションをターゲットデバイスに転送する。そして、ターゲットデバイス上でアプリケーションを実行させてデバイスの動作を確認し、確認された不具合に基づきアプリケーションを修正する。そして、修正後のアプリケーションをコンパイルするという一連の作業を試行錯誤的に繰り返す。
したがって、FAアプリケーションの効率的な開発のために、コンパイルの所要時間を短くすることが望まれている。しかし、上記の特許文献1は、コンパイルの所要時間を短縮する方法は示さない。
それゆえに本開示の目的は、HMIプログラムについてコンパイルの所要時間を短縮するプログラム作成装置およびプログラムを提供することである。
この発明のある局面に従うと、FA(ファクトリオートメーション)のためのHMI(ヒューマンマシンインタフェース)プログラムを作成するプログラム作成装置が提供される。
HMIプログラムは、複数の構成要素を含み、プログラム作成装置は、プログラムをコンパイルするコンパイラ部を、備える。
コンパイラ部は、複数の構成要素のうちから、コンパイルされるべき対象となる1つ以上の構成要素を検出する対象検出部と、各構成要素に、当該構成要素の変更内容と、当該変更の影響が及ぶ依存関係を有した他の構成要素とを関連付けた関連付け情報を格納するための記憶部と、を含み、対象検出部は、1つ以上の構成要素の変更がなされたとき、複数の構成要素のうちから当該変更内容に関連付けられた1つ以上の構成要素を、コンパイルされるべき対象として検出する。
好ましくは、対象検出部は、対象として検出された複数の構成要素のうち、相互の間で依存関係を有しない構成要素の組を、並列にコンパイルされるべき対象として検出する。
好ましくは、コンパイルが実施される場合に、関連付け情報から、対象として検出された複数の構成要素の相互の依存関係を抽出する依存関係処理部を、さらに備える。
好ましくは、対象検出部は、抽出された依存関係に基づき、並列にコンパイルされるべき対象となる構成要素を検出する。
好ましくは、コンパイラ部は、抽出された依存関係に基づき、対象として検出された複数の構成要素のそれぞれについて、コンパイルする順序を決定する。
好ましくは、対象検出部は、コンパイルがなされたプログラムの複数の構成要素のうちから、コンパイルされるべき対象となる1つ以上の構成要素を検出する。
好ましくは、プログラムの複数の構成要素は、他のプログラムと共有される構成要素を含み、共有される構成要素の変更がなされたとき、当該変更の内容の通知を他のプログラムに出力する。
好ましくは、プログラムの各構成要素について、変更される頻度に応じてコンパイルする時期を変更する。
この発明の他の局面に従うと、FA(ファクトリオートメーション)のためのHMI(ヒューマンマシンインタフェース)プログラムを作成する方法をコンピュータに実行させるためのプログラムが提供される。HMIプログラムは、複数の構成要素を含む。方法は、複数の構成要素のうちから、コンパイルされるべき対象となる1つ以上の構成要素を検出するステップと、各構成要素に、当該構成要素の変更内容と、当該変更の影響が及ぶ依存関係を有した他の構成要素とを関連付けた関連付け情報を検索するステップと、を含み、検出するステップでは、1つ以上の構成要素の変更がなされたとき、複数の構成要素のうちから当該変更内容に関連付けられた1つ以上の構成要素を、コンパイルされるべき対象として検出する。
実施の形態1にかかるプログラマブルシステムの構成を概略的に示す図である。 実施の形態1にかかるPC100の構成を概略的に示す図である。 実施の形態1にかかるプログラマブルターミナル4の構成を概略的に示す図である。 実施の形態1にかかるHMIプログラムの開発環境を概略的に示す図である。 実施の形態1にかかるHMIプログラムのコンパイル処理の概要を説明するための図である。 実施の形態1にかかる依存関係を決定するためのテーブルTBの構成を概略的に示す図である。 実施の形態1にかかる依存関係を例示する図である。 実施の形態1にかかる依存関係グラフSGの一例を模式的に示す図である。 再コンパイル対象検出処理のフローチャートである。 依存関係グラフSGにおいて変更がなされた構成要素を特定した示した状態を示す図である。 並列コンパイル対象検出処理のフローチャートである。 部分グラフSG1の一例を示す図である。 部分グラフSG1を単純化したグラフSG2を示す図である。 実施の形態1にかかる高速コンパイルの処理フローチャートである。 高速コンパイルにおける依存関係に基づいたコンパイルの所要時間を説明する図である。 実施の形態1にかかる並列コンパイルによるコンパイル所要時間の短縮化を説明する図である。
以下に、図面を参照しつつ、各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰返さない。
[用語の説明]
各実施の形態で用いる用語について説明する。
「HMIプログラム」は、アプリケーションプログラムであり、たとえばHMIの定義情報を含む。「HMIプログラム」は、プログラマブルターミナルを動作させるために必要な画面上のGUI(Graphical User Interface)等のオブジェクトの配置またはプログラムコード、各種の設定データなどを含む。
「定義情報」は、変数定義、プロジェクト全体定義、ページ定義、アラーム定義、データログ定義およびデータグループ定義などを含む。
「変数定義」は、HMIプログラム中で使用される変数の定義の集合である。変数の定義は、たとえば各変数について変数名と型(タイプ)を含む。なお、定義される変数には、PLC(プログラマブルロジックコントローラ)種別、通信先を特定する情報(IPアドレスや、対応させるPLCの変数もしくはメモリアドレスなど)などが含まれても良い。
「プロジェクト全体定義」は、たとえばHMIプログラムの全体で共有される関数の定義(プログラムコード)、常時一定時間おきに実行されるべきプログラムコードの設定、ある条件が成立したときに実行されるべきプログラムコードの設定が含まれる。
「ページ定義」は、HMIプログラムに含まれる各ページに対応して、当該ページにより表示される画面のUI(User Interface)構成要素(たとえばボタンやランプなど)の形状、場所、色などの外観に関する定義、当該ページの画面が表示中に、ある条件が成立したときに実行されるプログラムコードの設定、当該ページのUI構成要素が操作されるなどした場合に実行するプログラムコードの設定、当該ページからのみ使用される関数の定義(命令コードまたはプログラムコード)のデータを含む。
「アラーム定義」は、ある条件が成立した場合に、警告画面を表示するためのデータを定義する。たとえば、条件式、条件式が成立したときに画面に表示または履歴に記録される文字列、条件式が成立したときに表示される特定のページ、警告レベルなどを含む。
「データログ定義」は、一定時間おき、または条件が成立するたびに、特定の変数の値を記録し、ファイルなどに保存する機能に関する定義を示す。この定義は、たとえば、ログ対象の変数、ログの時間間隔、ログの条件式などを含む。
「データグループ定義」は、グラフを表示する場合に、グラフのデータ系列を構成するデータグループ(「非配列変数の集合」または「配列変数」)の定義を含む。
「構成要素」は、HMIプログラムを構成するための要素を示す。実施の形態では、HMIプログラムの「構成要素」は予め定められた粒度に従い、たとえば、ページ定義においては個々のページがそれぞれ「構成要素」となり、アラーム定義では全アラーム定義がまとめて1つの「構成要素」となり、変数定義では、個々の変数が「構成要素」となる。
「コンパイル単位」は、独立してコンパイル可能な単位を示す。実施の形態では、変数定義、プロジェクト全体定義、ページ定義、アラーム定義、データログ定義およびデータグループ定義は、それぞれ「コンパイル単位」に相当する。
「依存関係」とは、異なる「構成要素」の間が相互に影響しあう関係を言う。具体的には、一方の定義情報の「構成要素」に変更があった場合に、当該変更の影響が他方の定義情報の「構成要素」に及ぶ(これを、伝搬ともいう)関係をいう。
「伝搬元,伝搬先」とは、ある依存関係に注目した場合において、一方の構成要素(A)の変更が他方の構成要素(B)に影響を及ぼす場合の、それぞれ、A,Bをいう。
「伝搬形態」とは、伝搬元の「構成要素」に変更があった場合に、仮に伝搬先の「構成要素」に変更がなくとも、コンパイルに関して必要な操作を示す。この‘必要な操作’としては、たとえば、再コンパイル、変数使用状況の再調査などを含む。
「再コンパイル」とは、コンパイル後のHMIプログラムの全部または一部を再度、コンパイルすることを示す。
[実施の形態1]
(概要)
実施の形態1では、FA(ファクトリオートメーション)のためのHMI(ヒューマンマシンインタフェース)プログラムを処理するプログラム作成装置は、コンパイル後のプログラムの1つ以上の構成要素が変更された場合に、当該1つ以上の構成要素の変更内容と複数の構成要素の依存関係とに基づき、次のコンパイルの対象となる構成要素を検出する。
このように、プログラム作成装置は、HMIプログラムを再コンパイルする場合には、当該HMIプログラムの複数の構成要素のうち、再コンパイルの対象となるべき1つ以上の構成要素を検出する。したがって、再コンパイルは、HMIプログラムの全ての構成要素を対象に実施する必要はないので、コンパイルの所要時間を短縮することができる。
(システム構成)
図1は、実施の形態1にかかるプログラマブルシステムの構成を概略的に示す図である。図1を参照して、プログラマブルシステムは、FAに適用される複数のPLC(Programmable Logic Controller)1,PLC2,PLC3、プログラマブルターミナル4およびPC(Personal Computer)100を備える。PLC1〜3のそれぞれは同様の構成を有する。PLCは、典型的には、プログラムを実行する主体であるCPU(Central Processing Unit)を有したCPUユニット10、CPUユニット10などへ電力を供給する電源ユニット12、フィールド機器と信号をやり取りするIO(Input Output)ユニット14とを含む。IOユニット14は、CPUユニット10とシステムバス11を介して接続されている。IOユニット14は、CPUユニット10とシステムバス11を介して接続される。典型的には、IOユニット14は、フィールド機器である検出センサ15からの信号を取得し、またはCPUユニット10でのプログラムの実行結果に応じてフィールド機器であるリレー16を駆動する。なお、フィールド機器は、検出センサ15およびリレー16に限定されない。
プログラマブルターミナル4は、HMIのためのGUI(Graphical User Interface)としての役割りを果たす。プログラマブルターミナル4は、PLC1〜3のCPUユニット10と通信する処理、各PLCに関する情報をタッチスクリーン418のディスプレイに表示する表示処理、操作キー416を介して入力されたオペレータの指示をPLC1〜3に伝送する入力処理などの各種の処理を実行する。また、プログラマブルターミナル4は、通信処理、表示処理および入力処理などを実施するためのGUI画面を含む各種の画面をディスプレイに表示する。
GUI画面を表示するための画面データは、プログラマブルターミナル4がHMIプログラムを実行することにより生成されて、生成された画面データによりディスプレイを駆動することにより、タッチスクリーン418に画面が表示される。
PC100は、HMIプログラムを作成するプログラム作成装置の一実施例である。HMIプログラムの処理には、HMIプログラムの作成(エディット)、コンパイルなどが含まれる。PC100は、有線または無線の通信路111を介してプログラマブルターミナル4に接続される。PC100は、ユーザがHMIプログラムを作成する環境を提供する。PC100で作成されたプログラムは、プログラマブルターミナル4に送信される。通信路111は、たとえばLAN(Local Area Network)を含む。
(PC機器100の構成)
図2は、実施の形態1にかかるPC100の構成を概略的に示す図である。図2を参照して、PC100は、CPU110、記憶部としてのメモリ112およびハードディスク114、計時し計時データをCPU110に出力するタイマ113、入力インタフェース118、表示コントローラ120、通信インタフェース124、データリーダ/ライタ126を含む。これらの各部は、バス128を介して互いにデータ通信が可能なように接続されている。
CPU110は、ハードディスク114に格納されたプログラム(コード)を実行することで、各種の演算を実施する。メモリ112は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置である。メモリ112は、ハードディスク114から読出されたプログラムおよびデータに加えて、データリーダ/ライタ126から受信されたデータおよびワークデータなどが格納される。
入力インタフェース118は、CPU110とキーボード104、マウス(図示せず)、タッチパネル(図示せず)などの入力装置との間のデータ伝送を仲介する。すなわち、入力インタフェース118は、ユーザが入力装置を操作することで与えられる操作命令を受付ける。
表示コントローラ120は、表示装置の典型例であるディスプレイ102と接続され、CPU110における処理の結果などを表示する。表示コントローラ120は、CPU110からの表示データに従いディスプレイ102を駆動する。これにより、ディスプレイ102には、表示データに従う画像が表示される。
通信インタフェース124は、LANを介してプログラマブルターミナル4との間のデータ伝送を仲介する。データリーダ/ライタ126は、CPU110と外部の記憶媒体であるメモリカード106との間のデータ伝送を仲介する。
なお、メモリカード106は、PC100で実行されるプログラムなどが格納された状態で流通し、データリーダ/ライタ126は、このメモリカード106からプログラムを読出す。なお、メモリカード106は、CF(Compact Flash)、SD(Secure Digital)などの汎用的な半導体記憶デバイスや、フレキシブルディスク(Flexible Disk)などの磁気記憶媒体や、CD−ROM(Compact Disk Read Only Memory)などの光学記憶媒体などからなる。
また、PC100には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。
(プログラマブルターミナル4の構成)
図3は、実施の形態1にかかるプログラマブルターミナル4の構成を概略的に示す図である。図3を参照して、プログラマブルターミナル4は、各種の演算を行なうCPU411、ROM(Read Only Memory)412、RAM(Random Access Memory)413、各種のプログラムおよびデータを不揮発的に格納するためのフラッシュROM414、時計415、オペレータの操作を受付けるための操作キー416、データリーダ/ライタ417、タッチスクリーン418および通信インタフェース419を備える。なお、これらの各部は、内部バスを介して互いに接続される。
タッチスクリーン418は、表示部として機能するディスプレイ481およびオペレータの入力を受付けるためのタッチパネル482を含む。タッチパネル482は、ディスプレイ481を覆うように設置される。通信インタフェース419は、PC100およびPLC1〜3の各種の機器と通信する。
データリーダ/ライタ417は、CPU411と外部の記憶媒体であるメモリカード420との間のデータ伝送を仲介する。メモリカード420は、プログラマブルターミナル4で実行されるプログラムなどが格納された状態で流通し得る。データリーダ/ライタ126は、メモリカード420からプログラムを読出す。なお、メモリカード420は、CF(Compact Flash)、SD(Secure Digital)などの汎用的な半導体記憶デバイス、またはフレキシブルディスク(Flexible Disk)などの磁気記憶媒体、またはCD−ROM(Compact Disk Read Only Memory)などの光学記憶媒体などからなる。
また、プログラマブルターミナル4には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。
(HMIプログラムの開発環境)
図4は、実施の形態1にかかるHMIプログラムの開発環境を概略的に示す図である。図4では、PC100における開発環境に関連付けて、プログラマブルターミナル4におけるHMIプログラムの実行環境が示されている。
図4を参照して、PC100は、OS(オペレーティングシステム)およびHMIプログラムを開発するためのHMIプログラム開発部200を備える。HMIプログラム開発部200は、HMIプログラム作成部210、プログラム編集部211、コンパイラ部212、および転送部216を含む。コンパイラ部212は、コンパイル対象となる定義情報を検出するためのコンパイル対象検出部213および定義情報の間の依存関係を検出して処理する依存関係処理部214を含む。
HMIプログラム作成部210は、キーボード104を介して受付けるユーザの操作内容に従いHMIプログラム開発部200内の各部を制御する。プログラム編集部211は、キーボード104を介して受付けるユーザ操作内容に従い、HMIプログラムPRを編集(エディット)し、編集後のHMIプログラムPRを予め定められたHMIプログラム記述言語のソースコードSCに変換する。プログラム編集部211は、編集後のHMIプログラムPRおよびソースコードSCを、記憶部224に格納する。記憶部224は、メモリ112またはハードディスク114などを含む。
コンパイラ部212は、上記のHMIプログラム記述言語用のコンパイラであって、ソースコードSCをコンパイルする。コンパイルにより、実行可能HMIプログラムEPが生成されて、記憶部224に格納される。実行可能HMIプログラムEPは、PC100またはプログラマブルターミナル4等の各プロセッサで実行することが可能な実行可能コードに相当する。
HMIプログラムは、後述するように複数の構成要素を含む。
転送部216は、キーボード104を介して受付けるユーザの操作内容に従い、記憶部224から実行可能HMIプログラムEPを読出し、読出された実行可能HMIプログラムEPをプログラマブルターミナル4に送信する。
コンパイル対象検出部213は、ソースコードSCから、コンパイルの対象となる1つ以上の構成要素を検出(抽出)する。また、コンパイル対象検出部213は、コンパイルの対象となる複数の構成要素のうち、並列にコンパイルすることが可能な2つ以上の構成要素の組を検出する並列対象検出部215を含む。
実施の形態1では、コンパイルにより得られた実行可能HMIプログラムEPの実行可能コードは、実行可能コードを走査することにより上記の依存関係を含むプログラムの論理的構造を抽出することが容易なコードである。
コンパイラ部212は、ソースコードSCをコンパイルして、コンパイル結果である実行可能HMIプログラムEPを出力する。出力された実行可能HMIプログラムEPは、記憶部224に格納される。具体的には、コンパイラ部212は、コンパイル対象検出部213による1つ以上の構成要素が検出されたとき、ソースコードSCの複数の構成要素のうち、当該1つ以上の構成要素をコンパイルする。また、コンパイラ部212は、並列対象検出部215により並列にコンパイル可能な2つ以上の構成要素からなる組が検出されたときは、検出された組の2つ以上の構成要素を、並列にコンパイルする。
依存関係処理部214は、実行可能HMIプログラムEPから構成要素の間の依存関係を取得する。具体的には、実行可能HMIプログラムEPを解析して、構成要素どうしの依存関係を抽出し、抽出の結果に基づき、依存関係グラフSGを生成し、生成された依存関係グラフSGを記憶部224に格納する。
転送部216は、ハードディスク114の実行可能HMIプログラムEPを読出し、読出された実行可能HMIプログラムEPをプログラマブルターミナル4に転送(送信)する。
HMIプログラム開発部200の各部および転送部216は、プログラム、またはプログラムと回路の組合せにより実現される。このプログラムは、ハードディスク114からメモリ112にロードされて、OSを介してCPU110により実行される。また、PC100は、実行可能HMIプログラムEPを作成するためのUI(User Interface)ライブラリ、リソース、関数などのデータを有した図示しないライブラリを備える。
プログラマブルターミナル4は、PC100から実行可能HMIプログラムEPを受ける。プログラマブルターミナル4は、実行可能HMIプログラムEPを実行するためのソフトウェア部品からなるランタイム230、タッチスクリーン418との間でデータを入出力する入出力I/F(Interfaceの略)231および通信インタフェース419を介して各PLCと通信するフィールドI/F232を備える。
プログラマブルターミナル4は、PC100から転送された実行可能HMIプログラムEPをフラッシュROM414などに格納する。プログラマブルターミナル4のユーザがHMIプログラムの実行を指示すると、プログラマブルターミナル4のOS(図示せず)の制御のもとで、フラッシュROM414から実行可能HMIプログラムEPが読出されて、ランタイム230は、読出された実行可能HMIプログラムEPを実行する。
ランタイム230は、入出力I/F231を介してタッチスクリーン418からの入力データ、または、通信インタフェース419を介してPLCから入力するデータを用いて実行可能HMIプログラムEPを実行する。また、実行可能HMIプログラムEPの実行結果(出力)を、入出力I/F231を介してタッチスクリーン418に表示させ、また、通信インタフェース419を介してPLCに出力する。
ユーザは、実行可能HMIプログラムEPの実行結果に基づくタッチスクリーン418の表示内容またはPLCの動作を確認する。
なお、図4では、HMIプログラムを実行する環境として、プログラマブルターミナル4を利用したが、実行環境はプログラマブルターミナル4に限定されない。たとえば、PC100が、プログラマブルターミナル4と同様のHMIプログラムの実行環境を備える場合には、実行可能HMIプログラムEPをPC100において実行することができる。
(HMIプログラムのコンパイル処理の概要)
図5は、実施の形態1にかかるHMIプログラムのコンパイル処理の概要を説明するための図である。ここでは、ユーザはコンパイル後のソースコードSCを、プログラム編集部211を介して編集(変更)ときに、編集後のソースコードSCNをコンパイルする(再コンパイルともいう)場合を説明する。
図5では、プログラム編集部211は、ユーザの操作内容に従い、記憶部224のソースコードSCを編集(変更)し、編集後のソースコードSCNを取得し、記憶部224に格納する。具体的には、プログラム編集部211は、編集のためのユーザの操作内容を受付けて、編集内容を記憶部224に格納する。編集内容は、変更されたプログラム構成要素が列挙されたソースコード変更情報SVを含む。依存関係グラフSGは、HMIプログラムの複数の構成要素の依存関係を示す情報であって、コンパイルが実施される毎に、依存関係処理部214により生成されて、記憶部224に格納される。依存関係グラフSGの詳細は後述する。
HMIプログラムのコンパイルの開始が指示されると、コンパイル対象検出部213はコンパイル対象となる構成要素を、ソースコードSCNから検出(抽出)する(ステップS3)。また、並列対象検出部215は、コンパイル対象検出部213により検出された構成要素のうち、並列にコンパイルすることが可能な2つ以上の構成要素を検出(抽出)する(ステップS5)。
コンパイル対象検出部213は、検出の結果に基づき、ソースコードSCNから再コンパイル対象の構成要素に該当したソースコードSC1を出力し、記憶部に格納する。また、並列対象検出部215は、検出の結果に基づき、並列にコンパイル可能な構成要素の組を示す並列コンパイル情報SC2を出力する。
コンパイラ部212は、ソースコードSCNの全ての構成要素ではなく、そのうちの再コンパイル対象の構成要素のソースコードSC1をコンパイルすることにより、ソースコードSCNの全体をコンパイルするよりも高速なコンパイルを実現する(ステップS7)。ステップS7では、並列コンパイル情報SC2が出力されている場合には、コンパイラ部212は、並列コンパイル情報SC2が示す構成要素の組については、並列にコンパイルを実施する。
コンパイラ部212は、コンパイルの結果であるコンパイル成果物を出力する。コンパイル成果物は、実行可能HMIプログラムEPを含み、記憶部に格納される。
依存関係処理部214は、コンパイル成果物から構成要素の間の依存関係を検出(抽出)し(ステップS9)、検出された依存関係を示すように元の依存関係グラフSGを更新(変更)する(ステップS11)。更新後の依存関係グラフSGは記憶部224に格納されて、次回のコンパイル(再コンパイル)において参照される。
(依存関係を決定するためのテーブルTB)
図6は、実施の形態1にかかる依存関係を決定するためのテーブルTBの構成を概略的に示す図である。テーブルTBは、PC100の記憶部224に予め格納される。実施の形態1では、依存関係処理部214は、テーブルTBの情報に基づき、依存関係を決定する。テーブルTBは、各構成要素に対応して、当該構成要素の変更の内容と、当該変更の影響が及ぶ他の構成要素を関連付けた関連付け情報に相当する。
図6を参照して、テーブルTBは、HMIプログラムの各構成要素(定義情報に対応する)に対応付けて、当該構成要素の種類TB1、当該構成要素に対して実施され得る変更の種類TB2、依存関係の伝搬先TB3および依存関係の伝搬形態TB4を有する。
テーブルTBでは、構成要素の種類TB1を変数定義、関数の定義およびページの定義の3種類を例示したが、他の種類の構成要素についても同様にデータを登録しておくことができる。
図6に示されるように、変更の種類TB2は、対応の構成要素の種類TB1に応じて異なる。たとえば、構成要素の種類TB1が個々の変数定義である場合は、変更の種類TB2は名称変更、型変更、削除および追加を含む。
依存関係の伝搬先TB3は、対応の変更の種類TB2のそれぞれに関連づけて、当該変更の影響が伝搬する(変更の影響が及ぶ)構成要素を示す。また、依存関係の伝搬形態TB4は、対応の伝搬先TB3のそれぞれに関連付けて、コンパイルに関して必要とされる何らかの操作(再コンパイル、変数使用状況の再調査)を示す。
実施の形態1では、テーブルTBの内容は固定であってもよく、または可変であってもよい。たとえば、HMIプログラムにユーザが作成した構造体変数が含まれる場合には、プログラム作成装置は、当該構造体変数について、変更の種類TB2(たとえば、メンバーの変更など)、伝搬先TB3および伝搬形態TB4を登録することができる。
(依存関係の表記)
図7は、実施の形態1にかかる依存関係を例示する図である。各構成要素の間の依存関係は、たとえば有向グラフで示される。ここで、構成要素は当該有向グラフのノードとなり、依存関係は当該有向グラフの辺となる。辺には、依存関係の発生条件および伝搬先に要求される操作の情報が付加される。発生条件および操作は、それぞれ、図6の変更の種類TB2および伝搬形態TB4に対応する。
有向グラフの辺を辿ることにより、ノード間の依存関係(発生条件と操作)、各依存関係の伝搬元のノードおよび伝搬先のノードを検出(抽出)することができる。また、どの依存関係の伝搬先にもなっていないノード、および、あるノードに着目して、その全ての依存関係を伝搬先から伝搬元の方向へ再帰的に辿った場合に通過する全てのノードが、前回のコンパイル完了以降に変更されていない構成要素であるようなノードが検出される。このように検出されたノードに対応する構成要素からのみ成るコンパイル単位は、並列にコンパイルが可能なコンパイル単位に相当する。
図7に示す依存関係の有向グラフは、再利用可能(読出し可能)なように、記憶部に格納される。
(依存関係検出処理)
図8は、実施の形態1にかかる依存関係グラフSGの一例を模式的に示す図である。依存関係処理部214は、実行可能HMIプログラムEPを解析し、解析結果に基づき、構成要素(変数、関数、ページなど)とそれらの呼び出し関係を抽出し、抽出された各構成要素に基づきテーブルTBを検索する。検索により、依存関係処理部214は、各構成要素について、その種類に一致した構成要素の種類TB1に対応した変更の種類TB2、伝搬先TB3および伝搬形態TB4を、テーブルTBから抽出し、抽出された情報に基づき、上記の有向グラフである依存関係グラフSGを生成する(図8参照)。生成された依存関係グラフSGを示すリスト構造のデータは、記憶部に格納される。
図8を参照すると、依存関係グラフSGは、たとえば変数定義の変数var1および変数var2を伝搬元とした場合に、伝搬先は関数(Functio0)またはページ(Page0,Page1など)であり、且つ依存関係に伝搬条件および伝搬形態(たとえば、伝搬条件:型変更or削除,伝搬形態:再コンパイル)が関連付けされる。
変形例として、依存関係処理部214は、再コンパイルされた構成要素についてのみ、依存関係を上述と同様に解析し、解析の結果に基づき、元の依存関係グラフSGを変更するとしてもよい。この場合は、HMIプログラム全体を再度解析する場合よりも、依存関係グラフSGの変更処理を速やかに実施することが可能となる。
(構成要素の細分化)
実施の形態1では、HMIプログラムの「構成要素」の粒度に関して、プログラム構成要素は、コンパイル単位を小さくできる見込みがなくなるまで分割される。粒度に従う分割によれば、たとえば、ページ定義においては個々のページがそれぞれ「構成要素」であり、アラーム定義は全アラーム定義が1つの「構成要素」であり、変数定義は個々の変数が「構成要素」である。なお、実施の形態1では、「構成要素」の粒度は、予め決定しておくが、ユーザが作成したHMIプログラム等の構成に最適となるよう、動的に決定するとしてもよい。
(再コンパイル対象検出処理)
実施の形態1において、コンパイル対象検出部213は、ソースコードSCNを、依存関係グラフSGおよびソースコード変更情報SVに従い走査し、走査の結果に基づき、再コンパイルが必要とされる構成要素を検出(抽出)する。図9は再コンパイル対象検出処理のフローチャートである。図10は、依存関係グラフSGにおいて変更がなされた構成要素を特定した示した状態を示す図である。
まず、コンパイル対象検出部213は、伝搬元の構成要素のうち、ソースコード変更情報SVが示す変更がなされた構成要素を抽出し、抽出された構成要素に対応するノードから始めて、ノードに対応する構成要素になされた変更が依存関係の発生条件に該当する限り再帰的に、依存関係の伝搬元から伝搬先の方向へ、依存関係グラフSGを走査する(ステップS33)。
コンパイル対象検出部213は、上記の依存関係グラフSGを辿ることによって到達したノードに対応する構成要素の全てを、再コンパイルの対象に決定し、コンパイル対象情報として記憶部224に格納する(ステップS35)。
また、コンパイル対象検出部213は、再コンパイルの要否とともに、必要な他の処理の要否を判定してもよい(ステップS37)。
ステップS37の判定処理は、たとえば、ソースコード変更情報SVが示す変更後の構成要素が、前回のコンパイル結果をそのまま利用できる構成要素であるか、再コンパイルが必要な構成要素であるか、再コンパイルまでは必要ないが、その他の処理が必要な構成要素であるか等の判定を含む。
コンパイル対象検出部213により取得される再コンパイル対象情報を説明する。ここでは、図7に示すように、ソースコード変更情報SVは、変更がなされた構成要素として、プロジェクト全体定義の関数Function0および変数定義の変数var2,var3を含む。関数Function0の変更の種類は「シグネチャの変更」を示し、変数var2,var3の変更の種類はそれぞれ「型の変更」を示す。
まず、コンパイル対象検出部213は、依存関係グラフSGにおいて、変更がなされた関数Function0に対応するノードから始めて、「シグネチャの変更」が関連付けられた辺を、依存関係の伝搬元から伝搬先の方向へ再帰的に終端まで辿る。これにより、ページ定義のPage2を、再コンパイルの対象と検出する。同様に、変数var2に対応するノードから始めて、「型変更」が関連付けられた辺を、依存関係の伝搬元から伝搬先の方向へ再帰的に終端まで辿る。これにより、ページ定義のPage0、Pgae1、Page2およびPage3を、再コンパイルの対象と検出する。同様に、変数var3に対応するノードから始めて、「型変更」が関連付けられた辺を、依存関係の伝搬元から伝搬先の方向へ再帰的に終端まで辿る。これにより、アラーム定義を再コンパイルの対象と検出する。
したがって、図7の依存関係グラフSGおよびソースコード変更情報SVに基づく再コンパイル対象情報は、再コンパイル対象として、変更された変数var2とvar3および伝搬先の関数Function0、ページPage0、Pgae1、Page2およびPage3、ならびにアラーム定義を示す。
なお、実施の形態においては、これら構成要素を含むコンパイル単位(変数定義、プロジェクト全体定義、ページ定義およびアラーム定義)を再コンパイル対象とする。これにより、データログ定義およびデータグループ定義をコンパイル対象から外すことができて、全体をコンパイルする場合よりもコンパイル所要時間を短くすることができる。
(並列コンパイル対象検出処理)
実施の形態1では、並列対象検出部215は、コンパイル対象検出部213から出力された再コンパイル対象情報に基づき、再コンパイル対象の構成要素のうち並列にコンパイルすることが可能な構成要素を検出する。
図11は、並列コンパイル対象検出処理のフローチャートである。図12は、部分グラフSG1の一例を示す図である。図13は、部分グラフSG1を単純化したグラフSG2を示す図である。並列対象検出部215は、依存関係グラフSGから、再コンパイル対象情報に基づき、再コンパイルの対象となった構成要素と、当該構成要素相互間の依存関係だけで構成される部分グラフSG1(図12参照)を抽出する(ステップS53)。
並列対象検出部215は、図9の部分グラフSG1を、構成要素間の依存関係を示すような単純化されたグラフSG2(図13参照)に変換する(ステップS55)。
図13のグラフSG2に示される依存関係は、変数定義とアラーム定義,ページ定義との間の依存関係と、プロジェクト全体定義とページ定義との間で依存関係を示す。
一般に、HMIプログラムの変数定義とプロジェクト全体定義の間には、通常は依存関係が存在し、並列にコンパイルすることが不可能である。ただし、図13の依存関係は、変数定義に変更があったが、その変数はプロジェクト全体定義では使用されていなかったため、結果として、今回は並列にコンパイル可能であることを示している。
並列対象検出部215は、単純化された依存関係グラフであるグラフSG2のリスト構造のデータを、記憶部224に格納する。
(高速コンパイル)
図14は、実施の形態1にかかる高速コンパイルの処理フローチャートである。図15は、高速コンパイルにおける依存関係に基づいたコンパイルの所要時間を説明する図である。図14と図15を参照して、コンパイラ部212がグラフSG2に基づき、ソースコードSCNをコンパイルする処理を説明する。
まず、コンパイラ部212は、上記の図13のグラフSG2に基づき、お互いに依存関係を有しない定義情報であり、且つ依存関係の伝搬先となっていない定義情報のコードを、ソースコードSCNからコンパイル単位として抽出する。すなわち、グラフSG2のノードのうち、流入する辺がないノードに該当する定義情報のソースコードをコンパイル単位として抽出する。図13のグラフSG2によれば、プロジェクト全体定義と変数定義のソースコードが並列にコンパイル可能なコンパイル単位として抽出される。
コンパイラ部212は、抽出されたプロジェクト全体定義と変数定義の各コンパイル単位のコンパイルを、並列に開始する(ステップS73)。
コンパイラ部212は、各コンパイル単位のコンパイルが終了したことを判断すると、グラフSG2において伝搬先となっている定義情報のコンパイル単位宛の‘コンパイル完了通知’を出力する(ステップS75)。
図15によれば、変数定義とプロジェクト全体定義のコンパイル単位が並列にコンパイル開始される。コンパイルが終了した方は‘コンパイル完了通知’を、リストの次位のノードに該当のコンパイル単位宛に出力する。図15では、先に変数定義のコンパイル単位のコンパイルが終了し、その後に、プロジェクト全体定義のコンパイル単位のコンパイルが終了する。グラフSG2のリストによれば、変数定義のコンパイル単位からは、アラーム定義とページ定義の各コンパイル単位宛に‘コンパイル完了通知’が出力されて、プロジェクト全体定義のコンパイル単位からは、アラーム定義のコンパイル単位宛に‘コンパイル完了通知’が出力される。
コンパイラ部212は、グラフSG2の依存関係に基づき、変数定義とプロジェクト全体定義の両方から‘コンパイル完了通知’が出力されたとき(より特定的には、図15では変数定義から‘コンパイル完了通知’が出力されたとき)、アラーム定義のコンパイル単位のコンパイルを開始する。また、変数定義から‘コンパイル完了通知’が出力されたときページ定義のコンパイル単位のコンパイルを開始する(ステップS77)。
上記に述べたように、コンパイラ部212は、グラフSG2の依存関係に基づき、当該グラフSG2で示された複数の構成要素のそれぞれについて、コンパイルするべき順序を決定して、決定した順序に従いコンパイルを実施することができる。
図12のグラフSG2に基づく、並列コンパイルを含むコンパイルによれば、再コンパイル対象として検出された全ての構成要素の再コンパイルを、時間T1で済ませることができる。
(コンパイル所要時間の短縮化)
図16は、実施の形態1にかかる並列コンパイルによるコンパイル所要時間の短縮化を説明する図である。図16(A)は、再コンパイル対象として検出された構成要素のソースコード(コンパイル単位)を、グラフSG2の依存関係を参照せずに、コンパイルする場合に要する時間T2を示し、図16(B)は、再コンパイル対象として検出された構成要素のコンパイル単位を、グラフSG2の依存関係に基づき並列コンパイルを含んでコンパイルする場合の要する時間T1を示す。
図16(A)では、再コンパイル対象として検出された構成要素の各コンパイル単位が予め定められた順序に従い、シーケンシャルにコンパイルされているために、コンパイルが完了するのに時間T2を要する。これに対して、図16(B)では、2つ以上のコンパイル単位が並列に(同時に)コンパイルされることで、同じ再コンパイル対象として検出された構成要素をコンパイルする場合であっても、時間T2よりも短い時間T1(時間T1<時間T2)でコンパイルを完了させることができる。
依存関係を検出する処理の変形例を説明する。変形例では、上記に述べた依存関係処理部214は、再コンパイルされた部分についてのみ、依存関係を検出し、依存関係グラフSGを作成(元の依存関係グラフSGを更新)する。この方法によれば、HMIプログラムの全体を分析して依存関係グラフを作成するケースよりも、高速に、依存関係を検出しして依存関係グラフSGを作成することが可能となる。
また、依存関係処理部214は、依存関係を比較的容易に検出可能な実行可能HMIプログラムEPの実行可能コードから、当該依存関係を検出したが、検出先はHMIプログラムのソースコードであってもよく、または、コンパイルの過程で取得される中間言語のソースコードであってもよい。コンパイルの過程で取得される中間言語のソースコードから依存関係を検出する場合には、字句解析、構文解析および意味解析などが必要とされるが、実行可能コードでは、これら解析処理を必要とせず、その分、依存関係の検出を容易かつ高速に実施することができる。
また、HMIプログラムの構成要素について変更される頻度に応じてコンパイルする時期を変更してもよい。たとえば、予め定められた時間内で変更された回数(変更頻度)が閾値以下の構成要素はプログラム編集時などにバックグランドで実施するが、頻度が閾値を超える構成要素は、編集完了後のコンパイル時に実施することにより、HMIプログラムの全体のコンパイル時間を削減することができる。
また、上記の実施の形態1では、コンパイルを含むHMIプログラムの作成環境をPC100に備えるようにしたが、PC100に限定されずプログラマブルターミナル4に当該環境を備えるようにしてもよい。PC100は、タブレット型の端末であってもよい。
[実施の形態2]
実施の形態2は、実施の形態1の変形例を示す。実施の形態2では、HMIプログラムは、他のアプリケーションプログラムの変数,関数等の情報を共有する。たとえば、他のアプリケーションプログラムは、プログラマブルターミナル4(他のプログラム作成装置に相当)が実行するプログラムを含み得る。この場合には、テーブルTBにおいて、上記の共有される構成要素について、種類TB1、変更の種類TB2、依存関係の伝搬先TB3および伝搬形態TB4を有する。
PC100において、HMIプログラムと他のアプリケーションプログラムを開発する場合に、他のプリケーションプログラムの変数,関数等の定義が変更された場合は、依存関係に基づく変更通知がPC100に対して出力される。PC100のコンパイラ部212は当該変更の通知を受けると、テーブルTBを通知内容(構成要素の種類と変更内容)に基づき検索し、変更の影響が及ぶ関係である依存関係を有した他の構成要素を検出する。検出された構成要素をコンパイルする対象として特定し、特定された構成要素を例えば、バックグランドでコンパイルする。
同様に、プログラマブルターミナル4でも、PC100から共有された構成要素の変更の通知を受けると、バックグランドでコンパイルを実施する。なお、PC100のHMIプログラムの構成要素を共有するプログラムを有する外部の装置は、プログラマブルターミナル4に限定されない。
PC100上において、他のアプリケーションプログラムと連携するHMIプログラムを作成(編集,コンパイル)またはデバッグする場合に、上記の通り既にバックグランドでコンパイルされたHMIプログラムを用いることができる。
これにより、連携先のプログラム作成装置の他のアプリケーションプログラムに変更があったとしても、HMIプログラムのコンパイル所要時間が長くなることはない。また、HMIプログラムをコンパイルしながらデバッグする場合のデバック効率が向上する。
[実施の形態3]
実施の形態3では、上述のHMIプログラムをコンパイルし作成する方法を、PC100のCPU110またはプログラマブルターミナル4のCPU411に実行させるためのプログラムが提供される。
このようなプログラムは、PC100またはプログラマブルターミナル4に付属するフレキシブルディスク、CD−ROM(Compact Disk-Read Only Memory)、ROM、RAMおよびメモリカード106,420などのコンピュータ読み取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、ハードディスク114などの記録媒体にて記録させて、プログラムを提供することもできる。また、図示しないネットワークから通信インタフェース124,419を介したダウンロードによって、プログラムを提供することもできる。
なお、プログラムは、PC100またはプログラマブルターミナル4のOS(オペレーティングシステム)の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずOSと協働して処理が実行される。このようなモジュールを含まないプログラムも、実施の形態3のプログラムに含まれ得る。
また、実施の形態3にかかるプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、実施の形態3にかかるプログラムに含まれ得る。
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。
[実施の形態の利点]
実施の形態の背景として、プログラムをコンパイルして実行可能コードを生成する方法は、「インタプリタ型」に比べると、コンパイル時間を要することから一般的に実行可能となるまで時間を要する。具体的には、コンパイルにより実行可能コードを生成する場合、「コンパイル→プログラムの修正→プログラムの実行」のサイクルが繰返される。
これに対して、実施の形態によれば、HMIプログラムの再コンパイル時に、コンパイルの対象を変更があった構成要素に限定していること、並列にコンパイル可能な構成要素は並列にコンパイルすること、および予め指定された粒度に従う「構成要素」のコンパイル単位でコンパイルが実施されることで、上記のサイクルにおけるコンパイルの所要時間が短縮される(図16参照)。これにより、HMIプログラムの開発効率が改善され得る。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
4 プログラマブルターミナル、100 PC,200 プログラム開発部、210 プログラム作成部、211 プログラム編集部、212 コンパイラ部、213 コンパイル対象検出部、214 依存関係処理部、215 並列対象検出部、216 転送部、224 記憶部、230 ランタイム、EP 実行可能HMIプログラム、PR HMIプログラム、SC ソースコード、SC2 並列コンパイル情報、SG 依存関係グラフ、SG1 部分グラフ、SG2 単純化されたグラフ、SV ソースコード変更情報、T1,T2 時間、TB テーブル。

Claims (9)

  1. FA(ファクトリオートメーション)のためのHMI(ヒューマンマシンインタフェース)プログラムを作成するプログラム作成装置であって、
    前記プログラムは、複数の構成要素を含み、
    前記プログラムをコンパイルするコンパイラ部を、備え、
    前記コンパイラ部は、
    前記複数の構成要素のうちから、コンパイルされるべき対象となる1つ以上の構成要素を検出する対象検出部と、
    各構成要素に、当該構成要素の変更内容と、当該変更の影響が及ぶ依存関係を有した他の構成要素とを関連付けた関連付け情報を格納するための記憶部と、を含み、
    前記対象検出部は、
    1つ以上の構成要素の変更がなされたとき、前記複数の構成要素のうちから当該変更内容に関連付けられた1つ以上の構成要素を、コンパイルされるべき対象として検出する、プログラム作成装置。
  2. 前記対象検出部は、
    前記対象として検出された複数の構成要素のうち、相互の間で前記依存関係を有しない構成要素の組を、並列にコンパイルされるべき対象として検出する、請求項1に記載のプログラム作成装置。
  3. 前記コンパイルが実施される場合に、前記関連付け情報から、前記対象として検出された複数の構成要素の相互の前記依存関係を抽出する依存関係処理部を、さらに備える、請求項2に記載のプログラム作成装置。
  4. 前記対象検出部は、抽出された前記依存関係に基づき、前記並列にコンパイルされるべき対象となる構成要素を検出する、請求項3に記載のプログラム作成装置。
  5. 前記コンパイラ部は、抽出された前記依存関係に基づき、前記対象として検出された複数の構成要素のそれぞれについて、コンパイルする順序を決定する、請求項3または4に記載のプログラム作成装置。
  6. 前記対象検出部は、
    コンパイルがなされた前記プログラムの複数の構成要素のうちから、コンパイルされるべき対象となる1つ以上の構成要素を検出する、請求項1から5のいずれか1項に記載のプログラム作成装置。
  7. 前記プログラムの複数の構成要素は、他のプログラムと共有される構成要素を含み、
    前記共有される構成要素の変更がなされたとき、当該変更の内容の通知を前記他のプログラムに出力する、請求項1から6のいずれか1項に記載のプログラム作成装置。
  8. 前記プログラムの各構成要素について、変更される頻度に応じてコンパイルする時期を変更する、請求項1から7のいずれか1項に記載のプログラム作成装置。
  9. FA(ファクトリオートメーション)のためのHMI(ヒューマンマシンインタフェース)プログラムを作成する方法をコンピュータに実行させるためのプログラムであって、
    前記HMIプログラムは、複数の構成要素を含み、
    前記方法は、
    前記複数の構成要素のうちから、コンパイルされるべき対象となる1つ以上の構成要素を検出するステップと、
    各構成要素に、当該構成要素の変更内容と、当該変更の影響が及ぶ依存関係を有した他の構成要素とを関連付けた関連付け情報を検索するステップと、を含み、
    前記検出するステップでは、
    1つ以上の構成要素の変更がなされたとき、前記複数の構成要素のうちから当該変更内容に関連付けられた1つ以上の構成要素を、コンパイルされるべき対象として検出する、プログラム。
JP2017048515A 2017-03-14 2017-03-14 プログラム作成装置およびプログラム Expired - Fee Related JP6812861B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017048515A JP6812861B2 (ja) 2017-03-14 2017-03-14 プログラム作成装置およびプログラム
EP17192151.3A EP3376370B1 (en) 2017-03-14 2017-09-20 Program producing device and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017048515A JP6812861B2 (ja) 2017-03-14 2017-03-14 プログラム作成装置およびプログラム

Publications (2)

Publication Number Publication Date
JP2018151936A true JP2018151936A (ja) 2018-09-27
JP6812861B2 JP6812861B2 (ja) 2021-01-13

Family

ID=60051314

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017048515A Expired - Fee Related JP6812861B2 (ja) 2017-03-14 2017-03-14 プログラム作成装置およびプログラム

Country Status (2)

Country Link
EP (1) EP3376370B1 (ja)
JP (1) JP6812861B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7450565B2 (ja) 2021-02-02 2024-03-15 三菱電機株式会社 コンパイル方法、開発支援装置および制御システム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009157533A (ja) 2007-12-25 2009-07-16 Fuji Electric Systems Co Ltd プログラマブルコントローラシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7450565B2 (ja) 2021-02-02 2024-03-15 三菱電機株式会社 コンパイル方法、開発支援装置および制御システム

Also Published As

Publication number Publication date
EP3376370A1 (en) 2018-09-19
EP3376370B1 (en) 2020-04-15
JP6812861B2 (ja) 2021-01-13

Similar Documents

Publication Publication Date Title
JP4195479B2 (ja) インクリメンタル生成システム
US11579856B2 (en) Multi-chip compatible compiling method and device
US20060075305A1 (en) Method and system for source-code model-based testing
JP2002099312A (ja) プログラマブルコントローラおよび制御プログラム開発支援装置
JP2007141173A (ja) コンパイルシステム、デバッグシステムおよびプログラム開発システム
EP3244306A1 (en) A computer-implemented method for allowing modification of a region of original code
CN110554861B (zh) 具有编译和读取-评估-打印-循环操作的软件开发环境
Bouraqadi et al. Test-driven development for generated portable Javascript apps
JP5849592B2 (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
JP6812861B2 (ja) プログラム作成装置およびプログラム
US11221828B2 (en) Support device and support program
JP2012027639A (ja) プログラマブルコントローラ、およびプログラマブルコントローラのデバッグ方法
US11714609B2 (en) Automatic generation of source code implementing a regular expression
KR100417655B1 (ko) 최적화과정을참조하면서동작검증을행하도록디버그정보를생성하는디버그정보생성장치및프로그래머가최적화과정을의식하면서동작검증을할수있는디버그장치로이루어지는프로그램개발시스템
JP5257898B2 (ja) 情報処理装置及びその制御方法、並びに、プログラム
JP2007122187A (ja) プログラム・コード生成装置
Obster et al. Development and execution of PLC programs on real-time capable mobile devices
CN112272820B (zh) 支持装置以及支持程序的记录介质
Mészáros et al. Visual debugging support for graph rewriting-based model transformations
de Carvalho Programming and mapping strategies for embedded computing runtime adaptability
JPH11110256A (ja) プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体
McRitchie et al. Managing component variability within embedded software product lines via transformational code generation
Mazanek et al. Generating correctness-preserving editing operations for diagram editors
JP2007114934A (ja) コンパイラシステム
Pasala et al. An approach based on modeling dynamic behavior of the system to assess the impact of COTS upgrades

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201111

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201130

R150 Certificate of patent or registration of utility model

Ref document number: 6812861

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees