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
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。
wincc问题
当运行时消息出现时,如何在用户指定的"GMsgFunction()"动作中确定消息文本和过程值?使用说明:在组态消息时,如果设置了属性 "This message triggers an action" , 那么运行时当有指定消息事件(到来,离开,被确认...)时,动作将会被触发。
( 15 KB )图. 01在此 C动作中,可以自己编程来响应指定的报警事件。
"GMsgFunction()" 作为默认的动作被调用。
有关"GMsgFunction()" 的详细的信息:• WinCC 信息系统下的 "Working with WinCC > ANSI-C for Creating Functions and Actions > Function description > Standard Functions > Alarm > GMsgFunction"•条目24842903 - 该条目描述了当该动作执行时的报警事件和"Status" ("St:")数值的意义。
利用该值可以在动作中确定报警的状态。
如果某些情况下,想要用户指定的动作在特定的报警事件(到来,被确认,消息发送或堵塞)时被执行,那么这个状态值和重要。
"GMsgFunction()" 函数可以在全局脚本编辑器中的 "Standard functions > Alarm > GMsgFunction"中找到。
下面下载例子中的 "GMsgFunction()"提供了两个例程,分别判断消息文本和过程值。
GMsgFunction.zip ( 8 KB )重要事项:•确定在修改文件"gmsgfunc.fct" (../Siemens/WinCC/aplib/Alarm)前,先保存原始备份。
WinCC7.0授权的使用方法及常见问题处理
WinCC7.0授权的使用方法及常见问题处理WinCC 软件受法律保护,且只能在具有有效许可证的完整状态下使用。
安装的每个软件以及所用的每个选件都需要获得有效的许可证,才能不受限制地使用 WinCC。
从WinCC7.0开始,亚洲版(Asia)的WinCC实行硬狗授权的模式,即WinCC在使用的过程中既要检测系统里是否安装了匹配的授权文件,同时还检测LICENSE_KEY硬件狗是否插在电脑上。
下面就如何正确使用WinCC7.0授权以及在使用过程中出现的常见问题的处理方法进行简单介绍。
1授权的使用方法购买了WinCC7.0的授权后,会得到一套WinCC安装软件和一个用来安装授权的LICENSE_KEY,LICENSE_KEY中包含所购买WinCC功能的授权,LICENSE_KEY外观如图1。
图1安装好WinCC软件后,将此LICENSE_KEY插到电脑的USB口上,然后通过Automation License Manager (授权管理器,随WinCC软件一起提供,且使用Automation License Manager不需要授权)将LICENSE_KEY中的授权导入到电脑中,只有标记有“Hardlock”字样的LICENSE_KEY,在传送完授权后仍然需要插到电脑上。
导入授权的方法如下:打开Automation License Manager,如果安装了SIMATIC Logon,将会弹出一个登录对话框,如图2,图2点“Cancel”将进入如下界面,如图3。
图3用鼠标选中“LICENSE_KEY”,右边会列出LICENSE_KEY中的授权文件,选中LICENSE_KEY中的授权文件拖拽到电脑的目标盘(不建议放到系统盘,避免系统崩溃造成授权文件丢失);或者用鼠标选中LICENSE_KEY中的授权文件,点击右键,如图4。
图4选Transfer(传送),选中目标路径,如图5,至此WinCC的授权导入就完成了。
wincc中的数据位的问题
wincc中的数据位的问题
有个数据需要累计流量,但是这个流量只会累积到16777216就停止了,不会再往上加了,好像是24位的样子,这个问题是出在上位机的WINCC设置上还是现场的PLC的数据模块的问题呢?如果是上位机的问题应该如何设置它呢?
最佳答案
你的累计是在哪里做的?累加器都是有有效位的,西门子的plc的累加器是6位有效数字,如果你相加的两个数的数量级相差超过10的7次方,则相加时,先对齐指数然后对齐有效数字,这样小的那个数据就因为和大的数字的数量级对齐后,有效数字都变成了0,这样相加就不能累计了。
所以为了避免这样的问题出现,你可以按时钟进制的方式来做累计,即sum=sum+pv;sum>=sum_sp,sum1=sum1+sum,sum=0;sum1>=s um1_sp,sum2=sum2+sum1,sum1=0;总累计sum_all=sum+sum1+sum2+sum3+........。
wincc 问题解决
41:用C编程解决授权点数不够用的问题(acsun提供)当需要的工艺参数超过WinCC版本限制的Tag数目,可以用C语言编程实现多个工艺参数打包成一个Tag传送.例如某个配料称重系统有146个参数超过了WinCC的128个Tag的限制就可以用C语言编程决这一问题而不需要购买更高的授权.基本思想就是把多个参数在下位机内存中连续排列然后在WinCC中定义一个Tag它的长度是多个参数之和取得这个Tag后编程将其分成多个参数例如下位机有两个参数LTN44001和LTN44023都是16位整数分别存放在DD99.DW146和DD99.DW148在WinCC中定义一个外部Tag命名为PackageTag类型为32位整数并联地址为DD99.DBD146再定义两个内部tag名为LTN44001和LTN44023在 Global Script全局脚本中C语言编程如下Union{Long DwordInt Word[2]}unionUnion.Dword=GetTagDword("PackageTag")SetTagWord("LTN44001",Union.Word[0])SetTagWord("LTN44023",Union.Word[0])这样两个参数LTN44001和LTN44023就通过一个Tag传送上来了理论上只要下位机内存足够可以传送任意数量的参数而不受WinCC版本外部Tag数目的限制.42:如何在WinCC里用C语言调用SQL语言?1、创建一个SQL文件。
此文件在ISQL中创建,文件内容是所希望执行的SQL语句。
2、在WinCC的C Script中编写程序调用此SQL文件,如以下程序所示:#i nclude "apdefap.h"void OnLButtonDown(char* lpszPictureName,char* lpszObjectName,char* lpszPropertyName,UINT nFlags, int x, int y){char*a="C:\\SIEMENS\\Common\\SQLANY\\ISQL-q-b-cUID=DBA;PWD=SQL;DBF=E:\\testsql\\testsqlRT.DB;DBN=CC_testsql_99-12-03_12:48:26R;READE:\\testsql\\test.sql";printf("%s\r\n",a);ProgramExecute(a);}下面是一个简单的SQL文件内容:select * from pde#hd#t#test;output to E:\\test2.txt FORMA T ascii注意:文件名及路径中不要带空格。
wincc经典问题
答:编写如下C-Action:#pragma code("");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("");Void GetLocalTimes(SYSTEMTIME*lpst);#pragma code();SYSTEMTIME time;GetLocalTime(&time);SetTagWord("Varname",;SetTagWord("Varname",;SetTagWord("Varname",;SetTagWord("Varname",;SetTagWord("Varname",;SetTagWord("Varname",;SetTagWord("Varname",;SetTagWord("Varname",;4、问:如何经Windows对话框设置日期时间答:通过调用Windows对话框实现。
wincc常见问题
?Datatype"32-bitvaluewithoutsign"
?Formatadaptation"DwordToSimaticBCDTimer" ?Address:dataarea"Times"andaddressing"Word"
10:快捷地切换画面 通常要将所有的设备都显示在一张画面里是不可能的,所以将设备按照处理工艺的功能步骤 分级在多张画面内,以一个污水处理厂为例分为电泳线、前处理线、生化线、加药线等,之 间的切换使用按钮的鼠标动作来实现。这对于用 WinCC 现成的鼠标动作来实现是很简单的, 但是不是要在每张图上都使用相同 数量且位置排列顺序一 致的按钮呢?(出 于对操作的一致 性考虑,不能让操作人员在不同的 图上,不同的位置找想 要操作的按钮)这 个问题的解决我 们使用 WinCC 的脚本编程,在按钮动作中调用它的内部函数来实现。首先,组态一幅背景 画面,其中包括要显示 的静态文本、 OLE(例如,时钟 )、所有的 图形切换按钮及 推出关机按 钮。第二,在背景画面中插入智能对象(SmartObject)中的画面窗口(PictureWindow),并且使其 的尺寸与其分级画面相同。第三,在相应的切换按钮的属性->事件->鼠标动作中编写如下 C 语言脚本代码: #include \"apdefap.h\" void onClick(c har*lpszPictureName, char*lpszObjectName,char*lpszPropertyName) { SetPictureName(\"背景画面\",\"画面窗口\",\"电泳处理线\"); }//\"背景画面\"即为始终显示地静态背景的属性名,\"画面窗口\"即为在背景画//面中插入地 画面窗口(Picture Window)属性名,\"电泳处理线\"即为分级画面//的名称
西门子Wincc经典问题部分解答
42:如何在WinCC里用C语言调用SQL语言?
1、创建一个SQL文件。
此文件在ISQL中创建,文件内容是所希望执行的SQL语句。
}
}
在Tagloging 中的"Properties of process tag"中的"Archive Tag"tab下的Archiving type选择Cycle-selective,在"Event"标签下的"Start Event"内选择cyclicarchive函数。
44:如何在按键组合被禁用的情况下,从WinCC运行环境进入WinCC Control Center?
2、在WinCC的C Script中编写程序调用此SQL文件,如以下程序所示:
#i nclude "apdefap.h"
void OnLButtonDown(char* lpszPictureName,
char* lpszObjectName,
char* lpszPropertyName,
基本思想就是把多个参数在下位机内存中连续排列然后在WinCC中定义一个Tag它的长度是多个参数之和取得这个Tag后编程将其分成多个参数
例如下位机有两个参数LTN44001和LTN44023都是16位整数分别存放在DD99.DW146和DD99.DW148
在WinCC中定义一个外部Tag命名为PackageTag类型为32位整数并联地址为DD99.DBD146再定义两个内部tag名为LTN44001和LTN44023在 Global Script全局脚本中C语言编程如下
wincc的经典问题解答
31:WinCC 高速数据采集的前提条件是什么?
1) WinCC 的版本为 V5.1 或更高
2) S7-400 系列CPU
3) WinCC 站与S7 400 站建立S7 连接(包括MPI,ProfiBus,TCP/IP,工业以太网都可以实现
32:为什么我无法从WinCC里调用STEP 7 变量?
4、编译运行程序
5、工作完成
6、与用户管理相关的函数定义存贮在APPLIB目录下的USEGENAP.H文件中,可根据上面示例自行完成添加用户,修改权限等功能。
22:WinCC6.0 中归档时和5.1版本为什么不同了?
WinCC V6.0 的后台数据库采用了MS SQL Server 2000,所以归档方式与V5.1 有所不同,它的运行数据存放在数据片段(segment)当中,工程师可以根据尺寸需求组态最大容量或根据时间周期启动新的数据库归档片段。将归档数据连续的写入数据库,单个数据片段的尺寸到达或者时间界限到达时,系统会自动开启另一个数据片段进行归档。当数据片段的总体尺寸达到最大时,最早的数据片段就会被覆盖,重新开始新的归档。
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("oldpassword"),GetTagChar("password"),err)) //修改密码,user,oldpassword,password分别为存贮用户名,原密码,新密码的内部变量,类型为文本变量8位字符集 { //密码修改成功后的操作,如给用户提示等 }}PWGENDisconnect(err); //断开与数据库的联接
- 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数目的限制.