VBAでGE製DRUCK「DPI515」とシリアル通信!

こんにちは、Ryoです。
今回はGE Sensing & Inspection Technologiesという会社で取り扱っている加圧
コントローラで旧型になりますがDPI515モデルとのRS232C通信(シリアル)について
書いてみたいと思います。

この装置は用途が限定されますから、需要ないだろうなー・・・マニアックすぎだなー・・・と思いながらもSCPIコマンドと付属の英文マニュアル誤記(もしくはVer違い?)に相当
悩まされましたので記録しておく意味も兼ねて良く使うコマンド等まとめてみます。

そしてシリアル通信に使うのは毎度のEasyCommです。
簡単な紹介はこちらの記事でしていますので、よろしければ覗いてみてください。



1.良く使うコマンドについて

この記事を読んでくれているということは、DPI515を使ってるか良くご存じということと
思いますから本体の詳細説明等は割愛します。
簡単に言いますと、自社の製品等に加圧/減圧を高精度で行う必要がある場合に
使用する圧力コントローラでDPI515はシリアル通信、新型のPACEシリーズはシリアルと
USB通信も可能になっています。

◆コマンド抜粋

DPI515は「SCPI1995」コマンドがベースになっています。

SENS? ⇒ 加圧値読込

SENS:RANG? ⇒ 加圧レンジの読込
(受信⇒ :SENS:PRES:RANG ‘11.00barqa’)※数値は機種により異なる

SOUR 20.0 ⇒ 加圧設定値の書込み(本例では20の値をセット)

SOUR? ⇒ 書き込まれた設定値の読込
(受信⇒ :SOUR:PRES:LEV:IMM:AMPL:20.0)

UNIT? ⇒ Druckで現在設定されている単位を読込
(受信⇒ :UNIT:PRESS:KPA)

REM ⇒ リモートモード

LOC ⇒ ローカルモード

UNIT KPA ⇒ Drucへの単位書込み(単位をkPaにする場合の例)

OUTP 1 ⇒ 「SOURコマンド」にて書込み後、「加圧実行」コマンド

OUTP 0 ⇒ 加圧停止

OUTP? ⇒ 加圧実行中or未実行の確認用
(受信⇒OUTP:STAT 1(加圧中)/OUTP:STAT 0(未実行))

「注意!」 コマンド+数値となっている命令は文字と数字の間に「半角スペース” “」が必要

これらのコマンドを知っていれば普通の通信制御ならほぼやれるかと思います。

2.通信サンプルコード


'******************
' Druc接続設定
'******************
'//COM2(Druc接続ポート)
ec.COMn = 2
ec.Delimiter = "CRLF"
'//Druc(DPI515)デフォルト通信条件が9600,n,8,1
ec.Setting = "9600,n,8,1"
'//読み出しTimeOut設定は通常より長めに設定(エラー対処)
ec.AsciiLineTimeOut = 1000
'//通信開始時にステータスクリアを行う//
ec.AsciiLine = Chr$(H5) & "*CLS"
ec.WAITmS = 500

'****************************************************
'  Drucのレンジ切替、及び単位設定を行う
'****************************************************
'//Drucをリモートモードに変更//
ec.AsciiLine = Chr$(&H5) & "REM"
ec.WAITmS = 250
'//DrucのRange(モード)を読み込む
ec.AsciiLine = Chr$(&H5) & "SENS:RANG?"
ec.WAITmS = 250
A$ = ec.AsciiLine

If InStr(A, "barqa") = 0 Then
'//異なる場合は切替指示//
  ec.AsciiLine = Chr$(&H5) & "SOUR:PRES:RANG '21.00barqa'"
  ec.WAITmS = 250
  '//再度モードの切り替えを確認する//
  ec.AsciiLine = "SENS:RANG?"
  ec.WAITmS = 250
  A$ = ec.AsciiLine
  '//再度指示しても切替わらない場合はアラート&終了//
    If InStr(A, "barqa") = 0 Then
      MsgBox "Rangeを切り替えることが出来ません", vbCritical
      ec.AsciiLine = Chr$(&H5) & "LOC"
      ec.WAITmS = 250
      ec.COMn = 0
      End
    End If
End If

'//Drucの設定単位を確認し、異なる場合は「kPa」とする
ec.AsciiLine = Chr$(&H5) & "UNIT?"
ec.WAITmS = 250
A$ = ec.AsciiLine

If InStr(A, "KPA") = 0 Then
  '//異なる場合はkPa単位に設定する//
  ec.AsciiLine = Chr$(&H5) & "UNIT KPA"
  ec.WAITmS = 250
  '//再度モードの切り替えを確認する//
  ec.AsciiLine = "UNIT?"
  ec.WAITmS = 250
  A$ = ec.AsciiLine
     '//再度指示しても切替わらない場合はアラート&終了//
     If InStr(A, "KPA") = 0 Then
        MsgBox "設定単位をkPaに切り替えることが出来ません", vbCritical
        ec.AsciiLine = Chr$(&H5) & "LOC"
        ec.WAITmS = 250
        ec.COMn = 0
        End
     End If
End If

'**********************************
' Drucコントロール(加圧)開始
'**********************************
'//OutPress表記に加圧したい数値をセットする//
ec.AsciiLine = Chr$(&H5) & "SOUR" & " " & OutPress
ec.WAITmS = 500
'//Drucに正常にOutPress(設定圧力)が書き込まれたかを確認//
ec.AsciiLine = Chr$(&H5) & "SOUR?"
ec.WAITmS = 500
A$ = ec.AsciiLine
   If InStr(A, OutPress) = 0 Then
      MsgBox "Drucへの設定書込みエラーです" & vbCrLf & "処理を終了します", vbCritical
      ec.AsciiLine = Chr$(&H5) & "OUTP" & " " & "0"
      ec.WAITmS = 500
      ec.AsciiLine = Chr$(&H5) & "LOC"
      ec.WAITmS = 250
      ec.COMn = 0
      End
   End If

'///Drucが未加圧or加圧中の確認を実施する//
ec.AsciiLine = Chr$(&H5) & "OUTP?"
ec.WAITmS = 50
A$ = ec.AsciiLine
If Val(Mid(A, 10)) = 0 Then
   'ドラック加圧開始
    ec.AsciiLine = Chr$(&H5) & "OUTP" & " " & "1"
    ec.WAITmS = 3000
End If

通信条件の設定から初期計測条件設定と読み書き、加圧までをそれぞれ分けたサンプルコード
になりますが、コマンドさえ把握していれば簡単だと思います。

上にも書きましたが、注意すべき点は半角スペースが必要なコマンドがあることと、
シングルクォーテーションが必要になるコマンドですね。

またDPI515自体が古い機種ということもあり、送受信時はやや多めにWaitを入れています。
ここが短いと通信エラーが発生しやすかった記憶があります。

以上が簡単ですがDruck DPI515でのシリアル通信コマンド、及びサンプルコードでした。
新型のPACEシリーズでも確か言語をSCPI設定にすれば、ほぼ同じコマンドでシリアル通信
出来ますが・・・USB使えますからVISACOMで組んで通信した方が安定快適快速ですよ。

今回ご紹介した内容が何かお役に立てれば幸いです。

Ryo

スポンサーリンク
スポンサーリンク

楽天トラベル

シェアする

フォローする

スポンサーリンク

楽天トラベル