【VB.NET】MX Component4を用いてPLCと通信(画面コントロールなし)

FA

どうも、もももです。

VB.NETのアプリケーションでMX Component4を用いてPLCと通信(画面コントロールなし)する方法について紹介します。

前提条件

  • Visual Studio 2019(VB.NET)
  • MX Component4(MX Component Version 4.21X)
  • MX ComponentのActiveXコントロールは使用せず「ActUtlType」クラスを使用
  • MX Component4は通信設定済み

今回は以前作成した通信設定を流用してPLCと通信を行います。

MX Component4の通信設定については下記を参照ください。

下記の手順を行うとPLCの実機無しで動作確認が出来ます。

Visual Studio 環境設定

Visual Studioの環境設定は下記で手順を紹介しています。

サンプルプログラム作成

Imports ActUtlTypeLib
Public Class Form2

    Dim actUtlType As ActUtlType = New ActUtlType()

    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        actUtlType.ActLogicalStationNumber = 1 '論理局番1をセット

        '通信開始
        Dim intResult = actUtlType.Open
        If intResult <> 0 Then
            '戻り値が0以外の場合は異常発生
        End If

    End Sub

    Private Sub Form2_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed

        '通信終了
        Dim intResult = actUtlType.Close()
        If intResult <> 0 Then
            '戻り値が0以外の場合は異常発生
        End If

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim m0Value As Integer = 0

        'M0読み取り
        Dim intResult = actUtlType.GetDevice("M0", m0Value)
        If intResult <> 0 Then
            '戻り値が0以外の場合は異常発生
        End If

        Me.TextBox1.Text = m0Value

    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        Dim m0Value As Integer = 0
        If Me.RadioButton1.Checked Then
            m0Value = 1
        End If

        'M0書き込み
        Dim intResult = actUtlType.SetDevice("M0", m0Value)
        If intResult <> 0 Then
            '戻り値が0以外の場合は異常発生
        End If

    End Sub

End Class

コード解説

上記は「Bit読み取り」ボタンを押下すると、「M0」の内容を読み取りテキストに表示(ON=1/OFF=0)し、「Bit書き込み」ボタンを押下するとラジオボタンの状態に応じて 「M0」 をON/OFFするサンプルプログラムです。

・ActUtlTypeクラスのインスタンス生成(4行)

今回は論理局番を指定するため、MX ComponentのActUtlTypeクラスのインスタンスを生成します。

・フォーム ロードイベント(6~15行)

画面起動時に論理局番の指定を行い、PLCとの通信を開始します。

以前作成したMX Component通信設定=論理局番1を設定しています

・フォーム クローズドイベント(17~25行)

画面終了時にPLCとの通信をクローズします。

・Bit読み取りボタン クリックイベント(27~39行)

M0の値を「GetDevice」関数で取得します。

「GetDevice」関数の第二引数にデバイス値がセットされます。

取得値をテキストボックスに反映します。

・Bit書き込みボタン クリックイベント(41~54行)

M0の値をラジオボタンの値に応じて「SetDevice」関数で更新します。

・共通認識

MX Componentの関数の戻り値はエラーコードとなっており、

  • 0:正常
  • 0以外:異常発生

となります。(エラーコードの詳細についてはマニュアルに記載されています。)

実行結果

左側がM0をONを選択して「bit書き込み」を押下した後、「bit読み取り」を押下した結果になります。

右側がM0をOFFを選択して「bit書き込み」を押下した後、「bit読み取り」を押下した結果になります。

書き込みの結果が反映されていることが確認できます。

まとめ

VB.NETのアプリケーションでMX Component4を用いてPLCと通信(画面コントロールなし)する方法についてまとめました。

ソケットクラスを用いたMCプロトコル通信と比べると、通信設定や難しいコマンドを理解しなくてもMX Component関数を実行するだけで簡単に通信が出来るため、取扱が容易です。

AxActUtlTypeクラス(画面コントロールで配置)とActUtlTypeクラス(プログラム中でインスタンス生成) は関数の使用方法などは変わらないので、好みで使い分ければよいかと思います。

下記ではMCプロトコルを用いた通信方法を紹介しています。

下記では画面コントロールを配置してMX Component関数を使用する方法を紹介しています。(AxActUtlTypeクラス)

コメント

タイトルとURLをコピーしました