技术论坛

【分享】WINCC常见问题和一点技巧和脚本

作者 主题
版主

经验值: 69053
发帖数: 12266
精华帖: 59
主题:【分享】WINCC常见问题和一点技巧和脚本
精华帖精华帖星级4级 精编帖 推荐帖


只看楼主 只看精华 只看精编 楼主 2015-11-16 14:51:09

题记:来论坛混也有一段时间了,开始不经常发帖,经常看看各位大神的的帖子,感觉收获颇多,每次来都能增长不少见识,学不少知识,慢慢的也就回回帖子,因为发现积分可以兑换东西(吼吼)...我是做维护的,从05年毕业到现在一直接触的都是西门子的东西,了解不如各位大神们广,对PLC 变频器等基础应用是没问题,兴趣来了也瞎琢磨点东西,对WINCC自学也算入门吧,接触到WINCC的强大,只感觉自己水平太低,只有自己想不到的,没有他做不到的。

在论坛上经常看到一些人问些普通的问题,现在就我个人学习过程中遇到的事总结一下吧,欢迎大家来拍砖指点,很多东西我也是从网上找的,我也是个搬运工,分享出来大家一起提高,也欢迎各位一起来讨论交流

1、WINCC安装问题。

   自WINCC7.0版本往后,安装感觉比较轻松了,对系统有一定的要求,不管XP还是WIN7尽量用微软的原盘安装,GHOST版的系统,很可能因为精简了一些东西而安装不上,或者装上不能用。在安装过程中尽量不要运行各种杀毒和卫士,因为软件安装过程中对注册表、系统文件读写很多,如果被阻止了就会不能用。安装包和安装路径还有项目路径一定不要有中文,现在7.3不知道修正的怎么样了,以前西门子软件对中文兼容性不大好,经常出现这种那样的问题,很讨厌鸟文的我,慢慢也习惯用拼音了.....还有就是补丁问题,在安装完WINCC之后,最好不要打补丁,我碰到过一次这个问题,WIN7系统(额记不清是安装之前,还是之后了),反正就是WINCC不能用了,废了很大劲没找到什么原因,又重装的系统,最后想到是我更新过系统补丁,应该就是这个问题,现在我都是直接把自动更新给关了。

再推荐两个系统吧,一个是XP的,这个是GHOST版的,雨林木风纯净版,最后一个官方版本,我用着安装西门子各种软件从来没出过问题;另一个是WIN7,MSDN版的,WIN7以后我就没用GHOST安装过系统~原版的就很好,就是多个安装驱动的过程,但是可靠。

XP SP3:http://yunpan.cn/c3L9xkCiz96bV  提取码 0b67

WIN7:http://yunpan.cn/c3L9YSJezPeUE  提取码 bb44

不知道360网盘会不会失效,失效了我再更新哈

2、WINCC退出

    WINCC退出最好是先取消激活、然后关闭项目,最后关闭WINCC管理器,最主要是要先取消激活,WINCC软件能记录你关闭之前的状态,在你下次启动的时候直接恢复到上次的状态。比如你直接通过关闭管理器来取消激活和关闭项目,下次打开的时候就会自动打开上次打开的项目并激活项目。所以先取消激活还是必要的。


3、WINCC激活------"reset_wincc.vbs"

    也有很多人都有过这样的经历,在激活的时候,走到一半不走了,等上半个小时也没有反应。很多人不知道该怎么办,没有取消的操作,这是后上面的作用很大按WIN+R或者在开始菜单里面找到运行命令,然后输入"reset_wincc.vbs",点确定,WIN7以上系统会有权限提示,也点确定,你就会发现WINCC软件自动退出,然后稍等一会就弹出来个对话框“ready”,代表WINCC复位完成了,可以再次使用。这个功能很好用,当WINCC突然死了,或者做实验时脚本写的不对陷入死循环了,等都可以用这个功能,而且不会对数据库造成影响(用过好多次)。

    上面说的激活走到一半,一般情况下都是由于非法退出WINCC运行系统导致数据库记录异常,再次启动的时候,数据库不能正常连接就出现了这种情况。碰到这种问题的时候,最好把数据库(位置在项目目录下的ArchiveManager文件夹)删了或者用项目移植器复制一遍重新打开新项目(也是删除数据库)。如果有的数据不能删除,那就尽量保留多点,把最近的一个数据库文件删除应该就行了。

