组态监控设计与应用 教学课件 姚立波 项目二 任务2-6_第1页
组态监控设计与应用 教学课件 姚立波 项目二 任务2-6_第2页
组态监控设计与应用 教学课件 姚立波 项目二 任务2-6_第3页
组态监控设计与应用 教学课件 姚立波 项目二 任务2-6_第4页
组态监控设计与应用 教学课件 姚立波 项目二 任务2-6_第5页
已阅读5页,还剩44页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

项目二基于WinCC的液体自动混合装置HMI组态设计任务2-6项目的二次开发编程与调试

知识目标:

掌握组态软件二次开发的概念

掌握C脚本语言编程的方法

掌握VBS脚本语言编程的方法

技能目标:

熟悉C-Script全局脚本编辑器的使用

掌握C脚本语言的编程与调试

熟悉VBScript全局脚本编辑器的使用

掌握VBS脚本语言的编程与调试1C脚本编程应用WinCC提供了功能强大的两种脚本语言C和VBS来进行二次开发,以完成一般组态操作所无法完成的功能,大大扩展了WinCC的工程应用范围。对C脚本编程,WinCC有两种编程环境,一是在图形编辑器中通过对属性和事件的“C动作”编写C程序,二是在全局脚本编辑器“C-Editor”中编写C脚本程序。(1)常用变量存取全局函数WinCC提供了丰富的C全局函数用于脚本编程。1)二进制变量存取函数对二进制变量(BinaryTag)存取的函数为GetTagBit和SetTagBit。取值函数GetTagBit调用格式:BOOLGetTagBit(“tag_bit”);功能:读取二进制变量“tag_bit”的值。返回值:变量“tag_bit”的值,类型为BOOL。赋值函数SetTagBit调用格式:BOOLSetTagBit(“tag_bit”,TRUE/FALSE);功能:将二进制值TRUE或FALSE赋给变量“tag_bit”。返回值:如函数执行无错误,返回TRUE,否则返回FALSE。2)有符号十六位变量存取函数对有符号十六位变量(Signed16-bitvalue)存取的函数为GetTagSWord和SetTagSWord。取值函数GetTagSWord调用格式:shortGetTagSWord(“tag_signed16”);功能:读取有符号十六位变量“tag_signed16”的值。返回值:变量“tag_signed16”的值,类型为short型整数。赋值函数SetTagSWord调用格式:BOOLSetTagSWord(“tag_signed16”,shortvalue);功能:将short型整数值value赋给变量“tag_signed16”。返回值:如函数执行无错误,返回TRUE,否则返回FALSE。3)双精度型浮点数变量存取函数对双精度型浮点数变量(Floating-pointnumber64-bitIEEE754)存取的函数为GetTagDouble和SetTagDouble。取值函数GetTagDouble调用格式:doubleGetTagDouble(“tag_float_64”);功能:读取双精度型浮点数变量“tag_float_64”的值。返回值:变量“tag_float_64”的值,类型为double双精度型浮点数。赋值函数SetTagDouble调用格式:BOOLSetTagDouble(“tag_float_64”,doublevalue);功能:将double型双精度浮点数value赋给变量“tag_float_64”。返回值:如函数执行无错误,返回TRUE,否则返回FALSE。4)其它变量存取函数WinCC中其它变量存取函数的用法相似,主要有:无符号8位整数的存取函数:GetTagByte和SetTagByte;有符号8位整数的存取函数:GetTagSByte和SetTagSByte;无符号16位整数的存取函数:GetTagWord和SetTagWord;无符号32位长整数的存取函数:GetTagDWord和SetTagDWord;有符号32位长整数的存取函数:GetTagSDWord和SetTagSDWord;32位浮点数的存取函数:GetTagFloat和SetTagFloat,等。(1)图形编辑器中编写C程序1)对象属性的C动作打开图形编辑器,添加一“输入/输出域”对象,打开属性对话框,选择“属性”选项卡→“输入/输出”→“输出值”,在动态列

处按鼠标右键,弹出如图2-128所示对话框。选择“C动作…”,打开“编辑动作”窗口,编写C脚本程序,如图2-129所示。变量“tria”为变量管理器中创建的内部变量,类型为“Floating-pointnumber64-bitIEEE754”。通过C动作的编程,该“输入/输出域”的输入/输出值就与变量“tria”建立了动画连接。2)对象事件的C动作在图形编辑器中添加一按钮,在属性对话框中,选择“事件”选项卡→“鼠标”→“按左键”,用鼠标右键点击动作列的

