Согласовать демо логгера УМП с постинтервалом в десять процентов банка
This commit is contained in:
@@ -4,9 +4,9 @@ import math
|
|||||||
from set_devices import ump_logger as codec
|
from set_devices import ump_logger as codec
|
||||||
|
|
||||||
|
|
||||||
def sample(time_ms, period_ms=20):
|
def sample(time_ms, period_ms=20, *, repeat=True):
|
||||||
"""Повторяемый цикл: пуск, разгон 6–16 мА, отключение и спад тока."""
|
"""Повторяемый цикл: пуск, разгон 6–16 мА, отключение и спад тока."""
|
||||||
phase = time_ms % 6000
|
phase = time_ms % 6000 if repeat else time_ms
|
||||||
started = 1000 <= phase < 5000
|
started = 1000 <= phase < 5000
|
||||||
reset = 5000 <= phase < 5300
|
reset = 5000 <= phase < 5300
|
||||||
# Как в прошивке: фронт команды включает выход на 1000 мс.
|
# Как в прошивке: фронт команды включает выход на 1000 мс.
|
||||||
@@ -42,16 +42,16 @@ def sample(time_ms, period_ms=20):
|
|||||||
|
|
||||||
|
|
||||||
def capture(period_ms):
|
def capture(period_ms):
|
||||||
"""Пример архива: до 399 точек предыстории, отключение и 1 с после него."""
|
"""Пример архива: 10% ёмкости банка записывается после отключения."""
|
||||||
before = list(range(5000, -1, -period_ms))[1:400][::-1]
|
post_points = codec.CAPACITY // 10
|
||||||
after = list(range(5000 + period_ms, 6000, period_ms)) + [6000]
|
before = list(range(5000, -1, -period_ms))[1:codec.CAPACITY - post_points][::-1]
|
||||||
available = codec.CAPACITY - len(before) - 1
|
after = [5000 + i * period_ms for i in range(1, post_points + 1)]
|
||||||
truncated = len(after) > available
|
records = [sample(t, period_ms) for t in before + [5000]]
|
||||||
if truncated:
|
for t in after:
|
||||||
after = after[:available - 1] + after[-1:]
|
# Continue the stopped state instead of starting another demo cycle.
|
||||||
records = [sample(t, period_ms) for t in before + [5000] + after]
|
record = sample(t, period_ms, repeat=False)
|
||||||
# Последний снимок относится к концу постинтервала, а не новому циклу.
|
record['event'] = 1
|
||||||
records[-1]['event'] = 5 | (0x200 if truncated else 0)
|
record['off_trigger'] = 0
|
||||||
records[-1]['post_truncated'] = int(truncated)
|
records.append(record)
|
||||||
records[-1]['off_trigger'] = 0
|
records[-1]['event'] = 5
|
||||||
return records
|
return records
|
||||||
|
|||||||
Reference in New Issue
Block a user