 
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
   参考)
履歴