技术论坛

应用探讨-WinCC脚本应用

作者 主题
奇侠

经验值: 6089
发帖数: 3970
精华帖: 20
应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-18 17:23:18
脚本的应用给WinCC项目带来了极大的灵活性和开放性。通过使用脚本可以完成一些 WinCC 基本组态无法实现的功能。
从版本V6起,WinCC同时提供了C 和VB 两套脚本系统,使脚本功能更加丰富、易用。
9月11日之前,特召集广大网友围绕WinCC的 C 和VB 脚本展开讨论,欢迎在此分享讨论各种和脚本功能、性能相关的经验、技巧或问题,大家可以一起攻克难题、共同提高。
最后可以将大家交流的精华加以整理,便于今后作为实际应用的参考。参加探讨和在讨论中有突出表现的网友都将获得加倍奖励。
预祝大家交流畅快,收获丰富!
 
以下网友喜欢您的帖子:

  
重要声明:

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

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

侠圣

经验值: 2862
发帖数: 1760
精华帖: 55
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-18 17:42:59
呵呵,今天开了不少新的讨论帖啊,我冒昧开个头吧,欢迎拍砖。

首先C脚本功能实在是太强大了,除了系统提供的标准函数和系统函数外,还可以直接调用API函数,再加上可以直接使用ODK函数,,就连VBS中的Method调用也可以通过特别的办法实现,可谓是无所不能。当然缺点也是有的,不支持自动列出函数或者方法,编写程序多有不便。

自版本V6起又增加了VB脚本,它使用起来较为简单,而且入门很快。VBS自身的功能并不强,除了一些基本的函数和WinCC自身的对象(比如HMIRuntime.Tags),剩下的功能全部都得通过COM组件进行扩展,比如我们很熟悉的Excel、fso、ws cript.shell等等,通过这些组件使得WinCC访问Windows的接口得以增加,但是访问WinCC底层东西却没有(比如用户登陆、报表打印等) ,这是VBS美中不足的地方,希望下一版本能够改进,^_^。
管理员注:本帖已被纳入此次探讨发帖整理WinCC脚本应用,请点此详阅
非淡泊无以明志,非宁静无以致远
以下网友喜欢您的帖子:

  
侠圣

经验值: 2862
发帖数: 1760
精华帖: 55
回复:应用探讨-WinCC脚本应用
精华帖精华帖星级4级


只看楼主 只看精华 2009-08-18 18:05:58
VBS的另外一个弱点就是无法直接调用API函数,只能通过其他的方法解决。
网上常见的方法应该是通过dynwrap.dll先注册再调用,比如:
quote:
Dim UserWrap
Set UserWrap = CreateObject("DynamicWrapper")

' Call MessageBoxA(), first register the API function
UserWrap.Register "USER32.DLL", "MessageBoxA", "I=HsSu", _
"f=s", "R=l"
' now call the function
UserWrap.MessageBoxA Null, "MessageBox (ANSI)", _
"From DynaWrap Object", 3


dynwrap的下载地址我已经找不到了,大家可以上网搜索。另外安装DriveMonitor后就会有这个文件,详细用法在DriveMonitor帮助信息中也可以找到。

另外我试过利用Excel代为声明,VBS调用Excel的宏来实现,这是一篇我写的关于VBS结合EXCEL调用API函数的心得总结,内容太长我就不贴了,直接见附件,附件DOC附有本文档用到的Excel文件、VBS文件以及C函数。


VBS_EXCEL_API.rar
管理员注:本帖已被纳入此次探讨发帖整理WinCC脚本应用,请点此详阅
非淡泊无以明志,非宁静无以致远
以下网友喜欢您的帖子:

  
至圣

经验值: 13057
发帖数: 4961
精华帖: 81
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-18 18:32:01
我来提供dynwrap.dll的下载

经验不够只能外链了

