mirror of https://github.com/Nonannet/pyhoff.git
Test added for checking sended bytes against known good traces for BK9XXX.
This commit is contained in:
parent
cf03c995db
commit
9fae319a62
|
@ -0,0 +1,66 @@
|
|||
import pyhoff as pyhoff
|
||||
from typing import Type
|
||||
from pyhoff.devices import KL2404, KL2424, KL9100, KL1104, \
|
||||
KL9188, KL3054, KL3214, KL4004, KL9010, BK9050
|
||||
|
||||
|
||||
def test_against_old_traces():
|
||||
"""
|
||||
Test modbus tcp byte streams against data from an old
|
||||
known good implementation for some Beckhoff terminals.
|
||||
"""
|
||||
|
||||
debug_data: list[str] = list()
|
||||
|
||||
# dummy modbus send function
|
||||
def debug_send_dummy(data: bytes) -> int:
|
||||
print(f'-> Send: {' '.join(hex(b) for b in data)}')
|
||||
for b in data:
|
||||
debug_data.append(f"{b:02X}")
|
||||
return len(data)
|
||||
|
||||
terminals_list: list[Type[pyhoff.BusTerminal]] = [KL2404, KL2424, KL2424, KL2424, KL9100, KL1104,
|
||||
KL1104, KL2404, KL9188, KL3054, KL3054, KL3214,
|
||||
KL3214, KL3214, KL4004, KL4004, KL9010]
|
||||
|
||||
bk = BK9050("localhost", 11255, timeout=0.001)
|
||||
|
||||
# injecting debug function
|
||||
bk.modbus._send = debug_send_dummy # type: ignore
|
||||
|
||||
bts = bk.add_bus_terminals(terminals_list)
|
||||
|
||||
terminal1 = bts[15]
|
||||
assert isinstance(terminal1, KL4004)
|
||||
ref_data = ['86', 'E2', '00', '00', '00', '06', '01', '06', '08', '35', '71', 'A9']
|
||||
debug_data.clear()
|
||||
terminal1.set_voltage(3, 8.88)
|
||||
assert debug_data[2:] == ref_data[2:], print('test:' + ' '.join(debug_data) + '\nref: ' + ' '.join(ref_data) + '\n')
|
||||
|
||||
terminal2 = bts[13]
|
||||
assert isinstance(terminal2, KL3214)
|
||||
ref_data = ['8B', '18', '00', '00', '00', '06', '01', '04', '00', '25', '00', '01']
|
||||
debug_data.clear()
|
||||
terminal2.read_temperature(3)
|
||||
assert debug_data[2:] == ref_data[2:], print('test:' + ' '.join(debug_data) + '\nref: ' + ' '.join(ref_data) + '\n')
|
||||
|
||||
ref_data = ['08', 'F8', '00', '00', '00', '06', '01', '04', '00', '27', '00', '01']
|
||||
debug_data.clear()
|
||||
terminal2.read_temperature(4)
|
||||
assert debug_data[2:] == ref_data[2:], print('test:' + ' '.join(debug_data) + '\nref: ' + ' '.join(ref_data) + '\n')
|
||||
|
||||
terminal3 = bts[7]
|
||||
assert isinstance(terminal3, KL2404)
|
||||
ref_data = ['80', '8F', '00', '00', '00', '06', '01', '05', '00', '12', 'FF', '00']
|
||||
debug_data.clear()
|
||||
terminal3.write_coil(3, True)
|
||||
assert debug_data[2:] == ref_data[2:], print('test:' + ' '.join(debug_data) + '\nref: ' + ' '.join(ref_data) + '\n')
|
||||
|
||||
ref_data = ['23', '96', '00', '00', '00', '06', '01', '01', '00', '13', '00', '01']
|
||||
debug_data.clear()
|
||||
terminal3.read_coil(4)
|
||||
assert debug_data[2:] == ref_data[2:], print('test:' + ' '.join(debug_data) + '\nref: ' + ' '.join(ref_data) + '\n')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
test_against_old_traces()
|
Loading…
Reference in New Issue