Module: LMG_Modbus_Client
Overview
This module subtracts 1 from each register address as rmodbus is 1 index based and Liebert is 0 index based.
Instance Method Summary collapse
- #process_test_case(addr, val) ⇒ Object
- #read_coils(addr, ncoils) ⇒ Object
- #read_discrete_inputs(addr, ncoils) ⇒ Object
- #read_holding_registers(addr, nreg) ⇒ Object
- #read_input_registers(addr, nreg) ⇒ Object
- #read_time_register(addr) ⇒ Object
- #write_multiple_coils(addr, val, delay = 1) ⇒ Object
- #write_multiple_registers(addr, val, delay = 1) ⇒ Object
- #write_single_coil(addr, val, delay = 1) ⇒ Object
- #write_single_register(addr, val, delay = 1) ⇒ Object
- #write_time_register(addr, val) ⇒ Object
Instance Method Details
#process_test_case(addr, val) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/LMG_modbus.rb', line 107 def process_test_case(addr,val) register_array = register_type(addr) print "Writing value #{val.to_i} to register #{register_array[0]}..." result = write_single_register(register_array[0].to_i,val.to_i,2) if result.is_a?(Integer) == FALSE then puts "An error occured" return result end result = read_input_registers(register_array[0].to_i,register_array[2].to_i) puts " result of read is #{result}" return result end |
#read_coils(addr, ncoils) ⇒ Object
71 72 73 |
# File 'lib/LMG_modbus.rb', line 71 def read_coils(addr, ncoils) super(addr-1,ncoils) end |
#read_discrete_inputs(addr, ncoils) ⇒ Object
74 75 76 |
# File 'lib/LMG_modbus.rb', line 74 def read_discrete_inputs(addr, ncoils) super(addr-1,ncoils) end |
#read_holding_registers(addr, nreg) ⇒ Object
77 78 79 |
# File 'lib/LMG_modbus.rb', line 77 def read_holding_registers(addr, nreg) super(addr-1,nreg) end |
#read_input_registers(addr, nreg) ⇒ Object
80 81 82 83 84 85 86 |
# File 'lib/LMG_modbus.rb', line 80 def read_input_registers(addr, nreg) begin super(addr-1,nreg) rescue Exception => e e. end end |
#read_time_register(addr) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/LMG_modbus.rb', line 119 def read_time_register(addr) epoch = '' self.read_input_registers(addr,2).each do |reg| val = reg.to_i.to_s(2) while val.size < 16 val = val.insert(0,'0') end epoch << val end puts Time.at(epoch.to_i(2)).getgm end |
#write_multiple_coils(addr, val, delay = 1) ⇒ Object
99 100 101 102 |
# File 'lib/LMG_modbus.rb', line 99 def write_multiple_coils(addr, val, delay=1) super(addr-1,val) sleep(delay) end |
#write_multiple_registers(addr, val, delay = 1) ⇒ Object
103 104 105 106 |
# File 'lib/LMG_modbus.rb', line 103 def write_multiple_registers(addr, val, delay=1) super(addr-1,val) sleep(delay) end |
#write_single_coil(addr, val, delay = 1) ⇒ Object
87 88 89 90 |
# File 'lib/LMG_modbus.rb', line 87 def write_single_coil(addr, val,delay=1) super(addr-1,val) sleep(delay) end |
#write_single_register(addr, val, delay = 1) ⇒ Object
91 92 93 94 95 96 97 98 |
# File 'lib/LMG_modbus.rb', line 91 def write_single_register(addr, val, delay=1) begin super(addr-1,val) sleep(delay) rescue Exception => e e. end end |
#write_time_register(addr, val) ⇒ Object
130 131 132 133 134 135 136 137 |
# File 'lib/LMG_modbus.rb', line 130 def write_time_register(addr,val) time = val.to_i.to_s(2) string_array = time.split(//) #Convert to an array while string_array.size < 32 string_array.unshift(0) ##Pad with leading 0's to make 32 bit end write_multiple_registers(addr, Array[string_array[0..15].join.to_i(2), string_array[16..31].join.to_i(2)]) end |