• 计算机控制技术课程配套教材习题解答(第9章)


    pdf版下载地址:http://pan.baidu.com/s/1hrKoza8

    文件名:ccsa9

    第九章

    9-1 简述国内外组态软件现状。

    组态软件产品于20 世纪80 年代初出现,并在80 年代末期进入我国。但在90 年代中期之前,组态软件在我国的应用并不普及。究其原因,大致有以下几点:

    ⑴国内用户还缺乏对组态软件的认识,项目中没有组态软件的预算,或宁愿投入人力物力针对具体项目做长周期的繁冗的上位机的编程开发,而不采用组态软件。

    ⑵在很长时间里,国内用户的软件意识还不强,面对价格不菲的进口软件(早期的组态软件多为国外厂家开发),很少有用户愿意去购买正版。

    ⑶当时国内的工业自动化和信息技术应用的水平还不高,组态软件提供了对大规模应用、大量数据进行采集、监控、处理并可以将处理的结果生成管理所需的数据,这些需求并未完全形成。

    随着工业控制系统应用的深入,在面临规模更大、控制更复杂的控制系统时,人们逐渐意识到原有的上位机编程的开发方式。对项目来说是费时费力、得不偿失的,同时,MIS(管理信息系统,Management Information System)和CIMS(计算机集成制造系统,ComputerIntegratedManufacturing System)的大量应用,要求工业现场为企业的生产、经营、决策提供更详细和深入的数据,以便优化企业生产经营中的各个环节。因此,在1995 年以后组态软件在国内的应用逐渐得到了普及。

     

    9-2 组态王的主要版本有哪些?

    ⑴InTouch:Wonderware 的InTouch软件是最早进入我国的组态软件。在20 世纪80 年代末、90 年代初,基于Windows 3.1 的InTouch 软件曾让我们耳目一新,并且InTouch 提供了丰富的图库。但是,早期的InTouch 软件采用DDE 方式与驱动程序通讯,性能较差,最新的InTouch 7.0 版已经完全基于32 位的Windows 平台,并且提供了OPC 支持。

    ⑵Fix:美国Intellution 公司以Fix 组态软件起家,1995 年被爱默生收购,现在是爱默生集团的全资子公司,Fix6.x 软件提供工控人员熟悉的概念和操作界面,并提供完备的驱动程序(需单独购买)。Intellution将自己最新的产品系列命名为Ifix,在Ifix 中,Intellution 提供了强大的组态功能,

    但新版本与以往的6.x 版本并不完全兼容。原有的Script 语言改为VBA(Visual Basic for Application),并且在内部集成了微软的VBA 开发环境。遗憾的是,Intellution并没有提供6.1 版脚本语言到VBA 的转换工具。在Ifix 中,Intellution 的产品与Microsoft的操作系统、网络进行了紧密的集成。Intellution 也是OPC(Ole for Process Control)组织的发起成员之一。Ifix 的OPC 组件和驱动程序同样需要单独购买。

    ⑶Citech:CIT 公司的Citech也是较早进入中国市场的产品。Citech 具有简洁的操作方式,但其操作方式更多的是面向程序员,而不是工控用户。Citech 提供了类似C 语言的脚本语言进行二次开发,但与Ifix 不同的是,Citech 的脚本语言并非是面向对象的,而是类似于C 语言,这无疑为用户进行二次开发增加了难度。

    ⑷WinCC:Simens 的WinCC 也是一套完备的组态开发环境,Simens 提供类似C 语言的脚本,包括一个调试环境。WinCC 内嵌OPC 支持,并可对分布式系统进行组态。但WinCC的结构较复杂,用户最好经过Simens 的培训以掌握WinCC 的应用。

    ⑸组态王:组态王是国内第一家较有影响的组态软件开发公司(更早的品牌多数已经湮灭)。组态王提供了资源管理器式的操作主界面,并且提供了以汉字作为关键字的脚本语言支持。组态王也提供多种硬件驱动程序。

    ⑹力控:大庆三维公司的力控是国内较早就已经出现的组态软件之一。随着Windows 3.1的流行,又开发出了16 位Windows 版的力控。但直至Windows 95 版本的力控诞生之前,它主要用于公司内部的一些项目。32 位下的1.0 版的力控,在体系结构上就已经具备了较为明显的先进性,其最大的特征之一就是其基于真正意义的分布式实时数据库的三层结构,而且其实时数据库结构可为可组态的活结构。在1999—2000 年期间,力控得到了长足的发展,最新推出的2.0 版在功能的丰富特性、易用性、开放性和I/O 驱动数量,都得到了很大的提高。

     

    9-3 简述组态王和下位机的通讯原理。

    “组态王”把第一台下位机看作是外部设备,在开发过程中您可以根据“设备配置向导”的提示一步步完成连接过程。在运行期间,组态王通过驱动程序和这些外部设备交换数据,包括采集数据和发送数据/指令。每一个驱动程序都是一个COM对象,这种方式使通讯程序和组态王构成一个完整的系统,既保证了运行系统的高效率,也使系统能够达到很大的规模。

    图9-2  组态王和下位机通讯

     

    9-4组态王变量的主要类型有哪些?

    ⑴基本变量类型

    变量的基本类型共有两类:I/O 变量、内存变量。I/O 变量是指可与外部数据采集程序直接进行数据交换的变量,如下位机数据采集设备(如PLC、仪表等)或其他应用程序(如DDE、OPC 服务器等)。这种数据交换是双向的、动态的,就是说:在“组态王”系统运行过程中,每当I/O 变量的值改变时,该值就会自动写入下位机或其他应用程序;每当下位机或应用程序中的值改变时,“组态王”系统中的变量值也会自动更新。所以,那些从下位机采集来的数据、发送给下位机的指令,比如“反应罐液位”、“电源开关”等变量,都需要设置成“I/O变量”。内存变量是指那些不需要和其他应用程序交换数据、也不需要从下位机得到数据、只在“组态王”内需要的变量,比如计算过程的中间变量,就可以设置成“内存变量”。

    ⑵变量的数据类型

    组态王中变量的数据类型与一般程序设计语言中的变量比较类似,主要有以下几种:

    ①实型变量:类似一般程序设计语言中的浮点型变量,用于表示浮点(float)型数据,取值范围10E−38~10E+38,有效值7 位。

    ②离散变量:类似一般程序设计语言中的布尔(BOOL)变量,只有0,1 两种取值,用于表示一些开关量。

    ③字符串型变量:类似一般程序设计语言中的字符串变量,可用于记录一些有特定含义的字符串,如名称,密码等,该类型变量可以进行比较运算和赋值运算。字符串长度最大值为128 个字符。

    ④整数变量:类似一般程序设计语言中的有符号长整数型变量,用于表示带符号的整型数据,取值范围(−2 147 483 648)~2 147 483 647。

    ⑤结构变量:当组态王工程中定义了结构变量时,在变量类型的下拉列表框中会自动列出已定义的结构变量,一个结构变量作为一种变量类型,结构变量下可包含多个成员,每一个成员就是一个基本变量,成员类型可以为:内存离散、内存整型、内存实型、内存字符串、I/O 离散、I/O整型、I/O 实型、I/O 字符串。

    ⑶特殊变量类型

    特殊变量类型有报警窗口变量、历史趋势曲线变量、系统预设变量三种。这几种特殊类型的变量正是体现了“组态王”系统面向工控软件、自动生成人机接口的特色。

    ①报警窗口变量:这是工程人员在制作画面时通过定义报警窗口生成的,在报警窗口定义对话框中有一选项为:“报警窗口名”,工程人员在此处键入的内容即为报警窗口变量。此变量在数据词典中是找不到的,是组态王内部定义的特殊变量。可用命令语言编制程序来设置或改变报警窗口的一些特性,如改变报警组名或优先级,在窗口内上下翻页等。

    ②历史趋势曲线变量:这是工程人员在制作画面时通过定义历史趋势曲线时生成的,在历史趋势曲线定义对话框中有一选项为:“历史趋势曲线名”,工程人员在此处键入的内容即为历史趋势曲线变量(区分大小写)。此变量在数据词典中是找不到的,是组态王内部定义的特殊变量。工程人员可用命令语言编制程序来设置或改变历史趋势曲线的一些特性,如改变历史趋势曲线的起始时间或显示的时间长度等。

    ③系统预设变量:预设变量中有8 个时间变量是系统已经在数据库中定义的,用户可以直接使用。

    $年:返回系统当前日期的年份。

    $月:返回1~12 之间的整数,表示一年之中的某一月。

    $日:返回1~31 之间的整数,表示一月之中的某一天。

    $时:返回0~23 之间的整数,表示一天之中的某一钟点。

    $分:返回0~59 之间的整数,表示一小时之中的某分钟。

    $秒:返回0~59 之间的整数,表示一分钟之中的某一秒。

    $日期:返回系统当前日期。

    $时间:返回系统当前时间。

    以上变量由系统自动更新,工程人员只能读取时间变量,而不能改变它们的值。预设变量还有:

    $用户名:在程序运行时记录当前登录的用户的名字。

    $访问权限:在程序运行时记录当前登录的用户的访问权限。

    图9-8  定义变量

    $启动历史记录:表明历史记录是否启动(1=启动;0=未启动)。

    $启动报警记录:表明报警记录是否启动(1=启动;0=未启动)。

    $新报警:每当报警发生时,“$新报警”被系统自动设置为1。由工程人员负责把该值恢复到0。

    $启动后台命令:表明后台命令是否启动(1=启动;0=未启动)。

    $双机热备状态:表明双机热备中计算机的所处状态。

    $毫秒:返回当前系统的毫秒数。

    $网络状态:用户通过引用网络上计算机的$网络状态的变量得到网络通讯的状态。

     

    9-5简述建立原料罐填充动画链接的主要步骤。

    所谓“动画连接”就是建立画面的图素与数据库变量的对应关系。对于我们即将建立的“监控中心”,如果画面上的原料罐、反应罐(矩形框对象)的大小能够随着变量“原料罐1液位”等变量值的大小而改变,那么,对于操作者来说,他就能够看到一个反应工业现场状态的监控画面,这正是本课程的目标。接下来为1号原料罐、2号原料罐、反应罐三个图素建立动画连接。 

    在画面上双击图形对象“1号原料罐”,弹出“动画连接”对话框。单击“填充”按钮,弹出“填充连接”对话框,对话框设置如图9-9。注意填充方向和填充色的选择。单击“确定”。单击“动画连接”对话框的“确定”。用同样的方法设置“2号原料罐”和“反应罐”的动画连接设置“反应罐”的动画连接时需要将“最大填充高度”的“对应数值”设为2000。原料罐和反应罐的动画连接设置完毕。 

    图9-9 动画连接

    作为一个实际上可用的监控程序,可能操作者仍需要知道液面的准确高度,而不仅仅是设置刻度。这个功能由“模拟值输出”动画来实现。在工具箱中选用文本工具,在“1号原料罐”矩形框的中部输入字符串“####”。这个字符串的内容是任意的,比如你可以输入“原料罐1液位”当画面程序实际运行时,字符串的内容将被你需要输出的模拟值所取代。用同样的方法,在另两个矩形框的中部输入字符串。操作完成后,画面如图9-10。双击文本对象“####”,弹出“动画连接”对话框。单击“模拟值输出”,弹出“模拟值输出连接”对话框,对话框设置如图9-11。在此处,“表达式”是要输出的变量的名称。在其他的情况下,此处可输入复杂的表达式,包括变量名、运算符、函数等。输出格式可以随意更改,它们与字符串“####”的长短无关。单击“确定”。单击“动画连接”对话框的“确定”,完成设置。同样的方法,为另两个字符串建立“模拟值输出”动画连接,连接的表达式分别为变量“原料罐2液位”和“反应罐液位”。

    图9-10  动画连接

    图9-11动画连接

    选择Touchmak菜单“文件全部存”。只有保存画面上的改变以后,在Touchvew中才能看到你的工作成果。启动画面运行程序Touchvew 。Touchvew启动后,选择菜单“画面打开”,在弹出的对话框中选择“监控中心”。运行画面如下图。

    图9-12 运行画面

     

    9-6设置实时趋势曲线的主要步骤有哪些?

    激活画面制作系统Touchmak,在工具箱中选用“实时趋势曲线”工具,然后在画面上绘制趋势曲线,画面如图9-13;为了让操作者使用方便,在趋势曲线的下方需要增加标注,说明各种颜色的曲线所代表的变量。双击此实时趋势曲线对象,弹出“实时趋势曲线对象”对话框,对话框设置如图9-13所示。

    图9-13实时趋势曲线和实时报警

    图9-14添加实时趋势曲线

    ⒋设置实时报警窗口

    在工具箱中选用报警窗口工具,在画面上绘制报警窗口,画面如图9-15;为使报警窗口内能显示变量的非正常变化,你必须先做如下设置:切换到工程浏览器,在左侧选择“报警组”然后双击右侧的图标进入“报警组定义”对话框。在“报警组定义”对话框中将“RootNode”修改为“车间”。单击“确认”,关闭“修改报警组”对话框。单击“报警组定义”对话框的“确认”按钮。

    图9-15添加实时报警

    在工程浏览器的左侧选择“数据词典”,在右侧双击变量名“原料罐1液位”。在“变量属性”对话框中单击“报警定义”标签。将对话框设置如图9-16;报警组名已经自动设为“车间”。单击“确定”,关闭对话框。用同样的方法定义变量“原料罐2液位”和“反应罐液位”的报警限只有在“变量定义”对话框中定义了变量的报警方式后,才能在报警窗口中显示此变量。接下来设置报警窗口。双击此报警窗口对象,弹出对话框,对话框设置如图9-17;各种文本的颜色你可自由设置。单击“报警信息格式”,设置格式如9-17;单击“确认”单击“报警窗口定义”的确定按钮。

     

    图9-16定义实时报警

    图9-17定义实时报警

    图9-18定义实时报警

    选择菜单“文件/全部存”,保存你的工作成果。激活画面运行程序Touchvew,画面效果如下:

    图9-19  实时报警运行画面

     

     


  • 相关阅读:
    在DataGrid中创建一个点击列名时的弹出式窗口
    利用自定义事件实现不同窗体间的通讯 C#篇
    用javascript实现禁用鼠标右键
    刷新页面时,防止滚动条上滚
    web服务编程
    数据库链接Connection和DataReader的关闭
    .NET的WEB商业应用架构所要解决的若干
    zblog屏蔽分类文章
    过年随想
    mysql数据库文件的真实的物理存储位置
  • 原文地址:https://www.cnblogs.com/liang123/p/6324871.html
Copyright © 2020-2023  润新知