〔実施形態1〕
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図1から図7に基づいて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。本実施の形態においては、例えばHMI(Human Machine Interface)10を、プログラマブル・ロジック・コントローラ(Programmable Logic Controller、以下「PLC」と略記する)20(制御装置)に通信可能に接続される表示器の典型例として説明を行う。
以下の説明において、「m」、「n」、「p」、「q」、「x」、「y」は、各々、「1」以上の整数を示すものとする。また、「m」は「n」以下の整数であり、「p」と「q」とは互いに異なる整数であり、「x」と「y」とは互いに異なる整数であるものとする。
本発明の一態様に係るHMI10についての理解を容易にするため、先ず、HMI10を含む制御システム1の概要を、図2を用いて説明する。
§1.適用例
(制御システムの全体概要)
図2は、HMI10を含む制御システム1の全体概要を示す図である。制御システム1は、マスタ装置としてのPLC(Programmable Logic Controller)20と、マスタ装置にネットワーク(フィールドネットワーク60)を介して接続される1つ以上のスレーブ装置40とを含むマスタスレーブ制御システムである。PLC20は、フィールドネットワーク60を介したデータ伝送を管理しているという意味で「マスタ装置」と呼ばれる。
フィールドネットワーク60に複数のPLC20が接続される場合には、いずれか1つのPLC20がマスタ装置となり、残りのPLC20がスレーブ装置になる場合もある。また、PLC20およびスレーブ装置40のいずれとも異なる制御主体がマスタ装置になってもよい。すなわち、「マスタ装置」および「スレーブ装置」は、フィールドネットワーク60上のデータ伝送の制御機能に着目して定義されるものであり、各装置間でどのような情報が送受信されるかについては、特に限定されない。
PLC20は、制御システム1の全体の制御を行う。具体的には、PLC20は、スレーブ装置40を介して、センサなどの入力機器であるデバイス50からの情報を入力データとして取得する。PLC20は、予め組み込まれたユーザプログラムに従って、取得した入力データを用いた演算処理を実行する。PLC20は、前記演算処理を実行して、アクチュエータなどの出力機器であるデバイス50への制御内容を決定し、その制御内容に対応する制御データを、スレーブ装置40を介して、デバイス50へと出力する。
フィールドネットワーク60は、PLC20が受信し、またはPLC20が送信する各種データを伝送する。フィールドネットワーク60は、例えば、EtherCAT(登録商標)、PROFINET(登録商標)、MECHATROLINK(登録商標)-III、Powerlink、SERCOS(登録商標)-III、CIP Motionである。また、フィールドネットワーク60は、例えば、EtherNet/IP(登録商標)、DeviceNet、CompoNet(登録商標)などであってもよい。なお、以下では、フィールドネットワーク60上をデータフレームが順次転送されることで、PLC20とスレーブ装置40との間、または、複数のスレーブ装置40の間でデータが送受信される制御システム1について説明を行う。
スレーブ装置40は、PLC20をマスタ装置とするネットワーク(フィールドネットワーク60)におけるスレーブ装置であり、例えば、デバイス50との通信を管理する通信カプラ等のデバイス通信管理ユニットである。スレーブ装置40は、フィールドネットワーク60に直接接続される、サーボドライバであってもよい。デバイス50は、例えばセンサなどの入力機器であり、また、例えばアクチュエータなどの出力機器である。1つ以上のデバイス50が、通信ケーブルを介して、スレーブ装置40に接続される。
開発支援装置30は、例えばUSB(Universal Serial Bus)ケーブルである通信ケーブルを介して、PLC20に接続する。開発支援装置30は、PLC20で実行されるユーザプログラム、および、制御システム1に対する各種の設定情報などを生成するための情報処理装置である。
開発支援装置30は、例えば、PLC20の開発環境を提供し、ユーザが、制御目的(たとえば、対象のラインおよびプロセス)に応じてユーザプログラムを作成する(作成・編集する)ための環境を提供する。ユーザは、開発支援装置30の提供する開発環境(プログラミングツール)を用いて、PLC20で実行させる制御プログラム(ユーザプログラム)のプログラムコードを作成する。開発支援装置30は、PLC20で実行させる制御プログラムをユーザが作成・編集するのを支援するため、デバック機能およびシミュレーション機能を有していてもよい。
また、開発支援装置30は、例えば、PLC20による状態値の取得(入力リフレッシュ)のタイミング、および、PLC20による出力値の更新(出力リフレッシュ)のタイミングの算出および設定を実行してもよい。開発支援装置30は、PLC20の運転状態、および各種データの値などを監視してもよい。
つまり、開発支援装置30は、PLC20のプログラミング、コンフィグレーション(構成設定)、デバッグ、メンテナンス、モニタリング機能の他、3Dモーションシミュレーションにも対応した統合開発環境を提供する装置であってもよい。また、開発支援装置30は、スレーブ装置40のための各種のパラメータの設定および調整を行ってもよい。
開発支援装置30は、典型的には、汎用のコンピュータで構成される。例えば、開発支援装置30で実行される情報処理プログラムは、不図示のCD-ROM(Compact Disk-Read Only Memory)に格納されて流通してもよい。このCD-ROMに格納されたプログラムは、図示しないCD-ROM駆動装置によって読取られ、開発支援装置30のハードディスクなどへ格納される。あるいは、開発支援装置30は、上位のホストコンピュータなどから、ネットワークを通じて、前記DVD-ROMに格納されたプログラムと同様のプログラムをダウンロードするように構成してもよい。
図2に示すように、HMI10は、通信ケーブルを介して、PLC20に接続されている。HMI10は、人間と機械とが情報をやり取りするための手段であり、具体的には、人間が機械を操作したり(機械に指示を与えたり)、機械が現在の状態・結果を人間に知らせたりする手段である。HMI10について、人間が機械に指示を与える手段としてはスイッチ、ボタン、ハンドル、ダイヤル、ペダル、リモコン、マイク、キーボード、マウスなどが含まれる。また、HMI10について、機械が現在の状態・結果等に係る情報を人間に伝える手段としては液晶画面、メーター、ランプ、スピーカーなどが含まれる。
HMI10は、表示部と、操作部と、PLC20と通信する通信部と、各部を制御する制御部と、を備える。HMI10は、操作部へのユーザ操作に応じて、制御システム1(例えば、PLC20)の各種の設定を変更することができる。また、HMI10の表示部は、制御システム1についての所定の情報を表示する。
HMI10は、プログラマブル表示器であってもよい。HMI10は、ユーザから受け付けた操作に応じて、通信可能に接続されたPLC20の各種の設定を変更できてもよく、また、PLC20の所定の情報を表示してもよい。
すなわち、HMI10は、ユーザから受け付けた指示をPLC20に通知してもよい。また、HMI10は、PLC20から受信したデータおよび通知を、自端末から出力する(表示部に表示させる、またはアラームなどの音声出力を行う)ことで上記データおよび通知をユーザに提示してもよい。
HMI10はPLC20に同期しており、具体的には、HMI10は、PLC20における各種のデータ変化に対応して、自装置の対応する各種のデータを変更する。すなわち、HMI10は、PLC20と通信を行って、PLC20のPLC記憶部210に格納されている変数の値を取得し、自装置の同期変数テーブル121に格納している対応する変数(同期変数)の値を、PLC20から取得した変数の値で更新する。
HMI10は、上述のような更新処理を所定の時間間隔(周期)ごとに繰り返し実行することによって、同期変数テーブル121に格納している変数(同期変数)の値を、PLC20のPLC記憶部210に格納されている変数の値に同期させる。HMI10は、上述のような更新処理を、PLC記憶部210に格納されている変数の値の変化など、所定のイベントごとに実行してもよい。HMI10とPLC20との間における変数の値の同期について、詳細は図3を用いて後述する。
開発支援装置30は、例えばUSBケーブルである通信ケーブルを介して、HMI10に接続し、ユーザによって設定された「置換前メッセージMSB、条件COE(表示条件)、指定変数VAD、表示規則RUEなど」を、HMI10に通知する。ユーザが、開発支援装置30を用いて、条件COE、置換前メッセージMSB、指定変数VAD、表示規則RUEなどを設定する操作について、その詳細は図4を用いて後述する。
HMI10は、開発支援装置30から通知された「置換前メッセージMSB、条件COE、指定変数VAD、表示規則RUEなど」を記憶部120に格納し、これらとPLC20から取得する変数の値とによって、置換後メッセージMSAを生成する。具体的には、HMI10は、指定変数VADの値から、表示規則RUEに従って、置換後文字列CSAを生成する。そして、HMI10は、生成した置換後文字列CSAによって置換前メッセージMSBの可変文字列CSVを置換して、置換後メッセージMSAを生成する。HMI10は、生成した置換後メッセージMSA(例えば、アラームメッセージ)を、表示する。
§2.構成例
これまで、図2を用いて、制御システム1の概要を説明してきた。次に、HMI10について、その詳細を説明する。図1等を用いて以下に詳細を説明するHMI10について、最初に概要を整理しておけば、以下の通りである。
すなわち、HMI10は、PLC20(制御装置)に通信可能に接続される表示器である。HMI10は、記憶部120と、取得部110と、表示制御部150とを備える。
記憶部120(特に、置換前メッセージテーブル125)には、「可変文字列CSVと固定文字列CSFとを含む一文である置換前メッセージMSB」が予め格納されている。取得部110は、PLC20にて更新された所定の変数(指定変数VADに対応する変数)の値を取得する。表示制御部150は、取得部110によって取得された「所定の変数(指定変数VADに対応する変数)の値」によって可変文字列CSVを置換した文字列である置換後文字列CSAと、固定文字列CSFとを含む一文である置換後メッセージMSAを表示する。
以下の説明では、PLC20のPLC記憶部210に格納されており、PLC20によってその値を更新される「所定の変数(指定変数VADに対応する変数)」を、「指定変数VAD」と称することがある。すなわち、指定変数VADは、PLC20のPLC記憶部210と、HMI10の記憶部120(特に、同期変数テーブル121)とに格納されている。
取得部110は、PLC20のPLC記憶部210に格納されている指定変数VADの値を取得し、取得した値で、記憶部120の同期変数テーブル121に格納されている指定変数VADの値を更新する。取得部110は、この更新処理を、定期的に、または、PLC記憶部210に格納されている指定変数VADの値が変更されたタイミングで、実行する。これによって、記憶部120の同期変数テーブル121に格納されている指定変数VADの値は、PLC20のPLC記憶部210に格納されている指定変数VADの値に同期する。
前記の構成によれば、HMI10は、「可変文字列CSVと固定文字列CSFとを含む一文である置換前メッセージMSB」を、予め記憶部120(特に、置換前メッセージテーブル125)に格納している。HMI10は、前記所定の変数(指定変数VADに対応する変数)の値がPLC20によって更新されると、更新後の値を取得する。そして、HMI10は、『「取得した更新後の値によって可変文字列CSVを置換した文字列である置換後文字列CSA」と、固定文字列CSFとを含む一文である置換後メッセージMSA』を表示する。
したがって、HMI10は、「予め記憶している固定的な文字列(すなわち、固定文字列CSF)と、状況に応じて内容が変化する可変的な文字列(すなわち、置換後文字列CSA)とを含む一文である置換後メッセージMSA」を表示できるとの効果を奏する。
特に、HMI10は、予め記憶部120に格納している置換前メッセージMSBを基に、PLC20から取得した前記所定の変数(指定変数VADに対応する変数)の値を用いて、置換後メッセージMSAを表示する。
したがって、HMI10は、「サーバがPLC20(制御装置)から所定の変数の値を取得し、サーバが表示器に表示させるべきメッセージを生成して、表示器はサーバから取得したメッセージを表示する」構成と比較して、以下の効果を奏する。すなわち、HMI10は、上述の構成と比較して、PLC20における前記所定の変数の値の変化に応じて、前記所定の変数の値の変化に対応させて内容を変化させた一文である置換後メッセージMSAを、早急にユーザに通知できるとの効果を奏する。
HMI10において、記憶部120にはさらに、ユーザによって設定された「置換後メッセージMSAの表示条件である条件COE」が予め格納されており、具体的には、表示条件情報123として、条件COEが予め格納されている。HMI10は、条件COEが満たされたか否かを判定する判定部130を備えている。そして、判定部130によって条件COEが満たされたと判定されると、HMI10の表示制御部150は、置換後メッセージMSAを表示する。
前記の構成によれば、HMI10は、『「ユーザによって設定された、HMI10がメッセージを表示する条件COE」が満たされた』と判定すると、置換後メッセージMSAを表示する。
置換後メッセージMSAは、置換前メッセージMSBから生成される。そのため、表示条件情報123において、「置換後メッセージMSAの表示条件である条件COE」は、置換前メッセージMSBごとに定義されている。HMI10は、或る置換前メッセージMSBについて定義されている条件COEが満たされていると判定すると、その或る置換前メッセージMSBに対応する置換後メッセージMSAを生成する。そして、HMI10は、生成した置換後メッセージMSAを、自装置の表示部に表示する。
したがって、HMI10は、「ユーザによって設定された、条件COE」が満たされた場合に、「予め記憶している固定的な文字列と、状況に応じて内容が変化する可変的な文字列とを含む一文である置換後メッセージMSA」を表示できるとの効果を奏する。
HMI10において、条件COEは、PLC20が所定の状態を検知したことであってもよい。
前記の構成によれば、HMI10は、PLC20が所定の状態を検知すると、置換後メッセージMSAを表示する。例えば、HMI10は、PLC20が異常状態を検知すると、異常状態が検知された対象を特定する文字列を置換後文字列CSAとして含む一文である置換後メッセージMSAを表示する。
したがって、HMI10は、PLC20が所定の状態を検知すると、「予め記憶している固定的な文字列と、状況に応じて内容が変化する可変的な文字列とを含む一文である置換後メッセージMSA」を表示することができるとの効果を奏する。
HMI10において、記憶部120にはさらに、「ユーザによって設定された、指定変数VAD」を特定する情報(具体的には、表示設定情報124)が予め格納されている。
前記の構成によれば、HMI10は、「記憶部120に格納されている表示設定情報124により特定される指定変数VAD」の値(特に、更新後の値)を取得する。HMI10は、『「取得した指定変数VADの値によって可変文字列CSVを置換した置換後文字列CSA」と、固定文字列CSFとを含む一文である置換後メッセージMSA』を表示する。そして、「記憶部120に格納されている表示設定情報124により特定される指定変数VAD」は、ユーザによって設定される。
例えば、ユーザは、「記憶部120に格納されている表示設定情報124」を変更することによって、ユーザが所望する指定変数VADの値を、HMI10に表示させることができる。つまり、ユーザは、HMI10が置換後メッセージMSAメッセージにおいて表示する情報の内容を変更することができる。言い換えれば、ユーザは、HMI10に、ユーザが所望する情報(指定変数VADの値)を、置換後文字列CSAとして表示させることができる。
したがって、HMI10は、『「ユーザによって設定された指定変数VAD」の値によって可変文字列CSVを置換した置換後文字列CSAと、固定文字列CSFとを含む一文である置換後メッセージMSA』を表示することができるとの効果を奏する。
HMI10において、記憶部120にはさらに、表示規則RUEを格納しており、具体的には、表示設定情報124の一部として、表示規則RUEを格納している。表示規則RUEは、ユーザによって設定された表示規則である。表示規則RUEは、取得部110によって取得された「前記所定の変数(指定変数VADに対応する変数)の値」を置換後文字列CSAとして表示する際の表示規則である。表示制御部150は、取得部110によって取得された「前記所定の変数(指定変数VADに対応する変数)の値」を、表示規則RUEに従って、置換後文字列CSAとして表示する。
前記の構成によれば、HMI10は、「ユーザによって設定された表示規則RUE」に従って、指定変数VADの値から、置換後文字列CSAを生成する。そして、HMI10は、「生成した置換後文字列CSAと、固定文字列CSFとを含む置換後メッセージMSA」を表示する。
例えば、表示規則RUEは、数値を表示する際に何進法で表示するかであったり、表示する数値の整数部の最小桁数であったり、表示する数値の少数部の桁数であったり、数値を表示する際のカンマ区切りの有無等の組合せであってもよい。
ユーザは、記憶部120に格納されている表示規則RUEを変更することによって、HMI10が表示する置換後文字列CSAの表示書式等を変更することができる。
したがって、HMI10は、『「ユーザによって設定された表示規則RUEに従って生成した置換後文字列CSA」と、固定文字列CSFとを含む置換後メッセージMSA』を表示することができるとの効果を奏する。
(表示器および制御装置の詳細構成について)
これまでに概要を説明してきたHMI10について、次に図1等を参照してその詳細を説明していく。
図1は、HMI10およびPLC20の要部構成を示すブロック図である。記載の簡潔性を担保するため、HMI10およびPLC20の各々について、本実施の形態に直接関係のない構成は、説明およびブロック図から省略している。
(制御装置の詳細構成)
PLC20は、PLC記憶部210を備え、PLC記憶部210には、1つ以上の変数が格納されている。図1に例示するPLC記憶部210には、第1変数211(1)、第2変数211(2)、・・・、第n変数211(n)が格納されている。
PLC20は、マスタスレーブ制御システムのマスタ装置として、1つ以上のスレーブ装置40との間で通信している。そして、PLC20は、例えば、スレーブ装置40(または、デバイス50)に所定の状態が発生したのを検知すると、PLC記憶部210に格納されている変数の値を変更する。PLC20は、PLC記憶部210に格納されている変数の値を変更したことを、HMI10に通知してもよい。
(表示器の詳細構成)
図1に示すように、HMI10は、機能ブロックとして、取得部110、記憶部120、判定部130、置換部140、および、表示制御部150を備えている。
HMI10は、上述の各機能ブロックに加え、ユーザから受け付けた操作に応じてPLC20の各種の設定を変更するPLC設定変更部などを備えていてもよい。しかしながら、記載の簡潔性を担保するため、本実施の形態に直接関係のない構成は、説明およびブロック図から省略している。ただし、実施の実情に則して、HMI10は、当該省略された構成を備えてもよい。
(記憶部以外の機能ブロックについて)
取得部110は、PLC20と通信してPLC記憶部210に格納されている変数の値を取得し、取得した値によって、記憶部120の同期変数テーブル121に格納されている変数の値を更新する。取得部110は、この更新処理を、定期的に、または、PLC記憶部210に格納されている変数の値が変更されたタイミングで、実行する。これによって、記憶部120の同期変数テーブル121に格納されている変数の値は、PLC20のPLC記憶部210に格納されている変数の値に同期する。
判定部130は、記憶部120の表示条件情報123を参照して、置換前メッセージMSBごとに定義されている条件COEを取得する。前述の通り、置換後メッセージMSAは、置換前メッセージMSBから生成される。そのため、表示条件情報123において、「置換後メッセージMSAの表示条件である条件COE」は、置換前メッセージMSBごとに定義されている。
例えば、判定部130は、置換前メッセージMSB(1)に対して定義されている条件COE(1)、置換前メッセージMSB(2)に対して定義されている条件COE(2)を取得する。同様に、判定部130は、置換前メッセージMSB(m)に対して定義されている条件COE(m)、置換前メッセージMSB(n)に対して定義されている条件COE(n)を取得する。
以下、複数の置換前メッセージMSBを互いに区別する必要がある場合には、上述のように、符号に「(1)」、「(2)」、「(3)」、・・・、「(n)」等の添え字を付して区別する。例えば、「置換前メッセージMSB(1)」、「置換前メッセージMSB(2)」、「置換前メッセージMSB(3)」、・・・、「置換前メッセージMSB(n)」と記載して区別する。複数の置換前メッセージMSBの各々を特に区別する必要がない場合は単に「置換前メッセージMSB」と称する。
同様に、複数の条件COEを互いに区別する必要がある場合には、上述のように、符号に「(1)」、「(2)」、「(3)」、・・・、「(n)」等の添え字を付して区別する。例えば、「条件COE(1)」、「条件COE(2)」、「条件COE(3)」、・・・、「条件COE(n)」と記載して区別する。複数の条件COEの各々を特に区別する必要がない場合は単に「条件COE」と称する。
判定部130は、取得した条件COEが満たされているかを判定し、判定結果を、置換部140および表示制御部150に通知する。判定部130は、条件COE(1)から条件COE(n)までの「n」個の条件COEを取得し、取得した「n」個の条件COEの各々について、「満たされているか」を判定し、判定結果を、置換部140および表示制御部150に通知する。
判定部130は、例えば以下のようにして、条件COEが満たされているかを判定する。すなわち、判定部130は、条件COEにおいて定義されている変数について、その値が、条件COEにおいて定義されている値となっているかを確認する。判定部130は、条件COEにおいて定義されている変数について、その値が、条件COEにおいて定義されている値となっていることを確認すると、「条件COEが満たされている」と判定する。そして、判定部130は、その判定結果を、置換部140および表示制御部150に通知する。
具体的には、条件COE(x)が、『第1同期変数122(x1)の値が「True」であり、かつ、第2同期変数122(x2)の値が「True」である』場合、判定部130は、同期変数テーブル121を参照して、以下の確認を実行する。すなわち、判定部130は、『第1同期変数122(x1)の値が「True」であり、かつ、第2同期変数122(x2)の値が「True」であるか』を、確認する。『第1同期変数122(x1)の値が「True」であり、かつ、第2同期変数122(x2)の値が「True」である』ことを確認すると、判定部130は、条件COE(x)が満たされていると判定する。
判定部130は、「或る条件COEが満たされている」と判定すると、その或る条件COEに対応する置換前メッセージMSBの識別情報を、置換部140および表示制御部150に通知してもよい。例えば、判定部130は、「条件COE(x)が満たされている」と判定すると、条件COE(x)に対応する置換前メッセージMSBである置換前メッセージMSB(x)の識別情報を、置換部140および表示制御部150に通知してもよい。判定部130は、置換部140および表示制御部150に、「置換前メッセージMSB(x)の条件COE(x)が満たされている」との判定結果を通知してもよい。
置換部140は、判定部130から、「或る条件COEが満たされている」との判定結果を通知されると、以下の6つの処理を実行する。
第一に、置換部140は、その或る条件COEが定義されている置換前メッセージMSBを、記憶部120の置換前メッセージテーブル125を参照して、取得する。例えば、「条件COE(x)が満たされている」との判定結果を通知されると、置換部140は、置換前メッセージテーブル125を参照して、条件COE(x)が定義されている置換前メッセージMSB(x)を取得する。判定部130から、「置換前メッセージMSB(x)の条件COE(x)が満たされている」旨、または、置換前メッセージMSB(x)の識別情報を通知された場合も、置換部140は、条件COE(x)に対応する置換前メッセージMSB(x)を取得する。
第二に、置換部140は、「その或る条件COEが定義されている置換前メッセージMSB」について定義されている指定変数VADおよび表示規則RUEを、記憶部120の表示設定情報124を参照して、取得する。例えば、「条件COE(x)が満たされている」との判定結果を通知されると、置換部140は、「条件COE(x)が定義されている置換前メッセージMSB(x)」について定義されている指定変数VAD(x)および表示規則RUE(x)を取得する。判定部130から、「置換前メッセージMSB(x)の条件COE(x)が満たされている」旨、または、置換前メッセージMSB(x)の識別情報を通知された場合も、置換部140は、指定変数VAD(x)および表示規則RUE(x)を取得する。
以下、複数の指定変数VADを互いに区別する必要がある場合には、上述のように、符号に「(1)」、「(2)」、「(3)」、・・・、「(n)」、「(x)」等の添え字を付して区別する。例えば、「指定変数VAD(1)」、「指定変数VAD(2)」、「指定変数VAD(3)」、・・・、「指定変数VAD(n)」、「指定変数VAD(x)」と記載して区別する。複数の指定変数VADの各々を特に区別する必要がない場合は単に「指定変数VAD」と称する。
同様に、複数の表示規則RUEを互いに区別する必要がある場合には、上述のように、符号に「(1)」、「(2)」、「(3)」、・・・、「(n)」、「(x)」等の添え字を付して区別する。例えば、「表示規則RUE(1)」、「表示規則RUE(2)」、「表示規則RUE(3)」、・・・、「表示規則RUE(n)」、「表示規則RUE(x)」と記載して区別する。複数の表示規則RUEの各々を特に区別する必要がない場合は単に「表示規則RUE」と称する。
第三に、置換部140は、「その或る条件COEが定義されている置換前メッセージMSB」について定義されている指定変数VADの値を、同期変数テーブル121を参照して、取得する。例えば、表示設定情報124において、置換前メッセージMSB(x)について指定変数VADとして指定変数VAD(x)が定義されていると、置換部140は、同期変数テーブル121を参照して、指定変数VAD(x)の値を取得する。
第四に、置換部140は、置換部140は、第三の処理で取得した指定変数VADの値から、「その或る条件COEが定義されている置換前メッセージMSB」について定義されている表示規則RUEに従って、置換後文字列CSAを生成する。
第五に、置換部140は、第一の処理で取得した置換前メッセージMSBの可変文字列CSVを、第四の処理で生成した置換後文字列CSAで置換し、「置換後文字列CSAと、固定文字列CSFとを含む一文である置換後メッセージMSA」を生成する。
第六に、置換部140は、第5の処理で生成した置換後メッセージMSAを、置換後メッセージテーブル126に格納する。また、置換部140は、「置換後メッセージMSAを置換後メッセージテーブル126に格納した」ことを、表示制御部150に通知する。
表示制御部150は、記憶部120の置換後メッセージテーブル126を参照して、置換後メッセージMSAを取得し、取得した置換後メッセージMSAを、HMI10の表示部に表示する。
例えば、表示制御部150は、判定部130から「或る条件COEが満たされている」との判定結果を通知された後、以下のタイミングで、置換後メッセージMSAを表示する。すなわち、表示制御部150は、判定部130からの上記判定結果の通知を受け取った後、置換部140から「置換後メッセージMSAを置換後メッセージテーブル126に格納した」ことを通知されると、置換後メッセージMSAを表示する。
(記憶部について)
記憶部120は、HMI10が使用する各種データを格納する記憶装置である。なお、記憶部120は、HMI10が実行する(1)制御プログラム、(2)OSプログラム、(3)HMI10が有する各種機能を実行するためのアプリケーションプログラム、および、(4)該アプリケーションプログラムを実行するときに読み出す各種データを非一時的に記憶してもよい。上記の(1)~(4)のデータは、例えば、ROM(read only memory)、フラッシュメモリ、EPROM(Erasable Programmable ROM)、EEPROM(登録商標)(Electrically EPROM)、HDD(Hard Disc Drive)等の不揮発性記憶装置に記憶される。HMI10は、図示しない一時記憶部を備えていてもよい。一時記憶部は、HMI10が実行する各種処理の過程で、演算に使用するデータおよび演算結果等を一時的に記憶するいわゆるワーキングメモリであり、RAM(Random Access Memory)等の揮発性記憶装置で構成される。どのデータをどの記憶装置に記憶するのかについては、PLC20の使用目的、利便性、コスト、または、物理的な制約等から適宜決定される。記憶部120はさらに、同期変数テーブル121、表示条件情報123、表示設定情報124、置換前メッセージテーブル125、および、置換後メッセージテーブル126を格納している。
同期変数テーブル121には、PLC記憶部210に格納されている変数に対応する変数が格納されている。図1に例示するPLC記憶部210には、第1変数211(1)、第2変数211(2)、・・・、第n変数211(n)が格納されている。これに対応して、同期変数テーブル121には、第1変数211(1)、第2変数211(2)、・・・、第n変数211(n)の各々に対応する、第1同期変数122(1)、第2同期変数122(2)、・・・、第n同期変数122(n)が格納されている。
表示条件情報123には、置換後メッセージMSAを表示する条件として、「置換後メッセージMSAに対応する置換前メッセージMSB(つまり、置換後メッセージMSAの基になる置換前メッセージMSB)」ごとに、条件COEが定義されている。
例えば、置換後メッセージMSA(1)に対応する置換前メッセージMSB(1)に対して、条件COE(1)が、置換後メッセージMSA(2)に対応する置換前メッセージMSB(2)に対して、条件COE(2)が、定義されている。同様に、置換後メッセージMSA(m)に対応する置換前メッセージMSB(m)に対して、条件COE(m)が、置換後メッセージMSA(n)に対応する置換前メッセージMSB(n)に対して、条件COE(n)が、定義されている。
条件COEは、置換後メッセージMSAを表示する条件として、同期変数テーブル121に格納されている変数の値を定義している。すなわち、条件COEは、変数と、その変数の値との組合せとして、置換後メッセージMSAを表示する条件を定義している。
条件COEは、ユーザによって予め設定され、例えば、HMI10は、ユーザが開発支援装置30を用いて設定した条件COEを、開発支援装置30から取得し、取得した条件COEを、表示条件情報123として記憶部120に格納する。
表示設定情報124には、置換前メッセージMSBごとに、指定変数VADおよび表示規則RUEが定義されている。例えば、置換前メッセージMSB(1)に対して、指定変数VAD(1)および表示規則RUE(1)が、置換前メッセージMSB(2)に対して、指定変数VAD(2)および表示規則RUE(2)が、定義されている。同様に、置換前メッセージMSB(m)に対して、指定変数VAD(m)および表示規則RUE(m)が、置換前メッセージMSB(n)に対して、指定変数VAD(n)および表示規則RUE(n)が、定義されている。
置換前メッセージMSBに含まれる可変文字列CSVが複数である場合、表示設定情報124には、置換前メッセージMSBに含まれる可変文字列CSVごとに、指定変数VADおよび表示規則RUEが定義されていてもよい。例えば、置換前メッセージMSB(x)が可変文字列CSV(x1)および可変文字列CSV(x2)を含む場合、可変文字列CSV(x1)および可変文字列CSV(x2)の各々に対して、指定変数VADおよび表示規則RUEが定義されていてもよい。
具体的には、置換前メッセージMSB(x)の可変文字列CSV(x1)に対して、指定変数VAD(x1)および表示規則RUE(x1)が、可変文字列CSV(x2)に対して、指定変数VAD(x2)および表示規則RUE(x2)が、定義されていてもよい。同様に、置換前メッセージMSB(y)の可変文字列CSV(y1)に対して、指定変数VAD(y1)および表示規則RUE(y1)が、可変文字列CSV(y2)に対して、指定変数VAD(y2)および表示規則RUE(y2)が、定義されていてもよい。
指定変数VADおよび表示規則RUEは、ユーザによって予め設定される。例えば、HMI10は、ユーザが開発支援装置30を用いて設定した指定変数VADおよび表示規則RUEを、開発支援装置30から取得し、取得した指定変数VADおよび表示規則RUEを、表示設定情報124として記憶部120に格納する。
置換前メッセージテーブル125には、「可変文字列CSVと固定文字列CSFとを含む一文である置換前メッセージMSB」が予め1つ以上格納されている。置換前メッセージMSBは、ユーザによって予め設定される。例えば、HMI10は、ユーザが開発支援装置30を用いて設定した置換前メッセージMSBを、開発支援装置30から取得し、取得した置換前メッセージMSBを、置換前メッセージテーブル125に格納する。
置換後メッセージテーブル126には、「置換後文字列CSAと、固定文字列CSFとを含む一文である置換後メッセージMSA」が格納される。置換後メッセージMSAは、置換部140によって置換後メッセージテーブル126に格納され、表示制御部150によって置換後メッセージテーブル126から読み出され、HMI10の表示部に表示される。
(HMIとPLCとの間における変数の値の同期について)
図3は、HMI10とPLC20との間における変数の値の同期について説明する図である。HMI10とPLC20との間で、対応する変数の値は同期している。例えば、HMI10の同期変数テーブル121に格納されている1つ以上の変数と、PLC20のPLC記憶部210に格納されている1つ以上の変数とは互いに対応付けられており、各々の値は同期している。
一例を挙げれば、図1の同期変数テーブル121には、第1同期変数122(1)、第2同期変数122(2)、・・・、第n同期変数122(n)が格納されている。また、PLC記憶部210には、第1変数211(1)、第2変数211(2)、・・・、第n変数211(n)が格納されている。ここで、第1同期変数122(1)、第2同期変数122(2)、・・・、第n同期変数122(n)の各々と、第1変数211(1)、第2変数211(2)、・・・、第n変数211(n)の各々とは、互いに対応付けられている。そして、第1同期変数122(1)、第2同期変数122(2)、・・・、第n同期変数122(n)の各々の値と、第1変数211(1)、第2変数211(2)、・・・、第n変数211(n)の各々の値とは、同期している。
HMI10の取得部110は、PLC記憶部210に格納されている第1変数211(1)、第2変数211(2)、・・・、第n変数211(n)の各々の値を取得する。取得部110は、取得した各々の値を、同期変数テーブル121に格納されている第1同期変数122(1)、第2同期変数122(2)、・・・、第n同期変数122(n)の各々の値とし、つまり、同期変数テーブル121に格納されている変数の値を更新する。取得部110が実行する、「PLC記憶部210に格納されている変数の値の取得、および、取得した値による、同期変数テーブル121に格納されている変数の値の更新」を、更新処理とも称する。
例えば、取得部110は、周期的に、または、PLC20から「PLC記憶部210に格納されている変数の値が変更された」こと(PLC側のデータ変化)を通知されると、上述の更新処理を実行する。取得部110による周期的またはPLC側のデータ変化を契機とする更新処理によって、HMI10とPLC20との間で、対応する変数の値は同期している。
図3には、「ErrRobot1」、「AbnormalError」、および、「LotNo」という3つの変数が、HMI10とPLC20との間で値が同期している変数の例として挙げられている。すなわち、図3に示す例では、HMI10の同期変数テーブル121に、「ErrRobot1」、「AbnormalError」、および、「LotNo」という3つの変数が格納されているものとする。また、PLC20のPLC記憶部210にも、同様に、「ErrRobot1」、「AbnormalError」、および、「LotNo」という3つの変数が格納されているものとする。
例えば、互いに対応する第1同期変数122(1)と第1変数211(1)とは、共に、「ErrRobot1」という変数名の変数であり、この変数は、『Robot1でエラーが発生すると、値が「True」になる』変数である。
すなわち、PLC20は、デバイス50(1)である「Robot1」でエラーが発生すると、「ErrRobot1」の値を「True」にし、つまり、第1変数211(1)の値を「True」にする。
ここで、前述の通り、取得部110による周期的またはPLC側のデータ変化を契機とする更新処理によって、HMI10とPLC20との間で、対応する変数の値は同期している。
そのため、PLC20が第1変数211(1)(つまり、「ErrRobot1」)の値を「True」にすると、HMI10の同期変数テーブル121に格納されている第1同期変数122(1)(つまり、「ErrRobot1」)の値も、「True」になる。
例えば、互いに対応する第2同期変数122(2)と第2変数211(2)とは、共に、「AbnormalError」という変数名の変数であり、この変数は、『ラインを停止すべきエラーが発生すると、値が「True」になる』変数である。
すなわち、PLC20は、ラインを停止すべきエラーが発生すると(例えば、Robot1でエラーが発生すると)、「AbnormalError」の値を「True」にし、つまり、第2変数211(2)の値を「True」にする。
ここで、前述の通り、取得部110による周期的またはPLC側のデータ変化を契機とする更新処理によって、HMI10とPLC20との間で、対応する変数の値は同期している。
そのため、PLC20が第2変数211(2)(つまり、「AbnormalError」)の値を「True」にすると、HMI10の同期変数テーブル121に格納されている第2同期変数122(2)(つまり、「AbnormalError」)の値も、「True」になる。
例えば、互いに対応する第3同期変数122(3)と第3変数211(3)とは、共に、「LotNo」という変数名の変数であり、この変数の値は、「現在、ラインを流れている製品の識別番号(ロット番号)」である。
すなわち、PLC20は、「現在、ラインを流れている製品の識別番号(ロット番号)」(以下、「現在製品番号」と略記することがある)を、「LotNo」の値とし、つまり、第2変数211(2)の値として、「現在製品番号」を格納する。
ここで、前述の通り、取得部110による周期的またはPLC側のデータ変化を契機とする更新処理によって、HMI10とPLC20との間で、対応する変数の値は同期している。
そのため、PLC20が第3変数211(3)(つまり、「LotNo」)の値を「現在製品番号」にすると、HMI10の同期変数テーブル121に格納されている第3同期変数122(3)(つまり、「LotNo」)の値も、「現在製品番号」になる。
(メッセージ表示のための準備作業について)
図4は、ユーザが、開発支援装置30を用いて、HMI10が置換後メッセージMSAを表示する表示条件である条件COE、置換前メッセージMSB、指定変数VAD、表示規則RUEを設定する作業(操作)の一例を説明する図である。
図4の(A)は、ユーザが、開発支援装置30を用いて、条件COEおよび置換前メッセージMSBを設定する例を示す図である。例えば、開発支援装置30は、図4の(A)に例示する画像例を表示して、ユーザに、条件COEおよび置換前メッセージMSBを設定させる。
(表示条件の設定について)
図4の(A)に例示する画像例において、ユーザは、「条件式」に「HMI10が置換後メッセージMSA(例えば、アラームメッセージ)を表示する条件COE(表示条件)」を設定し、例えば、条件式(式)の形式で、条件COEを設定する。
図4の(A)には、「ErrRobot1 And AbnormalError」という条件式の形式で、条件COEが設定されている。この条件COEは、『「ErrRobot1」という変数の値が「True」であり、かつ、「AbnormalError」という変数の値が「True」である』との条件を示している。
図3を用いて説明したように、「ErrRobot1」という変数は、例えば、PLC記憶部210に格納されている第1変数211(1)であり、また、同期変数テーブル121に格納されている第1同期変数122(1)である。「AbnormalError」という変数は、例えば、PLC記憶部210に格納されている第2変数211(2)であり、また、同期変数テーブル121に格納されている第2同期変数122(2)である。
(表示させたいメッセージの設定について)
図4の(A)に例示する画像例において、ユーザはさらに、「条件COEが満たされた時にHMI10に表示させたいメッセージ(置換後メッセージMSA)」を設定し、具体的には、置換後メッセージMSAの基になる置換前メッセージMSBを設定する。
置換前メッセージMSBは、可変文字列CSVと固定文字列CSFとを含む一文である。可変文字列CSVは、ユーザによって設定された変数である指定変数VADの値によって置換される文字列であり、つまり、状況に応じて内容が変化する可変的な文字列である。固定文字列CSFは、ユーザによって予め設定されたまま表示される文字列であり、つまり、予め表示内容が決められている固定的な文字列である。
図4の(A)に例示する画像例において、置換前メッセージMSBは、「LotNo{%%}溶接不良」である。置換前メッセージMSBにおける「{%%}」は、条件COE(表示条件)が満たされた時に、ユーザの設定する変数である指定変数VADに入っている値に置き換えられる文字列であり、つまり、可変文字列CSVである。置換前メッセージMSBにおいて「{%%}」以外の文字列は、固定文字列CSFである。
つまり、「LotNo{%%}溶接不良」という置換前メッセージMSBは、「LotNo」という固定文字列CSFと、「溶接不良」という固定文字列CSFとの間に、指定変数VADである「{%%}」が挿入された一文である。
(表示条件と表示させたいメッセージとの関係について)
図4の(A)を用いて説明したように、ユーザは、「HMI10が置換後メッセージMSA(例えば、アラームメッセージ)を表示する条件COE(表示条件)」を、置換後メッセージMSAの基になる置換前メッセージMSBごとに設定する。言い換えれば、条件COEと置換前メッセージMSBとは対応付けられている。
例えば、置換前メッセージMSB(1)には、その表示条件として条件COE(1)が、置換前メッセージMSB(2)には、その表示条件として条件COE(2)が、対応付けられている。同様に、置換前メッセージMSB(m)には、その表示条件として条件COE(m)が、置換前メッセージMSB(n)には、その表示条件として条件COE(n)が、対応付けられている。
(表示条件および表示させたいメッセージの登録について)
開発支援装置30は、図4の(A)に例示する画像例を用いてユーザが設定した条件COEおよび置換前メッセージMSBを、HMI10へと送信する。HMI10は、開発支援装置30から、ユーザが設定した条件COEを受信すると、受信した条件COEを、表示条件情報123として記憶部120に格納する。また、HMI10は、開発支援装置30から、ユーザが設定した置換前メッセージMSBを受信すると、受信した置換前メッセージMSBを、記憶部120の置換前メッセージテーブル125に格納する。
上述の通り、条件COEは、HMI10が置換後メッセージMSAを表示する条件であり、置換前メッセージMSBは、条件COEが満たされた時にHMI10が表示する置換後メッセージMSAの基になる位置文である。そのため、条件COEと置換前メッセージMSBとは互いに対応付けられており、表示条件情報123において、条件COEは、置換前メッセージMSBに対応付けられている。
表示条件情報123において、例えば、置換前メッセージMSB(1)には、その表示条件として条件COE(1)が、置換前メッセージMSB(2)には、その表示条件として条件COE(2)が、対応付けられている。同様に、表示条件情報123において、例えば、置換前メッセージMSB(m)には、その表示条件として条件COE(m)が、置換前メッセージMSB(n)には、その表示条件として条件COE(n)が、対応付けられている。
(指定変数および表示規則の設定について)
図4の(B)は、ユーザが、開発支援装置30を用いて、指定変数VADおよび表示規則RUEを設定する例を示す図である。例えば、開発支援装置30は、図4の(B)に例示する画像例を表示して、ユーザに、置換前メッセージMSBごとに、指定変数VADおよび表示規則RUEを設定させる。
(指定変数の設定について)
図4の(B)に例示する画像例において、ユーザは、『図4の(A)において設定した置換前メッセージMSBにおける「{%%}」(つまり、可変文字列CSV)と置き換える値を格納する変数』である指定変数VADを設定する。図4の(B)に示す例において、ユーザは、指定変数VADとして、「LotNo」という変数名の変数を設定している。図3を用いて説明したように、「LotNo」という変数は、例えば、PLC記憶部210に格納されている第3変数211(3)であり、また、同期変数テーブル121に格納されている第3同期変数122(3)である。ユーザは、指定変数VADを、同期変数テーブル121に格納されている変数の中から選択する。
図4の(B)には、置換前メッセージMSBが含む可変文字列CSVが1つである例が示されている。しかしながら、置換前メッセージMSBが含む可変文字列CSVは複数であってもよい。置換前メッセージMSBが複数の可変文字列CSVを含む場合、ユーザは、複数の可変文字列CSVの各々と置き換えたい値を格納する複数の指定変数VADを設定してもよい。
例えば、置換前メッセージMSB(x)が可変文字列CSV(x1)および可変文字列CSV(x2)を含む場合、ユーザは、可変文字列CSV(x1)および可変文字列CSV(x2)の各々と置き換えたい値を格納する複数の指定変数VADを設定してもよい。具体的には、ユーザは、可変文字列CSV(x1)と置き換えたい値を格納する変数として、同期変数テーブル121に格納されている第p同期変数122(p)を設定してもよい。同様に、ユーザは、可変文字列CSV(x2)と置き換えたい値を格納する変数として、同期変数テーブル121に格納されている第q同期変数122(q)を設定してもよい。
(表示規則の設定について)
図4の(B)に例示する画像例において、ユーザはさらに、HMI10が可変文字列CSVと置き換えて指定変数VADの値を表示する際の表示規則RUE(例えば、表示書式)を設定する。
図4の(B)には、表示規則RUEの例として、以下のものが挙げられている。すなわち、「数値を何進法で表示するか(格納形式)」、「数値を表示する際、整数部の最小桁数は何桁にするか(整数部最小桁数)」、「少数部の桁数は何桁にするか(少数部桁数)」、「桁区切りの有無」の組合せが、表示規則RUEの例として挙げられている。
図4の(B)において、ユーザは、「格納形式」として「10進法」を選択しているため、HMI10が可変文字列CSVと置き換えて指定変数VADの値を表示する際には、指定変数VADの値は10進法で表示された数値となる。
また、図4の(B)において、ユーザは、「整数部最小桁数:1」、「少数部桁数:0」、「桁区切りの有無:無し」を選択している。そこで、HMI10は、『指定変数VADの値を、「整数部最小桁数:1」、「少数部桁数:0」、「桁区切りの有無:無し」で表示した置換後文字列CSA』によって可変文字列CSVを置き換えた置換後メッセージMSAを表示する。
図4の(B)には、ユーザによって、1つの指定変数VADの値について、1つの表示規則RUEが設定される例が示されている。置換前メッセージMSBが含む可変文字列CSVが複数である場合、ユーザは、各々が複数の可変文字列CSVの各々に対応する、複数の指定変数VADの各々について、表示規則RUEを設定してもよい。
例えば、ユーザは、置換前メッセージMSB(x)に含まれる可変文字列CSV(x1)および可変文字列CSV(x2)の各々に、第p同期変数122(p)および第q同期変数122(q)の各々を対応付けると共に、以下の表示規則RUEを設定してもよい。すなわち、ユーザは、第p同期変数122(p)について表示規則RUE(p)を設定し、第q同期変数122(q)について表示規則RUE(q)を設定してもよい。
(指定変数および表示規則と表示させたいメッセージとの関係について)
図4の(B)を用いて説明したように、ユーザは、「置換前メッセージMSBにおける可変文字列CSVと置き換えたい値を格納する変数である指定変数VAD」を、例えば、置換前メッセージMSBごとに設定する。言い換えれば、指定変数VADと置換前メッセージMSBとは対応付けられている。
例えば、置換前メッセージMSB(1)には、指定変数VAD(1)が、置換前メッセージMSB(2)には、指定変数VAD(2)が、対応付けられている。同様に、置換前メッセージMSB(m)には、指定変数VAD(m)が、置換前メッセージMSB(n)には、指定変数VAD(n)が、対応付けられている。
同様に、ユーザは、「置換前メッセージMSBにおける可変文字列CSVと置き換えて置換後文字列CSA(つまり、指定変数VADの値)を表示する際に適用すべき表示規則RUE(表示形式)」を、例えば、置換前メッセージMSBごとに設定する。言い換えれば、表示規則RUEと置換前メッセージMSBとは対応付けられている。
ただし、1つの置換前メッセージMSBが複数の可変文字列CSVを含む場合、指定変数VADおよび表示規則RUEは、各々、複数の可変文字列CSVの各々に対して設定されてもよい。
(表示条件および表示させたいメッセージの登録について)
開発支援装置30は、図4の(B)に例示する画像例を用いてユーザが設定した指定変数VADおよび表示規則RUEを、HMI10へと送信する。HMI10は、開発支援装置30から、ユーザが設定した指定変数VADおよび表示規則RUEを受信すると、受信した指定変数VADおよび表示規則RUEを、表示設定情報124として記憶部120に格納する。
指定変数VADおよび表示規則RUEが置換前メッセージMSBごとに設定される場合、表示設定情報124において、指定変数VADおよび表示規則RUEは、各々、置換前メッセージMSBに対応付けられている。
(アラームメッセージを表示する処理の全体概要について)
図5は、HMI10が置換後メッセージMSAを表示する際に実行する処理などの流れについて、その概要を説明する図である。
(PLCにおける変数の値の更新)
PLC20は、デバイス50(1)である「Robot1」でエラーが発生すると(「(1)異常発生!」)、例えば、以下の3つの処理を実行する。すなわち、PLC20は、PLC記憶部210に格納されている「ErrRobot1」の値を「True」にし、例えば、第1変数211(1)の値を「True」にする。また、PLC20は、PLC記憶部210に格納されている「AbnormalError」の値を「True」にし、例えば、第2変数211(2)の値を「True」にする。さらに、PLC20は、PLC記憶部210の「LotNo」に『現在、ラインを流れている製品の識別番号(図5の例では「124456」)』を格納し、例えば、第3変数211(3)に「現在、ラインを流れている製品の識別番号:124456」を格納する。
(PLCとHMIとの間での変数の値の同期)
HMI10(特に、取得部110)は、PLC20から、第1変数211(1)(つまり、「ErrRobot1」)、第2変数211(2)(つまり、「AbnormalError」)、第3変数211(3)(つまり、「LotNo」)の各々の値を取得する。そして、取得部110は、取得した第1変数211(1)、第2変数211(2)、第3変数211(3)の各々の値で、第1同期変数122(1)、第2同期変数122(2)、第3同期変数122(3)の各々の値を更新する。
これによって、同期変数テーブル121に格納されている第1同期変数122(1)(つまり、「ErrRobot1」)、第2同期変数122(2)(つまり、「AbnormalError」)、第3同期変数122(3)(つまり、「LotNo」)の各々の値は、以下のようになる。すなわち、同期変数テーブル121に格納されている「ErrRobot1」の値は、「True」となる。また、同期変数テーブル121に格納されている「AbnormalError」の値は、「True」となる。さらに、同期変数テーブル121に格納されている「LotNo」の値は、「124456」となる。HMI10とPLC20との間で、「ErrRobot1」、「AbnormalError」、「LotNo」という3つの変数の各々の値が同期する(「(2)変数の値の同期」)。
(表示条件に係る判定)
HMI10(特に、判定部130)は、記憶部120の表示条件情報123を参照して、条件COEを取得する。例えば、判定部130は、条件COEが、図4に例示した「ErrRobot1 And AbnormalError」であることを把握する。つまり、判定部130は、条件COEが、『「ErrRobot1」の値が「True」であり、かつ、「AbnormalError」の値が「True」である』ことを把握する。
判定部130は、記憶部120の同期変数テーブル121を参照して、「ErrRobot1」(つまり、第1同期変数122(1))、および、「AbnormalError」(つまり、第2同期変数122(2))の各々の値を確認する。判定部130は、『「ErrRobot1」の値が「True」であり、かつ、「AbnormalError」の値が「True」である』ことを確認すると、条件COEが満たされたと判定する。そして、条件COEが満たされたと判定した判定部130は、その判定結果(条件COEが満たされたとの判定結果)を、置換部140および表示制御部150に通知する。
前述の通り、表示条件情報123には、条件COEが、例えば置換前メッセージMSBごとに、定義されている。すなわち、表示条件情報123には、置換前メッセージMSB(n)に対応付けられて、置換前メッセージMSB(n)の表示条件として条件COE(n)が定義されている。
判定部130は、同期変数テーブル121に格納されている変数の値から「条件COE(x)が満たされた」と判定すると、条件COE(x)に対応する置換前メッセージMSB(x)を、置換部140および表示制御部150に通知してもよい。
(メッセージの生成)
判定部130から「条件COEが満たされた」との判定結果を通知されると、置換部140は、置換前メッセージテーブル125を参照して、置換前メッセージMSBを取得する。例えば、判定部130から「条件COE(x)が満たされた」との判定結果を通知されると、置換部140は、置換前メッセージテーブル125を参照して、条件COE(x)に対応する置換前メッセージMSB(x)を取得する。
また、判定部130から「条件COEが満たされた」との判定結果を通知されると、置換部140は、表示設定情報124を参照して、「指定変数VADとして、どの変数が指定されているか(設定されているか)」を把握する。例えば、判定部130から「条件COE(x)が満たされた」との判定結果を通知されると、置換部140は、以下の処理を実行する。すなわち、置換部140は、表示設定情報124を参照して、「条件COE(x)に対応する置換前メッセージMSB(x)」について、「指定変数VADとして、どの変数が指定されているか(設定されているか)」を把握する。
そして、置換部140は、記憶部120の同期変数テーブル121を参照して、「指定変数VADとして設定されている変数」の値を取得する。
さらに、判定部130から「条件COEが満たされた」との判定結果を通知されると、置換部140は、表示設定情報124を参照して、「指定変数VADとして設定されている変数」の値を表示する際の規則である表示規則RUEを取得する。例えば、判定部130から「条件COE(x)が満たされた」との判定結果を通知されると、置換部140は、表示設定情報124を参照して、「条件COE(x)に対応する置換前メッセージMSB(x)」について定義されている表示規則RUEを取得する。
置換部140は、取得した「指定変数VADとして設定されている変数」の値から、表示規則RUEに従って、置換後文字列CSAを生成する。そして、置換部140は、生成した置換後文字列CSAによって置換前メッセージMSBの可変文字列CSVを置換して、置換後メッセージMSAを生成する。
置換部140は、生成した置換後メッセージMSAを、記憶部120の置換後メッセージテーブル126に格納する。また、置換部140は、「置換後メッセージMSAを、置換後メッセージテーブル126に格納した」ことを、表示制御部150に通知する。
例えば、置換部140は、置換前メッセージテーブル125を参照して、図4に例示した「LotNo{%%}溶接不良」という置換前メッセージMSBを取得する。また、置換部140は、表示設定情報124を参照して、『指定変数VADとして、図4に例示した「LotNo」(つまり、第3同期変数122(3))が設定されている』ことを把握する。そして、置換部140は、記憶部120の同期変数テーブル121を参照して、「LotNo」(つまり、第3同期変数122(3))の値である「124456」を取得する。さらに、置換部140は、表示設定情報124を参照して、「LotNo」の値を表示する際の規則である表示規則RUEとして、図4に例示した「格納形式:10進法」、「整数部最小桁数:1」、「少数部桁数:0」、「桁区切りの有無:無し」を取得する。
置換部140は、取得した「124456」から、上述の表示規則RUEに従って、「124456」との置換後文字列CSAを生成する。置換部140は、生成した「124456」との置換後文字列CSAによって、「LotNo{%%}溶接不良」という置換前メッセージMSBの可変文字列CSV(つまり、「{%%}」)を置換し、置換後メッセージMSAを生成する。具体的には、置換部140は、「LotNo124456溶接不良」との置換後メッセージMSAを生成する。置換後メッセージMSAは、置換前メッセージMSBの固定文字列CSFと、可変文字列CSVを指定変数VADの値で置換した置換後文字列CSAとを含む一文である。
置換部140は、生成した「LotNo124456溶接不良」との置換後メッセージMSAを置換後メッセージテーブル126に格納し、置換後メッセージMSAを置換後メッセージテーブル126に格納したことを表示制御部150に通知する。
(メッセージの表示)
判定部130から「条件COEが満たされた」との判定結果を通知された後に、置換部140から「置換後メッセージMSAを、置換後メッセージテーブル126に格納した」ことを通知されると、表示制御部150は、以下の処理を実行する。すなわち、表示制御部150は、記憶部120の置換後メッセージテーブル126を参照して、置換後メッセージテーブル126に格納されている置換後メッセージMSAを、自装置の表示画面に表示する。表示制御部150は、例えば、置換後メッセージMSAを含むアラート画像を、自装置の表示画面にポップアップ表示する(「(3)アラート画像のポップアップ表示」)。
図5に示す例において、図4に例示した「LotNo{%%}溶接不良」という置換前メッセージMSBの「{%%}」の部分(可変文字列CSV)が、「124456」に置き換えられた置換後メッセージMSAが表示されている。
(アラームメッセージの表示例について)
図6は、HMI10が、図5に例示したアラート画像とは別の画像において、置換後メッセージMSAを表示する例を示す図である。
図5には、条件COEが満たされると、HMI10(特に、表示制御部150)が、置換後メッセージMSA(例えば、アラートメッセージ)をポップアップ表示する例を示した。しかしながら、条件COEが満たされた場合にポップアップ表示として置換後メッセージMSAを表示することは必須ではない。表示制御部150は、例えば、図6に示すように1つ以上の置換後メッセージMSAを一覧形式で表示してもよい。
§3.動作例
図7は、HMI10が実行する処理の一例を示すフロー図である。図7に例示するように、取得部110は、PLC20から、PLC20の各変数の値を取得し、つまり、PLC20のPLC記憶部210に格納されている1つ以上の変数の各々の値を取得する(S110)。具体的には、取得部110は、PLC記憶部210に格納されている第1変数211(1)、第2変数211(2)、・・・、第n変数211(n)の各々の値を取得する。
取得部110は、PLC20から取得した各変数の値で、自装置の各変数(つまり、同期変数テーブル121に格納されている各同期変数)の値を更新する(S120)。すなわち、取得部110は、PLC20から取得した各変数の値で、同期変数テーブル121に格納されている第1同期変数122(1)、第2同期変数122(2)、・・・、第n同期変数122(n)の各々の値を更新する。例えば、取得部110は、PLC20から取得した第1変数211(1)、第2変数211(2)、・・・、第n変数211(n)の各々の値で、第1同期変数122(1)、第2同期変数122(2)、・・・、第n同期変数122(n)の各々の値を更新する。
判定部130は、記憶部120の表示条件情報123を参照して、置換前メッセージMSBごとに設定されている表示条件(条件COE)を取得する。そして、判定部130は、取得した条件COEが満たされているか否かを、同期変数テーブル121に格納されている変数の値から判定する(S130)。
条件COEは、例えば、同期変数テーブル121に格納されている1つ以上の変数の値によって定義されており、同期変数テーブル121に格納されている2つ以上の変数の値の組合せとして定義されていてもよい。例えば、図4に例示したように、「LotNo{%%}溶接不良」との置換前メッセージMSBの条件COEは、「ErrRobot1 And AbnormalError」である。この条件COEは、『「ErrRobot1」(つまり、第1同期変数122(1))の値が「True」であり、かつ、「AbnormalError」(つまり、第2同期変数122(2))の値が「True」である』との条件を示している。言い換えれば、この条件COEは、第1同期変数122(1)の値と、第2同期変数122(2)の値との組合せとして定義されている。
判定部130が、いずれの置換前メッセージMSBについても、「その置換前メッセージMSBに対応する条件COEは満たされていない」と判定すると(S130でNO)、HMI10は処理を終了する。
判定部130は、いずれかの置換前メッセージMSBについて、「その置換前メッセージMSBに対応する条件COEは満たされている」と判定すると(S130でNO)、以下の処理を実行する。すなわち、判定部130は、条件COEが満たされていると判定した置換前メッセージMSBを、置換部140および表示制御部150に通知する。
置換部140は、記憶部120を参照して、表示設定情報124において、「条件COEが満たされていると判定された置換前メッセージMSB」に対応付けられている(指定されている)同期変数(すなわち、指定変数VAD)を確認する。そして、置換部140は、「条件COEが満たされていると判定された置換前メッセージMSB」に対して表示設定情報124で指定されている指定変数VADについて、同期変数テーブル121を参照して、その値を取得する(S140)。
置換部140は、記憶部120を参照して、表示設定情報124において、「条件COEが満たされていると判定された置換前メッセージMSB」に対応付けられている表示規則RUEを取得する。置換部140は、S140で取得した指定変数VADの値から、表示規則RUEに従って、置換後文字列CSAを生成する(S150)。
置換部140は、「条件COEが満たされていると判定された置換前メッセージMSB」の可変文字列CSVを、S150で生成した置換後文字列CSAで置換した置換後メッセージMSAを生成する(S160)。置換部140は、S160で生成した置換後メッセージMSAを置換後メッセージテーブル126に格納する。また、置換部140は、置換後メッセージMSAを置換後メッセージテーブル126に格納したことを、表示制御部150に通知する。
表示制御部150は、記憶部120の置換後メッセージテーブル126を参照して、置換後メッセージテーブル126に格納されている置換後メッセージMSAを、自装置の表示画面に表示する(S170)。
これまでに図7を参照しながら説明してきたHMI10が実行する処理(言い換えれば、HMI10が実行する制御方法)は、以下のように整理することができる。すなわち、HMI10が実行する処理(制御方法)は、PLC20(制御装置)に通信可能に接続され、「可変文字列CSVと固定文字列CSFとを含む一文である置換前メッセージMSB」を予め格納した記憶部を備える表示器の制御方法である。前記制御方法は、取得ステップ(S110)と、表示制御ステップ(S170)とを含む。
取得ステップは、PLC20にて更新された所定の変数(指定変数VADに対応する変数)の値を取得する。表示制御ステップは、『「取得ステップにて取得された値によって可変文字列CSVを置換した文字列である置換後文字列CSA」と、固定文字列CSFとを含む一文である置換後メッセージMSA』を表示する。
前記の構成によれば、前記制御方法は、記憶部120に格納されている置換前メッセージMSBから、置換後メッセージMSAを生成する。そして、前記制御方法は、生成した置換後メッセージMSAを表示する。置換前メッセージMSBは、可変文字列CSVと固定文字列CSFとを含む一文である。置換後メッセージMSAは、置換後文字列CSAと、固定文字列CSFとを含む一文である。
前記制御方法は、以下のように、置換前メッセージMSBから、置換後メッセージMSAを生成する。すなわち、前記制御方法は、前記所定の変数(指定変数VADに対応する変数)の値がPLC20によって更新されると、更新後の値を取得する。前記制御方法は、『「取得した更新後の値によって可変文字列CSVを置換した前記置換後文字列CSA」と、固定文字列CSFとを含む一文である置換後メッセージMSA』を表示する。
したがって、前記制御方法は、予め記憶している固定的な文字列(すなわち、固定文字列CSF)と、状況に応じて内容が変化する可変的な文字列(すなわち、置換後文字列CSA)とを含む一文である置換後メッセージMSAを表示できるとの効果を奏する。
特に、前記制御方法は、予め記憶部120に格納されている置換前メッセージMSBを基に、PLC20から取得した前記所定の変数(指定変数VADに対応する変数)の値を用いて、置換後メッセージMSAを表示する。
したがって、前記制御方法は、「サーバがPLC20(制御装置)から所定の変数の値を取得し、サーバが表示器に表示させるべきメッセージを生成して、表示器はサーバから取得したメッセージを表示する」構成と比較して、以下の効果を奏する。すなわち、前記制御方法は、上述の構成と比較して、PLC20における前記所定の変数の値の変化に応じて、前記所定の変数の値の変化に対応させて内容を変化させた一文である置換後メッセージMSAを、早急にユーザに通知できるとの効果を奏する。
§4.変形例
これまで、HMI10がプログラマブル表示器である例を説明してきたが、HMI10がプログラマブル表示器であることは必須ではない。
また、これまで、置換前メッセージMSBが含む可変文字列CSVが1つである例を説明してきたが、置換前メッセージMSBが含む可変文字列CSVは複数であってもよい。
〔ソフトウェアによる実現例〕
HMI10の機能ブロック(具体的には、取得部110、判定部130、置換部140、および、表示制御部150)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよい。また、HMI10の機能ブロックは、CPU(CenTral Processing Unit)を用いてソフトウェアによって実現してもよい。
後者の場合、HMI10は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、上記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、上記プログラムを展開するRAM(Random Access Memory)等を備えている。そして、コンピュータ(またはCPU)が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路等を用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。