python modbus轮询程序运行无法实现轮询

问题遇到的现象和发生背景
我在CSDN下载了一个python modbus轮询程序
程序来源链接如下
https://download.csdn.net/download/weixin_42103128/19688993
源文件共12个文件
py:7个
json:3个
gitgnore:1个


轮询程序中分别有如下文件(个人总结)

python-ModBusRTU-master

1.modbus-config.py
2.modbus-live.py
3.modbus-poll.py
4.modbus-run.py
5.modbus-satrt.py
6.modbus-stop.py

7.README.md
.gitignore

8.modbus.json
9.modbus-should-be-running.txt


我进行了如下操作
1.在电脑上用虚拟串口软件虚拟了COM9、COM10两个串口
2.使用虚拟下位机软件Modbus Slave和虚拟上位机软件Modbus Poll连接正常(COM9端口、9600、N、8、1)
3.关掉虚拟上位机软件Modbus Poll,让虚拟下位机软件Modbus Slave继续运行
3.接着运行CSDN下载的python modbus轮询程序中的modbus-config.py,进行了配置(COM9端口、9600、N、8、1),生成了modbus.json文件
4.pycharm中运行了modbus-stop.py,已正常执行
5.pycharm中运行了modbus-start.py,已正常执行
6.pycharm中运行程序的modbus-poll.py文件时出现报错提示“ValueError: Wrong functioncode for broadcast. Given: 3”
7.pycharm中运行了modbus-run.py,已执行,提示
[{'channel': 1, 'type': 'supply'}, {'channel': 2, 'type': 'supply'}]
Wrong com port, or it's not connected
8.pycharm中运行程序的modbus-live.py文件时出现报错提示
values = instrument.read_registers(register['float'],numberOfRegisters=2)
TypeError: read_registers() got an unexpected keyword argument 'numberOfRegisters'

问题相关代码,请勿粘贴截图

import minimalmodbus as minmod
import serial
import os
import json
import datetime

# check for modbus.json

channelsize = 247 #0 to 247 #从机数量
channelrange = range(0,channelsize) #从机范围
regsize = 10 #寄存器最大数量
regrange = range(0,regsize)#寄存器范围
found = []#容器

if not os.path.isfile('./modbus.json'):
    print('No modbus.json found, please create one')#未发现modbus.json文件,则需要先创建该文件
    quit()#退出
mods = json.load(open('./modbus.json')) #实例化mods

for mod in mods: #mods中有变量mod mod数据格式为字典 mod是字典格式,mods是列表,mod在mods内
    for register in regrange:#在寄存器地址范围内找到寄存器地址
        for channel in channelrange:#从机地址范围内找到从机 channel = slaveaddress
            if not channel in found:#如果没找到从机  channel = slaveaddress
                try:
                    instrument = minmod.Instrument(mod['comport'],channel)#字典中索引端口号,从机地址(整数形式) channel = slaveaddress
                except serial.SerialException:#串口相关异常的基类
                    print("Wrong com port, or it's not connected")#端口号错误,或未连接
                    quit()
        
                instrument.serial.baudrate = mod['baudrate']#波特率
                instrument.serial.bytesize = mod['bytesize']#数据位
                instrument.serial.stopbits = mod['stopbits']#停止位
                instrument.serial.timeout  = mod['timeout']#超时时间

                if mod['parity'] == "O":
                    instrument.serial.parity = serial.PARITY_ODD

                if mod['parity'] == "E":
                    instrument.serial.parity = serial.PARITY_EVEN

                if mod['parity'] == "N":
                    instrument.serial.parity = serial.PARITY_NONE#下位机.串口.校验 = 串口.校验.无校验

                try:
                    # instrument.read_register(2,0,[3,4][0],False)#下位机.读_保持寄存器(整数型_寄存器的起始地址,整数型_小数位数,整数型_功能码,布尔型_有符号的)
                    instrument.read_register(register)#下位机.读_保持寄存器(整数型_寄存器的起始地址,整数型_小数位数,整数型_功能码,布尔型_有符号的)
                except IOError as e:#抛出异常(变量e)
                    print(e)#输出(变量e)
                    print(("Nothing on channel {} at register {}").format(channel,register))#在寄存器{}的通道{}上没有任何内容
                    print(found)#输出容器内的元素
                else:
                    found.append(channel)#fond容器内加入 channel = slaveaddress
                    print(found)#找到的下位机

