テクセル
Ruby用JWCOMライブラリ(Windows用)

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用クラスです。

アクセサ

iuserid
ユーザ番号 0:ゲスト、1:一般ユーザ、2:専門家、3:管理者 (初期値は、0:ゲスト)
spassword
パスワード (初期値は、なし:nil)

クラスメソッド

connect
JoyWatcher のネットワークミドルウエアに接続します。
戻り値
正常時:0以外の値 、接続失敗時:0
disconnect
JoyWatcher のネットワークミドルウエアとの接続を切断します。
戻り値
ありません。
gettagid(arstag)
タグ名よりタグID値を取得します。(複数)
arstag
タグ名の配列。使用するタグ名を配列で指定します。
戻り値
正常時:タグID値の配列 、異常時:nil
タグIDの配列が取得されてもID値が-1の場合は取得失敗です。
gettagid1(sjwtag)
タグ名よりタグID値を取得します。(1タグ)
sjwtag
タグ名。使用するタグ名を指定します。
戻り値
正常時:タグID値 、異常時:nilまたは、-1
tagread(aritag)
指定したタグIDの値を取得します。(複数)
aritag
タグIDの配列。値の取得を行いたいタグIDを配列で指定します。
戻り値
正常時:取得した値の配列 、異常時:空の配列
ビット型:8ビット符号付き整数、文字型:文字列(最大長16バイト)、それ以外:浮動小数点数
tagreadv1(itag)
指定したタグIDの現在値を取得します。(1タグ)
itag
タグID。値の取得を行いたいタグIDを指定します。
戻り値
正常時:取得した値 、異常時:空の配列
取得値の型については、tagread参照
tagwrite(artag,arvalue)
指定したタグIDに値を書き込みます。(複数)
artag
タグIDの配列。書き込みを行いたいタグIDの配列を指定します。
arvalue
書き込み値の配列。書き込みを行いたい書き込み値を配列で指定します。
タグIDと書き込み値を配列artag、arvalueに対でセットします。文字列の場合、最大長は16バイトです。
戻り値
正常時:0 、異常時:0以外の値
tagwritev1(itag, value)
指定したタグIDに値を書き込みます。(1タグ)
itag
書き込みを行いたいタグID
value
書き込み値。文字列の場合、最大長は16バイトです。
戻り値
正常時:0 、異常時:0以外の値
tagwrite_LS(artag, arsvalue)
指定したタグIDに文字列を書き込みます。(複数、文字列用)
artag
タグIDの配列。書き込みを行いたいタグIDの配列を指定します。
arvalue
タグID配列に対応した文字列配列を指定します。
タグIDと書き込み値を配列artag、arvalueに対でセットします。
戻り値
正常時:0 、異常時:0以外の値
tagwritev1_LS(itag, value)
指定したタグIDに文字列を書き込みます。(1タグ、文字列用)
artag
書き込みを行いたいタグID
arvalue
文字列配列
タグIDと書き込み値を配列artag、arvalueに対でセットします。
戻り値
正常時:0 、異常時:0以外の値

インスタンスの作成

作成例 JWcomd = JWCom.new(__ENCODING__)

引数に文字のエンコーディング「__ENCODING__」を指定します。シフトJIS(magic comment:「Windows-31j」,「shift_jis」)とUTF-8が有効です。

使用例

プログラムの文字コードは、UTF-8です。
「wincons.rb」の説明及びダウンロード

・JoyWatcherタグへの読み込み、書き込みの例

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
   

参考)

履歴

2018.03 Ver.1.05 tagread_LS,tagreadv1_LS削除
2017.08 Ver.1.04 tagwrite_LS,tagwritev1_LS,tagread_LS,tagreadv1_LS追加
2017.07 Ver.1.03 書き込み時、整数の場合はDoubleに変換
2015.06 Ver.1.02 utf-8対応
2013.06 Ver.1.01 ruby2.0対応
2012.08 Ver.1.00
参考資料:JoyWatcherサーバ通信ヘルプ、ユーザーズガイド
JoyWatcherは、ジェイティエンジニアリング株式会社の製品です。
Rubyユーティリティ
©2012-2018 TEXCELL CORPORATION
テクセル株式会社