使用C#+WPF做S7-1200上位机(附上源码QQ:8300877)

已锁定

梦到内河

  • 帖子

    10
  • 精华

    3
  • 被关注

    114

论坛等级:侠客

注册时间:2015-03-07

普通 普通 如何晋级?

使用C#+WPF做S7-1200上位机(附上源码QQ:8300877)

52840

68

2018-09-05 23:33:34

star star star star star

使用C#编程语言编写PLC上位机软件(源码在文章最后)

    本程序使用WPF做界面,C#做逻辑,为了界面美观使用了老外的一个开源皮肤框架,逻辑代码为了和S7-1200通讯使用了行内一位大神的库。

    借鉴大神的框架在文章后面会提到(这里也是为了尊重原创作者的劳动成果)。


下面来看看界面,再一一介绍下程序框架:

主界面(使用一个win窗口来作为显示,界面左侧有弹出菜单,界面内容通过菜单按钮调用Page来实现界面内容转换)





控制界面使用了按钮和滑动条,按钮模拟了HMI的工作模式,弹起和按下事件分别置位复位PLC变量,滑块是自己做的一个Style,WPF这点还是很方便的。


参数输入界面模拟了 HMI的 IO域,编辑时不刷新变量,输入完成后写入变量,再更新变量里的内容;右边配方功能也是模拟的西门子HMI里配方功能,保存参数到序列化文件,读取的时候反序列化写入PLC变量


曲线记录界面使用了DynamicDataDisplay 开源控件来做为曲线显示,此控件比较强大。在曲线显示的同时后台还要记录数据,在此使用了list来缓存数据并保存到序列化文件,在记录完成后反序列化一次性写入access数据库。



数据查询界面利用日历控件来作为搜索access数据的条件,筛选出零件编号,再把零件编号的对应数据以曲线方式呈现出来,同时也可以以表格方式呈现



故障报警界面使用listbox控件做为显示,利用的消息队列来排序故障信息


更改皮肤颜色界面是这个UI框架附带的功能,效果蛮好。







下面来介绍下程序

界面初始化时连接PLC


PLC连接方法


建立一个实体类,作为需要读取的PLC变量,一次性读取多个变量数据。




曲线刷新使用了多线程,关于数据全部在后台线程里进行,不影响界面运行


曲线数据更新到list使用了linq语法来筛选出需要的数据进行读和写


序列化数据内容,写入到access,当时试过一遍读取数据一遍写入数据库,发现耗时很长,后来想到序列化,缓存再一次性写入,速度提高很多。



目前就介绍到这里,有需要做类似项目的同行可以在下面评论联系,相互学习。

QQ:8300877    QQ群:923525781


本程序源码github地址


https://github.com/lt8300877/NormalizingApp

如果喜欢可以star或是fork。








这里介绍一下PLC通讯库

HslCommunication组件库;

NuGet地址:

https://www.nuget.org/packages/HslCommunication/



Material DesignXamlToolKit 皮肤框架源码

github地址

https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit



使用C#+WPF做S7-1200上位机(附上源码QQ:8300877) 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有13023条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。