# モニタリング

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

概要

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

この機能のサンプルは、以下からご利用頂けます。

なお、サンプル及び詳細の説明は、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

| クライアントとサーバ間の値の更新周期は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

通信切断の検証

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

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

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

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

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

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

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