エクセルでPLCと通信します。

KEYENCE

エクセルで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種類送りました。入力も固定分は、バーコード入力してます。エクセルなので、バーコードリーダー取り込みも簡単ですね。

簡単で高機能なことが簡単にできるので、ぜひお試しください。

コメント

タイトルとURLをコピーしました