WinCC上可以很方便的编写VB脚本和C脚本 - 图文
更新时间:2024-01-17 07:05:01 阅读量: 教育文库 文档下载
WinCC上可以很方便的编写VB脚本和C脚本,但是调试起来还是比较费劲的。下面介绍一下个人的应用体会。
1,VB,最好安装VB6,先在VB6里面编写程序,然后再放到WinCC的脚本中,事半功倍,毕竟VB的调试非常方便。
a,插入引用
注意选择OLE Automation 和WinCC *****;
b,可以直接在VB里面调用WinCC的全部变量,内部,外部全可以: 如下:
c,在VB里面监视WinCC的变量:
d,调试完毕,程序拷贝到WinCC的脚本中。
2,C语言
系统提供了一个应用程序窗口,如下,只要把他拖到画面窗口即可:
2,使用Printf函数,把需要调试的内容打印出来;
3,效果如下:
希望对大家有点用处。
下面内容来自网络,感谢原文作者。
http://wenku.http://www.wodefanwen.com//link?url=vEykUwJBHY3kamu6EGqrO8WX1XVc6_IMzRfnfkcwe5JpmjmPLUHmsod1xIDeQUpd1MJgUMD9IlS8bcIsH6GWpHwjuq76wAjG6NjSkndSrQK
Vbs操作wincc画面脚本总结 一:不使用变量单纯的操作界面
1.操作某个画面中控件的属性如 Home1.Pdl(总窗体)下的画面窗口2(画面窗口)
Sub OnClick(ByVal Item) Dim objCircle Dim screenname Dim pwname
Set objCircle= ScreenItems(\圆1\objCircle.Radius = 60
Set screenname=HMIRuntime.Screens(\获取要操作的窗体 Set pwname=screenname.ScreenItems(\画面窗口2\获取要操作的控件,这里填入你要操作的控件名
MsgBox(objCircle.Radius) //输出圆的半径
MsgBox (pwname.Picturename) //输出当前画面窗口2的名字 End Sub
注意当调用某窗体下的某控件的某个属性时,需要声明两个对象,一个接纳这个控件,一个接纳值例如 Dim object Dim value
Set object =HMIRuntime.Screens(\画面窗口2\Set value=object.picturename
2.更改画面窗口的对象 Sub OnClick(Byval Item) Dim opObject
Set opObject=HMIRuntime.Screens (\画面窗口2\opObject.PictureName=\End Sub
3.设置文本
Set titleTxt=HMIRuntime.Screens (\静态文本2\titleTxt.Text =titleTxt.Text+\获取文本的值并追加字符
4.vb 字符串函数 VB的字符串截取函数有Left(字符串,n),返回字符串前N个字符;Mid(字符串,p,n),从第p个字符开始,向后截取N个字符;right(字符串,n),返回字符串的最后n个字符。
http://blog.sina.com.cn/s/blog_4aee288a0102vavt.html 用WinCC读取VB的数据的方法一(DDE) VB6.0中的步骤:
1、新建一个“标准 EXE”工程
2、设置窗体Form1的LinkMode属性为1 - Source, 一定要设定为1 3、在Form1上添加一个文本框控件Text1,将其Text属性设为text1 4、保存工程:工程名为VBDDE.vbp 5、生成VBDDE.exe WinCC的步骤: 1、新建一单用户项目
2、在变量管理器中添加Windows DDE驱动
3、在DDE下新建连接NewConnection,在其属性对话框中:
Computer Name:不设置 Application:VBDDE Topic:Form1(VB中窗体名) 其它不作改动
4、在此连接下新建一有符号16位整型变量Tag1,在其地址选择框中: 条目名称:Text1 窗体控件名称
数据类型(Data Type):SWORD(要与变量类型一致) 5、新建一个画面:DDE_Test.Pdl
6、在画面中添加一个IO域:与Tag1动态连接,更新周期为:根据变化,输出格式为s9999 7、保存画面 联机调试:
1、先运行VBDDE.EXE(或者在VB设计器中运行工程) 2、后激活WinCC项目
3、此时IO域值与Text1值总是保持一致(无论你在哪一方改动)
用WinCC读取VB的数据的方法二(OLE) VB文本框的代码: private sub text1_change()
Dim wincc As Object '定义wincc为对象 Dim Var As Integer '定义wincc变量 Set wincc = CreateObject(\创建wincc运行对象 Call wincc.SetValue(\ '将VB变量值写入WINCC变量 ,变量名称要与WINCC变量名称完全一致,要区分大小写 end sub
在WINCC中建立内部变量var,类型要与VB一致,在画面中加入IO显示即可。
http://blog.sina.com.cn/s/blog_6e70b2d5010198x7.html
WinCC脚本应用
脚本的应用给WinCC项目带来了极大的灵活性和开放性。通过使用脚本可以完成一些WinCC基本组态无法实现的功能。
从版本V6起,WinCC同时提供了C 和VB 两套脚本系统,使脚本功能更加丰富、易用。
首先C脚本功能实在是太强大了,除了系统提供的标准函数和系统函数外,还可以直接调用API函数,再加上可以直接使用ODK函数,,就连VBS中的Method调用也可以通过特别的办法实现,可谓是无所不能。当然缺点也是有的,不支持自动列出函数或者方法,编写程序多有不便。
自版本V6起又增加了VB脚本,它使用起来较为简单,而且入门很快。VBS自身的功能并不强,除了一些基本的函数和WinCC自身的对象(比如
HMIRuntime.Tags),剩下的功能全部都得通过COM组件进行扩展,比如我们很熟悉的Excel、fso、wscript.shell等等,通过这些组件使得WinCC访问Windows的接口得以增加,但是访问WinCC底层东西却没有(比如用户登陆、报表打印等),这是VBS美中不足的地方,希望下一版本能够改进,^_^。
VBS的另外一个弱点就是无法直接调用API函数,只能通过其他的方法解决。
网上常见的方法应该是通过dynwrap.dll先注册再调用,比如:
Dim UserWrap
Set UserWrap = CreateObject(\
' CallMessageBoxA(), first register the API function
UserWrap.Register \
\
' now call the function
UserWrap.MessageBoxA Null, \
\
dynwrap的下载地址我已经找不到了,大家可以上网搜索。另外安装
DriveMonitor后就会有这个文件,详细用法在DriveMonitor帮助信息中也可以找到。
另外我试过利用Excel代为声明,VBS调用Excel的宏来实现,这是一篇我写的关于VBS结合EXCEL调用API函数的心得总结,内容太长我就不贴了,直接见附件,附件DOC附有本文档用到的Excel文件、VBS文件以及C函数。
全局C脚本里面对PLC的值进行读取和更新,有对数据库的操作,但有的时候发现设备不动作,点击按钮进入状态界面(用于显示PLC的状态),观察PLC的值。此时设备就会继续动作,按钮中未写任何脚本,只是用直接连接来给一个内部变量赋值以用于切换画面?
怀疑是全局脚本中对数据库的操作阻塞了脚本的运行,不知道是不是原因啊?为什么点击按钮后又能解除呢?恳请高人帮忙啊?[/quote]不知道您使用的是全局脚本项目函数,还是全局动作呢?如果在画面中调用的是全局项目函数,应该属于画面的脚本线程,切换画面的时候,重新启动新的画面周期,执行该画面中的脚本,前一画面中未执行的脚本队列被释放。
如果您怀疑是数据库的操作阻塞了进程,您可以在脚本中屏蔽掉操作数据库的代码,观察是否还出现阻塞的现象;也可以在您的全局脚本中加入printf函数,输出到GSC诊断窗口中,判断是否发生阻塞。
一般来说,如果您在一个项目中组态的动作(包括全局动作或画面中周期调用的动作)不能被正确或及时地处理,例如,动作的触发周期为2秒钟,但是执行该脚本所需要的时间为5秒钟,这样大量动作累积起来,不能处理的动作被输入队列。如果在脚本队列中的任务数目达到了5000,那么路径
“:\\Siemens\\WinCC\\Diagnose”下的WinCC“ WinCC_Sys_xx.log”的诊断文件可能会显示错误消息“s cript: More than 5000 actions in work”。详细信息请参见如下链接:http://support.automation.siemens.com/CN/view/zh/2357302或者http://support.automation.siemens.com/CN/view/zh/14612355。
另外,关于WinCC对C脚本的诊断方法有很多,以下几种仅供参考,在WinCC的帮助文档中可以找到更多详细的内容:
1.GSC运行系统:提供关于所有(全局脚本)动作的动态特性信息。
2.GSC诊断:按调用的顺序输出printf指令,可以将变量的数值和错误信息等输出到诊断窗口。
3.ApDiag工具:WinCC自带的诊断工具 “ApDiag.exe” 对故障和性能问题进行了详细的分析,关于如何使用诊断工具“APDiag”来调试C脚本,请参见如下链接:http://support.automation.siemens.com/CN/view/zh/22892912。
全局C脚本里面对PLC的值进行读取和更新,有对数据库的操作,但有的时候发现设备不动作,点击按钮进入状态界面(用于显示PLC的状态),观察PLC的值。此时设备就会继续动作,按钮中未写任何脚本,只是用直接连接来给一个内部变量赋值以用于切换画面?
怀疑是全局脚本中对数据库的操作阻塞了脚本的运行,不知道是不是原因啊?为什么点击按钮后又能解除呢?恳请高人帮忙啊?
请问高人一个问题:两个全局C脚本,其中一个被阻塞了,另一个会怎样,是不是也会被阻塞?多个全局脚本是独立的单线程吗?[/quote]虽然WinCC的全局脚本(对应于进程 Gscrt.exe - Global s cript Runtime)与画面中的脚本分别运行在不同的进程,但是全局脚本的各个动作同时运行在同一个线程中,其中一个动作发生阻塞,会影响另外一个动作。
可以设计两个全局脚本动作,进行如下的测试:
动作1:每隔2秒钟执行一次,变量1加1。
动作2:每隔2秒钟执行一次,变量2加1,使用Sleep函数延迟5秒钟。
结论:使用输入\\输出域显示两个变量,两个变量都是大约每隔5秒钟加1(如果没有Sleep函数,两个变量都是大约每隔2秒钟加1)。因此,全局脚本的多个动作是互相影响的。
正在阅读:
WinCC上可以很方便的编写VB脚本和C脚本 - 图文01-17
18秋学期(1709、1803、1809)《C语言程序设计》在线作03-08
中国文化概论试题答案(三套)--李山 北京师范大学06-24
李镇西讲座-教师的人文情怀10-09
新时代作文600字06-25
雅思听力之选择题答题方法04-10
我的健康我做主作文(精选5篇)03-31
华北地区常见蔬菜露天种植时间表07-09
实验报告(第三方支付)10-11
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 脚本
- 编写
- 方便
- 图文
- 可以
- WinCC
- 最新-2019年创建市级生态村工作总结范文 精品
- 牵引变电站用整流器培训 - 图文
- 第二届中国建筑节能总工高峰论坛
- 中考专项复习-介词学案(1)
- 孩子有恐惧心理怎么办?
- 文明单位创建1干部队伍建设
- 九大视频接口全接触
- 沪教版小学一年级语文(下)全册教案
- 关于严格执行房屋建筑和市政基础设施工程材料进场复验制度的通知
- 共享管理制度及操作流程1
- 中国人力资源服务行业大致发展历程
- 房建下学期复习题
- 常州市市区行政事业单位职工子女统筹医疗费管理办法
- 2017版数控车床习题
- xxx局关于对报考我局工作的xxx同志考察的函
- 2012高考化学核心考点 考试大纲 提分秘笈
- 操作系统实验二处理机调度-实时调度算法EDF和RMS实验报告 - 图文
- 会计实训题
- 内资有限责任公司章程参考范本(2至50人、设执行董事、不设监事会)
- 第二章 - - 变压器习题答案