技术论坛

关于在WINCC中使用脚本快速组态的分享与探讨

作者 主题
游士

经验值: 161
发帖数: 6
精华帖: 0
主题:【探讨】关于在WINCC中使用脚本快速组态的分享与探讨


只看楼主 楼主 2022-03-17 15:00:45

本人从事自动化5年,主要是在水处理行业。就自身行业而言,水处理整体逻辑偏简单,但项目设备往往比较多。这就造成了我们在组态中需要做大量重复的劳动。比如,每个设备都要组态状态颜色的变化,通常我们会用动态对话。每个设备点击后都要弹出相应的弹窗,需要设置相应的变量前缀。这些活比较简单,但当设备数量上升到几百个上千个后,这也就变成了一项大工程。所以我们开始研究如何通过脚本来使这些组态变得更加快捷。

首先看下我们的变量,为了节省WINCC外部点位,我们将所有设备的状态以及启停点位全部整合到一个Word里面,这样一个设备只占用一个外部点位。

接下来是脚本 ,脚本涉及到很多条件的判断,这是由于不同设备类型造成的。同时对于设备的颜色,我们并没有指定特定的颜色,而是指向了主画面上图例的颜色。这样如果客户要求非常规的运行停止颜色,我们也可以通过更改图例颜色来完成,无需一个个更改。

然后是组态,由于脚本被封装进了项目模块里。所以只要把模块拖过来就行了。




最后,我们的工程人员只需要将该控件的对象名称改成设备编号即可完成组态。由于所有的设备用的是同一个脚本,直接点开设备ctrl+V就可以了


最后写一下我想与诸君一起探讨的事情,我一直有一个理念,就是重复的机械式的事情交给脚本解决。但在实际项目中,有很多这样的情况我们目前还无法解决。比如说,对于每个设备我们都会有一个故障的变量,这个变量在固定的位置,并且是一定会进报警记录的,那么我们能不能做一个按钮,一键添加报警呢?我们的模拟量显示值,也是肯定会进变量记录的,那能不能一键添加呢? 我们的模拟量显示的窗口能否根据结构变量的数量自动生成呢?比如说我有50个模拟量,当我点击生成按钮,出现50个模拟量画面窗口。以上这些功能,VBA可以做到,但VBA无法在项目运行后的界面操作行,C可以做到吗?




 
以下网友喜欢您的帖子:

  
重要声明:

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

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1752605&b_id=5&s_id=0&num=10

版主

经验值: 69050
发帖数: 12265
精华帖: 59
回复:关于在WINCC中使用脚本快速组态的分享与探讨


只看楼主 1楼 2022-03-17 15:05:38

C也做不到,没办法运行的时候创建变量


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
游士

经验值: 161
发帖数: 6
精华帖: 0
回复:关于在WINCC中使用脚本快速组态的分享与探讨


只看楼主 楼主 2楼 2022-03-17 15:08:37

不是要创建变量,而是在变量已经创建的前提下根据变量生成相应的报警和记录。能不能通过SQLserver完成?因为WINCC所有的数据记录归根到底还是存在SQLserver里面的。我找到了里面存放报警记录的表格,但我在里面人工添加数据并不能反应到WINCC,所以我猜测里面的表格也是有连锁关系的。


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3816
发帖数: 730
精华帖: 3
回复:关于在WINCC中使用脚本快速组态的分享与探讨


只看楼主 3楼 2022-03-17 15:14:18
  1. 画面中不建议大量使用循环脚本,大量使用循环脚本可能会导致图像运行系统崩溃。

  2. 报警和变量记录个人觉得excel才是最方便的工具,EXCEL可以很方便的写有些简单的运算式,可以快速生成一些简单重复的文本。

  3. 模拟量可以通过结构变量加改变画面窗口前缀的方式快速显示,只需要做一次模板画面,运行中重复调用此画面,只改变变量前缀即可。


 
以下网友喜欢您的帖子:

  
游士

经验值: 161
发帖数: 6
精华帖: 0
回复:关于在WINCC中使用脚本快速组态的分享与探讨


只看楼主 楼主 4楼 2022-03-17 15:22:57
以下是引用手机用户20180604694547在2022-03-17 15:14:18的发言 >3楼
  1. 画面中不建议大量使用循环脚本,大量使用循环脚本可能会导致图像运行系统崩溃。

  2. 报警和变量记录个人觉得excel才是最方便的工具,EXCEL可以很方便的写有些简单的运算式,可以快速生成一些简单重复的文本。

  3. 模拟量可以通过结构变量加改变画面窗口前缀的方式快速显示,只需要做一次模板画面,运行中重复调用此画面,只改变变量前缀即可。

循环脚本的使用我们也有疑虑,但目前项目运行下来我们最多一个画面是一百个不到的设备,还未出现系统卡死的情况。考虑到WINCC线程的问题,我们仅在我帖子里提到的这两处用VBS脚本,其他所有的脚本均为C。

