技术论坛

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

返回主题列表
作者 主题
梦到内河
侠客

经验值: 730
发帖数: 10
精华帖: 3
楼主    2018-09-05 23:33:34
主题:使用C#+WPF做S7-1200上位机(附上源码QQ:8300877) 精华帖 

使用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



刚刚入门
至圣

经验值: 12687
发帖数: 2083
精华帖: 23
1楼    2018-09-06 10:02:11
主题:回复:使用C#+WPF做S7-1200上位机

楼主厉害,C#等做监控界面以后也会越来越多,毕竟开放性好。只要与下位PLC的通讯稳定的话是可以取代组态软件的(小规模单站)。

西南小霸王
侠客

经验值: 929
发帖数: 179
精华帖: 0
2楼    2018-09-06 10:05:16
主题:回复:使用C#+WPF做S7-1200上位机

这界面真漂亮,怎么搞的

断剑重铸之日,骑士归来之时
云淡风轻0202
游士

经验值: 267
发帖数: 23
精华帖: 0
3楼    2018-09-06 10:07:55
主题:回复:使用C#+WPF做S7-1200上位机

大神!学习下!希望有朝一日也能有这个水准1

华丽地跌倒,胜过无谓地徘徊。
huanqiong
侠客

经验值: 965
发帖数: 15
精华帖: 0
4楼    2018-09-06 10:26:52
主题:回复:使用C#+WPF做S7-1200上位机
变量访问能符号导入导出就好了
Hello!
z100o
侠圣

经验值: 3003
发帖数: 455
精华帖: 0
5楼    2018-09-07 08:59:08
主题:回复:使用C#+WPF做S7-1200上位机

厉害,真是开眼界了

Automation
ewaew
游侠

经验值: 311
发帖数: 6
精华帖: 0
6楼    2018-09-07 10:06:24
主题:回复:使用C#+WPF做S7-1200上位机
现在很多面向管理层的软件,例如EMS啊,WMS啊,甚至MES(也是醉了),都使用.NET平台,微软现在出来一个.NET Core 可以跨平台 (Windows、Mac OSX、Linux)。这以后就是个趋势啊,毕竟.NET的实时性好啊。还可以用Blend画画面很好看的。关键是这些免费啊,就人工。B/S结构,也不用装什么组态软件。底层交互OPC UA(Kepware之类)。不过这都是用于中小企业啊,大的企业直接买西门子、AB、GE的平台。有很多功能可以不用开发,不过嘿嘿,不一定适用中国。


渔明鱼工
至圣

经验值: 23897
发帖数: 2059
精华帖: 78
7楼    2018-09-07 14:54:23
主题:回复:使用C#+WPF做S7-1200上位机


不错的贴子!

网鱼能够改善伙食,还能释放工作中的压力。
Siemens automation
奇侠

经验值: 5535
发帖数: 626
精华帖: 6
8楼    2018-09-07 15:27:31
主题:回复:使用C#+WPF做S7-1200上位机

 

楼主我一直想学习一下写上位机,有没有好的学习资料推荐以下,我还没有入门。

sangshunyang
侠圣

经验值: 4091
发帖数: 565
精华帖: 4
9楼    2018-09-07 16:07:35
主题:回复:使用C#+WPF做S7-1200上位机

在网站没有找到 PLC通信的基础类库,谁找到了分享出来呗。C#能连接上S7-1200 1500,自己开发个小东西就好玩了。

liubo1975
至圣

经验值: 15669
发帖数: 644
精华帖: 0
10楼    2018-09-07 20:40:51
主题:回复:使用C#+WPF做S7-1200上位机

又一个大神,厉害

岂能尽如人意 但求无愧我心
无敌KK猫
游士

经验值: 210
发帖数: 3
精华帖: 0
11楼    2018-09-08 10:41:52
主题:回复:使用C#+WPF做S7-1200上位机

太厉害!学习学习!

quiet
奇侠

经验值: 7585
发帖数: 1989
精华帖: 0
12楼    2018-09-09 10:31:44
主题:回复:使用C#+WPF做S7-1200上位机
大神厉害啊,大神有没有考虑转IT方向的工作呢,毕竟FA的待遇比IT差了好多。
ewaew
游侠

经验值: 311
发帖数: 6
精华帖: 0
14楼    2018-09-10 10:22:38
主题:回复:使用C#+WPF做S7-1200上位机


确实是,PLC也就那么一回事,个人不敢说什么精通,也设计加调试过上千万的项目。大家有机会还是转IT吧,公司一毕业一年的java15K。一直认为开源促进人类文明的进步,最佩服一些开源组织阿帕奇之类的,分享一些jar包,楼上就是一个开源网站,再分享一个nuget。上次记得有个朋友分享一个s7.net驱动,非常感谢。可笑的是,我发现只要一沾点工业,就有些人认为可有价值金贵得很。故步自封!是,有些工艺包确实有价值。在此感谢分享资料的人,论坛是个交流学习的地方,希望广告党好自为之!!!

