电工学习网

 找回密码
 立即注册

一个关于我和Modbus 服务器不得不说的事

2016-8-1 16:17| 编辑:电工学习网| 查看: 17431| 评论: 0|原作者: checkitout|来自: 西门子工业技术论坛

去年年底,有一个客户提出一个需求:他们要将WinCC OA/PVSS 作为服务器,给另外一套SCADA提供大量实时数据,大约上万点的实时数据,最快刷新速度需要1秒。
虽然opc  DA接口最先被想到,但是出于性能和稳定性的考虑,业主希望采用Modbus作为通讯协议,也就是说另外一套SCADA系统要把WinCC OA/PVSS 当做一个plc一样,来读写数据。
这个想法很好,Modus协议简单,相对OPC DA似乎也比较可靠,性能也应该好很多。
但问题是, WinCC OA   的Modbus Driver 虽然既可以作为Modbus 客户端,也可以作为Modbus 服务器,可它的Modbus 服务器使用的是一种特殊协议Unicos,并不是通用的Modbus协议。
总部也没有现成的方案。
没有办法,只有依靠 WinCC OA/PVSS 强大的API  C++接口,撸起袖子自己编写一个WinCC OA 的Modbus 服务器了。
客户接受这个方案。那说干就干。
因为Modbus TCP 协议确实相对简单,其中最重要的工作就是完成点表的地址映射和响应代码的编写,所以没用多长时间就完成了,用第三方工具进行压力测试,结果发现:向外提供的数据少的时候,性能还行,但当每秒大约有1 - 2千点请求时,客户端上的数据更新速度就变得滞后较严重。这样的结果肯定无法满足客户的要求。
性能的瓶颈会是哪呢?
每次Modbus客户端请求数据时,Modbus服务器都需要查地址映射表,当这个表比较大的时候,每一次查找将会是个最耗时操作。而第一版由于追求开发速度使用了最简单,但效率极低的查表方法。故在点数较多时,性能衰减严重。
为了解决这个问题,这时自然想到教科书上的提高查表速度的方法,并结合地址映射表的特点,最后选取了哈希表的思路。
修改了代码后,并加入了多线程处理,再次压力测试时,性能飞速提升。最后的测试结果轻松超过客户最大需求接近一倍,而且还有很大的余量, 经过一个月左右的持续压力测试,该Modbus TCP 服务器依性能旧稳定,CPU和内存占用小且稳定,而且有客户非常满意的Modbus变量导入导出和批量组态的功能....


但是从V3.14 起(今年已发布),剧情突变,WinCC OA/PVSS 竟然开始直接提供 Modbus 服务器功能:


而且提供了更加灵活、完善的数据映射机制。
我到底是该高兴呢?还是该高兴呢?
但我想客户应该是高兴的,因为他们能得到更专业、更值得信赖的SCADA完整方案和快速响应客户需求的西门子产品。

看过《一个关于我和Modbus 服务器不得不说的事》的人还看了以下文章:

发表评论

最新评论

  • 电表怎么看度数
  • 插座烧毁原因_插座烧后还可以继续使用吗?
  • 注册电气工程师考试挂靠,到底富了谁?
  • 电工证可以“挂靠“吗
  • 电工证怎么考?如何自考电工证
  • 电工证种类和图片大全
热门资讯

电工学习网 ( )

GMT+8, 2021-12-6 20:46

Powered by © 2011-2021 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

返回顶部