『7x24小时有问必答』
工控上位机设计有一点非常重要,那就是业务逻辑要和设备解耦。这里的设备指的是PLC或者智能仪表等设备。业务逻辑指的是上位机上跑的数据流。
先看一个例子
上图是一个现场实际运行的上位机项目。该方法在主画面Main中。可以看到对PLC的读写操作和UI更新完全混在了一起。虽然项目能跑起来,但它不是一个工业级上位机应有的做法。因为未能实现设备和逻辑的解耦,它主要有四大缺点:
1、因为PLC的读写和UI混在一起,如果换了一种PLC或者通信协议,比如从S7换到ModbusUI界面里所有和PLC操作的代码都要重写。
2、每次UI操作,直接访问PLC会有延迟,影响操作体验
3、如果PLC里面某个变量地址有变动,UI里面所有相关的读写操作都要修改;
4、难于调试,不易发现Bug
综上,程序虽然能跑,但是编程及调试工作量比较大,也难于维护。那么SuperSCADA是如何实现逻辑和数据的解耦呢。首先我们在框架的基础设施层定义了一个统一的设备抽象类CommDrive
不管是S7或是Modbus都从它派生。
每种设备根据通信协议再派生出新的静态类。比如如果有10台西门子系列PLC,那就生成10S7PLC的静态类。每个静态类根据PLC提供的地址清单创建变量。
变量创建后,通信类自行负责读写刷新,你不需要再关心什么类型转换之类的。仅需规划好变量表即可。
  SuperSCADA在基础设施层还提供了一些封装好的方法进行变量的读写操作。GetValue用于读取变量值。SetValue用于写变量值。读写都是基于变量缓存区进行操作,由后台负责统一刷新,完全不影响操作体验。另外GetValue/SetValue和具体的协议无关,甭管是S7还是Modbus都直接用。所以即使更换设备也无需修改UI层。基于变量名的操作同样也使得在PLC更新了地址后无需做任何修改。只需要在定义变量的PLC静态类中调整地址即可。
一个好的框架完全可以让你的工程效率倍增,让你从繁杂的编码中脱身而出,编程成为了一种享受。
HwLib(慧兰博)技术团队专注于高端自动化技术,如果您对我们的技术教程感兴趣的话,可以X宝上搜索店铺“hwlib”或者“慧兰博”
关于HwLib(慧兰博)技术团队的更多信息:www.hwlib.com.cn
HwLib(慧兰博)技术团队技术资料:

https://pan.baidu.com/s/1wXJYgFf-FIUVNbC7IHdxEg?pwd=1234
提取码:1234

END

HwLib(慧兰博)公众号
专注于工业自动化高端编程应用
HwLib(慧兰博)微信号

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码