quiet
奇侠

经验值: 7585
发帖数: 1989
精华帖: 0
15楼    2018-09-10 14:22:50
主题:回复:使用C#+WPF做S7-1200上位机
我以前也回过一贴,还是那个观点,年轻人能到IT行业立足的,还是赶紧改行。那个帖子中还有人说什么情怀,爱好,这些能当饭吃,当房子住吗。打工的人难道多赚点工资不好吗。
gaofei2013
侠圣

经验值: 2865
发帖数: 367
精华帖: 3
16楼    2018-09-11 09:22:10
主题:回复:使用C#+WPF做S7-1200上位机

谢谢楼主,大家可以fork一下,一起完善

耀眼光芒
侠圣

经验值: 2331
发帖数: 382
精华帖: 3
17楼    2018-09-11 23:24:09
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)

多谢提供项目,腾出功夫就看下。


这个通讯本质是tcp的S7协议,如果通讯正常则一切正常,建议将通讯单独放到一个线程里?或者更好的方式,这样拔网线或CPU重启都不会卡界面等问题,具体没有测试您的代码,不知道是否作了这样设计。


C#学习中……


工艺第一& 我所说的一切均代表个人意见
yzm_cumt
至圣

经验值: 18253
发帖数: 2653
精华帖: 14
18楼    2018-09-12 08:08:10
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)

 

,学习中

sometimes you have to be your own hero!
yecao2006
至圣

经验值: 18013
发帖数: 1524
精华帖: 2
19楼    2018-09-12 08:45:45
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)

强文,值得推荐推广。

我回来了!继续努力!
Rossi84
侠圣

经验值: 3904
发帖数: 370
精华帖: 1
20楼    2018-09-12 16:22:34
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)

@梦到内河 大侠,你这编译环境是哪个版本呢,我用Visual Studio 2010 打不开,

无法改变之前,努力改变之后
西南小霸王
侠客

经验值: 929
发帖数: 179
精华帖: 0
21楼    2018-09-12 16:41:22
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)

工业很金贵,但也要看什么样的工业,我国的工业?没毕业之前厉害了我的国,毕业后厉害了你美国大爷

断剑重铸之日,骑士归来之时
ljch1978
侠圣

经验值: 2229
发帖数: 120
精华帖: 0
22楼    2018-09-15 10:03:03
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)



都不用组态软件了,非常棒 

 关键是通讯可靠性怎么样?

以前听朋友说过他们公司就是自己用C++做的界面,经常出现断网的现象,后来所有的硬件都没变,上位机用成WINCC之后就没怎么出现系统网络瘫痪。

gaofei2013
侠圣

经验值: 2865
发帖数: 367
精华帖: 3
24楼    2018-09-17 10:19:47
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)

请问一下,有人用qt做过吗

ly7158
侠士

经验值: 1620
发帖数: 154
精华帖: 0
25楼    2018-09-17 11:36:03
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)

看起来很厉害

而上。
侠士

经验值: 1255
发帖数: 77
精华帖: 0
27楼    2018-09-18 08:58:25
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)
c+内容还在学习中,非常详细的说明了
sunnydragon
游民

经验值: 51
发帖数: 1
精华帖: 0
28楼    2018-09-18 21:04:32
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)

感觉做的比wincc好看。。。

Cope
侠圣

经验值: 3008
发帖数: 294
精华帖: 1
29楼    2018-09-20 13:22:44
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)


WPF 界面比winform美观多了。

jianwei_linux
游民

经验值: 124
发帖数: 8
精华帖: 0
30楼    2018-09-21 17:27:12
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)


看起来就很厉害了。

RENHQ
至圣

经验值: 68883
发帖数: 12216
精华帖: 59
33楼    2018-09-26 00:02:51
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)

很强大啊,感谢楼主分享

Q群:https://jq.qq.com/?k=9BDuEgf6
冬日
奇侠

经验值: 8530
发帖数: 3422
精华帖: 56
34楼    2018-09-26 21:58:51
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)

我也在做,不过用的是winform,感觉这个比较好上手点,但是没有wpf做的漂亮。

搞工控出身半路出家的,做it好累,有机会互相交流。




If anything can go wrong, it will.
冬日
奇侠

经验值: 8530
发帖数: 3422
精华帖: 56
35楼    2018-09-26 22:12:08
主题:回复:使用C#+WPF做S7-1200上位机(附上源码)

大概看了下,楼主的数据好像是在后台的线程不停的刷新?

我也刚学.Net,大概知道wpf相比winform有几个很大的优点,一个是数据和前端低耦合,二是数据驱动而不是事件驱动,三是可以做到很漂亮……楼主这么做前面两个优势好像没有了。

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