WinCC的n个经典问题解答41-50
巧用编程解决WinCC组态几个常见问题

巧用编程解决WinCC组态几个常见问题2008-03-21 下午 05:141 前言中原大化集团复合肥厂(以下简称为复合肥厂)配料称重系统是复合肥生产的中心环节,尿素、磷肥和钾肥以及粘合剂的比例配比直接影响着成品的质量和效用。
复合肥厂为提高工艺控制水平,精确配方,采用了PLC控制系统。
2 系统结构复合肥厂控制系统,上位机采用SIEMENS工控机,CPU为P4 1.4G,128MDRAM,20GHD,20’CRT。
下位机为一台S7-400型PLC系统,带11个8×13bit模拟量输入模块,9个8×14bit模拟量输入模块,6个32bit24VDC开关量输入模块。
上位机与下位机通过MPI电缆连接。
现场的4~20mA和24VDC开关量标准信号进入S7-400,上位机通过MPI/DP 通讯口从S7-400获得数据。
3 组态软件该系统硬件均采用SIEMENS公司的产品,并采用SIEMENS公司的配套开发软件,上位机用WinCC软件组态,下位机用STEP 7编程实现。
整个系统中,下位机实现保护、控制和数据采集的功能,上位机执行显示、报警、存储等功能。
WinCC系统组态编程中,Tag是核心概念,人们把它理解为一个外部数据,可以与下位机的一个内存地址单元同步更新,称为外部Tag;也可以作为WinCC系统组态编程的一个全局变量,称为内部Tag(Internal Tag)。
因此,上位机与下位机的数据通讯是通过外部Tag来实现的,一个工艺参数就对应一个外部Tag,控制系统的大小就决定了外部Tag的多少。
WinCC软件根据外部Tag 的最大数量分为128、512等不同版本,以适应不同情况,价格相差很大。
笔者采用的是128Tag版本。
4 应用技巧WinCC是一套功能非常强大的组态软件,但它不可能满足所有的要求。
有些功能可以用编程技巧来实现。
4.1 多Tag传送当需要的工艺参数超过WinCC版本限制的Tag数目,可以用嵌入式C语言编程实现多个工艺参数打包成一个Tag传送。
WINCC问答_1

1、WINCC在进入某一画面时出现Unhandled exception was raised.Lookfile"c:\program Files\semens\w incc\Diagnose\PDLRTSEH.LOG"for details.出现这种情况前只是删除了该画面的一个矩形图。
--------------------------------------------------------------简单的矩形图删除不会有这个问题的,打开记事本看看进一步的错误信息,有什么错误代码.才能进一步找到错误原因.2、在停电之后5611网卡通讯不上,硬件图标上有黄色的叹号,点测试显示“错误0x0382:未找到内部驱动程序信息(L2)”--------------------------------------------------------黄色的叹号或者感叹号说明没有给CP5611驱动,请手动查阅目录C:\WINDOWS\INF或者C:\WINNT\INF,驱动的信息(OEM**.INF)会在这些目录中,卸载CP5611重新安装即可.CP5611完全卸载方法步骤:1.设备管理器卸载.2.打开注册表WINDOWS START MENU->RUN->"REGEDIT",删除下面路径中的所有的条目:HKEY_LOCAL_MACHINE\SOFTWARE\SIEMENS\SINEC\LOGDEVIES.3.重新启动计算机,再次安装5611驱动.WINCC组态服务器不可用,是否打开项目,将本地计算机作为服务器2011-11-21 15:07:56| 分类:iphone | 标签:|字号大中小订阅/leishuang2005/blog/item/e6ce8c47654a2a046b63e50e.html我从别人那考了一个WINCC例子看可是为什么一打开就是显示“组态服务器不可用,是否打开项目,将本地计算机作为服务器”我点了启动本地服务器为什么总是错误,望高人指点问题在于你直接拷贝人家已经在使用的项目文件夹,哪个文件夹是共享的,特别是人家正在运行的项目,这样的项目文件直接复制过来是不能用的,会缺少文件.正确的复制方法:1)关闭正在运行的WINCC项目,可以在WINCC浏览器里关闭,也可以在开始彩单->运行->输入CMD ->在里面窗体输入命令RESET WINCC来强制关闭WINCC及相关文件.2)取消项目文件夹的共享标记.然后复制项目文件夹(当然项目中也可能调用其它可执行文件,这些你需要向设计方了解),也可以是WINCC安装路径里面的项目复制器复制项目到指定计算机.只有用这样的方法复制的项目文件才能保证WINCC功能部分软件是完整可用的(WINCC内部直接调用可执行文件的执行的功能除外).你如果是拷贝的整个项目的话,你需要启动本地服务器,然后更改项目里面的计算机名字为你的本机名字,然后关闭wincc再重新打开wincc。
wincc实用问答

