IPLinkによるタグのモニタリング

<< Click to Display Table of Contents >>

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

IPLinkによるタグのモニタリング

概要

このサンプルは、32点のデータをリアルタイムにモニタリングするサンプルプログラムです。タグをアクティブとして登録し、UpdateプロパティをTrueとすることにより、値変化時にイベントが発生します。各項目の表示については、StateChangedイベントを使用し、IPLinkサーバとの接続状況の表示を行っています。また、ValueStateChanged イベントを使用し、タグの値及び品質が変化した場合、各タグ値の表示を自動的に更新します。

 

c_interface_0128

 

 

サンプルのダウンロード

このページで紹介されている作成例には、サンプルが用意されています。

 

サンプルは以下からダウンロードすることができます。

 

なお、サンプル及び詳細の説明は、VB.NET2010で行います。

 

 

プラグラムの要点

プログラムの要点について説明します。

 

フォームロード処理
フォームロード時に、IPLinkサーバと接続を行うためのNetworkParamプロパティの設定を行います。合わせて通信を行うタグをAddTagで登録を行う等の初期処理を行います。
 

'IPlink Setting
AxIPLink1.Visible = False
AxIPLink1.AddTags(32, TagPaths, Actives, Results)
AxIPLink1.NetworkParam = ",3000,1000"
AxIPLink1.Online = True
AxIPLink1.CtlUpdate = True

 

hint

クライアントとサーバ間の値の更新周期はNetworkParamで設定します。サーバとPLC間の値の更新周期は各PLCのフォルダプロパティで設定します。

 

 

StateChangedイベント
StateChangedはIPLinkサーバの接続状態が変化した時に発生します。接続中であれば「True」、未接続であれば「False」が取得できます。ここでは、取得した接続状態を、エディットボックスへ表示しています。
 

'------------------------------------------
' Event - StateChanged
'------------------------------------------
Private Sub AxIPLink1_StateChanged(sender As Object, e As AxIPLINKLib6._DClientIPLinkEvents_StateChangedEvent) Handles AxIPLink1.StateChanged
    txtState.Text = CStr(e.state)
End Sub

 
 

ValueStateChangedイベント
ValueStateChangedはIPLinkサーバのタグの値及び品質が変化したときに発生します。ここでは、タグの品質が正常(True)であった場合、値のエディットボックスへ表示します。また、品質が異常になった場合、「Error!」と表示させています。
 

'------------------------------------------
' Event - ValueStateChanged
'------------------------------------------
Private Sub AxIPLink1_ValueStateChanged(sender As Object, e As AxIPLINKLib6._DClientIPLinkEvents_ValueStateChangedEvent) Handles AxIPLink1.ValueStateChanged
    If e.state Then
        txtVal(Integer.Parse(e.tagPath.Substring(e.tagPath.Length - 2))).Text = CStr(e.value)
    Else
        txtVal(Integer.Parse(e.tagPath.Substring(e.tagPath.Length - 2))).Text = "Error!"
    End If
End Sub

 

 

通信切断の検証

通信切断の原因としては、大きく以下の2つに分けられます。

 

c_interface_0129

 

 

通信障害の発生時、このサンプルで使用している2つのイベントは以下のように動作します。

 

ValueStateChanged(ByVal TagPath As String, ByVal Value As Variant, ByVal State As Boolean)
「ValueStateChanged」イベントは3つの引数があり、第3引数である「State」は値の品質を表します。何らかの理由で値が取得できなかったとき、State引数にはFalseが設定されます。これは、クライアントとサーバ間の障害、サーバとPLC間の障害、いずれの障害においても同様に発生します。
 

StateChanged(ByVal State As Boolean)
「StateChanged」イベントは、クライアントとサーバ間の通信状態が変化した時に発生するイベントです。サーバとPLC間で通信ができなくなった時は発生しません。障害時には「State」引数にFalseが設定されます。

 

 

このサンプルを使用して、通信障害時の動作検証を行います。

 

1.クライアントとサーバ間の通信障害
 
クライアントとサーバ間の通信障害を模擬するため、正常通信中にアプリケーションをオフラインにして下さい。すると、StateChanged及びValueStateChangedが発生します。フォーム上では値が「Error!」になり、状態が「False」と表示されることを確認してください。
 

  c_interface_0131

c_interface_0130

 

 

2.サーバとPLC間の通信障害
 
サーバとPLC間の通信障害を模擬するため、正常通信中にU01ユニットを右クリックし、「ユニット操作」「切断」を選択して下さい。切断操作により、PLCとの通信不能状態をシミュレートすることができます。この場合、ValueStateChangedのみ発生します。フォーム上では値が「Error!」になりますが、状態は「True」のまま表示されています。なお、切断状態であるためServer側のタグのクオリティは全てBADになります。
 

  c_interface_0132

c_interface_0133