(57)【要約】【課題】より簡便に高い精度の制御ロジックを生成可能とする。【解決手段】制御対象を制御する制御装置において解釈及び実行され、ＦＢＤ言語による制御ロジックを生成するロジック生成装置１０では、制御ロジックに含まれる複数の信号線に係る情報を個別に保持した状態で、当該複数の信号線を一つに取りまとめる構造体信号線を定義する構造体定義情報と、当該構造体定義情報を用いて記述された制御ロジックに係るロジック情報と、を取得する取得部に対応するロジック情報取得部１３及び構造体定義部１４と、取得部において取得された情報を用いて、前記構造体定義情報を利用した制御ロジックを生成する生成部１５と、を有する。【選択図】図１
2018026043.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御する制御装置において解釈及び実行され、ＦＢＤ言語による制御ロジックを生成するロジック生成装置であって、
前記制御ロジックに含まれる複数の信号線に係る情報を個別に保持した状態で、当該複数の信号線を一つに取りまとめる構造体信号線を定義する構造体定義情報と、当該構造体定義情報を用いて記述された制御ロジックに係るロジック情報と、を取得する取得部と、
前記取得部において取得された情報を用いて、前記構造体定義情報を利用した制御ロジックを生成する生成部と、
を有するロジック生成装置。
【請求項２】
前記構造体定義情報は、前記構造体信号線として取りまとめられた前記複数の信号線を個別に識別し、前記制御ロジックにおいて使用することで前記複数の信号線に含まれる特定の信号線のみを記述することが可能な識別子情報を含む請求項１に記載のロジック生成装置。
【請求項３】
前記生成部において生成された前記構造体定義情報を利用した制御ロジックを、前記構造体定義情報を利用しない記述に変更する展開部と、
前記展開部において前記構造体定義情報を利用しない記述に変更された前記制御ロジックを出力する出力部と、
をさらに有する請求項１又は２に記載のロジック生成装置。
【請求項４】
制御対象を制御する制御装置において解釈及び実行され、ＦＢＤ言語による制御ロジックを、１又は複数の装置によって構成されるロジック生成装置を用いて生成するロジック生成方法であって、
前記制御ロジックに含まれる複数の信号線に係る情報を個別に保持した状態で、当該複数の信号線を一つに取りまとめる構造体信号線を定義する構造体定義情報と、当該構造体定義情報を用いて記述された制御ロジックに係るロジック情報と、を取得する取得ステップと、
前記取得ステップにおいて取得された情報を用いて、前記構造体定義情報を利用した制御ロジックを生成する生成ステップと、
を含むロジック生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロジック生成装置及びロジック生成方法に関する。
【背景技術】
【０００２】
従来から、制御対象からデータを収集しながら制御対象を監視すると共に、収集したデータ等に基づいて制御対象を制御する制御装置を備える制御システムがプラント等で用いられている。制御システムに含まれる制御装置は、予め作成された制御ロジックを用いて各種の制御を行う。この制御ロジックは、ＦＢＤ（ファンクション・ブロック・ダイアグラム）言語等の図形言語を用いて作成される場合がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２１３２７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＦＢＤ言語を用いてロジックを作成する場合、１つの信号は１本の線で記述される。そのため、信号の流れが視覚的に理解しやすいという利点がある。一方で、信号数が増えると、それに対応した線を個別に記述する必要があることから、ロジック作成の労力が大きくなる可能性があった。また、一度記述した信号線の修正を行う際にも信号線を個別に修正する必要があるため、精度の点からも改善の余地があった。
【０００５】
本発明は上記を鑑みてなされたものであり、より簡便に高い精度の制御ロジックを生成可能なロジック生成装置及びロジック生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の一形態に係るロジック生成装置は、制御対象を制御する制御装置において解釈及び実行され、ＦＢＤ言語による制御ロジックを生成するロジック生成装置であって、前記制御ロジックに含まれる複数の信号線に係る情報を個別に保持した状態で、当該複数の信号線を一つに取りまとめる構造体信号線を定義する構造体定義情報と、当該構造体定義情報を用いて記述された制御ロジックに係るロジック情報と、を取得する取得部と、前記取得部において取得された情報を用いて、前記構造体定義情報を利用した制御ロジックを生成する生成部と、を有する。
【０００７】
上記のロジック生成装置では、構造体定義情報を利用した制御ロジックが生成される。このように、構造体定義情報により定義された構造体信号線を利用して制御ロジックが生成されることで、ＦＢＤ言語で記述された制御ロジックを視覚的に理解しやすくすることができると共に、制御ロジックに記述すべき信号線の本数を減らすことができるので、制御ロジックの生成に必要なユーザによる作業を減らすことができ、精度の高い制御ロジックの生成が可能となる。また、制御ロジックに含まれる複数の信号線に係る情報を個別に保持した状態の構造体信号線を用いることで、複数の信号線を個別に取り扱うことも可能となり、構造体信号線の活用範囲を広げることができる。
【０００８】
ここで、前記構造体定義情報は、前記構造体信号線として取りまとめられた前記複数の信号線を個別に識別し、前記制御ロジックにおいて使用することで前記複数の信号線に含まれる特定の信号線のみを記述することが可能な識別子情報を含む態様とすることができる。
【０００９】
上記のように、構造体定義情報において、構造体信号線に含まれる信号線に対して個別に識別子情報が付与されている。そのため、構造体信号線として記述されている信号線のうち特定の信号線のみを容易に取り出して制御ロジックに記述をすることが可能となっていて、ユーザによる制御ロジックの作成の省力化が実現される。
【００１０】
また、前記生成部において生成された前記構造体定義情報を利用した制御ロジックを、前記構造体定義情報を利用しない記述に変更する展開部と、前記展開部において前記構造体定義情報を利用しない記述に変更された前記制御ロジックを出力する出力部と、をさらに有する態様とすることができる。
【００１１】
上記のように、展開部において、構造体定義情報を利用して生成された制御ロジックについて、構造体定義情報を利用しない記述に変更し、出力部から出力する構成とすることが可能となっていると、構造体定義情報自体を保持していない装置に対して、構造体を使用しない記述に変更して送信することが可能となるため、構造体定義情報を利用した制御ロジックの生成を導入する際に他の装置との互換性等を確保する必要がなく、より簡単に構造体定義情報を利用した制御ロジックの生成を導入することができる。
【００１２】
本発明の一形態に係るロジック生成方法は、制御対象を制御する制御装置において解釈及び実行され、ＦＢＤ言語による制御ロジックを、１又は複数の装置によって構成されるロジック生成装置を用いて生成するロジック生成方法であって、制御ロジックに含まれる複数の信号線に係る情報を個別に保持した状態で、当該複数の信号線を一つに取りまとめる構造体信号線を定義する構造体定義情報と、当該構造体定義情報を用いて記述された制御ロジックに係るロジック情報と、を取得する取得ステップと、取得ステップにおいて取得された情報を用いて、構造体定義情報を利用した制御ロジックを生成する生成ステップと、を含む。
【００１３】
本発明の一形態に係るロジック生成方法によれば、上述したロジック生成装置と同様に、ＦＢＤ言語で記述された制御ロジックを視覚的に理解しやすくすることができると共に、制御ロジックに記述すべき信号線の本数を減らすことができるので、制御ロジックの生成に必要なユーザによる作業を減らすことができ、精度の高い制御ロジックの生成が可能となる。また、制御ロジックに含まれる複数の信号線に係る情報を個別に保持した状態の構造体信号線を用いることで、複数の信号線を個別に取り扱うことも可能となり、構造体信号線の活用範囲を広げることができる。
【発明の効果】
【００１４】
本発明によれば、より簡便に高い精度の制御ロジックを生成可能なロジック生成装置及びロジック生成方法が提供される。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態に係るロジック生成装置を含む制御システムの概略構成図である。
【図２】構造体定義情報を説明する図である。
【図３】構造体定義情報を利用した構造体信号線について説明する図である。
【図４】構造体定義情報を利用して記述したブロックシートの例を示す図である。
【図５】本発明の一実施形態に係るロジック生成方法を示すフローチャートである。
【図６】制御ロジックの展開について説明する図である。
【図７】制御ロジックの展開について説明する図である。
【発明を実施するための形態】
【００１６】
以下、添付図面を参照して、本発明を実施するための形態を詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
【００１７】
図１は、本発明の一実施形態に係る制御システムの概略構成図である。制御システム１は例えばプラント等において適用されるシステムであり、制御対象となる装置の状態を示すデータ等を収集し、当該データ及びその他の情報に基づいて制御対象となる装置の制御を行うシステムである。
【００１８】
制御システム１は、ロジック生成装置１０、制御装置２０及び制御対象装置３０を含んで構成される。
【００１９】
ロジック生成装置１０は、制御対象装置３０の制御を制御装置２０が行うための制御ロジックを生成する装置である。制御ロジックとはファンクション・ブロック・ダイアグラム（ＦＢＤ）言語で作成されたロジックプログラムである。制御ロジックは、制御対象装置３０に係る情報に基づいた演算を実行するための複数のロジックにより構成される。
【００２０】
ロジック生成装置１０は、制御ロジックに対応するメモリマップについても生成する。メモリマップは、制御ロジックで使用される各信号に対するアドレス（メモリアドレス）の割り当てを示す割り当て情報であり、制御ロジックごとに生成されるものである。メモリマップは、制御ロジックで使用される各信号と、各信号が記憶されるアドレスとの対応関係を規定する。ロジック生成装置１０により生成された制御ロジック及びメモリマップは、制御装置２０へ送られる。
【００２１】
ロジック生成装置１０は、ＣＰＵ（Central  Processing  Unit）、主記憶装置であるＲＡＭ（Random  Access  Memory）及びＲＯＭ（Read  Only  Memory）、制御装置２０等の他の機器との間の通信を行う通信モジュール、並びにハードディスク等の補助記憶装置等のハードウェアを備えるコンピュータとして構成される。そして、これらの構成要素が動作することにより、後述のロジック生成装置１０としての機能が発揮される。ロジック生成装置１０の各機能部については後述する。
【００２２】
制御装置２０は、制御対象装置３０を制御する装置である。制御装置２０は、制御対象装置３０からのデータを取得すると共に、制御ロジックを実行することで制御対象装置３０の制御に係る動作を行う。制御装置２０は、実行エンジン２１と、入出力部２２と、メモリ２３とを備える。
【００２３】
実行エンジン２１は、制御ロジックを解釈して実行する機能を有する。入出力部２２は、制御対象装置３０からのデータ等を受信すると共に、実行エンジン２１により制御ロジックを実行した結果に基づいて、制御対象装置３０に対して処理の実行等を指示する機能を有する。メモリ２３は、実行中の制御ロジックで使用されている各信号を記憶する機能を有する。上述のように、各信号に対するアドレスの割り当ては、割り当て情報であるメモリマップにより規定される。メモリ２３は、制御ロジックに対応するメモリマップに従って、各信号を割り当てられたアドレスに記憶する。
【００２４】
制御対象装置３０は、制御システム１において制御装置２０による制御の対象となる装置である。制御対象装置３０として、例えば、プラントにおける運転装置等が挙げられる。制御対象装置３０は、制御装置２０からの指示を受信すると、これに基づいて運転制御等を行う。また、制御対象装置３０は、制御装置２０からの指示に基づいて、自装置で取得された運転データ等を制御装置２０に対して送信する。このように、制御対象装置３０では、自装置の状態を示す情報を制御装置２０に送信し、自装置の状態に対応した指示を制御装置２０から受信することで、運転の制御が行われる。
【００２５】
なお、図１では制御システム１を構成する制御装置２０及び制御対象装置３０がそれぞれ１台である場合を示しているが、制御装置２０及び制御対象装置３０は制御システム１にそれぞれ複数含まれていてもよい。この場合、制御装置２０が複数の制御対象装置３０を制御する構成とすることもできる。
【００２６】
ロジック生成装置１０の各機能部について説明する。ロジック生成装置１０は、記憶部１１と、ユーザインタフェース１２に含まれるロジック情報取得部１３（取得部）と、ユーザインタフェース１２に含まれる構造体定義部１４（取得部）と、生成部１５と、展開部１６と、出力部１７と、を含んで構成される。
【００２７】
記憶部１１は、後述の構造体定義部１４において定義された構造体に係る情報である構造体定義情報を保持する。記憶部１１において保持される情報は、制御ロジックの生成時及び展開時に利用される。また、記憶部１１は、生成部１５により生成された制御ロジックについても併せて保持する。ロジック生成装置１０における制御ロジックの生成のタイミングと、他の装置等への制御ロジックの出力のタイミングとが異なる場合には、生成された制御ロジックを記憶部１１に記憶しておき、必要なタイミングで出力処理を行うことが好ましい。
【００２８】
ユーザインタフェース１２は、ユーザによるロジック生成装置１０に対する入力及びユーザからの入力に対するロジック生成装置１０による処理の結果の出力を行う部分である。ユーザインタフェース１２には、ロジック情報取得部１３と、構造体定義部１４と、が含まれる。
【００２９】
ロジック情報取得部１３は、制御ロジックの生成に必要なロジック情報を取得する機能を有する。ロジック情報とは、例えば、制御ロジックには含まれる信号を特定する情報や、信号の処理を指定する情報等である。ロジック情報は、ユーザインタフェース１２をユーザが操作することによって作成される。ロジック情報取得部１３により取得された制御ロジックの生成に係るロジック情報は、生成部１５へ送られる。
【００３０】
構造体定義部１４は、制御ロジックの作成に必要なロジック情報をユーザが作成する際に用いられる「構造体信号」を定義する構造体定義情報を取得する機能を有する。構造体については後述する。構造体定義情報についても、ユーザインタフェース１２をユーザが操作することによって作成される。構造体定義部１４により取得された構造体定義情報は記憶部１１へ送られ、記憶部１１において記憶される。
【００３１】
生成部１５は、ロジック情報と構造体定義情報とに基づいて、制御ロジック及びメモリマップを生成する機能を有する。生成部１５は、ロジック情報取得部１３から送られたロジック情報と、構造体定義部１４により取得され記憶部１１に記憶された構造体定義情報と、に基づいて、制御ロジックを生成する。生成部１５の機能は、例えば、ＣＰＵにより実現される。
【００３２】
生成部１５では、ロジック情報と構造体定義情報とに基づいて、制御ロジックを生成する。生成部１５では、ユーザにより作成されてロジック情報取得部１３で取得されたロジック情報に含まれる各信号線に対して、実際に処理を行う際に必要な信号線を特定するための線番を割り当てる等の処理を行うことで、制御ロジックを生成する。また、生成部１５において生成されるメモリマップは、制御ロジックに含まれる各信号に対して割り当てるメモリ領域を特定する情報である。制御ロジックにおいては信号線によって特定される信号には、制御装置２０の外部入出力に使用される信号（以下、外部入出力用の信号とも言う）と、制御装置２０の内部で行われる演算に使用される信号（以下、内部演算用の信号とも言う）とがある。メモリマップでは、これらの信号をそれぞれ割り当てるアドレスを指定する。
【００３３】
生成部１５により生成された制御ロジック及びメモリマップは、記憶部１１に記憶されると共に、出力部１７に送られる。
【００３４】
展開部１６は、制御装置２０に対して制御ロジック及びメモリマップを送信する際に、記憶部１１に記憶される制御ロジックに含まれる「構造体信号」を用いた記述を、構造体信号を含まない記述に変更する機能を有する。展開部１６の機能は、例えば、ＣＰＵにより実現される。詳細については後述するが、制御装置２０に対して送信する制御ロジックは、構造体信号に係る記述が含まれないように変換される。展開部１６はこの構造体信号に係る記述が含まれないように制御ロジックを変更する処理を担う機能部である。展開部１６は、ユーザ又は制御装置２０等から、制御装置２０に対して制御ロジック及びメモリマップの送信を指示された場合に上記の処理を実施する。展開部１６により生成された制御ロジック及びメモリマップは、出力部１７に送られる。
【００３５】
出力部１７は、生成部１５において生成された制御ロジック及びメモリマップをモニタやプリンタ等に出力する機能を有する。出力部１７の機能は、例えば、通信モジュールにより実現される。また、出力部１７は、展開部１６により記述が変更された制御ロジック及びメモリマップを制御装置２０に送信する機能も有する。構造体信号を用いた記述がなされた制御ロジックと、構造体信号を用いた記述がなされていない制御ロジックと、のいずれを出力するかは、ユーザにより指定されてもよいし、出力先に応じて予め指定されていてもよい。
【００３６】
出力部１７から制御装置２０に対して制御ロジック及びメモリマップが出力されると、制御装置２０では、ロジック生成装置１０の出力部１７から送信された制御ロジックが実行される。制御装置２０では、これに併せて、出力部１７から送信されたメモリマップに従って、アドレスの割り当てが行われる。
【００３７】
ここで、ロジック生成装置１０において用いられる「構造体信号」について説明する。構造体信号は、本実施形態に係るロジック生成装置１０において新たに用いられる概念である。上述の通り、ロジック生成装置１０は、ユーザの操作に基づいて制御ロジックを生成する装置である。ユーザの利便性を高めながら制御ロジックの精度を高めるために、ロジック生成装置１０内では「構造体信号」を定義すると共に、ファンクションブロックとして「置換ブロック」を用いて「構造体信号」を使用した制御ロジックを記述する。
【００３８】
ロジック生成装置１０において定義される「構造体信号」とは、複数の信号線を各信号線に係る情報は個別に保持された状態で、一つの信号線に取りまとめた信号である。ただし、どのような種類の信号（例えば、アナログ／デジタル）に係る信号線を、何本取りまとめて「構造体信号」として取り扱うかは前段及び後段のロジックによって異なる。したがって、「構造体信号」に含まれる信号線の種類及び本数が互いに異なる場合にはそれぞれ「構造体信号」を定義する必要がある。したがって、「構造体信号」の定義は、信号線の種類及び本数が互いに異なる場合、すなわち、構造体信号の「型」毎に個別に準備される。
【００３９】
制御ロジック内では、複数の信号線を「構造体信号」に取りまとめる処理、及び、「構造体信号」に含まれる複数の信号をから個別の信号線を取り出す処理が発生する場合がある。そこで、制御ロジック内では、「置換ブロック」が用いられる。「置換ブロック」とは、複数の信号線を「構造体信号」として一つの信号線に取りまとめること、及び、「構造体信号」としての一つの信号線を定義に基づいて複数の信号線に振り分けることを行うファンクションブロックである。さらに、制御ロジック内で一つの信号線で示される「構造体信号」の一部の信号線のみを出力する際には、「構造体信号」に含まれる個別の信号を指定するための「個別信号取り出しブロック」が用いられる。
【００４０】
図２は、「構造体信号」の定義の例を示す図である。図３は、「置換ブロック」を説明する図である。また、図４は、図２で定義された「構造体信号」を使用して図３に示す「置換ブロック」を用いて記述された制御ロジックの一例を示す図である。
【００４１】
上述したように「構造体信号」は複数の信号線を取りまとめる信号であるが、どのような種類の信号線を何本取りまとめるかは状況によって異なる。すなわち、「構造体信号」の「型」が異なる。したがって、「構造体信号」に含まれる信号の種類及び本数が互いに異なる場合にはそれぞれ「構造体信号」を定義する必要がある。
【００４２】
図２（Ａ）と図２（Ｂ）とは、互いに異なる「型」の構造体信号を定義した構造体定義情報を示している。この構造体定義情報は記憶部１１に記憶される情報である。図２（Ａ）では、型名を「ＳＴ１」とした構造体信号を定義した構造体定義情報を示している。また、図２（Ｂ）では、型名を「ＳＴ２」とした構造体信号を定義した構造体定義情報を示している。構造体定義情報では、構造体に含まれる複数の信号線毎に、信号種情報（信号種）及び識別子情報（識別子）を対応付けている。信号種情報とは、信号線の種類を特定する情報であり、識別子情報とは、各信号線を特定する情報である。
【００４３】
図２（Ａ）のＳＴ１型に係る構造体定義情報では、３本の信号線が構造体信号としてまとめられることを示しているが、そのうちの１本はアナログ（ＡＮＡＬＯＧ）であり、残り２本はデジタル（ＤＩＧＩＴＡＬ）であることを示している。また、１本のアナログ信号線は識別子「ｖａｌ」であり、２本のデジタル信号線はそれぞれ識別子「ｃｏｎｄ１」、「ｃｏｎｄ２」であることを示している。
【００４４】
図２（Ｂ）のＳＴ２型に係る構造体定義情報では、３本の信号線が構造体信号としてまとめられることを示しているが、そのうちの２本はデジタル（ＤＩＧＩＴＡＬ）であることを示していて、もう１本は、信号種が「ＳＴＲＵＣＴ  ＳＴ１」と示されていて、「ＳＴ１」で示す構造体信号が対応付けられていることが示されている。このように、構造体信号を組み合わせた構造体信号を定義することもできる。また、図２（Ｂ）に示すＳＴ２型に係る構造体定義情報では、２本のデジタル信号線はそれぞれ識別子「ｂｕｔｔｏｎ１」、「ｂｕｔｔｏｎ２」であることを示している。一方、「ＳＴ１」と示されている構造体信号は、実際には、図２（Ａ）で示されるように３本の信号線が取りまとめられたものである。したがって、図２（Ｂ）に示すように、識別子は、実際にはＳＴ１型の構造体定義情報を参照した３つの識別子「ｖａｌ」、「ｃｏｎｄ１」、「ｃｏｎｄ２」が対応付けられる。
【００４５】
図３は、図２（Ａ）で示したＳＴ１型の構造体信号を制御ロジックで用いる際の「置換ブロック」について示している。図３（Ａ）では、複数の信号線をＳＴ１型の構造体定義情報に基づいて１つの構造体信号にまとめる「ＰＡＣＫ」ブロックを示している。「ＰＡＣＫ」ブロックにはパラメータとして「Ｐ１＝ＳＴ１」が対応付けられていて、「ＰＡＣＫ」ブロックがＳＴ１型の構造体信号に係る置換ブロックであることを示している。「ＰＡＣＫ」ブロックを用いることで、アナログ信号の「ＡＩ０００１」と、デジタル信号の「ＤＩ０００１」及び「ＤＩ０００２」と、の３つの信号線を１つの構造体信号線に取りまとめることができる。３つの信号線を１つにまとめた後の構造体信号線には、「＄ＶＶ０００１」という線番が割り当てられている。この線番は、制御ロジック内でこの構造信号線を特定するために用いられる。
【００４６】
ただし、上述したように、構造体信号では、複数の信号線を各信号線に係る情報は個別に保持された状態で保持される。したがって、「＄ＶＶ０００１」としてまとめられた３つの信号線は、個別に線番が割り当てられる。また、上記の構造体信号線を特定する情報と構造体の定義とを利用して、個別の信号を指定することもできる。
【００４７】
図２（Ａ）では、図３（Ａ）に示す構造体信号線「＄ＶＶ０００１」に含まれる個別の信号について構造体信号線を特定する情報と構造体の定義とを用いて記述した例と、各信号について実際に割り当てられる線番（実線番）とを示している。図２（Ａ）に示すように、構造体信号線「＄ＶＶ０００１」に含まれる３つの信号線は、構造体定義情報の識別子を利用して、「＄ＶＶ０００１．ｖａｌ」、「＄ＶＶ０００１．ｃｏｎｄ１」、「＄ＶＶ０００１．ｃｏｎｄ２」と区別することができる。制御ロジック中では、ユーザは、この個別信号の指定方法を利用して、信号を個別に取り扱うことができる。また、「＄ＶＶ０００１．ｖａｌ」、「＄ＶＶ０００１．ｃｏｎｄ１」、「＄ＶＶ０００１．ｃｏｎｄ２」と示された各信号には、実際にはそれぞれ「＄ＥＥ７００１」、「＄ＬＬ７００１」、「＄ＬＬ７００２」という線番が割り当てられる。構造体信号に含まれる各信号に係る実線番は、メモリマップにおいて使用される。メモリマップでは、実線番に対応付けて、当該信号を割り当てるメモリアドレスが設定される。このように、実線番は、主に内部処理において用いられる信号を特定するになるため、実線番の番号はユーザには示されない。したがって、ユーザは、割り当てられる線番に係る情報を認識することなく、識別子を利用して各信号を取り扱うことができる。
【００４８】
図２（Ｂ）では、ＳＴ２型を用いて定義された構造体信号線「＄ＶＶ０００３」に含まれる個別の信号について構造体信号線を特定する情報と構造体の定義とを用いて記述した例と、各信号に割り当てられる実線番とを示している。図２（Ｂ）に示すように、構造体ＳＴ２には、構造体ＳＴ１が組み込まれている。したがって、構造体ＳＴ２における構造体信号線には、実際にはＳＴ２型の構造体定義情報で定義される２本の信号線と、ＳＴ１の構造体定義情報で定義された３本の信号線と、が取りまとめられている。このとき、図２（Ｂ）に示すように、構造体信号線「＄ＶＶ０００３」に含まれる信号線のうち、ＳＴ２の構造体定義情報で定義される２本の信号線は、構造体定義情報の識別子を利用して、「＄ＶＶ０００３．ｂｕｔｔｏｎ１」、「＄ＶＶ０００３．ｂｕｔｔｏｎ２」と区別することができる。一方、構造体ＳＴ２に組み込まれた構造体ＳＴ１に含まれる３本の信号線については、ＳＴ１型の構造体定義情報での定義を利用して、「＄ＶＶ０００３．ＳＴ１．ｖａｌ」、「＄ＶＶ０００３．ＳＴ１．ｃｏｎｄ１」、「＄ＶＶ０００３．ＳＴ１．ｃｏｎｄ２」と示すことができる。したがって、特定の構造体に対して他の構造体が組み込まれている場合であっても、上記の手法を利用して、個別の信号を指定することができる。なお、図２（Ｂ）に示す場合にも、「＄ＶＶ０００３．ｂｕｔｔｏｎ１」、「＄ＶＶ０００３．ｂｕｔｔｏｎ２」、「＄ＶＶ０００３．ＳＴ１．ｖａｌ」、「＄ＶＶ０００３．ＳＴ１．ｃｏｎｄ１」、「＄ＶＶ０００３．ＳＴ１．ｃｏｎｄ２」と示された５本の各信号には、実際にはそれぞれ「＄ＬＬ９０００」、「＄ＬＬ９００１」、「＄ＥＥ９００１」「＄ＥＥ９０１０」、「＄ＥＥ９０１１」という線番が割り当てられる。この点は、図２（Ａ）に示す例と共通である。
【００４９】
図３に戻り、図３（Ｂ）では、ＳＴ１型の構造体定義情報に基づいて１つの構造体信号を３つの信号線に分ける「ＵＮＰＡＣＫ」ブロックを示している。「ＵＮＰＡＣＫ」ブロックにはパラメータとして「Ｐ１＝ＳＴ１」が対応付けられていて、「ＵＮＰＡＣＫ」ブロックがＳＴ１型の構造体信号に係る置換ブロックであることを示している。「ＵＮＰＡＣＫ」ブロックを用いることで、１つの構造体信号線を、ＳＴ１型の構造体定義情報に基づいて、１つのアナログ信号の「ＡＯ００１」と、２つのデジタル信号の「ＤＯ０００１」及び「ＤＯ０００２」と、の３つの信号線に分けることができる。
【００５０】
制御ロジックでは、上記のように、構造体定義情報に対応付けられた置換ブロックを用いて、構造体信号線へのとりまとめ及び構造体信号線からの分解が行われる。構造体定義情報は、制御ロジックに対して紐付けられるが、制御ロジックとは別の情報として取り扱われる。したがって、構造体定義情報は、異なる信号線に対して適用することができる。また、制御ロジック中では、構造体の「型」を指定した置換ブロックを利用して記述される。
【００５１】
図４は、図２で定義した２つの構造体定義情報を利用して、置換ブロックを利用して制御ロジックを記述したシートであるブロックシートの例を示している。図４に示すブロックシートは制御ロジックの生成のためにユーザが作成する情報であり、ユーザから提供されるロジック情報に相当する情報である。すなわち、ロジック生成装置１０の生成部１５において割り振られる実線番に係る情報等は含まれていない情報である。
【００５２】
図４では、ＳＴ１型の構造体定義情報を用いることが示された「ＰＡＣＫ」ブロックＢ１により、３つの信号が取りまとめられ、線番「＄ＶＶ０００１」で示す構造体信号線が作成されている。また、線番「＄ＶＶ０００１」で示す構造体信号線は、分岐されて、一方は「ＭＡＣＲＯ」ブロックＢ２において用いられている。構造体信号線を用いない場合には、この「ＭＡＣＲＯ」ブロックＢ２に対して、構造体信号線を含む３本の信号線に代えて５本の信号線が入力されることになるが、構造体信号線を用いることで、「ＭＡＣＲＯ」ブロックＢ２に入力される信号線を減らした状態で記述することができる。なお、「ＭＡＣＲＯ」ブロックＢ２では出力についても構造体信号線が利用されている。具体的には、線番「＄ＶＶ０００２」で示される信号線は構造体信号線に相当する。
【００５３】
また、分岐された線番「＄ＶＶ０００１」で示す構造体信号線の他方は、ＳＴ２型の構造体定義情報を用いることが示された「ＰＡＣＫ」ブロックＢ３に入力されている。ＳＴ２型の構造体は、図２（Ｂ）で示すように、３つめの信号がＳＴ１型の構造体信号線であることが定義されている。したがって、「ＰＡＣＫ」ブロックＢ３には、図２（Ｂ）に示す情報に基づいて、２つの信号線と１つの構造体信号線とが入力されている。そして、ＳＴ２型の構造体信号線が線番「＄ＶＶ０００３」として出力されている。
【００５４】
線番「＄ＶＶ０００１」で示す構造体信号線は、分岐されて、一方は、「ＳＣＦ２」ブロックに入力されると共に、他方は、ＳＴ２型の構造体定義情報を用いることが示された「ＵＮＰＡＣＫ」ブロックＢ４に入力される。その結果、ＳＴ２型の構造体定義情報に基づいて、２つの信号線と、「＄ＶＶ０００４」として示されたＳＴ１型の構造体信号線とが出力されている。
【００５５】
また、図４では、構造体信号の個別の信号を取り出して使用する例が示されている。図４の下側には、「個別信号取り出しブロック」を用いた２つのブロックＢ５，Ｂ６として記述された信号が「ＡＮＤ」ブロックＢ７に入力している例が示されている。ブロックＢ５，Ｂ６には、それぞれ「＄ＶＶ０００２．ｏｎ」、「＄ＶＶ０００３．ｏｎ」という識別子を用いた信号名が記述されていて、それぞれ「＄ＶＶ０００２」、「＄ＶＶ０００３」で特定される構造体信号線において、識別子「ｏｎ」により識別される信号であることが示されている。
【００５６】
なお、図４に示すように、構造体信号は、他の個別の信号とは区別して記述されることが好ましい。これにより、構造体信号と他の信号とを容易に区別することができるため、修正等を容易に行うことができる。同様に、構造体信号に含まれる個別の信号を取り出すことを示す「個別信号取り出しブロック」についても、他の個別の信号とは区別して記述されていることが好ましい。
【００５７】
このように、制御ロジック中では、構造体信号情報により定義された構造体信号線を利用して記述を行うことで、ＦＢＤ言語で記述された制御ロジックを視覚的に理解しやすくすることができると共に、制御ロジックに記述すべき信号線の本数を減らすことができるので、制御ロジックの生成に必要なユーザによる作業を減らすことができる。
【００５８】
ここで、図５を参照しながら、ロジック生成装置１０におけるロジック生成方法について説明する。図５は、本発明の一実施形態に係るロジック生成方法を示すフローチャートである。
【００５９】
まず、ユーザがユーザインタフェース１２を利用して、ロジック情報及び構造体定義情報を作成する。つまり、ユーザインタフェース１２が、ロジック情報及び構造体定義情報を取得する（取得ステップ）。これにより、生成部１５では、構造体定義情報を利用した制御ロジックが生成される（Ｓ０１：生成ステップ）。なお、生成部１５では、制御ロジックに対応したメモリマップも生成される。生成部１５において生成された制御ロジック及びメモリマップは、必要に応じて出力部１７から出力される。また、制御ロジック及びメモリマップと、構造体定義情報とは、記憶部１１に記憶される（Ｓ０２）。上記の２つの工程は、ロジック生成装置１０においてユーザの指示に基づいて制御ロジックを生成する際に行われる工程である。
【００６０】
次に、制御装置２０への制御ロジック及びメモリマップの送信が必要になった際には、ユーザの指示等に基づいて、展開部１６において、制御ロジックに含まれる構造体の展開に係る処理が行われる（Ｓ０３）。そして、展開をした後の制御ロジックが、出力部１７から制御装置２０に対して出力される（Ｓ０４）。上記のように、ロジック生成装置１０では、構造体定義情報を用いて構造体を利用した制御ロジックが生成される。一方、制御装置２０に対して制御ロジックを送信する場合には、構造体を用いない記述に制御ロジックを変更する。この処理を「展開」という。
【００６１】
図６及び図７では、制御ロジックにおける構造体に係る記述の展開を行う方法を示している。図６（Ａ）では、図２（Ａ）で示したＳＴ１型の構造体定義情報を利用して記述された制御ロジックを示していて、図３（Ａ）と同様の記述となっている。図６（Ａ）では構造体信号線の線番は「＄ＶＶ０００１」となっていて、構造体信号に含まれる３つの信号の実線番が「＄ＥＥ８００１」、「＄ＬＬ８００１」、「＄ＬＬ８００２」であることを示している。この図６（Ａ）に示す制御ロジックを、「ＰＡＣＫ」ブロックを利用せずに実線番に変換して記述するのが本実施形態における「展開」である。具体的には、図６（Ｂ）に示すように、入力側の３つの信号と、構造体信号に含まれる各信号に対応する実線番と、を「ＡＥＱ」ブロック又は「ＬＥＱ」ブロックという等価を示すブロックでつなげる処理を行う。この結果、３つの入力側の信号と、構造体信号に含まれていた３つの信号の実線番とを個別に接続することができる。なお、「ＵＮＰＡＣＫ」ブロックについても、「ＰＡＣＫ」ブロックと同様に等価を示すブロックを利用して置換を行うことで、構造体信号に含まれる各信号に対応する実線番と、出力側の信号とを個別に接続することができる。
【００６２】
図７では、構造体信号に係る「個別信号取り出しブロック」を展開する方法について説明している。図７（Ａ）では、ＳＴ３型として２つの信号線を取りまとめた構造体を定義した構造体定義情報を利用している。そして、図７（Ａ）では、ＳＴ３型の構造体定義情報を利用した２つの構造体信号線「＄ＶＶ０００１」、「＄ＶＶ０００２」からそれぞれ識別子「ｏｎ」で特定される信号を個別に取り出して、「ＡＮＤ」ブロックに入力する制御ロジックが示されている。ここで、構造体信号線「＄ＶＶ０００１」に含まれる２つの信号線には、それぞれ実線番「＄ＥＥ８００１」、「＄ＬＬ８００１」が割り振られているとする。また、「＄ＶＶ０００２」に含まれる２つの信号線には、それぞれ実線番「＄ＥＥ８００２」、「＄ＬＬ８００２」が割り振られているとする。この場合、「個別信号取り出しブロック」において「＄ＶＶ０００１．ｏｎ」、「＄ＶＶ０００２．ｏｎ」と記述された信号線の実線番は、「＄ＬＬ８００１」、「＄ＬＬ８００２」となる。したがって、図７（Ｂ）に示すように、「個別信号取り出しブロック」により記述された信号線を実線番のブロックに変換する。この結果、制御ロジックを、「個別信号取り出しブロック」を用いない記述、すなわち、構造体定義情報により定義される構造体を用いない記述に変更することができる。
【００６３】
このように、構造体に係る概念はロジック生成装置１０において定義されて使用されているため、制御装置２０のように他の装置に対して制御ロジックを送信する際には構造体に係る記述を使用しないように変換することができる。
【００６４】
以上のように、本実施形態に係るロジック生成装置１０及びロジック生成方法では、構造体定義情報を利用して、制御ロジックに含まれる複数の信号線を一つの構造体信号線によって代替して記述することができる。したがって、ユーザによる制御ロジックの作成の省力化を実現することができる。また、構造体信号線を利用した記述になると、制御ロジックに含まれる信号線の本数を削減することができるため、特に信号線の本数が増えて複雑になった場合に生じる可能性があるミス等を減らすことができる。そのため、より簡便に高い精度の制御ロジックを生成可能となる。
【００６５】
また、構造体定義情報によれば、制御ロジックに含まれる複数の信号線に係る情報を個別に保持した状態で、当該複数の信号線が構造体信号線として一つに取りまとめられる。したがって、構造体信号線として一つに取りまとめられた後も、複数の信号線は個別に取り扱うことができるため、制御ロジックにおいて信号線の記述を構造体信号線柔軟に変更することができる。また、マクロ等の数値計算を行うブロックに対して構造体信号線を入力させた場合でも、個別の数値計算等を好適に行うことができる。
【００６６】
さらに、制御ロジックに含まれる複数の信号線に係る情報を個別に保持している状態であると、制御ロジックに含まれる各信号に対して割り当てるメモリ領域を特定する情報であるメモリマップにおいて、複数の信号線に含まれる各信号に対してメモリ領域を割り当てる際にも、例えば、連続したメモリ領域を割り当てる必要がなくなり、柔軟な対応が可能となる。したがって、メモリマップの作成においても有用となる。
【００６７】
また、上記のロジック生成装置１０では、構造体信号線に含まれる特定の信号線を取り出して記述可能となるように、構造体定義情報において、構造体信号線に含まれる信号線に対して個別に識別子情報が付与されている。したがって、構造体信号線として記述されている信号線のうち特定の信号線のみを容易に取り出して記述をすることが可能となっていて、ユーザによる制御ロジックの作成の省力化が実現されている。
【００６８】
さらに、ロジック生成装置１０では、構造体定義情報を利用して生成された制御ロジックについて、展開部１６において構造体定義情報を利用しない状態に展開して出力部１７から出力することが可能となっている。したがって、制御装置２０のように、構造体定義情報自体を保持していない装置に対して、構造体を使用しない記述に変更して送信することが可能となるため、構造体定義情報を利用した制御ロジックの生成を導入する際に他の装置との互換性等を確保する必要がなく、より簡単に構造体定義情報を利用した制御ロジックの生成を導入することができる。
【００６９】
以上で説明した実施形態は本発明の一例を示すものである。本発明に係るロジック生成装置及びロジック生成方法は、上記実施形態に限られるものではなく、各請求項に記載した要旨を変更しない範囲で変形し、又は他のものに適用したものであってもよい。
【００７０】
例えば、ロジック生成装置１０は、上記実施形態で説明したように１つの装置によって構成されていてもよいし、複数の装置の組み合わせによって構成されていてもよい。また、制御システム１を構成する制御装置２０及び制御対象装置３０の数はそれぞれ複数であってもよい。この場合、例えば、制御装置２０が複数の制御対象装置３０を制御する構成とすることもできる。
【００７１】
また、上記のロジック生成装置１０では、制御装置２０に対して制御ロジックを出力する際には展開部１６において構造体定義情報を利用しない記述に制御ロジックを変更（展開）した後に出力することを前提としていた。しかし、例えば制御装置２０においても構造体定義情報を保持している場合等のように、構造体定義情報を用いて記述された制御ロジックを出力しても解釈及び実行に影響を与えない場合には、展開部１６における展開を省略して制御装置２０等の他の装置に対して出力する構成としてもよい。
【符号の説明】
【００７２】
１  制御システム
１０  ロジック生成装置
１１  記憶部
１２  ユーザインタフェース
１３  ロジック情報取得部
１４  構造体定義部
１５  生成部
１６  展開部
１７  出力部
２０  制御装置
２１  実行エンジン
２２  入出力部
２３  メモリ
３０  制御対象装置
【図１】
2018026043.tif 000003
【図２】
2018026043.tif 000004
【図３】
2018026043.tif 000005
【図４】
2018026043.tif 000006
【図５】
2018026043.tif 000007
【図６】
2018026043.tif 000008
【図７】
2018026043.tif 000009