主要内容

读取的数据网络通讯协议服务器

在网络通讯协议类型的数据你可以阅读

从四种类型的函数执行读取操作target-addressable领域:

  • 线圈

  • 输入

  • 输入寄存器

  • 持有注册

当您执行读取,您必须指定目标类型(目标),起始地址(地址),读值的数量()。你也可以选择指定服务器的地址serverId)对任何目标类型,数据格式(精度)寄存器。

例如显示整个工作流的阅读一个PLC存储寄存器,明白了从一个远程温度传感器读取温度

读卷网络通讯协议

如果阅读目标是线圈,该函数读取的值从1 - 2000相邻线圈在远程服务器,开始在指定的地址。线圈是一个单一的输出。的值1表示线圈和一个值0意味着它是关闭的。

读线圈的语法是:

读(obj,“线圈”,地址,数量)

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

地址参数是线圈阅读的起始地址,指定为一个双。的参数是线圈阅读的数量,指定为一个双。如果读取成功,它返回一个向量的值的两倍10,第一个值向量对应的线圈在起始地址的值。

这个例子中读取8卷,从地址1。

读(m,“线圈”1 8)
ans = 1 1 0 1 1 0 1 0

你也可以读值到一个变量中以供以后访问。

data =阅读(m,“线圈”1 8)
数据= 1 1 0 1 1 0 1 0

读输入网络通讯协议

如果输入阅读目标,函数读取的值从1 - 2000连续离散输入远程服务器,开始在指定的地址。一个离散的输入是一个输入。的值1表示输入,和一个值0意味着它是关闭的。

读取输入的语法是:

读(obj,“输入”,地址,数量)

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

地址参数是输入的起始地址读取、指定为一个双。的参数是输入阅读的数量,指定为一个双。如果读操作成功,它将返回一个向量的值的两倍10,第一个值向量对应于输入值的起始地址。

这个例子中读取10离散输入,从地址2。

读(m,“输入”、2、10)
ans = 1 1 0 1 1 0 1 0 0 1

读取输入寄存器在网络通讯协议

如果阅读目标输入寄存器,函数从1 - 125连续读取的值输入寄存器在远程服务器,开始在指定的地址。一个输入寄存器是一个16位只读寄存器。

读取输入寄存器的语法是:

读(obj, inputregs、地址、数量)

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

地址参数是输入的起始地址寄存器读、指定为一个双。的参数是输入寄存器阅读的数量,指定为一个双。如果读操作成功,它将返回一个向量的双打。每个双代表一个16位寄存器值,第一个值向量对应于输入寄存器值的起始地址。

这个例子中读取4输入寄存器,从解决20。

读(m,“inputregs”,20岁,4)
ans = 27640 60013 51918 62881

读持有注册网络通讯协议

如果目标是保持寄存器,读函数读取的值从1 - 125连续持有注册远程服务器,开始在指定的地址。保持寄存器是一个16位的读/写寄存器。

读取输入的语法是:

读(obj, holdingregs、地址、数量)

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

地址参数的起始地址寄存器读,指定为一个双。的参数是保持寄存器阅读的数量,指定为一个双。如果读操作成功,它将返回一个向量的双打。每个双代表一个16位寄存器值,向量中的第一个值对应于存储寄存器值的起始地址。

这个例子中读取4保持寄存器,从解决20。

读(m,“holdingregs”,20岁,4)
ans = 27640 60013 51918 62881

例如显示整个工作流的阅读一个PLC存储寄存器,明白了从一个远程温度传感器读取温度

指定服务器ID和精度

你可以阅读任何四种类型的目标,也为服务器ID指定可选的参数,并且可以为寄存器指定精度。

服务器ID选项

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

请注意

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

语法来指定服务器ID:

读(obj,目标,地址,统计,serverId)

这个例子从服务器ID读取8线圈从地址1 3。

读(m,“线圈”1、8、3)

精确的选择

“精度”参数指定的数据格式在Modbus寄存器读取®服务器。有效的值“uint16”,“int16”,“uint32”,“int32”,“uint64”,“int64”,“单一”,“双”。这个参数是可选的,默认值是“uint16”

请注意,“精度”不引用返回类型,这始终是吗“双”。它只指定了如何解释注册数据。

语法来指定精度:

读(obj、目标、地址、计数、精度)

这个例子中读取8控股寄存器地址开始1使用精度“uint32”

读(m,“holdingregs”1 8“uint32”)

两个选项

你可以设置的serverId选择和“精度”当目标是一个寄存器选择在一起。当你使用这两个选项,serverId后首先列出所需的参数。

语法来指定服务器ID和精度:

读(obj、目标、地址、计数、serverId精度)

这个例子中读取8控股寄存器地址开始1使用精度“uint32”从服务器ID 3。

读(m,“holdingregs”1 8 3“uint32”)

读混合数据类型

你可以阅读的不同数据类型的值(分别)在一个读操作通过指定每个值的数据类型。你可以在的语法包含数组函数,或设置变量的数量和精度。这两种方法都显示在这里。

语法

的一个例子函数与一个数据类型是:

读(m,“holdingregs”500年10“uint32”)

在这个示例中,持有注册目标类型,起始地址500年,数10和精度uint32。读10混合数据类型的值,您可以使用该语法:

读(m,“holdingregs”500 (3 2 3 2){“uint16”,“单一”,“双”,“int16”})

你使用数组指定数量和精度。在这种情况下,重要的是3,2,3,2。的函数读取3值数据类型uint162值的数据类型3数据类型的值和2值的数据类型int16。寄存器是连续的,从地址500年。这个例子中读取3uint16值从地址500 - 502,2值从地址503 - 5063值从地址507 - 518,2int16值从地址519 - 520,都在一个操作。

使用变量

而不是使用文字数组内功能如上所示,您可以指定变量作为函数参数的数组值。相当于上面的示例:

数=(3 2 3 2)精度= {“uint16”,“单一”,“双”,“int16”}读取(m,“holdingregs”,500年统计,精确)

使用变量时方便有很多值来读取和它们的混合数据类型。