本発明の実施の形態について図面を参照して説明する。図1は、本実施形態に係るフィールド機器100および液晶表示モジュール200の構成を示すブロック図である。ここで、液晶表示モジュール200は、ドットマトリクス表示モジュールとして機能する。
本図に示すように、フィールド機器100は、演算装置であるメインCPU110を中心に構成され、メインCPU110にFlashROM120、RAM130、機器センシング部140、通信部150が接続されている。機器センシング部140は、図示しないセンサ等からの情報を取得する機能部であり、通信部150は、図示しないPC等の外部装置と通信を行なうための処理部である。また、FlashROM120は、メインROMとして機能する。
液晶表示モジュール200は、演算装置であるサブCPU210、EEPROM220、表示装置駆動装置であるLCD制御IC230、液晶表示装置240、キースイッチ群250を備えている。液晶表示装置240は、ドットマトリクス方式の表示装置である。なお、液晶表示装置240に代えて、LED、有機EL、CRT等のドットマトリクス表示装置を用いてもよい。また、タッチパネル機能を備えた液晶表示装置240を用いるようにしてもよい。
本実施形態においては、液晶表示装置240をモジュール化し、モジュール内にLCD制御IC230を制御するサブCPU210を追加することにより、メインCPU110の負荷を軽減させるようにしている。このため、サブCPU210は、LCD制御IC230と同期通信等をできるようにする。また、液晶表示モジュール200とフィールド機器100とは、一体型として構成してもよいし、本図に示すようにコネクタ260を介して接続させ、着脱可能な構成としてもよい。着脱可能な構成とした場合には、液晶表示モジュール200を異なるフィールド機器100と汎用的に接続できるようにすることが望ましい。
本構成において、ユーザインタフェースとなるキースイッチ群250、タッチパネル等からの信号は、メインCPU110ではなく、サブCPU210に入力する。そして、サブCPU210は、メインCPU110と同期通信など汎用的なインタフェースで接続し、双方向通信ができるようにする。
サブCPU210は、内部にFlashROM211、RAM212を備え、EEPROM220と接続する構成としているが、この構成に限られない。例えば、FlashROM211が十分な容量を有している場合には、EEPROM220を省くようにしてもよい。また、FlashROM211、RAM212はサブCPU210の内部に構成することが好ましいが、外部に配置してもかまわない。サブCPU210が実行するプログラムは、FlashROM211、EEPROM220のいずれか、あるいは双方に格納する。これらのROMは、サブROMとして機能する。
図2に示すように、フィールド機器100のメインCPU110に接続されたFlashROM120には、メインCPU110が使用するプログラム121に加え、サブCPU210用のプログラム122も記録されている。
このサブCPU210用のプログラム122は、メインCPU110が使用するプログラム121のバージョンに適合したバージョンであり、液晶表示モジュール200に格納されているプログラムのバージョンが、フィールド機器100のメインCPUが使用するプログラムのバージョンに適合していない場合に、液晶表示モジュール200にダウンロードされる。これにより、サブCPU210が使用するプログラムとメインCPU110が使用するプログラムとの適合性が保証されることになる。
次に、図3のフローチャートを参照して、メインCPU110およびサブCPU210の起動時の処理について説明する。
サブCPU210が起動すると、スタックポインタ、内部レジスタの初期化、RAM212の初期化等の一般的な起動処理を行なう(S101)。メインCPUも同様に起動処理を行ない(S201)、その後、機器センシング部140の初期化を行なう(S202)。
サブCPU210は、起動処理後、自身のFlashROM211あるいはEEPROM220に記録されているプログラムのバージョン情報をメインCPU110に送信する(S102)。
一方、メインCPU110は、サブCPU210からプログラムのバージョン情報を受信すると(S203:Yes)、そのバージョンと、自身のFlashROM120に記録されているメインCPU用プログラム121のバージョンとの適合性を判断し、適合結果をサブCPU210に送信する(S204)。
サブCPU210は、バージョン送信後、所定の時間、例えば、1秒以内にメインCPU110から応答があったかどうかを判断する(S103)。一般に、メインCPU110の起動は時間を要するため、サブCPU210からのバージョン送信の通信を取りこぼす可能性がある。このため、所定時間内に応答がない場合(S103:No)には、再度、プログラムのバージョン情報をメインCPU110に送信し(S102)、応答を待つ(S103)。
メインCPU110からの応答があった場合(S103:Yes)は、バージョンが適合している応答内容であれば(S104:Yes)、LCD制御IC230の初期化処理、液晶表示装置240の初期化、キースイッチ群250の初期化等を行なって各デバイスが利用できるようにする(S108)。そして、液晶表示装置240に初期データを送信して(S109)、表示制御を開始する。
メインCPU110からの応答により、プログラムのバージョンが適合してない場合(S104:No)、サブCPU210は、メインCPU110に対して適合バージョンの送信を要求する(S105)。
メインCPU110は、適合バージョンの送信要求があった場合(S205:Yes)は、FlashROM120に格納されているサブCPU用プログラム122をサブCPU210に送信し(S206)、処理(S203)に戻って、サブCPU210からの応答を待ち、以降の処理を繰り返す。
適合バージョンの送信要求がなかった場合(S205:No)は、メインCPU110は、今後、液晶表示モジュール200が使用可能であることを認識し、サブCPU210との表示通信制御を開始して、各種表示データの送信準備を行なう。
メインCPU110に対して適合バージョンの送信を要求したサブCPU210は、メインCPU110から送信された適合バージョンのプログラムを受信する(S106)。受信完了後、再起動を行なって(S107)、起動処理(S101)、バージョン送信処理(S102)以降の処理を繰り返す。
次に、メインCPU110が、液晶表示モジュール200に対して通信によって設定する項目について説明する。本実施形態において、メインCPU110は、1)画面の表示構成、2)段組みの基本情報、3)各段組みの表示情報、4)メンテナンス用制御情報、の4項目の設定を行なうものとする。
ここで、画面の表示構成の設定では、液晶表示装置240における表示スタイル、更新周期等を設定する。表示スタイルは、例えば、図4(a)〜(d)に示すような基本構成の中から選択することができるものとする。本図の例では、表示画面を複数の領域に分割し、それぞれを段組み番号で管理するようにしている。段組みの数は、それぞれ、4、2、3、5とし、基本構成ごとに位置、大きさ、配置等の組合せを異ならせている。
なお、複数の基本構成を選択することもできる。この場合、選択された基本構成をフレームと称し、各フレームを時系列的に順番に表示したり、イベントが発生した場合の表示や、エラー表示のように、必要に応じてフレームを切り替えて表示したりすることができる。
段組みの基本情報の設定では、各段組みについて、具体的な表示内容以外の項目である基本情報を設定する。なお、液晶表示装置240では、複数の情報を一画面に表示するために、演算値を段組み内に行表示するものとする。基本情報の設定項目は、例えば、表示タイトル名、データ型、有効桁数、単位表示名等とすることができる。データ型は表示するデータの属性であり、CHAR型、INT型、LONG型、FLOAT型等で定義される数値型と、文字数およびJIS、SHIFT-JIS、EUC、Unicode等で定義される文字型とに大別することができる。さらに、反転表示やブランク表示、スクロール表示、カラー表示、太字、斜体、下線などの表示スタイルの装飾情報を追加してもよい。
各段組みの表示情報の設定では、各段組みに対する具体的な表示内容を定義する。メインCPU110は、サブCPU210に対して、ドットデータではなく、プログラムで利用しているデータのまま送信することができる。このため、メインCPU110はドットデータへの展開を行なう必要がない。表示内容は、文字のみならず記号を用いることができる。また、あらかじめ定形の表示内容に識別子を付しておき、識別子のみを送信するようにしてもよい。
メンテナンス用制御情報の設定では、液晶表示装置240のテストを実施したり、画面の表示構成、段組みの基本情報に依存せずにメインCPU110から強制的に表示を行なう場合等の設定を行なうことができる。
次に、メインCPU110の表示通信制御およびサブCPU210の表示制御について説明する。本実施形態では、画面の表示構成として、図4(b)に示した段組み2段の基本構成をフレーム1とし、図4(c)に示した段組み3段の基本構成をフレーム2として設定した場合を例に説明する。ここで、段組み1には流量表示、段組み2には温度表示、段組み3にはエラー表示を行なうものとする。また、通常時においては、フレーム1を表示し、エラーが生じた場合には、図5に示すように、段組み3を含むフレーム2とフレーム1とを切り替えて表示するものとする。
まず、メインCPU110が、起動時の処理の実施後に行なう表示通信制御について図6のフローチャートを参照して説明する。本図に示すように、メインCPU110は、画面の表示構成の設定を行ない、段組みの基本情報の設定および段組みの表示情報の設定を段組みごとに行なう。
すなわち、メインCPU110は、起動時の処理を実施後、画面のスタイル構成、段組み個数、フレーム情報、更新周期等の画面表示構成情報をサブCPU210に送信する(S301)。送信に際しては、列数、行数などの情報を数値で示してもよいが、いくつかの段組み情報をプログラム内でテーブル化しておき、テーブル番号で示すことにより送信データ量を少なくするようにしてもよい。
次に、メインCPU110は、サブCPU210に対して、段組み1の基本情報を送信し(S302)、段組み2の基本情報を送信し(S303)、段組み3の基本情報を送信する(S304)。段組みの基本情報の送信では、各段組みの表示名、データ型、有効桁数、表示単位等を送信する。この際に、文字コード等で直接情報を示すようにしてもよいが、いくつかの表示名等をプログラム内でテーブル化しておき、テーブル番号で示すことにより送信データ量を少なくするようにしてもよい。
そして、メインCPU110は、サブCPU210に対して、段組み1の表示情報を送信し(S305)、段組み2の表示情報を送信し(S306)、段組み3の表示情報を送信する(S307)。表示情報の送信では、各段組みにおいて表示する数値あるいは文字コードを送信する。
以上の情報をサブCPU210に送信することで、液晶表示装置240における画面スタイル、名称や単位等の固定表示文字が確定し、初期表示情報が表示可能となる。その後、CPU110は、センシング表示情報の制御を行なう。
サブCPU210では、受信したこれらの情報に基づいてドットデータを生成し、LCD制御IC230にドットデータを送信する。フレーム画面が定義されている場合、更新周期に合わせて画面を切り替えて表示するが、これらの情報があれば、サブCPU210だけで表示の制御することができる。これにより、メインCPU110の処理負荷が大きく軽減されることになる。なお、更新周期は、画面の表示構成の設定で定義された更新周期とする。サブCPU210は、更新周期ごとにドットデータによる画面データを生成し、LCD制御IC230に転送し続ける。
次に、メインCPU110が、機器センシング部140で計測した結果に基づく演算値に変化があり、液晶表示装置240の表示内容を変化させる場合の処理について図7のタイムチャートを参照して説明する。ここでは、画面の表示構成、各段組みの基本情報は変更がないものとする。
例えば、時刻t0において、段組み1の表示内容が100であり、段組み2の表示内容が200であるとする。また、センサーエラー(Sensor Failure)が発生しており、フレーム1とフレーム2とが交互に表示されているものとする。
液晶表示装置240は、t1、t2、t3…t7において画面の表示更新を行なうものとする。このため、サブCPU210は、表示内容の変更の有無にかかわらず、更新周期に合わせて表示処理を行なう。
この状況において、メインCPU110は、演算値が変化しない場合には、サブCPU210に演算値を送信する必要がない。このため、演算値が変化していない時刻t1では、サブCPU210への送信は行なわれない。したがって、メインCPU110の負荷を大幅に軽減することができる。
図8は、このようなメインCPU110のセンシング表示情報についての表示通信制御を説明するフローチャートである。すなわち、メインCPU110は、機器のセンシングを行なうと(S401)、段組み1の表示値の計算を行なう(S402)。そして、この演算結果が前回の送信値と異なる場合(S403:Yes)に限り、段組み1の表示情報としてサブCPU210に送信する(S404)。
同様に、段組み2の表示値の計算を行ない(S405)、この演算結果が前回の送信値と異なる場合(S406:Yes)に限り、段組み2の表示情報としてサブCPU210に送信する(S407)。そして、段組み3の表示値の計算を行ない(S408)、この演算結果が前回の送信値と異なる場合(S409:Yes)に限り、段組み3の表示情報としてサブCPU210に送信する(S410)という処理を繰り返す。
液晶表示装置240への表示制御はサブCPU210が行なうため、メインCPU110は、表示情報をサブCPU210に送信する際に、液晶表示装置240の更新周期を意識する必要はない。
図7に示したタイムチャートの説明に戻って、時刻taにおいて、機器センシング部140で計測した結果に基づくメインCPU110の段組み1の演算値が100から101に変化したとする。メインCPU110は演算値が変化したため、変化後の値をサブCPU210に送信する。このとき、段組み2の演算値は変化していないため、段組み1の演算値のみを送信すれば足りる。
すると、サブCPU210は、次の更新周期である時刻t2において段組み1の表示内容を101に変化させる。その後、段組み1の演算値が101から102に変化した時刻tcにおいても同様の処理が行なわれ、段組み1の表示内容が時刻t4に102に変化する。
また、時刻tbにおいて、センサーエラー(Sensor Failure)に加えて出力低下エラー(Output too Low)が発生したとする。そこで、メインCPU110は、サブCPU210に、センサーエラーと出力低下エラーを転送する。
すると、サブCPU210は、以降の更新周期のフレーム2表示期間において、センサーエラー(SF:Sensor Failure)と出力低下エラー(OL:Output too Low)とを段組み3に交互に表示させるようにする。
次に、キースイッチ群250がユーザから入力を受け付けた場合のサブCPU210およびメインCPU110の処理について図9のフローチャートを参照して説明する。キースイッチ群250の制御は、サブCPU210が行なう。このため、メインCPU110の監視負荷を軽減することができる。サブCPU210は、キースイッチの組合せや押下時間を検出するために、短い周期でキースイッチ群250の監視を行なう。
サブCPU210は、キースイッチ群250からの入力を検出すると(S501)、液晶表示装置240の表示内容をあらかじめ定められた入力用表示画面に変更する(S502)。そして、入力された操作に対応したデータをメインCPU110に要求する(S503)。
これに対応して、メインCPU110は、要求されたデータを抽出し(S601)、サブCPU210に送信する(S602)。
サブCPU210は、要求したデータを受信すると、受信したデータに基づく表示を行なう(S504)。ユーザから受け付けた操作が設定変更に関するものでなければ(S505:No)、本処理を終了する。
一方、ユーザから受け付けた操作が設定変更に関するものであれば(S505:Yes)、サブCPU210は、設定変更に関するキースイッチの入力をユーザから受け付ける(S506)。そして、受け付けた変更値を液晶表示装置240に表示し(S507)、ユーザから確認を受け付ける(S508)。
ユーザからの確認を受け付けると(S508:Yes)、メインCPU110に通知し、メインCPU110が内部データの更新を行なう(S603)。内部データが更新されると、メインCPU110は、更新後の値をサブCPU210に送信し(S604)、サブCPU210が、変更後の内容を液晶表示装置240に表示し(S509)、本処理を終了する。
このように、本実施形態では、液晶表示装置240を、キースイッチ群250を含めてモジュール化しているため、操作受付に関する一連の処理をサブCPU210内で行なうことができる。このとき、メインCPU110は、要求されたデータを送信し、データ変更に対応するだけですむため、処理負荷が軽減されることになる。
ところで、一般に、フィールド機器100の通信部150では、外部装置と通信を行なうために、HARTプロトコル、Fieldbusプロトコル、Profibusプロトコル、Modbusプロトコル等のプロトコルをサポートしている。すなわち、メインCPU110用のプログラム121には、これらの通信プロトコルを解釈し、処理するモジュールが備わっている。
このため、サブCPU210に上記の通信プロトコルで通信を行なう機能を備えさせることで、キースイッチ群250を用いてメインCPU110用の設定変更を行なう場合に、コネクタ260ではなく、通信部150を介してメインCPU110との通信を行なうことができるようになる。このような構成では、標準化された通信プロトコルでメインCPU110とサブCPU210との通信を行なえるので、新たな通信用のファームウェアを開発する必要がなくなる。
このように、キースイッチ群250を用いて設定変更を行なう際に、標準化された通信プロトコルを用いて通信する場合には、図10に示すように、通信部150への外部装置からの信号ラインにスイッチ190を設けて、一方のスイッチ端子にサブCPU210を接続する構成とすることができる。
この場合、サブCPU210が通信部150の通信状態を監視し、空き時間を利用してスイッチ190を切り替え、サブCPU210からの通信信号を入力するようにすることができる。このとき、メインCPU110は、通信対象がPC等の外部装置であるか、サブCPU210であるかを意識する必要がないため、従来のファームウェアを利用することができる。
上述のように、液晶表示モジュール200は、メインCPU110から必要に応じて表示情報を受信し、液晶表示装置240の更新周期に合わせて再表示している。しかし、メインCPU110に何らかの異常が発生したり、プログラムの不具合等により、送信する必要があるにもかかわらず、表示情報がサブCPU210に送信されないことも起こり得る。
このような状況に対応するため、本実施形態では、サブCPU210は、メインCPU110の状態を監視するためのデータ要求を一定周期でメインCPU110に送信し、その結果に基づいてメインCPU110の何らかの異常を検出できるようにしている。さらに、メインCPU110の何らかの異常を検出した場合には、液晶表示モジュール200は、メインCPU110からの表示情報の送信がなくても、異常を検出したことを独自に表示することができる。
サブCPU210が、メインCPU110の状態を監視する処理について図11のフローチャートを参照して説明する。サブCPU210は所定の起動タイミング(S701:Yes)で、メインCPU110に対して各段組みの最新の演算値を要求する(S702)。ただし、特定の段組みについての最新の演算値等であってもよい。
これに対して、メインCPU110は、要求されたデータの演算を行ない(S801)、サブCPU210に送信する(S802)。
サブCPU210は、メインCPU110からの応答がない場合(S703:No)には、メインCPU110に何らかの異常が発生していると判断し、液晶表示装置240にメインCPU110で異常が発生している旨の表示を行なう(S706)。
メインCPU110から要求したデータを受信すると(S703:Yes)、受信したデータの値が、現在表示している値と一致するかどうかを判断する(S704)。この結果、一致していた場合(S704:Yes)は、メインCPU110は正常に稼働しているものとして次の監視を行なう起動タイミングを待つ(S701)。
一方、受信したデータの値が、現在表示している値と一致していない場合(S704:No)は、所定回数連続して不一致であるかどうかを判断する(S705)。これは、表示更新処理が非同期で行なわれるため、遅れが生じることを考慮したものである。
その結果、値の不一致が所定回数連続していない場合(S705:No)には、メインCPU110に対して再度演算値の要求を行ない、受信したデータの値が、現在表示している値と一致するかどうかの判断を繰り返す(S704)。
一方、値の不一致が所定回数連続した場合(S705:Yes)には、メインCPU110に何らかの異常が発生していると判断し、液晶表示装置240にメインCPU110で異常が発生している旨の表示を行なう(S706)。
このように液晶表示モジュール200のサブCPU210からメインCPU110の監視を行なうことで、異常を検出した場合に、その旨を即座に具体的なメッセージで表示することができるようになる。また、ユーザがキースイッチ群250を操作することにより、より詳しい異常を表示させ、確認できるようにすることが望ましい。さらには、外部装置からの通信信号をメインCPU110が正しく処理でない場合等であっても、キースイッチ群250を操作することによって、強制的にメインCPU110の設定等を書き換えることができるようにすることが望ましい。この場合、液晶表示モジュール200は、入力キーを備えた端末装置として機能することになる。
このように、液晶表示モジュール200を端末装置として機能させることにより、例えば、作業現場において、1台の液晶表示モジュール200を異なるフィールド機器100に付け替え、それぞれにおいて演算値を確認することができるようになる。また、キースイッチ群250を利用して、フィールド機器100内部のパラメータを変更したり、EEPROM220にフィールド機器100内部のパラメータや操作履歴等を記録したりすることができるようになる。この操作履歴等の記録は、フィールド機器100の信頼性やセキュリティを高めるために有益である。さらに、記録したパラメータを他のフィールド機器100にダウンロードすることも可能となる。
以上説明したように、本実施形態によれば、以下に列挙するような効果を得ることができ、画面表示を行なうフィールド機器のCPUの負荷を軽減することができるようになる。
1)メインCPU110は、サブCPU210に対して、表示制御情報や表示内容をデータで送信すれば足り、ドットデータに展開する必要がなくなる。
2)メインCPU110は、表示内容をサブCPU210に送信することで、フォントデザイン、サイズ、装飾などは、サブCPU210のプログラムで共通的に処理することができる。このため同一の処理をフィールド機器100ごとに実装する必要がなくなり、同一の仕様で表示することができるようになる。
3)メインCPU110とサブCPU210とを標準的なプロトコルを用いることにより、フィールド機器100ごとに専用の液晶表示モジュール200を用いる必要がなくなる。
4)液晶表示装置240の表示画面サイズを変更したり、白黒やカラーなど複数の仕様を用意した場合であっても、メインCPU110用のプログラムを変更する必要がなく、同等の表示を実現することができるようになる。すなわち、液晶表示装置240側の部品変更があっても、サブCPU210のプログラムを対応させれば対応でき、メインCPU110のプログラムには影響を与えず、メインCPU110は、変更前と同じ制御を行なえばよい。
5)液晶表示装置240の更新周期は、サブCPU210が管理し、メインCPU110は、表示内容を変更するときだけサブCPU210に表示情報を送信するため、メインCPU110の表示更新処理の負荷が大きく軽減される。
6)サブCPU210に搭載するROMをFlashROMにすることで、プログラムの書き換えを可能としている。将来的に不足の機能が発生した場合、メインCPU110のプログラムを変更することなく独自にプログラムを修正できるようになる。
7)サブCPU210のプログラムをメインCPU110のFlashROMにも格納しておくことで、サブCPU210は、メインCPU110に対してプログラムの送信を要求することができ、両者のプログラムの適合性を保つことができるようになる。
8)キースイッチ群250をサブCPU210が制御することにより、複数のキーの組合せや押下時間によって機能を選択できるようにした場合であっても、メインCPU110の監視負荷を軽減することができる。
9)キースイッチ群250を含めてモジュール化しているため、キー操作を統一することができ、ユーザインタフェースの統一化を図ることができる。また、キースイッチ群250の操作に液晶表示装置240の表示を適宜対応させることにより、操作性が向上する。さらに、入力をタッチパネル方式にした場合でも、サブCPU210で対応することができ、メインCPU110のプログラム修正の必要がない。
10)表示制御処理の負荷が軽減されるため、メインCPU110はセンシング処理に専念することができる。
11)メインCPU110に何らかの異常が発生した場合であっても、液晶表示モジュール200において表示内容を独立して制御することができる。
12)サブCPU210がメインCPU110を周期的に診断することにより、メインCPU110の異常を早く検出することができる。また、サブCPU210と液晶表示装置240とを含めてモジュール化しているため、メインCPU110の異常を検出した場合に、メインCPUからの表示情報を受信しなくても、即座に液晶表示装置240に診断結果を表示することができる。
13)液晶表示モジュール200をメインCPU110に対する端末装置として使用することができ、メインCPU110の異常時に、ユーザがキースイッチ群250を用いてさらに詳しい診断を実行したり、フィールド機器100を安全にシャットダウンさせ、再起動させることができるようになる。