[go: up one dir, main page]

JP7054033B2 - プロセス実行順序決定プログラム及びプロセス実行順序決定方法 - Google Patents

プロセス実行順序決定プログラム及びプロセス実行順序決定方法 Download PDF

Info

Publication number
JP7054033B2
JP7054033B2 JP2021051522A JP2021051522A JP7054033B2 JP 7054033 B2 JP7054033 B2 JP 7054033B2 JP 2021051522 A JP2021051522 A JP 2021051522A JP 2021051522 A JP2021051522 A JP 2021051522A JP 7054033 B2 JP7054033 B2 JP 7054033B2
Authority
JP
Japan
Prior art keywords
processes
execution order
determination
variable
variables
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
JP2021051522A
Other languages
English (en)
Other versions
JP2021163489A (ja
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.)
Daikin Industries Ltd
Original Assignee
Daikin Industries Ltd
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 Daikin Industries Ltd filed Critical Daikin Industries Ltd
Publication of JP2021163489A publication Critical patent/JP2021163489A/ja
Application granted granted Critical
Publication of JP7054033B2 publication Critical patent/JP7054033B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本開示は、プロセス実行順序決定プログラム及びプロセス実行順序決定方法に関する。
一般に、制御対象の機器において実行される複数のプロセスを設計する場合、設計者は、複数のプロセスの処理内容を把握することにより、各プロセスの実行順序を決定する。
これに対して、例えば、下記特許文献1では、各プロセス間の入出力関係に基づいて、各プロセスを自動で関連付けることで、実行順序を決定する構成が提案されている。
特表2004-521402号公報
しかしながら、制御対象の機器において複数のプロセスを正しく実行させるには、実行順序が適切に決定されている必要がある。また、そのためには、単に入出力関係に基づいて各プロセスが関連付けられているだけでなく、各プロセスが矛盾なく関連付けられていることが求められる。一方で、設計者にとって、各プロセスが矛盾なく関連付けられているか否かを確認する作業は、作業負荷が大きい。
本開示は、制御対象の機器において実行される複数のプロセスを設計する際の、各プロセスの実行順序を決定する作業を支援するプロセス実行順序決定プログラム及びプロセス実行順序決定方法を提供する。
本開示の第1の態様は、プロセス実行順序決定プログラムであって、
制御対象の機器において実行される複数のプロセスのうちのいずれかのプロセスが接続された場合に、接続経路内に同一の要素が出現したかを判定する第1の判定工程と、
前記第1の判定工程において判定されたことに応じて、ユーザにより、同一の要素が出現しない接続経路に修正されることで、前記複数のプロセスの実行順序を決定する決定工程と、
前記プロセスの処理内容に含まれるいずれかの変数が、2つ以上のプロセスによって更新されるか否かを判定する第2の判定工程と、
前記プロセスの処理内容に含まれる変数の中に、いずれのプロセスによっても更新されない変数が存在するか否かを判定する第3の判定工程と
をコンピュータに実行させる。
本開示の第1の態様によれば、制御対象の機器において実行される複数のプロセスを設計する際の、実行順序を決定する作業を支援するプロセス実行順序決定プログラムを提供することができる。
また、本開示の第2の態様は、第1の態様に記載のプロセス実行順序決定プログラムであって、
前記要素には、前記プロセスと、前記プロセスの処理内容に含まれる変数のいずれか一方が含まれる。
また、本開示の第3の態様は、第1の態様に記載のプロセス実行順序決定プログラムであって、
前記複数のプロセス全体に対する入力項目及び出力項目を始端及び終端として、プロセスごとに抽出された入力変数及び出力変数をプロセス間で接続することで前記プロセスを接続し、前記接続経路を形成する
また、本開示の第4の態様は、第1の態様に記載のプロセス実行順序決定プログラムであって、
前記複数のプロセスそれぞれの処理内容に含まれる変数と、前記複数のプロセスとの間の関係性を示す行列を作成し、作成した行列を累乗した結果から特定される、変数を介したプロセス間の接続関係に基づいて前記プロセスを接続し前記接続経路を形成する
また、本開示の第5の態様は、第4の態様に記載のプロセス実行順序決定プログラムであって、
前記行列は、前記複数のプロセス及び前記複数のプロセスそれぞれの処理内容に含まれる変数をグラフ理論における頂点とみなし、かつ、前記プロセスと該プロセスに含まれる変数との入出力関係を有向辺とみなした場合の有向グラフの隣接行列である。
また、本開示の第6の態様は、第1の態様に記載のプロセス実行順序決定プログラムであって、
前記第1の判定工程は、
接続経路内に同一の要素が出現したと判定した場合に、判定結果を通知する。
また、本開示の第7の態様は、第3乃至第5の態様に記載のプロセス実行順序決定プログラムであって、
前記複数のプロセス全体に対する入力項目及び出力項目を取得する第1の取得工程と、
前記複数のプロセスそれぞれの処理内容を取得する第2の取得工程と、
前記第2の取得工程において取得された処理内容から、プロセスごとの入力変数及び出力変数を抽出する抽出工程とを更にコンピュータに実行させる。
また、本開示の第8の態様は、第の態様に記載のプロセス実行順序決定プログラムであって、
前記第2の判定工程において2つ以上のプロセスによって更新されると判定された場合に、報知する報知工程更にコンピュータに実行させる。
また、本開示の第9の態様は、第の態様に記載のプロセス実行順序決定プログラムであって、
前記第3の判定工程においていずれのプロセスによっても更新されない変数が存在すると判定された場合に、報知する報知工程更にコンピュータに実行させる。
また、本開示の第10の態様は、プロセス実行順序決定方法であって、
第1の判定手段が、制御対象の機器において実行される複数のプロセスのうちのいずれかのプロセスが接続された場合に、接続経路内に同一の要素が出現したかを判定する第1の判定工程と、
決定手段が、前記第1の判定工程において判定されたことに応じて、ユーザにより、同一の要素が出現しない接続経路に修正されることで、前記複数のプロセスの実行順序を決定する決定工程と、
第2の判定手段が、前記プロセスの処理内容に含まれるいずれかの変数が、2つ以上のプロセスによって更新されるか否かを判定する第2の判定工程と、
第3の判定手段が、前記プロセスの処理内容に含まれる変数の中に、いずれのプロセスによっても更新されない変数が存在するか否かを判定する第3の判定工程とを有する。
本開示の第10の態様によれば、制御対象の機器において実行される複数のプロセスを設計する際の、実行順序を決定する作業を支援するプロセス実行順序決定方法を提供することができる。
設計作業支援装置の利用シーンの一例を示す図である。 設計作業支援装置のハードウェア構成の一例を示す図である。 プロセス実行順序決定処理の流れを示すフローチャートである。 プロセス実行順序決定処理の概要を示す図である。 プロセス実行順序決定部の機能構成の一例を示す図である。 記述部の処理の具体例を示す第1の図である。 記述部の処理の具体例を示す第2の図である。 解析部の処理の具体例を示す第1の図である。 解析部の処理の具体例を示す第2の図である。 決定処理及び循環参照判定処理の流れを示すフローチャートである。 決定部の処理の具体例を示す第1の図である。 決定部の処理の具体例を示す第2の図である。 決定部の処理の具体例を示す第3の図である。 判定部の処理の具体例を示す図である。 チェック部の処理の具体例を示す第1の図である。 チェック部の処理の具体例を示す第2の図である。 報知部の処理の具体例を示す図である。 プロセス間の接続関係を特定する処理の具体例を示す第1の図である。 プロセス間の接続関係を特定する処理の具体例を示す第2の図である。
以下、各実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
[第1の実施形態]
<設計作業支援装置の利用シーン>
はじめに、制御対象の機器において実行される複数のプロセスを設計する際の、設計作業支援装置の利用シーンについて説明する。図1は、設計作業支援装置の利用シーンの一例を示す図である。図1に示すように、設計作業支援装置110は、例えば、機器システム10に含まれる制御対象の機器において実行される複数のプロセスについての制御プログラムを提供する。
なお、図1において、機器システム10は、複数のユニットを有し、それぞれのユニットにおいて、複数種類の機器(機器A、機器B)が、ユニット外の機器(機器C)と連携して動作するシステムである。ただし、設計作業支援装置110により制御プログラムが提供される機器システム10のシステム構成は任意であり、図1の例に限定されるものではない。
設計作業支援装置110には、設計作業支援プログラムがインストールされており、当該プログラムが実行されることで、設計作業支援装置110は、設計作業支援機能120を実現する。
また、設計作業支援プログラムには、複数のサブ機能を実現するサブプログラム(例えば、プロセス実行順序決定プログラム)が含まれ、設計作業支援プログラムが実行される際、当該サブプログラムもあわせて実行される。つまり、設計作業支援機能120が有する複数のサブ機能には、プロセス実行順序決定部121が含まれる。
プロセス実行順序決定部121は、ユーザ130によって記述された処理内容に基づいて、1ループ(例えば、0.5秒周期)内で実行される、複数のプロセスの実行順序を決定する。実行順序を決定する際、プロセス実行順序決定部121では、各プロセス間に矛盾がないか(的確性)を判定またはチェックする。これにより、ユーザ130は、制御対象の機器において実行される複数のプロセスを設計する際、各プロセスを矛盾なく関連付け、各プロセスの実行順序を適切に決定することができる。
なお、設計作業支援機能120が、複数のサブ機能を有することで、設計作業支援機能120では、機器システム10に含まれる制御対象の機器において実行される複数のプロセスについての制御プログラムを提供することができる。
<設計作業支援装置のハードウェア構成>
次に、設計作業支援装置110のハードウェア構成について説明する。図2は、設計作業支援装置のハードウェア構成の一例を示す図である。
図2に示すように、設計作業支援装置110は、CPU(Central Processing Unit)201、ROM(Read Only Memory)202、RAM(Random Access Memory)203を有する。CPU201、ROM202、RAM203は、いわゆるコンピュータを形成する。
また、設計作業支援装置110は、補助記憶装置204、表示装置205、操作装置206、通信装置207、ドライブ装置208を有する。なお、設計作業支援装置110の各ハードウェアは、バス209を介して相互に接続される。
CPU201は、補助記憶装置204にインストールされている各種プログラム(例えば、設計作業支援プログラム等)を実行する演算デバイスである。
ROM202は、不揮発性メモリである。ROM202は、補助記憶装置204にインストールされている各種プログラムをCPU201が実行するために必要な各種プログラム、データ等を格納する主記憶デバイスとして機能する。具体的には、ROM202はBIOS(Basic Input/Output System)やEFI(Extensible Firmware Interface)等のブートプログラム等を格納する、主記憶デバイスとして機能する。
RAM203は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等の揮発性メモリである。RAM203は、補助記憶装置204にインストールされている各種プログラムがCPU201によって実行される際に展開される作業領域を提供する、主記憶デバイスとして機能する。
補助記憶装置204は、各種プログラムや、各種プログラムが実行される際に用いられる情報を格納する補助記憶デバイスである。
表示装置205は、設計作業支援装置110の内部状態を表示する表示デバイスである。操作装置206は、設計作業支援装置110のユーザ130が設計作業支援装置110に対して各種指示を入力する際に用いる入力デバイスである。
通信装置207は、不図示のネットワークに接続し通信を行うための通信デバイスである。
ドライブ装置208は記録媒体210をセットするためのデバイスである。ここでいう記録媒体210には、CD-ROM、フレキシブルディスク、光磁気ディスク等のように情報を光学的、電気的あるいは磁気的に記録する媒体が含まれる。また、記録媒体210には、ROM、フラッシュメモリ等のように情報を電気的に記録する半導体メモリ等が含まれていてもよい。
なお、補助記憶装置204にインストールされる各種プログラムは、例えば、配布された記録媒体210がドライブ装置208にセットされ、該記録媒体210に記録された各種プログラムがドライブ装置208により読み出されることでインストールされる。あるいは、補助記憶装置204にインストールされる各種プログラムは、通信装置207を介して、ネットワークよりダウンロードされることでインストールされてもよい。
<プロセス実行順序決定処理の流れ>
次に、プロセス実行順序決定部121によるプロセス実行順序決定処理の流れについて説明する。図3は、プロセス実行順序決定処理の流れを示すフローチャートである。ユーザ130からの指示に基づきプロセス実行順序決定部121が起動されることで、図3に示すプロセス実行順序決定処理が実行される。
ステップS301において、プロセス実行順序決定部121は、複数のプロセス全体に対する入力項目及び出力項目を取得する(第1の取得工程の一例)。
ステップS302において、プロセス実行順序決定部121は、ユーザ130により記述される各プロセスの処理内容を取得する(第2の取得工程の一例)。
ステップS303において、プロセス実行順序決定部121は、取得した処理内容に基づいて、各プロセスに含まれる入力項目(各プロセスに入力される変数。以下、入力変数と称す)を抽出する。また、プロセス実行順序決定部121は、取得した処理内容に基づいて、各プロセスに含まれる出力項目(各プロセスから出力される変数。以下、出力変数と称す)を抽出する(抽出工程の一例)。
ステップS304において、プロセス実行順序決定部121は、複数のプロセスの実行順序を決定する決定処理(決定工程の一例)を行う。また、プロセス実行順序決定部121は、各プロセス間の矛盾の一例である、循環参照の有無を判定する循環参照判定処理(第1の判定工程)を行う。なお、決定処理及び循環参照判定処理の詳細は後述する。
ステップS305において、プロセス実行順序決定部121は、複数のプロセスの実行順序を決定した後に、各プロセス間の他の矛盾の一例である、
・バッティングの有無をチェックする処理(第2の判定工程の一例)、及び、
・不足の有無をチェック処理(第3の判定工程の一例)、
を行う。
なお、バッティングの有無をチェックする処理とは、
プロセスの処理内容に含まれるいずれかの変数が、同一の条件(例えば、同一の周期、同一の実行モード(詳細は後述))のもとで、2つ以上のプロセスによって更新される構成になっていないか、
をチェックする処理をいう。
また、不足の有無をチェックする処理とは、
プロセスの処理内容に含まれる変数の中に、同一の条件(例えば、同一の周期、同一の実行モード(詳細は後述))のもとで、いずれのプロセスによっても更新されない変数が存在する構成になっていないか、
をチェックする処理をいう。
ステップS306において、プロセス実行順序決定部121は、ステップS305におけるチェック処理の結果、エラーを検出したか否かを判定する。ステップS306においてエラーを検出したと判定した場合には(ステップS306においてYesの場合には)、ステップS307に進む。
ステップS307において、プロセス実行順序決定部121は、検出したエラーの内容(対応するプロセスの処理内容の記述に誤りがあること)をユーザ130に報知する報知処理(報知工程の一例)を行う。
ステップS308において、プロセス実行順序決定部121は、ユーザ130による修正指示を受け付けたか否かを判定する。ステップS308において、修正指示を受け付けたと判定した場合には(ステップS308においてYesの場合には)、ステップS302に戻る。一方、ステップS308において、修正指示を受け付けていないと判定した場合には(ステップS308においてNoの場合には)、プロセス実行順序決定処理を終了する。
また、ステップS306においてエラーを検出しなかったと判定した場合には(ステップS306においてNoの場合には)、ステップS309に進む。
ステップS309において、プロセス実行順序決定部121は、決定した実行順序のもとで各プロセスのソースコードを生成し、プロセス実行順序決定処理を終了する。
<プロセス実行順序決定処理の概要>
次に、プロセス実行順序決定部121によるプロセス実行順序決定処理の概要について説明する(ただし、ここでは、循環参照判定処理、チェック処理については説明を省略し、入出力関係に基づいて各プロセスを関連付ける処理についてのみ説明する)。図4は、プロセス実行順序決定処理の概要を示す図である。
図4に示すように、プロセス実行順序決定部121では、まず、複数のプロセス全体に対する入力項目(始端)と、複数のプロセス全体に対する出力項目(終端)をそれぞれ取得する(符号410参照)。続いて、プロセス実行順序決定部121は、ユーザ130により記述される各プロセス(図4の例では、プロセス1~6)の処理内容を取得する(符号410参照)。なお、以降の説明において、「プロセス」とは、図4のプロセス1~6に示すように、ユーザ130が所定の記述フレームに記述する一まとまりの処理内容を指すものとする。また、上述したソースコードの生成は、この「プロセス」ごとの単位で行われるものとする。
続いて、プロセス実行順序決定部121では、各プロセスに含まれる入力変数と出力変数とを抽出し、各プロセス間の入出力関係を自動解析することで、複数のプロセスの実行順序を決定する。具体的には、プロセス実行順序決定部121では、複数のプロセス全体に対する入力項目及び出力項目を始端及び終端として、プロセスごとに抽出された入力変数及び出力変数を、異なるレイヤのプロセス間で順次接続していく。これにより、プロセス実行順序決定部121では、各プロセス間でパス(接続経路)を形成し、プロセス1~プロセス6の実行順序を自動的に決定する(符号420参照)。
<プロセス実行順序決定部の機能構成>
次に、プロセス実行順序決定部121の機能構成について説明する。図5は、プロセス実行順序決定部の機能構成の一例を示す図である。図5に示すように、プロセス実行順序決定部121は、端部情報取得部501、記述部502、解析部503、決定部504、判定部505、チェック部506、報知部507、生成部508を有する。
端部情報取得部501は、複数のプロセス全体に対する入力項目、及び、複数のプロセス全体に対する出力項目を取得する。また、端部情報取得部501は、取得した入力項目及び出力項目を、始端及び終端として決定部504に通知する。
記述部502は、ユーザ130により記述される複数のプロセスの処理内容を取得する。また、記述部502は、取得した複数のプロセスの処理内容を解析部503に通知する。
解析部503は、記述部502より通知された複数のプロセスの処理内容を解析し、各プロセスに含まれる入力変数及び出力変数を抽出する。また、解析部503は、各プロセスが、機器システム10が有する複数の運転制御モードのうちのいずれの運転制御モードに遷移した際に実行されるか、を示す「実行モード」を識別する。
なお、機器システム10が有する運転制御モードの種類は、予め定義されているものとし、各プロセスには、いずれの運転制御モードに遷移した際に実行されるかが記述されているものとする。
更に、解析部503は、プロセスごとに抽出した入力変数及び出力変数、各プロセスにおいて識別した実行モードを決定部504に通知する。
決定部504は、端部情報取得部501より通知された始端及び終端に対して、プロセスごとに抽出された入力変数及び出力変数を、異なるレイヤのプロセス間で順次接続していくことでパスを形成し、各プロセスの実行順序を決定する。
判定部505は、決定部504が異なるレイヤのプロセス間で、入力変数と出力変数とを接続することで形成されたパス内に出現する要素(プロセス、変数の少なくとも一方)を監視し、循環参照の有無を判定する。
循環参照とは、同一のパス内に同一の要素が複数出現する状態を指す。同一のパス内に同一の要素が複数出現すると、各プロセスの実行順序を決定する際、処理が循環して完了しなくなるため、判定部505では、循環参照の有無を判定する。なお、同一のパスとは、プロセスごとに抽出される入力変数及び出力変数を、プロセス間で接続することで形成されるパスであって、終端の方向(または下位のレイヤの方向)に向かって連なる1本のパスを指す。図4の例では、始端から見た場合、同一のパスとして、下記の3本が形成されている(なお、記載を簡略化するため、下記では、プロセスごとに抽出される入力変数及び出力変数の記載を省略している)。
・始端→プロセス1→プロセス3→プロセス2→終端、
・始端→プロセス1→プロセス4→プロセス6→プロセス2→終端、
・始端→プロセス1→プロセス5→プロセス6→プロセス2→終端。
また、判定部505は、循環参照有りと判定した場合、決定部504が各プロセスの実行順序を決定する処理を停止させ、判定結果をユーザ130に通知する。
チェック部506は、決定部504により複数のプロセスの実行順序が決定された状態で、バッティングの有無をチェックする処理及び不足の有無をチェックする処理を行う。チェック部506は、バッティングの有無をチェックする処理及び不足の有無をチェックする処理を行う際、各プロセスの実行モードを参照し、実行モードごとにチェック処理を行う。
報知部507は、チェック部506によりエラーが検出されたと判定された場合に、検出されたエラーの内容(対応するプロセスの処理内容の記述に誤りがあること)をユーザ130に報知する。
生成部508は、決定部504により決定された複数のプロセスの実行順序のもとで各プロセスのソースコードを生成する。
<各部の処理の具体例>
次に、プロセス実行順序決定部121の各部(ここでは、記述部502、解析部503、決定部504、判定部505、チェック部506、報知部507)の具体例について説明する。なお、以下の具体例は、機器システム10が空調システムであり、機器Aが圧縮機、機器Bが熱交換器、機器Cが室内機であるとして説明する。
(1)記述部の処理の具体例
はじめに、記述部502の処理の具体例について図6及び図7を用いて説明する。図6及び図7は、記述部の処理の具体例を示す第1及び第2の図である。図6及び図7に示すように、ユーザ130により記述されるプロセスの処理内容は任意である。
このうち、図6の例は、処理目的記述欄601に、プロセス600の処理目的が記述され、実行モード記述欄602に、プロセス600が実行される実行モードが記述された様子を示している。
具体的には、処理目的記述欄601に、"変数αの算出"が記述され、実行モード記述欄602に、"暖房定常制御"が記述された様子を示している。
また、図6の例は、処理内容記述欄603に、プロセス600の処理内容として、状態遷移処理が記述された様子を示している。
具体的には、リセット中の状態である場合、変数αには"()"で示す値が代入され、変数αが保持中の状態である場合、変数αには"()"で示す値(リセット中の状態で代入される値とは異なる値)が代入されることを示している。また、リセット中の状態から保持中の状態へと遷移するのは、実行モードが"暖房定常制御"モードであって、変数βの値が"XX"であることが条件となっていることを示している。
このように、ユーザ130は、プロセスの処理内容として、所定の実行モードにおける状態遷移処理を記述することができる。
同様に、図7の例は、処理目的記述欄601に、プロセス700の処理目的が記述され、実行モード記述欄602に、プロセス700が実行される実行モードが記述された様子を示している。
具体的には、処理目的記述欄701に、"変数x、yの算出"が記述され、実行モード記述欄702に、"暖房定常制御"が記述された様子を示している。
また、図7の例は、処理内容記述欄703に、プロセス700の処理内容として、変数α、βに基づく条件分岐処理が記述された様子を示している。
具体的には、実行モードが"暖房定常制御"モードのもと、変数αの値が閾値Thα以上かつ変数βの値が閾値Thβ以上の場合に、変数xにx/xが代入され、変数yに"()"で示す値のうち最大となる値が代入されることを示している。また、実行モードが"暖房定常制御"モードのもと、変数αの値が閾値Thα以上でないか、あるいは変数βの値が閾値Thβ以上でない場合、変数xにx+xが代入され、変数yに"()"で示す値に係数aを乗算した値が代入されることを示している。
このように、ユーザ130は、プロセスの処理内容として、所定の実行モードにおける条件分岐処理を記述することができる。
(2)解析部の処理の具体例
次に、解析部503の処理の具体例について図8及び図9を用いて説明する。図8及び図9は、解析部の処理の具体例を示す第1及び第2の図である。図8及び図9は、図6及び図7に示したプロセス600及びプロセス700を解析対象として解析を行った様子を示している。
例えば、図8に示すように、解析部503では、記述部502より通知されたプロセス600の処理内容記述欄603を解析し、代入文及び条件文を特定する。また、解析部503では、特定した代入文の左辺を出力変数(符号810参照)、右辺を入力変数(符号820)として抽出する。また、解析部503では、特定した条件文の左辺及び右辺を入力変数(符号830)として抽出する。更に、解析部503では、実行モード記述欄602を参照し、プロセス600が実行する実行モードを識別する。
同様に、図9に示すように、解析部503では、記述部502より通知されたプロセス700の処理内容記述欄703を解析し、代入文及び条件文を特定する。また、解析部503では、特定した代入文の左辺を出力変数(符号910参照)、右辺を入力変数(符号920)として抽出する。また、解析部503では、特定した条件文の左辺及び右辺を入力変数(符号930)として抽出する。更に、解析部503では、実行モード記述欄702を参照し、プロセス700が実行する実行モードを識別する。
(3)決定処理及び循環参照判定処理の流れ
次に、決定部504及び判定部505による決定処理及び循環参照判定処理(図3のステップS304)の流れについて説明する。図10は、決定処理及び循環参照判定処理の流れを示すフローチャートである。
ステップS1001において、決定部504は、端部情報取得部501より取得した終端を、終端位置に配置する。
ステップS1002において、決定部504は、記述部502にて処理内容が記述された複数のプロセスのうち、終端を出力変数として出力するプロセスを特定し、特定したプロセスを終端と接続する。
ステップS1003において、決定部504は、接続したプロセスの処理内容から抽出された入力変数を、解析部503から取得する。
ステップS1004において、判定部505は、解析部503から取得した入力変数に基づいて、循環参照の有無を判定する。
ステップS1005において、決定部504は、記述部502にて処理内容が記述された複数のプロセスのうち、解析部503から取得した入力変数を出力変数として出力するプロセスを特定し、特定したプロセスを接続する。
ステップS1006において、決定部504は、接続したプロセスの処理内容から抽出された入力変数を、解析部503から取得する。
ステップS1007において、決定部504は、全パスについて始端となる入力変数が出現したか否かを判定する。ステップS1007において、始端となる入力変数が出現していないパスがあると判定した場合には(ステップS1007においてNoの場合には)、ステップS1004に戻る。
一方、ステップS1007において、全パスについて始端となる入力変数が出現したと判定した場合には(ステップS1007においてYesの場合には)、決定処理及び循環参照判定処理を終了する。
(4)決定部の処理の具体例
次に、決定部504の処理の具体例について説明する(ここでは、判定部505が循環参照の有無を判定する処理についての記載は省略する)。図11~図13は、決定部の処理の具体例を示す第1乃至第3の図である。
図11において、符号1110は、決定部504が、端部情報取得部501より取得した始端(外気センサ値)、終端(圧縮機周波数)、及び、記述部502にて処理内容が記述されたプロセス(プロセス1~プロセス6)の具体例を示している。
決定部504では、まず、端部情報取得部501より取得した終端を、終端位置に配置する(符号1120参照)。続いて、決定部504では、終端を出力変数として出力するプロセスとして、プロセス2を特定し、特定したプロセス2をレイヤ1に配置するとともに、終端と接続する(符号1130参照)。
続いて、決定部504では、プロセス2の処理内容から抽出された入力変数を取得する。図11の例は、決定部504が、2つの入力変数を取得した様子を示している(符号1140参照)。
続いて、図12に示すように、決定部504では、プロセス2の2つの入力変数を出力変数として出力するプロセスとして、プロセス3及びプロセス6を特定する。また、特定したプロセス3及びプロセス6をレイヤ2に配置するとともに、プロセス2と接続する(符号1210参照)。
続いて、決定部504では、プロセス3及びプロセス6の処理内容から抽出された入力変数を取得する。図12の例は、決定部504が、プロセス3について1つの入力変数を取得し、プロセス6について2つの入力変数を取得した様子を示している(符号1220参照)。
以下、決定部504では、同様の処理を繰り返すことで、始端まで到達する。図13の符号1310は、決定部504が始端に到達した様子を示している。このように、プロセスごとに抽出された入力変数及び出力変数を取得し、異なるレイヤのプロセス間で接続し、パスを形成することで(各プロセス間の入出力関係を自動解析することで)、決定部504によれば、複数のプロセスの実行順序を決定することができる。
(5)判定部の処理の具体例
次に、判定部505の処理の具体例について説明する。図14は、判定部の処理の具体例を示す図である。なお、ここでは、説明の簡略化のため、決定部504が決定する複数のプロセスの実行順序のうち、特定の2つのプロセスの実行順序を決定する際の判定部505の処理の具体例について説明する。
図14に示すように、決定部504により、変数Xを出力変数として出力するプロセス1410に入力変数として入力される変数Yを出力するプロセス1420が、プロセス1410に接続されたとする。また、解析部503により、プロセス1420の処理内容が解析され、プロセス1420に入力される入力変数として変数Xが抽出されていたとする。
この場合、判定部505では、プロセス1420に入力変数として入力される変数Xと同一変数(例えば、変数名が同一の変数)が、同一パス内に出現するか否かを監視することで、循環参照の有無を判定する。図14の例では、同一パス(変数X→プロセス1420→変数Y→プロセス1410→変数X)内に、変数Xが2つ出現するため、判定部505では、循環参照有り(プロセス間の矛盾有り)と判定する(×印1400参照)。また、判定部505では、各プロセスの実行順序を決定する処理を停止させ、判定結果をユーザ130に通知する。
このように、判定部505では、決定部504がプロセス間で入力変数と出力変数とを接続し、パスを形成するごとに、循環参照の有無を判定する。これにより、判定部505によれば、決定部504による決定処理が循環し、完了しなくなるといった事態を回避することができる。
なお、判定部505により循環参照有りと判定された場合、ユーザ130は、対応するプロセスを修正することで、プロセス間の矛盾を解消する。例えば、ユーザ130は、プロセス1420の処理内容を、変数Xを入力変数とする処理内容から、変数Zを入力変数とする処理内容に修正する。これにより、同一パス内に同一変数(変数名が同一の変数)が出現するといった事態を回避することができる(符号1421参照)。
あるいは、ユーザ130は、プロセス1420の処理内容を、同一ループ内の変数Xを入力変数として用いる処理から、1ループ前の変数Xを入力変数として用いる処理内容に修正する。図14の符号1422において、"変数X.pre"とは、プロセス1420に入力変数として入力される変数Xが、1ループ前の変数Xであることを示している。これにより、同一パス内に同一変数(変数名が同一の変数)が出現するといった事態を回避することができる(符号1422参照)。
(6)チェック部の処理の具体例
次に、チェック部506の処理の具体例について説明する。図15及び図16は、チェック部の処理の具体例を示す第1及び第2の図である。
このうち、図15は、チェック部506が、バッティングの有無をチェックする処理を行った様子を示している。なお、図15の例は、
・解析部503により、プロセス1530の処理内容が解析され、プロセス1530に入力変数として入力される変数Xが抽出されたこと、
・決定部504により、変数Xを出力変数として出力するプロセス1510及びプロセス1520が特定され、プロセス1530に接続されたこと、
・決定部504により接続されたプロセス1510及びプロセス1520が、いずれも、解析部503により、実行モードが"冷房定常制御中"モードであると識別されたこと、
を示している。
この場合、チェック部506では、
プロセス1530の処理内容に含まれる入力変数("変数X")が、プロセス1530と同一の条件(同一の周期、同一の"冷房定常制御中"モード)のもとで、2つ以上のプロセス1510、1520によって更新される(プロセス間に矛盾有り)、
と判定する。この結果、チェック部506では、バッティングエラーを検出する(×印1500参照)。
なお、チェック部506によりバッティングエラーが検出された場合、ユーザ130は、対応するプロセスを修正することでプロセス間の矛盾を解消する。例えば、ユーザ130は、プロセス1520の実行モード記述欄を"冷房定常制御中"から"暖房定常制御中"に修正する。これにより、プロセスの処理内容に含まれる入力変数が、同一の条件のもとで、2つ以上のプロセスによって更新される状態(バッティングエラー)を回避することができる(符号1540参照)。
一方、図16は、チェック部506が、不足の有無をチェックする処理を行った様子を示している。なお、図16の例は、
・解析部503により、プロセス1630の処理内容が解析され、プロセス1630が"定常制御中"モード及び"起動制御中"モードにおいて実行されること、
・解析部503により、プロセス1630の処理内容が解析され、プロセス1630に入力変数として入力される変数Xが抽出されたこと、
・決定部504により、変数Xを出力変数として出力するプロセス1610及びプロセス1620が特定され、プロセス1630に接続されたこと、
・決定部504により接続されたプロセス1610及びプロセス1620が、いずれも、解析部503により実行モードが"定常制御中"モード("冷房"か"暖房"かの違いはあるものの、いずれも、"定常制御中"モード)であると識別されたこと、
を示している。
この場合、チェック部506では、
プロセス1630の処理内容に含まれる変数の中に、プロセス1630と同一の条件(同一の周期、同一の"起動制御中"モード)のもとで、いずれのプロセスによっても更新されない入力変数("変数X")が存在する(プロセス間に矛盾有り)、
と判定する。この結果、チェック部506では、不足エラーを検出する(×印1600参照)。
なお、チェック部506により不足エラーが検出された場合、ユーザ130は、対応するプロセスを追加することでプロセス間の矛盾を解消する。例えば、ユーザ130は、変数Xを出力変数として出力するプロセスであって、実行モードが"起動制御中"であるプロセス1640を追加する。これにより、プロセスの処理内容に含まれる変数の中に、同一の条件のもとで、いずれのプロセスによっても更新されない変数が存在する状態(不足エラー)を解消することができる(符号1659参照)。
(7)報知部の処理の具体例
次に、報知部の処理の具体例について説明する。図17は、報知部の処理の具体例を示す図である。図17において、符号1700は、決定部504により、プロセスの実行順序が決定され、チェック部506により、バッティングの有無及び不足の有無がチェックされた様子を示している。
具体的には、プロセス2に対してバッティングエラーが検出され、ユーザ130に報知された様子を示している(×印1500参照)。また、プロセス6において不足エラーが検出され、ユーザ130に報知された様子を示している。
このように、チェック部506により、バッティングの有無及び不足の有無がチェックされ、エラーが検出された場合、報知部507では、決定された実行順序に従って配列されたプロセス上において、エラーが検出されたプロセスを明示する。これにより、ユーザは、いずれのプロセス間に矛盾があったかを容易に把握することができる。
<まとめ>
以上の説明から明らかなように、第1の実施形態に係るプロセス実行順序決定プログラムでは、
・制御対象の機器において実行される複数のプロセスの、実行順序を決定する工程をコンピュータに実行させる。
・実行順序を決定する工程において形成された接続経路内に出現する要素を監視し、接続経路内に同一の要素が出現したか否かを判定する工程をコンピュータに実行させる。
これにより、第1の実施形態に係るプロセス実行順序決定プログラムによれば、ユーザは、循環参照の有無の観点から、各プロセスが矛盾なく関連付けられているか否かを容易に把握することができる。
また、第1の実施形態に係るプロセス実行順序決定プログラムでは、
・プロセスの処理内容に含まれるいずれかの変数が、2つ以上のプロセスによって更新されるか否かを判定する工程をコンピュータに実行させる。
・プロセスの処理内容に含まれる変数の中に、いずれのプロセスによっても更新されない変数が存在するか否かを判定する工程をコンピュータに実行させる。
これにより、第1の実施形態に係るプロセス実行順序決定プログラムによれば、ユーザは、バッティングチェック及び不足チェックの観点から、各プロセスが矛盾なく関連付けられているか否かを容易に把握することができる。
つまり、第1の実施形態によれば、制御対象の機器において実行される複数のプロセスを設計する際の、実行順序を決定する作業を支援することができる。
[第2の実施形態]
上記第1の実施形態では、解析部503が各プロセスから入力変数及び出力変数を抽出する際、代入文及び条件文を特定し、代入文の左辺を出力変数、代入文の右辺を入力変数、条件文の左辺及び右辺を入力変数、として抽出するものとして説明した。しかしながら、各プロセスにおける入力変数及び出力変数の抽出アルゴリズムはこれに限定されず、他の抽出アルゴリズムに基づいて入力変数及び出力変数を抽出するように構成してもよい。
また、上記第1の実施形態では、判定部505が循環参照の有無を判定する際、具体例として、同一パス内に同一の変数が出現する場合について説明した。しかしながら、同一パス内に他の同一の要素(同一のプロセス)が出現する場合についても同様である。
また、上記第1の実施形態では、判定部505が循環参照の有無を判定する際、及び、チェック部506がバッティングの有無をチェックする際、同一の変数であるか否かを、変数名に基づいて判定するものとして説明した。しかしながら、循環参照の有無の判定やバッティングの有無のチェックにおいて同一の変数であるか否かを判定するにあたっては、変数に対応付けられた属性情報であって、変数名以外の属性情報を用いてもよい。
また、上記第1の実施形態では、報知部507がエラーの内容(対応するプロセスの処理内容の記述に誤りがあること)をユーザ130に報知する際、決定された実行順序に従って配列されたプロセス上に、明示するものとして説明した。しかしながら、エラーの内容の明示方法はこれに限定されず、例えば、"変数Xを算出する同一の実行モードのプロセスが複数存在します。具体的には、プロセス3とプロセス6です。"などのように、文言により表現してもよい。また、決定された実行順序に従って配列されたプロセス上に明示する場合であっても、その表示態様は図17に示した表示態様に限定されず、他の任意の方法により明示してもよい。
また、上記第1の実施形態では、不足チェックの際、プロセスの処理内容に含まれる変数を対象として、不足チェックを行うものとして説明した。しかしながら、プロセスの処理内容に含まれる変数のうち、始端となる変数は、いずれのプロセスによっても更新されることがない。このため、チェック部506は、プロセスの処理内容に含まれる変数から、始端となる変数を除外して、不足チェックを行うように構成されているものとする。
また、上記第1の実施形態では、プロセスの具体例として、処理内容が記述されるプロセスについてのみ説明したが、プロセスの種類はこれに限定されず、例えば、運転制御モードを決定するプロセス(運転制御モード決定プロセス)が含まれていてもよい。
運転制御モード決定プロセスは、運転制御モードの遷移に関わる入力(例えば、リモコンからの暖房指示や冷房指示等)に基づいて、予め定義された複数の運転制御モードの中から、いずれかの運転制御モードを決定する。
なお、プロセスの実行順序を決定する際、始端から終端までのパスの途中に、運転制御モード決定プロセスが組み込まれると、各プロセスは、例えば、以下のように動作する。
・当該運転制御モード決定プロセスよりも始端側に配置されたプロセスは、1ループ前の運転制御モード決定プロセスにより決定された運転制御モードで動作する。
・当該運転制御モード決定プロセスよりも終端側に配置されたプロセスは、当該運転制御モード決定プロセスにより決定された運転制御モードで動作する。
このため、同一パス内において、仮に、運転制御モード決定プロセスの始端側と終端側とに、同一変数が出現したとしても、判定部505が、循環参照ありと判定することはない。
[第3の実施形態]
上記第1及び第2の実施形態では、プロセスごとに抽出された入力変数及び出力変数をプロセス間で接続し、接続経路を形成することで実行順序を決定する場合について説明した。しかしながら、実行順序の決定方法はこれに限定されず、例えば、グラフ理論を用いてプロセス間の接続関係を特定することで、実行順序を決定してもよい。以下、第3の実施形態について、上記第1及び第2の実施形態との相違点を中心に説明する。
<グラフ理論の概要>
はじめにグラフ理論の概要について説明する。グラフ理論とは、頂点とそれらを結ぶ辺によってあらわされる対象であるグラフの性質を分析する理論である。当該グラフ理論によれば、
・複数のプロセス、
・複数のプロセスそれぞれの処理内容に含まれる変数(入力変数、出力変数)、
を頂点とみなし、
・各プロセスと、各プロセスに入力される入力変数との関係、
・各プロセスと、各プロセスから出力される出力変数との関係、
を辺(有向辺)とみなすことで、複数のプロセスと、複数のプロセスそれぞれの処理内容に含まれる変数との間の関係性を、行列(具体的には、有向グラフの隣接行列)として示すことができる。
そして、当該有向グラフの隣接行列を累乗することにより、頂点間の接続関係を分析することが可能となる。例えば、当該有向グラフの隣接行列を2乗することにより、変数を介したプロセス間の接続関係を特定することが可能となる。
<プロセス間の接続関係を特定する処理の具体例>
次に、グラフ理論を用いてプロセス間の接続関係を特定する処理の具体例について説明する。図18及び図19は、プロセス間の接続関係を特定する処理の具体例を示す第1及び第2の図である。
このうち、図18の符号1810は、ユーザ130により記述される各プロセス(図18の例では、プロセス1~3)の処理内容を示している。
本実施形態において、プロセス実行順序決定部121の解析部503は、各プロセスの処理内容を取得すると、各プロセスに含まれる入力変数と出力変数とを抽出する。続いて、プロセス実行順序決定部121の決定部504は、抽出した入力変数及び出力変数と各プロセスとの間の入出力関係を表すテーブル1820を生成する。
テーブル1820に示すように、決定部504は、行方向に、入力変数("変数3"、"変数4"、"変数5")、出力変数("変数4"、"変数5"、"変数6")、プロセス("プロセス1"、"プロセス2"、"プロセス3")を配置する。つまり、グラフ理論における各頂点を行方向に配置する。
同様に、決定部504は、列方向に、入力変数("変数3"、"変数4"、"変数5")、出力変数("変数4"、"変数5"、"変数6")、プロセス("プロセス1"、"プロセス2"、"プロセス3")を配置する。つまり、グラフ理論における各頂点を列方向に配置する。
なお、テーブル1820において、行方向に配置された項目と、列方向に配置された項目とが交差する領域には、
・列方向に配置された項目=入力対象の要素、行方向に配置された項目=入力対象が入力される入力先の要素、の関係にある場合、または、
・列方向に配置された項目=出力元の要素、行方向に配置された項目=出力元から出力される出力対象の要素、の関係にある場合、
"1"(有向辺が存在することを示す値)が格納される。
また、テーブル1820において、行方向に配置された項目と、列方向に配置された項目とが交差する領域には、
・列方向に配置された項目=入力対象の要素、行方向に配置された項目=入力対象が入力される入力先の要素、の関係にない場合、かつ、
・列方向に配置された項目=出力元の要素、行方向に配置された項目=出力元から出力される出力対象の要素、の関係にない場合、
"0"(有向辺が存在しないことを示す値)が入力される。
例えば、列方向に配置された"変数3"と、行方向に配置された"プロセス1"とは、"変数3"=入力対象の要素、"プロセス1"=入力対象が入力される入力先の要素、の関係にある。このため、列方向に配置された"変数3"と、行方向に配置された"プロセス1"とが交差する領域(領域1821)には、"1"が格納される。
同様に、列方向に配置された"プロセス1"と、行方向に配置された"変数4"とは、"プロセス1"=出力元の要素、"変数4"=出力元から出力される出力対象の要素、の関係にある。このため、列方向に配置された"プロセス1"と、行方向に配置された"変数4"とが交差する領域(領域1822)には、"1"が格納される。
一方、例えば、列方向に配置された"変数3"と、行方向に配置された"プロセス2"、"プロセス3"とは、"変数3"=入力対象の要素、"プロセス2"、"プロセス3"=入力対象が入力される入力先の要素、の関係にない。このため、列方向に配置された"変数3"と、行方向に配置された"プロセス2"、"プロセス3"とが交差する領域(領域1823)には、"0"が格納される。
同様に、例えば、列方向に配置された"プロセス1"と、行方向に配置された"変数3"、"変数5"、"変数6"とは、"プロセス1"=出力元の要素、"変数3"、"変数5"、"変数6"=出力元から出力される出力対象の要素、の関係にない。このため、列方向に配置された"プロセス1"と、行方向に配置された"変数3"、"変数5"、"変数6"とが交差するそれぞれの領域(領域1824)には、"0"が格納される。
続いて、プロセス実行順序決定部121の決定部504は、生成したテーブル1820に基づいて、行列1830を作成する。行列1830は、テーブル1820の各領域に格納された値("0"または"1")を、そのまま配列した行列(グラフ理論における有向グラフの隣接行列)である。
続いて、プロセス実行順序決定部121の決定部504は、図19に示すように、行列1830を2乗する演算を行い、演算結果をテーブル1910に格納する。テーブル1910は、行方向に配置された項目及び列方向に配置された項目が、いずれも、テーブル1820に配置された項目と同じ項目を有するテーブルである。
なお、行列1830を2乗する演算を行うことで得られる演算結果は、変数を介して接続される2つのプロセスの接続関係を表す。
例えば、領域群1911は、"プロセス1"、"プロセス2"、"プロセス3"と、"プロセス1"、"プロセス2"、"プロセス3"とが、変数を介して接続されるか否かを表している。
具体的には、列方向に配置された"プロセス1"と、行方向に配置された"プロセス3"とが交差する領域には、演算結果として"1"が格納されている。したがって、"プロセス1"と"プロセス3"とは、変数を介して(具体的には、"変数4"を介して)、接続される関係にあることを示している。
同様に、列方向に配置された"プロセス2"と、行方向に配置された"プロセス3"とが交差する領域には、演算結果として"1"が格納されている。したがって、"プロセス2"と"プロセス3"とは、変数を介して(具体的には、"変数5"を介して)、接続される関係にあることを示している。
一方、領域群1911のその他の領域には、演算結果として"0"が格納されている。したがって、その他のプロセス間には、接続関係がないことを示している。
続いて、プロセス実行順序決定部121の決定部504は、領域群1911における接続関係に基づいて、プロセスの実行順序を決定する。
図19において符号1920は、テーブル1910の領域群1911により特定されるプロセス間の接続関係を示している。
本実施形態の場合、複数のプロセスを頂点、プロセス間の接続関係を有向辺とみなしたグラフを考え、プロセス実行順序決定部121の決定部504では、このグラフにトポロジカルソートなどのソート手法を適用することで、複数のプロセスの実行順序を決定する。
<まとめ>
以上の説明から明らかなように、第3の実施形態に係るプロセス実行順序決定プログラムでは、
・複数のプロセスと、複数のプロセスそれぞれの処理内容に含まれる変数との間の関係性を示す行列を作成する。
・作成した行列を累乗した結果から特定される、変数を介したプロセス間の接続関係に基づいて、複数のプロセスの実行順序を決定する。
これにより、第3の実施形態に係るプロセス実行順序決定プログラムによれば、上記第1の実施形態と同様の効果を享受することができるとともに、更に、プロセスの実行順序を決定する際の計算コストを削減することができる。
以上、実施形態を説明したが、特許請求の範囲の趣旨及び範囲から逸脱することなく、形態や詳細の多様な変更が可能なことが理解されるであろう。
10 :機器システム
110 :設計作業支援装置
120 :設計作業支援機能
121 :プロセス実行順序決定部
501 :端部情報取得部
502 :記述部
503 :解析部
504 :決定部
505 :判定部
506 :チェック部
507 :報知部
508 :生成部
600、700 :プロセス
601、701 :処理目的記述欄
602、702 :実行モード記述欄
603、703 :処理内容記述欄
1400 :×印
1500、1600 :×印