WinCC实用问题问答1、wincc Online Table control 监测的数值有中间划横线、有后面是u的是什么意思?确保WinCC运行正常和通讯没有故障的情况下,出现这种现象的原因:1、归档变量的归档时间点不同;2、归档变量在wincc 在线表格控件中显示时,使用了公共的时间列。
解决方法:1、将要在wincc 在线表格控件中的归档变量的归档周期系数设置成相同、归档/显示周期设置也设置成相同。
2、指定定时器(归档/显示周期所使用的定时器)的循环起始点(如都指定为 0)。
3、取消激活项目,再重新激活项目。
2、两个WINCC和一个PLC通信还是各控制各的如果是前者的话用一个交换机就可以了具体的你可以参考西门子工业网络通讯指南这本书很全面的3、wincc运行时间久了,速度变慢是很正常的。
做一下处理很有必要删除历史数据感觉影响不大,关键是删除归档数据。
先做个备份,然后再删除。
另外,你要注意,有没有配方等数据存在数据库里,如果没有,可以放心删除,如果有,一定要仔细点。
还有,项目的文件,不要放在c盘,否则,系统会更快变慢4、我在笔记本上运行WInCC项目,可以正常运行,可以完成一些组态开发功能,下面提示栏显示变量305/许可证1024,但是我想要激活项目时,进度条第一条显示45%,第二条显示0,不再运行,而且没有任何提示,是什么原因呢?检查:a.项目路径是否有中文名;b.错误的脚本;b.否安装了STEP7,且版本有冲突;c.安装了中文版杀毒软件及防火墙(尤其是瑞星和金山毒霸),建议将你的杀毒软件卸掉;d.更改或删除了项目文件夹内的文件;计算机名、项目存放的完整路径中不能有中文5、用按钮执行settag脚本只能实现一次绑定,当执行之后外部变量如果变化,中间变量就不变化了,怎么样才能实现始终绑定在全局脚本中使用周期脚本比如两秒一个周期,脚本内容:SetTagFLoat("内部变量",GetTagFLoat("外部变量"));6、我用的是内部变量,想用变量模拟器来模拟液位的变化,前几步做完后,到最后一步start simulation是灰色的,为什么?变量模拟器需要在wincc运行时使用,先激活项目,然后开始菜单->SIMATIC->WinCC->Tools->WinCC Tag Simulator ,打开之后edit----->new tag----->选择你需要的变量properties---->选择变量发生类型,有线性的、随机的、布尔型的等。
wincc的经典问题解答