点此下载
管理员注:本帖已被纳入此次探讨发帖整理WinCC脚本应用,请点此详阅
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3651
发帖数: 780
精华帖: 58
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-18 21:18:09
如楼上D侠所说,记得很久以前,我做的配料程序(DELPHI编写)要和WINCC做TCP通讯。当时的WINCC版本是4.02,只支持C脚本。当时刚接触SIEMENS PLC和WINCC,也不知道C脚本也支持COM控件的调用(当时只知道WINCC的C脚本兼容ANSI C)。最后用DELPHI写了一个动态链接库,实现SOCKET的读写。然后在WINCC中调用这个动态库,实现TCP SOCKET 通讯。
如果是现在,方法就很多了,当然首选我使用VBS脚本,使用现成的SOCKET控件。
其次,也可以使用C脚本创建SOCKET控件(论坛中有这样的代码)
最后,仍然可以使用动态链接库的方式。
不过我觉得还是VB脚本简单和方便,虽然效率低一点。
 
以下网友喜欢您的帖子:

  
侠士

经验值: 1144
发帖数: 601
精华帖: 0
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-18 22:04:42
先关注一下,我使用的脚本基本都是参考别人的,只是用于修改控制画面的一些效果,希望在这里能学到更多
 
以下网友喜欢您的帖子:

  
游士

经验值: 283
发帖数: 156
精华帖: 0
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-19 07:18:35
我想请教各位高手,怎样通过WINCC实现有声音的报警,出现故障后,电脑发出一定频率声音!
管理员注:本帖已被纳入此次探讨发帖整理WinCC脚本应用,请点此详阅
 
以下网友喜欢您的帖子:

  
版主

经验值: 17319
发帖数: 8473
精华帖: 18
回复:应用探讨-WinCC脚本应用
精华帖精华帖星级1级


只看楼主 只看精华 2009-08-19 08:01:44
还有一点值得注意,就是C脚本和VBS在WinCC运行系统中是独立的。可以做到特殊场合下的并行运行。

一般的编程人员,最好能掌握这两种脚本语言。
管理员注:本帖已被纳入此次探讨发帖整理WinCC脚本应用,请点此详阅
无论成与败,无论甜与苦,我还是我。
以下网友喜欢您的帖子:

  
游士

经验值: 240
发帖数: 34
精华帖: 4
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-19 10:26:28
quote:以下是引用阿阿涛在2009-08-19 07:18:35的发言:
我想请教各位高手,怎样通过WINCC实现有声音的报警,出现故障后,电脑发出一定频率声音!

#pragma code("kernel32.dll")
long Beep(long lFrequency,long lDuration);
#pragma code()
Beep(880,500);//高音
Beep(440,500);//低音
管理员注:本帖已被纳入此次探讨发帖整理WinCC脚本应用,请点此详阅
 
以下网友喜欢您的帖子:

  
奇侠

经验值: 7679
发帖数: 1228
精华帖: 2
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-19 13:11:53
学习这些脚本语言,先从什么学起?这两种语言我都会一点,但是我看别人写的东西还是很迷糊啊!郁闷啊!
every day is new day !
以下网友喜欢您的帖子:

  
侠士

经验值: 1425
发帖数: 969
精华帖: 2
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-19 14:54:23
wincc刚接触,有好些概念很是模糊,希望能从本次讨论提高一下认识,期待中。。。
我问上帝:“怎么样才能做到对悲伤的事情一边大笑一边遗忘?” 上帝答:“把自己弄疯!”
以下网友喜欢您的帖子:

  
奇侠

经验值: 5809
发帖数: 2050
精华帖: 3
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-19 15:10:15
蒙昧以求的讨论啊,希望高手多多传授经验啊!
请问如何对数据库进行查询,有没有系统的介绍啊?脚本对数据库的路径、入口怎么进入?
学习学习再学习
以下网友喜欢您的帖子:

  
版主

经验值: 17319
发帖数: 8473
精华帖: 18
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-19 15:13:25
编程思路最重要,脚本只是实现目标的手段。不能本末倒置。
管理员注:本帖已被纳入此次探讨发帖整理WinCC脚本应用,请点此详阅
无论成与败,无论甜与苦,我还是我。
以下网友喜欢您的帖子:

  
奇侠

经验值: 7917
发帖数: 3597
精华帖: 25
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-19 15:24:10
脚本其实就是为WINCC添加功能已弥补标准功能的不足。
 
