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

注册 登录

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

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

技术论坛


编辑推荐: 关闭

请填写推广理由:

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

作者 主题
游侠

经验值: 401
发帖数: 8
精华帖: 2
主题:【分享】C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺
精华帖精华帖星级5级 推荐帖


只看楼主 只看精华 楼主 2018-11-09 00:05:25

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,搞搞组态,拖几个触摸屏)就能继续活下去时代。。。。。。。。。。


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



 
分享帖版主置评: 感谢分享 (推荐人:RENHQ)
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=5&a_id=1516617

奇侠

经验值: 5641
发帖数: 1306
精华帖: 20
回复:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺
推荐帖


只看楼主 只看精华 1楼 2018-11-09 07:47:45
其实,我还是喜欢直接用文本列表做菜单;
我比较喜欢能够直观的看到所有配方以及配方的所有数据;
所以,原配控件刚好WinCC7感觉调用不同版本.net各种兼容性问题太拉仇恨了。
至于Web,nodejs+chorme浏览器棒棒的。nodejs有全套webserver组件可用,串口、以太网…乃至各种协议。chorme浏览器特性比其他浏览器多太多浏览网页的不二选择。
至于MSVS宇宙最好用?java笑了,众多嵌入式笑了,就微笑的看着你不说话。
 
以下网友喜欢您的帖子:

  
侠士

经验值: 1106
发帖数: 133
精华帖: 2
回复:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺
推荐帖


只看楼主 只看精华 2楼 2018-11-09 08:34:27

太强大了,最近在测试C#编写的服务软件与PLC远程交互的通讯速度,目前结果还不错。


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 2953
发帖数: 419
精华帖: 0
回复:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺
推荐帖


只看楼主 只看精华 3楼 2018-11-09 09:48:19

感觉楼主好强大,C#语言比较难学,VB。NET研究过一段时间感觉好掌握一点,不过也就了解一下,以后跨界IT是工控人必须掌握的。


学无止境
以下网友喜欢您的帖子:

  
至圣

经验值: 14484
发帖数: 1290
精华帖: 46
回复:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺
推荐帖


只看楼主 只看精华 4楼 2018-11-09 09:57:08


不错的分享。


网鱼能够改善伙食,还能释放工作中的压力。
以下网友喜欢您的帖子:

  
侠客

经验值: 711
发帖数: 23
精华帖: 0
回复:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺
推荐帖


只看楼主 只看精华 6楼 2018-11-09 11:28:32

感谢楼主的分享


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3541
发帖数: 574
精华帖: 0
回复:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺
推荐帖


只看楼主 只看精华 7楼 2018-11-09 13:22:19


高手,原代码也有!


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 4782
发帖数: 931
精华帖: 0
回复:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺
推荐帖


只看楼主 只看精华 8楼 2018-11-10 08:21:49

感谢 分享!


邮箱 yongquancun@126.com
以下网友喜欢您的帖子:

  
奇侠

经验值: 5438
发帖数: 77
精华帖: 0
回复:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺
推荐帖


只看楼主 只看精华 9楼 2018-11-10 08:38:41

学习了,最近有相关的脚本程序需要编制一下,谢谢


Do my best everyday
以下网友喜欢您的帖子:

  
侠圣

经验值: 2565
发帖数: 1101
精华帖: 3
回复:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺
推荐帖


只看楼主 只看精华 10楼 2018-11-10 08:49:31

 

最近在做一个c#通过1500集成的web server访问PLC的测试。

想搞成类似于HMI功能的画面,无需任何驱动,只需通过网页访问。

实现倒是实现了,感觉速度太慢了。(是server刷新的速度慢,不是访问速度慢)

有做过类似应用的希望交流。

 

另外

msvs确实是多数人公认的宇宙第一开发环境。

据说.netcore也要支持UI跨平台了,拭目以待吧。


QQ 402550360
以下网友喜欢您的帖子:

  
侠士

经验值: 1753
发帖数: 206
精华帖: 0
回复:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺


只看楼主 只看精华 11楼 2018-11-10 11:00:56


谢谢分享了!


随心所欲
以下网友喜欢您的帖子:

  
游士

经验值: 228
发帖数: 6
精华帖: 0
回复:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺


只看楼主 只看精华 12楼 2018-11-12 12:46:20

好贴啊,我们项目上WINCC、IFIX的报表,也可以开发.NET控件。



 
以下网友喜欢您的帖子:

  
侠客

经验值: 604
发帖数: 122
精华帖: 1
回复:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺


只看楼主 只看精华 13楼 2018-11-12 17:55:27

 

以后学习努力的方向!


雄关漫道真如铁,而今迈步从头越!
以下网友喜欢您的帖子:

  
游士

经验值: 221
发帖数: 44
精华帖: 0
回复:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺


只看楼主 只看精华 14楼 2018-11-13 15:44:47

楼主的想法不错,可惜路走偏了,记住不要去read wincc sql, 没有打击楼主的意思


  1. 添加WinCC UserArchiveControl 1.2 Type Library

  2. 拿到所有列的名字

 var cols = ccuc.GetColumnCollection();


            var colCount = cols.Count;


            for (int i = 0; i < colCount; i++)

            {

                var col = cols[i] as ICCAxUAColumn;

                Trace.WriteLine(col.Name);

            }

3. 拿到选定的row

var row = ccuc.GetSelectedRow();


            if(row!=null)

            {

                var count = row.CellCount;


                for (int i = 1; i <= count; i++)

                {

                    Trace.WriteLine(row.CellText[i]);

                }

            }

枚举所有row

var rows = ccuc.GetRowCollection();


            foreach (ICCAxDataRow r in rows)

            {

                var count = r.CellCount;


                for (int i = 1; i <= count; i++)

                {

                    Trace.WriteLine(r.CellText[i]);

                }

            }



 
以下网友喜欢您的帖子:

  
游民

经验值: 116
发帖数: 4
精华帖: 0
回复:C#开发.NET控件实现WINCC用户归档(配方)的下拉框选择工艺


只看楼主 只看精华 15楼 2018-11-14 11:08:16


贴主厉害了·


学习编程 走向人生巅峰?
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
扫描打开手机版
您收到0封站内信:
×
×