以下、図面を参照しながら実施の形態に係る作画支援プログラム、作画支援方法、作画支援装置、及び作画支援システムについて説明する。以下の実施形態では、同一の参照符号を付した部分は同様の動作をおこなうものとして、重複する説明を適宜省略する。
(実施形態)
図1は、実施形態に係る作画支援システム1の構成例を示す図である。
作画支援システム1は、作画支援装置10、及びプログラマブル表示器20を含むシステムである。作画支援装置10とプログラマブル表示器20とは、通信可能に接続されている。
作画支援装置10は、プログラマブル表示器20において表示される表示画面の作画を支援する装置である。作画支援装置10には、例えば、プログラマブル表示器20において表示される表示画面の作画を行うための作画ソフトウェアがインストールされている。例えば、作画ソフトウェアを使用するユーザは、プログラマブル表示器20で表示される様々な画面を、GUI(Graphic User Interface)を介して編集可能である。
プログラマブル表示器20は、例えば、プログラマブル表示器20に接続される外部機器の状態についての情報を表示する。また、プログラマブル表示器20は、所定の操作を受け付け、受け付けた操作に従って外部機器を制御する。外部機器は、例えば、PLC(Programmable Logic Controller)である。
図2は、実施形態に係る作画支援装置10の構成例を示す図である。
作画支援装置10は、処理回路11、入力インタフェース12、出力インタフェース13、通信インタフェース14、及び記憶回路15を有する。
処理回路11は、作画支援装置10の中枢として機能するプロセッサである。処理回路11は、例えば、記憶回路15に記憶されているプログラムを実行することで、実行したプログラムに対応する機能を実現する。なお、処理回路11は、記憶回路15で記憶されているデータの少なくとも一部を記憶する記憶領域を備えていても構わない。
入力インタフェース12は、作画支援装置10に対して操作者から入力される各種操作を受け付ける。入力インタフェース12は、例えば、マウス、キーボード、及び操作面へ触れることで指示が入力されるタッチパネル等により実現される。入力インタフェース12は、処理回路11に接続され、操作者から入力される操作指示を電気信号へ変換し、電気信号を処理回路11へ出力する。なお、本明細書において入力インタフェース12はマウス、及びキーボード等の物理的な操作部品を備えるものだけに限られない。例えば、作画支援装置10とは別体に設けられた外部の入力機器から入力される操作指示に対応する電気信号を受け取り、この電気信号を処理回路11へ出力する電気信号の処理回路も入力インタフェース12の例に含まれる。
出力インタフェース13は、処理回路11に接続され、処理回路11から供給される信号を出力する。出力インタフェース13は、例えば、表示回路、及び音声デバイス等により実現される。表示回路には、例えば、CRTディスプレイ、液晶ディスプレイ、有機ELディスプレイ、LEDディスプレイ、及びプラズマディスプレイ等が含まれる。音声デバイスには、例えば、スピーカ等を含む。また、音声デバイスには、音声信号を外部へ出力する出力回路が含まれていてもよい。なお、出力インタフェース13は、入力インタフェース12と共にタッチパネル、あるいはタッチスクリーンとして実現されてもよい。
通信インタフェース14は、外部装置との間でデータを送受信する。通信インタフェース14と外部装置との間では任意の通信規格が使用可能である。具体的には、通信インタフェース14は、例えば、プログラマブル表示器20との間で種々のデータを送受信する。
記憶回路15は、磁気的、若しくは光学的記録媒体、又は半導体メモリ等の、プロセッサにより読み取り可能な記録媒体等を含む。また、記憶回路15は、CD-ROMドライブ、DVDドライブ、及びフラッシュメモリ等の可搬性記憶媒体との間で種々の情報を読み書きする駆動装置等であっても良い。なお、記憶回路15は、必ずしも単一の記憶装置により実現される必要は無い。例えば、記憶回路15は、複数の記憶装置により実現されても構わない。
記憶回路15は、例えば、図2に示されるプロジェクトデータ16、及び、プロパティデータ17を記憶している。
プロジェクトデータ16は、プログラマブル表示器に表示される画面の表示を制御するためのデータである。プロジェクトデータ16には、例えば、プロジェクト設定に関する情報、表示される画面に関する情報、バックグラウンド機能に関する情報等が含まれている。プロジェクトデータ16は、例えば、作画支援装置10にインストールされた作画ソフトウェアにより作成される。作成されたプロジェクトデータ16は、作画支援装置10からプログラマブル表示器20に転送される。プログラマブル表示器20に転送されたプロジェクトデータ16は、例えば、プログラマブル表示器20が備える表示プログラムにより読み込まれて展開され、プログラマブル表示器20に表示される画面の表示制御に直接関与する。また、作成されたプロジェクトデータ16は、記憶回路15に記憶され、例えば、再び作画ソフトウェアで取り込み再利用することが可能である。作画ソフトウェア上に取り込まれたプロジェクトデータ16は、例えば、出力インタフェース13を介してその内容が画面表示される。なお、プロジェクトデータ16は、テキストエディタやスプレッドシートアプリケーション等の汎用エディタで読み書き可能なデータ形式を有しておらず、例えば、作画ソフトウェアが備えるGUI上で編集可能なデータである。
図3は、実施形態に係るプロジェクトデータ16のデータ構造を説明するための図である。図3に示されるプロジェクトデータ16は、画面表示を制御するための各種機能に関する要素(以下、機能要素と称する)で構成されている。具体的には、例えば、プロジェクト設定に関する機能要素161、画面群に関する機能要素162、バックグラウンド機能に関する機能要素163が挙げられる。また、機能要素は、階層的に構成されている。例えば、機能要素161には、監視先情報に関する機能要素1611が含まれている。また、機能要素162には、画面に関する機能要素1621、1622が含まれている。また、機能要素163には、アラーム機能に関する機能要素1631、レシピ機能に関する機能要素1632が含まれている。さらに、機能要素1621には、画面設定に関する機能要素1623、オブジェクト群に関する機能要素1624が含まれている。さらに、機能要素1624には、個々のオブジェクトに関する機能要素1625、1626が含まれている。図3において、機能要素1622、1631、1632についても同様の階層構造を有していることが分かる。そして、各機能要素には、例えば、その役割・機能等に応じて、画像データ、各種設定情報等が紐づけられている。
また、図3に示されるように、各機能要素には、機能要素毎に「機能名」及び「No.」が付されている。そして、機能要素は、例えば、「機能名」及び「No.」の組合せを識別子として識別される。具体的には、図3に示される機能要素1624について、オブジェクトの名称、すなわち「機能名」が「ランプ」、「No.」が「10001」で示され、識別子は「ランプ10001」となる。以下、この「機能名+機能中の整理番号を示すNo.」で表される識別子を機能要素IDと称する。なお、機能要素IDは、文字列と数値の組合せからなる例を示したがこれに限定されない。機能要素IDは、例えば、数値のみからなっていてもよいし、その他記号が含まれていてもよい。
また、プロジェクトデータ16に対しては、機能要素毎に情報の追加、更新、及び削除が実行される。すなわち、機能要素は、プロジェクトデータ16において編集対象となるデータセットである。また、プロジェクトデータの編集とは、機能要素単位の処理であって、少なくとも、プロジェクトデータへ機能要素を追加すること、プロジェクトデータに含まれる機能要素の内容を更新すること、及び、プロジェクトデータに含まれる機能要素を削除することが含まれる。
プロパティデータ17は、プロジェクトデータ16を編集するためのデータである。プロパティデータ17には、プロジェクトデータ16を構成するデータセットのうち、例えば、画像データ、及びデザインテーマのようなテンプレートデータ等を除くテキストデータが含まれている。プロパティデータ17は、プロジェクトデータ16とは異なり汎用エディタで読み書き可能なデータ形式を有している。具体的には、プロパティデータ17は、例えば、機能要素IDと、機能要素IDで特定される機能要素が有する編集可能な属性を表す属性名称と、その属性に設定された属性値とが関連付けられたレコード形式の情報を有する。プロパティデータ17のファイル形式は、例えば、テキスト、CSV、XML、HTML、JSON等である。なお、プロパティデータ17のファイル形式は、機能要素、属性名称、属性値との対応関係が作画ソフトウェアが認識できるものであれば形式を問わない。
また、プロパティデータ17には対象範囲情報を含めることができる。対象範囲情報により、プロパティデータのインポートによって編集されるプロジェクトデータの範囲を限定することが出来る。なお、対象範囲情報は、省略可能である。
図4は、実施形態に係るプロパティデータ17のデータ構造を説明するための図である。図4に示されるように、プロパティデータ17は、テキストデータを有している。図4に示されるプロパティデータ17では、対象範囲情報によりプロジェクトデータ16に対する編集の対象範囲が限定されている。
図4に示される範囲R1には、対象範囲情報が含まれている。図4に示される範囲R1では、編集対象となる母集団が識別子「画面101」の機能要素であることが示されている。また、編集対象となる機能の機能名が「ランプ」、「数値表示」であることが示されている。
図4に示される範囲R2には、機能要素に関するレコードセットを表す情報が含まれている。具体的には、図4に示される範囲R2には、例えば、レコードを構成する項目を表す機能名、No.、属性名称、属性値が紐づけられたレコードセットを表す情報が含まれている。具体的には、例えば、「機能名:ランプ」、「No.:10001」、「属性名称:画面」、及び「属性値:画面101」であるレコードが含まれている。なお、このレコードの機能要素IDは、機能名にNo.を加えた「ランプ10001」となる。また、プロパティデータ17において、1つの機能要素IDに対応するレコードは複数であってもよく、例えば、図4によれば、機能要素ID「ランプ10001」に対応する2つ目のレコードとして、「機能名:ランプ」、「No.:10001」、「属性名称:デバイス」、及び「属性値:Y1」であるレコードが含まれている。他のレコードについては同様のデータ構造であるため、説明を省略する。
記憶回路15は、処理回路11からの制御に応じ、記憶しているデータを読み出す。例えば、記憶回路15は、処理回路11からの制御に応じ、記憶しているプログラムを読み出す。また、記憶回路15は、処理回路11からの制御に応じ、プロジェクトデータ16、プロパティデータ17、及びその他記憶している各種データを読み出す。
本実施形態に係る処理回路11は、本実施形態に係るプログラムを実行することにより、例えば、図3に示されるプロジェクトデータ16を編集する。具体的には、処理回路11は、例えば、記憶回路15に記憶されるプログラムを実行することで、取得機能111、差分抽出機能112、及び編集機能113を実現する。
取得機能111は、プロジェクトデータを編集するためのプロパティデータ17を取得する機能である。取得機能111において処理回路11は、例えば、ユーザの操作を起点としてプロパティデータ17を取得する。具体的には、ユーザは、汎用エディタ、又は設計書をプロパティデータの形式に変換するツールの利用等の任意の方法でプロパティデータ17を作成し、作成されたプロパティデータ17を作画支援装置10に入力する操作を実行する。このとき、プロパティデータ17の内容が反映される対象となるプロジェクトデータ16は、例えば、作画ソフトウェアに読み込まれており、処理回路11が参照可能である。処理回路11は、プロパティデータ17の入力操作がなされると、入力されたプロパティデータ17を取得する。
差分抽出機能112は、プロジェクトデータ16と対応するプロパティデータ17とを比較し、その差分を抽出する機能である。差分抽出機能112において処理回路11は、例えば、プロジェクトデータ16及びプロパティデータ17とで共通に認識可能なIDを用いて、両データの差分を抽出する。IDは、例えば、機能要素IDである。
編集機能113は、差分抽出機能112の実行により抽出されたプロジェクトデータ16とプロパティデータ17との差分に基づいて、プロジェクトデータ16を編集する機能である。編集機能113において処理回路11は、例えば、プロパティデータ17のみに所定の機能要素が含まれていた場合、当該機能要素をプロジェクトデータ16に追加する。具体的には、処理回路11は、例えば、プロパティデータ17に含まれる所定の機能要素に関するレコードの情報を、必要に応じて画像データ、各種設定情報等を紐づけてプロジェクトデータ16に反映させる。これにより、プロジェクトデータ16に所定の機能要素の内容が追加される。また、処理回路11は、例えば、プロジェクトデータ16及びプロパティデータ17の両方に所定の機能要素が含まれていた場合、プロパティデータ17の内容でプロジェクトデータ16の内容を更新する。また、処理回路11は、例えば、プロジェクトデータ16のみに特定のIDを有する機能要素が含まれていた場合、当該機能要素をプロジェクトデータ16から削除する。
以上のように構成された作画支援装置10による動作を、処理回路11の処理手順に従って説明する。図5は、実施形態に係る作画支援装置10の動作例を示す図である。図6は、実施形態に係る作画支援装置10が実行する差分抽出処理の例を示す図である。以降では、図5のフローチャート、図6のフローチャートを参照しながら説明する。
本動作例では、所定の時点で作成されたプロジェクトデータ16が作画ソフトウェア上に読み込まれており、このプロジェクトデータ16に対して、対応するプロパティデータ17の内容が反映されるものとする。このとき、プロパティデータ17は、例えば、ユーザの操作を起点として作画ソフトウェアに取り入れられるものとする。なお、ユーザは、事前に、任意の方法でプロパティデータ17を作成し、一度プロジェクトデータ16にその内容を反映するものとする。そして、ユーザは、プロジェクトデータ16への反映後、プロパティデータ17に対して所定の編集処理を行うものとする。そして、ユーザは、作画ソフトウェアに編集後のプロパティデータ17を入力する操作を実行するものとする。そして、処理回路11は、編集後のプロパティデータ17の入力操作がなされると、取得機能111を実行するものとする。
また、編集後のプロパティデータ17に含まれる対象範囲情報として、編集対象となる母集団は「画面101」、編集対象となる機能は「ランプ」であるものとする。対象範囲情報は、例えば、プロジェクトデータ16に含まれる機能要素のうちどの機能要素群を編集対象とするかを示す情報である。また、編集後のプロパティデータ17に含まれる機能要素に関するレコードセットを表す情報として、「機能名:ランプ」、「No.:10001」、「属性名称:画面」、及び「属性値:画面101」であるレコード、「機能名:ランプ」、「No.:10001」、「属性名称:デバイス」、及び「属性値:Y1」であるレコード、「機能名:ランプ」、「No.:10001」、「属性名称:色」、及び「属性値:赤」であるレコード、「機能名:ランプ」、「No.:10002」、「属性名称:画面」、及び「属性値:画面101」であるレコード、「機能名:ランプ」、「No.:10002」、「属性名称:デバイス」、及び「属性値:Y2」であるレコード、並びに、「機能名:ランプ」、「No.:10002」、「属性名称:色」、及び「属性値:赤」であるレコードが含まれているものとする。
なお、母集団「画面101」の下層には、例えば、図3に示される機能要素ID「オブジェクト群3001」である機能要素が存在するが、対象機能を「ランプ」とすることで、機能要素ID「オブジェクト群3001」である機能要素の1つ下層である機能要素について限定して指定することが可能となる。
また、編集前のプロパティデータ17、すなわち上記のようにユーザにより新規作成されたプロパティデータ17の内容が反映されたプロジェクトデータ16に含まれる情報として、編集対象となる母集団に対応する機能要素ID「画面101」、かつ、機能が「ランプ」である機能要素には、機能要素ID「ランプ10001」、「ランプ10003」の機能要素のみが含まれているものとする。
すなわち、編集前のプロパティデータ17に含まれる機能要素に関するレコードセットを表す情報として、「機能名:ランプ」、「No.:10001」、「属性名称:画面」、及び「属性値:画面101」であるレコード、「機能名:ランプ」、「No.:10001」、「属性名称:デバイス」、及び「属性値:Y1」であるレコード、「機能名:ランプ」、「No.:10001」、「属性名称:色」、及び「属性値:赤」であるレコード、「機能名:ランプ」、「No.:10003」、「属性名称:画面」、及び「属性値:画面101」であるレコード、「機能名:ランプ」、「No.:10003」、「属性名称:デバイス」、及び「属性値:Y3」であるレコード、並びに、「機能名:ランプ」、「No.:10003」、「属性名称:色」、及び「属性値:赤」であるレコードが含まれているものとする。
図5において、処理回路11は、編集後のプロパティデータ17の入力操作がなされると、取得機能111を実行し、入力されたプロパティデータ17を取得する(ステップS1)。このとき、処理回路11は、例えば、プロパティデータ17の対象範囲情報に該当する範囲の機能要素を、プロジェクトデータ16から抽出する。具体的には、母集団として機能要素IDが「画面101」である機能要素に含まれる機能要素のうち、機能名「ランプ」を含む機能要素IDを有する機能要素を抽出する。
処理回路11は、プロパティデータ17を取得すると、差分抽出機能112を実行し、プロジェクトデータ16と、プロパティデータ17とを比較し、その差分を抽出する(ステップS2)。具体的には、処理回路11は、プロジェクトデータ16を構成する機能要素を特定する識別子、すなわち機能要素IDに基づいて、プロジェクトデータ16と、プロパティデータ17とを比較し、その差分を抽出する。以後、この差分抽出処理の具体的フローについて、図6を参照しながら説明する。
図6において、処理回路11は、機能要素IDに基づいて、プロパティデータ17内の機能要素を1つ読み出す(ステップS21)。具体的には、処理回路11は、例えば、「機能名:ランプ」、「No.:10001」、「属性名称:画面」、及び「属性値:画面101」であるレコードを読み出す。なお、「機能名:ランプ」、「No.:10001」、「属性名称:デバイス」、及び「属性値:Y1」であるレコード、並びに、「機能名:ランプ」、「No.:10001」、「属性名称:色」、及び「属性値:赤」であるレコードについては、「機能名」及び「No.」が同一、すなわち機能要素IDが同一であるため、その後の処理においては、確認済のレコードとして取り扱われる。
処理回路11は、「機能名:ランプ」、「No.:10001」、「属性名称:画面」、及び「属性値:画面101」であるレコードを読み出すと、読み出したレコードから特定される機能要素に対応する機能要素をプロジェクトデータ16において検索する(ステップS22)。具体的には、処理回路11は、機能要素IDが「ランプ10001」である機能要素をプロジェクトデータ16において検索する。
そして、処理回路11は、プロジェクトデータ16に対応する機能要素があるか否か判定する(ステップS23)。このとき、処理回路11は、機能要素ID「ランプ10001」である機能要素がプロジェクトデータ16に存在するため(ステップS23のYes)、プロパティデータ17から読み出した機能要素が「両データに存在」することを記憶する(ステップS24)。具体的には、処理回路11は、差分抽出結果データを作成し、レコードを構成する項目として機能要素ID、比較結果を設定する。処理回路11は、例えば、差分抽出結果データに、「機能要素ID:ランプ10001」、及び「比較結果:両データに存在」であるレコードを記憶する。なお、差分抽出結果データは、例えば、差分抽出処理毎に作成される。
処理回路11は、ステップS24を実行した後、プロパティデータ17に未確認の機能要素があるか否か判定する(ステップS26)。このとき、処理回路11は、プロパティデータ17に機能要素ID「ランプ10002」の機能要素に対応する未確認レコードが残っているため、プロパティデータ17に未確認の機能要素があると判定し(ステップS26のYes)、機能要素IDに基づいて、プロパティデータ17内の未確認の機能要素を1つ読み出す(ステップS21)。具体的には、処理回路11は、例えば、「機能名:ランプ」、「No.:10002」、「属性名称:画面」、及び「属性値:画面101」であるレコードを読み出す。なお、「機能名:ランプ」、「No.:10002」、「属性名称:デバイス」、及び「属性値:Y2」であるレコード、並びに、「機能名:ランプ」、「No.:10002」、「属性名称:色」、及び「属性値:赤」であるレコードについては、「機能名」及び「No.」が同一、すなわち機能要素IDが同一であるため、その後の処理においては、確認済のレコードとして取り扱われる。
処理回路11は、「機能名:ランプ」、「No.:10002」、「属性名称:画面」、及び「属性値:画面101」であるレコードを読み出すと、読み出したレコードから特定される機能要素に対応する機能要素をプロジェクトデータ16において検索する(ステップS22)。具体的には、処理回路11は、機能要素IDが「ランプ10002」である機能要素をプロジェクトデータ16において検索する。
そして、処理回路11は、プロジェクトデータ16に対応する機能要素があるか否か判定する(ステップS23)。このとき、処理回路11は、機能要素ID「ランプ10002」である機能要素がプロジェクトデータ16に存在しないため(ステップS23のNo)、プロパティデータ17から読み出した機能要素が「プロパティデータのみに存在」することを記憶する(ステップS25)。具体的には、処理回路11は、例えば、差分抽出結果データに、「機能要素ID:ランプ10002」、及び「比較結果:プロパティデータのみに存在」であるレコードを記憶する
処理回路11は、ステップS25を実行した後、プロパティデータ17に未確認の機能要素があるか否か判定する(ステップS26)。このとき、処理回路11は、プロパティデータ17には未確認レコードは残っていないため、プロパティデータ17に未確認の機能要素がないと判定し(ステップS26のNo)、機能要素IDに基づいて、プロジェクトデータ16内の機能要素を1つ読み出す(ステップS27)。具体的には、処理回路11は、プロジェクトデータ16において編集対象となる母集団「画面101」、及び編集対象となる機能「ランプ」の編集対象範囲のうち、機能要素ID「ランプ10001」である機能要素をプロジェクトデータ16から読み出す。
処理回路11は、プロジェクトデータ16から読み出した機能要素がプロパティデータ17にも存在するか否か判定する(ステップS28)。具体的には、処理回路11は、例えば、読み出した機能要素がステップS23において「両データに存在」すると判定されたか否かで判断する。このとき、機能要素ID「ランプ10001」である機能要素はステップS23で「両データに存在」すると判定されているため、処理回路11は、機能要素ID「ランプ10001」である機能要素はプロパティデータ17にも存在すると判定し(ステップS28のYes)、プロジェクトデータ16に未確認の機能要素があるか否か判定する(ステップS30)。
このとき、処理回路11は、プロジェクトデータ16に機能要素ID「ランプ10003」である未確認の機能要素が残っているため、プロジェクトデータ16に未確認の機能要素があると判定し(ステップS30のYes)、機能要素IDに基づいて、プロジェクトデータ16内の未確認の機能要素を1つ読み出す(ステップS27)。具体的には、処理回路11は、プロジェクトデータ16において編集対象となる母集団「画面101」、及び編集対象となる機能「ランプ」の編集対象範囲のうち、機能要素ID「ランプ10003」である機能要素をプロジェクトデータ16から読み出す。
処理回路11は、プロジェクトデータ16から読み出した機能要素がプロパティデータ17にも存在するか否か判定する(ステップS28)。具体的には、処理回路11は、例えば、読み出した機能要素がステップS23において「両データに存在」すると判定されたか否かで判断する。このとき、機能要素ID「ランプ10003」である機能要素はステップS23で「両データに存在」すると判定されていないため、処理回路11は、機能要素ID「ランプ10003」である機能要素はプロパティデータ17に存在しないと判定し(ステップS28のNo)、読み出した機能要素が「プロジェクトデータのみに存在」することを記憶する(ステップS29)。具体的には、処理回路11は、例えば、差分抽出結果データに、「機能要素ID:ランプ10003」、及び「比較結果:プロジェクトデータのみに存在」であるレコードを記憶する。
処理回路11は、ステップS29を実行した後、プロジェクトデータ16に未確認の機能要素があるか否か判定する(ステップS30)。このとき、処理回路11は、プロジェクトデータ16に未確認の機能要素は残っていないため、プロジェクトデータ16に未確認の機能要素がないと判定し(ステップS30のNo)、差分抽出処理を終了する。
図7は、実施形態に係る差分抽出結果データの例を示す図である。図7によれば、機能要素ID「ランプ10001」の機能要素は、「両データに存在」していたことが分かる。また、機能要素ID「ランプ10002」の機能要素は、「プロパティデータのみに存在」していたことが分かる。また、機能要素ID「ランプ10003」の機能要素は、「プロジェクトデータのみに存在」していたことが分かる。
以後、図5に戻ってステップS3から説明する。
図5において、処理回路11は、差分抽出処理を実行した後、編集機能113を実行し、例えば、作成された差分抽出結果データに基づいて、プロジェクトデータ16を編集する。
処理回路11は、例えば、ステップS2の差分抽出処理で作成した図7に示される差分抽出結果データから1レコード読み出す(ステップS3)。具体的には、処理回路11は、機能要素ID「ランプ10001」であるレコードを差分抽出結果データから読み出す。
処理回路11は、読み出したレコードの比較結果項目を参照する(ステップS4)。具体的には、処理回路11は、機能要素ID「ランプ10001」であるレコードの比較結果項目の内容を参照する。
処理回路11は、機能要素ID「ランプ10001」であるレコードの比較結果項目の内容は「両データに存在」であるため(ステップS4の「両データに存在」)、プロジェクトデータ16の機能要素をプロパティデータ17の機能要素の内容で更新する(ステップS6)。具体的には、処理回路11は、機能要素ID「ランプ10001」である機能要素について、プロパティデータ17の内容でプロジェクトデータ16に含まれる機能要素の内容を更新する。なお、処理回路11は、更新対象となる機能要素の内容に変更があるか否かを事前にチェックし、変更がない場合は、更新処理をスキップするようにしてもよい。
処理回路11は、ステップS6を実行した後、差分抽出結果データに未確認のレコードがあるか否か判定する(ステップS8)。このとき、処理回路11は、差分抽出結果データに機能要素ID「ランプ10002」、及び「ランプ10001」である未確認のレコードが残っているため、差分抽出結果データに未確認の機能要素があると判定し(ステップS8のYes)、差分抽出結果データから未確認のレコードを1レコード読み出す(ステップS3)。具体的には、処理回路11は、例えば、機能要素ID「ランプ10002」であるレコードを差分抽出結果データから読み出す。
処理回路11は、読み出したレコードの比較結果項目を参照する(ステップS4)。具体的には、処理回路11は、機能要素ID「ランプ10002」であるレコードの比較結果項目の内容を参照する。
処理回路11は、機能要素ID「ランプ10002」であるレコードの比較結果項目の内容は「プロパティデータのみに存在」であるため(ステップS4の「プロパティデータのみに存在」)、機能要素ID「ランプ10002」に対応する機能要素をプロジェクトデータ16へ追加する(ステップS5)。具体的には、処理回路11は、プロパティデータ17に含まれる「機能名:ランプ」、「No.:10002」、「属性名称:画面」、及び「属性値:画面101」であるレコードの内容をプロジェクトデータ16に新規反映する。
処理回路11は、ステップS5を実行した後、差分抽出結果データに未確認のレコードがあるか否か判定する(ステップS8)。
このとき、処理回路11は、差分抽出結果データに機能要素ID「ランプ10001」である未確認のレコードが残っているため、差分抽出結果データに未確認の機能要素があると判定し(ステップS8のYes)、差分抽出結果データから未確認のレコードを1レコード読み出す(ステップS3)。具体的には、処理回路11は、機能要素ID「ランプ10003」であるレコードを差分抽出結果データから読み出す。
処理回路11は、読み出したレコードの比較結果項目を参照する(ステップS4)。具体的には、処理回路11は、機能要素ID「ランプ10003」であるレコードの比較結果項目の内容を参照する。
処理回路11は、機能要素ID「ランプ10003」であるレコードの比較結果項目の内容は「プロジェクトデータのみに存在」であるため(ステップS4の「プロジェクトデータのみに存在」)、機能要素ID「ランプ10003」に対応する機能要素をプロジェクトデータ16から削除する(ステップS7)。具体的には、処理回路11は、プロジェクトデータ16に含まれる機能要素ID「ランプ10003」に関連する属性名称、属性値等の関連情報をプロジェクトデータ16から削除する。
処理回路11は、ステップS5を実行した後、差分抽出結果データに未確認のレコードがあるか否か判定する(ステップS8)。このとき、処理回路11は、差分抽出結果データに未確認のレコードは残っていないため、差分抽出結果データに未確認の機能要素がないと判定し(ステップS8のNo)、処理を終了する。
次に、新規作成されたプロパティデータの内容がプロジェクトデータに反映され、その後、新規作成されたプロパティデータの内容が変更され、その変更内容がプロジェクトデータに反映される流れについて説明する。
以下の説明では、プロジェクトデータ16において編集対象となる母集団は「画面101」、編集対象となる機能は「ランプ」であるものとする。また、編集前のプロパティデータ17に含まれる機能要素に関するレコードセットを表す情報、及び、編集後のプロパティデータ17に含まれる機能要素に関するレコードセットを表す情報については、上記動作例、差分抽出処理の説明の前提として述べたものと同様であるものとする。
図8は、実施形態に係る編集前のプロパティデータ17、プロジェクトデータ16の関係を説明するための図である。図8では、汎用エディタを介して表示されるプロパティデータ17の内容を表す画面、プロパティデータ17として出力されたcsvファイル、及び作画ソフトウェアを介して表示されるプロジェクトデータ16の内容を表す画面が示されている。
図8によれば、汎用エディタによりプロパティデータ17に出力するための情報が編集され、プロパティデータ17が新規作成される。図8に示されるように、例えば、プロパティデータ17が作成されたタイムスタンプは「2022/8/1 13:00」であり、保存されたプロパティデータのファイルパスは「D:¥Work¥HMIDesign¥PD.csv」である。
また、図8によれば、新規作成されたプロパティデータ17は、例えば、処理回路11により作画ソフトウェアに取り込まれる。取り込まれたプロパティデータ17の内容は、例えば、図5及び図6に示されるような処理によりプロジェクトデータ16に反映される。図8によれば、新規作成されたプロパティデータ17の内容がプロジェクトデータ16に反映された結果、機能要素ID「画面101」の機能要素に含まれる機能要素であって、デバイス「Y1」に関する「赤」色のランプ表示に関する機能要素、及び、デバイス「Y3」に関する「赤」色のランプ表示に関する機能要素を表す画像が2つ表示されている。このランプ表示に関する2つの機能要素の「No.」は、図8に示されるように、「10001」、及び「10003」であり、機能要素IDは「ランプ10001」、「ランプ10003」であることが分かる。
図9は、実施形態に係る編集後のプロパティデータ、プロジェクトデータの関係を説明するための図である。図9では、汎用エディタを介して表示されるプロパティデータ17の内容を表す画面、プロパティデータ17として出力されたcsvファイル、及び作画ソフトウェアを介して表示されるプロジェクトデータ16の内容を表す画面が示されている。
図9によれば、まず、図8において新規作成されたプロパティデータ17の内容が汎用エディタ上で編集される。編集の内容は、機能要素ID「ランプ10002」に関するレコードの追加、及び、機能要素ID「ランプ10003」に関するレコードの削除である。この編集結果は、プロパティデータ17に出力され、編集後のプロパティデータ17が作成される。図9に示されるように、例えば、編集後のプロパティデータ17が作成されたタイムスタンプは「2022/8/2 14:00」であり、保存されたプロパティデータのファイルパスは「D:¥Work¥HMIDesign¥PD.csv」である。これにより、図8において新規作成されたプロパティデータ17は、編集後のプロパティデータ17で上書きされる。
また、図9によれば、新規作成されたプロパティデータ17は、例えば、処理回路11により作画ソフトウェアに取り込まれる。取り込まれたプロパティデータ17の内容は、例えば、図5及び図6に示されるような処理によりプロジェクトデータ16に反映される。図9によれば、編集後のプロパティデータ17の内容がプロジェクトデータ16に反映された結果、機能要素ID「画面101」の機能要素に含まれる機能要素であって、デバイス「Y2」に関する「赤」色のランプ表示に関する機能要素(機能要素ID「ランプ10002」)を表す画像が1つ追加されている。また、図9によれば、編集後のプロパティデータ17の内容がプロジェクトデータ16に反映された結果、機能要素ID「画面101」の機能要素に含まれる機能要素であって、デバイス「Y3」に関する「赤」色のランプ表示に関する機能要素(機能要素ID「ランプ10003」)を表す画像が1つ削除されている。
このように、新規作成されたプロパティデータ17の内容がその後編集されて一部の機能要素が削除された場合であっても、図5及び図6に示されるような処理を実行することにより、ユーザの手を介さずに、その編集内容をプロジェクトデータ16に反映することが可能となる。
上記実施形態によれば、処理回路11は、プログラマブル表示器20に表示される画面の表示を制御するために作成されたプロジェクトデータ16を編集するためのプロパティデータ17を取得する。処理回路11は、プロパティデータ17とプロジェクトデータ16とを比較し、その差分を抽出する。処理回路11は、抽出した差分に基づいて、プロジェクトデータ16を編集する。
これにより、例えば、プロパティデータ17の内容をプロジェクトデータ16に一度反映させた後、プロパティデータ17に機能要素を追加、又は、削除されるような変更を加えた場合でも、ユーザの手を介さずに、その変更内容をプロジェクトデータ16に反映させることが可能となる。
したがって、本実施形態によれば、プログラマブル表示器に表示される画面の表示を制御するためのプロジェクトデータの編集効率を向上させることが可能となる。
(変形例)
以上、本開示の実施形態を説明したが、本開示を実施するにあたっては、種々の形態による変形及び応用が可能である。具体的には、上記実施形態では、編集後のプロパティデータとプロジェクトデータとの差分が抽出され、抽出された差分に基づいてプロジェクトデータが編集される場合について説明した。変形例では、プロパティデータが定期的に監視され、プロパティデータの状態が変更されていた場合に、その変更が外部に通知される場合について説明する。また、変形例では、プロパティデータに含まれる情報が一部不足していた場合に、当該不足している情報が補完される場合について説明する。また、変形例では、編集対象となるプロジェクトデータが存在しない場合でも、プロパティデータの入力が受付られた場合に、プロジェクトデータが新規作成され、新規作成されたプロジェクトデータにプロパティデータの内容が反映される場合について説明する。
図10は、変形例に係る作画支援システム1Aの構成例を示す図である。
作画支援システム1Aは、作画支援装置10A、及びプログラマブル表示器20を含むシステムである。作画支援装置10Aとプログラマブル表示器20とは、通信可能に接続されている。
図11は、変形例に係る作画支援装置10Aの構成例を示す図である。
作画支援装置10Aは、処理回路11A、入力インタフェース12、出力インタフェース13、通信インタフェース14、及び記憶回路15を有する。
変形例に係る処理回路11Aは、変形例に係るプログラムを実行することにより、例えば、図3に示されるプロジェクトデータ16を編集する。具体的には、処理回路11Aは、例えば、記憶回路15に記憶されるプログラムを実行することで、取得機能111、差分抽出機能112、編集機能113、監視機能114、補完機能115、及び新規作成機能116を実現する。
取得機能111、差分抽出機能112、及び編集機能113については、上記実施形態と同様であるため説明を省略する。
監視機能114は、例えば、プロパティデータ17を定期的に監視し、プロパティデータ17の状態が変更されていた場合に、その変更を外部に通知する機能である。監視機能114において処理回路11Aは、記憶回路15に記憶されている所定の時間間隔でプロパティデータ17を参照する。このとき、処理回路11Aは、例えば、監視先の情報を編集対象となるプロジェクトデータ16に紐づけて予め記憶しておく。監視先の情報は、例えば、プロパティデータ17のファイルパスや最終更新日時のタイムスタンプである。
処理回路11Aは、例えば、プロパティデータ17が格納されているファイルパスを所定の間隔で参照する。そして、処理回路11Aは、例えば、プロパティデータ17のタイムスタンプの情報を取得する。処理回路11Aは、取得したタイムスタンプの情報が更新されている場合、その変更を、例えば、出力インタフェース13等を介してユーザに通知する。
また、処理回路11Aは、例えば、プロパティデータ17が削除されていた場合、プロパティデータ17が削除された旨を、例えば、出力インタフェース13等を介してユーザに通知する。
また、監視機能114において処理回路11Aは、プロパティデータ17の状態が変更されていた場合に、その変更内容を、例えば、取得機能111、差分抽出機能112、及び編集機能113に通知し、編集対象となるプロジェクトデータ16に反映させるようにしてもよい。
補完機能115は、例えば、プロジェクトデータの内容を更新する際に、プロパティデータに含まれる情報が一部不足していた場合に、当該不足している情報を補完する機能である。補完機能115において処理回路11Aは、例えば、入力インタフェース12等を介してプロパティデータ17の入力を受け付ける。処理回路11Aは、入力されたプロパティデータ17の内容を取得する。このとき、処理回路11Aは、取得したプロパティデータ17の情報が一部不足していると判定した場合は、所定の方法により当該不足している情報を補完し、プロパティデータ17の内容を更新する。
新規作成機能116は、編集対象となるプロジェクトデータが存在しない場合でも、例えば、プロパティデータの入力が受付られた場合に、プロジェクトデータを新規作成し、新規作成したプロジェクトデータにプロパティデータの内容を反映する機能である。新規作成機能116において処理回路11Aは、例えば、入力インタフェース12等を介してプロパティデータ17の入力を受け付ける。このとき、処理回路11Aは、例えば、記憶回路15、又は、作画ソフトウェア用に確保されたメモリを参照し、編集対象となるプロジェクトデータ16があるか否か判定する。処理回路11Aは、編集対象となるプロジェクトデータ16がないと判定した場合、プロジェクトデータ16を新規作成する。処理回路11Aは、新規作成されたプロジェクトデータ16に対して、入力を受け付けたプロパティデータ17の内容を反映させる。
以上のように構成された作画支援装置10Aによる動作を、処理回路11Aの処理手順に従って説明する。図12は、変形例に係る作画支援装置10Aが実行する状態監視処理の例を示す図である。以降では、図12のフローチャートを参照しながら説明する。なお、本動作例では、監視機能114において処理回路11Aは、例えば、予め設定された複数の時刻において、又は、所定の時刻から所定の時間間隔で、プロパティデータ17を参照するものとする。また、プロパティデータ17にはタイムスタンプが付与され、プロパティデータ17の内容が更新されるごとに内容が更新されたときの時刻でタイムスタンプの値は更新されるものとする。
図12において、処理回路11Aは、例えば、予め設定された時刻になると、記憶回路15に記憶されたプロパティデータ17を参照する(ステップS1A)。
処理回路11Aは、プロパティデータ17の状態に変化の有無を判定する(ステップS2A)。具体的には、処理回路11Aは、例えば、プロパティデータ17に付与されたタイムスタンプを取得し、保持しているタイムスタンプの値と取得したタイムスタンプの値とを比較し、差異があるか否か判定する。
処理回路11Aは、保持しているタイムスタンプの値と取得したタイムスタンプの値との間に差異があり、プロパティデータ17の状態に変化があると判定した場合(ステップS2AのYes)、プロパティデータ17の変更を、例えば出力インタフェース13を介してユーザへ通知する(ステップS3A)。そして、処理回路11Aは、処理を終了し、予め設定されている次の時刻になるまで待機する。処理回路11Aは、予め設定されている次の時刻になると、再びステップS1Aを実行する。
なお、処理回路11Aは、保持しているタイムスタンプの値と取得したタイムスタンプの値との間に差異がなく、プロパティデータ17の状態に変化がないと判定した場合(ステップS2AのNo)、処理を終了し、予め設定されている次の時刻になるまで待機する。処理回路11Aは、予め設定されている次の時刻になると、再びステップS1Aを実行する。
図13は、変形例に係るプロパティデータ17の状態監視を説明するための図である。図13に示される図によれば、まず、例えば、記憶回路15に記憶されたプロパティデータ17の内容が作画ソフトウェア上でプロジェクトデータ16に反映される。その後、監視機能114の実行により処理回路11Aは、例えば、予め設定された第1の時刻(t=t1)になるまで待機する。その後、処理回路11Aは、予め設定された第1の時刻になると、プロパティデータ17を参照する。このとき、プロパティデータ17は変更されていないため、処理回路11Aは、参照処理を終了し、予め設定された次の第2の時刻(t=t2>t1)になるまで待機する。
その後、処理回路11Aは、予め設定された第2の時刻になると、プロパティデータ17を参照する。このとき、プロパティデータ17は変更されていないため、処理回路11Aは、参照処理を終了し、予め設定された次の第3の時刻(t=t3>t2)になるまで待機する。
このとき、図13に示されるように、第2の時刻と第3の時刻との間において、例えば、機能要素ID「ランプ10002」に関する機能要素に関するレコードがプロパティデータ17から削除される。
処理回路11Aは、予め設定された第3の時刻になると、プロパティデータ17を参照する。このとき、プロパティデータ17は変更されているため、このプロパティデータ17の変更を検知し、例えば出力インタフェース13を介してユーザへ通知する。
図14は、変形例に係るプロパティデータ17の変更が検知された際の通知方法の例を示す図である。以下、ユーザへの通知の例を図14を用いて説明する。図14は、出力インタフェース13の一例であるディスプレイに表示される作画ソフトウェアの編集用ウィンドウの例を表している。図14によれば、画面101について、「プロパティデータに未反映の変更があります」と表示されている。この表示態様としては、例えば、バッジ表示、ポップアップウィンドウ等が挙げられる。なお、このとき、処理回路11Aは、差分抽出結果を通知するようにしてもよい。
図14によれば、ユーザは、プロパティデータ17に変更があったこと、具体的には画面101の設定について変更があったことに気づくことができる。すなわち、一度プロパティデータ17の内容がプロジェクトデータ16に反映された後、プロパティデータ17が再編集されることによるプロパティデータ17とプロジェクトデータ16との間で不整合が発生していることに気づくことができる。したがって、再編集されたプロパティデータ17の変更内容をプロジェクトデータ16へ反映することの漏れを防ぐことができる。
次に、変形例において、プロパティデータ17に含まれる情報が一部不足していた場合に、当該不足している情報が補完される場合について説明する。変形例では、プロパティデータ17に含まれる機能要素に関するレコードに設定不備がある場合、作画ソフトウェアへの取り込み時に設定を補完してからプロジェクトデータ16に反映するようにしてもよい。
図15は、変形例に係るプロパティデータ17の補完処理を説明するための図である。図15では、例えば、「数値表示」機能についてNo.「10001」を使用していないプロジェクトデータ16があり、そのプロジェクトデータ16に対して、No.が設定されていない「数値表示」機能が追加される例が示されている。図15によれば、補完機能115において処理回路11Aは、プロパティデータ17が入力されると、例えば、機能名「数値表示」のレコードについて、No.の値として「10001」が設定されているとみなして補完し、機能要素ID「数値表示10001」に関するレコードの情報をプロジェクトデータ16に反映している。
また、図15では、例えば、ランプの標準設定の色が「赤」であるプロジェクトデータ16があり、そのプロジェクトデータ16に対して、色が設定されていない機能要素が追加される例が示されている。図15によれば、補完機能115において処理回路11Aは、入力されたプロパティデータ17において、例えば、「機能名:ランプ」、「No.:10001」、「属性名称:色」、及び「属性値:空欄」であるレコードについて、属性値の値として「赤」が設定されているとみなして補完し、機能要素ID「ランプ10001」に関するレコードの情報をプロジェクトデータ16に反映している。また、処理回路11Aは、例えば、「機能名:ランプ」、「No.:10002」であるレコードについて、「属性名称:色」であるレコードが存在しないが、「機能名:ランプ」、「No.:10002」、「属性名称:色」、及び「属性値:赤」であるレコードが存在するとみなして補完し、機能要素ID「ランプ10002」に関するレコードの情報をプロジェクトデータ16に反映している。
これにより、ユーザは、例えば、プロジェクトデータ16において、どの機能のどのNo.が未使用なのかを調べて設定する手間や、機能要素の各属性に設定可能な属性値を調べて設定する手間を経ずに、機能要素の追加が行える。したがって、ユーザによるプロパティデータ17の編集作業を支援することができ、プログラマブル表示器に表示される画面の表示を制御するためのプロジェクトデータの編集効率を向上させることが可能となる。
最後に、変形例において、編集対象となるプロジェクトデータが存在しない場合でも、プロパティデータの入力が受付られた場合に、プロジェクトデータが新規作成され、新規作成されたプロジェクトデータにプロパティデータの内容が反映される場合について説明する。
図16は、変形例に係る編集中のプロジェクトデータ16がない場合のプロパティデータ17の反映処理を説明するための図である。図16では、編集中のプロジェクトデータ16が存在しない作画ウィンドウW1に対して、プロパティデータ17がユーザによるドラッグアンドドロップ操作で入力される様子が示されている。
このとき、新規作成機能116において処理回路11Aは、作画ソフトウェアに編集中のプロジェクトデータ16が存在しない状態であっても、プロパティデータ17の入力があった場合、入力されたプロパティデータ17に対応するプロジェクトデータ16を新規作成したうえで、新規作成したプロジェクトデータ16にプロパティデータ17の内容を反映する。これにより、例えば、ユーザが作成済みのプロパティデータ17を編集された場合、編集前のプロパティデータ17が反映されたプロジェクトデータ16がない場合であっても、編集後のプロパティデータ17に対応するプロジェクトデータ16をユーザが準備する手間を削減できる。
なお、上記実施形態において、作画支援装置10が出力インタフェース13を含む構成としたがこれに限られない。具体的には、出力インタフェース13が作画支援装置10に外付けされ、作画支援装置10が出力インタフェース13を含まない構成であってもよい。
また、上記実施形態において、編集後のプロパティデータ17によって変更が加えられる前のプロジェクトデータ16は、ユーザが事前に任意の方法でプロパティデータ17を作成し、その内容が反映されたものであるとしたがこれに限られない。変更が加えられる前のプロジェクトデータ16は、所定の方法で作成された雛形データのようなものであってもよいし、過去に任意の方法で作成されたプロジェクトデータ16であってもよい。
また、上記実施形態に係る作画支援装置10の動作を規定する動作プログラムを既存のパーソナルコンピュータ又は情報端末装置に適用することで、当該パーソナルコンピュータ又は情報端末装置を実施形態に係る作画支援装置10として機能させることも可能である。
また、このようなプログラムの配布方法は任意であり、例えば、CD-ROM(Compact Disk Read-Only Memory)、DVD(Digital Versatile Disk)、メモリカード等のコンピュータ読み取り可能な記録媒体に格納して配布してもよいし、インターネットのような通信ネットワークを介して配布してもよい。
本開示は、本開示の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本開示を説明するためのものであり、本開示の範囲を限定するものではない。つまり、本開示の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の開示の意義の範囲内で施される様々な変形が、本開示の範囲内とみなされる。