(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-02-27
(45)【発行日】2024-03-06
(54)【発明の名称】SCADAウェブHMIシステム
(51)【国際特許分類】
H04L 67/5651 20220101AFI20240228BHJP
H04Q 9/00 20060101ALI20240228BHJP
【FI】
H04L67/5651
H04Q9/00 311H
(21)【出願番号】P 2023523304
(86)(22)【出願日】2022-06-21
(86)【国際出願番号】 JP2022024703
【審査請求日】2023-04-17
(73)【特許権者】
【識別番号】501137636
【氏名又は名称】東芝三菱電機産業システム株式会社
(74)【代理人】
【識別番号】110003199
【氏名又は名称】弁理士法人高田・高橋国際特許事務所
(72)【発明者】
【氏名】橋詰 享治
(72)【発明者】
【氏名】野島 章
(72)【発明者】
【氏名】清水 伸夫
【審査官】前田 健人
(56)【参考文献】
【文献】国際公開第2021/245752(WO,A1)
【文献】特開2020-013527(JP,A)
【文献】特開2014-003590(JP,A)
【文献】国際公開第2017/168674(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/5651
H04Q 9/00
(57)【特許請求の範囲】
【請求項1】
コンピュータネットワークを介して接続する、複数のプログラマブルロジックコントローラ(以下、PLC)と複数のHMIクライアント機と1台のSCADAサーバ機とを備えるSCADAウェブHMIシステムであって、
前記PLCは、産業プラントを構成するフィールド機器群に関する入出力信号の集合を含むブロックデータを一定周期ごとに前記コンピュータネットワークへ送信し、
前記HMIクライアント機は、ウェブブラウザを表示するスクリーンを夫々備えるものにおいて、
前記SCADAサーバ機は、通信ドライバと、前記複数のHMIクライアント機に1対1で接続されるクライアント管理部と、を備え、
前記通信ドライバは、前記PLCから送信された前記ブロックデータを前記一定周期ごとに受信し、受信したブロックデータをデータ型ごとの信号データに分解し、分解した信号データに信号データ識別子を付加してデータ型ごとに前記クライアント管理部に送信するように構成され、
前記クライアント管理部は、
前記通信ドライバから送信された信号データを受信する受信スレッドと、
前記受信スレッドで受信した信号データをデータ型ごとに前記信号データ識別子に対応させて格納可能な第1及び第2の信号データバッファと、
前記第1または第2の信号データバッファに格納された信号データを読み出し、読み出した信号データに対応する前記HMIクライアント機に送信する送信スレッド、を備え、
前記送信スレッドが前記第1及び第2の信号データバッファの一方から信号データを読み出して前記HMIクライアント機に送信する間、前記第1及び第2の信号データバッファの他方に格納される信号データが上書きされるように構成されること
を特徴とするSCADAウェブHMIシステム。
【請求項2】
前記受信スレッドは、前記信号データ識別子をインデックスとして使用し、前記第1及び第2の信号データバッファに前記信号データを格納するように構成される請求項1に記載のSCADAウェブHMIシステム。
【請求項3】
前記第1及び第2の信号データバッファは、格納する前記信号データが更新されたときにONとなる更新フラグを前記インデックスに対応させて有し、
前記受信スレッドは、前記更新フラグがONである前記インデックスを格納したインデックスリストを生成し、
前記送信スレッドは、前記インデックスリストを参照し、前記更新フラグがONであるインデックスの信号データを前記HMIクライアント機に送信するように構成される請求項2に記載のSCADAウェブHMIシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、SCADAウェブHMIシステムに関し、特に大規模システムにおける処理負荷を低減する技術に関する。
【背景技術】
【0002】
SCADA(Supervisory Control And Data Acquisition)は、社会インフラシステムを監視制御する仕組みとして知られている。社会インフラシステムは、鉄鋼圧延システム、電力送変電システム、上下水道処理システム、ビル管理システム、道路システムなどである。
【0003】
SCADAは、産業制御システムの一種であり、コンピュータによるシステム監視とプロセス制御とデータ収集とを行う。SCADAでは、システムの処理性能に合わせた即応性(リアルタイム性)が必要である。
【0004】
SCADAは一般に次のようなサブシステムから構成される。
(1)HMI(Human Machine Interface)
HMIは、監視対象装置のデータをオペレータに提示し、オペレータが監視対象装置を監視し制御できるようにする機構である。
【0005】
(2)監視制御システム
監視制御システムは、Programmable Logic Controller(PLC)などによって構成される。監視制御システムは、監視対象装置のデータを収集し、監視対象装置に対して制御コマンドを送る。
【0006】
(3)遠方入出力装置(Remote Input Output:RIO)
遠方入出力装置は、監視対象装置に設置されたセンサと接続し、センサの信号をデジタルのデータに変換し、そのデジタルデータを監視制御システムに送る。
【0007】
(4)通信基盤
通信基盤は、監視制御システムと遠方入出力装置を接続する。
【0008】
SCADA HMIサブシステムの一例として、特許文献1には、HMIクライアント機とHMIサーバ機とを備えるシステムが開示されている。特許文献1のような従来のSCADAでは、HMIサーバ機が、PLCから受信したデータ(入出力信号、アラーム信号)をHMIクライアント機へ送信し、また収集したすべてのデータを履歴データとして蓄積する。入出力信号は、監視対象装置(産業プラントを構成するフィールド機器群)に関する信号であり、アクチュエータ制御信号およびセンサ検出信号を含む。
【先行技術文献】
【特許文献】
【0009】
【文献】日本特開2017-27211号公報
【文献】日本特開平11-120104号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
上述したサブシステムの1つであるHMIサブシステムの開発における課題について説明する。
【0011】
大規模システムでは、HMIサブシステムは、数十万点以上の多数の信号をPLCと結び付ける場合がある。監視制御とデータ収集の両方を担う従来のHMIサーバ機では、多数の信号をリアルタイムで処理するために、高性能なプロセッサおよび大容量のメモリが必要となる。そのため、大規模システムに適用可能なHMIサブシステムを低コストに実現できることが望まれている。
【0012】
SCADA HMIサブシステムの低コスト化を実現するため、本願発明者は、ブラウザベースのSCADA HMIサブシステムを開発するに至った。これにより、ウェブブラウザ上で動作するウェブアプリケーションとしてHMIスクリーンを実現することができる。
【0013】
ウェブブラウザ上でHMIスクリーンを実現するメリットの1つとして、URL(ポート番号含む)を切り替えることで、容易に異なるWebサーバからデータを取得できる点が挙げられる。
【0014】
すなわち、履歴スクリーンのデータは、全PLCデータを収集し蓄積するオンラインデータ収集機(ODG:Online Data Gathering)から取得し、リアルタイム性が要求される監視スクリーンのデータは、HMIサーバ機から取得することが可能となる。SCADA機能の一部である履歴に関する機能を分離し、オンラインデータ収集機に任せることで、HMIサーバ機は、リアルタイム監視機能に特化できる。低コストのHMIサーバ機で多数の信号を処理するために、入出力信号(アクチュエータ制御信号およびセンサ検出信号を含む)やアラーム信号の処理負荷を低減することが望まれる。
【0015】
ところで、大規模なSCADAウェブHMIシステムでは、1台のサーバ機に多数のクライアント機が接続することが想定される。この場合、HMIサーバ機でのリアルタイムなデータ処理が行えなくなる可能性がある。例えば、1台のサーバ機に128台のHMIクライアント機が接続され、各HMIクライアント機で同一のスクリーンを表示しているとすると、HMIサーバ機は、スクリーンに含まれる信号データを受信し、全てのHMIクライアント機に送信する必要がある。ブラウザベースのSCADA HMIサブシステムでは、HMIクライアント機上のスクリーンは、ウェブブラウザにより表示されており、例えば、WebSocketなどのPoint to Point接続を使用して、HMIサーバ機からHMIクライアント機に信号データが送信される。即ち、HMIサーバ機からHMIクライアント機への送信にマルチキャスト送信を利用することはできない。このため、HMIサーバ機は、受信したデータ量の128倍の信号データをHMIクライアント機に送信する必要がある。
【0016】
HMIクライアント機への単位時間当たりの送信データ量が少ない間は、HMIサーバ機は、全ての信号データを遅延なく送信することができるかもしれない。然し、単位時間あたりの送信データ量が多くなると、送信データ量がHMIサーバ機の処理能力を上回る可能性がある。このようにHMIサーバ機への処理負荷が高い場合、HMIクライアント機に送信しきれない信号データがHMIサーバ機内のバッファに滞留し、データバッファサイズが増加してしまう。その結果、HMIクライアント機のスクリーン上での表示更新が遅延するという問題や、HMIサーバ機のメモリ空き容量が少なくなり、HMIサーバ機が停止するという問題が発生する。なお、上記特許文献2には、ネットワーク上の負荷を監視し、負荷が高い場合に、パケットを選別する技術が開示されている。
【0017】
本提案は、上述のような課題を解決するためになされたもので、サーバ機への処理負荷が高い場合でも、HMIクライアント機のスクリーン上での表示更新の遅延やサーバ機の停止を防止することが可能なSCADAウェブHMIシステムを提供することを目的とする。
【課題を解決するための手段】
【0018】
第1の観点は、SCADAウェブHMIシステムに関連する。SCADAウェブHMIシステムは、コンピュータネットワークを介して接続する、複数のプログラマブルロジックコントローラ(以下、PLC)と複数のHMIクライアント機と1台または2台のSCADAサーバ機とを備える。SCADAサーバ機を冗長構成にした場合には、SCADAサーバ機は2台となる。PLCは、産業プラントを構成するフィールド機器群に関する入出力信号の集合を含むブロックデータを一定周期ごとにコンピュータネットワークへ送信し、HMIクライアント機は、ウェブブラウザを表示するスクリーンを夫々備える。SCADAサーバ機は、通信ドライバと、複数のHMIクライアント機に1対1で接続されるクライアント管理部と、を備える。通信ドライバは、PLCから送信されたブロックデータを一定周期ごとに受信し、受信したブロックデータをデータ型ごとの信号データに分解し、分解した信号データに信号データ識別子を付加してデータ型ごとにクライアント管理部に送信する。クライアント管理部は、通信ドライバから送信された信号データを受信する受信スレッドと、受信スレッドで受信した信号データをデータ型ごとに信号データ識別子に対応させて格納可能な第1及び第2の信号データバッファと、第1または第2の信号データバッファに格納された信号データを読み出し、読み出した信号データに対応するHMIクライアント機に送信する送信スレッドと、を備える。送信スレッドが第1及び第2の信号データバッファの一方から信号データを読み出してHMIクライアント機に送信する間、第1及び第2の信号データバッファの他方に格納される信号データが上書きされるように構成される。
【0019】
第2の観点は、第1の観点に加えて、次の特徴を更に有する。受信スレッドは、データ識別子をインデックスとして使用し、第1及び第2の信号データバッファに信号データを格納するように構成される。
【0020】
第3の観点は、第2の観点に加えて、次の特徴を更に有する。第1及び第2の信号データバッファは、格納する信号データが更新されたときにONとなる更新フラグをインデックスに対応させて有するように構成される。受信スレッドは、更新フラグがONであるインデックスを格納したインデックスリストを作成するように構成される。インデックスリストは、更新領域を表すリストである。送信スレッドは、インデックスリストを参照し、更新フラッグがONであるインデックスの信号データ、すなわち、更新領域の信号データをHMIクライアント機に送信するように構成される。
【発明の効果】
【0021】
第1の観点によれば、送信スレッドが第1及び第2の信号データバッファの一方から信号データを読み出してHMIクライアント機に送信する間、第1及び第2の信号データバッファの他方に格納される信号データを更新することで、HMIクライアント機に送信する信号データを間引くことができる。従って、SCADAサーバ機への処理負荷が高い場合でも、HMIクライアント機のスクリーン上での表示更新の遅延やSCADAサーバ機の停止を防止することができる。
【0022】
第2の観点によれば、第1及び第2の信号データバッファへの信号データの格納または読み出しを少ない計算量で実行することができる。
【0023】
第3の観点によれば、更新領域の信号データのみをHMIクライアント機に送信することで、HMIクライアント機への送信データ量を少なくすることができ、可能な限り多くの信号データをHMIクライアント機に送信することができる。
【図面の簡単な説明】
【0024】
【
図1】実施の形態1に係るSCADAウェブHMIシステムの構成例を説明するための図である。
【
図2】SCADAサーバ機が有する機能の概要を例示するブロック図である。
【
図3】信号データバッファを説明するための模式図である。
【
図4】クライアント管理部での信号処理を説明するための模式図である。
【
図5】信号データ送信スレッドに対する負荷が低い場合のクライアント管理部での信号処理を説明するための模式図である。
【
図6】信号データ送信スレッドに対する負荷が高い場合に実行される間引き処理を説明するための模式図(その1)である。
【
図7】信号データ送信スレッドに対する負荷が高い場合に実行される間引き処理を説明するための模式図(その2)である。
【
図8】信号データバッファに設定される更新フラグと信号データの更新領域を説明するための模式図である。
【
図9】更新領域を表すリストを説明するための模式図である。
【
図10】信号データ受信スレッドで実行される受信処理を説明するためのフローチャートである。
【
図11】信号データ送信スレッドで実行される送信処理を説明するためのフローチャートである。
【
図12】信号データを送信すべきHMIクライアント機を示すクライアントリストを示す模式図である。
【
図13】SCADAサーバ機及びHMIクライアント機のハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【0025】
以下、図面を参照して本発明の実施の形態について詳細に説明する。尚、各図において共通する要素には、同一の符号を付して重複する説明を省略する。
【0026】
実施の形態1.
1-1.SCADAウェブHMIシステム
図1は、実施の形態1に係るSCADAウェブHMIシステム1の構成例を説明するための図である。SCADAウェブHMIシステム1は、コンピュータネットワーク5を介して相互に接続された、PLC2、SCADAサーバ機3、HMIクライアント機4を備える。コンピュータネットワーク5は例えばイーサネット(登録商標)である。
【0027】
PLC2は、図示省略する制御ネットワークを介して産業プラントを構成するフィールド機器群に接続されている。フィールド機器群は、アクチュエータおよびセンサを含む。PLC2は、ブロックデータ(block data)を含むパケット(packet)をマルチキャストまたはブロードキャストでコンピュータネットワーク5へ一定周期ごとに送信する。送信周期は、例えば、数msecから数百msecの範囲内で設定され得る。ブロックデータは、PLC信号の集合である。1つのブロックデータには数十から数百のPLC信号が含まれる。PLC信号の種類として、入出力信号(アクチュエータ制御信号およびセンサ検出信号を含む)、アラーム信号がある。ブロックデータには入出力信号の集合およびアラーム信号の集合の少なくとも一方が含まれる。ブロックデータは、PLC信号の値が前回値から変化したか否かに関わらず、周期的にSCADAサーバ機3に送信される。
【0028】
HMIクライアント機4は、後述する
図13に示すプロセッサ401、メモリ402、モニタ403を備える。メモリ402に記憶されたプログラムをプロセッサ401が実行することにより、プロセッサ401は、表示パーツ42が配置されたスクリーン41を表示するウェブブラウザ40を実行するように構成されている。モニタ403は、ウェブブラウザ40の画面を表示する。
【0029】
ウェブブラウザ40は、URLで指定したWebサーバ(図示省略)からスクリーン41に関するHTMLドキュメントの各種情報を取得可能である。Webサーバは、SCADAサーバ機3内に構築されている。スクリーン41は、リアルタイム性の要求される監視スクリーンを含む。
【0030】
ウェブブラウザ40は、ウェブブラウザ40に現在表示されているスクリーン41が監視スクリーンである場合に、SCADAサーバ機3から受信した入出力信号に応じて表示パーツ42の表示状態を変化させる。表示状態の変化とは、例えば、数値、文字、色、形の変化である。また、ウェブブラウザ40は、SCADAサーバ機3から受信したアラーム信号に応じてスクリーン41に配置された表示パーツ42の表示状態を変化させる。
【0031】
1-2.SCADAサーバ機の機能概要
図2は、実施の形態1に係るSCADAサーバ機3が有する機能の概要を例示するブロック図である。SCADAサーバ機3は、通信ドライバ31と、クライアント管理部32とを備える。
【0032】
通信ドライバ31は、一定周期ごとにPLC2からブロックデータを受信する受信処理311と、受信したブロックデータをデータ型ごとの信号データに分解するアンパック(unpack)処理312とを実行するように構成されている。本実施の形態では、データ型として、「bit(データサイズ1bit)」、「short(データサイズ2byte)」、「float(データサイズ4byte)」を用いる場合を例に説明するが、他のデータ型を用いることができる。さらに、通信ドライバ31は、各信号データに対応する信号データ識別子を付加してデータ型ごとのパケット(packet)を生成し、生成したパケットをクライアント管理部32に送信するパケット処理313を実行するように構成されている。即ち、通信ドライバ31からクライアント管理部32に送信されるデータは、信号データ識別子と信号データの値(value)との対である。
【0033】
ここで、信号データ識別子は、アプリケーション設計者が記述した文字列に対応するもので、データ型ごとにユニークである。信号データ識別子のデータサイズは、例えば、23bitである。これにより、信号データ識別子が、データ型ごとに約800万個の信号データを表すことができ、大規模なSCADAウェブHMIシステム1に対して十分に対応可能である。bit型のデータであれば、信号データ識別子が23bitで、データの値が1bitであるので、1信号あたりのデータサイズは、24bit(=3byte)となる。float型のデータであれば、信号データ識別子が23bitで、データの値が4byteであるので、1bitのパディングを付加して、1信号あたりのデータサイズは、7byteとなる。なお、パケットを生成する際、ウェブブラウザ40に現在表示されているスクリーン41に関する信号データ識別子の信号データのみを抽出するようにしてもよい。
【0034】
クライアント管理部32は、信号データ受信スレッド321と、第1の信号データバッファ322aと、第2の信号データバッファ322bと、信号データ送信スレッド323とを有する。
【0035】
信号データ受信スレッド321は、通信ドライバ31から受信したパケット(データ型ごとの信号データ)を受信する。信号データ受信スレッド321は、信号データ識別子を信号データバッファ322a,322bのインデックス(index)として利用する。信号データ受信スレッド321は、詳細は後述するが、第1の信号データバッファ322aまたは第2の信号データバッファ322bに信号データを格納する。
【0036】
第1及び第2の信号データバッファ322a,322bは同一の構成を持つ。以下、両信号データバッファ322a,322bを区別しない場合に、信号データバッファ322として説明することもある。
【0037】
信号データバッファ322は、
図3に示すように、データ型ごとに信号データを格納する領域(配列)を持っている。各格納領域では、インデックスに対応させて信号データが格納される。各信号データに格納領域を割り当てる信号データ型の配列として実装することで、連想配列として実装する場合と比べて、信号データの信号データバッファ322への格納または読み出しを少ない計算量で実行することができるため、負荷を低減できて有利である。連想配列を使用する場合に比べ、メモリ使用量は大きくなるが、仮に、800万個の信号データが存在するとしても、text型を除けば、約24Mbyte程度のメモリ使用量であるので、現在の計算機の仕様を考慮すれば、問題ないメモリ使用量であると言える。
【0038】
信号データ送信スレッド323は、信号データ受信スレッド321からの指示を受けると、第1の信号データバッファ322aまたは第2の信号データバッファ322bに格納された信号データを読み出し、読み出した信号データをデータ型ごとにHMIクライアント機4に送信する。このとき、後述する更新領域Ru(
図8参照)の信号データのみをHMIクライアント機4に送信することで、HMIクライアント機4に送信されるデータ量を少なくすることができる。
【0039】
1-3.SCADAサーバ機における信号データ処理
図4に示すように、信号データ受信スレッド321は、通信ドライバ31からパケット(信号データ)を受信すると、受信した信号データを第1の信号データバッファ322aに格納する。前述の通り、通信ドライバ31から受信したデータは、信号データ識別子と信号データとの対であるので、信号データ識別子をインデックスとして利用し、信号データ型に対応する格納領域(配列)のインデックス位置にデータ値を格納する。データの格納が終了すると、信号データ送信スレッド323が送信処理を完了しているか否かを確認する。
【0040】
図4(a)に示すように、送信処理中であれば、次の周期で受信したパケットの信号データも第1の信号データバッファ322aに格納する。このとき、同じインデックス位置でデータが上書きされることがある。これは、HMIクライアント機4への送信データ量がSCADAサーバ機3の処理能力を上回っている場合、つまり、SCADAサーバ機3に対する処理負荷が高い場合に、信号データの間引き処理が行われることを意味する。
【0041】
一方、
図4(b)に示すように、信号データ送信スレッド323が送信処理を完了している場合には、信号データ送信スレッド323に第1の信号データバッファ322aに格納された信号データを読み出し、送信処理を行うように指示し、次の周期で受信したパケットの信号データは、第2の信号データバッファ322bに格納される。格納が終了すると、信号データ送信スレッド323が第1の信号データバッファ322aのデータの送信処理を完了しているか否かを確認する。送信処理中であれば、次の周期で受信したパケットの信号データも第2の信号データバッファ322bに格納される。このとき、同じインデックス位置でデータが上書きされることで、上記間引き処理が行われる。その後、第1の信号データバッファ322aのデータの送信処理が完了すると、信号データ送信スレッド323に第2の信号データバッファ322bに格納された信号データを読み出し、送信処理を行うように指示する。このような受信、格納、読み出し、送信の処理が、繰り返し行われる。
【0042】
図5を参照して、パケットに含まれる信号データ識別子A,B,Cの各信号データが、一定周期である100msec毎に1ずつインクリメントされる場合を例に、クライアント管理部32の処理を説明する。信号データ識別子A,B,Cは、インデックスとして利用されるため、インデックスもA,B,Cである。また、信号データ送信スレッド323は、第1または第2の信号データバッファ322a,322bに格納されたインデックスA,B,Cの各信号データの値を100msec以内に全てのHMIクライアント機4に送信できるものとする。このため、
図5に示す例は、SCADAサーバ機3に対する処理負荷が低い。
【0043】
時刻Tにおいて、信号データ受信スレッド321が通信ドライバ31から1回目のパケットを受信すると、パケットに含まれる各信号データ(値=1)が第1の信号データバッファ322aのインデックスA,B,Cの位置に格納される。時刻T+100msecにおいて、信号データ送信スレッド323は、第1の信号データバッファ322aから信号データ(値=1)を読み出し、HMIクライアント機4に送信する。送信中、信号データ受信スレッド321が通信ドライバ31から2回目のパケットを受信すると、各信号データ(値=2)が第2の信号データバッファ322bのインデックスA,B,Cの位置に格納される。
【0044】
時刻T+200msecにおいて、信号データ送信スレッド323は、第2の信号データバッファ322bから信号データ(値=2)を読み出し、HMIクライアント機4に送信する。送信中、信号データ受信スレッド321が通信ドライバ31から3回目のパケットを受信すると、各信号データ(値=3)が第1の信号データバッファ322aのインデックスA,B,Cの位置に格納される。クライアント管理部32は、以上の処理を繰り返すため、上記間引き処理は行われない。
【0045】
図6及び
図7を参照して、SCADAサーバ機3に対する処理負荷が高い場合のクライアント管理部32の処理を説明する。
図6及び
図7に示す例では、信号データ送信スレッド323が、第1または第2の信号データバッファ322a,322bに格納されたインデックスA,B,C,D,E,Fの各信号データの値を全てのHMIクライアント機4に送信するのに200msec要する点で、
図5に示す例と相違する。以下、
図5に示す例との相違点を中心に説明する。
【0046】
時刻T+200msecにおいて、信号データ受信スレッド321が3回目のパケットを受信すると、信号データ送信スレッド323の送信処理は完了しないため、第2の信号データバッファ322bのインデックスA~Fの位置に格納された各信号データ(値=2)はHMIクライアント機4に送信されず、第2の信号データバッファ322bのインデックスA~Fの位置に各信号データ(値=3)が上書きされる。
【0047】
同様に、時刻T+400msecにおいて、信号データ送信スレッド323の送信処理は完了しないため、第1の信号データバッファ322aのインデックスA~Fの位置に格納された各信号データ(値=4)はHMIクライアント機4に送信されず、第1の信号データバッファ322aのインデックスA~Fの位置に各信号データ(値=5)が上書きされる。
【0048】
さらに、時刻T+600msecにおいて、信号データ送信スレッド323の送信処理は完了しないため、第2の信号データバッファ322bのインデックスA~Fの位置に格納された各信号データ(値=6)はHMIクライアント機4に送信されず、第2の信号データバッファ322bのインデックスA~Fの位置に各信号データ(値=7)が上書きされる。
【0049】
このように、SCADAサーバ機3の性能とHMIクライアント機4に送信されるデータ量とに応じて、第1または第2の信号データバッファ322a,322bの信号データを上書きする間引き処理が自動で実行されることで、HMIクライアント機4に送信されるデータ量が調整される。
【0050】
HMIクライアント機4に送信されるデータ量を少なくするために、
図8に示すように、信号データバッファ322が、格納する信号データの値が更新されたときにON(更新されなかったときはOFF)となる更新ビットを持つように構成してもよい。更新ビットは、1bitの更新フラグである。この場合、信号データ送信スレッド323は、信号データバッファ322の全体から更新ビットがONである信号データを抽出するように構成してもよいが、これでは効率が悪い。そこで、
図9に示すように更新フラグがONであるインデックスを格納するインデックスリストLiを生成し、生成したインデックスリストLiを信号データバッファ322に格納するように、信号データ受信スレッド321を構成することができる。インデックスリストLiは、更新領域Ruを表すリストである。インデックスリストLiは、データ型ごとに生成され得る。さらに、信号データ送信スレッド323が、インデックスリストLiを参照し、更新フラグがONであるインデックスの信号データ、すなわち、更新領域Ruの信号データのみをHMIクライアント機4に送信するように構成することができる。これによれば、HMIクライアント機4に送信すべき信号データを効率良く抽出することができ、その結果として、HMIクライアント機4に送信されるデータ量を効率良く少なくすることができる。
【0051】
このように、更新領域Ruを設定することにより、HMIクライアント機4への効率的な信号データの送信を実現することができる。なお、
図8及び
図9には、ビット型の信号データの例を示しているが、他のデータ型の信号データにも更新フラグ及びインデックスリストLiを適用することで、より一層効率的な信号データの送信を実現することができる。
【0052】
図10は、信号データ受信スレッド321が実行する受信処理のルーチンの一例を示すフローチャートである。なお、
図10中に破線で囲んで示す排他区間と、後述する
図11中に破線で示す排他区間とのうち何れか一方のみが実行できる。すなわち、信号データ受信スレッド321が排他区間実行中は、信号データ送信スレッド323の排他区間の実行は待たれ、信号データ送信スレッド323が排他区間実行中は、信号データ受信スレッド321の排他区間の実行は待たれる。
【0053】
図10に示すルーチンでは、通信ドライバ31からの信号データの受信を待つ(ステップS11)。通信ドライバ31は、一定周期で同じデータ型の信号データを含むパケットを送信する。パケットの受信を開始すると(ステップS12)、受信完了フラグをOFFにする(ステップS13)。次に、現在の受信データバッファ番号に信号データを格納する(ステップS14)。現在の受信データバッファ番号とは、信号データの格納を行っている信号データバッファの番号であり、第1または第2の信号データバッファ322a,322bである。ステップS14では、上述したように、データ型ごとにインデックスに対応させて信号データが格納される。
【0054】
次に、現在の受信データバッファ番号と、後述する
図11に示すルーチンにおける現在の送信データバッファ番号とが同じであるか判定する(ステップS15)。相違する場合、即ち、信号データ送信スレッド323による送信が完了した場合には、受信完了フラグをONにする(ステップS16)。これにより、次回受信したパケットの信号データは、現在とは異なる信号データバッファに格納される。ステップS16の後、ステップS11に戻る。一方、同じである場合には、ステップS17に進む。
【0055】
ステップS17では、セマフォV操作が実行される。次に、現在の受信データバッファ番号を更新する(ステップS18)。これにより、信号データ送信スレッド323に次に送信するデータが準備完了したことが通知される。ステップS18の終了後、ステップS11に戻る。
【0056】
図11は、信号データ送信スレッド323が実行する送信処理のルーチンの一例を示すフローチャートである。
【0057】
図11に示すルーチンでは、セマフォP操作を実行する(ステップS21)。セマフォP操作の実行により、信号データ受信スレッド321が送信するデータの準備が完了するまで待機となる。動作再開後、現在の送信データバッファ番号に格納された信号データをHMIクライアント機4に送信する(ステップS22)。現在の送信データバッファ番号とは、信号データの読み出しを行っている信号データバッファの番号であり、第1または第2の信号データバッファ322a,322bである。ステップS22において、
図9に示すインデックスリストLiを参照し、更新フラグがONであるインデックスの信号データ、すなわち、更新領域Ruの信号データのみを送信する。これにより、HMIクライアント機4への送信データ量を少なくすることができるため、HMIクライアント機4の信号データの送信を速やかに完了させることができる。
【0058】
ここで、
図12を参照して、信号データ送信スレッド323は、信号データに対応する信号データバッファ322のインデックスと、その信号データを送信すべきHMIクライアント機4との関係を規定したクライアントリストLcに従って、更新領域Ruの信号データを送信する。クライアントリストLcは、インデックスと、信号データを使用するスクリーン41のスクリーン識別子Gn(n=1,2,…)との関係を規定した第1のマップMp1、及び、HMIクライアント機4(4A,4B,4C)と、スクリーン識別子Gnとの関係を規定した第2のマップMp2とを用いて作成することができる。
【0059】
ステップS22の後、現在の送信データバッファ番号を更新する(ステップS23)。次に、現在の送信データバッファ番号と、
図10に示すルーチンにおける現在の受信データバッファ番号とが同じであるか否かを判定する(ステップS24)。相違する場合には、ステップS21に戻る。同じである場合には、ステップS25に進む。
【0060】
ステップS25では、受信完了フラグがONであるか否かを判定する。受信完了フラグがOFFである場合、ステップS21の処理に戻る。一方、受信完了フラグがONである場合、セマフォV操作を実行する(ステップS26)。次に、現在の受信データバッファ番号を更新する(ステップS27)。次に、受信完了フラグをOFFにし(ステップS28)、ステップS21の処理に戻る。
【0061】
1-4.SCADAサーバ機3及びHMIクライアント機4のハードウェア構成例
図13は、SCADAサーバ機及びHMIクライアント機のハードウェア構成例を示すブロック図である。上述したSCADAサーバ機3の各処理は、処理回路により実現される。処理回路は、プロセッサ301と、メモリ302と、ネットワークインタフェース303とが接続して構成されている。プロセッサ301は、メモリ302に記憶された各種プログラムを実行することにより、SCADAサーバ機3の各機能を実現する。メモリ302は、主記憶装置および補助記憶装置を含む。また、メモリ302は、信号データを一時的に蓄積可能な保管領域である第1及び第2の信号データバッファ322a,322bを含む。
【0062】
上述したHMIクライアント機4の各処理は、処理回路により実現される。処理回路は、プロセッサ401と、メモリ402と、少なくとも1つのモニタ403と、ネットワークインタフェース404と、入力インタフェース405とが接続して構成されている。プロセッサ401は、メモリ402に記憶された各種プログラムを実行することにより、HMIクライアント機4の各機能を実現する。メモリ402は、主記憶装置および補助記憶装置を含む。モニタ403は複数台設けられてもよい。入力インタフェース405は、キーボード、マウス、タッチパネル等の入力デバイスである。
【0063】
1-5.効果
以上説明したように、本実施の形態によれば、信号データ送信スレッド323が第1及び第2の信号データバッファ322a,322bの一方から信号データを読み出してHMIクライアント機4に送信する間、第1及び第2の信号データバッファ322a,322bの他方に格納される信号データを上書き(更新)することで、HMIクライアント機4に送信する信号データを間引くことができる。これにより、HMIクライアント機4に送信しきれない信号データがSCADAサーバ機3の信号データバッファ322に滞留したり、SCADAサーバ機3のメモリ空き容量が少なくなったりすることが回避される。従って、SCADAサーバ機3への処理負荷が高い場合でも、HMIクライアント機4のスクリーン41上での表示更新の遅延やSCADAサーバ機3の停止を防止することができる。
【0064】
本実施の形態における間引き処理では、上書きすることにより、最新の信号データが間引かれることがない。しかも、間引かれる信号データのデータ量を可及的少なくすることができ、可能な限り多くの信号データをHMIクライアント機4に送信することができる。このため、SCADAウェブHMIシステム1のシステム性能を最大限に利用して間引き処理を行うことができる。
【0065】
以上、本発明の実施の形態について説明したが、本発明は、上記の実施の形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。上述した実施の形態において各要素の個数、数量、量、範囲等の数に言及した場合、特に明示した場合や原理的に明らかにその数に特定される場合を除いて、その言及した数にこの発明が限定されるものではない。また、上述した実施の形態において説明する構造等は、特に明示した場合や明らかに原理的にそれに特定される場合を除いて、この発明に必ずしも必須のものではない。
【符号の説明】
【0066】
1…SCADAウェブHMIシステム
2…プログラマブルロジックコントローラ(PLC)
3…SCADAサーバ機
31…通信ドライバ
32…クライアント管理部
321…信号データ受信スレッド
322a…第1の信号データバッファ
322b…第2の信号データバッファ
323…信号データ送信スレッド
4…HMIクライアント機
40…ウェブブラウザ
41…スクリーン
5…コンピュータネットワーク
Li…インデックスリスト
Ru…更新領域
【要約】
本発明は、サーバ機への処理負荷が高い場合でも、HMIクライアント機のスクリーン上での表示更新の遅延やサーバ機の停止を防止できるSCADAウェブHMIシステムを提供する。SCADAサーバ機は、通信ドライバと、HMIクライアント機に1対1で接続されるクライアント管理部を備える。クライアント管理部は、通信ドライバからの信号データを受信する受信スレッドと、受信スレッドで受信した信号データをデータ型ごとに信号データ識別子に対応させて格納可能な第1及び第2の信号データバッファと、第1または第2の信号データバッファに格納された信号データを読み出してHMIクライアント機に送信する送信スレッドを備える。送信スレッドが第1及び第2の信号データバッファの一方から信号データを読み出してHMIクライアント機に送信する間、第1及び第2の信号データバッファの他方に格納される信号データが上書きされる。