主要内容

读写多个寄存器

writeRead函数执行的组合一个写操作,一个读操作上保持在一个Modbus寄存器组®事务。总是执行写操作之前,阅读。地址的范围阅读和写地址的范围必须是连续的,但每个指定独立,他们可以重叠。

write-read操作保持寄存器的语法是:

writeAddress writeRead (obj,价值观、readAddress readCount)

obj参数是Modbus对象的名称。下面的示例假设您已经创建了一个Modbus对象,。创建的对象的信息,请参阅创建一个Modbus连接

writeAddress的起始地址寄存器写入,指定为一个双。的参数是一个数组的值来写。第一个值的向量是写入writeAddress。必须在每个值0 - 65535

readAddress的起始地址寄存器读,然后呢readCount是读寄存器的数量。

如果操作成功,它将返回一组双打,每个代表一个16位寄存器值,第一个值向量对应的寄存器值在指定的地址readAddress

这个例子写两个寄存器地址601年开始,读取4寄存器地址19250年开始。

writeRead (m, 601,(1024 512), 19250年,4)
ans = 27640 60013 51918 62881

您可以创建写变量的值,而不是包括文字数组中的值函数的语法。同样的例子也可以这种方式编写的,使用一个变量写值:

值= (1024 - 512);writeRead(值m, 601年,19250年,4)
ans = 27640 60013 51918 62881

服务器ID选项

serverId参数指定服务器的地址发送读命令。有效的值0 - 247,0广播地址。这个参数是可选的,默认值是1

请注意

如果你的设备使用slaveID财产,它可能使用它的工作serverID财产的writeRead这里描述的命令。

的语法指定服务器ID的方法是:

writeAddress writeRead (obj,价值观、readAddress readCount, serverId)

这个例子写3保持寄存器地址400年开始,读取4寄存器地址52008年开始,从服务器ID 6。

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

精确的选择

“writePrecision”“readPrecision”参数指定寄存器的数据格式读取或写入Modbus服务器上。有效的值“uint16”,“int16”,“uint32”,“int32”,“uint64”,“int64”,“单一”,“双”。这个参数是可选的,默认值是“uint16”

传入的值转换为寄存器值编写基于指定的精度。对于精度值“int32”,“uint32”,“单一”,每个值对应于两个寄存器“uint64”,“int64”“双”,每个值对应于四个寄存器。为“int16”“uint16”,每一个值从一个16位寄存器。

注意,精确指定如何解释或转换寄存器数据,不读操作的返回类型。总是返回的数据类型的两倍。

指定读写精度的语法是:

writeAddress writeRead (obj,价值观、writePrecision readAddress, readCount, readPrecision)

如果你想使用serverId参数,它追求的readPrecision

这个例子写3保持寄存器地址400年开始和读取4寄存器地址52008年开始,从服务器ID 6。它还指定了一个writePrecision“uint64”和一个readPrecision“uint32”

writeRead (m, 400, (1024 512 680),“uint64”52008年4“uint32”6)
ans = 38629 84735 29456 39470

本例中读取两个寄存器地址919年开始,和写3保持寄存器地址719年开始,格式单精度数据寄存器的读取和写入值。

值= (1.14 5.9 11.27);writeRead (m, 719,值,“单一”,919年2“单一”)