WinCC上可以很方便的编写VB脚本和C脚本_第1页
WinCC上可以很方便的编写VB脚本和C脚本_第2页
WinCC上可以很方便的编写VB脚本和C脚本_第3页
WinCC上可以很方便的编写VB脚本和C脚本_第4页
WinCC上可以很方便的编写VB脚本和C脚本_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,VB,最好安装VB6,先在VB6里面编写程序,然后再放到WinCC的脚本中,事半功倍,毕竟VB的调试非常方便。a,插入引用注意选择OLE Automation 和WinCC *;b,可以直接在VB里面调用WinCC的全部变量,内部,外部全可以:如下:c,在VB里面监视WinCC的变量:d,调试完毕,程序拷贝到WinCC的脚本中。2,C语言系统提供了一个应用程序窗口,如下,只要把他拖到画面窗口即可:2,使用Printf函数,把需要调试的内容打印出来;3,效果如下:希望对大家有点用处。下面内容来自网络,感谢原文作者。Vbs操作wincc画面脚本总结一:不使用变量单纯的操作界面1.操作某个画面中

2、控件的属性如(总窗体)下的画面窗口2(画面窗口)Sub OnClick(ByVal Item)Dim objCircleDim screennameDim pwnameSet objCircle= ScreenItems("圆1" ) = 60Set screenname=("Home1") /获取要操作的窗体Set pwname=("画面窗口2") /获取要操作的控件,这里填入你要操作的控件名MsgBox() /输出圆的半径MsgBox () /输出当前画面窗口2的名字End Sub注意当调用某窗体下的某控件的某个属性时,需要声明两

3、个对象,一个接纳这个控件,一个接纳值例如Dim objectDim valueSet object =("Home1").ScreenItems("画面窗口2")Set value=2.更改画面窗口的对象Sub OnClick(Byval Item)Dim opObjectSet opObject= ("Home1").ScreenItems("画面窗口2")="Page1.Pdl"End Sub3.设置文本Set titleTxt= ("Home1").ScreenItem

4、s("静态文本2") =titleTxt.Text+"EF" /获取文本的值并追加字符4.vb 字符串函数 VB的字符串截取函数有Left(字符串,n),返回字符串前N个字符;Mid(字符串,p,n),从第p个字符开始,向后截取N个字符;right(字符串,n),返回字符串的最后n个字符。用WinCC读取VB的数据的方法一(DDE)                   中的步骤:1、新建一个“标准 EXE”工程2、设置窗体Form1的LinkMode属性为

5、1 - Source,    一定要设定为13、在Form1上添加一个文本框控件Text1,将其Text属性设为text14、保存工程:工程名为VBDDE.vbp5、生成VBDDE.exeWinCC的步骤:1、新建一单用户项目2、在变量管理器中添加Windows DDE驱动3、在DDE下新建连接NewConnection,在其属性对话框中:Computer Name:不设置Application:VBDDETopic:Form1(VB中窗体名)其它不作改动4、在此连接下新建一有符号16位整型变量Tag1,在其地址选择框中:条目名称:Text1     窗

6、体控件名称 数据类型(Data Type):SWORD(要与变量类型一致)5、新建一个画面:6、在画面中添加一个IO域:与Tag1动态连接,更新周期为:根据变化,输出格式为s99997、保存画面联机调试:1、先运行VBDDE.EXE(或者在VB设计器中运行工程)2、后激活WinCC项目3、此时IO域值与Text1值总是保持一致(无论你在哪一方改动)用WinCC读取VB的数据的方法二(OLE)VB文本框的代码:private sub text1_change()    Dim wincc As Object         &

7、#160;                     '定义wincc为对象    Dim Var  As Integer                               '定义wincc变量        Set wincc = CreateObjec

8、t("WinCC-Runtime-Project") '创建wincc运行对象    Call ("Var", text1.text)            '将VB变量值写入WINCC变量 ,变量名称要与WINCC变量名称完全一致,要区分大小写end sub在WINCC中建立内部变量var,类型要与VB一致,在画面中加入IO显示即可。 WinCC脚本应用 脚本的应用给WinCC项目带来了极大的灵活性和开放性。通过使用脚本可以完成一些Win

