读写多个寄存器
的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“单一”)