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

記事
IT・テクノロジー
目次
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を使います。
※MX ComponentであればVBAで記述すれば可能です。

3. KV.COM for EXCEL
ソフトをインストールして起動します。いきなり、エラーがでました。
そうでした、最新版でないとこのパソコンのエクセルのバージョンに対応できない。
・・ということでキーエンスのサイトから、最新版をダウンロード。
あれ?エラーがでる・・オフィスのバージョンは32bitしか対応してなかった。
1.png
設定画面です、OPCとキーエンスしか接続できませんが・・・
キーエンスのPLCには簡易PLC通信機能があるので、それを流用すれば、どのメーカーでも不問となりますね。
設定はこんな形でデバイスとセルを割付します。
2.png

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種類送りました。入力も固定分は、バーコード入力してます。エクセルなので、バーコードリーダー取り込みも簡単ですね。
簡単で高機能なことが簡単にできるので、ぜひお試しください。

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す