From fc56556e95920da304663f809cc5301dd239d83a Mon Sep 17 00:00:00 2001 From: Benjamin Koch <bbbsnowball@gmail.com> Date: Mon, 29 May 2023 17:16:21 +0200 Subject: [PATCH] add modbus-tk example script that we used for testing --- firmware/rust1/rtumaster_example.py | 64 +++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 firmware/rust1/rtumaster_example.py diff --git a/firmware/rust1/rtumaster_example.py b/firmware/rust1/rtumaster_example.py new file mode 100644 index 0000000..7c44458 --- /dev/null +++ b/firmware/rust1/rtumaster_example.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python +# -*- coding: utf_8 -*- +""" + Modbus TestKit: Implementation of Modbus protocol in python + + (C)2009 - Luc Jean - luc.jean@gmail.com + (C)2009 - Apidev - http://www.apidev.fr + + This is distributed under GNU LGPL license, see license.txt +""" + +import serial +import time + +import modbus_tk +import modbus_tk.defines as cst +from modbus_tk import modbus_rtu + +PORT = '/dev/ttyUSB0' + +def main(): + """main""" + logger = modbus_tk.utils.create_logger("console") + + try: + #Connect to the slave + master = modbus_rtu.RtuMaster( + serial.Serial(port=PORT, baudrate=19200, bytesize=8, parity='E', stopbits=1, xonxoff=0) + ) + master.set_timeout(0.2) + master.set_verbose(True) + logger.info("connected") + + logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 1, 1)) + + logger.info(master.execute(1, cst.READ_FILE_RECORD, (0, 1, 2), (7, 5, 3), number_file=(0, 0, 0))) + logger.info("Bootloader state partition:") + logger.info(master.execute(1, cst.READ_FILE_RECORD, (int(0x6000/2),), (20,), number_file=(1,))) + + x = 1 + while True: + logger.info(master.execute(1, cst.WRITE_SINGLE_COIL, 0, output_value=x)) + x = 1 - x + logger.info(master.execute(1, cst.READ_DISCRETE_INPUTS, 0, 5)) + #logger.info(master.execute(1, cst.READ_INPUT_REGISTERS, 0, 13)) + #logger.info(master.execute(1, cst.READ_INPUT_REGISTERS, 13, 12)) + logger.info(master.execute(1, cst.READ_INPUT_REGISTERS, 0, 25)) + time.sleep(0.1) + + #send some queries + #logger.info(master.execute(1, cst.READ_COILS, 0, 10)) + #logger.info(master.execute(1, cst.READ_DISCRETE_INPUTS, 0, 8)) + #logger.info(master.execute(1, cst.READ_INPUT_REGISTERS, 100, 3)) + #logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 100, 12)) + #logger.info(master.execute(1, cst.WRITE_SINGLE_COIL, 7, output_value=1)) + #logger.info(master.execute(1, cst.WRITE_SINGLE_REGISTER, 100, output_value=54)) + #logger.info(master.execute(1, cst.WRITE_MULTIPLE_COILS, 0, output_value=[1, 1, 0, 1, 1, 0, 1, 1])) + #logger.info(master.execute(1, cst.WRITE_MULTIPLE_REGISTERS, 100, output_value=xrange(12))) + + except modbus_tk.modbus.ModbusError as exc: + logger.error("%s- Code=%d", exc, exc.get_exception_code()) + +if __name__ == "__main__": + main() -- GitLab