一种诊断Modbus通信问题的有效方法

通过保罗聪明|更新日期:03/08/2017 |评论:4

搜索博客


订阅博客

设置你的首选项,当有新的博客文章发布时,你会收到与你的兴趣领域相匹配的电子邮件通知。


区域/应用程序

产品类别

活动

企业/新闻

请输入您的电子邮件地址:



显示一篇文章

你有想了解更多的话题吗?让我们知道。请尽量说得具体些。

让这个字段为空

网络通讯协议

您是否曾经将Campbell Scientific数据记录器设置为Modbus服务器,并发现您的数据没有像预期的那样到达SCADA系统?您可能很快就意识到两件事:对通信问题进行故障排除不是一项容易的任务,并且可以采取许多不同的方法。在本文中,我将与您快速分享一个我发现既有用又节省时间的方法。

Campbell Scientific数据记录仪为全球SCADA(监控和数据采集)系统提供测量数据。这通常是通过将数据记录器配置为Modbus TCP/IP服务器来实现的,我们在第一部分中讨论了这一点“如何使用Modbus访问实时测量数据”博客文章

通常,在数据记录器和SCADA系统之间建立通信的过程是顺利的,但在某些情况下,现场技术人员会发现数据没有按照预期到达SCADA系统。在这种时候,您可能会想:沟通的问题在哪里?问题是在SCADA系统(Modbus客户端)、数据记录器(Modbus服务器),还是在两者之间的某个地方?

我们最后一篇Modbus博客文章本文以一个数据记录仪为例,通过Modbus TCP/IP协议进行模拟测量,并将数据提供给SCADA系统。

Modbus通信与模拟测量和数据记录器到SCADA系统

我们将在这里使用相同的例子。您的SCADA系统设置为每秒轮询数据记录器的Modbus寄存器的内容。你的数据记录器,反过来,使模拟测量,然后存储它们在Modbus持有和输入寄存器每秒钟。

但是,如果SCADA系统不能成功地从数据记录器接收数据,该怎么办呢?你现在能做什么?你可以使用坎贝尔科学公司设备配置实用程序(DevConfig)来监视传入数据记录器的流量。这有助于确定SCADA系统的轮询是否到达数据记录器,以及数据记录器是否正在响应。

按照以下步骤使用DevConfig查看Modbus轮询:

  1. 打开设备配置实用程序,并连接到您的数据记录器。
  2. 选择终端标签在最右边。

    在DevConfig中选择终端选项卡

    单击DevConfig屏幕查看大图。

  3. 按下输入在键盘上按,直到屏幕上出现提示。
  4. 类型W,并按输入关键。

    DevConfig屏幕

    单击DevConfig屏幕查看大图。

  5. 选择TCP / IP、类型13并按下输入关键。
  6. 在你的屏幕上,你会被问到ASCII (Y) ?类型N,并按输入关键。
  7. 如果你的数据记录器没有收到任何Modbus轮询,你的屏幕可能看起来像这样:

    带有ASCII问题的DevConfig

    单击DevConfig屏幕查看大图。

注意,在TCP/IP上没有检测到Modbus流量。屏幕上唯一的消息是“按ESC退出,任何其他键延长超时。”这个场景可以指示以下一个或多个条件:

  • SCADA系统没有轮询数据记录器。
  • SCADA系统正在轮询一个不同的IP地址。
  • 数据记录器分配的IP地址不正确。
  • 线缆未插入。
  • Modbus流量被网络阻塞。

您的数据记录器的设置和编程可能完全正常,但是如果它没有从SCADA客户机接收到投票,那么数据将不会到达预期的位置。此时,将您的故障排除工作集中在SCADA网络、客户机配置等(数据记录器以外的区域)。

特别注意:在这样的情况下,您可能会看到TCP/IP上的流量,而不是Modbus流量,例如来自LoggerNet服务器的PakBus流量(如果网络上有LoggerNet到数据记录器的连接)。

在你解决了你的网络或SCADA系统问题之后,一个成功的跟踪看起来像这样:

在DevConfig中成功跟踪

单击DevConfig屏幕查看大图。

识别Modbus TCP流量并将其与其他协议区分开来的最简单方法是,客户端发送的数据总是以前两个字节中的标识符开始。在我们的示例中,跟踪中被识别的第一个轮询开始于00 16.反过来,数据记录器用相同的唯一标识符(00 16).下次客户端轮询时,它使用的标识符是00 17,数据记录器的响应是00 17

