计算机控制技术李江全编著石河子大学机电学院电气工程教研室2007年4月第4章计算机控制系统中的软件4.1计算机操作系统4.2现代软件技术4.3面向对象语言VisualBasic4.4监控组态软件Kingview4.5虚拟仪器软件LabVIEW4.1计算机操作系统计算机操作系统(简称为操作系统),是指用于管理和控制计算机软硬件资源,并且能为用户创造便利的工作环境的一组计算机程序的集合。一个操作系统主要有进程管理、作业管理、文件管理、设备管理和存储器管理等基本功能。4.1.1计算机操作系统概述按照不同的分类方法,可以将操作系统进行不同的分类,一般分为以下6类:1.顺序执行系统2.分时操作系统3.实时操作系统4.批处理操作系统5.网络操作系统6.分布式操作系统4.1.2通用操作系统通用操作系统是指用于科学计算、商用、家庭等用途的操作系统。1.DOS操作系统2.UNIX操作系统3.Linux操作系统4.WindowsNT操作系统4.1.3实时操作系统实时操作系统主要用于计算机实时系统中(如计算机控制系统、大型设备的仿真/培训装置以及其它对时间要求比较强的系统),实时操作系统除了具有通用操作系统的特点和功能外,其主要特点是:实时性强、可靠性高,且稳定性好。实时操作系统在任何时刻总是保证优先级别最高的任务占用CPU和其他资源,而且还要保证系统响应的时间是可以容忍和确定的。系统对现场进行不间断地监视,一旦有事件发生,系统就能“实时”地做出响应。通常,实时操作系统主要具有以下特点:1.多作业环境2.任务的事件驱动3.中断与中断优先级4.同步与异步4.1.4嵌入式操作系统所谓嵌入式系统,是指以应用为中心和以计算机技术为基础,软硬件可裁剪,并且能够适应宿主系统对其功能、可靠性、成本、体积和功耗等多方面的要求的系统。简单地说,嵌入式系统与其监控的对象(宿主)是紧密地为一体的系统。对于嵌入式计算机监控系统,其最关键的技术之一就是嵌入式操作系统。嵌入式操作系统应该具备以下特点:1)响应快速、实时强2)结构紧凑、易于裁剪和配置3)开放性好、易于开发和嵌入目前市面上比较流行的嵌入式操作系统有:VRTX、WindowsCE、VxWorks、JavaOS、Psos以及Hopen等,其中,Hopen为国产软件。4.2现代软件技术4.2.1面向对象技术所谓对象,从广义地来讲,世界上的任何一个事物或实体都可以视为一个对象。在面向对象的技术中,“对象”被定义为一个内部封装了数据(信息/属性)和方法(操作)的实体。如果以上定义可能会显得有点抽象的话,那么具体地说,一个窗体、按钮、图形库里的一个罐体图形或该罐体图形所包含的某个部件都是一个对象。对象可能在软件开发平台中已经提供,也可以由软件开发者自己创建。4.2.2动态数据交换(DDE)技术DDE技术在Windows多窗口、多任务环境下,允许多个进程基于消息的驱动下“同时”进行,因而使多个应用程序并发执行,直接进行通信,共享彼此的数据和任务。应用程序间数据通信多任务机制是依靠程序之间有效的数据交换来实现的。这些数据交换机制,使得应用软件与Windows及应用软件之间能较好地协调,系统环境受到了保护,用户环境也更为安全。4.2.3对象链接与嵌入(OLE)技术OLE技术提供了一整套方法,将不同应用软件、不同操作系统中的应用对象组合成一个功能强大的新应用;可以使得一个应用程序能够紧密正确地使用另一个应用程序的服务。因此,OLE技术是一种高级的进程间通信机制。它把用户从应用程序为中心的计算环境解脱出来,代之以文档为中心的计算环境。在前一种环境中,完成任务的工具是单个的应用程序;而在以文档为中心的计算环境,用户能综合使用多种工具来完成工作。4.2.4组件技术组件是独立于特定的程序设计语言和应用系统,具有可重用性、能自包含的软件成分。也可以将组件简单地理解为构成软件的“零件”。也就是说,将一个庞大的应用软件分成多个模块,每个模块保持一定的功能独立性,在协同工作时,通过相互之间的接口交换信息来完成任务,将这样的软件模块称为组件。组件可以单独开发、单独编译,甚至单独调试和单独测试。有了组件技术,可以迅速地进行软件开发。只要在组件库中找出合适的组件,将其组合起来就可以得到所需的软件。4.2.5用于过程控制的OPC规范OPC提供一种工业标准机制,它利用微软公司的OLE技术来建立和规范工业应用中的客户机与服务器之间的通信和数据交换。OPC利用COM和DCOM技术,使得OPC的客户端应用程序和OPC的服务器端应用程序建立起无缝的数据交换,这种数据交换方式完全独立于应用程序运行的物理位置。4.2.6动态链接库(DLL)技术程序员在编写各种用途的应用程序时经常需要使用一些函数库,所谓函数库就是一些目标代码模块经过组合形成的代码群。应用程序从函数库中调用函数实际上就是通过链接使应用程序能够从函数库中存取和使用目标代码,链接是把外部函数结合到一个应用程序中的进程。动态链接过程将包含函数的程序模块预先编译成目标文件,被链接成一种特殊的Windows可执行文件—动态链接库(DLL)。当应用程序运行时,Windows操作系统检查可执行文件,如果需要不包含在可执行文件自身中的函数,Windows就自动装入指定的DLL文件,使得DLL中的所有函数都能被应用程序访问,仅到这个时候,Windows才能确定每个函数的地址并且将其动态地链接进应用程序。DLL是在运行时被装载的,并且所有使用这个DLL的应用程序都可以在运行时共享这个DLL在内存中的同一个拷贝。4.2.7ActiveX技术ActiveX技术是对象的链接与嵌入技术(OLE)与Internet技术的结晶。ActiveX部件是指一些可重复使用的程序代码和数据,是由遵循ActiveX规范的一个或者多个对象所构成的。通过ActiveX技术,程序员可以将可再用的软件部件组装到应用程序中去。ActiveX技术用于将基于对象的部件组合起来,关心的是如何使对象在一起工作,它是将现有的、完善的应用程序片断连在一起的强有力手段。4.3面向对象语言VisualBasicVisualBasic(简称VB)是微软公司推出的一种可视化的、面向对象的结构化高级程序设计语言,是当今世界上应用最广泛的编程语言之一,它也被公认为是编程效率最高的一种编程语言。无论是开发功能强大、性能可靠的商务软件,还是编写能处理实际问题的实用小程序,VB都是最快速、最简便的语言。它简单易学、容易掌握,软件界面设计非常便捷,编程工作量较小,开发周期短,特别适合非计算机专业的工程技术人员掌握和使用。4.3.1VB的基本概念1.对象和类在面向对象的程序设计中,“对象”是系统中的基本运行实体。对象是具有特殊属性(数据)和行为方式(方法)的实体。将带有相似属性和行为的事物组合在一起,可以称为一个“类”,如人类,鸟类等。一个属于某种类的特定对象称为该类的一个实例。在面向对象的概念中,“类”用于指一组相似的对象。2.对象的属性属性是描述对象特性的集合,是用来表示对象的状态。对象的属性都有属性值,改变属性值就相当于改变了对象的特性。3.对象的方法方法指的是控制对象动作行为的方式,它是对象本身内含的函数或过程。方法决定了对象可以执行的动作,是一个简单的不必知道细节的无法改变的事件,但不称作事件;同样,方法也不是随意的,某些对象有一些特定的方法。4.对象的事件事件是发生在对象上的动作。VB应用程序是事件驱动的,也就是说,只有在事件发生时,应用程序才会运行。如果没有事件发生,那么整个程序就处于停滞状态。如果说属性决定了对象的特性,方法决定了对象的行为,那么事件就决定了对象之间联系的方式。VB中,事件就是能被对象识别的动作,如单击、双击、移动鼠标、装入窗体等都是事件。VB中的每个对象都有一个预定义的事件集,不同的对象有不同的事件集。4.3.2VB与串口通信VB是一般程序设计人员在Windows环境下最常用的串口编程语言。利用VB开发串口通信程序主要有两种方法:一是使用MSComm串口控件;二是调用WindowsAPI函数。在实践中,使用VB串口控件实现通信的方法比调用API动态链接库的方法更加方便、快捷,而且用较少的代码可以实现相同的功能,从而使编程效率大大提高,也减少了因编程不当而导致的系统不稳定。1.MSComm控件MSComm控件全称为MicrosoftCommunicationsControl,是Microsoft公司提供的串行通信编程ActiveX控件,它既可以用来提供简单的串行端口通信功能,也可以用来创建功能完备的、事件驱动的高级通信工具。MSComm控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的API函数,而且在VB、VC++、Delphi等语言中均可使用。使用它可以建立与串行端口的连接,通过串行端口连接到其它通信设备(例如调制解调器),发出命令,交换数据,以及监视和响应串行连接中发生的事件和错误。利用它可以进行诸如拨打电话号码、监视串行端口的输入数据乃至创建功能完备的终端程序等。1)MSComm控件处理通信的方式MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。它提供下列两种处理通信的方式:(1)事件驱动方式事件驱动通信是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时程序会希望得到通知,例如,在串口接收缓冲区中有一个字符到达或一个变化发生时,程序都可以利用MSComm控件的OnComm事件捕获并处理这些通信事件;OnComm事件还可以检查和处理通信错误。所有通信事件和通信错误的列表,参阅CommEvent属性。在程序设计中,可以在OnComm事件处理函数中加入自己的处理代码,一旦事件发生即可自动执行该段程序。这种方法的优点是程序响应及时,可靠性高。(2)查询方式在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“OK”响应。轮询方式的进行可用计时器或Do…Loop程序实现。查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。2)MSComm控件的常用属性:(1)CommPort属性:设置并返回通讯端口号,设置为1即为COM1口。注意:必须在打开端口之前设置CommPort属性。(2)Input:返回并删除接收缓冲区中的数据流。InputLen属性确定被Input属性读取的字符数。(3)InputLen:设置并返回Input属性从接收缓冲区读取的字符数。设置InputLen为0,则Input属性读取缓冲区中全部的内容。(4)InputMode属性:设置或返回接收数据的数据类型。设置为0,以文本方式取回传入的数据;设置为1,以二进制方式取回传入的数据。(5)Output属性:向发送缓冲区写数据。Output属性可以传输文本数据或二进制数据。(6)PortOpen属性:设置或返回通信端口的状态。设置为True时打开串口,设置为False时关闭串口。当应用程序终止时,MSComm控件自动关闭串行端口。(7)Rthreshold属性:设置并返回要接收的字符数。当接收缓冲区中的字符数大于等于该值时,将产生OnComm事件。(8)SThreshold属性:OnComm事件发生之前,设置并返回发送缓冲区中允许的最小字符数。(9)Setting属性:以字符串形式设置波特率、奇偶校验、数据位、停止位等串口通信参数。(10)OutBufferSize属性:设置或返回传输缓冲区大小。(11)CommEvent属性:捕捉并检查通信事件和错误的值。3)MSComm控件通信步骤通常我们以下面的步骤来使用VB的MSComm控件作通信控制:(1)加入通信部件,也就是MSComm对象;(2)设置通信端口号码,即CommPort属性;(3)设置通信协议,即HandShaking属性;(4)设置传输速度等参数,即Settings