# IPLinkクライアントライブラリの利用

マニュアル > サーバ作成ガイド > インターフェース編 > IPLinkインターフェース > IPLinkクライアントライブラリ > # IPLinkクライアントライブラリの利用 |

IPLinkクライアントライブラリを利用する

VisualBasic等の開発言語によって、独自のIPLinkクライアントアプリケーションを開発することができます。クライアントからの接続には、IPLinkサーバーへ接続するためのライブラリ「ClientIPLink6.ocx（Version6用IPLinkライブラリ）」を利用します。ライブラリは「ClientIPLink6.ocx」のみで動作し、ランタイムの配布はフリーです。

「ClientIPLink6.ocx」ライブラリのメインサポート言語はVisualBasic.NETになります。その他の言語を使用する場合は、以下の参考用サンプルを参考にして、開発を行ってください。

旧バージョンからの移行

旧バージョンである「ClientIPLink4.ocx（Version4用IPLinkライブラリ）」、もしくは「ClientIPLink5.ocx（Version5用IPLinkライブラリ）」を使用してIPLinkクライアントアプリケーションを作成している場合、Version6のIPLinkサーバーへの接続は保証されておりませんので、旧バージョンで作成されたアプリケーションなどは移行が必要となります。

移行手順としては、以下の手順となります。

1.Version6の製品をインストールします。

2.開発環境（例としてはVisualBasic.NETなど）を起動し、新しく「ClientIPLink6.ocx（Version6用IPLinkライブラリ）」を貼り付けます。

3.新しく貼り付けたプロパティの全てを旧ライブラリのプロパティと同様にします。
※VisualBasic 6で開発していたものをVisualBasic.NETへ移行する場合には、一部のプロパティ名の変更があります。変更されている名称は以下のとおりです。

VisualBasic 6の名称 | VisualBasic.Netの名称
Update | CtlUpdate
State | CtlState

もし、ソースコード上で上記のプロパティをご利用の場合は、変更が必要となります。

4.旧ライブラリを削除します。

5.動作確認として一通りの動きをご確認下さい。

IPLinkクライアントライブラリのインストール

1.IPLinkクライアントライブラリをクライアントPCへインストールする
それぞれのクライアントPCで、インストーラーから「IPLinkクライアント」のみを選択してインストールを実行してください。

2.クライアントを実行する
各PC上で、クライアントアプリケーションを実行して下さい。クライアントアプリケーションは何台のPCから実行しても構いませんし、１台のPC上で複数のクライアントアプリケーションを実行することもできます。

IPLinkサーバとのリモート接続について

IPLinkサーバへの接続は、サーバが動作するPC以外のPCからも簡単に行うことができます。ここでは下記構成のように、IPLinkクライアントをサーバ以外のPC上で実行させ、IPLinkサーバに接続するための方法について解説します。

この例では、IPLinkサーバのIPアドレスを「192.168.1.1」とします。開発するVisualBasicのIPLinkライブラリコントロールを貼り付けた後、「NetworkParam」プロパティをIPLinkサーバのIP（192.168.1.1）とポート（3000）をカンマ区切りで設定してください。その他のNetworkParamの設定内容については、プロパティ説明 を参考にして下さい。

NetworkParam : 「192.168.1.1,3000,1000」

サーバキャッシュとクライアントキャッシュについて

IPLinkクライアントライブラリ「ClientIPLink6.ocx」、及びIPLinkサーバにはそれぞれ独立したキャッシュが存在します。IPLinkサーバが持つサーバキャッシュとIPLinkクライアントライブラリの持つクライアントキャッシュの関係は下図の通りです。

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

①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 (推奨)

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

| これらの通信方法を特に意識したくない場合には、以下の設定の組み合わせを推奨します。 ■すべてのタグをアクティブにする。 ■UpdateをTrueにする。 ■ReadVal(DataSource=0) 及びValueChangedイベントで値を取得する。