phaserunner 0.2.2 → 0.2.3
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 +4 -4
- data/README.md +2 -2
- data/lib/phaserunner/modbus.rb +39 -8
- data/lib/phaserunner/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69d1fcab82cbcf7376f98edd6a0845f2c3b02333
|
4
|
+
data.tar.gz: cdc9c3378edd95be4303cb389263b6d726a5439c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ef9f48828d7fd8925b55bd3498a495574f9b43bddf56741615115fa056463bcc45f70fa31f696dd1c8655623ddc79903d17029f2f6f1eaf1f31f29d0b2c0ae2
|
7
|
+
data.tar.gz: 9d28ca30e219a5db6786ef134c2a0696beb24182b7fecd35ae8591f867d2d4770b4cb805ca22f9e11ae275f2d2786d1a48469d2c421be8343b8aba0e67e3e91e
|
data/README.md
CHANGED
@@ -114,12 +114,12 @@ gem install phaserunner
|
|
114
114
|
|
115
115
|
## Contributing
|
116
116
|
|
117
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/rberger/
|
117
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/rberger/phaserunner.
|
118
118
|
|
119
119
|
|
120
120
|
### Code of Conduct in Contriubing
|
121
121
|
|
122
|
-
This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Code of Conduct](
|
122
|
+
This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Code of Conduct](CODE-OF-CONDUCT.md).
|
123
123
|
|
124
124
|
## Versioning
|
125
125
|
|
data/lib/phaserunner/modbus.rb
CHANGED
@@ -2,6 +2,14 @@ require 'rmodbus'
|
|
2
2
|
require 'json'
|
3
3
|
require 'asi_bod'
|
4
4
|
|
5
|
+
# Add mechanism to convert Integers from modbus into signed integers
|
6
|
+
class Integer
|
7
|
+
def to_signed(bits)
|
8
|
+
mask = (1 << (bits - 1))
|
9
|
+
(self & ~mask) - (self & mask)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
5
13
|
module Phaserunner
|
6
14
|
# Methods for communicating with the Modbus interface to the Phaserunner
|
7
15
|
class Modbus
|
@@ -28,10 +36,7 @@ module Phaserunner
|
|
28
36
|
dictionary_file: default_file_path,
|
29
37
|
loop_count: :forever,
|
30
38
|
quiet: false,
|
31
|
-
register_list: register_list
|
32
|
-
registers_start_address: 258,
|
33
|
-
registers_count: 15,
|
34
|
-
registers_misc: [276, 277, 334]
|
39
|
+
register_list: register_list
|
35
40
|
}
|
36
41
|
|
37
42
|
attr_reader :tty
|
@@ -92,10 +97,36 @@ module Phaserunner
|
|
92
97
|
end
|
93
98
|
end
|
94
99
|
|
100
|
+
def read_scaled_range(start_address, count)
|
101
|
+
data = read_raw_range(start_address, count)
|
102
|
+
data.map.with_index do |val, index|
|
103
|
+
address = index + start_address
|
104
|
+
if dict[address][:type] == "independent"
|
105
|
+
value = val.to_signed(16) / dict[address][:scale]
|
106
|
+
value
|
107
|
+
elsif dict[address][:type].downcase == "bit vector"
|
108
|
+
value = val.to_s(2)
|
109
|
+
else
|
110
|
+
value = val
|
111
|
+
end
|
112
|
+
value
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
95
116
|
def range_address_header(start_address, count)
|
96
117
|
end_address = start_address + count
|
97
118
|
(start_address...end_address).map do |address|
|
98
|
-
|
119
|
+
units = case dict[address][:type].downcase
|
120
|
+
when "bit vector"
|
121
|
+
"Flags"
|
122
|
+
when "enum"
|
123
|
+
"enum"
|
124
|
+
when "dependent"
|
125
|
+
"Unscaled #{dict[address][:units]}"
|
126
|
+
else
|
127
|
+
dict[address][:units]
|
128
|
+
end
|
129
|
+
"#{dict[address][:name]} (#{units})"
|
99
130
|
end
|
100
131
|
end
|
101
132
|
|
@@ -116,8 +147,8 @@ module Phaserunner
|
|
116
147
|
# @return [Array<Integer>] List of the register values in the order requested
|
117
148
|
def bulk_log_data(registers = register_list)
|
118
149
|
registers.map do |reg|
|
119
|
-
|
120
|
-
end
|
150
|
+
read_scaled_range(reg.start, reg.count)
|
151
|
+
end.flatten
|
121
152
|
end
|
122
153
|
|
123
154
|
# Get the headers for the bulk_log data
|
@@ -126,7 +157,7 @@ module Phaserunner
|
|
126
157
|
def bulk_log_header(registers = register_list)
|
127
158
|
registers.map do |reg|
|
128
159
|
range_address_header(reg.start, reg.count)
|
129
|
-
end
|
160
|
+
end.flatten
|
130
161
|
end
|
131
162
|
end
|
132
163
|
end
|
data/lib/phaserunner/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phaserunner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert J. Berger
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gli
|