写读

然后执行一个写在一个单一的MODBUS事务读取保持寄存器组操作

描述

writeRead (m,writeAddressreadAddressreadCount将数据写入MODBUS对象在起始地址writeAddress使用值进行写入,然后读取起始地址的数据readAddress使用要读取的值的数目readCount

这个函数在单个MODBUS事务中对持有的寄存器组执行一个写操作和一个读操作的组合。写操作总是在读操作之前执行。到读出的地址范围必须是连续的,以及写地址的范围必须是连续的,但每个独立地指定,并且可以是或可以不重叠。

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

writeRead (m,writeAddresswritePrecisionreadAddressreadCountreadPrecision为写和读操作添加可选的精度。该writePrecisionreadPrecision参数指定从被读取或写入到MODBUS服务器上的寄存器的数据格式。

例子

全部折叠

写读函数用于对在单个交易MODBUS保持寄存器组执行一个写操作和一个读出动作的组合。写操作总是在读操作之前执行。到读出的地址范围必须是连续的,以及写地址的范围必须是连续的,但每个独立地指定,并且可以是或可以不重叠。

收件2个保持寄存器起始于地址300,和读4保持寄存器起始地址为17250。

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参数指定要将命令发送到的服务器的地址。

写3个保持寄存器起始于地址400,和读4保持寄存器从服务器ID 6起始地址为52008。

writeRead (m, 400,(1024 512 680), 52008年,4、6)
ANS = 38629 24735 29456 39470

使用writePrecisionreadPrecision参数来指定被读取或写入到MODBUS服务器上的寄存器的数据格式。

从地址500开始写入3个持有寄存器,从服务器ID 6的地址52008开始读取6个持有寄存器。指定一个writePrecision'UINT64'和一个readPrecision“uint32”

writeRead(米,500,[1024 512 680],'UINT64',52008,6,“uint32”6)
ans = 38629 24735 29456 39470 33434 29484

输入参数

全部折叠

起始地址写入,指定为双。writeAddress必须是对象名称后的第一个参数。该实施例中写入2个保持寄存器起始地址501和读出4保持寄存器起始地址为11250.该writeAddress501

例子:writeRead(米,501,[1024 512],11250,4)

数据类型:

值的阵列来写,指定为双或双打的阵列。值必须在对象名称后的第二个参数。每个值都必须在范围0 - 65535。该实施例中写入2个保持寄存器起始地址501和读出4保持寄存器起始地址为11250.该[1024 512]

例子:writeRead(米,501,[1024 512],11250,4)

数据类型:

要读取的保存寄存器的起始地址,指定为双精度。readAddress必须是对象名称后的第三个参数。该实施例中写入2个保持寄存器起始地址501和读出4保持寄存器起始地址为11250.该readAddress11250

例子:writeRead(米,501,[1024 512],11250,4)

数据类型:

的保持寄存器数目读取,指定为双。readCount必须是对象名称后的第四个参数。该实施例中写入2个保持寄存器起始地址501和读出4保持寄存器起始地址为11250.该readCount4

例子:writeRead(米,501,[1024 512],11250,4)

数据类型:

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

例子:writeRead (m, 400,(1024 512 680), 52008年,4、6)

数据类型:

保持寄存器的数据格式被写入MODBUS服务器,指定为字符向量或串上。writePrecision必须写地址和值后指定。有效值'UINT16'“int16”“uint32”'INT32''UINT64'“int64”'单',“双”。此参数是可选的,默认为'UINT16'

注意writePrecision并不是指返回类型,这始终是“双”。它指定如何解释寄存器数据。

本实施例中写3个保持寄存器起始地址400和读出4保持寄存器从服务器ID 6.起始地址为52008它还指定一个writePrecision'UINT64'

例子:writeRead (m, 400, (1024 512 680),“uint64”, 52008年,4,uint32, 6)

数据类型:字符

保持寄存器的数据格式从服务器MODBUS,指定为字符向量或串上被读取。readPrecision必须读地址后指定,并读取计数。有效值'UINT16'“int16”“uint32”'INT32''UINT64'“int64”'单',“双”。此参数是可选的,默认为'UINT16'

注意readPrecision并不是指返回类型,这始终是“双”。它指定如何解释寄存器数据。

本实施例中写3个保持寄存器起始地址400和读出4保持寄存器从服务器ID 6.起始地址为52008它还指定一个readPrecision“uint32”

例子:writeRead (m, 400, (1024 512 680),“uint64”, 52008年,4,uint32, 6)

数据类型:字符

扩展功能

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

介绍了在R2017a