(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024171611
(43)【公開日】2024-12-12
(54)【発明の名称】多重化システムの制御プログラム、制御システム、及び、制御方法
(51)【国際特許分類】
G06F 9/44 20180101AFI20241205BHJP
G06F 11/16 20060101ALI20241205BHJP
【FI】
G06F9/44
G06F11/16 658
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023088710
(22)【出願日】2023-05-30
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.SIMULINK
(71)【出願人】
【識別番号】000006208
【氏名又は名称】三菱重工業株式会社
(74)【代理人】
【識別番号】110000785
【氏名又は名称】SSIP弁理士法人
(72)【発明者】
【氏名】中出 実
(72)【発明者】
【氏名】戸田 信一
【テーマコード(参考)】
5B034
5B376
【Fターム(参考)】
5B034CC01
5B034DD06
5B376DA16
5B376GA13
(57)【要約】
【課題】多重化システムを対象とする制御ロジックにおいて、高度制御機能を実現する。
【解決手段】本願は、多重化された第1実行環境及び第2実行環境を制御するための制御ロジックが含まれる多重化システムの制御プログラムに関する。制御プログラムは、コンピュータ装置に、制御ロジックを構成する演算要素からユーザ定義ライブラリ関数をコールし、待機側の実行環境におけるユーザ定義ライブラリ関数の中間演算値を、稼働側の実行環境におけるユーザ定義ライブラリ関数の中間演算値が予め格納されたインターフェース領域から取り込むように実行される。
【選択図】
図1
【特許請求の範囲】
【請求項1】
多重化された第1実行環境及び第2実行環境を制御するための制御ロジックが含まれる多重化システムの制御プログラムであって、
コンピュータ装置に、
前記制御ロジックを構成する少なくとも1つの演算要素からユーザ定義ライブラリ関数をコールする工程と、
前記第1実行環境又は前記第2実行環境のうち待機側における前記ユーザ定義ライブラリ関数の中間演算値を、前記第1実行環境又は前記第2実行環境のうち稼働側における前記ユーザ定義ライブラリ関数の前記中間演算値が予め格納されたインターフェース領域から取り込む工程と、
を実行可能な多重化システムの制御プログラム。
【請求項2】
前記第1実行環境又は前記第2実行環境のうち少なくとも稼働側における前記ユーザ定義ライブラリ関数の中間演算値を、前記インターフェース領域に書き出す工程を、更に備える、請求項1に記載の多重化システムの制御プログラム。
【請求項3】
前記中間演算値は、前記第1実行環境及び第2実行環境間のデータトラッキング対象データである、請求項1又は2に記載の多重化システムの制御プログラム。
【請求項4】
前記ユーザ定義ライブラリ関数は、前記ユーザ定義ライブラリ関数に含まれる複数のグローバル変数のうち前記データトラッキング対象データを特定する、請求項3に記載の多重化システムの制御プログラム。
【請求項5】
前記ユーザ定義ライブラリ関数は汎用プログラミング言語で記述される、請求項1又は2に記載の多重化システムの制御プログラム。
【請求項6】
請求項1又は2に記載の制御プログラムを実行可能な演算部を有する多重化システムの制御システム。
【請求項7】
多重化された第1実行環境及び第2実行環境を制御するための制御ロジックが含まれる多重化システムの制御方法であって、
前記制御ロジックを構成する少なくとも1つの演算要素からユーザ定義ライブラリ関数をコールする工程と、
前記第1実行環境又は前記第2実行環境のうち待機側における前記ユーザ定義ライブラリ関数の中間演算値を、前記第1実行環境又は前記第2実行環境のうち稼働側における前記ユーザ定義ライブラリ関数の前記中間演算値が予め格納されたインターフェース領域から取り込む工程と、
を備える、多重化システムの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、多重化システムの制御プログラム、制御システム、及び、制御方法に関する。
【背景技術】
【0002】
例えば発電プラント等における構成機器を制御するための制御システム(例えば特許文献1)では、制御対象となる機器や実現すべき機能ごとに用意された制御ロジックをコントローラ等の実行環境にインストールすることにより、各種制御が実現される。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
多数の構成機器からなるプラント設備を制御対象とする制御システムでは、同等の実行環境を稼働側と待機側で多重化して用意し、稼働側の実行環境において何らかの異常が生じた場合には、稼働側と待機側との実行環境を互いに切り替えることにより、システムの信頼性を向上する。このような多重化システムでは、稼働側と待機側との実行環境の切替時に制御状態が突変することを防止するために、稼働側における制御状態を待機側に引き継ぐ、いわゆるデータトラッキングが必要である。
【0005】
ところで、プラント設備に用いられる制御ロジックの構築手法として、例えば、制御モデルをベースにした開発環境を利用する、いわゆるMBD(モデルベースデザイン)ツールを用いる手法が知られている。MBDツールは、制御モデルを記述するためのデファクトスタンダードとなっているツールの一つであり、例えばMATLAB(登録商標)やSimulink等が知られている。これらのMBDツールでは、標準機能又はプラグイン機能として、作成した制御モデルに対応するソースコードを、汎用プログラミング言語を用いて自動生成することも可能である。
【0006】
このようなMBDツールを用いた開発環境において、前述の多重化システムのための制御ロジックを構築しようとする場合、多重化された実行環境間でやり取りされるデータトラッキングの対象となる各種データは、これらの実行環境にわたって適用されるグローバル変数(スタティック変数を含む)として取り扱うことができる。しかしながら、各実行環境に対応して作成した制御モデルに含まれる様々なデータを全てデータトラッキングの対象とすると、演算処理に時間を要してしまい、演算周期内でデータトラッキング通信を完了することが困難になるおそれがある。これらのデータには、例えば、演算開始時に都度初期化されて使用されるためデータトラッキングが不要なものも含まれるため、データトラッキングの対象とするデータを限定することで、データトラッキング通信に要する時間を短縮することも考えられる。しかしながら、このようなデータトラッキングの対象とするデータを自動抽出することは困難である。このような理由から、MBDツールを用いた開発環境では、シングル構成のSCADA(Supervisory control and data acquisition)が用いられることに留まっており、より複雑な多重化システムへの適用に至っていないのが実情である。
【0007】
一方で、多重化システムを対象とした制御ロジックの現状の開発環境では、制御ロジックに含まれる演算要素(POL:Problem-Oriented Language)ごとに、中間演算値を保持する領域を設け、当該中間演算値を稼働側と待機側との間でデータトラッキングすることで対応している。この場合、制御ロジックの量に応じてデータトラッキングの対象となるデータサイズには変動があるものの、制御ロジックの量には上限があることからデータトラッキングのデータサイズにも上限がある。
【0008】
このような現状の多重化システムを対象とする制御ロジックの開発環境では、制御ロジックに付随するように汎用プログラミング言語で演算要素の処理内容を記述する機能があることもあるが、記述可能なプログラム行数が限られている。そのため、AI等の高度制御機能モデルを記述することまではできない。またインタプリタ方式による実行に時間を要するため、制御周期に処理が間に合わないことがある(一方、実行環境でコンパイルしてバイナリを生成させるには、CPU処理演算機能やメモリやストレージの容量に制約があるため困難である)。そのため、多重化システムの現状の開発環境では、AI等の高度制御機能を取り扱うことができない。
【0009】
本開示の少なくとも一実施形態は上述の事情に鑑みなされたものであり、多重化システムを対象とする制御ロジックにおいて、高度制御機能を実現可能な多重化システムの制御プログラム、制御システム、及び、制御方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
本開示の少なくとも一実施形態に係る多重化システムの制御プログラムは、上記課題を解決するために、
多重化された第1実行環境及び第2実行環境を制御するための制御ロジックが含まれる多重化システムの制御プログラムであって、
コンピュータ装置に、
前記制御ロジックを構成する少なくとも1つの演算要素からユーザ定義ライブラリ関数をコールする工程と、
前記第1実行環境又は前記第2実行環境のうち待機側における前記ユーザ定義ライブラリ関数の中間演算値を、前記第1実行環境又は前記第2実行環境のうち稼働側における前記ユーザ定義ライブラリ関数の前記中間演算値が予め格納されたインターフェース領域から取り込む工程と、
を実行可能である。
【0011】
本開示の少なくとも一実施形態に係る多重化システムの制御装置は、上記課題を解決するために、
本開示の少なくとも一実施形態に係る多重化システムの制御プログラムを実行可能な演算部を有する。
【0012】
本開示の少なくとも一実施形態に係る多重化システムの制御方法は、上記課題を解決するために、
多重化された第1実行環境及び第2実行環境を制御するための制御ロジックが含まれる多重化システムの制御方法であって、
前記制御ロジックを構成する少なくとも1つの演算要素からユーザ定義ライブラリ関数をコールする工程と、
前記第1実行環境又は前記第2実行環境のうち待機側における前記ユーザ定義ライブラリ関数の中間演算値を、前記第1実行環境又は前記第2実行環境のうち稼働側における前記ユーザ定義ライブラリ関数の前記中間演算値が予め格納されたインターフェース領域から取り込む工程と、
前記第1実行環境又は前記第2実行環境のうち稼働側における前記ユーザ定義ライブラリ関数の中間演算値を、前記インターフェース領域に書き出す工程と、
を備える。
【発明の効果】
【0013】
本開示の少なくとも一実施形態によれば、多重化システムを対象とする制御ロジックにおいて、高度制御機能を実現可能な多重化システムの制御プログラム、制御システム、及び、制御方法を提供できる。
【図面の簡単な説明】
【0014】
【
図1】一実施形態に係る制御プログラムの開発プロセスを示す模式図である。
【
図3】
図2の関数によってコール可能なユーザ定義ライブラリ関数の一例である。
【
図4】
図2の制御ロジックCLによって実施される制御方法を示すフローチャートである。
【
図5】
図3のステップS22及びS23の変形例である。
【
図6】コントローラの実行プロセスとユーザ定義ライブラリ関数との関係の一例を示す図である。
【
図7A】MBDツールを用いた制御ロジックの開発プロセスを示す模式図である。
【
図7B】多重化システムを対象とする他の参考技術に係る開発プロセスを示す模式図である。
【発明を実施するための形態】
【0015】
以下、添付図面を参照して本発明の幾つかの実施形態について説明する。ただし、実施形態として記載されている又は図面に示されている構成は、本発明の範囲をこれに限定する趣旨ではなく、単なる説明例にすぎない。
【0016】
<参考技術>
まず本発明の前提となる参考技術について
図7A及び
図7Bを参照して説明する。
図7AはMBDツールを用いた制御ロジックの開発プロセスを示す模式図である。
図7Aでは、シングル構成のSCADA(Supervisory control and data acquisition)にインストールされる制御ロジックを開発対象とする。
【0017】
まずMBDツールを用いて、AI等の高度制御モデルを含む制御モデルMを構築する(ステップS30)。MBDツールでは、オペレータが関数や演算子のような構成要素を組み合わせることにより、制御モデルMが構築可能である。
図7Aでは、MBDツールを用いて構築された制御モデルMとして、予測制御モデルMPC及びプラントモデルMPと含む制御モデルが簡易的に示されている。
【0018】
続いてMBDツールのソースコード自動生成機能を活用して、ステップS30で構築した制御モデルMに対応するソースコードSCを自動生成する(ステップS31)。MBDツールには、標準機能又はプラグイン機能として、制御モデルに対応するソースコードSCを、C言語のような汎用プログラミング言語として記述(変換)する機能が搭載される。ステップS31では、このようなMBDツールの機能を用いて、ステップS30で構築された制御モデルMに対応するソースコードSCが生成される。
【0019】
続いてステップS31で生成されたソースコードSCを開発環境に取り込み(ステップS32)、コンパイルすることによりバイナリファイルBFを作成し(ステップS33)、実行環境Eにインストールする(ステップS34)。実行環境Eは、SCADA(Supervisory control and data acquisition)等の単体の制御装置(コントローラ)である。
【0020】
図7Aを参照して前述したMBDツールを用いた開発プロセスには、以下の課題がある。仮に2つの実行環境間が冗長化された多重化システムを、MBDツールを用いた開発対象とする場合、2つの実行環境にそれぞれ対応するように構築される制御モデル間でデータトラッキングを伴う。このようなデータトラッキングを伴う制御モデルから自動生成されるソースコードでは、データトラッキングは各実行環境に対応する制御モデル間で共通するグローバル変数(スタティック変数を含む)として取り扱うことができる。しかしながら、各実行環境に対応する制御モデルに含まれる様々なデータを全てデータトラッキングの対象とすると、演算処理に時間を要し、演算周期内でデータトラッキング通信を行うことが困難となるおそれがある。これらのデータには、例えば、演算開始時に都度初期化されて使用されるためデータトラッキングが不要なものも含まれるため、データトラッキングの対象とするデータを限定することで、データトラッキング通信に要する時間を短縮することも考えられる。しかしながら、このようなデータトラッキングの対象とするデータを自動抽出することは困難である。このような理由から、MBDツールを用いた開発プロセスでは、実行環境Eとして、シングル構成のSCADAが用いられることに留まっており、多重化システムへの適用が困難であった。
【0021】
続いて
図7Bは多重化システムを対象とする他の参考技術に係る開発プロセスを示す模式図である。
図7Bに示す参考技術では、例えばPLC(Programmable Logic Controller)やDCS(Distributed Control System)のように、互いに多重化された2つの実行環境(第1実行環境E1、第2実行環境E2)を対象とする。この種の多重化システムでは、2つの実行環境のうち一方を稼働側、他方を待機側とし、稼働側の実行環境に不具合が生じた場合には、稼働側と待機側との実行環境が入れ替えられる。特に、稼働側と待機側との実行環境が入れ替えられる際には、稼働側の制御状態を待機側に継承(データトラッキング)することにより、制御状態の突変が防止される。
尚、以下の説明では、特段の記載がない限りにおいて、第1実行環境E1が稼働側であり、第2実行環境E2が待機側である場合について述べるが、この限りではない。
【0022】
まず設計ツールを用いて、オペレータが制御ロジックCLを作図する(ステップS40)。ステップS40では、演算要素が組み合わせられることによって制御ロジックCLが作図される。作図された制御ロジックCLにおける演算要素の組み合わせに関する情報は、中間コードCCとして生成される(ステップS41)。ステップS41で生成された中間コードCCは、多重化される各実行環境(第1実行環境E1、第2実行環境E2)にそれぞれロードされることによって、インストールされる(ステップS42)。
図7Bでは、稼働側である第1実行環境E1と待機側である第2実行環境E2にそれぞれロードされる。その結果、中間コードCCがロードされた第1実行環境E1と第2実行環境E2との間では、データトラッキングによって多重化に必要な各種データが送受信される。
【0023】
このように
図7Bを参照して前述した多重化システムの開発プロセスには、以下の課題がある。この種の開発プロセスでは、制御ロジックCLに付随するように汎用プログラミング言語で演算要素の処理内容を記述する機能があることもあるが、記述可能なプログラム行数が限られている。そのため、AI等の高度制御機能モデルを記述することまではできない。またインタプリタ方式による実行に時間を要するため、制御周期に処理が間に合わないことがある(一方、実行環境でコンパイルしてバイナリを生成させるには、CPU処理演算機能やメモリやストレージの容量に制約があるため困難である)。そのため、多重化システムの現状の開発環境では、AI等の高度制御機能を取り扱うことができない。
【0024】
このような
図7A及び
図7Bに示す参考技術に係る開発プロセスが有する課題は、以下に説明する各実施形態に係る制御プログラムによって好適に解消可能である。
【0025】
<実施形態>
続いて幾つかの実施形態に係る制御プログラムについて具体的に説明する。ここで
図1は一実施形態に係る制御プログラムの開発プロセスを示す模式図である。
【0026】
まずMBDツールを用いて、AI等の高度制御モデルを含む制御モデルMを構築する(ステップS10)。MBDツールでは、オペレータが関数や演算子のような構成要素を組み合わせることにより、制御モデルMが構築される。
図1では、MBDツールを用いて構築された、予測制御モデルMPC及びプラントモデルMPと含む制御モデルMが簡易的に示されている。
【0027】
続いてMBDツールのソースコード自動生成機能を活用して、ステップS10で構築した制御モデルMに対応するソースコードSCを自動生成する(ステップS11)。MBDツールには、標準機能又はプラグイン機能として、制御モデルに対応するソースコードSCを、C言語のような汎用プログラミング言語として記述(変換)する機能が搭載される。ステップS11では、このようなMBDツールの機能を用いて、ステップS10で構築された制御モデMルに対応するソースコードSCが生成される。続いてステップS11で生成されたソースコードSCを開発環境に取り込み(ステップS12)、コンパイルすることによりバイナリファイルBFを作成する(ステップS13)。ステップS13で作成されたバイナリファイルBFは、多重化される第1実行環境E1及び第2実行環境E2にそれぞれにインストールされる(ステップS14)。
【0028】
一方、設計ツールでは作図により制御ロジックCLが生成される(ステップS15)。そしてステップS15で生成された制御ロジックCLの中間コードCCが生成される(ステップS16)。この中間コードCCは、第1実行環境E1及び第2実行環境E2にロードされることにより(ステップS17)、第1実行環境E1及び第2実行環境E2間におけるデータトラッキングが実現される(ステップS18)。
【0029】
ここで
図2は
図1の制御ロジックCLの一例を示す図であり、
図3は
図2の関数CFN1によってコール可能なユーザ定義ライブラリ関数cfunc1の一例である。
【0030】
図2では、制御ロジックCLの一例として、関数CFN1を中心とした構成が示されている。関数CFN1は、実行条件X1、入力データX2、入力パラメータX3がそれぞれ入力されるとともに、関数CFN1から出力データY1及び実行結果Y2がそれぞれ出力されるように構築される。また制御ロジックCLは、関数CFN1で取り扱われる各種データのうち、データトラッキングの対象となるデータ(データトラッキング対象データ)が格納されるインターフェース領域IAと、当該インターフェース領域IAから中間演算値を取得するための中間演算値取得部APとを備える。
【0031】
インターフェース領域IAは、関数CFN1で取り扱われるアナログデータ、デジタルデータ及び整数データが、それぞれのデータ種類に応じて格納可能である。中間演算値取得部APは、インターフェース領域IAに格納されたデータを取得可能である。具体的には、稼働側である第1実行環境E1では、関数CFN1の演算処理で得られる中間演算値(最新の中間演算値)がインターフェース領域IAに適宜書き出されることによって格納される。一方、待機側である第2実行環境E2では、インターフェース領域IAに格納された中間演算値が取り込まれることで、稼働側である第1実行環境E1に対応した制御状態を再現可能である。
【0032】
また
図2では、制御ロジックCLに付随して関数CFN1が汎用プログラミング言語によって記述される。この例では、関数CFN1は、デジタル入力型を示すDinである変数X1、アナログ入力型を示すAinである変数X2及びX3、アナログ出力型を示すAoutである変数Y1、並びに、デジタル出力型を示すDoutであるY2を用いて定義される。具体的には、実行条件としてX1==1が成立した場合、Y2=cfunc1(X2,X3,&Y1)が実行される。関数cfunc1は、引数として変数X2及びX3、戻り値としてY1を有するユーザ定義ライブラリ関数であり、制御ロジックCLの演算要素(POL)である関数CFN1からコールされる。このように本実施形態では、制御ロジックCLを構成する演算要素である関数CFN1からユーザ定義ライブラリ関数cfunc1がコールされるように構成される。
尚、関数CFN1によってコールされるユーザ定義ライブラリ関数cfunc1の引数は一例に過ぎず、その並びや数はユーザによって適宜定義可能である。
【0033】
図3には、
図2のユーザ定義ライブラリ関数cfunc1の具体的内容が一例として示されている。ユーザ定義ライブラリ関数cfunc1では、第1入力(入力1)として変数inp1、第2入力(パラメータ1)として変数prm1、第3入力(出力1)として変数out1が定義されており、変数inp及び変数prmを引数、変数outを演算実行結果の格納場所(アドレス)を示す引数として定義するサブ関数cfunc1_main(ステップS53)を、第1引数にinp1、第2引数にprm1、第3引数に&out1を指定してコールする部分(ステップS51)を含む。またサブ関数cfunc1_mainの戻り値は変数retに格納される(ステップS51、
図2のY2)。
尚、intは符号付き整数型、floatは単精度浮動小数型、doubleは倍精度浮動小数型を示している。
【0034】
ユーザ定義ライブラリ関数cfunc1では、サブ関数cfunc1_mainが実行されることで、その実行結果が格納される変数out1に格納される(
図2のY1)。一方、その演算中間値(ユーザ定義ライブラリ関数cfunc1の中間演算値cfa[0])はグローバル変数gvalに格納され、データトラッキング対象データを格納するインターフェース領域IAに書き出される(ステップS52)。インターフェース領域IAとして書き出された中間演算値cfa[0]は、待機側の第2実行環境E2において、
図2の中間値取得部APによって取得されることにより、データトラッキングされる。これにより、待機側の第2実行環境E2では稼働側の第1実行環境E1の制御状態の再現が可能となる。
【0035】
図4は
図2の制御ロジックCLによって実行される制御方法を示すフローチャートである。この制御方法では、まず制御対象となる実行環境(第1実行環境E1又は第2実行環境E2)について待機側であるか否かが判定される(ステップS20)。当該実行環境が待機側である場合(ステップS20:YES)、データトラッキング受信データがあれば、データトラッキング受信バッファからインターフェース領域IAに取り込みが行われる(ステップS21)。その後、又は、当該実行環境が待機側でない場合(ステップS20:NO)、制御ロジックCLの演算要素が実行開始される(ステップS22)。
【0036】
制御ロジックCLが実行されると、制御ロジックCLに含まれる全演算要素の実行が完了しているか否かが判定される(ステップS23)。全演算要素の実行が完了していない場合(ステップS23:NO)、実行される演算要素の種別に応じて、以下のように処理が分岐される(ステップS24)。実行される演算要素がインターフェース領域IAの入力要素である場合、インターフェース領域IAから取り込み処理が行われる(ステップS25a)。また実行される演算要素がインターフェース領域IAの出力要素である場合、インターフェース領域IAに書き出し処理が行われる(ステップS25b)。また実行される演算要素がユーザ定義ライブラリ関数cfunc1のコール要素である場合、ユーザ定義ライブラリ関数cfunc1のコール処理が行われる(ステップS25c)。また実行される演算要素がその他の要素である場合、通常の要素演算処理が行われる(ステップS25d)。このように各演算要素の種別に対応する処理が全要素に対して実行完了すると(ステップS23:YES)、制御ロジックCLの演算要素の実行が終了する(ステップS26)。
【0037】
続いて実行環境が稼働側であるか否かが判定される(ステップS27)。稼働側である場合(ステップS27:YES)、データトラッキング送信周期であれば、インターフェース領域IAからデータトラッキング受信バッファに書き出しが行われる(ステップS28)。その後、又は、稼働側でない場合(ステップS27:NO)、一連の制御方法が終了する。
【0038】
このように制御ロジックCLが実行されると、その過程においてユーザ定義ライブラリ関数cfunc1がコールされる。例えば、第2実行環境E2が待機側である場合、第2実行環境E2では、ユーザ定義ライブラリ関数cfunc1の中間演算値が、インターフェース領域IAから取り込むことによって取得される。尚、厳密には、稼働側である第1実行環境E1においてもインターフェース領域IAから中間演算値を取り込むが、稼働側である第1実行環境E1が取り込む中間演算値は、自身が演算した結果の前回値である。この中間演算値は、稼働側である第1実行環境E1における直近の前回値が、予めインターフェース領域IAに格納されたものである。これにより待機側の第2実行環境E2では稼働側の第1実行環境E1の制御状態の再現が可能となる。続いて稼働側の第1実行環境E1では、ユーザ定義ライブラリ関数cfunc1の中間演算値を、インターフェース領域IAに書き出される。尚、厳密には、待機側である第2実行環境E2もインターフェース領域IAに中間演算値を書き出すが、稼働側である第1実行環境E1からのデータトラッキングによって上書きされる。このとき、稼働側の第1実行環境E1における中間演算値はインターフェース領域IAに格納されることにより、次回以降、待機側の中間演算値として取得可能となる。
尚、稼働側の実行環境から待機側の実行環境へのトラッキングデータの転送方法については限定されない。
【0039】
このように制御ロジックCLでは、少なくとも一部の演算要素(例えばPOL)から、ユーザ定義ライブラリ関数cfunc1がコール可能に構成される。これにより、制御ロジックCLに含まれるユーザ定義ライブラリ関数cfunc1を変更することにより、例えばPLC/DCSの組み込みソフトウェアのような制御ロジック全体的な基本的構成を変更することなく、高度制御演算機能の搭載が可能となる。ユーザ定義ライブラリ関数cfunc1では、多重化システムのうち稼働側の第1実行環境E1における中間演算値をインターフェース領域IAに予め格納することで、待機側の第2実行環境E2では、当該インターフェース領域IAから取り込むことで、高度制御演算機能によって実現可能なデータトラッキングを伴う多重化制御を実現することができる。一方でインターフェース領域IAには、稼働側の第1実行環境E1におけるユーザ定義ライブラリ関数cfunc1の中間演算値が書き出される。このようにインターフェース領域IAに書き出されたユーザ定義ライブラリ関数cfunc1の中間演算値は、待機側の第2実行環境E2におけるユーザ定義ライブラリ関数cfunc1に取り込まれることで、2つの実行環境間におけるデータトラッキングが実現される。
【0040】
またデータトラッキング対象となるグローバル変数が、ユーザ定義ライブラリ関数cfunc1においてロジック的に規定される。これにより、制御ロジックCLに含まれる各データのうち、データトラッキング対象となるデータを明確に絞ることができ、トラッキングデータ通信の増加を抑えることができる。その結果、待機側の実行環境E2を起動する際に規定時間内にデータトラッキング通信が完了しないことによる、冗長化構成が復帰不能となる事態を効果的に防ぐことができる。
【0041】
図5は
図3のステップS22及びS23の変形例である。この変形例では、ユーザ定義ライブラリ関数cfunc1において、データトラッキング対象となる変数を指定することが可能である。
図5では、変数gvalをデータトラッキングの対象となるように指定しており、稼働側の第1実行環境E1における制御ロジックCLの中間演算値である変数gvalがインターフェース領域IAに書き出されるとともに、インターフェース領域IAに格納された変数gvalが待機側の第2実行環境E2に取り込み可能となる。
【0042】
このように制御ロジックCLとユーザ定義ライブラリ関数cfunc1間でやり取りされる各データをデータトラッキング対象とするか否かの指定を、それらの演算要素(POL)をロジックの入力要素として記載するのではなく、汎用プログラミング言語で記述されたユーザ定義ライブラリ関数cfunc1内で自動割付けされる。これにより、オペレータがデータトラッキングの対象となるデータを指定する場合に比べて、オペレータによるデータトラッキング対象とするためのロジックの記載漏れを効果的に回避できる。
【0043】
尚、
図6に示すように、制御ロジックCLの演算オブジェクトからユーザ定義ライブラリ関数cfunc1のオブジェクトには、リンカオプションを用いて、両者間のインターフェース領域IAの演算要素(POL)のみが読み書きを許可されるように、変数シンボルのスコープを限定してもよい。リンカオプションは、このような共有ライブラリで公開する指定が行えるものの一例として、オープンソースgccコンパイラのLD version scriptがある。一方、ユーザ定義ライブラリ関数cfunc1からユーザ定義ライブラリ関数のオブジェクトには、ユーザ定義ライブラリ関数cfunc1のみ関数コールを許可するように、関数シンボルのスコープを限定してもよい。
【0044】
これにより、MATLABやSimulink等のMBDツールで記述したモデル予測制御やAI等の高度制御モデルから、汎用プログラミング言語であるC言語で記述されたソースコードを自動生成させてユーザ定義スクリプトを作成する場合に、PLC/DCSの既存の組込みソフトウェアの変数シンボルや関数シンボルと偶然に重複することにより、コンパイルエラーや無関係な変数が干渉してソフトウェアバグを混入することを効果的に回避できる。
【0045】
以上説明したように上記各実施形態によれば、多重化システムを対象とする制御ロジックにおいて、高度制御機能を実現可能な多重化システムの制御プログラム、制御システム、及び、制御方法を提供できる。
【0046】
その他、本開示の趣旨を逸脱しない範囲で、上記した実施形態における構成要素を周知の構成要素に置き換えることは適宜可能であり、また、上記した実施形態を適宜組み合わせてもよい。
【0047】
上記各実施形態に記載の内容は、例えば以下のように把握される。
【0048】
(1)一態様に係る多重化システムの制御プログラムは、
多重化された第1実行環境及び第2実行環境を制御するための制御ロジックが含まれる多重化システムの制御プログラムであって、
コンピュータ装置に、
前記制御ロジックを構成する少なくとも1つの演算要素からユーザ定義ライブラリ関数をコールする工程と、
前記第1実行環境又は前記第2実行環境のうち待機側における前記ユーザ定義ライブラリ関数の中間演算値を、前記第1実行環境又は前記第2実行環境のうち稼働側における前記ユーザ定義ライブラリ関数の前記中間演算値が予め格納されたインターフェース領域から取り込む工程と、
を実行可能である。
【0049】
上記(1)の態様によれば、制御ロジックを構成する少なくとも一部の演算要素(例えばPOL)から、ユーザ定義ライブラリ関数がコール可能に構成される。これにより、制御ロジックに含まれるユーザ定義ライブラリ関数を変更することにより、例えばPLC/DCSの組み込みソフトウェアのような制御ロジック全体的な基本的構成を変更することなく、高度制御演算機能の搭載が可能となる。ユーザ定義ライブラリ関数では、多重化システムのうち稼働側の実行環境における中間演算値をインターフェース領域に予め格納することで、待機側の実行環境では、当該インターフェース領域から取り込むことで、高度制御演算機能によって実現可能なデータトラッキングを伴う多重化制御を実現することができる。
【0050】
(2)他の態様では、上記(1)の態様において、
前記第1実行環境又は前記第2実行環境のうち少なくとも稼働側における前記ユーザ定義ライブラリ関数の中間演算値を、前記インターフェース領域に書き出す工程を、更に備える。
【0051】
上記(2)の態様によれば、インターフェース領域には、少なくとも稼働側の実行環境におけるユーザ定義ライブラリ関数の中間演算値が書き出される。このようにインターフェース領域に書き出されたユーザ定義ライブラリ関数中間演算値は、待機側の実行環境におけるユーザ定義ライブラリ関数に取り込まれることで、2つの実行環境間におけるデータトラッキングを実現できる。
【0052】
(3)他の態様では、上記(1)又は(2)の態様において、
前記中間演算値は、前記第1実行環境及び第2実行環境間のデータトラッキング対象データである。
【0053】
上記(3)の態様によれば、ユーザ定義ライブラリ関数の中間演算値をデータトラッキング対象データとすることで、制御ロジックにおいて、様々なグローバル変数のうち、どの変数をデータトラッキング対象とするかを明確に絞ることができる。これにより、必要以上にデータトラッキング対象データが増えることを抑制できる。その結果、多重化システムのうち待機側の実行環境を起動する際に、規定時間内にデータトラッキング通信が完了しないことによって、多重化構成が復帰不能となることを効果的に防止できる。
尚、稼働側の実行環境から待機側の実行環境へのトラッキングデータの転送方法については限定されない。
【0054】
(4)他の態様では、上記(3)の態様において、
前記ユーザ定義ライブラリ関数は、前記ユーザ定義ライブラリ関数に含まれる複数のグローバル変数のうち前記データトラッキング対象データを特定する。
【0055】
上記(4)の態様によれば、ユーザ定義ライブラリ関数においてデータトラッキング対象データが特定される。これにより、どのデータをデータトラッキング対象とするかを、制御ロジックの基本構成である演算要素(例えばPOL)として記載するのではなく、プログラムで自動割り付けすることができる。
【0056】
(5)他の態様では、上記(1)から(4)のいずれか一態様において、
前記ユーザ定義ライブラリ関数は汎用プログラミング言語で記述される。
【0057】
上記(5)の態様によれば、制御ロジックを構成する演算要素によってコールされるユーザ定義ライブラリ関数は、汎用プログラミング言語を用いて好適に記述可能である。
【0058】
(6)一態様に係る多重化システムの制御装置は、
上記(1)から(5)のいずれか一態様に係る制御プログラムを実行可能な演算部を有する。
【0059】
上記(6)の態様によれば、前述の制御プログラムを演算部によって実行することにより、高度制御演算機能によって実現可能なデータトラッキングを伴う多重化制御が可能な制御装置を実現できる。
【0060】
(7)一態様に係る多重化システムの制御方法は、
多重化された第1実行環境及び第2実行環境を制御するための制御ロジックが含まれる多重化システムの制御方法であって、
前記制御ロジックを構成する少なくとも1つの演算要素からユーザ定義ライブラリ関数をコールする工程と、
前記第1実行環境又は前記第2実行環境のうち待機側における前記ユーザ定義ライブラリ関数の中間演算値を、前記第1実行環境又は前記第2実行環境のうち稼働側における前記ユーザ定義ライブラリ関数の前記中間演算値が予め格納されたインターフェース領域から取り込む工程と、
前記第1実行環境又は前記第2実行環境のうち稼働側における前記ユーザ定義ライブラリ関数の中間演算値を、前記インターフェース領域に書き出す工程と、
を備える。
【0061】
上記(7)の態様によれば、制御ロジックを構成する少なくとも一部の演算要素(例えばPOL)から、ユーザ定義ライブラリ関数がコール可能に構成される。これにより、制御ロジックに含まれるユーザ定義ライブラリ関数を変更することにより、例えばPLC/DCSの組み込みソフトウェアのような制御ロジック全体的な基本的構成を変更することなく、高度制御演算機能の搭載が可能となる。ユーザ定義ライブラリ関数では、多重化システムのうち稼働側の実行環境における中間演算値をインターフェース領域に予め格納することで、待機側の実行環境では、当該インターフェース領域から取り込むことで、高度制御演算機能によって実現可能なデータトラッキングを伴う多重化制御を実現することができる。
【符号の説明】
【0062】
M 制御モデル
CC 中間コード
CL 制御ロジック
SC ソースコード
BF バイナリファイル
IA インターフェース領域
AP 中間演算値取得部
E1 第1実行環境
E2 第2実行環境