西门子wincc v6.2sp3中文版学习工程实例_第1页
西门子wincc v6.2sp3中文版学习工程实例_第2页
西门子wincc v6.2sp3中文版学习工程实例_第3页
西门子wincc v6.2sp3中文版学习工程实例_第4页
西门子wincc v6.2sp3中文版学习工程实例_第5页
已阅读5页,还剩8页未读, 继续免费阅读

付费下载

下载本文档

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

文档简介

Edition2010年-6月摘要在某些情况下(例如:绘制温度、压力或位置曲线时),用户需要将实际的趋势曲线跟设定值(理想)WinCC的“函数trendline,functiontrendcontrol,userarchive,compare,C 使用用户归档存放曲线的设定 使用用户归档存放曲线的实际 如何组态设定值曲 如何组态实际曲 1所示。在“函数趋势控件“上,横坐标代表绘制的点的序号,按照时间序域,域“PointNumber”对应于“函数趋势控件”横坐标的点的序号,本例中为0到9。域新建用户归档,名称为“CompareActualValue,用于存放实际曲线的各个变量值。插入两个域,域“PointNumber”对应于“函数趋势控件”09。域“CompareActualValue”的值在WinCC运行时,由实际的变量值进行填充。框“X轴数值的列”中,选择在“Y轴数值的列”中,选择“SetValue”。为了定义希望显示的时间范围,可指定所要表示的数“CompareActualValue”。在“X轴数值的列”中,选择“PointNumber”;在“Y轴数值的列”中,选择“ActualValue”列。将“成对数值的数目“设为10,“从ID”设置为1。数位”都设为0。取消“自动”复选框,设置值范围从0到9。“Y轴”和“X轴”设置相5X轴 pare”和“SimulateValueIndex“,类型均为“无符号16位数”。 为1秒钟,需要编写如下的:intpointNumber,intsimulateValueArray[10]={1,2,3,4,5,4,3,2,1,2};if(GetTagBit(" pare")==TRUE){if(uaInsertRecords("CompareActualValue",InsertJobCB,pointNumber,actualValue))printf("Insertpoint%dO.K.\r\n",pointNumberelseprintf("Insertpoint%dfailed!\r\n",pointNumberif(pointNumber>=10{SetTagBit( pare",FALSEprintf("==========Insertpointend}}组sry]局隔1秒钟执行一次,当发现“ r变量为隔1秒钟的周期,依次将仿真数组中的数据和数组的索引写入到用户归档表格omrc中,10个数据都写完后,将“ 变量置为“FALSE。注意,在实际的项目中,用户可以根据需求,按照指定的周期从实际的设备变量中取值。此外,在计算机属性的启动列表中,需要勾选全局BOOL(UserFunc)(UAHARCHIVE*phUA,intpointNumber,intactualValue),intpointNumber,intactualValue){BOOLreturnCode=constchar* ame="uaInsertRecords";UAHCONNECThConnect;//GetConnectiontoUserArchivesreturnCode=uaConnect(&hConnect);if(!returnCode||!hConnect){returnCode=printf("#E110:%sfaultinuaConnect ame}{//GetHandletoActualArchive.UAHARCHIVEhArchive;if(!uaQueryArchiveByName(hConnect,pszArchiveName,&hArchive{printf("#E210:%s:uaQueryArchiveError:%d\r\n", ame,uaGetLastError());returnCode=FALSE;}{//Opendatareturnedbyquery.{//Deleteallthearchiverecordsifrestarttocompare.if(pointNumber==0){returnCode=uaArchiveDelete(hArchive,"");if(!returnCode){printf("#E:%serror ame}}returnCode=uaArchiveRequery(hArchive);if(!returnCode){ ame}//InsertthevaluetouserarchivereturnCode=UserFunc(&hArchive,pointNumber,actualValue);if(!returnCode){printf("#E340:%serrorinUserFuncion!!\r\n }//Closetheif(!uaArchiveClose(hArchive{printf("E810:%serrorinuaArchiveClose!\r\n" ame);returnCode=FALSE;}}{printf("#E820:%serrorinuaArchiveOpen!\r\n", returnCode=FALSE;}{printf("#E830:%serrorinuaReleaseArchive!\r\n", returnCode=FALSE;}}if({printf("#E840:%serrorinuaDisconnect!\r\n", returnCode=FALSE;}}return}{BOOLrc= //Returnif(!uaArchiveSetFieldValueLong(*phArchive,1,pointNumber)||//writeproductnameto!uaArchiveSetFieldValueLong(*phArchive,2,actualValue)) //writenumberofpartstoarchive{printf("InsertJobCB:erroronwritingtorecord\r\n");rc=FALSE;}{if(!uaArchiveInsert(*phArchive) //insertnewlinein{printf("InsertJobCB:erroronupdatingarchive\r\n");rc=FALSE;}}return} printf("==========Insertpointbegin==========\r\n");SetTagBit(" pare",TRUE);SetTagWord("SimulateValueIndex",0在按钮“Stop”的“鼠标动作“中,添加C,将“ 仿真数组的索引值设为0。printf("==========Insertpointend==========\r\n");SetTagBit(" pare",FALSE);SetTagWord("SimulateValueIndex",0用户可根据实际的需求,通过控制数据的逻辑。本例中利用全局动作周期地的影响。如果希望周期尽可能准确,可以使用如下方法2:在画面上的“Start”按钮中使用循环进行数据,并插入到用户归档表格中,使用Sleep函数进行延时来控制时作执行到下一个周期后才开始启动插入的过程,其间有不到1秒钟的延

温馨提示

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

评论

0/150

提交评论