以下网友喜欢您的帖子:

  
奇侠

经验值: 9081
发帖数: 639
精华帖: 57
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-19 16:20:04
WinCC的脚本功能确实非常强大,特别是C脚本功能可以直接调用API函数,轻而易举的实现很多强大的交互式功能画面。
例如:我前不久做的一个在WinCC监控画面进行交互式、批量型数据录入操作,全部由C脚本代码编写完成。实现的基本功能是,用户首先将录入数据暂存于事先定义的WinCC内部变量中,录入时如果用户发现有错误而需要发生的数据更改,其实只是更改了事先定义的WinCC内部变量数据值,而并未真正更改到PLC中的变量数据。
这种方法安全可靠,即减少了WinCC频繁与PLC通讯联系,降低了网络通讯流量,也减少了用户在数据录入时因瞬间操作错误后,带来的一些危害。只有将用户将所有希望录入的数据写入数据表格中,并仔细确认无误后,点击“OK”按钮,才将这些批量数据一起写入PLC中对应的变量。
此外,本项目画面中还大量利用C脚本功能调用Windows系统的对话框使用(即:MessageBox()函数),使监控操作画面显得更智能化、人性化。
大学之道,在明明德,在亲民,在止于至善。
以下网友喜欢您的帖子:

  
侠士

经验值: 1777
发帖数: 913
精华帖: 11
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-19 16:38:45
C脚本的功能之强大无需多说,毕竟WINCC最初就是C 脚本起家的,但对象的属性,方法不能在编程时自动列出,比较麻烦。
对于VBS的应用,在V6之后的版本中希望能够做到嵌入VB窗体,类似IFIX的的VB结构。
师出无名
以下网友喜欢您的帖子:

  
侠圣

经验值: 2862
发帖数: 1760
精华帖: 55
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-19 17:09:06
IFix是类似于VB结构,代码全在一块,而且自定义的过程/函数跟事件代码是在一块的,管理起来很方便。WinCC的脚本查找时费劲了点,呵呵。
非淡泊无以明志,非宁静无以致远
以下网友喜欢您的帖子:

  
侠圣

经验值: 2862
发帖数: 1760
精华帖: 55
回复:应用探讨-WinCC脚本应用
精华帖精华帖星级2级


只看楼主 只看精华 2009-08-19 17:41:34
编写C脚本常用的一些书籍和工具:

C语言基础(需要注意的是WInCC并不是支持所有的标准C函数):

87712838C语言编程宝典.rar

29886299C语言函数大全(语法着色版).rar

WinCC标准函数总结(内部函数目前没有看到相关的资料,看帮助就OK了)

32830635WinCC标准函数总结

再有就是自V4版本开始官方发布的手册《WINCC组态手册1.pdf》,其中的第4章是学习WinCC C脚本的最佳资料:

60447518WINCC组态手册1.rar
管理员注:本帖已被纳入此次探讨发帖整理WinCC脚本应用,请点此详阅
非淡泊无以明志,非宁静无以致远
以下网友喜欢您的帖子:

  
游民

经验值: 104
发帖数: 1
精华帖: 0
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-19 20:14:45
如何使触摸屏看起来有3D的感觉啊
大连地区的朋友们 喜欢游泳减肥的加我的QQ吧 美女不用喜欢游泳也可以加 34115098
以下网友喜欢您的帖子:

  
游民

经验值: 81
发帖数: 13
精华帖: 0
回复:应用探讨-WinCC脚本应用


只看楼主 只看精华 2009-08-19 22:36:28
个人感觉wincc 脚本不宜写的太多,否则会影响到wincc得运行效率和稳定性。而且,对于复杂的功能建议封装成DLL函数在wincc中调用。
考虑到wincc的安全性,不建议在控件属性或事件中写过多的脚本,否则不小心被客户动了,很难找出原因,尽量做成项目函数,并加以保护。这样才更安全。
WINCC 中的VBS好多功能受到限制,大家运用时要特别注意。
 
以下网友喜欢您的帖子:

  
收起
应用探讨-WinCC脚本应用
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。