特别注意:Modbus TCP流量和Modbus RTU流量是有区别的。识别Modbus RTU流量最简单的方法是寻找一个从Modbus服务器地址和功能代码开始的客户端传输。服务器响应也将从它的地址和函数代码开始。

如果您可以看到来自客户机(T)的Modbus轮询,但没有来自数据记录器(R)的响应,那么是时候检查数据记录器的配置和编程了。您可能在您的设置中有一个错误,如:

  • 数据记录器没有被编程为Modbus服务器。
  • 数据记录器被赋予了一个Modbus服务器ID,该ID与客户机正在轮询的内容不匹配。

此时,您需要深入了解数据记录器的设置,以便进行进一步的故障排除。

结论

使用DevConfig来监视数据记录器上的TCP/IP流量是一种很好的方法,可以快速检查事情是否按照预期工作。这种方法通常可以节省大量时间,因为您可以更快地识别通信问题。

如果您对这个故障排除方法有任何问题,请在下面发表。


分享这篇文章



关于作者

保罗聪明Paul Smart是Campbell Scientific, Inc.的销售和营销副总裁。万博matex网页登录他第一次使用坎贝尔设备是在大学毕业后不久,当时他正在国际空间站进行一系列植物种植实验。Paul喜欢利用独特的Campbell科学技术来解决具有挑战性的测量问题。他拥有电气工程学士学位和工商管理硕士学位。保罗也喜欢户外活动,飞蝇钓鱼,和家人呆在一起。

查看作者的所有文章。


评论

微笑|04/05/2017 01:16 PM

亲爱的保罗,基本上我不明白,原因是CR1000 OS31的COM4端口上有一个商用RS232 868Mhz无线电调制解调器,连接不能使用MODBUS协议。
奇怪的情况是:
1)在RS232端口上与商用无线电调制解调器工作正常(modbus和pakbus)
2)在COM4端口上与商用无线电调制解调器pakbus工作良好
3) RS232端口和COM4与你的RF416无线电(透明模式)都工作良好(modbus和pakbus)。
在花时间在串口上嗅探器和用示波器调查之前,这些情况能给你一些建议吗?
不幸的是,对于本地问题(距离,植被和其他)不能使用您的无线电RF416。
在我上面提到的测试期间(在我们办公室),没有任何变化,只是:
—RS232 Vs COM4之间的程序指令“MODBUSSLAVE”和“SERIALOPEN”
- DB9电缆的RSR232 Vs电缆与单独的引脚(TX, RX和GND)的COM4
这些是程序中使用的行。
SerialOpen (COM4为9600,0,5000,1000)
ModbusSlave (Com4为9600 1 modln (), modbus_port, 0)

我可以说,当它不工作(商业无线电- com4 - modbus),数据到达远程无线电,实际上我可以看到绿色的LED RX亮起来,但CR1000不响应,红色的LED TX保持关闭。

我试着增加延迟,甚至增加到5秒,
“SerialOpen (COMRS232 9600 0, 5000000, 1000)”
“ModbusSlave (ComRS232 9600 1 modln (), modbus_port, 0)”
但我看到CR1000总是立即回答,当然,工作情况1(商业无线电,RS232 MODBUS)。

我希望这一系列的测试可以给你一些建议,当然如果有问题我也可以提供。

谢谢提前

问候

微笑

微笑|04/05/2017 01:21 PM

抱歉,Paul,这是我在之前的文章中忘记写的一个前提。

亲爱的保罗,也许你就是那个能帮我解决真正头痛的人。我已经在论坛上就这个话题展开了讨论,我也写信给英国的Franco Casule。让我们看看谁能够帮助我之前:-),不幸的是,我有一些紧急情况。我现在写的是我在论坛和佛朗哥上写的两个信息的综合。

微笑|04/05/2017 01:24 PM

当然,我可以提供其他对诊断有用的信息

保罗聪明|04/10/2017上午10:36

抱歉回复晚了。看起来JDavis已经在论坛上回答了你的问题,关于广播中可能出现的时间延迟问题。祝你好运,谢谢阅读。

登录或注册置评。

我们在社交媒体上很活跃!
通过在这些平台上关注我们,了解我们的最新消息:

Baidu