技术论坛

 WINCC脚本学习-一-脚本调试

返回主题列表
作者 主题
RENHQ
至圣

经验值: 68943
发帖数: 12230
精华帖: 59
楼主    2017-12-29 16:34:25
主题:WINCC脚本学习-一-脚本调试

0、 题前语

前一个坑还在留着,再给自己挖一个坑,时间还长,慢慢写也慢慢填,希望都能把坑填好吧,这也是一个大坑,也希望不要栽里面。

有什么问题或建议请回帖,您的回复和点赞是对我最大的鼓励


0.1概述

WINCC是西门子推出的过程可视化系统(SCADA),是基于PC的HMI系统,兼容WINDOWS各种系统,除了强大的图形系统之外,WINCC还具有在线历史趋势、报警记录、用户管理、用户归档等高级功能,而且WINCC还提供了Visual Basic s cript(VBS)脚本、C语言脚本和Visual Basic for Applications(VBA)脚本的支持。其中VBS和C脚本可以在运行界面中执行。

VBA主要用于项目的开发。这里主要介绍VBS和C脚本,其实我的水平也不是很高,在这里把我会的分享给大家,如果有不正确的地方请指正,不胜感激。

0.2 区别

  从网络上找了找,还真很难说两种的区别,或者说根本没有什么相似之处吧。在WINCC里面的应用说一下我自己的认识吧。

 VBS和C是两种不同的语言,可能就算是没有什么相同的地方。 C脚本的功能强大,而且运行效率高,但是操作起来感觉也麻烦些,在用的时候要注意字幕大小写、变量类型等,较为繁琐,VBS没有太多的讲究,而且对于画面对象的操作来说VBS更为方便,对于性能比较,引用WINCC手册上的一张图片:

 



个人感觉VBS相对C脚本来入门也简单些。详细的使用方法,从下面的内容中慢慢学习吧。

0.3 文档推荐

推荐看这个文档,可惜是英文的,对WINCC的脚本介绍的非常详细,各种标准函数都有介绍:


WinCC V7.4 s cripting: VBS, ANSI-C, VBA

https://support.industry.siemens.com/cs/cn/zh/view/109736230/en


博图里面脚本学习看手册:


SIMATIC WinCC WinCC Professional V14 SP1 - 编程参考

https://support.industry.siemens.com/cs/cn/zh/view/109747179


这个手册比较好,是中文的,而且对触摸屏、PRO版本介绍的都很详细,


Q群:https://jq.qq.com/?k=9BDuEgf6
RENHQ
至圣

经验值: 68943
发帖数: 12230
精华帖: 59
1楼    2017-12-29 16:35:04
主题:回复:WINCC脚本学习-一-脚本调试

1、脚本调试

在写脚本过程中,经常会出现各种错误,特别是如我这般不是很精通,还又有点马虎的人,这样脚本的调试就很重要了,关于脚本的的调试,可以参考文档:


使用ApDiag工具进行WinCC脚本诊断

https://support.industry.siemens.com/cs/cn/zh/view/75403562


视频:

WinCC V7.0脚本专题

http://www.ad.siemens.com.cn/service/elearning/course/699.html


这里主要介绍使用脚本里面自带的Trace(VBS)和printf(C)进行调试,也是我用的,别的方式,比如上面的ApDiag工具和微软的脚本调试工具:Microsoft s cript Debugger,我也是不会用的。在提供个微软脚本调试工具的下载地址:

http://files.cnblogs.com/pcjim/Microsoft s cript Debugger.rar


1.1 VBS脚本调试

使用Trace函数可以在画面的脚本诊断窗口输出相应的内容。使用方法:

HMIRuntime.Trace XXXX

XXXX就是想要输出的内容,不过内容仍然要遵守VBS脚本的语法规则

画面脚本诊断窗口的插入方法见附图:


智能对象里面选择:应用程序窗口,然后在画面编辑器工作区域拖动鼠标,选择一个合适的矩形大小,松开鼠标后弹出窗口内容对话框,选择全局脚本,点击确定,然后弹出模板对话框


选择GSC Diagnostics 点击确定。然后在属性窗口里面设置相应的属性

保存,运行效果如下:

下面测试一下Trace函数:

通过脚本输出“Hello WinCC”文字和一个IO域里面的的文本:

下面的脚本是TEST TRACE按钮的脚本,全局脚本诊断里面显示的就是那个

关于脚本里面的vbCrlf,vbCrLf是Visual Basic(VB,一种编程语言)中的一个字符串常数,即“Chr(13) & Chr(10)”(回车符与换行符连接在一起),是换行的意思

其他常用的常数:

关于VBS脚本的常规语法参考资料:

在线版:http://www.chinavb.net/vbs/

离线版手册,等下再以附件的形式上传~


Q群:https://jq.qq.com/?k=9BDuEgf6
RENHQ
至圣

经验值: 68943
发帖数: 12230
精华帖: 59
2楼    2017-12-29 16:35:23
主题:回复:WINCC脚本学习-一-脚本调试

1.2 C脚本调试

C脚本的诊断输出使用printf()函数,函数的使用格式如下:

printf("<格式化字符串>", <参量表>);

仍然上面的例子输出两行字符串,另外再输出一个变量值,变量Test1,浮点数:


在使用printf进行格式话输出的时候,在进行格式化输出的时候,都是“%”字符开始,使用的规定符如下:

%d            十进制有符号整数

%e            指数形式的浮点数

%u            十进制无符号整数

%x, %X     无符号以十六进制表示的整数

%f            浮点数

%o           无符号以八进制表示的整数

%s            字符串

%p           输出地址符

%c          单个字符

%lu        32位无符号整数

%p        指针的值

%llu       64位无符号整数

%g        把输出的值按照%e或者%f类型中输出长度较小的方式输出

1.3 小结

利用Trace和printf函数,可以在诊断窗口输出变量的值、对象的属性、函数返回结果、字符常量等,如果脚本有错误,在诊断窗口里面也能够输出相关信息,在上面的视频和文档里的文档里面有介绍。比如在Trace例子里面我把Outputvalue属性改成text属性,运行的时候就会出现下面的提示内容:


根据提示内容,可以看出出现错误的画面名称、函数对象、第几行,错误的内容,提示就是不支持TEXT属性这样根据提示很快就能找到错误的地方了。

在做比较高级的功能的时候,如果脚本比较长,中间有错误,可以隔几行使用Trace(printf)输出一个文本做标记,看看执行到哪里不执行了,这样就能缩小脚本的,使用这种方法比使用msgbox(Messagebox)函数使用对话框来调试要方便很多。

Q群:https://jq.qq.com/?k=9BDuEgf6
一席清水湾
游民

经验值: 139
发帖数: 2
精华帖: 0
3楼    2017-12-29 16:44:13
主题:回复:WINCC脚本学习-一-脚本调试

前排支持!!!!

不断攀登
至圣

经验值: 12543
发帖数: 1843
精华帖: 0
5楼    2017-12-29 16:49:11
主题:回复:WINCC脚本学习-一-脚本调试

R侠对论坛的贡献巨大,赞一个

邮箱 yongquancun@126.com
看雪001
至圣

经验值: 19336
发帖数: 2076
精华帖: 72
15楼    2018-01-02 11:49:58
主题:回复:WINCC脚本学习-一-脚本调试

VBS里面只有一种变量类型,定义变量的时候只需要定义名称,这一点和C的变量定义不同;

语法上也有一些差别,比如If...else语句,vbs要在if后面加一个than,结束时还得加一个end if;

……算是帮顶一下吧

大道至简,知易行难
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。