wincc的经典问题解答123421: WINCC--如何在程序中动态修改用户密码1、点击“开始”--》“设置”--》“控制面板”--》“管理工具”--》“数据源(ODBC)”,打开ODBC数据源管理器2、在用户DSN页面的用户数据源中找到与当前项目所关联的一项,其名称为“CC_项目名_项目建立日期时间”,记下该项的名称3、在脚本中加入以下代码:#pragma code("UseGen.dll") #i ncl"USEGENAP.H"#pragma code()LPCMN_ERROR err; //定义的LPCMN_ERROR型变量,在函数调用中需使用if (PWGENConnect("CC_ass_04-09-21_16:35:22",err)) //建立与数据库的联接,其中CC_ass_04-09-21_16:35:22用第二步中记下的名称取代{ if (PWGENChangePassword(GetTagChar("user"),GetTagChar("oldp assword"),GetTagChar("password"),err)) //修改密码,user,oldpassword,password分别为存贮用户名,原密码,新密码的内部变量,类型为文本变量8位字符集{ //密码修改成功后的操作,如给用户提示等 }}PWGENDisconnect(err); //断开与数据库的联接4、编译运行程序5、工作完成6、与用户管理相关的函数定义存贮在APPLIB目录下的USEGENAP.H文件中,可根据上面示例自行完成添加用户,修改权限等功能。
22:WinCC6.0 中归档时和5.1版本为什么不同了?WinCC V6.0 的后台数据库采用了MS SQL Server 2000,所以归档方式与V5.1 有所不同,它的运行数据存放在数据片段(segment)当中,工程师可以根据尺寸需求组态最大容量或根据时间周期启动新的数据库归档片段。
WINCC的50个经典问题解答

WINCC的50个经典问题解答1、问: 如何触发计算机扬声器的声音?答: 编写如下C-Action:#pragma code("kernel32.dll");BOOL Beep(DWORD dwFreq,DWORD dwDuration);#pragma code();Beep(500,500);2、问: 如何通过C脚本来确定报警信息?答: 首先必须在画面中插入报警控件,可以用如下两种方式来确认信息: (1)、确认单条信息4版本和高于此版本的WinCCBOOL OnBtnSinglAckn(char*lpszPictureName,char*lpszObjectName)5版本和高于此版本的WinCCBOOL AXC_OnBtnSinglAckn(char*lpszPictureName,char*lpszObjectName) (2)、确认报警窗口所有可见的报警4版本和低于此版本的WinCCBOOL OnBtnVisibleAckn(char*lpszPictureName,char*lpszObjectName)5版本和高于此版本的WinCCBOOL AXC_OnBtnVisibleAckn(char*lpszPictureName,char*lpszObjectName)3、问: 如何在WinCC中读取系统时间?答: 通过如下C-Action:#pragma code("kernel32.dll");Void GetLocalTimes(SYSTEMTIME*lpst);#pragma code();SYSTEMTIME time;GetLocalTime(&time);SetTagWord("Varname",time.wYear);SetTagWord("Varname",time.wMonth);SetTagWord("Varname",time.wDayOfWeek);SetTagWord("Varname",time.wDay);SetTagWord("Varname",time.wHour);SetTagWord("Varname",time.wMinute);SetTagWord("Varname",time.wSecond);SetTagWord("Varname",time.wMilliseconds);4、问: 如何经Windows对话框设置日期时间?答: 通过调用Windows对话框实现。
WINCC安装出现的2个问题及解决方法f

WINCC安装出现的2个问题及解决方法 [530]1、WINCC在创建项目时出现“找不到网络路径”错误,一旦出现,项目即不能被创建,WINCC无法正常运行。
这种错误是由于在安装WINCC的时候没有关闭防火墙所致。
WINCC安装时系统会提醒使用者关闭防火墙,很多使用者忽略了,在大多数不关闭防火墙就安装的情况下,WINCC也能正常运行,但是有一定概率出现这个“找不到网络路径”错误。
那么解决办法呢?最根本的解决办法是重装系统(这个也是网上大多数同仁推荐的),但是这很麻烦。
我推荐的办法是,先关闭防火墙(所有的!包括WINDOWS自带的,各种杀毒软件附加的,和360SAFE!!)看错误是否能解决,经验证有可能能恢复正常,如果WINCC 能创建项目了,那么在创建项目之后再把防火墙都启动,使系统仍受其保护。
如果还是不能恢复正常,就进入安全模式将防火墙卸载再回到正常启动的XP,看是否芙饩觯 绻 芙饩鼍椭刈胺阑鹎剑 绻 舛疾恍校 蔷椭缓弥刈跋低沉恕K 苑阑鹎皆赪INCC之后再安装是非常重要的,这一点在使用瑞星防火墙的用户尤其关键,如果将瑞星装在WINCC前面,系统都进不去!!!2、WINCC出现“Automation License Manager has not been startedPlease start the service”错误。
这个错误会在两种情况下出现:(1)系统硬件发生了变化,WINCC对系统要求似乎比较高,某些同仁实在受不了开发机器缓慢的速度,就直接给系统添加了内存。
殊不知一旦系统硬件发生变化,WINCC即认为重新被安装在了其他机器上了,根据授权的原则,就会出现这个错误。
(2)对于某些克隆XP的用户来说是由于系统默认将Automation License Manager service关闭了所致。
那么解决办法呢?网上大多数方法是进入“控制面板”----“管理工具”--------“服务”-----将“Automation License Manager service”开启,似乎是很完美的,在有些时候的确能解决问题。
WinCC的若干问题

