MELSEC-QシーケンサをVBAで通信したい!
三菱のシーケンサMELSEC-Qシリーズのシーケンサ「QJ71C24N」にエクセルVBAで
通信したいと考えています。なかなかうまくいかず、困り果てています・・・。
下記、進めてきた経緯と組んだプログラムを書きます。
どこがおかしいか、どなたか教えてください・・・
■ゴール
シーケンサ内部のM300という変数に格納されている値を、VBAで作成した
テキストボックスに表示させたい。
1.使用するエクセルのバージョンは2003です。
MSCOMMが入ってなかったため、「vb6sp6rt4.exe」というランタイムを用いて
MSCOMMはインストールできました。
2.以下プログラム
Dim R As String
Private Sub CommandButton1_Click()
Sheets("Sheet1").Select
MSComm1.DTREnable = True
MSComm1.RTSEnable = True
MSComm1.inputLen = 0 'Input プロパティ使用時に、バッファ全体を読み取る。
MSComm1.commport = 1 'これは必要かと考え、テキストにはないが追加。
MSComm1.Settings = "9600,N,8,1"
MSComm1.portopen = True
MSComm1.inbuffercount = 0 ' 0文字受信するまで待機
MSComm1.output = Chr$(H5) + "F90000FF0004010000D*0010200050" + Chr$(H31) + Chr$(H43)
End Sub
+でいいのでしょうか?&というのも見ましたが・・・。
一応下記の通りだと取扱説明書をみながら、進めました。
'chr$(H5):制御コードENQuiry(問合せ):ヘッダ
'F900:識別番号+フレーム+局番号
'00FF:ネットワーク番号+PC番号
'00:自局番号
'0401:コマンド(一括読み出し)
'0000:サブコマンド(モニタ条件指定無し、デバイスメモリ拡張指定無し)
'D*:デバイスコード
'001020:先頭デバイス
'50:デバイス点数
' Chr$(H31) + Chr$(H43):サムチェックコード
↓ここからが、テキストボックスへの表示になりますが・・・。これもうまくいかず。
Private Sub CommandButton2_Click()
R = MSComm1.input
text1.Text = R
text2.Text = Mid$(R, 6, 4)
End Sub
そして、ポートオープン。これは、エラーが出ず、うまくいったと考えています。
Private Sub Form_Load()
Sheets("Sheet1").Select
MSComm1.DTREnable = True
MSComm1.RTSEnable = True
MSComm1.inputLen = 0 'Input プロパティ使用時に、バッファ全体を読み取る。
MSComm1.commport = 1 'これは必要かと考え、テキストにはないが追加。
MSComm1.Settings = "9600,N,8,1"
MSComm1.portopen = True
End Sub
そして、ポートクローズ。こちらも、エラーが出ず、うまくいったと考えています。
Private Sub CommandButton3_Click()
MSComm1.portopen = False
End Sub
最大の問題は、しっかりとコードが送信できているのかというところです。
解らないところも多々あるため不明な点も多いですが、なにとぞ、教えてください。