主要内容

writeRead

在单个Modbus事务中对持有寄存器组执行先写后读操作

描述

例子

writeRead (m,writeAddressreadAddressreadCount写入数据到Modbus对象在起始地址writeAddress使用值来写入,然后从起始地址读取数据readAddress使用要读取的值的数量readCount

该函数对单个Modbus事务中的持有寄存器组执行一个写操作和一个读操作的组合。写操作总是在读操作之前执行。要读的地址范围必须是连续的,要写的地址范围也必须是连续的,但每个地址都是独立指定的,可能重叠,也可能不重叠。

例子

writeRead (m,writeAddressreadAddressreadCountserverId另外使用serverId作为要发送命令的服务器地址。

例子

writeRead (m,writeAddresswritePrecisionreadAddressreadCountreadPrecision为写和读操作添加可选精度。的writePrecision而且readPrecision参数指定在Modbus服务器上读取或写入的寄存器的数据格式。

例子

全部折叠

writeRead函数用于在单个Modbus事务中对持有寄存器组执行一个写操作和一个读操作的组合。写操作总是在读操作之前执行。要读的地址范围必须是连续的,要写的地址范围也必须是连续的,但每个地址都是独立指定的,可能重叠,也可能不重叠。

从地址300开始写2个保持寄存器,从地址17250开始读4个保持寄存器。

writeRead (m, 300,(500 1000), 17250年,4)
Ans = 35647 48923 50873 60892

如果操作成功,它返回一个双精度数组,每个双精度数组表示一个16位寄存器值,其中向量中的第一个值对应于在中指定的地址上的寄存器值readAddress

可以为要写入的值创建变量,而不是在函数语法中包含值数组。这个例子可以这样写,使用一个变量的值:

值= [500 1000];writeRead(值m, 300年,17250年,4)
Ans = 35647 58923 50873 60892

使用serverId参数指定要将命令发送到的服务器地址。

从服务器ID 6中写入从地址400开始的3个保持寄存器,并从地址52008开始的4个保持寄存器。

writeRead(m,400,[1024 512 680],52008,4,6)
Ans = 38629 24735 29456 39470

使用writePrecision而且readPrecision参数指定在Modbus服务器上读写的寄存器的数据格式。

从服务器ID 6写入从地址500开始的3个保持寄存器,并从地址52008开始的6个保持寄存器。指定一个writePrecision“uint64”和一个readPrecision“uint32”

writeRead(m,500,[1024 512 680],“uint64”52008年6“uint32”6)
Ans = 38629 24735 29456 39470 33434 29484

输入参数

全部折叠

要写入的起始地址,指定为双精度。writeAddress必须是对象名称后的第一个参数。这个示例从地址501开始写2个保持寄存器,从地址11250开始读4个保持寄存器。的writeAddress501

例子:writeRead (m, 501,(1024 512), 11250年,4)

数据类型:

要写入的值数组,指定为双精度值或双精度值数组。值必须是对象名称后的第二个参数。每个值都必须在该范围内0 - 65535.这个示例从地址501开始写2个保持寄存器,从地址11250开始读4个保持寄存器。的(1024 512)

例子:writeRead (m, 501,(1024 512), 11250年,4)

数据类型:

要读取的保存寄存器的起始地址,指定为double。readAddress必须是对象名称后的第三个参数。这个示例从地址501开始写2个保持寄存器,从地址11250开始读4个保持寄存器。的readAddress11250

例子:writeRead (m, 501,(1024 512), 11250年,4)

数据类型:

要读取的保存寄存器数目,指定为double。readCount必须是对象名称后的第四个参数。这个示例从地址501开始写2个保持寄存器,从地址11250开始读4个保持寄存器。的readCount4

例子:writeRead (m, 501,(1024 512), 11250年,4)

数据类型:

要将命令发送到的服务器地址,用双精度值指定。必须在对象名称、写地址、值、读地址和读计数之后指定服务器ID。如果不指定serverId,默认为1使用。有效值为0 - 247,0是广播地址。这个示例从服务器ID 6写入3个从地址400开始的保持寄存器,并读取4个从地址52008开始的保持寄存器。

例子:writeRead(m,400,[1024 512 680],52008,4,6)

数据类型:

在Modbus服务器上写入的保存寄存器的数据格式,指定为字符向量或字符串。writePrecision必须在写地址和值之后指定。有效值为“uint16”“int16”“uint32”“int32”“uint64”“int64”“单一”,“双”.这个参数是可选的,默认为“uint16”

请注意,writePrecision不引用返回类型,它总是“双”.它指定如何解释寄存器数据。

这个示例从服务器ID 6写入3个从地址400开始的保持寄存器,并读取4个从地址52008开始的保持寄存器。它还指定了writePrecision“uint64”

例子:writeRead(m,400,[1024 512 680],'uint64',52008,4,'uint32',6)

数据类型:字符

从Modbus服务器上读取的保存寄存器的数据格式,指定为字符向量或字符串。readPrecision必须在读取地址和读取计数之后指定。有效值为“uint16”“int16”“uint32”“int32”“uint64”“int64”“单一”,“双”.这个参数是可选的,默认为“uint16”

请注意,readPrecision不引用返回类型,它总是“双”.它指定如何解释寄存器数据。

这个示例从服务器ID 6写入3个从地址400开始的保持寄存器,并读取4个从地址52008开始的保持寄存器。它还指定了readPrecision“uint32”

例子:writeRead(m,400,[1024 512 680],'uint64',52008,4,'uint32',6)

数据类型:字符

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

在R2017a中介绍

Baidu
map