目次
1. エクセルでPLCと通信するとは
2. 通信ソフト
3. KV.COM for EXCEL
4. 終わりに
1. エクセルでPLCと通信するとは
装置で複雑なことをやる場合、PCでプログラムつくって、OPC接続して・・なんて一体いくらかかるんだろう?
まして、OSが変わるとパソコン更新に加えて、開発言語まで更新..となると大変ですね。
エクセルで通信ができれば、日報や月報つくったり、グラフにするのも簡単だし、VBA使えば、ユーザーフォームでさも開発プログラムでつくったように表現できます。
また、OS変わってもエクセルはそのまま使える。VBAの開発ソースは、ネットにやまほどある・・ので、エクセルでPLCに接続してみましょう
2. 通信ソフト
三菱では、MX Sheets キーエンスでは、KV.COM for EXCELがあります。
MX Sheetの場合、特定条件(コマンドボタン)で通信を開始して、処理が終了したら通信停止とかがうまくできない仕様なので、KV.COM for EXCELを使います。
3. KV.COM for EXCEL
ソフトをインストールして起動します。いきなり、エラーがでました。
そうでした、最新版でないとこのパソコンのエクセルのバージョンに対応できない。
・・ということでキーエンスのサイトから、最新版をダウンロード。
あれ?エラーがでる・・オフィスのバージョンは32bitしか対応してなかった。
設定画面です、OPCとキーエンスしか接続できませんが・・・
キーエンスのPLCには簡易PLC通信機能があるので、それを流用すれば、どのメーカーでも不問となりますね。
設定はこんな形でデバイスとセルを割付します。
VBA 起動コード参考
Private Sub CommandButton115_Click()
On Error Resume Next
'送信前の注意
Dim rc As Integer
rc = MsgBox("送信前にデータを確認してください!印字中の番号の上書きは特に注意してください!", vbYesNo + vbQuestion, "確認")
If rc = vbYes Then
MsgBox "処理を行います"
Else
MsgBox "データ送信を中断します。"
Exit Sub
End If
'ワークシートフルパスを取得
Dim Workbook_path As String
Workbook_path = ActiveWorkbook.FullName
'---------------
'426 上書き保存対応
'426 現在のファイル名称を取得します。
Dim hozonname As String
Dim hozonpath As String
hozonname = ThisWorkbook.Name
hozonpath = ThisWorkbook.Path
hozonname = hozonpath & "\" & hozonname
'送信前にデータを保存します。
ThisWorkbook.SaveAs "C:\データ保存\LOG\" & "IJP_LOG" & Format(Now, "yyyy-mmdd-hhmm-ss") & ".xlsm", 52
'----------------- 52は、xlsm形式でマクロ有効 56は、xls形式 51は、マクロ無効です。
'作成したフルパス込みのファイル名を使ってWorkbook.SaveAsメソッドを実行する前に、警告を非表示にしてしまえば、
Application.DisplayAlerts = False
'送信前にデータを保存します。
ThisWorkbook.SaveAs Workbook_path, 52
'----------------- 52は、xlsm形式でマクロ有効 56は、xls形式 51は、マクロ無効です。
'426 現在ワークブックの上書き保存
ThisWorkbook.SaveAs hozonname, 52
Application.DisplayAlerts = True
'COM+が既に開いていなければ開きます
If Not IsObject(Workbooks("KVComPlus.xla")) Then
Workbooks.Open KVComPlusDir + "KVComPlus.xla"
End If
'データ送信
Dim i As Integer
'データ送信トリガ
Sheets("通信").Range("H2").Value = 1
'データ送信確認値リセット
Sheets("通信").Range("J2").Value = 0
'データ送信量初期値
Sheets("通信").Range("H3").Value = 0
'表示を消します。
Unload Me
Worksheets("通信").Activate
Application.Visible = True
'通信開始します
Application.Run "KVComPlus.xla!modaction.StartComm"
'時間経過で変更
'Application.OnTime Now + TimeValue("00:00:01"), "Procedure"
End Sub
という形でKV.COMを起動します。
通信処理で送りたいデータを送信完了し、端末装置への書き込み処理も完了したら、PLCから完了信号をもらって通信を停止させます。
常時通信させないので、VBAの処理も簡単です。
4. 終わりに
今回は、IJP(インクジェットプリンター)への印字する内容を500文字程度罰×20種類送りました。入力も固定分は、バーコード入力してます。エクセルなので、バーコードリーダー取り込みも簡単ですね。
簡単で高機能なことが簡単にできるので、ぜひお試しください。
0コメント