どうも、もももです。
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クラス)







コメント