Skip to content
Snippets Groups Projects
Commit fc56556e authored by Benjamin Koch's avatar Benjamin Koch
Browse files

add modbus-tk example script that we used for testing

parent 54c5fafe
No related branches found
No related tags found
No related merge requests found
#!/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()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment