西门子(中国)有限公司(SLC)

注册 登录

  签到   每日登录:+1西币 +1经验值我的支持中心

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。

技术论坛


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

返回主题列表
作者 主题
RENHQ
版主

经验值:38886
发帖数:5476
精华帖:47
楼主    2015-11-16 14:51:09
主题:【分享】WINCC常见问题和一点技巧和脚本 精华帖  精编帖 

题记:来论坛混也有一段时间了,开始不经常发帖,经常看看各位大神的的帖子,感觉收获颇多,每次来都能增长不少见识,学不少知识,慢慢的也就回回帖子,因为发现积分可以兑换东西(吼吼)...我是做维护的,从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 187272190 Q 群:6141014
RENHQ
版主

经验值:38886
发帖数:5476
精华帖:47
1楼    2015-11-16 14:52:24
精华帖  精编帖  主题:回复:【分享】WINCC常见问题和一些技巧

常用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("Ws cript.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 187272190 Q 群:6141014
zhikong
侠圣

经验值:3047
发帖数:317
精华帖:1
7楼    2015-11-20 11:40:09
精编帖  主题:回复:【分享】WINCC常见问题和一点技巧和脚本
请问provider=sqloledb.1,里的点1是什么意思,这个有什么作用
edward0730
侠圣

经验值:2180
发帖数:328
精华帖:2
54楼    2016-06-16 15:42:08
精编帖  主题:回复:【分享】WINCC常见问题和一点技巧和脚本

请教楼主:你第一段脚本关于把Excel脚本写入wincc变量中

           Set fso=CreateObject()后是否应该继续创建excel的实例呢?然后在进行文件是否存在的判断。 我看你第二段脚本创建完文件对象又继续创建表格对象了。我昨天测试你一段脚本总是提示文件没有创建,所以有此考虑,vbs脚本初学,请指教。

         

做喜欢做的事
faceice
游士

经验值:160
发帖数:14
精华帖:0
55楼    2016-06-16 16:44:05
精编帖  主题:回复:【分享】WINCC常见问题和一点技巧和脚本

楼主,我只想问一下,你的系统是win10,你是怎么搞定WINCC的?我的WIN10专业版,安装的WINcc7.3,始终提示我"基础应用没有启动,检查授权"

RENHQ
版主

经验值:38886
发帖数:5476
精华帖:47
56楼    2016-06-16 18:12:38
精编帖  主题:回复:【分享】WINCC常见问题和一点技巧和脚本

脚本我经过测试,没问题的~

我的思路是先检测文件存在还是不存在,如果不存在直接弹出对话框,就不用创建EXCEL对象了

如果先创建了EXCEL对象,再检查文件,文件不存在的话,最后需要把EXCEL对象关闭了。

每个人编程思路不同,能实现了自己所需要的功能就行

Q 187272190 Q 群:6141014
刘鋆
游民

经验值:73
发帖数:2
精华帖:0
60楼    2016-07-12 20:42:24
精编帖  主题:回复:【分享】WINCC常见问题和一点技巧和脚本

4  SQL数据库连接,WINCC里面通用

这段中写的连接方式需要装什么组件吗?最近一直在试验这个方式,但是一直感觉没有打开数据库。

本人是个初学者,这部分内容西门子客服不提供服务,所以麻烦大神啦

RENHQ
版主

经验值:38886
发帖数:5476
精华帖:47
67楼    2016-07-19 11:00:45
精编帖  主题:回复:【分享】WINCC常见问题和一点技巧和脚本

@刘鋆 用户归档采用的是标准的数据库连接方式,应该不需要什么特别的组件,连接历史归档的话,需要安装连通性软件包,我安装的时候一般都安装上

@kenanid 如果用的也是SQL的话,也能直接使用吧,WINCC这个应该加入了针对WINCC数据库管理的部分吧,具体我也不是很明白,不过可以安装MYSQL之类的免费数据

对于数据库我也是一知半解,具体大家可以发帖子在论坛里讨论

@胜邪 @胜邪 @yzmcumt @z100o @yssisfy 谢谢支持

Q 187272190 Q 群:6141014
RENHQ
版主

经验值:38886
发帖数:5476
精华帖:47
79楼    2016-08-05 17:34:13
精编帖  主题:回复:【分享】WINCC常见问题和一点技巧和脚本

@zl80988188 @雨雨田 谢谢您们的建议,有时间我整理出来

@笨蛋7号 原版的WINDOWS安装起来还是比较麻烦的~,我以前也用原版,后来发现了这个,然后一直就用的这个版本的WINDOWS,SP3安装WINCC的时候要求打补丁,不过有个注册表文件,直接导入就行了,不用再安装,有时间我也上传上来。至于正版,我想咱们用的都不多吧


@月雨风云 @心小不一 @电磁小天王 @407 @西门子工控人 @笨笨笨笨 @月雨风云 @夜来香 谢谢各位支持,有什么问题 建议或者关于WINCC的知识一起分享出来,我加进去大家一起学习

Q 187272190 Q 群:6141014
must努力
侠士

经验值:1588
发帖数:181
精华帖:1
86楼    2016-09-13 23:50:54
精编帖  主题:回复:【分享】WINCC常见问题和一点技巧和脚本

我想知道的是TIA WINCC professional V13 C脚本的头文件需要自己编写是什么鬼,跟WINCC差别那么大

多点努力,少点依赖
还是新手
侠圣

经验值:2028
发帖数:547
精华帖:6
89楼    2016-10-07 16:55:38
精编帖  主题:回复:【分享】WINCC常见问题和一点技巧和脚本

这就是logon的功能啊,不需要编程。只需安装logon插件,在用户管理那里点击logon登陆,就实现版主想要的功能啦。

欢迎关注西门子民间技术支持微信公众帐号。
您收到0封站内信:
×
×