符号,弹出如图2-130所示对话框。选择“C动作…(C)”选项,打开编辑动作窗口,编写C脚本程序,如图2-131所示。在运行时点击该按钮,变量“tria”的值就变为0。3)C全局脚本编辑器中编写脚本程序打开C全局脚本编辑器在WinCC项目管理器目录树中点击“全局脚本”,选择“C-Editor”,如图2-132所示右击鼠标,在快捷菜单中选择“打开”,或者直接双击“C-Editor”。打开的C全局脚本编辑器如图2-133所示。4)创建项目函数在C全局脚本编辑器中可以创建项目函数。现以直角三角形勾股定理的计算为例,已知一直角三角形的2条直角边的边长,编写一个函数,求出此三角形的斜边长。方法如下:在C全局脚本编辑器中,选择左侧窗口的“项目函数”,右击鼠标,在快捷菜单中选择“新建”,打开项目函数编辑窗口。在右侧编辑窗口中,清除原代码,编写以下代码:doubletriangle(doublea,doubleb){doublec;c=sqrt(a*a+b*b);returnc;}如图2-134所示。C脚本编程语法要求严格,要特别注意字母的大小写,标点符号采用半角。triangle定义为double型函数,含有a和b两个形参,均为double型,c为运算的结果,也为double型,其值由return返回。sqrt为求平方根函数。按窗口工具栏上的编译按钮,进行编译,正确无误后存盘,定义为“triangle.fct”,如图2-135所示。5)调用项目函数调用项目函数的步骤如下:1.在图形编辑器中新建一个画面,如图2-136所示添加三个文本框“直角边a”、“直角边b”、“斜边”,添加三个输入/输出域。2.在变量管理器中定义变量“tria”、“trib”、“tric”,均为内部变量,类型为“Floating-pointnumber64-bitIEEE754”。(如“tria”在前面已创建,则直接使用)3.三个输入/输出域分别与变量“tria”、“trib”、“tric”建立动画连接,对应直角三角形的直角边a、直角边b和斜边。4.添加“计算”按钮,组态该按钮“鼠标左键”的“C动作”事件。功能要求:按下按钮,调用“triangle”函数,计算斜边的值。在C编辑动作窗口输入以下代码:doublea,b,c;a=GetTagDouble("tria");b=GetTagDouble("trib");c=triangle(a,b);SetTagDouble("tric",c);如图2-137所示。5.按“确定”按钮,关闭编辑动作窗口。6.程序运行结果如图2-138所示。5)创建动作C全局脚本编辑器中可以创建动作。以创建一个周期性动作为例,要求每500ms动作一次,使变量“tria”的值加1,到100后返回0重新开始。组态步骤如下:1.在C全局脚本编辑器窗口中,选择左侧目录树的“动作”,右击鼠标,从弹出的菜单中选择“新建”,系统弹出动作编辑窗口。2.系统默认建立了一个函数,在此函数体内,语句return0之前加入以下代码:doublea;a=GetTagDouble("tria");a=a+1;if(a>100)a=0;SetTagDouble("tria",a);3.按窗口工具栏上触发器

设置按钮,弹出触发器属性对话框,选择“触发器”选项卡,可设置触发器参数,如图2-139所示。4.选中“周期”,选择“添加”按钮,弹出“添加触发器”对话框,如图2-140所示。在“事件”下拉列表中选择“标准周期”,触发器名称定义为“add1”,周期选择“500ms”。选择“确定”按钮返回。5.在触发器属性对话框中选择“信息”选项卡,可设置代码的保护密码等信息。6.选择“确定”按钮关闭触发器属性对话框。7.按窗口工具栏上的

