上位机开发多PLC多协议如何来实现
上位机Guide 2025-03-27


今天给大家分享一下,我们做上位机开发中,如果遇到多PLC多协议,应该如何来实现。

一、通信库

几乎每个工控人都曾这么臆想过:如果所有的品牌都统一一种协议,那该多好!PLC技术发展多年,不同的制造商在早期都采用了不同的通信协议,随着时间的推移,这些协议已经成为了行业标准,很难在短时间内进行统一。这个是由历史原因导致的,我们无法改变,只能改变自己。上位机开发不认PLC品牌,不认仪表品牌,只认协议。因此对于我们来说,我们并不认西门子和三菱,我们认的是S7协议和MC协议,其他品牌也是一样。上位机开发第一步需要有通信库,通信库的本质就是一个类库项目,最终编译成一个dll文件,里面包含了各种协议类,我们可以通过创建通信对象,调用其读写方法,实现与PLC之间的交互。

二、配置库

我们在使用组态软件或者触摸屏开发项目时,一般都会添加驱动,然后创建变量。C#上位机也不例外,我们需要自己去实现变量配置的过程,不同的开发人员实现变量配置的方法各不相同,一般会有以下几种方式:
  • 数据库存储
  • ini存储
  • xml文件存储
  • json文件存储
  • excel文件存储
但是使用什么方式,原理都是相通的,只是存储的形式不一样而已。那么这个配置库的原理是怎样的呢?我们可以将单个PLC设备,抽象成一个Device类。每个Device类中,会有若干个组,单个组抽象成一个Group类。每个组里,会有若干个变量,单个变量抽象成一个Variable类。设计过程中会涉及到接口、继承、抽象类等技术。最终形成一个这样的架构:一个Project会有若干个Device,每个Device对象里会有若干个Group,每个Group中会有若干个Variable。这样对于我们来说,每个PLC就是一个Device对象,我们只需要调用一行代码即可将配置文件解析成设备对象,多个PLC就是设备对象的集合。

三、配置+通信

目前我们已经实现了配置库和通信库,这两个是独立的。通信框架的核心在于将配置与通信进行融合。我们可以在Device类中创建一个通信对象。那这样在Device既可以获取到所有的配置信息,又可以获取到通信对象,所有的通信过程都可以实现了。我们可以在Device类中创建一个Start方法,基于多线程实现数据读取,并将断线重连、数据解析、数据处理、报警判断等逻辑均写在底层。

四、项目应用

当我们有了通信框架之后,不同的项目无非就是配置不同。

而且框架会越来越成熟,因为每个项目都会增加你的经验值,并且我们可以不断地进行优化完善。

我从2017年开始,使用这套框架开发了上百个项目,WinForm与WPF都可以使用,开发效率很高,并且非常稳定。

这样我们就把更多的精力放在界面和业务逻辑上,用更短的时间完成项目开发。

图片完成启动后,与PLC数据交互也非常简单:
  • 读取只需调用Device["变量名称"]
  • 写入只需调用Device.Write("变量名称","写入值")


声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • RF
  • 射频
  • 通信
  • 无线
下载排行榜
更多
评测报告
更多
广告