看懂官方的例子和实际操作一遍后,就可以很快使用python的modbus了。当然还有其他各种例子,可以参考!
modbus-tk/tcpslave_example.py at master · ljean/modbus-tk · GitHub

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个进行读取。
可以连接一个实际的从站,也可以连接一个调试助手的从站,运行结果如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59import 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-byern') break elif args[0] == 'add_slave': slave_id = int(args[1]) server.add_slave(slave_id) sys.stdout.write('done: slave %d addedrn' % 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 addedrn' % 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: %srn' % 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: %srn' % str(values)) else: sys.stdout.write("unknown command %srn" % args[0]) finally: server.stop() if __name__ == "__main__": main()
最后
以上就是哭泣羊最近收集整理的关于Python modbus_tk官方slave例子使用方法的全部内容,更多相关Python内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复