9、CC基本组态无法实现的功能。从版本V6起,WinCC同时提供了C 和VB 两套脚本系统,使脚本功能更加丰富、易用。首先C脚本功能实在是太强大了,除了系统提供的标准函数和系统函数外,还可以直接调用API函数,再加上可以直接使用ODK函数,就连VBS中的Method调用也可以通过特别的办法实现,可谓是无所不能。当然缺点也是有的,不支持自动列出函数或者方法,编写程序多有不便。自版本V6起又增加了VB脚本,它使用起来较为简单,而且入门很快。VBS自身的功能并不强,除了一些基本的函数和WinCC自身的对象(比如),剩下的功能全部都得通过COM组件进行扩展,比如我们很熟悉的Excel、fso、ws等等,通

10、过这些组件使得WinCC访问Windows的接口得以增加,但是访问WinCC底层东西却没有(比如用户登陆、报表打印等),这是VBS美中不足的地方,希望下一版本能够改进,_。VBS的另外一个弱点就是无法直接调用API函数,只能通过其他的方法解决。网上常见的方法应该是通过先注册再调用,比如:Dim UserWrapSet UserWrap = CreateObject("DynamicWrapper")' CallMessageBoxA(), first register the API function "USER32.DLL", "Me

11、ssageBoxA", "I=HsSu", _"f=s", "R=l"' now call the function Null, "MessageBox (ANSI)", _"From DynaWrap Object", 3dynwrap的下载地址我已经找不到了,大家可以上网搜索。另外安装DriveMonitor后就会有这个文件,详细用法在DriveMonitor帮助信息中也可以找到。另外我试过利用Excel代为声明,VBS调用Excel的宏来实现,这是一篇我写的关于VBS结合

12、EXCEL调用API函数的心得总结,内容太长我就不贴了,直接见附件,附件DOC附有本文档用到的Excel文件、VBS文件以及C函数。全局脚本里面对的值进行读取和更新,有对数据库的操作,但有的时候发现设备不动作,点击按钮进入状态界面(用于显示PLC的状态),观察PLC的值。此时设备就会继续动作,按钮中未写任何脚本,只是用直接连接来给一个内部变量赋值以用于切换画面?怀疑是全局脚本中对数据库的操作阻塞了脚本的运行,不知道是不是原因啊?为什么点击按钮后又能解除呢?恳请高人帮忙啊?/quote不知道您使用的是全局脚本项目函数,还是全局动作呢?如果在画面中调用的是全局项目函数,应该属于画面的脚本线程,切换

13、画面的时候,重新启动新的画面周期,执行该画面中的脚本,前一画面中未执行的脚本队列被释放。如果您怀疑是数据库的操作阻塞了进程,您可以在脚本中屏蔽掉操作数据库的代码,观察是否还出现阻塞的现象;也可以在您的全局脚本中加入printf函数,输出到GSC诊断窗口中,判断是否发生阻塞。一般来说,如果您在一个项目中组态的动作(包括全局动作或画面中周期调用的动作)不能被正确或及时地处理,例如,动作的触发周期为2秒钟,但是执行该脚本所需要的时间为5秒钟,这样大量动作累积起来,不能处理的动作被输入队列。如果在脚本队列中的任务数目达到了5000,那么路径“:SiemensWinCCDiagnose”下的WinCC“

14、 WinCC_Sys_xx.log”的诊断文件可能会显示错误消息“s cript: More than 5000 actions in work”。详细信息请参见如下链接:或者。另外,关于WinCC对C脚本的诊断方法有很多,以下几种仅供参考,在WinCC的帮助文档中可以找到更多详细的内容:运行系统:提供关于所有(全局脚本)动作的动态特性信息。诊断:按调用的顺序输出printf指令,可以将变量的数值和错误信息等输出到诊断窗口。工具:WinCC自带的诊断工具 “ApDiag.exe” 对故障和性能问题进行了详细的分析,关于如何使用诊断工具“APDiag”来调试C脚本,请参见如下链接:。全局脚本里面对的值进行读取和更新,有对数据库的操作,但有的时候发现设备不动作,点击按钮进入状态界面(用于显示PLC的状态),观察PLC的值。此时设备就会继续动作,按钮中未写任何脚本,只是用直接连接来给一个内部变量赋值以用于切换画面?怀疑是全局脚本中对数据库的操作阻塞了脚本的运行,不知道是不是原因啊?为什么点击按钮后又能解除呢?恳请高人帮忙啊?请问高人一个问题:两个全局C脚本,其中一个被阻塞了,另一个会怎样,是不是也会被阻塞?多个全局脚本是独立的单线程吗?/quote虽然WinCC的全局脚本(对应于进程 Gscrt.exe - Global

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论