4 一点数据库操作技巧

    学会VBS操作数据库时间不长。也都是慢慢从网上、论坛里学到的,WINCC数据库采用的是SQL数据库,其中SQL也是一种语言,从网上找书太长也不知道怎么调用,后来发现,可以借助SQL数据库软件,就是在SQL数据里面先试一下,没问题了,在把他想办法弄到VBS里面输出就没问题了。先打开项目,然后打开SQL管理器(下面有图片,我没事喜欢玩新系统,安装的WIN10,勿喷)。第一次发现的时候,就是由于在查找中文字符的时候,不管用单引号还是双引号还是不用引号,都不行,后来不知道怎么弄得,前面加了个大写的字母N,哎,行了,就这样凡是碰到数据库查询之类的,我先来这里试试。

说的比较简单,看看什么时候来了兴趣,再发个专门的教程似的吧,如果大家都想知道怎么用的话,话说记得本来里面能有一些辅助功能的,现在也找不到了,再琢磨琢磨再更新



5 多看帮助文档

不管WINCC还是STEP7,帮助文档可以说是最详细的说明了,没事多看看帮助对学习有很大的帮助,在帮助文档里面,不管画面还是脚本都有说明,很多人也在问VBS教程 C教程之类的,其实在帮助里面就都有,包括WINCC常见的问题,多看看总是会有意想不到的收获。


6、安装提示重启电脑

在安装西门子软件不止WINCC STEP7等其他软件也经常出现这个问题,打开SETUP,提示你重启计算机,人品好了重启一遍就可以安装,有的时候重启N遍也安装不上,这时候你可以采用下面的办法-删除注册表

从WINDOWS“开始”→“运行”命令或者按win+R快捷键,在出现的“运行”对话框中输入“regedit”,打开注册表编辑器。选中注册表左边的文件夹“HKEY_LOCAL_MACHINESystemCurrentControlSetControl”中的“Session Manager”,删除右边窗口中的条目“PendingFileRename Operations……”,这样双击SETUP就能开始安装软件了

就先这么点,别嫌少,等想到了再添加哈


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

  
重要声明:

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

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

版主

经验值: 69053
发帖数: 12266
精华帖: 59
回复:【分享】WINCC常见问题和一些技巧
精华帖精华帖星级4级 精编帖 推荐帖


只看楼主 只看精华 只看精编 楼主 1楼 2015-11-16 14:52:24

常用WINCC脚本和技巧

1、从EXCEL中读取数据并写入变量-有文件是否存在判断

2、把WINCC中变量值写入EXCEL里面-判断文件存在不存在,不存在自动创建和上面的都EXCEL配套使用

3、使用WINCC自带系统登录-C脚本

#pragma code("USEADMIN.DLL")

#include "PWRT_API.H"

#pragma code()

PWRTLogin('1');

登陆成功后,内部变量“@CurrentUser”显示登陆用户名

注销登陆:

#pragma code("USEADMIN.DLL")

#include "PWRT_API.H"

#pragma code()

PWRTLogout();

4、SQL数据库连接,WINCC里面通用,也就是SQL语言各不相同

5、自定义登陆画面-相对于系统自带的登陆反应有些慢,不知道什么原因,如果哪位大神知道怎么解决,请指点一下,谢谢!

登录:

更改密码:

6、C语言里面的MessageBox对话框用法:

MessageBox(title,text{,icon{,button{,default}}})

  参数title:string类型,指定消息对话框的标题。text:指定消息对话框中显示的消息,该参数可以是数值数据类型、字符串或boolean值。icon:Icon枚举类型,可选项,指定要在该对话框左侧显示的图标。 button:Button枚举类型,可选项,指定显示在该对话框底部的按钮。default:数值型,可选项,指定作为缺省按钮的按钮编号,按钮编号自左向右依次计数,缺省值为1,如果该参数指定的编号超过了显示的按钮个数,那么MessageBox()函数将使用缺省值返回值Integer。函数执行成功时返回用户选择的按钮编号(例如1、2、3等),发生错误时返回-1。如果任何参数的值为NULL,MessageBox()函数返回NULL。

