c# - 与多个从站通信(基于 Modbus 协议(protocol))

标签 c# .net modbus

我正在开发一个应用程序,让我们说 50-60 个 Modbus 支持设备(从设备)连接到一个 Com 端口,这些设备在请求响应机制中与我的应用程序通信。

我想每 15 分钟后。应将请求发送到每个仪表,并从仪表一个接一个地接收响应。 与多个从站通信(基于 Modbus 协议(protocol))

为此,我正在使用 System.Timers.timer 调用该方法,假设每 15 分钟后调用 ReadAllSlave()。 在 ReadAllSlave() 中,我使用 For 循环发送请求和接收响应,并使用 thread.sleep 来保持延迟......!但它似乎不起作用,循环正在以该死的有线方式执行。

private void StartPoll()
   {
      double txtSampleRate = 15 * 60 * 1000;
      timer.Interval = txtSampleRate;
      timer.AutoReset = true;
      timer.Start();
   }

void timer_Elapsed(object sender, ElapsedEventArgs e)
{
 for(int index = 0; index<meterCount; Index++)
 {
       //Sending request to connected meter..  
       mb.SendFc3(m_slaveID[0], m_startRegAdd[0], m_noOfReg[0], ref value_meter);
       if (mb.modbusStatus == "Read successful")
           {

                   //Some code for writing the values in SQL Express database
           }

       //Wait for some time so that will not get timeout error for the next 
       //request..
       Thread.Sleep(10000);

  }
}

任何人都可以建议我实现相同的最佳方法。

提前致谢。

最佳答案

看起来你的问题很简单……你总是在审问同一个奴隶! “索引”从未在您的代码中使用...

像这样的事情怎么样:

mb.SendFc3(m_slaveID[index], m_startRegAdd[index], m_noOfReg[index], ref value_meter);

关于c# - 与多个从站通信(基于 Modbus 协议(protocol)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15175461/

相关文章:

c# - 比较枚举值进行排序

c# - 有什么方法可以测试类似的属性吗?

c# - 为什么以下正则表达式与此文本匹配?

c# - 在 excel C# .NET 的末尾插入行

c# - 正则表达式从 HTML 中删除所有跨度,保持内部文本不变

.net - 运行 docker-compose build 后恢复包时收到 'The SSL connection could not be established' 消息

java - 错误: modbus4j Java Createmaster

java - 需要 modbus Java 库

c# - 如何设置 ASPNETCORE_ENVIRONMENT 以考虑发布 ASP.NET Core 应用程序

C# - 通过串口轮询设备