ehtcp.rbは、(株)日立産機システム製PLCであるH/EHシリーズのRuby用タスクコードイーサネット通信ライブラリです。
動作確認は、ruby 2.2.0p0 (ActiveScriptRuby)で行っています。
ehtcp.rbのダウンロード(ehtcpV101.lzh)
Ethtcpクラス タスクコードイーサネット通信用クラスです。
・応答タスクコード、リターンコードは、(株)日立産機H/EHシリーズマニュアルのタスクコード仕様を参照して下さい
・LUMPアドレスは、"FFFF0000"です。
・読み書きは占有不要のタスクコードを使用しています。
PLCのイーサネット接続先は、IPアドレスを「192.168.1.198」、ポート番号を9001としています。
設定方法の詳細については、H/EHシリーズマニュアルを参照してください。
プログラムは、WR100から10ワード、R10から10ビットの読み込みを行い、「WR100=WR100+1」を行っています。
qキーで終了します。
# coding: utf-8
require './ehtcp'
require './wincons'
wcons = Console.new(__ENCODING__)
ehtcpd = Ethtcp.new
ir = ehtcpd.connect("192.168.1.198",9001)
if ir != 0
print "PLC接続失敗¥r¥n"
exit
end
print "PLC接続¥r¥n"
ehtcpd.cancel
ir,ic = ehtcpd.unlock(0) #占有強制解除
ir,ic,sd = ehtcpd.cpustatus(4) #cpuの名称
print sd + "¥r¥n"
ir,ic,sd = ehtcpd.cpustatus(2) #システムソフトのバージョン
print sd + "¥r¥n"
while true do
ir,ic,sd = ehtcpd.read("WR",0x100,10) # WR100から10ワード読み込み
if ir != 0
print "PLCエラー1 ir=" + ir.to_s + ",ic=" + ic.to_s + "¥r¥n"
break
end
ic = 1
sa = ""
sd.each{|s1|
sa += sprintf("%04X", s1) + ","
}
print sa + "¥r¥n"
iv = sd[0] + 1
ehtcpd.write("WR",0x100,[iv]) # WR100 = WR100 + 1
ir,ic,sd = ehtcpd.read("R",0x10,10) # R10から10ビット読み込み
if ir != 0
print "PLCエラー2 ir=" + ir.to_s + ",ic=" + ic.to_s + "¥r¥n"
break
end
sa = ""
sd.each{|s1|
sa += s1.to_s + ","
}
print sa + "¥r¥n"
ca = wcons.inkey
if ca[0] == "q" || ca[0] == "Q"
break
end
sleep(0.1)
end
ehtcpd.disconnect
print "end¥r¥n"
|
履歴