用法

  MessageBox()函数的icon参数指定显示在窗口中的图标,它是枚举类型,可能取值为: 取值 图标Information! StopSign! Exclamation! Question! None! 无图标其中Information!是Icon参数的缺省值。Button参数指定在窗口中显示哪些按钮,有效取值为:取值中文Windows 95下显示OK!“确定”按钮OKCancel!“确定”、“取消”按钮YesNo!“是”、“否”按钮 YesNoCancel!“是”、“否”、“取消”按钮RetryCancel!“重试”、“取消”按钮AbortRetryIgnore!“终止”、 “重试”、“忽略”按钮

函数原型

  int MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT UType);

参数

  hWnd:标识将被创建的消息框的拥有窗口。如果此参数为NULL,则消息框没有拥有窗口。

  lpText:指向一个以NULL结尾的、含有将被显示的消息的字符串的指针。

  lpCaption:指向一个以NULL结尾的、用于对话框标题的字符串的指针。

  uType:指定一个决定对话框的内容和行为的位标志集。此参数可以为下列标志组中标志的组合。

  指定下列标志中的一个来显示消息框中的按钮,标志的含义如下。

  MB_ABORTRETRYIGNORE:消息框含有三个按钮:Abort,Retry和Ignore。

  MB_OK:消息框含有一个按钮:OK。这是缺省值。

  MB_OKCANCEL:消息框含有两个按钮:OK和Cancel。

  MB_RETRYCANCEL:消息框含有两个按钮:Retry和Cancel。

  MB_YESNO:消息框含有两个按钮:Yes和No。

  MB_YESNOCANCEL:消息框含有三个按钮:Yes,No和Cancel。

  指定下列标志中的一个来显示消息框中的图标:标志的含义如下。

  MB_ICONEXCLAMATION:

  MB_ICONWARNING:一个惊叹号出现在消息框。

  MB_ICONINFORMATION:

  MB_ICONASTERISK:一个圆圈中小写字母i组成的图标出现在消息框。

  MB_ICONQUESTION:一个问题标记图标出现在消息框。

  MB_ICONSTOP:

  MB_ICONERROR:

  MB_ICONHAND:一个停止消息图标出现在消息框。

  指定下列标志中的一个来显不缺省的按钮:标志的含义如下。

  MB_DEFBUTTON1:第一个按钮为缺省按钮。如果MB_DEFBUTTON2,MB_DEFBUTTON3,MB_DEFBUTTON4没有被指定,则MB_DEFBUTTON1为缺省值。

  MB_DEFSUTTON2;第二个按钮为缺省按钮。

  MB_DEFBUTTON3:第三个按钮为缺省按钮。

  MB_DEFBUTTON4:第四个按钮为缺省按钮。

  指定下列标志中的一个来显示对话框的形态:标志的含义如卜。

  MB_APPLMODAL:在hwnd参数标识的窗口中继续工作以前,用户一定响应消息框。但是,用户可以移动到其他线程的窗口且在这些窗口中工作。根据应用程序中窗口的层次机构,用户则以移动到线程内的其他窗口。所有母消息框的子窗口自动地失效,但是弹出窗口不是这样。如果既没有指定MB_SYSTEMMODAL也没有指定MB_TASKMOOAL,则MB_APPLMODAL为缺省的。

  MB_SYSTEMMODAL:除了消息框有WB_EX_TOPMOST类型,MB_APPLMODAL和WS_EX_TOPMOST一样。用系统模态消息框来改变各种各样的用户,主要的损坏错误需要立即注意(例如,内存溢出)。如果不是那些与hwnd联系的窗口,此标志对用户对窗口的相互联系没有影响。

  MB_TASKMODAL:如果参数hwnd为NULL,除了所有属于当前线程高层次的窗口足失效的,MB_TASKMODALL和MB_ApPLMODAL一样。当调用应用程序或库没有一个可以得到的窗口句柄时,使用此标志。但仍需要阻止到调用应用程序甲其他窗口的输入而不是搁置其他线程。

  另外,可以指定下列标志。

  MB_DEFAULT_DESKTOP_ONLy:接收输入的当前桌面一定是一个缺省桌面。否则,函数调用失败。缺省桌面是一个在用户已经纪录且以后应用程序在此上面运行的桌面。

  MB_HELP:把一个Help按钮增加到消息框。选择Help按钮或按F1产生一个Help事件。

  MB_RIGHT:文本为右调整。

  MB_RTLREADING:用在Hebrew和Arabic系统中从右到左的顺序显示消息和大写文本。

  MB_SETFOREGROUND:消息框变为前景窗口。在内部系统为消息个调用SetForegroundWindow函数。

  MB_TOPMOSI:消息框用WS_EX_TOPMOST窗口类型来创建MB_SERVICE_NOTIFICATION。