编译按钮进行编译,正确无误后存盘,定义为add1.pas,如图2-141所示。8.选中WinCC项目管理器中的“计算机”,双击右边数据窗口的计算机名称,打开“计算机属性”设置对话框,选择其中的“启动”参数选项卡,选中其中的“全局脚本运行系统”。重新激活WinCC运行系统,就使“全局脚本运行系统”生效。9.在图2-136所示画面中,添加“WinCCGaugeControl”对象,其“Value”属性与变量“tria”建立连接。存盘并运行,可以看到“Gauge”的指针以每500ms加1的速度递增,到100后又从0重新开始。运行结果如图2-142所示。2VBScript脚本编程应用WinCC可在全局脚本编辑器“VBScript”和图形编辑器两种环境中编写VBS程序。下面先结合实例简要介绍图形编辑器中编写VBS程序的使用方法,然后重点对全局脚本编辑器“VBScript”的应用进行介绍。(1)图形编辑器中编写VBS程序1)对象属性的VBS动作VB动作编辑窗口可以通过图形对象属性对话框的“属性”或“事件”选项卡启动。以“输入输出域”为例,选中“属性”选项卡→“输入/输出”→“输出值”,右击动态列的

符号,在弹出的菜单中选择“VBS动作…”,如图2-143所示。系统打开“编辑VB动作”窗口,在此编写VBS脚本程序,如图2-144所示。通过VBS编程,该“输入/输出域”就与变量“tria”建立了动画连接。2)对象事件的VBS动作在图形编辑器中添加一按钮,在属性对话框中,选择“事件”选项卡→“鼠标”→“鼠标动作”,右击动作列的

符号,在弹出的对话框中选择“VBS动作(V)…”,如图2-145所示。在打开的VBS编辑动作窗口,编写VBS脚本程序,如图2-146所示。在运行时点击该按钮,变量“tria”的值就变为0。(2)VBS全局脚本编辑器中编写脚本程序1)启动VBS全局脚本编辑器全局脚本编辑器“VBS-Editor”是VBS编程的核心编辑器,在WinCC项目管理器“全局脚本”目录树中右击“VBS-Editor”,点击“打开”,或直接双击“VBS-Editor”,如图2-143所示。打开的VBS全局脚本编辑器如图2-148所示。2)创建VBS过程对应C脚本编辑器创建项目函数,VBS提供了过程的创建功能。创建一个新过程时,WinCC自动为过程分配一个标准的名字“procedure#”,其中#代表序号。可以在编辑窗口中修改过程名,以便动作能够调用此过程。当保存过程后,修改后的过程名就会显示在浏览窗口中。过程名必须是唯一的,如果重名,则被认为是语法错误。下面用VBS创建一个过程,实现将自动混合装置的液位值除以100,其工程意义在于实现量程变换,如可以将液位值从单位cm变换为m。过程创建步骤为:1.在图2-148所示VBS全局脚本编辑器中,选择“文件”—>“新建”—>“项目模块”,脚本编辑器自动生成了过程procedure1,如图2-149所示。2.清除原有代码,并输入以下代码:FunctionMeasureChange(tag1)Dimvaluevalue=tag1/100.0MeasureChange=valueEndFunction该过程的作用是将测量值tag1的值除以100,然后由过程MeasureChange返回。3.选择菜单或工具栏的保存功能,系统弹出如图2-151所示对话框,可以按缺省文件名“Module1.bmo”,点击“保存”按钮。3)调用VBS过程VBS过程可以在图形编辑器中调用,也可以在VBS全局脚本编辑器创建的动作中调用,如通过定时器触发。下面介绍图形编辑器中调用过程的方法,定时器的使用将单独介绍。1.在WinCC变量管理器中新建一个内部变量“tank_level1”,类型为32位浮点数。2.在图形编辑器中添加一个按钮,文本属性为“变换量程”,在对象属性对话框→“事件”选项卡→“鼠标”→“按左键”组态一个“VBS动作”,如图2-152所示。3.在编辑VB动作窗口编写VBS程序如下:DimObjTagDimtag1SetObjTag=HMIRuntime.Tags("tank_level")ObjTag.Readtag1=ObjTag.Valuetag1=MeasureChange(tag1)SetObjTag=HMIRuntime.Tags("tank_level1")ObjTag.Writetag1如图2-153所示。4.添加一个输入/输出域,在对象属性对话框→“属性”选项卡→“输入/输出”→“输出值”→动态列的

符号组态变量“tank_level1”,将“数据格式”的“静态”列改为“99.99”,如图2-154所示。5.保存画面并运行。6.启动模拟仿真器,给变量“tank_level”施以“加1”、范围为“0-100”的变化量。7.当每次点击按钮“变换量程”,输入/输出域就会显示浮点数变量“tank_level1”的值,如图2-155所示。4)

温馨提示

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

评论

0/150

提交评论