欢迎光临散文网 会员登陆 & 注册

如何在niagara中优化Modbus通讯以达到最快速度

2023-08-27 00:36 作者:asdarg  | 我要投稿

高波特率、良好的线缆和其他一些事情都有帮助。但是有一个设置可以真正提速,如果你不知道它,它可能真的很有帮助。

介绍

对任何网络来说,确保您具有正确的电缆和布线以确保最可靠和快速的通信都是非常重要的。在RS485上,我们写了几篇文章,介绍如何布线RS485设备以及偏置和终端电阻背后的原因。

随着所有电缆都整理好了,您可能会认为波特率越快(仅适用于RS485)和轮询率越快,是使Modbus连接尽可能快速和优化的唯一方法。我们将展示您还有一个更重要的方法,可以确保您的通信尽可能快速地工作。

即使您不需要Modbus“快速”,我们也建议您继续阅读,因为优化协议在您有大量网络数据交换的情况下也可能很有用。

涵盖基础知识

Modbus是一个简单的主-从协议,它在IP或RS485上的工作方式基本相同:主机总是用命令启动通信,从机对这些命令做出响应。

主设备将命令打包成一系列字节,其中包含以下信息:

  1. 从机地址

  2. 功能码

  3. 起始寄存器

  4. 寄存器计数

  5. 数据

  6. 校验和

被寻址的从机将验证命令并根据“功能码”进行响应。

功能码通常如下:


功能码 请求的命令

1 读取线圈

2 读取离散输入

3 读取保持寄存器

4 读取输入寄存器

5 写单个线圈

6 写单个保持寄存器

15 写多个线圈

16 写多个保持寄存器


Niagara默认如何处理读取命令


现在,当您需要读取一系列数据点时,您可以使用不同的方法来获取数据。


一种方法是为每个单独的数据点发送读取命令(根据数据类型为1、2、3或4),其中“起始寄存器”是数据点地址,”寄存器计数“为”1“。


如果您不添加我们将在本文中看到的其他配置,这正是Niagara Modbus驱动程序默认所做的。


让我们看下面的示例:

我正在读取7个保持寄存器,地址为102、103、106、107、108、112和113,所有这些都配置为“快速”频率,默认驱动程序设置为快速轮询频率的1秒轮询率。


如果我们为Modbus TCP驱动程序启用本地日志记录,我们可以在应用程序导演中看到驱动程序正在向每个数据点发送专用的“读取保持寄存器”(功能码“3”)命令(在下面的图片中,您可以看到总共7个命令中的4个,读取寄存器102、103、106和107):

这可以工作,但这显然不是获取数据最优化的方式,特别是在使用大量连接的设备和数据点时。


多次读取优化


有方法可以“压缩”这些命令,以便它们可以一次读取多个寄存器。

以上面的例子为例,我们可以使用总共3个命令 instead of 7个命令:


  • 命令1 读取地址102和103(起始寄存器102,寄存器数量2)


  • 命令2 读取地址106、107和108(起始寄存器106,寄存器数量3)


  • 命令3 读取地址112和113(起始寄存器112,寄存器数量2)


这已经大大优化了通信。


在许多情况下,可以实现进一步优化。 从设备可能响应未列出的寄存器上的读取,如果寄存器之间的间隙不大,将间隙包含在内的较大数量的寄存器读取可能更有效。


例如,我们可以通过读取102到113之间的所有寄存器来读取所有7个数据点,读取命令从寄存器102开始,寄存器数量为12。 我们将简单地忽略不需要的数据(间隙)。 这将使一个命令更有效,带有略大的“数据响应”。


如何在Niagara中使用“设备轮询配置”来实现这种优化


在Niagara中,需要指示Modbus驱动程序进行这些优化。

这是通过Modbus从站设备上的驱动程序的属性表实现的。 我们将查看的属性是“设备轮询配置”

您会注意到,默认情况下,此属性为空,这就解释了驱动程序为每个单独的数据点创建单个读取命令的原因。


首先,我们确保已将所有Modbus数据点添加到Modbus设备的“points”部分。 然后,我们右键单击“Device Poll Config”,并选择“Actions - Learn Optimum Device Poll Config”选项。

这基本上就是查看您的Modbus数据点,查找所有连续且类型相同的点,并在设备上自动创建一系列指令,以指示Modbus驱动程序根据数据类型将它们作为单个多个寄存器/线圈读取。


让我们看看我们简单示例中的结果:

系统创建了3个预期的命令,一个读取寄存器102和103,另一个读取寄存器106、107和108,还有一个读取寄存器112和113。


在Modbus TCP驱动程序的应用程序导演的细节中,我可以清楚地看到现在有3个优化的命令,而不是我之前的7个命令:

当然,配置可以手动完成并进行编辑。


让我们将Device Poll Config转换为单个命令,该命令读取102到113之间的所有寄存器。 Niagara将只取作为“数据点”添加的数据,并自动忽略中间的任何其他数据(间隙)。


我可以右键单击自动定义的轮询配置中的2个,然后删除它们,然后修改剩余的一个,从寄存器102开始读取总共12个寄存器(我需要的和所有间隙):

现在查看应用程序导演,我看到的唯一命令是:

而且我的所有点都以最佳优化方式读取:

重要说明:Modbus消息不能超过256字节。 因此,每个命令可以读取的最大寄存器数为125。 请与制造商联系您正在连接的设备,因为它可能有针对此数字的特定进一步限制。


如何在niagara中优化Modbus通讯以达到最快速度的评论 (共 条)

分享到微博请遵守国家法律