电工学习网

 找回密码
 立即注册
查看: 6823|回复: 0

C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺

[复制链接]
发表于 2018-11-9 08:27:57 | 显示全部楼层 |阅读模式
WINCC用户归档(配方)使用C#实现下拉列表选择工艺(传统方式要么使用按钮配合ID来控制,要么使用配方视图,按钮小的可怜),所有突发奇想就自己写了一个.NET控件来代替传统操作方式,当然是要WINCC自带的VBS脚本和C脚本也可以实现此功能,但是WINCC的脚本开发环境实在不好用,所有就放弃了;还是宇宙第一Visual Studio 好用
下面先来看下效果,后面再介绍怎么在WINCC里实现的
6367731837209089378372520.gif
是不是感觉很方便,下拉框选择 工艺名称就可以自动调取相对应的参数列表,点击下载按钮就把数据下载到plc
下面来看看WINCC里怎么配置的,最后再解释C#里怎么编写的
1.添加C#写好的.NET控件,在我的控件里选择对象
6367731841052617973528733.png

2.选中.NET控件的路径,会自动出现控件内容,勾选上
6367731841554151587897117.png
3.添加之后会在我的控件里多出一个控件,可拖拽至画面中
6367731842024436997593391.png
4.拖拽到画面中就会看到红色区域内界面
6367731842483785537790431.png
5.添加一些内部变量,供用户归档控制使用(名称和数据类型必须和图内一致)
6367731843250928848213525.png
到这里WINCC的配置就结束了,是不是感觉很简单;没错,简单就对了 组态软件里要的就是简单粗暴。。。。。。。。
下面就来看看细腻的C#实现方法,这个可是麻烦又温柔的,别小看一个WINCC简单的控件,你不知道厂家在后台写了多少行代码才实现,比如WINCC里的IO域(输入的时候停止更新显示信息,而且输入的时候内容默认全选,输入完成后改变PLC变量状态,同时又继续更新显示) 这可是繁琐的事件操作,在我们看来也就是一拖一放一配置就完事了。。。。好了,废话不多说了,进入正题。。。。
1.咱们先来做好界面,在这里我就随便拖几个控件,不讲究美观了,实现功能为主
6367731844644598568587960.png
2.画面做好了,我们就来讲讲整个控件的思路,WINCC的用户归档数据全部存储在SQL数据库里,我们可以进入整个数据库来查看下具体数据,一旦能让我们进入数据库那么里面的数据还不任由我们C#代码提取了 ,下面来看看数据库里的内容:首先,数据库名字最后一个字母带R的就是我们正在运行的,然后UA#Recipe_1就是我们的用户归档名称,打开表就看到我们的数据内容了
6367731846577299733516214.png
3.在WINCC里我们知道控制用户归档的主要两个变量就是ID和JOB,这里ID只能为数字而且是增量不可更改,JOB是命令(控制新建,保存,下载,删除),还需要一个供我们用户识别的代号(工件名称),这时就需要再新建一个变量当做工件名称选择
6367731847800666762379686.png
4.主要以C#去查询工件名称这个变量信息再去索引与它相对应得ID号,这样就可以名称和ID对应,调取就不是事了,下面来看代码:
6367731857057946013196319.png

6367731856287677881016562.png

6367731855351794291908095.png
6367731859146888187379639.png

6367731859664045897233164.png
5.只有WINCC运行起来后才可调取数据库,因为数据库是在运行后才有的,我找了两个WINCC运行后才会出现的进程来判断WINCC是否运行

6367731860867101595625587.png
6.新建按钮,保存按钮,下载按钮,删除按钮都通过操作WINCC的内部变量来实现操作,这里使用到了一个dll, 只有在安装WINCC后计算机才会出现这个,这是WINCC提供外部程序访问变量的一个API
6367731862387326529514052.png

6367731862731056725696296.png

6367731863120096813508373.png

6367731863348208679377648.png
7.这里还使用到了ini文件的配置,为了掉电保存当前选择是哪一项工艺,当然也可以使用PLC变量来做(PLC有掉电保存区域),我在这里为了和PLC分离所有使用了ini来保存到计算机里,计时没有PLC也可以保持。
6367731865280909844305902.png

6367731865832440571588200.png
文章写到这里也该结束了,如果看不太明白的可以到GitHub下载源码来研究(一定要引用WinCC hmiRuntime 1.0 Type Library,否则没办法和WINCC通讯,且程序会报错)
在这里来点杂谈,其实我们做为西门子的忠实粉丝,他的软件产品里太多微软的痕迹,不过也是基于.NET平台做的开发,不难发现在博图里数据结构什么的都和.NET里类似了,越来越接轨了,在高版本的1500里已经支持C/C++语言开发了,在这里给大家提点建议,我们能使用C#写一个配方的.NET控件来嵌入到WINCC里使用,同样以后遇到复杂的数据存储或者操作的时候WINCC往往满足不了功能需求,这时也可以自己开发一个控件嵌入WINCC使用,不失为一种好办法。
现在做工控的和IT接轨越来越近了,视觉 AI Python 什么的在这几年都应用到了工控领域,较多的工程师喜欢使用Halcon和OpenCV开发视觉识别,都是应用在工控领域,在十年前根本不可想象;还有现在比较前卫的HTML5+CSS开发WEB来代替传统SCADA;opcUA的广泛应用,云端的推行,让手机,电脑,Ipad各种设备都能去监控工业数据,统统一个浏览器就搞定;这个趋势也是体现了工控行业已经不是老一套(玩玩PLC,搞搞组态,拖几个触摸屏)就能继续活下去时代。。。。。。。。。。

回复

使用道具 举报

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

本版积分规则

电工学习网 ( )

GMT+8, 2024-3-29 23:19

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

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

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

快速回复 返回顶部 返回列表