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