Skip to content

Commit a0ccf3c

Browse files
committed
normalize variable timing read intervals
1 parent 00a2e05 commit a0ccf3c

2 files changed

Lines changed: 8 additions & 3 deletions

File tree

classes/protocol_settings.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -764,7 +764,7 @@ def process_row(row):
764764

765765
return registry_map
766766

767-
def calculate_registry_ranges(self, map : list[registry_map_entry], max_register : int, init : bool = False) -> list[tuple]:
767+
def calculate_registry_ranges(self, map : list[registry_map_entry], max_register : int, init : bool = False, timestamp: int = 0) -> list[tuple]:
768768

769769
''' read optimization; calculate which ranges to read'''
770770
max_batch_size = 45 #see manual; says max batch is 45
@@ -778,7 +778,10 @@ def calculate_registry_ranges(self, map : list[registry_map_entry], max_register
778778
start = -max_batch_size
779779
ranges : list[tuple] = []
780780

781-
timestamp_ms = int(time.time() * 1000)
781+
if timestamp > 0:
782+
timestamp_ms = timestamp*1000
783+
else:
784+
timestamp_ms = int(time.time() * 1000)
782785

783786
while (start := start+max_batch_size) <= max_register:
784787

classes/transports/modbus_base.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,9 @@ def read_data(self) -> dict[str, str]:
175175
continue
176176

177177
#calculate ranges dynamically -- for variable read timing
178-
ranges = self.protocolSettings.calculate_registry_ranges(self.protocolSettings.registry_map[registry_type], self.protocolSettings.registry_map_size[registry_type])
178+
ranges = self.protocolSettings.calculate_registry_ranges(self.protocolSettings.registry_map[registry_type],
179+
self.protocolSettings.registry_map_size[registry_type],
180+
timestamp=self.last_read_time)
179181

180182
registry = self.read_modbus_registers(ranges=ranges, registry_type=registry_type)
181183
new_info = self.protocolSettings.process_registery(registry, self.protocolSettings.get_registry_map(registry_type))

0 commit comments

Comments
 (0)