クライアントキャッシュとサーバキャッシュ

<< Click to Display Table of Contents >>

マニュアル > サーバ作成ガイド > インターフェース編 > IPLinkインターフェース > IPLinkクライアントライブラリ > 機能解説 >

クライアントキャッシュとサーバキャッシュ

クライアントキャッシュとサーバキャッシュ

IPLinkクライアントライブラリ「ClientIPLink6.ocx」、及びIPLinkサーバには、それぞれ独立したキャッシュが存在します。

 

IPLinkサーバが持つサーバキャッシュとIPLinkクライアントライブラリの持つクライアントキャッシュの関係は下図のとおりです。

 

c_interface_0127

IPLinkクライアントライブラリを利用したアプリケーションからIPLinkサーバ経由のPLCデータの読み込みには、上図の①~④の4つの経路による取得方法があります。

 

①IPLinkクライアントライブラリの値変化イベントを利用して値を取得します。実際のイベントとしては「ValueChanged」イベントなどがあります。

 

②IPLinkクライアントライブラリの持つクライアントキャッシュの値を取得します。クライアントキャッシュの更新は、⑤で定期的にサーバキャッシュから取得します。また、実際にIPLinkクライアントライブラリ経由でアプリケーションから値を取得するには「ReadVal」メソッドを利用します。このケースでの取得には「ReadVal」メソッドのパラメータ「DataSource」に「0」を指定します。読み込みの都度サーバキャッシュを読み込まないのでクライアント/サーバ間の通信負荷は抑えられますが、「NetworkParam」の更新周期で更新するので、周期によっては最新データでない可能性があります。

 

③IPLinkサーバの持つサーバキャッシュを直接利用します。このケースでの取得には「ReadVal」メソッドのパラメータ「DataSource」に「1」を指定します。サーバキャッシュを読み込むのでIPLinkサーバ上の値と同じ値を取得できますが、読み込みの都度サーバキャッシュへアクセスするので都度通信しますが、⑤のクライアント/サーバ間の自動更新を止めても値の取得ができるので、その際には通信負荷は軽減できます。

 

④PLCと直接通信して値を取得します。このケースでの取得には「ReadVal」メソッドのパラメータ「DataSource」に「2」を指定します。PLCの値を直接表示できますが、クライアント/サーバ/PLC全ての経路の通信負荷がかかります。

 

 

サーバキャッシュは、⑥の通信でPLCから値を取得し更新します(⑥の更新周期はサーバ側の接続PLCのフォルダプロパティで設定できます)。PLCからの値の取得は、IPLinkクライアントライブラリを使ったアプリケーションで、「AddTag」メソッドして登録してあるタグのみ行います。登録してあるタグは、サーバキャッシュが更新されるので、③の経路での読み込みが可能です。登録していないタグは、サーバキャッシュが更新されないため、①~③の読み込みは出来ず、④の経路での読み込みのみ可能です。

 

クライアントキャッシュは、⑤の通信でサーバキャッシュから値を取得し更新します(⑤の更新周期は「NetworkParam」で指定ができます)。サーバキャッシュからの値の取得は、IPLinkクライアントライブラリの「CtlUpdate」プロパティがTrueの時行います。更新中は、値が変化すると各イベント①が発生し、非同期な値の取得ができます。

また、②ReadVal(DataSource=0)により、クライアントキャッシュから値を直接読み込むことができます。

 

 

下表は、各読み込み方法の条件と特徴です。

 

通信方法

特徴

AddTag

CtlUpdate

①イベント

 

イベントでの値の取得は、モニタリングに適しています。クライアントキャッシュを自動更新するための通信は、Visual Basicとは異なるタスクで実行されるため、Visual Basicの動作を妨げません。

 

但し、常にサーバから定周期で値の取得が行われるため、タグの点数が多くなるとクライアント/サーバ間の通信負荷が高くなる可能性があります。そのような場合は更新周期を遅くする方向で調整を行って下さい。

 

登録あり

(必須)

True

(必須)

②クライアントキャッシュ値

 

クライアントキャッシュからの値取得は、ReadValの処理速度が最も速く処理される点が特徴です。Visual Basic上で迅速なReadValの反応が求められるような場合には、この方法による取得をお奨めします。

 

登録あり

(必須)

True

(必須)

③サーバキャッシュ値

 

サーバキャッシュからの値取得は、クライアント/サーバ間の自動更新が不要であるため、クライアント/サーバ間のネットワーク負荷を下げる効果があります。但し、値変化によるイベントは発生しません。

 

登録あり

(必須)

False

(推奨)

④デバイス値

 

この方法は、最も処理時間がかかる値の取得方法です。サーバに対して強制的にPLCとの通信を要求するため、他の通信に影響を与える可能性があります。但し、要求の都度、実際にPLCと通信が行われた結果が返ってくるため、最も新しいデバイス値を取得することができます。

 

また、タグ数が大量かつ通信頻度が低いような場合には、サーバ・PLC間の通信負荷を下げる効果を得ることができます。従って、この方法はPLCとの同期が必要な制御の場合や、バッチ的な通信に最適です。

 

登録なし

(推奨)

False

(推奨)

 

これら4つの通信方法をシステム要件にあわせ選択し、時には組み合わせることにより、通信パフォーマンスを高めることができます。反対に、組み合わせ次第ではパフォーマンスの低下をまねくことがある点に注意してください。例えば、タグをアクティブで登録し、CtlUpdateをTrue、ReadVal(DataSource=2)で通信を行うといった組み合わせは最もパフォーマンスが低下する組み合わせです。

 

 

hint

これらの通信方法を特に意識したくない場合には、以下の設定の組み合わせを推奨します。

■すべてのタグをアクティブにする。

■CtlUpdateをTrueにする。

■ReadVal(DataSource=0) 及びValueChangedイベントで値を取得する。