Claims (9)

  1. 制御対象の機器において実行される複数のプロセスのうちのいずれかのプロセスが接続された場合に、接続経路内に同一の要素が出現したかを判定する第1の判定工程と、
    前記第1の判定工程において判定されたことに応じて、ユーザにより、同一の要素が出現しない接続経路に修正されることで、前記複数のプロセスの実行順序を決定する決定工程と、
    前記プロセスの処理内容に含まれるいずれかの変数が、2つ以上のプロセスによって更新されるか否かを判定する第2の判定工程と、
    前記プロセスの処理内容に含まれる変数の中に、いずれのプロセスによっても更新されない変数が存在するか否かを判定する第3の判定工程と、コンピュータに実行させるためのプロセス実行順序決定プログラムであって、
    前記第1の判定工程において、前記複数のプロセスそれぞれの処理内容に含まれる変数と、前記複数のプロセスとの間の関係性を示す行列を作成し、作成した行列を累乗した結果から特定される、変数を介したプロセス間の接続関係に基づいて前記プロセスを接続し、前記接続経路を形成するプロセス実行順序決定プログラム。
  2. 前記要素には、前記プロセスと、前記プロセスの処理内容に含まれる変数のいずれか一方が含まれる、請求項1に記載のプロセス実行順序決定プログラム。
  3. 前記複数のプロセス全体に対する入力項目及び出力項目を始端及び終端として、プロセスごとに抽出された入力変数及び出力変数をプロセス間で接続することで前記プロセスを接続し、前記接続経路を形成する、請求項1に記載のプロセス実行順序決定プログラム。
  4. 前記行列は、前記複数のプロセス及び前記複数のプロセスそれぞれの処理内容に含まれる変数をグラフ理論における頂点とみなし、かつ、前記プロセスと該プロセスに含まれる変数との入出力関係を有向辺とみなした場合の有向グラフの隣接行列である、請求項1に記載のプロセス実行順序決定プログラム。
  5. 前記第1の判定工程は、
    接続経路内に同一の要素が出現したと判定した場合に、判定結果を通知する、請求項1に記載のプロセス実行順序決定プログラム。
  6. 前記複数のプロセス全体に対する入力項目及び出力項目を取得する第1の取得工程と、
    前記複数のプロセスそれぞれの処理内容を取得する第2の取得工程と、
    前記第2の取得工程において取得された処理内容から、プロセスごとの入力変数及び出力変数を抽出する抽出工程と
    を更にコンピュータに実行させるための、請求項3または4に記載のプロセス実行順序決定プログラム。
  7. 前記第2の判定工程において2つ以上のプロセスによって更新されると判定された場合に、報知する報知工程を更にコンピュータに実行させるための、請求項1に記載のプロセス実行順序決定プログラム。
  8. 前記第3の判定工程においていずれのプロセスによっても更新されない変数が存在すると判定された場合に、報知する報知工程を更にコンピュータに実行させるための、請求項1に記載のプロセス実行順序決定プログラム。
  9. 第1の判定手段が、制御対象の機器において実行される複数のプロセスのうちのいずれかのプロセスが接続された場合に、接続経路内に同一の要素が出現したかを判定する第1の判定工程と、
    決定手段が、前記第1の判定工程において判定されたことに応じて、ユーザにより、同一の要素が出現しない接続経路に修正されることで、前記複数のプロセスの実行順序を決定する決定工程と、
    第2の判定手段が、前記プロセスの処理内容に含まれるいずれかの変数が、2つ以上のプロセスによって更新されるか否かを判定する第2の判定工程と、
    第3の判定手段が、前記プロセスの処理内容に含まれる変数の中に、いずれのプロセスによっても更新されない変数が存在するか否かを判定する第3の判定工程と、を有し、
    前記第1の判定工程において、前記複数のプロセスそれぞれの処理内容に含まれる変数と、前記複数のプロセスとの間の関係性を示す行列を作成し、作成した行列を累乗した結果から特定される、変数を介したプロセス間の接続関係に基づいて前記プロセスを接続し、前記接続経路を形成するプロセス実行順序決定方法。
