Python modbus_tk官方slave例子使用方法

 

看懂官方的例子和实际操作一遍后,就可以很快使用python的modbus了。当然还有其他各种例子,可以参考!

https://github.com/ljean/modbus-tk/blob/master/examples/tcpslave_example.py

Python modbus_tk官方slave例子使用方法_第1张图片 标题

1.set_values 1 0 1 2 3 6 12解释

第一个参数1是从站的号,第二个参数0是从站的块序号,第三个参数1是开始的地址,

后面的参数2 3 6 12是从地址1开始写,有几个参数写几个地址,依次后排

2.get_values 1 0 1 4解释:

第一个参数1是从站的号,第二个参数0是从站的块序号,第三个参数1是开始的地址,

后面的参数4是从开始地址往后数4个进行读取。

可以连接一个实际的从站,也可以连接一个调试助手的从站,运行结果如下:

 

Python modbus_tk官方slave例子使用方法_第2张图片 标题

 

import sys

import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_tcp


def main():
    """main"""

    logger = modbus_tk.utils.create_logger(name="console", record_format="%(message)s")

    try:
        #Create the server
        server = modbus_tcp.TcpServer()
        logger.info("running...")
        logger.info("enter 'quit' for closing the server")

        server.start()

        slave_1 = server.add_slave(1)
        slave_1.add_block('0', cst.HOLDING_REGISTERS, 0, 100)

        while True:
            cmd = sys.stdin.readline()
            args = cmd.split(' ')

            if cmd.find('quit') == 0:
                sys.stdout.write('bye-bye\r\n')
                break

            elif args[0] == 'add_slave':
                slave_id = int(args[1])
                server.add_slave(slave_id)
                sys.stdout.write('done: slave %d added\r\n' % slave_id)

            elif args[0] == 'add_block':
                slave_id = int(args[1])
                name = args[2]
                block_type = int(args[3])
                starting_address = int(args[4])
                length = int(args[5])
                slave = server.get_slave(slave_id)
                slave.add_block(name, block_type, starting_address, length)
                sys.stdout.write('done: block %s added\r\n' % name)

            elif args[0] == 'set_values':
                slave_id = int(args[1])
                name = args[2]
                address = int(args[3])
                values = []
                for val in args[4:]:
                    values.append(int(val))
                slave = server.get_slave(slave_id)
                slave.set_values(name, address, values)
                values = slave.get_values(name, address, len(values))
                sys.stdout.write('done: values written: %s\r\n' % str(values))

            elif args[0] == 'get_values':
                slave_id = int(args[1])
                name = args[2]
                address = int(args[3])
                length = int(args[4])
                slave = server.get_slave(slave_id)
                values = slave.get_values(name, address, length)
                sys.stdout.write('done: values read: %s\r\n' % str(values))

            else:
                sys.stdout.write("unknown command %s\r\n" % args[0])
    finally:
        server.stop()


if __name__ == "__main__":
    main()

 

 

你可能感兴趣的:(Python modbus_tk官方slave例子使用方法)