运行结果及报错内容
C:\Python38\python.exe E:/python_file_song/exercise/python_file_20220326/Python-ModBusRTU-master/modbus-poll.py
Traceback (most recent call last):
File "E:/python_file_song/exercise/python_file_20220326/Python-ModBusRTU-master/modbus-poll.py", line 51, in
instrument.read_register(register)#下位机.读_保持寄存器(整数型_寄存器的起始地址,整数型_小数位数,整数型_功能码,布尔型_有符号的)
File "C:\Python38\lib\site-packages\minimalmodbus.py", line 487, in read_register
returnvalue = self._generic_command(
File "C:\Python38\lib\site-packages\minimalmodbus.py", line 1082, in _generic_command
raise ValueError(
ValueError: Wrong functioncode for broadcast. Given: 3

Process finished with exit code 1
我的解答思路和尝试过的方法
我尝试过研究所下载的程序保中的README.md
.md文件的内容翻译如下:


CSDN中的说明文档:
不太重要的注意:这些说明是为不使用github的人编写的

##重要提示:

注意:进行维护/重新配置时,运行“modbus停止.py”
您可以在文件夹视图中双击此项。
注2:完成维护或配置后,运行“modbus启动.py”
这样就可以进行数据收集

##安装说明

安装:
-Python 3(https://www.python.org/downloads) 版本应该是Python3
X.X(安装在第一台机器上的是3.4.2

-Pip
安装程序(http://pypi.python.org/pypi/pip
用于安装(Modbus)
-最低Modbus(见https://pypi.python.org/pypi/MinimalModbus/0.6%E9%80%9A%E5%B8%B8%E5%9C%B0pip%E5%AE%89%E8%A3%85-U%EF%BC%88Modbus

安装之后,将此自述文件所在的“ModBus”目录复制到新计算机中

配置脚本:
-转到命令行并将cd放入“ModBus”目录
-运行:python modbus配置.py
-检查选项,根据需要设置参数
-如果您不确定传感器处于哪个通道上,请尽最大努力设置一个通道,然后
-完成配置后,运行:python modbus-poll.py
-假设没有错误,可用的频道号将显示在括号[]中,例如[1,2]
-了解通道后重新配置
检查脚本:
-在“ModBus”目录中时,运行python modbus-live.py
-这将向您显示值的实时读数,这并不能修正他们
正在设置任务计划程序
-转到“开始”菜单,并在搜索字段中键入“任务计划程序”
打开任务调度器
-创建一个基本任务
-这项任务将是每天从0:00开始(或任何你喜欢的时间),每天重复一次
-它将启动一个程序
-对于该程序,导航至“ModBus”目录并选择ModBus run.py
-基本任务完成后,在活动任务部分找到它(双击)
-在右侧,单击“属性”,(您创建的ModBus任务的属性)
-您应该会看到一个包含任务属性的屏幕
-检查显示“无论用户是否登录都运行”的单选按钮
-选中“以最高权限运行”的框
-单击“触发器”选项卡
-编辑每日触发器
-在“高级设置”下,单击“每周一次重复任务:”框,并将其设置为1分钟

-单击显示“如果任务运行时间超过”的框,并将其设置为30分钟

-“确定”/“根据需要输入密码”
设置完成后,导航至ModBus文件夹并双击“ModBus start.py”


我想要达到的结果
想实现使用该程序作为上位机软件对2个下位机(温度传感器、湿度传感器)进行轮询