JP2021051522A 2020-03-31 2021-03-25 プロセス実行順序決定プログラム及びプロセス実行順序決定方法 Active JP7054033B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020062593 2020-03-31
JP2020062593 2020-03-31

Publications (2)

Publication Number Publication Date
JP2021163489A JP2021163489A (ja) 2021-10-11
JP7054033B2 true JP7054033B2 (ja) 2022-04-13

Family

ID=77930041

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021051522A Active JP7054033B2 (ja) 2020-03-31 2021-03-25 プロセス実行順序決定プログラム及びプロセス実行順序決定方法

Country Status (3)

Country Link
US (1) US20230126201A1 (ja)
JP (1) JP7054033B2 (ja)
WO (1) WO2021200740A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4641402A3 (en) * 2022-02-23 2025-12-17 Celonis SE Method for storing and reconstructing a graph

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000099344A (ja) 1998-09-22 2000-04-07 Hitachi Ltd プログラム作成方法及びコンピュータ読み取り可能な記録媒体
JP2004521402A (ja) 2000-07-18 2004-07-15 シーメンス アクチエンゲゼルシヤフト プロセスの機能可能な順序を自動的に得る方法およびこのためのツール

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2545474B2 (ja) * 1989-10-03 1996-10-16 航空宇宙技術研究所長 複合プログラムの構成装置
US5408663A (en) * 1993-11-05 1995-04-18 Adrem Technologies, Inc. Resource allocation methods
US5692153A (en) * 1995-03-16 1997-11-25 International Business Machines Corporation Method and system for verifying execution order within a multiprocessor data processing system
US6536935B2 (en) * 1997-07-23 2003-03-25 Atarum Institute Computerized system for market-based constraint optimization
US8887163B2 (en) * 2010-06-25 2014-11-11 Ebay Inc. Task scheduling based on dependencies and resources
US10489213B2 (en) * 2014-10-01 2019-11-26 Red Hat, Inc. Execution of a method at a cluster of nodes
US10514994B2 (en) * 2015-06-09 2019-12-24 Satori Worldwide, Llc Distributed scalable workload testing
JP6807556B2 (ja) * 2015-10-01 2021-01-06 パナソニックIpマネジメント株式会社 空調制御方法、空調制御装置及び空調制御プログラム
US11263551B2 (en) * 2018-11-08 2022-03-01 Sap Se Machine learning based process flow engine
US11016804B2 (en) * 2019-08-02 2021-05-25 Argo AI, LLC Ahead of time scheduling process for autonomous vehicles
US20210061053A1 (en) * 2019-08-26 2021-03-04 GM Global Technology Operations LLC System and Method of Vehicle Climate Control Using Window Optical Properties
US20210173706A1 (en) * 2019-12-04 2021-06-10 International Business Machines Corporation Cognitive scheduling engine

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000099344A (ja) 1998-09-22 2000-04-07 Hitachi Ltd プログラム作成方法及びコンピュータ読み取り可能な記録媒体
JP2004521402A (ja) 2000-07-18 2004-07-15 シーメンス アクチエンゲゼルシヤフト プロセスの機能可能な順序を自動的に得る方法およびこのためのツール

