帮助中心帮助中心
从Modbus服务器读取数据
读(m,目标,地址)
读(m,目标、地址、数量)
读(m,目标、地址、计数、serverId精度)
读(m,目标,地址)读取一个数据值到Modbus对象米从目标类型目标在起始地址地址.该函数默认读取一个值。如果希望读取多个值,请添加数论点。
读(m,目标,地址)
目标
地址
米
数
例子
读(m,目标,地址,数)读取数据到Modbus对象米从目标类型目标在起始地址地址使用要读取的值的数量数.
读(m,目标,地址,数)
读(m,目标,地址,数,serverId,精度)另外指定serverId,这是要将read命令发送到的服务器的地址精度,这是正在读取的寄存器的数据格式。
读(m,目标,地址,数,serverId,精度)
serverId
精度
全部折叠
如果读目标是线圈,则该函数从远程服务器中的1-2000个连续线圈中读取值,从指定的地址开始。线圈是一个单输出位。的值1表示线圈处于开启状态,值为0意味着它是关闭的。
1
0
从地址1开始读取8个线圈。的地址参数是要读取的线圈的起始地址,而数参数是要读取的线圈数。
读(m,“线圈”1 8)
Ans = 1 1 0 1 1 0 10 0
如果读目标是输入,则该函数从远程服务器中的1-2000个连续的离散输入中读取值,从指定的地址开始。离散输入是单个输入位。的值1指示输入为on,值为0意味着它是关闭的。
从地址2开始,读取10个离散输入。的地址参数是要读取的输入的起始地址,而数参数是要读取的输入数。
读(m,“输入”、2、10)
Ans = 1 1 0 1 1 0 1 0 1 0 0 1
如果读目标是输入寄存器,则该函数从远程服务器中的1-125个连续输入寄存器中读取值,从指定的地址开始。输入寄存器是16位只读寄存器。
读取4个输入寄存器,从地址20开始。的地址参数是要读取的输入寄存器的起始地址,而数参数是要读取的输入寄存器的数目。
读(m,“inputregs”, 20岁,4)
Ans = 27640 60013 51918 62881
如果读目标是持有寄存器,则该函数从远程服务器中的1-125个连续持有寄存器中读取值,从指定的地址开始。保持寄存器是一个16位读/写寄存器。
读取5个保持寄存器,从地址2开始。的地址参数是要读取的保存寄存器的起始地址,而数参数是要读取的持有寄存器的数量。
读(m,“holdingregs”、2、5)
Ans = 27640 60013 51918 62881 34836
您可以读取这四种类型的目标中的任何一种,还可以为服务器ID指定可选参数,并且可以为这两种类型的寄存器指定精度。您可以单独设置其中一个选项,也可以设置两个选项serverId选择和精度选择在一起。两个选项都应该列在必需的参数之后。
使用精度从地址1开始读取8个保持寄存器“uint32”从服务器ID 3。
“uint32”
读(m,“holdingregs”1 8 3“uint32”);
通过为每个值指定数据类型,可以读取不同数据类型(精度)的连续值。的语法中可以做到这一点读函数,或设置包含计数和精度数组的变量。这里显示了这两种方法。
读
读取相同数据类型的连续寄存器。
读(m,“holdingregs”500年10“uint32”);
在那个例子中,目标类型是保存寄存器,起始地址是500,计数为10,精度为uint32.
500
10
uint32
如果你想让这10个值是混合数据类型,你可以使用以下语法:
读(m,“holdingregs”,500,[3 2 3 2],{“uint16”,“单一”,“双”,“int16”});
您可以在命令中使用一个值数组来实现计数和精度。在本例中,计数为3、2、3和2。该命令将读取3个数据类型的值uint16, 2个数据类型的值单, 3个数据类型的值双和2个数据类型的值int16.寄存器是连续的,从address开始500.
uint16
单
双
int16
与上一步中所示的在read命令中使用数组不同,您还可以在命令中使用数组作为变量。相同示例的等价代码为:
Count = [3 2 3 2] precision = {“uint16”,“单一”,“双”,“int16”}读取(m,“holdingregs”500、计数、精密);
当您有很多值要读取且它们是混合数据类型时,使用变量非常方便。
要读取的目标区域,指定为字符向量或字符串。您可以在四种类型的目标上执行Modbus读操作:线圈、输入、输入寄存器和保持寄存器,对应于值“线圈”,“输入”,“inputregs”,“holdingregs”.Target必须是对象名称后的第一个参数。这个例子从地址1开始读取8个线圈。
“线圈”
“输入”
“inputregs”
“holdingregs”
例子:读(m,“线圈”,1,8)
读(m,“线圈”,1,8)
数据类型:字符
字符
要读取的起始地址,指定为双精度值。Address必须是对象名称后的第二个参数。这个例子从地址2开始读取10个线圈。
例子:读(m,“线圈”,2、10)
读(m,“线圈”,2、10)
数据类型:双
要读取的值的数量,指定为双精度。Count必须是对象名称之后的第三个参数。如果不指定计数,则默认为1使用。这个例子从地址2开始读取12个线圈。
例子:读(m,“线圈”,2、12)
读(m,“线圈”,2、12)
要将读命令发送到的服务器地址,指定为double。必须在对象名称、目标、地址和计数之后指定服务器ID。如果不指定serverId,默认为1使用。有效的值0 - 247,0是广播地址。
0 - 247
请注意
如果您的设备使用slaveID属性,它可能会把它用作serverID财产的读命令如下所示。
slaveID
serverID
这个例子从服务器ID 3读取8个从地址1开始的线圈。
例子:读(m,“线圈”,1,8日,3);
读(m,“线圈”,1,8日,3);
从Modbus服务器上读取的寄存器的数据格式,指定为字符向量或字符串。精度必须在对象名称、目标、地址和计数之后指定。有效的值“uint16”,“int16”,“uint32”,“int32”,“uint64”,“int64”,“单一”,“双”.这个参数是可选的,默认为“uint16”.
“uint16”
“int16”
“int32”
“uint64”
“int64”
“单一”
“双”
请注意,精度不引用返回类型,它总是“双”.它指定如何解释寄存器数据。
此示例读取从地址2开始的6个保存寄存器,其精度为“uint32”.
例子:读(m, holdingregs 2 6日uint32);
读(m, holdingregs 2 6日uint32);
介绍了R2017a
网络通讯协议|写|writeRead|maskWrite
网络通讯协议
写
writeRead
maskWrite
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您的地理位置,我们建议您选择:.
您也可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。
联系当地办事处