エクセルでPLCと通信するとは
装置で複雑なことをやる場合、PCでプログラムつくって、OPC接続して・・なんて一体いくらかかるんだろう?
まして、OSが変わるとパソコン更新に加えて、開発言語まで更新..となると大変ですね。
エクセルで通信ができれば、日報や月報つくったり、グラフにするのも簡単だし、VBA使えば、ユーザーフォームでさも開発プログラムでつくったように表現できます。
また、OS変わってもエクセルはそのまま使える。VBAの開発ソースは、ネットにやまほどある・・ので、エクセルでPLCに接続してみましょう
通信ソフト
三菱では、MX Sheets キーエンスでは、KV.COM for EXCELがあります。 MX Sheetの場合、特定条件(コマンドボタン)で通信を開始して、処理が終了したら通信停止とかがうまくできない仕様なので、KV.COM for EXCELを使います
追記:MX Sheetsでは、できませんが、MX ComponentのVBAでコーディングすることで問題が解消できます。次回、三菱PLCであればMX Componentのほうがよさそうなので試してみましょう
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の処理も簡単です。
終わりに
今回は、IJP(インクジェットプリンター)への印字する内容を500文字程度罰×20種類送りました。入力も固定分は、バーコード入力してます。エクセルなので、バーコードリーダー取り込みも簡単ですね。
簡単で高機能なことが簡単にできるので、ぜひお試しください。
コメント