1.Hresult Error产生的原因及解决方案2: Windows XP SP2下安装WinCC V6.0 SP3 Asia的安装步骤 :1、安装补丁程序WindowsXP-KB319740-v5-x86-CHS.exe 文件长度565 KB (578,800 字节)。
2、关闭Windows XP SP2下的Windows防火墙。
要关闭“Windows 防火墙”,请依次单击“开始”、“控制面板”、“网络和 Internet 连接”。
在“常规”选项卡上,单击“关闭”3、安装消息队列打开操作系统“开始”菜单并选择“设置” > “控制面板” > “添加或删除程序”。
单击左边菜单栏中的“添加或删除Windows组件”按钮。
“Windows组件向导”打开。
选择组件“消息队列”,“详细资料”按钮激活。
单击“详细资料”按钮。
对话框“消息队列”打开。
激活“公共”子部件。
注意取消激活其它所有的子组件,并“确定”进行确认。
4、安装Microsoft SQL Server 2000 SP3a加载SQLSERVER2K_SP3A_WINCC.ISO到虚拟光驱安装或虚拟磁盘,如果已经安装SQL Server2000,需要卸载磁盘文件夹映射成虚拟盘符SUBST [drive1: [drive2:]path]SUBST drive1: /Ddrive1: 指定要指派路径的虚拟驱动器。
[drive2:]path 指定物理驱动器和要指派给虚拟驱动器的路径。
/D 删除被替换的 (虚拟) 驱动器。
D:>subst x: D:MyResourcesWinCC6.0软件SQL_Serv_2k_SP3_winccD:>subst x: /d启动“WinCC V6.0的SQL Server 2000 Service Pack 3a”光盘。
选择条目“安装SQL Server 2000”。
如果需要中文版SQL Server2000 +SP4,可以在安装完成后,在重新安装,这样SQL Server2000将会有两个实例名:localhost,localhost/wincc,互相不影响,也可单独卸载某个实例。
[小学教育]WINCC问答_1
![[小学教育]WINCC问答_1](https://img.taocdn.com/s3/m/65d3e811591b6bd97f192279168884868762b800.png)
1、WINCC在进入某一画面时出现Unhandled exception was raised.Lookfile"c:\program Files\semens\wincc\Diagnose\PDLRTSEH. LOG"for details.出现这种情况前只是删除了该画面的一个矩形图。
--------------------------------------------------------------简单的矩形图删除不会有这个问题的,打开记事本看看进一步的错误信息,有什么错误代码.才能进一步找到错误原因.2、在停电之后5611网卡通讯不上,硬件图标上有黄色的叹号,点测试显示“错误0x0382:未找到内部驱动程序信息(L2)”--------------------------------------------------------黄色的叹号或者感叹号说明没有给CP5611驱动,请手动查阅目录C:\WINDOWS\INF或者C:\WINNT\INF,驱动的信息(OEM**.INF)会在这些目录中,卸载CP5611重新安装即可.CP5611完全卸载方法步骤:1.设备管理器卸载.2.打开注册表WINDOWS START MENU->RUN->"REGEDIT",删除下面路径中的所有的条目:HKEY_LOCAL_MACHINE\SOFTWARE\SIEMENS\SINEC\LOGDEVIES.3.重新启动计算机,再次安装5611驱动.WINCC组态服务器不可用,是否打开项目,将本地计算机作为服务器2011-11-21 15:07:56| 分类:iphone | 标签:|字号大中小订阅/l eishuang2005/blog/item/e6ce8c47654a2a046b63e50e.html我从别人那考了一个WINCC例子看可是为什么一打开就是显示“组态服务器不可用,是否打开项目,将本地计算机作为服务器”我点了启动本地服务器为什么总是错误,望高人指点问题在于你直接拷贝人家已经在使用的项目文件夹,哪个文件夹是共享的,特别是人家正在运行的项目,这样的项目文件直接复制过来是不能用的,会缺少文件.正确的复制方法:1)关闭正在运行的WINCC项目,可以在WINCC浏览器里关闭,也可以在开始彩单->运行->输入CMD ->在里面窗体输入命令RESET WINCC来强制关闭WINCC及相关文件.2)取消项目文件夹的共享标记.然后复制项目文件夹(当然项目中也可能调用其它可执行文件,这些你需要向设计方了解),也可以是WINCC安装路径里面的项目复制器复制项目到指定计算机.只有用这样的方法复制的项目文件才能保证WINCC功能部分软件是完整可用的(WINCC内部直接调用可执行文件的执行的功能除外).你如果是拷贝的整个项目的话,你需要启动本地服务器,然后更改项目里面的计算机名字为你的本机名字,然后关闭wincc再重新打开wincc。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
hwnd=FindWindow(NULL,"WinCC-Runtime - "); //如语言为中文应 为"WinCC 运行系统-"
if (hwnd==0) {printf("rnError! WinCc Handle is % d",hwnd);goto over;}
bRet=GetCursorPos(&pPos); if (bRet==0) goto over;
/post/587/290359
2011-3-9
nhg : wincc的n个经典问题解答(41-50)
;startarchive",1); return(BOOL)(GetTagBit("startarchive")); } } 在Tagloging中的"Properties of process tag"中的"Archive Tag"tab下的Archiving type选择Cycle-selective,在"Event"标签 下的"Start Event"内选择cyclicarchive函数。
bRet2=GetWindowRect(hwnd,&rRec); if (bRet2==0) goto over; lX=pPos.x-rRec.left; //鼠标 对{置 lY=pPos.y-rRec.top; //鼠标 位置 //如果为非全屏模式,需将上述数值中的高height判断减去标题栏 的宽度 //printf("The Current Cusor Pos is x:%d,y:% drn",pPos.x,pPos.y); //printf("The Cusor Pos in Window is x:%d,y:%drn",pPos.xlLeft2,pPos.y-lTop2); lLeft=GetLeft("NewPdl0.Pdl","Text1"); //Return - Type :long int lTop=GetTop("NewPdl0.Pdl","Text1"); //Return - Type :long int lWidth=GetWidth("NewPdl0.Pdl","Text1"); //Return Type :long int lHeight=GetHeight("NewPdl0.Pdl","Text1"); //Return Type :long int
基本思想就是把多个参数在下位机内存中连续排列然后在WinCC中定 义一个Tag它的长度是多个参数之和取得这个Tag后编程将其分成多 个参数
博客日历
« 三月 2011 一二三四五六
12345
7 8 9 10 11 12
14 15 16 17 18 19
21 22 23 24 25 26
28 29 30 31 文章归档... 最新发表... ORA-04021错误分 析 ORA-27100错误分 析 ORA-01950错误分 析 ORA-12571错误分 析 ORA-01691错误分 析 TNS-12500解决过 程(zt) ORA-31600错误分 析 ORA-01090错误分 析 ORA-25138错误分 析
nhg : wincc的n个经典问题解答(41-50)
Page 1 of 11
nhg 首页 | 管理控制台 | 资源中心 | = | Delphi | Wincc | 点点滴滴 | Ora-相关技术 | Ora-错误分析
搜索
切换风格
布局: 选择页面布局
配色: 选择配色方案
提示 点击带有[...]标记的 栏目可以展开/收拢相 应的栏目
{
网站链接... delphi
紫罗兰茶馆
Itpub member oldwain kamus dlinger eygle 信息大全
study link
Itpub_Groups ORACLE1000
问
char*a="C:SIEMENSCommonSQLANYISQL-q-b-c UID=DBA;PWD=SQL;DBF=E:testsqltestsqlRT.DB; DBN=CC_testsql_99-12-03_12:48:26R; READ E:testsqltest.sql"; printf("%srn",a); ProgramExecute(a);
sprintf(szStr,"%d,%d",lX,lY); SetText("NewPdl0.Pdl","Text1",szStr); //Return Type :char*
} //printf("The Text1 Pos is x:%d,y:%drn",lLeft2,lTop-lTop2); over: return 0; }
if ((lX>=lLeft)&&(lY>=lTop)&&(lX<=lLeft+lWidth)&& (lY<=lTop+lHeight)) {
/post/587/290359
2011-3-9
nhg : wincc的n个经典问题解答(41-50)
Page 5 of 11
char* lpszObjectName,
/post/587/290359
2011-3-9
nhg : wincc的n个经典问题解答(41-50)
Page 2 of 11
ORA-07445错误分 析
博客统计... Blog信息
char* lpszPropertyName, UINT nFlags, int x, int y)
/post/587/290359
2011-3-9
nhg : wincc的n个经典问题解答(41-50)
Page 4 of 11
物体的位置,并与鼠标位置相比较,如一致则触发自己定义的动 作。
#include "apdefap.h"
int gscAction( void ) { #pragma code("user32.dll"); BOOL GetCusorPos(POINT lpPoint); //获取鼠标的位置(绝对位置 -对应屏幕分辨率) BOOL GetWindowRect(HWND hwnd,LPRECT lpRect); //获取窗体位 置 #pragma code(); POINT pPos; RECT rRec; HWND hwnd; BOOL bRet,bRet2; long lLeft,lTop,lWidth,lHeight; long lX,lY; char szStr[100];
}
下面是一个简单的SQL文件内容:
select * from pde#hd#t#test;
output to E:test2.txt FORMAT ascii 注意:文件名及路径中不要带空格。
43:如何整点启动归档? 在"Global Script"下的Project functions编写函数: cyclicarchive BOOL cyclicarchive() { #pragma code ("kernel32.dll"); void GetLocalTime (SYSTEMTIME* lpst); #pragma code(); SYSTEMTIME time; Int t1; GetLocalTime(&time); t1=time.wMinute; if(t1==00) {
例如下位机有两个参数LTN44001和LTN44023都是16位整数分别存放 在DD99.DW146和DD99.DW148 在WinCC中定义一个外部Tag命名为PackageTag类型为32位整数并联 地址为DD99.DBD146再定义两个内部tag名为LTN44001和LTN44023在 Global Script全局脚本中C语言编程如下 Union { Long Dword Int Word[2] }union Union.Dword=GetTagDword("PackageTag") SetTagWord("LTN44001",Union.Word[0]) SetTagWord("LTN44023",Union.Word[0]) 这样两个参数LTN44001和LTN44023就通过一个Tag传送上来了理论上 只要下位机内存足够可以传送任意数量的参数而不受WinCC版本外部 Tag数目的限制.