(57)【要約】【課題】ユーザが任意に設定した演算式での演算を実現することができるフィールド機器、設定装置、及び設定プログラムを提供する。【解決手段】フィールド機器は、物理量を検出することが可能な少なくとも１つのセンサ部による検出値を取得する取得部と、外部から設定された演算式に関する設定情報に基づいて、前記取得部により取得された検出値を入力値として演算可能な演算式を生成し、生成された演算式に基づいて前記取得部により取得された検出値を演算する演算部と、前記演算部により演算された結果を出力する出力部と、を備える。【選択図】図１
2018206301.tif 000002
【特許請求の範囲】
【請求項１】
物理量を検出することが可能な少なくとも１つのセンサ部による検出値を取得する取得部と、
外部から設定された演算式に関する設定情報に基づいて、前記取得部により取得された検出値を入力値として演算可能な演算式を生成し、生成された演算式に基づいて前記取得部により取得された検出値を演算する演算部と、
前記演算部により演算された結果を出力する出力部と、
を備えるフィールド機器。
【請求項２】
前記演算式に関する設定情報は、逆ポーランド記法により記述された文字情報を含む、
請求項１に記載のフィールド機器。
【請求項３】
前記演算部は、前記逆ポーランド記法により記述された文字情報の先頭から１文字ごとに読み出し、読み出した文字が変数である場合には、前記変数を所定の記憶領域に格納し、前記読み出した文字が関数である場合には、前記所定の記憶領域に格納された変数を読み出し、読み出した前記変数と前記関数とに基づいて演算を行う、
請求項２に記載のフィールド機器。
【請求項４】
前記演算部は、複数のタスクの演算が可能であり、
前記演算式に含まれる変数が非公開変数である場合には、他のタスクからの参照を拒否し、前記演算式に含まれる変数が公開変数である場合には、前記他のタスクからの参照を許可する、
請求項１から３のうちいずれか１項に記載のフィールド機器。
【請求項５】
フィールド機器で取得可能な検出値に対して、所定の演算を実行させるための演算式を設定する演算式設定部と、
前記演算式設定部により設定された演算式を所定のコードに変換するコード変換部と、
前記コード変換部により設定されたコード情報を、前記フィールド機器に送信する通信処理部と、
を備える設定装置。
【請求項６】
前記コード変換部は、前記演算式設定部により設定された演算式を、変数部分と関数部分とに分離し、分離した前記変数部分に関する変数コードと、前記関数部分とに関する関数コードとを設定する、
請求項５に記載の設定装置。
【請求項７】
前記演算式設定部は、設定する演算式に、非公開変数または公開変数の少なくとも一方を設ける、
請求項５または６に記載の設定装置。
【請求項８】
前記演算式設定部は、前記演算式を逆ポーランド記法に変換する、
請求項５または６に記載の設定装置。
【請求項９】
コンピュータを、
フィールド機器で取得可能な検出値に対して、所定の演算を実行させるための演算式を設定する演算式設定手段と、
前記演算式設定手段により設定された演算式を所定のコードに変換するコード変換手段と、
前記コード変換手段により設定されたコード情報を、前記フィールド機器に送信する通信処理手段と、
して機能させる設定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フィールド機器、設定装置、および設定プログラムに関する。
【背景技術】
【０００２】
従来から、プラントや工場等においては、分散制御システム（ＤＣＳ：Distributed Control System）が構築されており、高度な自動操業が実現されている。この分散制御システムは、フィールド機器と呼ばれる現場機器（例えば、測定器、操作器）と、これらの制御を行う制御装置とが通信手段を介して接続されたシステムである。従来の分散制御システムは、フィールド機器と制御装置との間の通信を有線通信で行うものが殆どであった。近年においては、フィールド機器と制御装置との間の通信を無線通信（例えば、ＩＳＡ１００．１１ａ等の産業用無線通信規格に準拠した無線通信）で行う分散制御システムも実現されている。
【０００３】
上述のフィールド機器としては、例えば、オリフィス等の絞り機構（以下、「プライマリエレメント」と称する）に発生する圧力差を流量に変換して流量計測を行うものが開示されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４６３６４２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、上述した従来技術の手法では、圧力差を流量に変換するための演算式が必要となる。しかしながら、このような演算式は、プライマリエレメントの種類や、開発元のメーカー等によって異なるため、新しくプライマリエレメントが規格化されたり、開発されたりした場合には、対応する新たな演算式をフィールド機器に実装し、ファームウェアを更新しないと、所望する演算が実行できない場合があった。
【０００６】
本発明は上記事情に鑑みてなされたものであり、ユーザが任意に設定した演算式での演算を実現することができるフィールド機器、設定装置、及び設定プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のフィールド機器は、物理量を検出することが可能な少なくとも１つのセンサ部による検出値を取得する取得部（１１０）と、外部から設定された演算式に関する設定情報に基づいて、前記取得部により取得された検出値を入力値として演算可能な演算式を生成し、生成された演算式に基づいて前記取得部により取得された検出値を演算する演算部（１１２，１１４）と、前記演算部により演算された結果を出力する出力部（１１８）と、を備える。
また、本発明のフィールド機器は、前記演算式に関する設定情報が、逆ポーランド記法により記述された文字情報を含む。
また、本発明のフィールド機器は、前記演算部が、前記逆ポーランド記法により記述された文字情報の先頭から１文字ごとに読み出し、読み出した文字が変数である場合には、前記変数を所定の記憶領域に格納し、前記読み出した文字が関数である場合には、前記所定の記憶領域に格納された変数を読み出し、読み出した前記変数と前記関数とに基づいて演算を行う。
また、本発明のフィールド機器は、前記演算部が、複数のタスクの演算が可能であり、前記演算式に含まれる変数が非公開変数である場合には、他のタスクからの参照を拒否し、前記演算式に含まれる変数が公開変数である場合には、前記他のタスクからの参照を許可する。
本発明の設定装置は、フィールド機器（１）で取得可能な検出値に対して、所定の演算を実行させるための演算式を設定する演算式設定部（２４２）と、前記演算式設定部により設定された演算式を所定のコードに変換するコード変換部（２４４）と、前記コード変換部により設定されたコード情報を、前記フィールド機器に送信する通信処理部（２４６）と、を備える。
また、本発明の設定装置は、前記コード変換部が、前記演算式設定部により設定された演算式を、変数部分と関数部分とに分離し、分離した前記変数部分に関する変数コードと、前記関数部分とに関する関数コードとを設定する。
また、本発明の設定装置は、前記演算式設定部が、設定する演算式に、非公開変数または公開変数の少なくとも一方を設ける。
また、本発明の設定プログラムは、コンピュータを、フィールド機器（１）で取得可能な検出値に対して、所定の演算を実行させるための演算式を設定する演算式設定手段（２４２）と、前記演算式設定手段により設定された演算式を所定のコードに変換するコード変換手段（２４４）と、前記コード変換手段により設定されたコード情報を、前記フィールド機器に送信する通信処理手段（２４６）として機能させる。
【発明の効果】
【０００８】
本発明によれば、ユーザが任意に設定した演算式での演算を実現することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態によるフィールド機器の概略構成の一例を示す図である。
【図２】設定装置２００の機能構成の一例を示す図である。
【図３】設定装置２００における演算式の設定処理の一例を示すフローチャートである。
【図４】演算式の設定画面の一例を示す図である。
【図５】他の演算式を設定する様子を説明するための図である。
【図６】変数コード変換表２６４の一例を示す図である。
【図７】関数コード変換表２６６の一例を示す図である。
【図８】逆ポーランド記法に対応付けた変数コードおよび関数コードの設定の様子を説明するための図である。
【図９】本発明の一実施形態による汎用演算の様子を説明するための図である。
【図１０】演算処理タスクによる演算処理の一例を示すフローチャートである。
【図１１】演算式の変数がスタックに格納される様子を説明するための図である。
【図１２】図４で設定した演算式に対する演算処理の様子を説明するための図である。
【図１３】図５で設定した演算式に対する演算処理の様子を説明するための図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明の一実施形態によるフィールド機器、設定装置、および設定プログラムについて詳細に説明する。
【００１１】
［フィールド機器］
図１は、フィールド機器１の概略構成の一例を示す図である。図１に示すフィールド機器１は、例えば、差圧センサ１０と、静圧センサ２０と、プロセス温度センサ３０と、多変数伝送器１００とを備える。差圧センサ１０、静圧センサ２０、およびプロセス温度センサ３０の一部または全部は、「センサ部」の一例である。
【００１２】
図１の例では、パイプＰにオリフィス等の絞り機構Ｋが設けられている。フィールド機器１は、パイプＰの上流側圧力Ｐ１及び下流側圧力Ｐ２を物理量として検出し、流量信号Ｆｏｕｔを出力する。
【００１３】
差圧センサ１０は、上流側圧力Ｐ１と下流側圧力Ｐ２との差圧を検出する。静圧センサ２０は、上流側圧力Ｐ１を基準圧力として、真空圧力との差を検出する。真空とは、厳密な真空の意味ではなく、ある程度の圧力のある状態を含んでもよい。プロセス温度センサ３０は、パイプＰ中の流体Ｆの温度を検出する。差圧センサ１０、静圧センサ２０、およびプロセス温度センサ３０による出力信号（検出値）は、多変数伝送器１００に出力される。
【００１４】
多変数伝送器１００は、例えば、Ａ／Ｄ変換部１１０−１〜１１０−３と、差圧値・静圧値演算部１１２と、汎用演算部１１４と、記憶部１１６と、出力部１１８と、通信部１２０とを備える。また、Ａ／Ｄ変換部１１０−１〜１１０−３、差圧値・静圧値演算部１１２、汎用演算部１１４、および出力部１１８のうち一部または全部は、ファームウェアが実行されることにより実現される機能である。また、差圧値・静圧値演算部１１２および汎用演算部１１４のうち一部または全部は、「演算部」の一例である。
【００１５】
Ａ／Ｄ変換部１１０−１〜１１０−３は、差圧センサ１０、静圧センサ２０、およびプロセス温度センサ３０からの検出値を取得する「取得部」の一例である。Ａ／Ｄ変換部１１０−１は、差圧センサ１０からの出力信号をデジタル信号に変換する。Ａ／Ｄ変換部１１０−２は、静圧センサ２０からの出力信号をデジタル信号に変換する。Ａ／Ｄ変換部１１０−３は、プロセス温度センサ３０からの出力信号をデジタル信号に変換する。
【００１６】
差圧値・静圧値演算部１１２は、取得したデジタル信号に基づいて流体の差圧値および静圧値を求める演算処理を行う。
【００１７】
汎用演算部１１４は、例えば電卓等のように、数値を所定の演算子により演算する機能を備える。例えば、汎用演算部１１４は、差圧値・静圧値演算部１１２により演算された差圧値および静圧値と、Ａ／Ｄ変換部１１０−３から得られる温度のデジタル値を入力とし、所定の演算式を用いて演算を行う。この場合、汎用演算部１１４は、設定装置２００等の外部の装置から設定された演算式に関する設定情報に基づいて演算式を生成し、生成された演算式に基づいて演算を行う。また、汎用演算部１１４は、例えば、差圧値・静圧値演算部１１２およびＡ／Ｄ変換部１１０−３からの入力があった場合に演算を行う。また、汎用演算部１１４は、設定装置２００からの指示を受け付けた場合に演算を行ってもよい。汎用演算部１１４の機能の詳細については、後述する。
【００１８】
記憶部１１６は、例えばＨＤＤ（ハードディスクドライブ）やＳＳＤ（ソリッドステートドライブ）等の補助記憶装置を備える。記憶部１１６は、例えば、汎用演算部１１４による演算を行うために必要な各種データを格納する。また、記憶部１１６は、汎用演算部１１４により演算式の少なくとも一部を一時的に格納するスタックに対応する記憶領域を備える。また、記憶部１１６は、汎用演算部１１４の処理結果を格納してもよい。
【００１９】
出力部１１８は、汎用演算部１１４により演算されたデジタル値をアナログ信号に変換し、変換した値を２線式伝送線またはフィールド・バス等へ出力する。出力部１１８から出力される値としては、例えば、流量信号Ｆｏｕｔである。
【００２０】
通信部１２０は、通信プロトコルにより、多変数伝送器１００と、設定装置２００等の外部装置との間の通信処理を実行する。
【００２１】
また、フィールド機器１には、図１に示すように設定装置２００が含まれてもよい。設定装置２００は、多変数伝送器１００と有線または無線で接続されていてもよく、有線と無線とを組み合わせて接続されていてもよい。また、設定装置２００は、フィールド機器１とは離れた位置に設置されてもよい。設定装置２００は、例えば、ノート型のパーソナルコンピュータ、或いはタブレット端末、スマートフォン等の携帯端末により実現される。
【００２２】
［設定装置２００］
図２は、設定装置２００の機能構成の一例を示す図である。設定装置２００は、例えば、操作部２１０と、表示部２２０と、ドライブ装置２３０と、処理部２４０と、通信部２５０、記憶部２６０とを備える。操作部２１０は、例えば、キーボードやポインティングデバイス等の入力装置を備える。操作部２１０は、入力装置等により、設定装置２００を使用するユーザからの操作に応じた指示を受け付け、受け付けた指示を処理部２４０に出力する。
【００２３】
表示部２２０は、例えば液晶表示装置等の表示装置を備える。表示部２２０は、処理部２４０により処理される前、処理中、処理された後において、表示可能な各種情報を画面に表示する。また、表示部２２０は、多変数伝送器１００から取得したデータ等を画面に表示してもよい。操作部２１０および表示部２２０は、物理的に分離されたものでよく、表示機能と操作機能とを兼ね備えるタッチパネル式の液晶表示装置のように物理的に一体化されたものでもよい。
【００２４】
ドライブ装置２３０は、例えばＣＤ−ＲＯＭ又はＤＶＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体Ｍに記録されているデータの読み出しを行う。記録媒体Ｍは、設定装置２００の各ブロックの機能を実現するプログラム（設定プログラム）を格納している。
【００２５】
記録媒体Ｍに格納されたプログラムがドライブ装置２３０によって読み込まれ、設定装置２００にインストールされることにより、設定装置２００の各ブロックの機能がソフトウェア的に実現される。つまり、これらの機能は、ソフトウェアとハードウェア資源とが協働することによって実現される。設定装置２００の各ブロックの機能を実現するプログラムは、例えば、記録媒体Ｍに記録された状態で配布される。また、上述のプログラムは、インターネット等の外部のネットワークを介して配布されてもよい。
【００２６】
処理部２４０は、操作部２１０から入力される操作指示等に基づいて、設定装置２００の各種動作を制御する。図３は、設定装置２００における演算式の設定処理の一例を示すフローチャートである。処理部２４０は、例えば、演算式設定部（演算式設定手段）２４２と、コード変換部（コード変換手段）２４４と、通信処理部（通信処理手段）２４６とを備える。
【００２７】
図３の例において、演算式設定部２４２は、多変数伝送器１００で取得可能な検出値等に対して、多変数伝送器１００の汎用演算部１１４に所定の演算をさせるための演算式を設定する（ステップＳ１００）。なお、演算式設定部２４２は、少なくとも１つの演算（タスク）に対応する演算式を設定する。設定された演算式は、設定情報２６２として記憶部２６０に格納される。
【００２８】
次に、コード変換部２４４は、演算式設定部２４２で設定された演算式を変数部分と関数部分とに分離する（ステップＳ１０２）。また、コード変換部２４４は、分離した変数部分に対応する変数コードと、関数部分に対応する関数コードとを設定する（ステップＳ１０４）。設定された各種コード情報は、設定情報２６２として記憶部２６０に格納される。
【００２９】
通信処理部２４６は、通信部２５０を制御して多変数伝送器１００との間で通信を行う（ステップＳ１０６）。例えば、通信処理部２４６は、操作部２１０から設定情報２６２の送信指示が入力された場合には、記憶部２６０に格納された設定情報２６２を読み出し、通信部２５０により多変数伝送器１００に送信させる。また、通信処理部２４６は、操作部２１０からデータ取得指示が入力された場合には、通信部２５０を介して多変数伝送器１００からデータを取得する処理を行う。通信部２５０は、通信処理部２４６によって制御され、例えば、多変数伝送器１００との間で通信を行う。
【００３０】
記憶部２６０は、例えば、ＨＤＤやＳＳＤ等の補助記憶装置を備える。記憶部２６０は、実施形態における各種データを格納する。具体的には、記憶部２６０は、設定情報２６２、変数コード変換表２６４、および関数コード変換表２６６を格納する。各データの詳細については、後述する。
【００３１】
［処理部２４０の具体的な処理内容］
次に、処理部２４０における具体的な処理内容について説明する。演算式設定部２４２は、表示部２２０に演算式を設定する設定画面を表示し、設定画面により受け付けられたユーザ指示に基づいて、演算式等を設定する。
【００３２】
図４は、演算式の設定画面の一例を示す図である。演算式設定部２４２は、操作部２１０により設定指示を受け付けた場合に、表示部２２０に図４に示すＧＵＩ（Graphical User Interface）画面（Calculator 1）３００を表示させる。ＧＵＩ画面３００には、例えば、演算式表示領域３０２と、ＧＵＩボタン表示領域３０４と、キャンセルボタン３０６と、設定適用ボタン３０８とが示されている。
【００３３】
演算式表示領域３０２には、ユーザがＧＵＩボタン等を用いて設定する演算式が表示される。また、演算式表示領域３０２には、すでに設定情報２６２として記憶部２６０に格納されている演算式が表示されてもよい。
【００３４】
ＧＵＩボタン表示領域３０４には、例えば、変数や関数のそれぞれに対応して割り当てられたＧＵＩボタンが配列されている。ＧＵＩボタンに割り当てられる情報としては、例えば、少なくとも１つのセンサ部による計測値（例えば、差圧△Ｐ、静圧Ｐ、温度Ｔ）、ユーザ設定変数（例えば、ｘ１〜ｘ８）、演算子や関数（例えば、四則演算、累乗）、実行する演算（タスク）の演算結果（図４の例では、ｙ１）、他のタスクでの演算結果（例えば、ｙ２〜ｙ４）、演算式表示領域３０２に記載された演算式のクリア（ＣＬ）、文字の消去（ＤＥＬ）等である。ユーザは、ＧＵＩボタン表示領域３０４に配列されたＧＵＩボタンの少なくとも１つを選択して演算式を設定する。演算式設定部２４２は、ユーザによるキャンセルボタン３０６の選択操作を受け付けた場合に、それまで設定していた演算式の内容を消去する。また、演算式設定部２４２は、設定適用ボタン３０８を選択することで、演算式表示領域３０２に表示さている演算式を、設定情報２６２として、記憶部２６０に格納させる。
【００３５】
また、演算式設定部２４２は、演算式を複数に分割して設定してもよい。図５は、他の演算式を設定する様子を説明するための図である。図５に示すＧＵＩ画面（Calculator 2）３１０には、例えば、演算式表示領域３１２と、ＧＵＩボタン表示領域３１４と、キャンセルボタン３１６と、設定適用ボタン３１８とが示されている。演算式表示領域３１２、ＧＵＩボタン表示領域３１４、キャンセルボタン３１６、および設定適用ボタン３１８は、上述した演算式表示領域３０２、ＧＵＩボタン表示領域３０４、キャンセルボタン３０６、および設定適用ボタン３０８に対応している。演算式設定部２４２は、複数の演算式を設定する場合に、各演算式に対応するＧＵＩ画面を表示する。図４に示すＧＵＩ画面３００は、ｙ１の演算式を設定する表示画面であり、図５に示すＧＵＩ画面３１０は、ｙ２の演算式を設定する表示画面である。それぞれの演算式を設定するためのＧＵＩ画面は、デザインが統一させていることが好ましいが、これに限定されるものではない。ユーザは、それぞれのＧＵＩ画面３００，３１０で演算式を設定する。設定されたそれぞれの演算式は、設定情報２６２として記憶部２６０に格納される。
【００３６】
また、演算式設定部２４２は、設定する演算式に、非公開変数または公開変数の少なくとも一方を設けることができる。非公開変数とは、他のタスクから参照できない変数である。公開変数とは、他のタスクから参照できる変数である。非公開変数は、例えば、ユーザが設定可能な変数ｘ１〜ｘ８や変数コード、関数コード等である。また、公開変数は、例えば、各タスクの演算結果ｙ１〜ｙ４等である。
【００３７】
なお、演算式設定部２４２は、上述したようにユーザに直接演算式を設定させる画面を表示部２２０に表示させるのではなく、例えば、プライマリエレメントや使用環境等の条件を設定させる画面を表示させてもよい。この場合、演算式設定部２４２は、ユーザが操作部２１０等を操作することで受け付けた条件に基づいて、演算式を自動的に生成または選択してもよい。これにより、ユーザは、演算式に関する知識がなくても、適切な演算式を設定することができる。
【００３８】
コード変換部２４４は、演算式設定部２４２により設定された演算式をフィールド機器１で演算可能な形式の文字情報（演算式に関する設定情報）に変換する。コード変換部２４４は、例えば、演算式設定部２４２により設定された演算式の演算部分を、逆ポーランド記法を用いた文字情報に変換する。逆ポーランド記法とは、演算子を非演算子の後に配置して数式を表記する方法である。以下では、ｍ変数関数も演算子とみなし、逆ポーランド記法を適用する。
【００３９】
例えば、コード変換部２４４は、以下に示す（１）式のような演算式を設定する。
【数１】
2018206301.tif 000003
（１）式は、上述した図４で設定された演算式である。コード変換部２４４は、逆ポーランド記法により（１）式の右辺の演算部分を「ｘ１・ｘ２・（ＭＵＬ）・ｘ３・（ＭＵＬ）・ｘ４・（Ｐ２）・（ＭＵＬ）・△Ｐ・ｘ５・（ＭＵＬ）・ｘ６・ｙ２・（Ｐ４）・（ＳＵＢ）・（ＤＩＶ）・（ＳＱＲＴ）・（ＭＵＬ）・ＥＮＤ」と変換する。
【００４０】
また、コード変換部２４４は、逆ポーランド記法を数値と関数とに分離してエンコードする。エンコードには、予め記憶部２６０に記憶された変数コード変換表２６４と、関数コード変換表２６６とを用いる。
【００４１】
図６は、変数コード変換表２６４の一例を示す図である。図６の例では、上述したＧＵＩ画面３００，３１０のＧＵＩボタン表示領域３０４，３１４に表示されたＧＵＩボタンに対応する変数（ｘ１〜ｘ８、ｙ１〜ｙ４）と、それぞれの変数を識別するためのコードとが割り当てられている。コードは、例えば、１６進数により設定されるが、これに限定されるものではない。
【００４２】
また、図７は、関数コード変換表２６６の一例を示す図である。図７の例では、上述したＧＵＩ画面３００，３１０のＧＵＩボタン表示領域３０４，３１４に表示されたＧＵＩボタンに対応する関数と、それぞれの関数を識別するためのコードとが割り当てられている。例えば、図７の例において、「ＡＤＤ（Ａ、Ｂ）」は、２変数（Ａ、Ｂ）の和を示す関数である。「ＳＵＢ（Ａ、Ｂ）」は、２変数（Ａ、Ｂ）の差を示す関数である。「ＭＵＬ（Ａ、Ｂ）」は、２変数（Ａ、Ｂ）の積を示す関数である。「ＤＩＶ（Ａ，Ｂ）」は、２変数（Ａ，Ｂ）の商を示す関数である。また、「ＰＯＷＥＲ２（Ａ）」は、１変数（Ａ）の二乗を示す関数である。「ＰＯＷＥＲ３（Ａ）」は、１変数（Ａ）の三乗を示す関数である。「ＰＯＷＥＲ４（Ａ）」は、１変数（Ａ）の四乗を示す関数である。上述した逆ポーランド記法による変換式のうち、（Ｐ２）、（Ｐ４）は、「ＰＯＷＥＲ２」、「ＰＯＷＥＲ４」に対応する。「ＳＱＲＴ（Ａ）」は、１変数の平方根を示す関数である。関数コード変換表２６６は、これらの関数を識別するためのコードが関数と対応付けて格納される。コードは、例えば、１６進数により設定されるが、これに限定されるものではない。
【００４３】
コード変換部２４４は、逆ポーランド記法に変換した式を、変数部分と関数部分とに分離し、分離した変数部分を、変数コード変換表２６４に基づいて変数コードに変換する。また、コード変換部２４４は、分離した関数部分を、関数コード変換表２６６に基づいて関数コードに変換する。以下に、逆ポーランド記法による演算式に対応させた変数コードおよび関数コードのそれぞれに変換する例について、具体的に説明する。
【００４４】
図８は、逆ポーランド記法に対応付けた変数コードおよび関数コードの設定の様子を説明するための図である。図８の例では、上述した（１）式の逆ポーランド記法の数式（文字情報）が示されている。この数式では、合計１８個のインデックスを備える。
【００４５】
［変数コードへの変換例］
コード変換部２４４は、例えば、図８に示す逆ポーランド記法に変換した式のうち、関数（例えば、ＡＤＤ、ＳＵＢ、ＭＵＬ）が表記された要素である場合、コード変換部２４４は、「ＦＦ」で置換する。この場合、「ＦＦ」は、関数が入力された要素であることを示す。また、変数（例えば、ｘ１、ｙ１、△Ｐ等）が表記された要素である場合、コード変換部２４４は、変数コード変換表２６４に基づいて、対応する１６進数の数値に置換する。また、終端記号（ＥＮＤ）が表記された要素である場合、コード変換部２４４は、「ＦＥ」で置き換える。これにより、図８に示す変数コードが設定される。
【００４６】
［関数コードへの変換例］
また、コード変換部２４４は、例えば、図８に示す逆ポーランド記法の数式のうち、関数が表記された要素である場合、コード変換部２４４は、関数コード変換表２６６に基づいて、対応する１６進数の数値に置換する。また、変数が表記された要素である場合、コード変換部２４４は、「ＦＦ」で置換する。この場合、「ＦＦ」は、変数が入力された要素であることを示す。また、終端記号が表記された要素である場合、コード変換部２４４は、「ＦＥ」で置き換える。これにより、図８に示す関数コードが設定される。
【００４７】
コード変換部２４４は、上述の処理により設定された演算式に対応する変数コードおよび関数コードを含む情報を、多変数伝送器１００に出力する。多変数伝送器１００の汎用演算部１１４は、設定装置により設定された演算式に対応する変数コードおよび関数コードに基づいて、汎用演算処理を実行する。
【００４８】
［汎用演算部１１４の処理内容］
次に、汎用演算部１１４の処理内容について具体的に説明する。汎用演算部１１４は、例えば、演算タスク群と、タスク専用データとを備える。演算タスク群とは、ユーザが設定（定義）した演算式を用いて動的に演算を実行する少なくとも１つのタスクを含む。各タスクは、各演算部（Calculator）に対応する。各タスクの処理は、例えば、全てのタスクで共通、且つ汎用的な電卓機能を備える。汎用演算部１１４は、複数のタスクが実行される場合に、各タスクに優先順位を設定してもよい。これにより、汎用演算部１１４は、優先順位の大きい順に演算式を実行する等、演算式を多段階に分割して演算を実行ことができる。タスク専用データとは、各演算タスクのデータ構造を定義したものである。データ構造には、非公開変数と、公開変数とが含まれる。
【００４９】
汎用演算部１１４は、例えば、四則演算、累乗、平方根、指数関数や三角関数等の初等関数、その他の関数等を用いた演算を実行する。これらの処理は、各タスクが共通に利用できる。図９は、本発明の一実施形態による汎用演算の様子を説明するための図である。図９の例では、４つのタスク（汎用演算タスク１〜４）を示しているが、実施形態においては、これに限定されるものではなく、任意個数のタスクを実行することができる。
【００５０】
また、図９の例では、関数コード変換表２６６に合わせて２変数関数（ＡＤＤ、ＳＵＢ、ＭＵＬ、ＤＩＶ）と１変数関数（ＰＯＷＥＲ２、ＰＯＷＥＲ３、ＰＯＷＥＲ４、ＳＱＲＴ）とを示している。汎用演算部１１４には、引数がｍ変数になる関数を定義してもよい。
【００５１】
ここで、設定装置２００にある変数コード変換表２６４と、関数コード変換表２６６とは、記憶部１１６に記憶されてもよい。汎用演算部１１４は、記憶部１１６から読み出した変数コード変換表２６４と関数コード変換表２６６とに基づいて、どの関数に、どの変数を代入して演算を実行するかを決定する。
【００５２】
通信部１２０は、設定装置２００で定義されたｘ１〜ｘ８のパラメータ値を汎用演算タスク１〜４ごとにダウンロードする。具体的には、通信部１２０は、設定装置２００により設定された各演算式に対応するユーザが設定した非公開変数である変数（ｘ１〜ｘ８）、変数コード、および関数コードをダウンロードする。通信部１２０では、ダウンロードされたパラメータを、タスク専用データとして、図９に示すタスク専用データ構造を、記憶部１１６の不揮発メモリに書き込む。なお、汎用演算タスク１〜４の演算結果であるｙ１〜ｙ４は、例えば、公開変数として設定される。
【００５３】
汎用演算部１１４は、演算式に含まれる変数が非公開変数である場合に、他のタスクからの参照を拒否する。また、汎用演算部１１４は、演算式に含まれる変数が公開変数である場合に、他のタスクからの参照を許可する。
【００５４】
次に、汎用演算部１１４による演算処理タスクの処理内容について説明する。図１０は、演算処理タスクによる演算処理の一例を示すフローチャートである。汎用演算部１１４は、逆ポーランド記法で入力された演算式を用いて、計測値等の入力値に対する演算処理を行う。図１０の例において、汎用演算部１１４は、インデックスｎにゼロ（０）を代入し、初期化を行う（ステップＳ２００）。
【００５５】
次に、汎用演算部１１４は、ｎ番目の変数コードを取得し（ステップＳ２０２）、ｎ番目の変数コードが終端に到達しているか（変数コードがＥＮＤであるか）否かを判定する（ステップＳ２０４）。変数コードが終端に到達していない場合、変数コードがＦＦであるか否かを判定する（ステップＳ２０６）。変数コードがＦＦである場合、汎用演算部１１４は、ｎ番目の関数コードを取得し（ステップＳ２０８）、取得した関数コードに基づいて、関数コード変換表２６６から対応する関数を選択する（ステップＳ２１０）。
【００５６】
次に、汎用演算部１１４は、選択した関数の引数の数が１であるか否かを判定する（ステップＳ２１２）。選択した関数の引数の数が１である場合、汎用演算部１１４は、記憶部１１６に設けられたスタックから１変数を取得し（ステップＳ２１４）、取得した１変数関数で演算を行う（ステップＳ２１６）。また、選択した関数の引数の数が１でない場合、汎用演算部１１４は、スタックから２変数を取得し（ステップＳ２１８）、取得した２変数関数で演算を行う（ステップＳ２２０）。なお、図１０の例では、説明の便宜上、関数の引数の数が１以外の場合の引数の数を２としているが、これに限定されるものではなく、引数の数が２であるか、３であるか等の３以上の引数の数も考慮した処理を行ってもよい。
【００５７】
また、上述したステップＳ２０６の処理において、変数コードがＦＦでなかった場合、汎用演算部１１４は、変数コード変換表２６４から該当する変数を取得し（ステップＳ２２２）、取得した変数をスタックに格納する（ステップＳ２２４）。ステップＳ２１６、ステップＳ２２０、またはステップＳ２２４の処理後、汎用演算部１１４は、演算結果をスタックに格納し（ステップＳ２２６）、インデックスｎの値をインクリメント（ｎ＝ｎ＋１）して（ステップＳ２２８）、ステップＳ２０２の処理に戻る。
【００５８】
また、上述したステップＳ２０４の処理において、ｎ番目の変数コードが終端である場合、本フローチャートの処理を終了する。
【００５９】
図１１は、演算式の変数がスタックに格納される様子を説明するための図である。図１１の例では、「（ａ＋ｂ）＊（ｃ＋ｄ）」の演算式を演算する様子を示している。また、図１１の例では、スタックとして８個の記憶領域が設定されている。
【００６０】
汎用演算部１１４は、上述した演算式が逆ポーランド記法により「ａｂ＋ｃｄ＋＊」に変換された数式を、設定装置２００により取得する。また、汎用演算部１１４は、取得した数式に対して、スタックを利用した演算を行う。例えば、汎用演算部１１４は、演算式の先頭（ｎ＝０）から１文字ずつ読出し、ｎ番目の文字が変数（例えば、数値）である場合に、スタックに格納する。図１１の例では、演算式に変数ａおよびｂが連続するため、汎用演算部１１４は、２つの変数ａおよびｂを個々のスタックに格納する。また、汎用演算部１１４は、演算式のｎ番目の文字が演算子の場合、スタックから２つの変数ａおよびｂを読み出し、読み出した変数ａおよびｂと演算子とに基づいて演算する。図１１の例では、「＋」の演算子が設定されているため、汎用演算部１１４は、変数ａとｂとを加算する演算を行う。また、汎用演算部１１４は、演算結果をスタックに格納する。また、汎用演算部１１４は、このような処理を数式の終端記号（ＥＮＤ）が出るまで続けることで、演算結果を出力することができる。
【００６１】
なお、実施形態では、演算子に加えて累乗等の関数も適用できる。汎用演算部１１４は、逆ポーランド記法の拡張として、数値の後に、引数がｍ変数、戻り値が１変数の関数（以下、ｍ変数関数）を記述する。また、汎用演算部１１４は、演算式のｎ番目の文字がｍ変数関数の場合、スタックからｍ変数を読み出し、読み出した変数を関数に代入して演算された結果をスタックに格納する。つまり、実施形態では、上述した四則演算の演算子を２変数関数として使用することで、汎用的な演算を実現することができる。
【００６２】
図１２は、図４で設定した演算式に対する演算処理の様子を説明するための図である。図１２の例では、上述した（１）式における演算の様子を示している。汎用演算部１１４は、例えば、（１）式に相当する演算式に関する設定情報として、図８に示す逆ポーランド記法の情報等を、先頭からインデックスｎごとに読み取る。また、汎用演算部１１４は、インデックスｎが０から１７になるまで順に読み取るとともに、図１２に示すようにスタックを用いて演算式を生成し、生成された演算式に基づいて演算を行う。そして、汎用演算部１１４は、最終的にスタックの最下段に格納された演算式による演算を実行して、その演算結果をｙ１に代入する。
【００６３】
また、図１３は、図５で設定した演算式に対する演算処理の様子を説明するための図である。汎用演算部１１４は、図５に示すＧＵＩ画面３１０で設定された演算式ｙ２＝ｘ１／ｘ２に関する設定情報として、逆ポーランド記法の変換後の情報「ｘ１・ｘ２・（ＤＩＶ）・ＥＮＤ」等を、先頭からインデックスｎごとに読み取る。また、汎用演算部１１４は、インデックスｎが０から２になるまで順に読み取るとともに、図１３に示すようにスタックを用いて演算式を生成し、生成された演算式に基づいて演算を行う。そして、汎用演算部１１４は、最終的にスタックの最下段に格納された演算式による演算を実行して、その演算結果をｙ２に代入する。
【００６４】
ここで、上述した（１）式に対応する変数において、ｘ１＝（（√２）＊π）／４、ｘ２＝Ｃ、ｘ３＝ε、ｘ４＝ｄ、ｘ５＝ρ、ｘ６＝１．０の値を代入する。また、演算式ｙ２＝ｘ１／ｘ２における変数において、ｘ１＝ｄ、ｘ２＝Ｄの値を代入する。上述したＣ、Ｄ、ｄ、ε、ρは、説明の都合上、具体的な数値を記号で置き換えている。また、（１）式におけるｘ１〜ｘ６と、演算式ｙ２＝ｘ１／ｘ２におけるｘ１、ｘ２は、それぞれ別タスクにおける非公開変数であるため、それぞれ別の値を代入できる。また、（１）式におけるｙ２は、公開変数であるため、演算式ｙ２＝ｘ１／ｘ２におけるｙ２と同じ変数である。したがって、２つのタスクにより以下の演算式が定義される。
【数２】
2018206301.tif 000004
この演算式は、オリフィス流量計の流量演算式を示している。ただし、Ｃ、Ｄ、ｄ、ε、ρは、それぞれ、流出係数、配管径、絞り径、気体膨脹補正係数、流体密度である。このように、実施形態のフィールド機器１は、設定装置２００で設定されたオリフィス流量計の演算式に基づいて、ファームウェアで実装される電卓機能による演算を行うことができる。また、実施形態における演算式は、フィールド機器１に直接実装されるものではない。そのため、汎用演算部１１４は、上述した流量演算式に限らず、ユーザが設定する任意の演算式に基づいて、多種の演算を実現することができる。
【００６５】
［変形例］
上述した実施形態において、フィールド機器１は、上述した圧力伝送器に限定されるものではなく、例えば、温度センサ等のセンサ機器、流量制御弁や開閉弁等のバルブ機器、ファンやモータ等のアクチュエータ機器、プラント内の状況や対象物を撮影するカメラやビデオ等の撮像機器、プラント内の異音等を収集したり警報音等を発したりするマイクやスピーカ等の音響機器、各機器の位置情報を出力する位置検出機器、その他の機器であってもよい。
【００６６】
また、実施形態におけるフィールド機器１は、センサ等により検出された値を設定装置２００に送信し、設定装置２００の表示部２２０で表示させるようにしてもよい。
【００６７】
また、実施形態によれば、各タスクの演算結果のログを記憶してもよい。この場合、例えば、多変数伝送器１００の記憶部１１６および設定装置２００の記憶部２６０の少なくとも一方において、演算結果のログ情報を記憶する。これにより、多変数伝送器１００および設定装置２００の少なくとも一方において、ログ情報を用いて時系列解析を実行することができる。また、実施形態によれば、差圧から水位や密度を算出することができるため、フィールド機器１をレベル計や密度計等の様々な用途で使用することができる。
【００６８】
以上説明した実施形態におけるフィールド機器、設定装置、及び設定プログラムによれば、ユーザが任意に設定した演算式での演算を実現することができる。具体的には、実施形態によれば、例えば、設定装置により設定されたオリフィス流量計の演算式にしたがって、ファームウェアで演算することができる。
【００６９】
また、上述した実施形態における設定装置は、コンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳ（Operating System）や周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、ＦＰＧＡ（Field Programmable Gate Array）等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
【００７０】
また、コンピュータはＣＰＵ、ＲＯＭ、ＲＡＭ、ＥＥＰＲＯＭ（登録商標）等の各種メモリ、通信バス及びインタフェースを有し、予めファームウェアとしてＲＯＭに格納された処理プログラムをＣＰＵが読み出して順次実行することで、設定装置２００として機能してもよい。
【００７１】
以上、本発明を実施するための形態について実施形態を用いて説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【符号の説明】
【００７２】
１        フィールド機器
１０      差圧センサ
２０      静圧センサ
３０      プロセス温度センサ
１００    多変数伝送器
１１０    Ａ／Ｄ変換部
１１２    差圧値・静圧値演算部
１１４    汎用演算部
１１６    記憶部
１１８    出力部
１２０    通信部
２００    設定装置
２１０    操作部
２２０    表示部
２３０    ドライブ装置
２４０    処理部
２４２    演算式設定部
２４４    コード変換部
２４６    通信処理部
２５０    通信部
２６０    記憶部
２６２    設定情報
２６４    変数コード変換表
２６６    関数コード変換表
【図１】
2018206301.tif 000005
【図２】
2018206301.tif 000006
【図３】
2018206301.tif 000007
【図４】
2018206301.tif 000008
【図５】
2018206301.tif 000009
【図６】
2018206301.tif 000010
【図７】
2018206301.tif 000011
【図８】
2018206301.tif 000012
【図９】
2018206301.tif 000013
【図１０】
2018206301.tif 000014
【図１１】
2018206301.tif 000015
【図１２】
2018206301.tif 000016
【図１３】
2018206301.tif 000017