rmodbus 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 81e104f4823d31c4054dcd5b0aba2daf6b4436fa
4
- data.tar.gz: af007cd327a5a3fb9f7e6772bc4e7a8be70eeedb
3
+ metadata.gz: 527837e39897ba74bd43ca15325a17e931fea9a8
4
+ data.tar.gz: e244ecaa6b7ae3d0c2a80798ad4f799f58458a30
5
5
  SHA512:
6
- metadata.gz: d8014693cac52f75394dd88b3ffd5edff75961829878ec2b2b1cbabe9b4db9528b925da17ff3c5c89024addc0029ba03a95aa89a116fb3f36cb03526709a2d07
7
- data.tar.gz: 17eaaed42bb65f5c879dfec586dacc2f967aaaee5e4e3d1dcd6c191fb426f14badd6a03bbc5a1d23a0f3015a869de1db7d630d4c189e611830597b4f0c29395a
6
+ metadata.gz: 127f4c8fa6f2958425a750f144d70223747dc1b058a1e7954bad9bf1d1a15d8378e592c9f017f38807fbf66683790274a3e0fe9f782ee31a00634a48c95fa3d7
7
+ data.tar.gz: 54a418c81c178a32890040396f2658fc123d561cfd4821044b3f75168bf254c50a8bf32d388b78f12ac614f0192022dc108040ff55e183363b1d0e8d0d8863cc
data/README.md CHANGED
@@ -88,14 +88,28 @@ Given a version number MAJOR.MINOR.PATCH, increment the:
88
88
  MAJOR version when you make incompatible API changes,
89
89
  MINOR version when you add functionality in a backwards-compatible manner, and
90
90
  PATCH version when you make backwards-compatible bug fixes.
