为什么我在 TwinCAT3 中使用 ST 语言在 Modbus 任务中将其配置为 100ms 时,Wireshark 中的请求周期为 200ms?

问题描述 投票:0回答:1

我在TwinCAT3上创建一个通过Modbus-TCP服务器(192.168.2.16)获取数据的程序,以从其他PC(从机:192.168.2.20)获取数据:

enter image description here

我还用 100 毫秒创建和配置 modbus 服务器任务。 enter image description here

但是,我在wireshark中注意到请求的周期约为200ms,而不是100ms。为什么周期是200ms?

enter image description here

我希望周期是相同的(100毫秒)

wireshark twincat st
1个回答
0
投票

回答

您的功能块需要多个周期才能运行。


说明

根据应用的不同,功能块可能需要多个周期才能完成,这就是为什么它们通常配置为:

  • b执行:功能块在此输入的上升沿激活
  • bBusy:功能块运行时指示 TRUE

就您的情况而言,我相信在将 bExecute 设置为 TRUE 后,您将看到 bBusy 处于高电平的单个周期。当功能块需要与某些外部对象(如网络设备)通信时,通常会出现这种情况。


解决方案

针对时序问题的建议解决方案是减少循环时间(应该是 5/10 毫秒),然后在所需的循环时间上设置“bExecute”。 这允许功能块运行几个周期并在开始新请求之前返回其数据。

© www.soinside.com 2019 - 2024. All rights reserved.