JWCOMライブラリ(jwcom.rb)は、JoyWatcherサーバと通信を行うRuby用ライブラリです。
Joywatcherタグ値の読み込み、書き込みを行います。
使用したrubyのバージョン ruby 2.5.1p57 RubyInstaller 32ビット
使用したJoyWatcherのバージョン 8.4
jwcom.rb(Ver.1.05)のダウンロード(jwcom_V105.7z)
JWComクラス JWCOM用クラスです。
作成例 JWcomd = JWCom.new(__ENCODING__)
引数に文字のエンコーディング「__ENCODING__」を指定します。シフトJIS(magic comment:「Windows-31j」,「shift_jis」)とUTF-8が有効です。
プログラムの文字コードは、UTF-8です。
「wincons.rb」の説明及びダウンロード
JoyWatcherタグ値のIDを取得し、IDに対し読み込み、書き込みを行います。
# coding: utf-8
require "./jwcom"
require "./wincons"
sJwServer = "JWTEST" # jwサーバ名
# 使用するタグ
jwtag = [
"M.M10$VALUE", # 0 M10 ビット瞬時値
"M.M11$VALUE", # 1 M11 〃
"M.M12$VALUE", # 2 M12 〃
"D.D10$VALUE", # 3 D10 数字瞬時値
"D.D11$VALUE", # 4 D11 〃
"D.D12$VALUE", # 5 D12 〃
"CHAR.D50$VALUE", # 6 D50 文字列瞬時値
"M.M10$ALMTYPE", # 7 M10 アラームタイプ
"M.M10$RSTALM", # 8 M10 復旧時にログ書き込み
"M.M10$CMT", # 9 M10 備考名
"D.D10$HI", # 10 D10 大アラーム閾値 HIHI:超大アラーム LO:小アラーム LOLO:超小アラーム
"D.D10$P_A" # 11 D10 工学値変換の比例係数 定数係数の場合は、P_B
]
JWcomd = JWCom.new(__ENCODING__)
cons1 = Console.new(__ENCODING__)
ir = JWcomd.connect
if ir == 0
print "JW 接続エラー¥r¥n"
exit
end
# jwタグ作成
arstag = jwtag.each.map{|sa| sJwServer + "$" + sa }
# タグID取得
artag = JWcomd.gettagid(arstag)
if artag == nil || artag.index(-1) != nil
print "JW タグID取得エラー¥r¥n"
JWcomd.disconnect
exit
end
# タグの値取得
arv = JWcomd.tagread(artag)
p arv
print arv[6] + "¥r¥n" # D50 文字列
# 値の書き込み
artag2 = artag[0..5]
arv2 = [ 1, 0, 1, 100, 220, 340 ] # ビット、数値 M10~M12, D10~D12 書き込む値
JWcomd.tagwrite(artag2, arv2)
JWcomd.tagwritev1(artag[6], "日本12ab") # D50 文字列書き込み
JWcomd.tagwritev1(artag[7], "1") # M10 ONアラームに設定
JWcomd.tagwritev1(artag[8], 1) # M10 アラーム復旧時にログ出力設定
JWcomd.tagwritev1_LS(artag[9], "反応缶H003温度上限異常"); # M10 備考名設定
JWcomd.tagwritev1(artag[10], 1200.0) # D10 大アラーム値設定
JWcomd.tagwritev1(artag[11], 0.5) # D10 工学値変換の比例係数設定
print "qキー入力で終了¥r¥n"
loop do
ca = cons1.inkey
if ca[0] == "q" || ca[0] == "Q"
break
end
sleep 0.01
end
# 切断
JWcomd.disconnect
参考)
履歴