 
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"
 | 
履歴