Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

76 lines (54 sloc) 2.394 kb

2011-08-10 Release 1.0.4

  1. Fixed issue #11

2011-07-17 Release 1.0.3

  1. Fixed issue #10
  2. Added new options for TCPServer#new and RTUViaTCPServer#new :host - ip of host server (default 127.0.0.1) :max_connection - maximum (client default 4)

2011-07-1 Release 1.0.2

  1. Fixed issue #9

2011-06-30 Release 1.0.1

  1. Fixed issue #8

2011-06-27 Release 1.0.0

New API for client part of library

Example:

require 'rmodbus'

ModBus::TCPClient.new('127.0.0.1', 8502) do |cl|
  cl.with_slave(1) do |slave|
    # Read a single holding register at address 16
    slave.holding_registers[16]

    # Write a single holding register at address 16
    slave.holding_registers[16] = 123

    # Read holding registers 16 through 20
    slave.holding_registers[16..20]

    # Write holding registers 16 through 20 with some values
    slave.holding_registers[16..20] = [1, 2, 3, 4, 5]
  end
end

for more information see

Conversion to/from 32bit registers

Some modbus devices use two registers to store 32bit values. RModbus provides some helper functions to go back and forth between these two things when reading/writing. The built-in examples assume registers in a particular order but it's trivial to change.

# Reading values in multiple registers (you can read more than 2 and convert them all so long as they are in multiples of 2)
res = slave.holding_registers[0..1]
res.inspect => [20342, 17344]
res.to_32i => [1136676726]
res.to_32f => [384.620788574219]

# Writing 32b values to multiple registers
cl.holding_registers[0..1] = [1136676726].from_32i
cl.holding_registers[0..1] => [20342, 17344]
cl.holding_registers[2..3] = [384.620788574219].from_32f
cl.holding_registers[2..3] => [20342, 17344]

Support JRuby

Now you could use RModBus on JRuby without RTU implementation.

RTU classes requires gem serialport which currently not compatible with JRuby

Jump to Line
Something went wrong with that request. Please try again.