模拟量包括设备操作画面我们现在都是用画面窗口加修改前缀完成的。但是涉及到数量增加较多时还是一个重复的工程。


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3816
发帖数: 730
精华帖: 3
回复:关于在WINCC中使用脚本快速组态的分享与探讨


只看楼主 5楼 2022-03-17 15:44:18
以下是引用来远在2022-03-17 15:22:57的发言 >4楼

循环脚本的使用我们也有疑虑,但目前项目运行下来我们最多一个画面是一百个不到的设备,还未出现系统卡死的情况。考虑到WINCC线程的问题,我们仅在我帖子里提到的这两处用VBS脚本,其他所有的脚本均为C。

模拟量包括设备操作画面我们现在都是用画面窗口加修改前缀完成的。但是涉及到数量增加较多时还是一个重复的工程。

以下是引用手机用户20180604694547在2022-03-17 15:14:18的发言 >3楼:画面中不建议大量使...

引用3楼详细内容:

  1. 画面中不建议大量使用循环脚本,大量使用循环脚本可能会导致图像运行系统崩溃。

  2. 报警和变量记录个人觉得excel才是最方便的工具,EXCEL可以很方便的写有些简单的运算式,可以快速生成一些简单重复的文本。

  3. 模拟量可以通过结构变量加改变画面窗口前缀的方式快速显示,只需要做一次模板画面,运行中重复调用此画面,只改变变量前缀即可。

之前我有一个项目我偷懒就全部用脚本生成数据,结果偶尔画面就会崩溃。

量多我的建议是将设备做成自定义控件,然后只放出需要修改的属性,将对象名改成你的变量前缀,后面调用画面的时候直接读取对象名,这样你的脚本直接不用再修改的了只需要修改对象名,而且这还要另外一个好处,对象名是不可重复的,如果出现重复系统会提示你,这时你就可以检测是否有错误。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 24344
发帖数: 4846
精华帖: 6
回复:关于在WINCC中使用脚本快速组态的分享与探讨


只看楼主 6楼 2022-03-17 17:05:30

我们老板比你更醉心于此,你的需求他都能做到,像操作框,报警记录都是自动生成的。但我不大习惯。批量生成的就像是春节期间去饭店吃的都是流水席配餐。量身定做的是精美小炒,就是费工夫。他的先进方法我是这辈子学不会了!呵呵呵。但是他培养的手下会造成一种怪现象,他开发出的就会应用,让他自己独立开发就搞不定。因为你根据现场特殊需求的机动开发很难有机的嵌入我们老板的系统。


谨慎低调
以下网友喜欢您的帖子:

  
版主

经验值: 43587
发帖数: 15780
精华帖: 61
回复:关于在WINCC中使用脚本快速组态的分享与探讨


只看楼主 7楼 2022-03-17 17:14:10

wincc能不用脚本的就不要用脚本,用了脚本影响wincc的运行速度。


活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
至圣

经验值: 23742
发帖数: 3385
精华帖: 52
回复:关于在WINCC中使用脚本快速组态的分享与探讨


只看楼主 8楼 2022-03-17 17:23:29

创建变量, 运行时c脚本可以。 组态时恐怕不行。


如果想实现, 可以借助外部软件,调用 wincc的sdk接口, 有一整套关于变量和画面编辑的接口。


不忘初心
以下网友喜欢您的帖子:

  
游民

经验值: 123
发帖数: 13
精华帖: 0
回复:关于在WINCC中使用脚本快速组态的分享与探讨


只看楼主 9楼 2023-01-14 10:29:53

提几个意见:

  1. 细节封装太过,而且没考虑同一个画面2个控件同名的情况。

  2. 没有注释

  3. 变量名称随意,比如A,B,I,J

  4. 行缩进不规范

以下是我的二级弹出菜单脚本,供你参考:

Sub OnClick(ByVal Item)                



Dim obj0

Dim name0

Dim name1

Dim name2

Dim offsX

Dim offsY


name0 = "FV_3" 'main画面中的二级菜单容器名

name1 = "SV10" '归一化管理前缀名和容器标题

name2 = "阀门测试.Pdl" '二级菜单实例名

offsX = -100 '容器水平位置,+向右,-向左

offsY = 0 '容器垂直位置,+向下,-向上


Set obj0 = Parent.Parent.ScreenItems(name0)


obj0.Visible = False

obj0.PictureName = name2

obj0.CaptionText = name1

obj0.Left = Item.Left + offsX

obj0.Top = Item.Top + offsY

obj0.TagPrefix = name1

obj0.Visible = True



End Sub



 
以下网友喜欢您的帖子:

  
游士

经验值: 156
发帖数: 15
精华帖: 0
回复:关于在WINCC中使用脚本快速组态的分享与探讨


只看楼主 10楼 2023-01-14 21:47:39

涨知识,谢谢谢


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
关于在WINCC中使用脚本快速组态的分享与探讨
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。