7、获取窗口句柄-一般用于C语言,可以设置弹出对话框的所属窗口,我试着就这一个好用,不知道还有没有别的办法

HWND hwnd;

hwnd=GetForegroundWindow();

8、改变窗口位置和大小

HWND hwnd;

hwnd=GetForegroundWindow();

MoveWindow(hwnd,0,0,1366,768,TRUE);

9、注册表文件读写

Dim objWshShell

Set objWshShell = CreateObject("Wscript.Shell")

Dim shell

shell="regedit.exe /s " & HMIRuntime.ActiveProject.Path & "OCX" & "Set_yy-m-d.reg"

objWshShell.Run shell, 1

10、单按钮启停-好像也叫乒乓键...

VBS HMIRuntime.Tags("A").Write 1-HMIRuntime.Tags("A").Read

C:SetTagBit("A",!GetTagBit("A"));

11、多层次画面对象设置

VBS画面嵌套多了,对象查找少麻烦点,比如主画面“A.PDL"内有画面窗口控件“PIC_WIN_A”,该画面窗口调用画面“B.PDL”,在B.PDL画面中又有一个画面窗口控件“PIC_WIN_B”,这个画面窗口调用画面“C.PDL”,在C.PDL画面里面有一个按钮名称为“BT_A”,如果想设置成这个对象,需要如下设置:

dim a

SET a=HMIRunTime.Screens("A.PIC_WIN_A:B.PIC_WIN_B:C").ScreenItems("BT_A")

zhangli0斑竹也发过一个类似的帖子,也有其他解决办法,请看:

http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1202803&b_id=5&s_id=17&num=18#anch

C脚本里面的对象设置相对来说简单一些,直接选择对象所在的画面就可以了。

就这个问题,我也曾打电话咨询过西门子支持工程师,在WINCC帮助里面也有说明

目录是:使用WINCC->用于创建过程和动作的VBS->VBS Reference->Objects and list->Screens Object(List)



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

  
侠圣

经验值: 3804
发帖数: 500
精华帖: 3
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 2楼 2015-11-18 09:27:46

谢谢大侠的分享,真是个好帖子啊。


 
以下网友喜欢您的帖子:

  
侠客

经验值: 821
发帖数: 89
精华帖: 0
回复:【分享】WINCC常见问题和一点技巧和脚本
推荐帖


只看楼主 只看精华 只看精编 3楼 2015-11-18 09:33:40


WINCC太强大,但是对于初学者来说也太难,VBS脚本学不会的话很难灵活运用,推荐个VBS免费教程网站,有兴趣的话可以跟着学学 http://www.bathome.net/


梦有多大,舞台就有多大;
以下网友喜欢您的帖子:

  
奇侠

经验值: 7985
发帖数: 346
精华帖: 1
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 4楼 2015-11-18 14:10:56
谢谢楼主的无私奉献,这些东西对我们这些菜鸟来说真是太重要了,先赞一个
^_^o~ 努力!
以下网友喜欢您的帖子:

  
侠圣

