西门子(中国)有限公司(SLC)

注册 登录

  签到   每日登录:+1西币 +1经验值我的支持中心

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。

技术论坛


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

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

经验值:406
发帖数:8
精华帖:2
楼主    2018-11-09 00:05:25
主题:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺 精华帖 

WINCC用户归档(配方)使用C#实现下拉列表选择工艺(传统方式要么使用按钮配合ID来控制,要么使用配方视图,按钮小的可怜),所有突发奇想就自己写了一个.NET控件来代替传统操作方式,当然是要WINCC自带的VBS脚本和C脚本也可以实现此功能,但是WINCC的脚本开发环境实在不好用,所有就放弃了;还是宇宙第一Visual Studio 好用


下面先来看下效果,后面再介绍怎么在WINCC里实现的



是不是感觉很方便,下拉框选择 工艺名称就可以自动调取相对应的参数列表,点击下载按钮就把数据下载到PLC里


下面来看看WINCC里怎么配置的,最后再解释C#里怎么编写的

1.添加C#写好的.NET控件,在我的控件里选择对象


2.选中.NET控件的路径,会自动出现控件内容,勾选上


3.添加之后会在我的控件里多出一个控件,可拖拽至画面中


4.拖拽到画面中就会看到红色区域内界面


5.添加一些内部变量,供用户归档控制使用(名称和数据类型必须和图内一致)



到这里WINCC的配置就结束了,是不是感觉很简单;没错,简单就对了 组态软件里要的就是简单粗暴。。。。。。。。




下面就来看看细腻的C#实现方法,这个可是麻烦又温柔的,别小看一个WINCC简单的控件,你不知道厂家在后台写了多少行代码才实现,比如WINCC里的IO域(输入的时候停止更新显示信息,而且输入的时候内容默认全选,输入完成后改变PLC变量状态,同时又继续更新显示) 这可是繁琐的事件操作,在我们看来也就是一拖一放一配置就完事了。。。。好了,废话不多说了,进入正题。。。。


1.咱们先来做好界面,在这里我就随便拖几个控件,不讲究美观了,实现功能为主



2.画面做好了,我们就来讲讲整个控件的思路,WINCC的用户归档数据全部存储在SQL数据库里,我们可以进入整个数据库来查看下具体数据,一旦能让我们进入数据库那么里面的数据还不任由我们C#代码提取了 ,下面来看看数据库里的内容:首先,数据库名字最后一个字母带R的就是我们正在运行的,然后UA#Recipe_1就是我们的用户归档名称,打开表就看到我们的数据内容了



3.在WINCC里我们知道控制用户归档的主要两个变量就是ID和JOB,这里ID只能为数字而且是增量不可更改,JOB是命令(控制新建,保存,下载,删除),还需要一个供我们用户识别的代号(工件名称),这时就需要再新建一个变量当做工件名称选择



4.主要以C#去查询工件名称这个变量信息再去索引与它相对应得ID号,这样就可以名称和ID对应,调取就不是事了,下面来看代码:






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



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




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





文章写到这里也该结束了,如果看不太明白的可以到GitHub下载源码来研究(一定要引用WinCC HMIRuntime 1.0 Type Library,否则没办法和WINCC通讯,且程序会报错)

GitHub地址: https://github.com/lt8300877/WinccRecipeLib

喜欢的可以Star或者Fork

有兴趣讨论的也可以加QQ:8300877  QQ群:923525781  一起学习一起进步


在这里来点杂谈,其实我们做为西门子的忠实粉丝,他的软件产品里太多微软的痕迹,不过也是基于.NET平台做的开发,不难发现在博图里数据结构什么的都和.NET里类似了,越来越接轨了,在高版本的1500里已经支持C/C++语言开发了,在这里给大家提点建议,我们能使用C#写一个配方的.NET控件来嵌入到WINCC里使用,同样以后遇到复杂的数据存储或者操作的时候WINCC往往满足不了功能需求,这时也可以自己开发一个控件嵌入WINCC使用,不失为一种好办法。


现在做工控的和IT接轨越来越近了,视觉 AI Python 什么的在这几年都应用到了工控领域,较多的工程师喜欢使用Halcon和OpenCV开发视觉识别,都是应用在工控领域,在十年前根本不可想象;还有现在比较前卫的HTML5+CSS开发WEB来代替传统SCADA;OPCUA的广泛应用,云端的推行,让手机,电脑,Ipad各种设备都能去监控工业数据,统统一个浏览器就搞定;这个趋势也是体现了工控行业已经不是老一套(玩玩PLC,搞搞组态,拖几个触摸屏)就能继续活下去时代。。。。。。。。。。


这次就到这里吧,等下次再研究出来新功能了继续和大家分享干货,第一次看帖的可以进我的个人信息看看之前发的几篇帖子,都是干货哦


您收到0封站内信:
×
×