Also Published As

Publication number Publication date
WO2021200740A1 (ja) 2021-10-07
JP2021163489A (ja) 2021-10-11
US20230126201A1 (en) 2023-04-27

Similar Documents

Publication Publication Date Title
RU2725760C1 (ru) Способ и устройство определения состояния базы данных и способ и устройство верификации согласованности
US20130151551A1 (en) Computer-implemented method of geometric feature detection
US9176732B2 (en) Method and apparatus for minimum cost cycle removal from a directed graph
JP7054033B2 (ja) プロセス実行順序決定プログラム及びプロセス実行順序決定方法
US8510708B2 (en) Method for optimizing a control program for actuators
US8332254B2 (en) Automatic insertion point identification in model merging operations
US9836289B2 (en) Executable code generation program and executable code generation device
US6505340B2 (en) Circuit synthesis method
JP2008123517A (ja) 検証方法、システム及び記憶媒体
JP7782239B2 (ja) 仕様決定支援装置、仕様書生成システム、および方法
KR20200048796A (ko) 다층 회귀분석을 이용한 자가 진화 에이전트 기반 시뮬레이션 방법 및 장치
JP6974772B2 (ja) 仕様記述プログラム及び仕様記述方法
CN116088869A (zh) 一种面向智能用电终端的操作系统适配方法及系统
JP5407718B2 (ja) 検証用データ作成方法,及び、検証用データ作成プログラム
TWI761750B (zh) 類比電路效能自動化分析系統及其方法
JP2010039557A (ja) 管理装置、その制御方法及び制御プログラム
CN113836159B (zh) 中央空调的机型选型方法、系统、计算机设备和存储介质
CN119377015B (zh) 一种配置镜像内存的方法、装置、设备及存储介质
KR101225577B1 (ko) 어셈블리 언어 코드의 분석 장치 및 방법
US10990414B2 (en) System construction assistance system, information processing device, method and storage medium for storing program
JP2010097328A (ja) ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム
CN103797432B (zh) Ft图生成辅助装置以及ft图生成辅助方法
CN111352754A (zh) 一种数据存储检错纠错方法及数据存储装置
JP5248762B2 (ja) 設計データ依存関係管理装置、設計データ依存関係管理方法及びプログラム
US20080104389A1 (en) Computer system model generation with tracking of actual computer system configuration

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210615

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210805

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210914

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211026

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20211026

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20211104

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20211109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211222

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220314

R151 Written notification of patent or utility model registration

Ref document number: 7054033

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151