经验值: 3018
发帖数: 348
精华帖: 2
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 5楼 2015-11-18 21:06:31


先顶下楼主的无私奉献,仔细拜读再交流!

            我虽然用过别的组态软件,但Wincc我也是在自学,已经略略感受到它的灵活性和强大的功能性。只是自我感觉他的脚本编辑部分和报表相对做起来工作量比较大一些,需要一定的基础和经验。


做喜欢做的事
以下网友喜欢您的帖子:

  
侠圣

经验值: 3018
发帖数: 348
精华帖: 2
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 6楼 2015-11-18 21:20:38

补充一下,我觉得应该数据库定义字段的缘故,一般英文字符定义成char或者varchat就可以了,你可能定义的是nvarchar,相当于是标准的unicode字符,常用于带中文的情况,可以避免乱码的出现,具体可以百度一下。


做喜欢做的事
以下网友喜欢您的帖子:

  
奇侠

经验值: 7985
发帖数: 346
精华帖: 1
回复:【分享】WINCC常见问题和一点技巧和脚本
精编帖


只看楼主 只看精华 只看精编 7楼 2015-11-20 11:40:09
请问provider=sqloledb.1,里的点1是什么意思,这个有什么作用
^_^o~ 努力!
以下网友喜欢您的帖子:

  
游侠

经验值: 492
发帖数: 49
精华帖: 0
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 8楼 2015-11-23 17:03:07



好帖子,很好,很强大,说的很详细,真是学习了!



将受命之日则忘其家,临军约束则忘其亲,援袍鼓之急则忘其身
以下网友喜欢您的帖子:

  
侠圣

经验值: 2551
发帖数: 299
精华帖: 3
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 9楼 2015-11-23 20:35:40

继续,让精华帖一直保存下去。


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1857
发帖数: 62
精华帖: 0
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 10楼 2015-11-23 21:28:30

 留个记号,以后仔细拜读!


 
以下网友喜欢您的帖子:

  
至圣

经验值: 24344
发帖数: 4846
精华帖: 6
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 11楼 2015-11-23 21:42:01

 

我情不自禁的收藏了。


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

  
游士

经验值: 163
发帖数: 7
精华帖: 1
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 12楼 2015-11-24 09:06:34


大开眼界!


有人比你强不可怕,可怕的是比你强的人比你还努力
以下网友喜欢您的帖子:

  
侠客

经验值: 968
发帖数: 288
精华帖: 0
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 13楼 2015-11-24 09:46:16

 

  入门教程 。。。


物尽天择. ! 时光悠悠,岁月渐老, 活在当下最重要!
以下网友喜欢您的帖子:

  
游民

经验值: 121
发帖数: 1
精华帖: 0
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 14楼 2015-11-24 09:50:59

讲的太好了  一直想学脚本


业精于勤荒于嬉,行成于思毁于随。
以下网友喜欢您的帖子:

  
奇侠

经验值: 7494
发帖数: 630
精华帖: 1
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 15楼 2015-11-24 09:54:31

 

好帖子,学习了!


 
以下网友喜欢您的帖子:

  
游士

经验值: 172
发帖数: 4
精华帖: 0
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 16楼 2015-11-24 13:20:55

 

收藏学习了


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1800
发帖数: 47
精华帖: 0
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 17楼 2015-11-24 15:08:11

 

好好学习天天向上


厚积薄发!跪着向前冲!
以下网友喜欢您的帖子:

  
新手

经验值: 9
发帖数: 1
精华帖: 0
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 18楼 2015-11-27 10:41:19



先学习学习~~~


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1404
发帖数: 42
精华帖: 8
回复:【分享】WINCC常见问题和一点技巧和脚本


只看楼主 只看精华 只看精编 19楼 2015-11-27 12:49:14


楼主大神级别啊


我的梦想 世界和平;上帝:??? 改变小企业行业现状;工控大佬:???
以下网友喜欢您的帖子:

  
收起
【分享】WINCC常见问题和一点技巧和脚本
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。