91
- Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
92
91
  ```
93
92
 
94
- Reference
93
+ Contributing
95
94
  ----------------------------------
96
95
 
97
- Home page: http://rmodbus.flipback.net
96
+ See [CONTRIBUTING](CONTRIBUTING.md).
97
+
98
+ Reference
99
+ ----------------------------------
98
100
 
99
101
  RModBus on GitHub: http://github.com/rmodbus/rmodbus
100
102
 
103
+ Documentation: http://www.rubydoc.info/github/rmodbus/rmodbus
104
+
101
105
  ModBus specifications: http://www.modbus.org/specs.php
106
+
107
+ License
108
+ ----------------------------------
109
+
110
+ BSD-3-Clause
111
+
112
+ Credits
113
+ ----------------------------------
114
+
115
+ Aleksey Timin - original author
data/lib/rmodbus.rb CHANGED
@@ -1,15 +1,3 @@
1
- # RModBus - free implementation of ModBus protocol on Ruby.
2
- # Copyright (C) 2008 - 2011 Timin Aleksey
3
- # This program is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # This program is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
-
13
1
  require 'rmodbus/ext'
14
2
  require 'rmodbus/proxy'
15
3
  require 'rmodbus/version'
@@ -1,17 +1,3 @@
1
- # RModBus - free implementation of ModBus protocol on Ruby.
2
- #
3
- # Copyright (C) 2008-2011 Timin Aleksey
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
-
15
1
  module ModBus
16
2
  # @abstract
17
3
  class Client
@@ -28,7 +14,7 @@ module ModBus
28
14
  # @yield return client object and close it before exit
29
15
  # @return [Client] client object
30
16
  def initialize(*args, &block)
31
- # Defaults
17
+ # Defaults
32
18
  @debug = false
33
19
  @raise_exception_on_mismatch = false
34
20
  @read_retry_timeout = 1
data/lib/rmodbus/debug.rb CHANGED
@@ -1,22 +1,7 @@
1
- # RModBus - free implementation of ModBus protocol in Ruby.
2
- #
3
- # Copyright (C) 2010-2011 Timin Aleksey
4
- # Copyright (C) 2010 Kelley Reynolds
5
- #
6
- # This program is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # This program is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
-
16
1
  module ModBus
17
2
  module Debug
18
- attr_accessor :debug, :raise_exception_on_mismatch,
19
- :read_retries, :read_retry_timeout
3
+ attr_accessor :debug, :raise_exception_on_mismatch,
4
+ :read_retries, :read_retry_timeout
20
5
 
21
6
 
22
7
  private
@@ -45,4 +30,3 @@ module ModBus
45
30
  end
46
31
  end
47
32
  end
48
-
@@ -1,56 +1,42 @@
1
- # RModBus - free implementation of ModBus protocol on Ruby.
2
- #
3
- # Copyright (C) 2008-2011 Timin Aleksey
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
- module ModBus
15
-
16
- module Errors
17
- class ProxyException < StandardError
18
- end
19
-
20
- class ModBusException < StandardError
21
- end
22
-
23
- class IllegalFunction < ModBusException
24
- end
25
-
26
- class IllegalDataAddress < ModBusException
27
- end
28
-
29
- class IllegalDataValue < ModBusException
30
- end
31
-
32
- class SlaveDeviceFailure < ModBusException
33
- end
34
-
35
- class Acknowledge < ModBusException
36
- end
37
-
38
- class SlaveDeviceBus < ModBusException
39
- end
40
-
41
- class MemoryParityError < ModBusException
42
- end
43
-
44
- class ModBusTimeout < ModBusException
45
- end
46
-
1
+ module ModBus
2
+ module Errors
3
+ class ProxyException < StandardError
4
+ end
5
+
6
+ class ModBusException < StandardError
7
+ end
8
+
9
+ class IllegalFunction < ModBusException
10
+ end
11
+
12
+ class IllegalDataAddress < ModBusException
13
+ end
14
+
15
+ class IllegalDataValue < ModBusException
16
+ end
17
+
18
+ class SlaveDeviceFailure < ModBusException
19
+ end
20
+
21
+ class Acknowledge < ModBusException
22
+ end
23
+
24
+ class SlaveDeviceBus < ModBusException
25
+ end
26
+
27
+ class MemoryParityError < ModBusException
28
+ end
29
+
30
+ class ModBusTimeout < ModBusException
31
+ end
32
+
47
33
  class ResponseMismatch < ModBusException
48
34
  attr_reader :request, :response
49
- def initialize(msg, request, response)
35
+ def initialize(msg, request, response)
50
36
  super(msg)
51
37
  @request = request
52
38
  @response = response
53
- end
54
- end
55
- end
56
- end
39
+ end
40
+ end
41
+ end
42
+ end
data/lib/rmodbus/ext.rb CHANGED
@@ -1,94 +1,79 @@
1
- # RModBus - free implementation of ModBus protocol on Ruby.
2
- #
3
- # Copyright (C) 2009 Timin Aleksey
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
-
15
- class String
16
-
17
- if RUBY_VERSION < "1.9"
18
- def getbyte(index)
19
- self[index].to_i
20
- end
21
- end
22
-
23
- def unpack_bits
24
- array_bit = []
25
- self.unpack('b*')[0].each_char do |c|
26
- array_bit << c.to_i
27
- end
28
- array_bit
29
- end
30
-
31
- # Get word by index
32
- # @param [Integer] i index first bytes of word
33
- # @return unpacked word
34
- def getword(i)
35
- self[i,2].unpack('n')[0]
36
- end
37
- end
38
-
39
- class Integer
40
-
41
- # Shortcut or turning an integer into a word
42
- def to_word
43
- [self].pack('n')
44
- end
45
-
46
- end
47
-
48
- class Array
49
-
50
- # Given an array of 16bit Fixnum, we turn it into 32bit Int in big-endian order, halving the size
51
- def to_32f
52
- raise "Array requires an even number of elements to pack to 32bits: was #{self.size}" unless self.size.even?
53
- self.each_slice(2).map { |(lsb, msb)| [msb, lsb].pack('n*').unpack('g')[0] }
54
- end
55
-
56
- # Given an array of 32bit Floats, we turn it into an array of 16bit Fixnums, doubling the size
57
- def from_32f
58
- self.pack('g*').unpack('n*').each_slice(2).map { |arr| arr.reverse }.flatten
59
- end
60
-
61
- # Given an array of 16bit Fixnum, we turn it into 32bit Float in big-endian order, halving the size
62
- def to_32i
63
- raise "Array requires an even number of elements to pack to 32bits: was #{self.size}" unless self.size.even?
64
- self.each_slice(2).map { |(lsb, msb)| [msb, lsb].pack('n*').unpack('N')[0] }
65
- end
66
-
67
- # Given an array of 32bit Fixnum, we turn it into an array of 16bit fixnums, doubling the size
68
- def from_32i
69
- self.pack('N*').unpack('n*').each_slice(2).map { |arr| arr.reverse }.flatten
70
- end
71
-
72
- def pack_to_word
73
- word = 0
74
- s = ""
75
- mask = 0x01
76
-
77
- self.each do |bit|
78
- word |= mask if bit > 0
79
- mask <<= 1
80
- if mask == 0x100
81
- mask = 0x01
82
- s << word.chr
83
- word = 0
84
- end
85
- end
86
- unless mask == 0x01
87
- s << word.chr
88
- else
89
- s
90
- end
91
- end
92
-
93
- end
94
-
1
+ class String
2
+
3
+ if RUBY_VERSION < "1.9"
4
+ def getbyte(index)
5
+ self[index].to_i
6
+ end
7
+ end
8
+
9
+ def unpack_bits
10
+ array_bit = []
11
+ self.unpack('b*')[0].each_char do |c|
12
+ array_bit << c.to_i
13
+ end
14
+ array_bit
15
+ end
16
+
17
+ # Get word by index
18
+ # @param [Integer] i index first bytes of word
19
+ # @return unpacked word
20
+ def getword(i)
21
+ self[i,2].unpack('n')[0]
22
+ end
23
+ end
24
+
25
+ class Integer
26
+
27
+ # Shortcut or turning an integer into a word
28
+ def to_word
29
+ [self].pack('n')
30
+ end
31
+
32
+ end
33
+
34
+ class Array
35
+
36
+ # Given an array of 16bit Fixnum, we turn it into 32bit Int in big-endian order, halving the size
37
+ def to_32f
38
+ raise "Array requires an even number of elements to pack to 32bits: was #{self.size}" unless self.size.even?
39
+ self.each_slice(2).map { |(lsb, msb)| [msb, lsb].pack('n*').unpack('g')[0] }
40
+ end
41
+
42
+ # Given an array of 32bit Floats, we turn it into an array of 16bit Fixnums, doubling the size
43
+ def from_32f
44
+ self.pack('g*').unpack('n*').each_slice(2).map { |arr| arr.reverse }.flatten
45
+ end
46
+
47
+ # Given an array of 16bit Fixnum, we turn it into 32bit Float in big-endian order, halving the size
48
+ def to_32i
49
+ raise "Array requires an even number of elements to pack to 32bits: was #{self.size}" unless self.size.even?
50
+ self.each_slice(2).map { |(lsb, msb)| [msb, lsb].pack('n*').unpack('N')[0] }
51
+ end
52
+
53
+ # Given an array of 32bit Fixnum, we turn it into an array of 16bit fixnums, doubling the size
54
+ def from_32i
55
+ self.pack('N*').unpack('n*').each_slice(2).map { |arr| arr.reverse }.flatten
56
+ end
57
+
58
+ def pack_to_word
59
+ word = 0
60
+ s = ""
61
+ mask = 0x01
62
+
63
+ self.each do |bit|
64
+ word |= mask if bit > 0
65
+ mask <<= 1
66
+ if mask == 0x100
67
+ mask = 0x01
68
+ s << word.chr
69
+ word = 0
70
+ end
71
+ end
72
+ unless mask == 0x01
73
+ s << word.chr
74
+ else
75
+ s
76
+ end
77
+ end
78
+
79
+ end
@@ -1,21 +1,6 @@
1
- # RModBus - free implementation of ModBus protocol in Ruby.
2
- #
3
- # Copyright (C) 2011 Timin Aleksey
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
-
15
1
  module ModBus
16
2
  module Options
17
- attr_accessor :raise_exception_on_mismatch,
18
- :read_retries, :read_retry_timeout
3
+ attr_accessor :raise_exception_on_mismatch,
4
+ :read_retries, :read_retry_timeout
19
5
  end
20
6
  end
21
-
data/lib/rmodbus/proxy.rb CHANGED
@@ -1,16 +1,3 @@
1
- # ReadOnly and ReadWrite hash interface for modbus registers and coils
2
- #
3
- # Copyright (C) 2010 Kelley Reynolds
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
1
  module ModBus
15
2
  # Given a slave and a type of operation, execute a single or multiple read using hash syntax
16
3
  class ReadOnlyProxy
@@ -31,7 +18,7 @@ module ModBus
31
18
  end
32
19
  end
33
20
  end
34
-
21
+
35
22
  class ReadWriteProxy < ReadOnlyProxy
36
23
  # Write single or multiple values to a modbus slave depending on whether a Fixnum or a Range was given.
37
24
  # Note that in the case of multiples, a pluralized version of the method is sent to the slave. Also when
@@ -51,4 +38,4 @@ module ModBus
51
38
  end
52
39
  end
53
40
 
54
- end
41
+ end
data/lib/rmodbus/rtu.rb CHANGED
@@ -1,18 +1,3 @@
1
- # RModBus - free implementation of ModBus protocol in Ruby.
2
- #
3
- # Copyright (C) 2010 - 2011 Timin Aleksey
4
- # Copyright (C) 2010 Kelley Reynolds
5
- #
6
- # This program is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # This program is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
-
16
1
  module ModBus
17
2
  module RTU
18
3
  private
@@ -47,7 +32,7 @@ module ModBus
47
32
  def clean_input_buff
48
33
  # empty the input buffer
49
34
  if @io.class.public_method_defined? :flush_input
50
- @io.flush_input
35
+ @io.flush_input
51
36
  else
52
37
  @io.flush
53
38
  end
@@ -56,8 +41,8 @@ module ModBus
56
41
  def send_rtu_pdu(pdu)
57
42
  msg = @uid.chr + pdu
58
43
  msg << crc16(msg).to_word
59
-
60
- clean_input_buff
44
+
45
+ clean_input_buff
61
46
  @io.write msg
62
47
 
63
48
  log "Tx (#{msg.size} bytes): " + logging_bytes(msg)
@@ -177,4 +162,3 @@ module ModBus
177
162
 
178
163
  end
179
164
  end
180
-
@@ -1,16 +1,3 @@
1
- # RModBus - free implementation of ModBus protocol in Ruby.
2
- #
3
- # Copyright (C) 2009-2011 Timin Aleksey
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
1
  module ModBus
15
2
  # RTU client implementation
16
3
  # @example
@@ -1,17 +1,3 @@
1
- # RModBus - free implementation of ModBus protocol in Ruby.
2
- #
3
- # Copyright (C) 2010-2011 Timin Aleksey
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
- #
15
1
  module ModBus
16
2
  # RTU server implementation
17
3
  # @example
@@ -1,16 +1,3 @@
1
- # RModBus - free implementation of ModBus protocol in Ruby.
2
- #
3
- # Copyright (C) 2011 Timin Aleksey
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
1
  module ModBus
15
2
  # RTU slave implementation
16
3
  # @example
@@ -1,17 +1,3 @@
1
- # RModBus - free implementation of ModBus protocol in Ruby.
2
- #
3
- # Copyright (C) 2009-2011 Timin Aleksey
4
- # Copyright (C) 2010 Kelley Reynolds
5
- #
6
- # This program is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # This program is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
1
  module ModBus
16
2
  # RTU over TCP client implementation
17
3
  # @example
@@ -1,19 +1,8 @@
1
- # RModBus - free implementation of ModBus protocol in Ruby.
2
- #
3
- # Copyright (C) 2010 Timin Aleksey
4
- # Copyright (C) 2010 Kelley Reynolds
5
- #
6
- # This program is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # This program is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
-
16
- require 'gserver'
1
+ begin
2
+ require 'gserver'
3
+ rescue
4
+ warn "[WARNING] Install `gserver` gem for use RTUViaTCPServer"
5
+ end
17
6
 
18
7
  module ModBus
19
8
  # RTU over TCP server implementation
@@ -33,14 +22,14 @@ module ModBus
33
22
  # Init server
34
23
  # @param [Integer] port listen port
35
24
  # @param [Integer] uid slave device
36
- # @param [Hash] opts options of server
25
+ # @param [Hash] opts options of server
37
26
  # @option opts [String] :host host of server default '127.0.0.1'
38
27
  # @option opts [Float, Integer] :max_connection max of TCP connection with server default 4
39
- def initialize(port = 10002, uid = 1, opts = {})
40
- @uid = uid
41
- opts[:host] = DEFAULT_HOST unless opts[:host]
42
- opts[:max_connection] = 4 unless opts[:max_connection]
43
- super(port, host = opts[:host], maxConnection = opts[:max_connection])
28
+ def initialize(port = 10002, uid = 1, opts = {})
29
+ @uid = uid
30
+ opts[:host] = DEFAULT_HOST unless opts[:host]
31
+ opts[:max_connection] = 4 unless opts[:max_connection]
32
+ super(port, host = opts[:host], maxConnection = opts[:max_connection])
44
33
  end
45
34
 
46
35
  protected
@@ -1,16 +1,3 @@
1
- # RModBus - free implementation of ModBus protocol in Ruby.
2
- #
3
- # Copyright (C) 2011 Timin Aleksey
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
1
  module ModBus
15
2
  # RTU over TCP slave implementation
16
3
  # @example
@@ -1,18 +1,3 @@
1
- # RModBus - free implementation of ModBus protocol in Ruby.
2
- #
3
- # Copyright (C) 2010 Timin Aleksey
4
- # Copyright (C) 2010 Kelley Reynolds
5
- #
6
- # This program is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # This program is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
-
16
1
  module ModBus
17
2
  # Module for implementation ModBus server
18
3
  module Server
data/lib/rmodbus/slave.rb CHANGED
@@ -1,18 +1,3 @@
1
- # RModBus - free implementation of ModBus protocol on Ruby.
2
- #
3
- # Copyright (C) 2008-2011 Timin Aleksey
4
- # Copyright (C) 2010 Kelley Reynolds
5
- #
6
- # This program is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # This program is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
-
16
1
  module ModBus
17
2
  class Slave
18
3
  include Errors
data/lib/rmodbus/sp.rb CHANGED
@@ -1,17 +1,3 @@
1
- # RModBus - free implementation of ModBus protocol in Ruby.
2
- #
3
- # Copyright (C) 2011 Timin Aleksey
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
-
15
1
  begin
16
2
  require 'serialport'
17
3
  rescue Exception => e
data/lib/rmodbus/tcp.rb CHANGED
@@ -1,16 +1,3 @@
1
- # RModBus - free implementation of ModBus protocol on Ruby.
2
- #
3
- # Copyright (C) 2011 Timin Aleksey
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
1
  require 'socket'
15
2
  require 'timeout'
16
3
 
@@ -45,4 +32,4 @@ module ModBus
45
32
  io
46
33
  end
47
34
  end
48
- end
35
+ end
@@ -1,16 +1,3 @@
1
- # RModBus - free implementation of ModBus protocol on Ruby.
2
- #
3
- # Copyright (C) 2008-2011 Timin Aleksey
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
1
  module ModBus
15
2
  # TCP client implementation
16
3
  # @example
@@ -1,17 +1,8 @@
1
- # RModBus - free implementation of ModBus protocol on Ruby.
2
- #
3
- # Copyright (C) 2008-2011 Timin Aleksey
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
- require 'gserver'
1
+ begin
2
+ require 'gserver'
3
+ rescue
4
+ warn "[WARNING] Install `gserver` gem for use TCPServer"
5
+ end
15
6
 
16
7
  module ModBus
17
8
  # TCP server implementation
@@ -1,16 +1,3 @@
1
- # RModBus - free implementation of ModBus protocol on Ruby.
2
- #
3
- # Copyright (C) 2011 Timin Aleksey
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
1
  module ModBus
15
2
  # TCP slave implementation
16
3
  # @example
@@ -47,7 +34,7 @@ module ModBus
47
34
  # overide method for RTU over TCP implamentaion
48
35
  # @see Slave#query
49
36
  def read_pdu
50
- loop do
37
+ loop do
51
38
  header = @io.read(7)
52
39
  if header
53
40
  trn = header[0,2].unpack('n')[0]
@@ -55,11 +42,11 @@ module ModBus
55
42
  msg = @io.read(len-1)
56
43
 
57
44
  log "Rx (#{(header + msg).size} bytes): " + logging_bytes(header + msg)
58
-
45
+
59
46
  if trn == @transaction
60
47
  return msg
61
48
  else
62
- log "Transaction number mismatch. A packet is ignored."
49
+ log "Transaction number mismatch. A packet is ignored."
63
50
  end
64
51
  end
65
52
  end
@@ -1,17 +1,4 @@
1
- # RModBus - free implementation of ModBus protocol on Ruby.
2
- #
3
- # Copyright (C) 2012-2015 Timin Aleksey
4
- #
5
- # This program is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License as published by
7
- # the Free Software Foundation, either version 3 of the License, or
8
- # (at your option) any later version.
9
- #
10
- # This program is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU General Public License for more details.
14
1
  module ModBus
15
2
  # Package version
16
- VERSION = '1.3.0'
3
+ VERSION = '1.3.1'
17
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rmodbus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
- - A.Timin, J. Sanders, K. Reynolds
7
+ - A.Timin, J. Sanders, K. Reynolds, F. Luizão
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-18 00:00:00.000000000 Z
11
+ date: 2016-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -84,30 +84,30 @@ dependencies:
84
84
  name: serialport
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '1.3'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '1.3'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: gserver
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: '0.0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: '0.0'
111
111
  description:
112
112
  email: atimin@gmail.com
113
113
  executables: []
@@ -162,9 +162,9 @@ files:
162
162
  - spec/spec_helper.rb
163
163
  - spec/tcp_client_spec.rb
164
164
  - spec/tcp_server_spec.rb
165
- homepage: http://rmodbus.flipback.net
165
+ homepage: http://www.rubydoc.info/github/rmodbus/rmodbus
166
166
  licenses:
167
- - GPL v2.0
167
+ - BSD-3-Clause
168
168
  metadata: {}
169
169
  post_install_message:
170
170
  rdoc_options: