主要内容

对连接的Modbus服务器进行写操作

描述

例子

写(m,目标,地址,写入数据到Modbus对象目标类型目标在起始地址地址使用要读取的值.你可以写入线圈或保持寄存器。

例子

写(m,目标,地址,,serverId,'精度”)另外指定serverId,这是要将read命令发送到的服务器的地址精度,这是正在读取的寄存器的数据格式。

serverId既可用于线圈和保持寄存器,和精度只能用于寄存器。可以单独使用其中一个参数,也可以在写目标保存寄存器时同时使用两个参数。

例子

全部折叠

如果写目标是线圈,该函数将1-1968个线圈的连续序列写入远程设备中的开或关。线圈是一个单输出位。的值1表示线圈处于开启状态,值为0意味着它是关闭的。

写入4个线圈,从地址8289开始。的地址参数是要写入的线圈的起始地址,它是双精度的。的参数是要写入的值的数组。

写(m,“线圈”,8289,[1 1 0 1])

您还可以为要写入的值创建一个变量。

值= [1 1 0 1];写(m,“线圈”, 8289,值)

如果写目标持有寄存器,则该函数将1-123个连续寄存器块写入远端设备。表示大于16位的值存储在连续的寄存器地址中。

将地址49153的寄存器设置为2000。

写(m,“holdingregs”、49153、2000)

可以写入线圈或保持寄存器,也可以为服务器ID指定可选参数,还可以为保持寄存器指定精度。您可以单独设置其中一个选项,也可以设置两个选项serverId选择和精度选择在一起。两个选项都应该列在必需的参数之后。

从地址29473开始,在服务器ID 2上写入3个值,转换为精度。

写(m,“holdingregs”29473 928.1 50.3 24.4, 2,“单一”

输入参数

全部折叠

要写入的目标区域,指定为字符向量或字符串。可以在两种类型的目标上执行Modbus写操作:线圈和保持寄存器,因此必须将目标类型设置为其中一种“线圈”“holdingregs”.Target必须是对象名称后的第一个参数。这个示例写入4个从地址8289开始的线圈。

例子:写入(m,'线圈',8289,[1 1 0 1])

数据类型:字符

要写入的起始地址,指定为双精度。Address必须是对象名称后的第二个参数。这个示例写入6个从地址5200开始的线圈。

例子:写入(m,'线圈',5200,[1 1 0 1 1 0])

数据类型:

要写入的值数组,指定为双精度值或双精度值数组。必须是对象名称后的第三个参数。如果目标是线圈,则有效值为0而且1.如果目标保存寄存器,有效值必须在指定的精度范围内。可以在语法中包含值数组,如这里所示,也可以使用变量来表示值。

这个示例写入4个从地址8289开始的线圈。

例子:Write (m,'线圈',8289,[0 1 0 1])

数据类型:

要发送写命令的服务器地址,用双精度值指定。服务器ID必须在对象名称、目标、地址和值之后指定。如果不指定serverId,默认为1使用。有效的值0 - 247,0是广播地址。这个示例从服务器ID 3写8个从地址1开始的线圈。

例子:Write (m,'线圈',1,[1 1 1 1 0 0 0 0],3);

数据类型:

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

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

此示例使用精度写入从地址2开始的4个保存寄存器“uint32”

例子:Write (m,'holdingregs',2,[100 200 300 500],'uint32');

数据类型:字符

扩展功能

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

版本历史

介绍了R2017a

Baidu
map