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

目次

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

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

FA電気設計屋の備忘録

FA設計では、主としてPLC(シーケンサ)を使用してプログラムします。ラダーソフトは、簡便でちょっと理解できれば使えますが、昨今のIOT時代を迎えて、高速、高度化がすすみ、今までPC等の言語系プログラムしかできなかったことさえも可能となっています。そうなると今まで通りの考え方では、プログラム設計はバグとの闘いになります。その闘いの記録とFA設計で必要な備忘録をアップします。

0コメント

  • 1000 / 1000