您的当前位置:首页基于OPC技术的伺服控制

基于OPC技术的伺服控制

2022-05-14 来源:小侦探旅游网
上海交通大学硕士学位论文基于OPC技术的伺服控制

姓名:姜尚坤申请学位级别:硕士专业:控制理论与控制工程

指导教师:陈坚20060101

上海交通大学工学硕士学位论文

基于OPC技术的伺服控制

摘要

本论文是基于罗克韦尔自动化的Kinetix系统为对象,开发图形识别程序,OPC客户程序以及伺服控制程序从而实现对两轴绘图工具的精确控制。

本论文首先实现对图形坐标进行读取的:对于实时绘制图形通过用户选择的控件以及用户鼠标的移动来确定,而对于预先画好的图形则通过边缘检测的方法来读取图形的坐标。

然后在论文中通过编写的OPC客户程序,实现将系统读取到的坐标依次写到伺服控制器中。

本文最后实现在Kinetix系统上,根据通过OPC通讯传送来的用户设定的坐标值,编写伺服控制程序来实现对两轴绘图仪的驱动,从而绘制出用户要求的画面。

关键词 Kinetix,边缘检测,OPC,现场总线

- -

VI

上海交通大学工学硕士学位论文

Servo Control Based on OPC Tecnology

ABSTRACT

This paper takes the Kinetix system of Rockwell Automation asObject. It mainly introduce how to develop the identification ofgraphics, OPC client program and Servo Control program to realizethe accurate control of two axis drawing device.

First, the paper works out the problem which is how to identify thegraphics and how to transfer them to coordinates: For the real-timegraphics, we get the coordinates by the controls used by users and themovement of mouse; for the completed graphics, we get thecoordinates by edge detection.

Secondly, the paper develops a OPC client program to communicatewith RSLinx OPC Server so that the system can transfer thecoordinates from computer to the sevo-controller.

Finally, the paper develops a PLC program to drive the two sevomotors to realize the accurate control based on the coordinatestransferred from the Computer by OPC technology.Keywords Kinetix, Edge Detection, OPC, Field Bus

- -

VII

上海交通大学工学硕士学位论文

上海交通大学学位论文原创性声明

本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。

学位论文作者签名:姜尚坤

日期: 2006年 1 月 20日

- -

III

上海交通大学工学硕士学位论文

上海交通大学学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权上海交通大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

保密□,在 年解密后适用本授权书。本学位论文属于

不保密□。(请在以上方框内打“√”)

学位论文作者签名:姜尚坤 指导教师签名:陈坚

日期: 2006年 1月 20日 日期: 2006年 1月20日

- -IV

上海交通大学工学硕士学位论文

第1章 绪论

1.1 现代工业控制技术的发展与现状

工业控制自动化技术是一种综合运用控制理论、仪器仪表、传动机械、计算机和网络信息技术的科学技术。它在工业生产过程中实现检测、控制、优化、调度、管理和决策,达到提高生产效率和产品质量、降低成本消耗、确保安全保护等经济和技术的要求。工业控制自动化技术主要包括工业自动化软件、硬件和系统集成三大部分,并依赖这三个方面技术的快速发展而不断地取得惊人的成就,同时又因为自动化技术在国民经济中的重要地位,对自动化技术发展的不断要求同时促进了计算机软件技术、硬件技术和系统工程以及计算机通信和网络技术的快速发展。

纵贯工业控制自动化技术的发展历史,我们可以发现在20世界40年代前后,大多数工业生产过程还处于手工操作阶段,因而生产效率十分低下。而在40年代后,工业控制自动化技术的发展速度加快。50年代前后,基地式仪表和单元组合式仪表被普遍采用,在过程控制领域,控制的参数主要是液位、温度、压力、流量,工业控制理论主要是利用经典控制中的频率法和根轨迹法,用于解决单输入单输出系统的定值控制和综合分析。从60年代开始,得益于电子技术的发展,仪表采用气动和电动结合,计算机也开始应用于工业控制领域,同时控制算法中复杂算法例如前馈控制和选择控制在工业中取得了很好得应用,同时现代控制理论也开始产生并不断发展[1]。

到了70年代中期,因大规模集成电路技术和微处理器技术的发展,集散控制系统DCS开始出现,标志着一个新的工业控制时代的开始。在DCS系统中,以往集中的体系结构的有效性问题得到了很好的解决:一方面,它将控制分散在几个较小型的控制器中,这样一个故障只会影响这个系统的一部分;另一方面,可以更好地组织组态,用户可以分开管理针对各个独立单元地组态和控制器。

一个DCS系统通常有多达4层地不同网络,每层都有其不同地技术,即:设备、I/O子系统、控制器以及商务和全厂地集成。所有这些硬件及网络地层次使系统变得相当复杂而且昂贵[3][4][5]。

- -1

上海交通大学工学硕士学位论文

另外,DCS系统虽然被冠名为“分散”的,但按照今天地标志来衡量,应该仍被认为是集中的。于是,随着数字通信技术的进一步发展,一种新的体系结构FCS(Field Control System)逐渐被广泛地应用到工业控制中。这种基于现场设备能力的新型体系结构已不再以控制器为核心,不再把每台现场设备看作外设。可以说FCS的体系结构从DCS的概念演变而来,并且在DCS概念的基础上更进一步,其结果就是系统更加分散,因而降低了在发生故障时系统的脆弱性。

就目前而言,工业控制自动化技术正朝着工厂综合自动化的方向发展,所谓综合自动化,就是指在自动化技术、计算机控制技术、网络通信技术和各种加工技术的基础上,从整个企业的全局出发,实现从车间级到企业管理级的数据透明流动。车间级的实时信息数据可以传送到企业的商务系统中,由商务系统实现全局的优化、调度和设备管理,然后将控制信息传送到工厂车间级,从而实现整个企业的优化和管理,提高企业的生产效率,增强企业的灵活性和竞争力[2]。

1.2 OPC技术

在上一节我们提到了,DCS系统是当前工业控制领域应用比较广泛的控制系统,但是我们应该清醒地认识到它们都存在着一些共同的自身难以逾越的局限性。首先,缺乏互操作性,不同的制造商都独立地创建了各自地协议,因而很多时候只有同一制造商地产品可以一起工作;其次,对于用户来说一家公司的产品往往无法满足其自身的需求。在这种情况下,人们开始在工控软件的开发上进行相关研发,以期上述问题得到更好地解决。

而在工控软件开发方面,对于早期的工业现场监控系统,为了实现不同的硬件和软件之间的数据交换,监控软件必须提供每一种相连控制设备的通讯驱动程序,目前流行的现场控制设备种类繁多,且产品不断升级换代,往往给监控软件的开发带来了巨大的经济压力和工作负担。硬件开发商和软件开发商急切需要一种具有高效性、可靠性、开放性、可互操作性的即插即用的设备驱动程序,在这样的大背景下,OPC工业标准应运而生。

OPC(OLE for Process Control)是近年来国际上新推出的与厂商无关的软件数据交换接口标准和规程。其基本思想是:每个硬件生产厂商为其设备开发一个通

- -2

上海交通大学工学硕士学位论文

用的数据接口供其它系统读写信息〔作为OPC服务器),应用软件也通过OPC接口来读写硬件设备的信息(作为OPC客户)[6]。

早期的OPC标准是由提供工业制造软件的5家公司所组成的OPC特别工作小组开发的。Fisher-Rosement, Intellution, Rockwell Software, In tuitiveTechnology以及Opto22早在1995年开发了原始的OPC标准,1996年9月,OPC基金会(OPC Foundation, OPC-F )成立,开始了全球范围内的活动。到目前为止,OPC基金会成员己经超过400家,涵盖了世界上绝大部分的工控设备厂商。

将OPC技术应用于监控软件的设计,那么软件的数据来源将不再是通过专用硬件驱动程序传递的过程数据,而是具有通用数据接口的OPC服务器,从而实现了软件与硬件在异构环境下的开放、高效通信,从而摆脱了对生产厂商的依赖,提高了控制系统的有效性和灵活性。

1.3 伺服控制技术

伺服控制技术是自动化学科中与产业部门族系最紧密,服务最广泛的一个分支。随着控制技术的发展,伺服系统的性能也得到了不断地提高。随着大规模集成电路的飞速发展,以及计算机(特别是微处理器)在伺服控制系统中的普遍应用,近年来,构成伺服控制系统的重要组成部分——伺服元件发生了巨大的变革,并且向着便于计算机控制的方向发展。为了提高控制精度,便于计算机连接,位置、速度等测量元件趋于数字化、集成化。即使是模拟式的伺服元件也在向高精度、低噪声的方向发展。

同样随着当前现场总线技术的发展,基于现场总线的伺服控制也逐渐成为伺服控制领域的一个热点。一方面保证了伺服控制的实时性和准确性,另一方面,通过工业现场总线可以将整个控制过程的数据及组态信息在整个控制网络上共享,从而有利于系统的优化控制,提高生产效率。基于上述两种要求,基于现场总线的伺服控制系统得以迅速发展起来,其中,以罗克韦尔自动化公司推出的Kinetix系统最为显著,它集运动控制与顺序控制于一身,通过先进的SERCOS接口与高性能的数字伺服驱动器相连,既保证了伺服控制的实时性和准确性,同时也为整个系统提供了完美的网络服务,使得控制信息可以在系统内按用户的需求流动。

- -3

上海交通大学工学硕士学位论文

1.4 研究内容与意义

本论文研究的主要内容是在罗克韦尔Kinetix系统的基础上,开发一种基于OPC技术和现场总线技术的二维绘图仪。用户可以通过上位机的人机交互界面绘制图形,系统据此会自动绘制出与之相对应的图形轨迹。具体包括以下几个部分:

z 上位机的图像识别功能实现。主要有两种功能:一种是用户利用人机

界面的工具,直接绘制出图形,然后系统将图形轨迹读取出来;另一种是用户调用已经做好的图形轨迹,然后系统利用边缘检测的方法,识别出图形的轨迹来。

z 在系统读取出图形轨迹后,需要通过OPC通讯技术把数据从上位机传

送到伺服控制器中。在本系统中,主要通过VB程序开发出OPC客户程序,以同步或异步的方式,通过RSLinx OPC Server 把从上位机读取的坐标传送到伺服控制器中,这一部分也是本次研究的重点。z 在伺服控制器读取到通过OPC通讯传送来的运行坐标后,控制器中的

伺服控制程序会根据坐标值,按照一定的差补算法来控制伺服驱动器的输出,最终实现两轴画笔绘制出用户要求的曲线。

基于OPC技术的伺服控制的意义首先在于,它突破了现场总线不同标准的限制,使得不同现场总线之间的设备以及PC机与设备之间可以实现有效的通讯,从而摆脱了对控制设备厂商的依赖性,使得用户可以按照自己的需求来开发相关的软件,增强了用户的自主性和产品的实用性;另一方面,由于本次研究的对象是绘图仪,在运行过程中准确性的要求高过实时性,所以我们采用OPC通讯技术,另外通过改进OPC客户程序的通讯算法并控制数据流量,我们可以缩短通讯时间,来提高系统的实时性。

- -4

上海交通大学工学硕士学位论文

第2章 运行轨迹的读取

2.1 总论

对于由伺服电机驱动的两只画笔差补运行后得到的目标轨迹,在本次研究中有两种方法来确定:一种是由用户在人机交互界面上使用相关控件直接绘制;另一种则是读取事前已经做好的图形轨迹。因此,这就要求本系统具有上述两种功能。下面就具体介绍本系统是如何实现这些功能的。

2.2 轨迹的实时捕捉

图形轨迹的实时捕捉,主要是通过记录用户鼠标在绘图界面的移动轨迹来确定的。首先,根据用户选择的绘图控件类型,来确定坐标的读取方式:

z 对于线段控件,系统只需要记住轨迹的起始点就可以了;z 对于圆弧轨迹,系统还需要记录轨迹的圆心坐标;z 对于椭圆形圆弧轨迹,系统需要识别两个焦点的坐标;

z 对于随机线条控件来说,由于它的运行轨迹没有规律性,系统只能通

过记录鼠标的整个运行轨迹来确定,但是受OPC实时性的要求限制,我们不可能把每个坐标都传送到伺服控制器中,这就需要我们对得到的坐标值进行筛选,保证那些有明显方向改变的点必须传送到控制器中,对于其他坐标,我们可以按照一定的时间间隔选择一些样本发送到控制器中去。在本程序中对于明显方向改变的判断,是通过梯度来计算的,当梯度变化超过一定范围时,系统会自动记录当前点的坐标,并把它按照时序传送到伺服控制器中。

由于受OPC通讯速度以及伺服执行机构的局限性,我们不可能完全实时地把读取的坐标传送到服务器中,以免引起不必要的冲突。所以,我们需要在上位机的坐标采样程序里,加上一个坐标缓冲区,用以存放系统读取的坐标值,系统要传送坐标值给伺服控制器只需要依次在缓冲区里读取即可。

至此,我们就完成了对图形轨迹的实时捕捉。

- -5

上海交通大学工学硕士学位论文

2.3 边缘检测

2.3.1 简介

景物往往由众多的目标组成,反映在图像中是众多的区域。每个目标或区域可进一步分解成一些具有某种特征的最小成分——基元。因此,在取得图像以后首先要把复杂的景物进行分解。

目标的分解主要根据图像中存在的边缘、纹理、形状、目标表面主方向、传感器与目标表面诸点距离等图像特征,把图像分解成一系列的目标或区域直至最终形成基元。这种目标、区域或基元在某种意义上是一致的和整齐的,我们称这一过程为图象分割。

图像最基本的特征是边缘,所谓边缘是指其周围像素灰度有阶跃变化或屋顶状变化的那些像素的集合,它存在于目标与背景、目标与目标、区域与区域、基元与基元之间。因此,它是图象分割所依赖的最重要的特征,也是纹理特征的重要信息源和形状特征的基础;而图像的纹理形状特征的提取又常常要依赖于图像分割。图像的边缘提取也是图像匹配的基础,因为它是位置的标志,对灰度的变化不敏感,它可作为匹配的特征点。

经典的、最简单的边缘检测方法是对原始图像按象素的某邻域构造边缘检测算子。例如梯度算子,Sobel算子,拉普拉斯算子,Krisch算子和Rosenfeld的门式算子。

由于原始图像往往含有噪声而边缘和噪声在空间域表现为灰度有比较大的起落;在频率域则反映为同是高频分量,这就给真正边缘的检测带来困难。

用最简单的鉴于邻域的边缘检测算子,对图像作初次的边缘检测,然后利用边缘基元之间空间分布关系来协调、增强初始检测的边缘是一类值得注意的方法。用简单的算子对原始图像作边缘检测,然后利用诸边缘基元空间分布信息,用种种方法包括人工智能关于知识的表达、自学习、推理等手段作进一步调整的方法已日益引起学者的重视。

图像分割最经典的方法始鉴于度量空间的空间域聚类,由图像灰度直方图的众数位置来决定图像空间域象素的聚类。在此,直方图波形谷点的形成、检测以及门限选择是十分关键的。

- -6

上海交通大学工学硕士学位论文

利用鉴于度量空间的空间域聚类方法作图像分割,其质量好坏由度量空间决定,在图像空间域往往存在分割的空间不连续的问题。空间域区域增长图像分割则可防止这类问题。根据性质值依赖于单个象素还是象素的领域,空间域区域增长图像分割可分为单一型、混合型和质心型的链结。区域增长方法把具有在某种意义下相似性质的象素连通集构成最终分割区域。

图像的边缘提取和分割是图像处理、图像分析和计算机视觉最经典的研究课题之一,它有较长的研究历史。经典的边缘提取是以原始图像为基础的。对图像的每个象素考察它的某个邻域内灰度的变化,利用边缘邻近一阶或二阶方向导数变化规律用简单的方法检测边缘。

所谓边缘点是指它两边象素的灰度值有显著的不同。边缘点也存在于这样一对邻点之间即一个在较亮的区域内部,另一个在外部。

粗略地区分边缘种类可以有两种,其一是阶跃状边缘,它两边象素的灰度值有显著的不同,其二是屋顶状边缘,它位于灰度值从增加到减少的变化转折点。一般地说,对于图像曲面z=f(x,y),定义它的a方向的方向导数在(x,y)点的值为

fa'(x,y)󰀀lim

h→0

f(x+hsina,y+hcosa)−f(x,y)

h

式中a取顺时针方向,由定义容易验证

fa'(x,y)=

δf(x,y)δf(x,y)

sina+cosa (2.1)δxδx

二阶方向导数为

∂2f(x,y)2∂2f(x,y)∂2f(x,y)2

f(x,y)=θ (2.2)sina+2sinacosa+cos22

∂x∂x∂y∂y

''

a

对于经量化和离散化而获得的数字图象,这些微分符号均用差分符号来代替。

定义数字图像在第i行j列的x方向、y方向、a方向的一阶差分分别为

∆xf(i,j)󰀀f(i,j)−f(i−1,j) (2.3)

∆yf(i,j)󰀀f(i,j)−f(i,j−1) (2.4)

- -7

上海交通大学工学硕士学位论文

经量化和离散化而得到式(2.1)的数字图像差分形式为

∆af(i,j)󰀀∆xf(i,j)sina+∆yf(i,j)cosa

x方向、y方向、a方向的二阶差分分别为

∆2xf(i,j)󰀀∆xf(i+1,j)−∆xf(i,j) (2.5)

∆2yf(i,j)󰀀∆yf(i,j+1)−∆yf(i,j) (2.6)∆2xyf(i,j)󰀀∆xf(i,j+1)−∆yf(i,j) (2.7)∆2yxf(i,j)󰀀∆yf(i+1,j)−∆yf(i,j) (2.8)

式(2.2)的差分形式为

22222

∆2af(i,j)=∆xf(i,j)sinθ+2∆xyf(i,j)×sinacosa+∆yf(i,j)cosθ下面介绍几种常用的边缘检测算子。

2.3.2 梯度算子

对阶跃边缘,在边缘点其一阶导数取极值。由此,我们对数字图象

{f(i,j)}的每个象素取它的梯度值:

G(i,j)󰀀∆xf(i,j)2+∆yf(i,j)2 (2.9)

式中∆xf,∆yf由式(2.3),(2.4)给出。

适当取门限THg作如下判断:若G(i,j)>THg,则(i,j)点为阶跃状边缘点,

{G(i,j)}称为梯度算子的边缘图象。在有些问题中,只对边缘位置感兴趣,把

边缘点标以“1”,非边缘点标以“0”,形成边缘二值图像。对式(2.9)提出一种近似,称为roberts算子。

R(i,j)󰀀max{f(i−1,j−1)−f(i+1,j+1),f(i−1,j+1)−f(i+1,j−1)} (2.10)也可以用

G'(i,j)󰀀∆xf(i,j)+∆yf(i,j)

作为式(2.9)的近似。

- -8

上海交通大学工学硕士学位论文

2.3.3 Sobel算子

对阶跃边缘,Sobel提出一种检测边缘点的算子。对数字图像{f(i,j)}的每个象素,考察它上、下、左、右邻点灰度的加权差,与之接近的邻点的权大。据此,定义Sobel算子如下:

(f(i−1,j−1)+2f(i−1,j)

S(i,j)󰀀+f(i−1,j+1))−(f(i+1,j−1)+

+2f(i+1,j)+f(i+1,j+1))(f(i−1,j−1)+2f(i,j−1)+f(i+1,j−1))−(f(i−1,j+1)+2f(i,j+1)+f(i+1,j+1))

(2.11)

适当取门限THs,作如下判断:若S(i,j)>THs,则(i,j)为阶跃状边缘点。

{S(i,j)}为边缘图像。

2.3.4 Laplacian算子

对阶跃状边缘,二阶导数在边缘点出现零点交叉,即边缘点两旁二阶导函数取异号,据此,对数字图象{f(i,j)}的每个象素,取它关于x轴方向和y轴方向的二阶差分之和。

2

∇2f(i,j)󰀀∆2xf(i,j)+∆yf(i,j)

=f(i+1,j)+f(i−1,j)+f(i,j+1) (2.12)+f(i,j−1)−4f(i,j)

上式中的第二个等号后面的式子可以由式(2.3)—(2.6)得到,这就是著名的

Laplacian算子,这是一个与边缘方向无关的边缘点检测算子。由于我们关心的是边缘点位置而不是其周围的实际灰度差,因此,一般都选择与方向无关的边缘检测算子。若∇2f(i,j)在(i,j)点发生零交叉,则(i,j)为阶跃边缘点。

对屋顶状边缘,在边缘点的二阶导数取极小值。据此,对数字图像

{f(i,j)}的每个象素取它的关于x方向和y方向的二阶差分之和的相反数,即

- -9

上海交通大学工学硕士学位论文

Laplacian算子的相反数。

L(i,j)󰀀−∇2f(i,j)

=−f(i+1,j)−f(i−1,j)−f(i,j+1) (2.13)−f(i,j−1)+4f(i,j)

{L(i,j)}称为边缘图像。

2.3.5 Kirsch算子

Kirsch算子是一种简易而直观的阶跃边缘点检测算子,对数字图像{f(i,j)}的每一象素(i,j),考察它八个邻点的灰度变化,以其中三个相邻邻点的加权和减去剩下五个邻点的加权和。令三个邻点环绕(i,j)不断移位,取其中差值的最大值作为Kirsch算子。

K(i,j)󰀀max{1,max[5Si−3Ti]},i=0−7 (2.14)

式中

Si=f(Ai)+f(Ai+1)+f(Ai+2)

Ti=f(Ai+3)+f(Ai+4)+f(Ai+5)+f(Ai+6)+f(Ai+7)

取门限值THk作如下判断:若K(i,j)>THk,则(i,j)为阶跃边缘点,

{K(i,j)}为边缘图像。

2.3.6 Rosenfeld非线性门式算子

Rosenfeld是一种称为门式的简易的非线性边缘检测算子。通过数字图像

{f(i,j)}的(i,j)象素作一与水平方向成θ角的直线ll'。以ll'为对称轴,在(i,j)

两边作左右两个窗口WLk和WRk,每个窗口由2k×2k象素组成。作门式边缘检测算子:

kk

GAk(i,j)󰀀gL−gL (2.15)

式中

- -10

上海交通大学工学硕士学位论文

kgL=

1

22k122k

k

k,l∈WL

f(k,l)

kgR=

k

k,l∈WR

f(k,l)

取门限THga,作如下判断:若GAk(i,j)>THga,则在(i,j)存在阶跃边缘,

{GA(i,j)}构成边缘图像。注意,k的大小直接影响到边缘检测的结果

k

[7][8]

oJ

l'ikWLθl'l

lWRkI图2-1 门式边缘检测算子Fig 2-1 Edge Detection

2.3.7 Marr边缘检测算子

上面几节介绍的几种简单的边缘检测算子是在原始图像{f(i,j)}上进行的。由于众多原因,图像常常受随机噪声干扰,在其上执行边缘检测的结果常常把噪声当作边缘点而检测出来,而真正的边缘也由于受噪声干扰而没被检测出来。所以在本次研究中,对于图形轨迹的边缘检测,采用的是Marr边缘检测算子。Marr提出,首先对原始图像作最佳平滑,再用Laplacian算子对平滑的结果用提取零交叉点的方法作边缘检测。考察从景物到图像的形成过程,对每象素的光强来说,与象素同一位置的真实景物点周围对该象素光强度贡献呈正态分布规律——越接近该象素的点,贡献越大。

对原始图像,选择二维正态函数

G(r)=(

12πσ)exp(−r2

2

2σ2

) (2.16)

式中,r是以滤波象素(i,j)为中心的极坐标表示的半径,σ2是方差。

- -11

上海交通大学工学硕士学位论文

用G(r)对原始图像{f(i,j)}作卷积,得到平滑后的图像

I(i,j)=G(r)*f(i,j) (2.17)

取二维正态函数式(2.17)作加权平均,使频率具有通带窄,空域方差小的最佳特点。

对于一般的情形,如果在靠近和平行于零交叉线(边缘)时,I(i,j)变化呈线性规律,那么与零交叉线(边缘)正交的方向I(i,j)的二阶导数斜率取极大。

因此,在上述关于I(i,j)变化规律假设的条件下,只要求得最大斜率的二阶方向导数零交叉点的轨迹,即为我们要提取的边缘。

为简化边缘检测算法,使之与方向无关,如果能用Laplacian算子代替二阶方向导数,则将达到目的。

设l是与J轴平行的零交叉线,在l上,条件1:∇2I(i,j)=0 (∇2:Laplacian算子)

∂2

条件2:2I(i,j)=0

∂i

条件1和条件2等价的充要条件是:在l上,I(i,j)是j的常函数或线性函数。因此,只要沿着零交叉线G(r)*f(i,j)是常数或呈线性规律变化,就可以用

Laplacian算子来代替二阶方向导数。

注意到卷积性质,我们有

M(i,j)=∇2{I(i,j)}=∇2(G(r)*f(i,j)) (2.18)=(∇2G(r))*f(i,j)

式中[9]

∇2G(r)=(−1πσr4)(1−

2

2σr2)exp(−

2

2σ2

)

求取M(i,j)的零交叉点轨迹,就可得到图像{f(i,j)}的边缘。从式(2.18)可见,

σ的大小将直接影响到检测的结果[10][11]。

- -12

上海交通大学工学硕士学位论文

2.3.8 实现方法

前面介绍了几种边缘检测的方法,放到本系统来说,我们采用的是Marr边缘检测算子。由于系统读取的图像都是BMP格式的图像,通过Marr边缘算子我们可以读取出图形的边缘;但是这样也有一个问题,就是图形检测的顺序问题,即从哪个坐标开始,下一个坐标又应该读哪一个,尤其是在那些有线条交叉的地方。对于这样的问题,本系统采用的是从交叉点出发,随机选则一段线条,按顺时针的方向走下去,直到线条终端或者回到交叉点;然后选则另外一条没有走过的轨迹,继续检测。从交叉点出发的线条都遍历依次后,对于仍没有被遍历的线条,在读取坐标后,加一个标识符,届时伺服系统首先给伺服控制器发出抬笔的指令,然后将画笔移到该线条的一段,然后放下画笔,按照轨迹坐标继续绘制图形。

2.4 本章小结

本章主要介绍了系统是如何在上位机里实现对用户要求的图形轨迹的读取的。对于用户实时绘制的图形,系统会根据用户绘制图形的类型来记录轨迹坐标到数据缓冲区中,并按照用户绘制的顺序依次通过OPC通讯程序传送到伺服控制器中;而对于那些已经绘制好了的图形轨迹的读取,系统采用边缘检测的方式,对不同图形依次进行坐标读取;同时需要根据图形的形状来确定画笔的运行顺序,对于一些特殊的图形,系统还需要确定画笔的提笔落笔动作以及动作发生的位置。

- -13

上海交通大学工学硕士学位论文

第3章 OPC技术的应用

随着计算机科学技术、工业控制等方面的新技术的迅速发展,工业控制系统已经从早期的集中式控制向全分布式的方向发展。但是目前工业自动化系统绝大多数是封闭的系统,缺乏统一、标准的开放式接口。不同厂家的产品如果要集成在一起,必须为他们开发专用的接口。随着工业自动化系统功能要求越来越复杂,完全用一个厂家的产品来构成整个系统是很困难的,不同厂家的产品之间接口的复杂性限制了用户的选择,不能根据系统的要求选择最佳的系统集成方案。现在工业控制软件缺乏统一的工业标准, 不同厂家的SCADA、DCS、

HMI软件之间进行通讯是非常麻烦的一件事。各个厂家的软件对控制系统硬件操作的设备驱动程序接口也各不相同,这样为了对市场上不同厂家的设备都能管理,控制软件厂家必须针对市场上的几百种常用的硬件都开发设备驱动程序,而且当硬件设备升级、修改时,驱动程序也必须修改,这是做的代价无疑是非常高的。此外,一个系统中如果同时运行不同的工业控制软件,他们通过各自的设备驱动程序同时对同一个硬件设备操作,往往会由于相互之间的不协调、不兼容造成系统的崩溃,影响整个系统的运行。如果设备驱动程序由硬件设备制造厂开发,那么他也必须为市场上常用的各种工业控制软件开发都开发驱动程序, 代价同样是非常高的,如图3-1所示。

画面监视报警报表软件接口软件接口软件接口软件接口图3-1 传统控制软件与硬件设备之间的接口

Fig3-1 Traditional Interface between Control Software and Hardware

另外现代化工厂中,全厂的自动化系统包括了现场设备的管理(智能设备的组态、参数整定等)、产过程管理(DCS、SCADA 等) 及全厂运行调度决策的管理,不同子系统的应用

- -14

上海交通大学工学硕士学位论文

程序之间有大量的信息交流。在各个子系统应用程序之间建立一致、高效、稳定的通讯接口对系统的开发、维护及运行有着非常重要的意义。OPC (OLE for Process Control) 的开发目的,正是为了给工业控制系统应用程序之间的通讯建立一个接口标准,在工业控制设备与控制软件之间建立统一的数据存取规范,这个接口规范不但能够应用于单台计算机,而且可以支持网络上分布式应用程序之间通讯,以及不同平台上应用程序之间的通讯。

OPC是OLE for Process Control的缩写。顾名思义,OPC是一种基于微软的COM/DCOM技术来达成自动化控制的协定,OPC包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。COM/DCOM技术定义各种不同的软件组件如何交互使用和分享数据,不论过程中采用什么软件或设备,OPC为多种多样的过程控制设备之间进行通信提供了公用的接口[12][13],如图3-2所示。

画面监视OPC客户报警OPC客户报表OPC客户OPC服务器厂商A的设备OPC服务器厂商B的设备OPC服务器厂商C的设备OPC服务器厂商D的设备图3-2 采用O PC 技术的工业控制软件与硬件设备之间的接口Fig3-2 Interface between Control Software and Hardware Based on OPC

3.1 OPC技术的本质:COM/DCOM

3.1.1 COM/DCOM简介

随着计算机网络技术的发展,计算机监控系统也普遍地采用了分布式结构,因而系统的异构性是一个非常显著的特点。OPC技术本质是采用了Microsoft的COM/DCOM(组件对象模型/分布式组件对象模型)技术,COM主要是为了实现软件复用和互操作,并且基于WINDOWS的程序提供了统一的、可扩充的、面向对象的通讯协议,DCOM是COM技术在分布式计算机领域的扩展,使COM支持在局域网、广域网甚至Internet上不同计算机的对象之间的通讯[14]。

- -15

上海交通大学工学硕士学位论文

COM是由Microsoft提出的组件标准,它不仅定义了组件程序之间进行交互的标准,并且也提供了组件程序运行所需的环境。在COM标准中,一个组件程序也被称为一个模块,它可以是一个动态链接库,被称为进程内组件(in-;也可以是一个可执行程序(即EXE程序),被称为进程外process component)

组件(out-of-process component)。一个组件程序可以包含一个或多个组件对象,因为COM是以对象为基本单元的模型,所以在程序与程序之间进行通信时,通信的双方应该是组件对象,也叫作COM对象,而组件程序(或称作COM程序)是提供COM对象的代码载体。

COM标准为组件软件和应用程序之间的通信提供了统一标准,包括规范和实现两部分,规范部分规定了组件之间的通信机制。由于COM的语言无关性,在实现时不需要特定的语言和操作系统,只要按照COM规范开发即可。然而由于特定的原因,目前COM技术仍然是以Windows操作系统为主。

COM模型是C/S(客户/服务器)模型,OPC技术的提出就是基于COM的C/S模式,OPC开发分为OPC服务器开发和OPC客户程序开发两种类型。

对于OPC服务器的开发,由于多种编程语言在实现时都提供了对COM的支持,如Microsoft C/C++, Visual Basic, Borland公司的Delphi等。但是开发OPC服务器的语言最好是C或者C++语言[15][16]。

而对于OPC客户程序的开发,则可以选择多种语言。

3.1.2 COM/DCOM概念与原理

COM组件(COM Component)。又称COM服务器,是行使特定功能的软件模块,包含一个或多个COM对象。COM组件有三种存在形式:进程内服务器(In-proc Server)、本地服务器(Local Server) 、分布式COM (DCOM)。

进程内服务器:在进程内服务器中COM是以DLL的形式存在,不具有自己的地址空间。客户程序要想创建COM对象就必须先将COM服务器加载到自己的地址空间中。

本地服务器:在本地服务器中COM是以EXE的形式存在,拥有自己的地址空间。客户程序创建COM对象时COM服务器将启动新的进程,并与客户程序跨进程通信。

分布式COM:在分布式COM中,客户程序与COM服务器位于不同的主机中,客户程序通过SCM (Service Control Manager,服务控制管理器)和相应的网络协议来创建位于其他

- -16

上海交通大学工学硕士学位论文

主机上的COM对象。

COM对象(COM Object),又称对象类(Object Class),是提供特定功能的编译代码,同时也是COM组件的基本组成单位。COM组件由一个或多个COM对象组成,各个COM对象相互独立,并以CLSID (Class Identifier,类标识符)作为标识,组件中的所有对象公用一个App1D (Application Identifier,应用程序标识)。COM对象支持一个或多个接口 (必须实现IUnknown接口),客户应用程序通过获得对象接口指针来行使对方法的调用。

COM接口(COM Interface) ,COM客户程序同COM对象的分离是通过间接函数调用实现的,COM接口无非就是一个命名函数表,COM对象类所有的命名函数表构成虚函数表(VTable)。接口实际上是指向虚函数表的一个指针。因此调用该函数的方法:先连接到特定的COM对象,客户程序通过获得对象接口指针来访问虚函数表(VTable),再获得相应函数的入口地址,从而调用该函数。在设计上,这种调用方式与C++类虚函数的调用方式是一致的,因而COM接口与C++抽象类是二进制兼容的,调用函数时将发生的事情也与虚函数调用时的情形相同:[17]

1. 由pInterface获得对象的虚函数表指针。2. 由虚函数表指针和索引获得要调用函数的地址。3. 调用函数。

接口的上述结构是COM和OLE技术的核心。所有的COM和OLE组件都依赖这个二进制标准与其他任何语言开发的软件组件进行互操作,只要该语言的编译器能将相应的语法转化为这种二进制结构。

接口有以下几个重要的特性:

接口不能实例化。接口中的函数都是纯虚的,是抽象类。抽象类不能被实例化。要想调用接口中的函数,就必须创建一个组件类实现该接口,并实例化该对象类。此外,不同的组件类可以以各自的方式实现同一个接口,只要其行为符合接口定义。多态性(Polymorphism)的基本原理适用于组件对象。

接口有别于C++中的对象指针。接口只是一组客户程序与对象通信的功能和方法。客户程序只能通过接口访问对象的功能。接口是不透明的,隐藏对象内部所有实现细节,你看不到任何对象任何状态信息。而C++中的对象指针则不然,客户程序通过C++对象指针可以直接访问对象的非私有数据。在COM中,客户程序只能通过接口访问对象,这并非是一个限制。正是这个特性使COM提供了具有位置透明性(Location Transparency)的有效二进制标准。

- -17

上海交通大学工学硕士学位论文

接口具有唯一性。每个接口都有自己的IID (Interface Identifier,接口标识符)。IID是GUID(Global Unique Identifier,全局唯一标识符)的一种,具有全局唯一性,保证不会与其他接口发生冲突。

接口是不可变的。接口没有版本,因而避免了版本冲突问题。接口增加,删除功能或改变语法后的新版本成为全新的接口,并指定新的接口标识符。因此,新接口与旧接口并不会冲突。

IUnknown接口,COM定义了一个特殊的接口,IUnknown接口来实现一些至关重要的功能。所有的COM对象都必须实现IUnknown接口。同时,所有其他的COM和OLE接口都继承IUnknown接口。IUnknown接口有三个方法:QueryInterface, AddRef和Release。用C++语法,IUnknown接口定义如下:

interface IUnknown{

virtual HRESULT Querylnterface(IID& iid, void** ppvObj)=0;virtual ULONG AddRef ()=0;virtual ULONG Release()=0;}

AddRef和Release是两个与引用计数(Reference Count)有关的方法。组件对象的AddRef方法在客户程序请求接口指针时调用,Release方法在客户程序不再使用相应接口时调用。QueryInterface方法提供了允许客户程序动态查询COM对象是否支持某一特定的接口的机制,同时它也是客户程序获得特定接口指针的常用方法。

COM客户(COM Client)。任何向COM库发送CLSID请求创建特定的COM对象并返回对象接口指针的应用程序都称之为COM客户。无论COM服务器是何种类型,COM客户总是以同一种方式请求COM服务器实例化COM对象。在客户程序中创建COM对象最简单的方法是使用函数CoCreateInstance,该函数创建特定CLSID的COM对象并返回客户程序请求的接口指针。COM客户也可以通过调用CoGetClassObject来获得特定CLSID COM对象的类厂对象(Class Factory)接口指针。类厂对象支持ICIassFactory接口,客户程序通过该接口请求类厂对象创建相应的COM对象。从这个角度说,COM客户拥有两个不同对象的接口指针,指针都有独立的引用计数。图3-3展示了COM组件、COM对象、类厂对象、COM接口和COM客户的对应关系。

- -18

上海交通大学工学硕士学位论文

(1)Offer CLSID,Request, Create a ObjectClient Application(3)Return Object Interface to ClientCOM ServerClassFactoryObjectA(2)Manufacture Object Class FactoryObjectB图3-3 COM组件、COM对象、类厂、COM接口对应关系Fig3-3 COM Component、Object、Class Factory、Interface

COM对象库(COM Object Library)。COM对象库是实现COM运行机制的系统组件。COM对象库使得跨进程调用IUnknown成为可能,它封装了启动组件以及在组件之间建立连接的所有细节。通常当应用程序需要创建COM对象时,它将该COM对象的CLSID发送给COM对象库,COM对象库用这个CLSID在系统注册表中查找COM服务器的位置。如果COM服务器是一个EXE可执行文件,COM将启动该可执行文件并等待它调用CoRegisterClassFactory注册类厂(在COM中,所有的COM对象都通过相应的类厂对象创建的);如果COM服务器是一个DLL文件,COM将该DLL加载到调用应用程序的地址空间中并调用DLLGetClassFactory获得指向类厂接口ICIassFactory的指针。COM通过该指针创建COM对象并返回应用程序请求的coil对象接口指针。调用程序不必关心COM服务器究竟在哪里运行,只需用返回的接口指针与COM对象通信即可。COM对象库在Windows NT中是以OLE32. DLL实现的。

SCM (Service Control Manager,服务控制管理器)。SCM是COM对象库中用来定位COM对象并激活它们的组件。SCM确保当客户程序发出COM对象连接请求时能够正确定位到COM服务器。SCM基于系统注册表维持一个对象信息数据库。当客户程序请求创建COM对象时,COM对象库指派(Delegate)本地SCM定位并启动COM服务器。SCM返回类厂接口指针给COM库,COM库或客户程序接下来用类厂创建COM对象。本地SCM的操作过程取决于客户程序请求的COM对象服务器类型。

进程内服务器:SCM返回包含对象实现代码的DLL文样名给COM库,COM库加载该DLL并请求返回类厂接口指针。

本地服务器:SCM启动包含对象实现代码的EXE文件,EXE文件在启动过程中将注册类厂,COM库随之得到类厂接口指针。

远程服务器(DCOM):本地SCM连接相应远程主机上的SCM并转发请求到远程SCM,

- -19

上海交通大学工学硕士学位论文

远程SCM启动该主机上的COM服务器(类厂注册方式相同),远程SCM维持一个到类厂的连接并返回一个RPC连接到本地SCM,本地SCM将这个连接返回给COM库。COM库创建一个类厂代理,类厂代理(Proxy)通过RPC转发请求到远程SCM,进而到远程服务器。

COM的位置透明性(Location Transparency),COM的位置透明特性要求当你获得一个对象的COM对象接口指针,就这个指针传送到另一个进程。COM通过一种称为汇集(Marshaling)的机制来实现对象的跨进程调用。汇集接口指针意味着要创建一个包含欲连接对象必要信息的汇集包,这个包通过COMAPI函数CoMarshalInterface来创建,汇集包通过一定的传输机制(LRPC或RPC)被传送到客户进程,客户程序调用另一个COM API函数

CoUnmarshallnterface将汇集包解开并使用得到的接口指针进行COM调用。汇集过程创建了一个代理对象(Proxy)和一个存根对象(Stub)来处理跨进程的接口调用细节。COM在对象进程里创建存根对象来管理实际的接口指针,COM然后在客户进程内创建代理对象,代理对象连接存根对象并提供COM传送给客户程序的接口指针。代理对象不包含实际的接口实现,相反,代理对象的每个成员函数将收到的客户程序的调用参数打成一个远程包,通过RPC发送给存根对象。存根对象解包并将参数入栈,并用实际的接口指针调用对象代码,对象执行被调函数并返回输出参数。同样,输出参数被打包并发送回代理对象,代理对象解包并将结果返回给客户程序。我们看到,无论那种调用方式,客户程序只能见到进程内的对象,因而我们说COM对象调用对客户程序来说是位置透明的。

3.1.3 COM/DCOM组件规则

要建立COM组件,编写的代码应符合一些很好定义的规则。COM作为Microsoft标准。尽管这个标准适用于生成COM组件的各种语言,但不同的语言用不同的步骤保证符合要求。这里列出适用于VB和VC的一般规则:

1.实现IUnknown原则

对象必须至少实现一个接口,才能成为COM对象,这个接口就是IUnknown接口。2.内存管理规则

管理内存就是管理指针,接口指针的寿命管理总是通过每个COM接口中的AddRef和Release方法完成的。接口成员参数有一些适用的规则:

A). In参数:由调用者分配和释放内存;

B). Out参数:由被调用者分配内存,由调用者释放内存,采用标准的COM内存分配器;C). In-Out参数:最初由调用者分配,然后由被调用者释放并再分配(如果需要),和

- -20

上海交通大学工学硕士学位论文

Out参数一样,调用者负责最后返回值的释放。

如果调用返回错误代码,一般来说,调用者没办法清理Out参数和In-Out参数,从而引出下列规则:

A). 在错误返回时,Out参数要设置为无需调用者操作即能清理的值;B). 所有Out指针参数必须设置为空;

C). 在错误返回时,In-Out参数应由被调用者保持不动或像Out参数返回一样显式设置。3.引用计数规则

应用程序通过计数跟踪COM实例,保证符合COM规范。有些开发工具(如VB)内部处理引用计数,开发人员不必考虑,而VC和CB要求开发人员保持这个功能。适用的引用计数规则包括:

A). 在VC和VB中,要保证正确的引用计数,接口指针的每个新备份要调用AddRef,每次删除接口指针要调用Release.

B). 从COM客户程序角度假设对象的所有接口使用相同的引用计数,AddRef和Release的返回值只能在调试时使用,而不能在部署或进行代码决策时使用。

C). 字符串参数必须为Unicode,所有COM接口以及Windows平台上的所有COM AP工传递的字符串都是Unicode字符串。这是在提供调用地址透明度,而又不干预客户程序与服务器之间系统提供代码的条件下,唯一能实现对象互操作的方法。

4.接口是不可变的。

一旦接口被赋予了IID并发布,接口中的所有元素不能再改变,功能的增删将会产生新的接口。

5.接口函数应返回HRESULT

接口的返回值是HRESULT类型(IUnknown::AddRef和IUnknown:: Release除外).尽管COM接口函数的返回类型可以不是HRESULT,但不应设计这样的接口。因为COM远程进程有时要向调用程序返回RPC (Remote Procedure Call,远程过程调用)错误。如果接口函数的返回值类型不是HRESULT,则COM将无法通知调用程序服务器崩溃(RPC_ E SERVERDIED)或网络不通(RPC_ S_ COMM_ FAILURE)等异常情况。严格的说,对于不准备远程使用的接口,这条规则可以忽略。但即使对于只在进程内对象实现的接口,建议也遵守这一规则,以保持编程模型的一致性。HRESULT是COM定义的用于传递状态码的数据类型,COM接口方法和COM库APT都使用HIRESULT返回特定的状态信息。HRESULT (32位整数)数据类型由四个字段组成,如图3-4所示[18]

- -21

上海交通大学工学硕士学位论文

SR312928Facility1615图3-4 HRESULT结构类型Fig3-4 HRESULT Architecture

Code03.1.4 COM/DCOM面向对象技术

面向对象技术构成了COM技术的理论基础。深入地研究面向对象技术,尤其是以C++为主体的面向对象语言,有助于我们更深入地理解COM技术的工作原理。

解析C++动态联编。多态性是C++最主要的特征,多态性的实现得益于C++中的动态联编技术。联编就是将模块或者函数合并在一起生成可执行代码的处理过程,同时对每个模块或者函数调用分配内存地址,并且对外部访问也分配正确的内存地址。按照联编所进行的阶段不同,可分为两种不同的联编方法:静态联编和动态联编。在编译阶段就将函数实现和函数调用关联起来称之为静态联编,静态联编在编译阶段就必须了解所有的函数或模块执行所需要检测的信息,它对函数的选择是基于指向对象的指针(或者引用)的类型。反之在程序执行的时候才进行这种关联称之为动态联编,动态联编对成员函数的选择不是基于指针或者引用,而是基于对象类型,不同的对象类型将做出不同的编译结果。C语言中,所有的联编都是静态联编。C+中一般情况下联编也是静态联编,但是一旦涉及到多态性和虚函数就必须使用动态联编。

多态性是面向对象的核心,它的最主要的思想就是可以采用多种形式的能力,通过一个用户名字或者用户接口完成不同的实现。通常多态性被简单的描述为一个接口,多多个实现。在C十+里面具体的表现为通过基类指针访问派生类的函数和方法。

静态联编需要在编译时候就确定函数的实现,但事实上编译器在仅仅知道对象的地址时候无法获取正确的调用函数,最终结果只能是调用函数的操作束被缚到基类类上。为了能够引起动态联编,我们只需要将需要动态联编的函数声明为虚函数即可。

动态联编只对虚函数起作用。我们在通过基类而且只有通过基类访问派生类的时候,只要这个基类中直接的或者间接〔从上层继承)的包含虚函数,动态联编将自动唤醒。

动态联编过程大致这样。编译器在执行过程中遇到virtual关键字的时候,将自动安装动态联编需要的机制,首先为这些包含virtual函数的类(注意不是类的实例)一即使是祖先类包含虚函数而本身没有一建立一张虚拟函数表VTABLE。在这些虚拟函数表中,编译器将

- -22

上海交通大学工学硕士学位论文

依次按照函数声明次序放置类的特定虚函数的地址。同时在每个带有虚函数的类中放置一个称之为vpointer的指针,简称vptr,这个指针指向这个类的VTABLE。

关于虚拟函数表,有几点必须声明清楚:

z 每一个类别只能有一个虚拟函数表,如果该类没有虚拟函数,则不存在虚拟函数

表。

z C++编译时候编译器会在含有虚函数的类中加上一个指向虚拟函数表的指针

vptra。

z 从一个类别诞生的每一个对象,将获取该类别中的vptr指针,这个指针同样指向

类的VTABLE。

因此类、对象、VTABLE的层次结构可以用图1-3表示。其中X类和Y类的对象的指针都指向了X, Y的虚拟函数表,同时X, Y类自身也包含了指向虚拟函数的指针。

3.2 OPC数据访问技术规范

为解决目前所遇到的问题,几十家世界知名的自动化系统和软硬件厂商和微软公司组成了非赢利性的OPC基金会来制定一套称为OPC规范的OLE/COM接口协议,以此来提高过程控制工业中的自动化/控制应用程序、现场系统/设备以及商业/办公室应用程序之间的互操作能力。经过几年的发展,现在包括数据存取(Data Access)、报警和事件(Alarms andEvents)、历史数据存取(Historical Data Access) 、批量过程(Batch)四部分。目前正在进行的还有XML规范和安全性(Security) 规范的研究工作,数据存取规范最高版本为3.0,本文以数据存取规范版本2.05为例。

OPC实际上是提供了一种机制,通过这种机制,系统能够以标准方式从数据源获取数据并将其传递给任何客户应用程序。这样,只需要生产商开发一套遵循OPC规范的服务器与数据源进行通信,其他任何客户便能通过服务器访问该设备。于是有了OPC数据访问标准,不仅开发相互独立的驱动程序的所产生的问题得到解决,而且异构计算机环境中的系统集成也变得简单可行。

OPC数据访问规范采用了Microsoft的OLE/COM技术,为实时信息服务器定义了标准对象、方法和属性,并以原型软件示例、功能说明和相关文档的形式形成一套标准的OLE/COM接口协议,它主要包含下面两方面内容,如图3-7所示。

(1) 一套标准的自定义COM接口(OPC Access Custom Interface) 它由C、C++语言

所编写的客户和服务器程序所使用;

- -23

上海交通大学工学硕士学位论文

(2) 一套标准的OLE自动化接口(OPC Access Automation Interface) 它支持使用像

VB、Excel这样高级商用应用程序开发的客户应用程序。

C++ 应用程序OPC 自定义接口OPC 服务器(In-Proc,Local,Remote,Handler)OPC 自动化接口厂商专用逻辑VB应用程序图3-5 OPC接口Fig3-5 OPC Interface

这两套标准接口的制定极大的方便了服务器和不同语言开发的客户应用程序之间的通信,使用户对开发工具的选择有了较大的自由。

除了以上提到的COM扩展接口外,OPC数据访问规范还提供了许多比如软件安装事宜、数据类型、参数和结构、OPC出错代码综合等,所有的这些与OPC对象接口一起形成了完整的OPC数据访问标准。

3.2.1 OPC架构及组成

虽然OPC的设计主要是从网络服务器处访问数据,但实际中的OPC服务器可以是能从物理设备收集数据的本地或远程EXE程序,它能够从底层物理设备读取数据递交SCADA或DCS系统,或者读取SCADA或DCS系统数据递交到应用程序。此外OPC服务器必须实现定制接口,也可实现自动化接口,典型的OPC架构如图3-8所示[20][21][22]。

VB应用程序OPC 自动化接口OPC AutomationWrapper本地或远程OPC 服务器(Shared by many Clients)C++应用程序OPC 自定义接口服务器数据缓存物理设备设备数据图3-6 典型OPC架构Fig3-6 Typical OPC Architecture

正像所有的COM实现一样,OPC的架构也是客户/服务器模式,典型的客户/服务器模

- -24

上海交通大学工学硕士学位论文

式如图3-9所示。当客户访问数据时,无力设备的原始数据或经物理接口直接递交服务器,或通过物理接口、SCADA/DCS系统、OPC接口递交服务器,最后由服务器完成与客户的数据交换。在此过程中,服务器统一优化不同客户的数据访问,以达到与物理设备的有效通信。输入(读)时,由设备返回的数据存放在服务器缓冲区中,以满足不同OPC客户的异步数据分配或同步数据采集要求;输出(写)时,OPC服务器代替OPC客户刷新物理设备数据[23]。

OPC接口SCADA系统物理接口物理I/O应用程序OPC接口OPC 服务器物理接口物理I/O图3-7 典型OPC客户/服务器关系Fig3-7 OPC Client/Server Relationship

在逻辑层次上,OPC服务器包含三个对象:服务器对象、组对象和项目对象,如图3-10所示。OPC服务器对象包含了服务器自身相关的信息,并用作为OPC组对象的容器。它为OPC客户提供了建立和操作OPC组对象的功能,同样,OPC组对象包含了自身相关信息并组织OPC项目对象,组对象还为客户应用程序提供了预订了功能,当项目发生改变时,客户可以及时得到通知。至于项目对象则代表一种与服务器中数据源的连接关系,客户程序正是通过这种连接关系来访问数据的。

组项目项目项目图3-8组对象与项目对象关系Fig3-8 Group/Item Relationship

3.2.2 OPC自定义接口

OPC服务器对象和组对象的各接口都是以C++语言编写的,OPC服务器与OPC客户所必须要求的标准OLE接口特性在OLE程序员参考手册中有详细论述,OPC数据访问规范中没有给出个对象接口的具体实现,而只是描述了他们外部功能[24]。 1.OPC服务器对象

OPC服务器对象是OPC首选对象,提供的接口如图3-11所示。

- -25

上海交通大学工学硕士学位论文

IUnknownIOPCCommonIOPCServerIOPCServerPublicGroupsIOPCBrowseServerAddressSpace[IPersistFile]IConnectionPointContainer标准OPC服务器对象图3-9 标准OPC服务器对象Fig3-9 Standard OPC Server Object

(A). IUnknown接口是COM标准接口;

(B). IOPCCommon接口为某个指定的客户/服务器对话提供设置和查询它的本地ID,也就是说,这样一个客户端的访问不会影响到别的客户端的访问;

(C). IOPCServer接口是OPC服务器的主要接口,提供对组对象进行有关操作,获取服务器状态信息等;

(D). IOPCServerPublicGroups 接口为客户和服务器提供了方便管理这些公共组的功能,在接口中建立公共组的概念目的是满足多客户应用程序共享数据项目的要求,比较典型的如在过程控制系统中,多客户应用程序需要使用同样应用程序或工具来监控同一过程控制数据,客户应用程序与公共组连接后,可以像使用私有组一样使用公共组。公共组由客户或服务器建立,仅只有一个应用程序/终端用户能够定义数据项目,其它客户应用程序通过连接此公共组访问其中的信息,由于只有一个客户能够创建并配置数据项目的属性,因而保持了同一数据定义的同步性。

(E). IOPCBrowseServerAddressSpace接口提供了客户浏览服务器数据项目的功能,它给出了项目标识的有效定义。项目标识(Item ID)是数据的唯一标识,它告诉服务器数据是什么数据,存放何处,服务器中全体项目标识形成水平或分层地址空间,分层地址空间很像操作系统中的文件系统,地址空间的分支或路径代表各级目录、子目录,项目标识代表文件,这种结构极大的方便了数据的查找。

(F). IOPCItemProperties接口提供客户灵活方便的方式浏览服务器数据项目 (ItemID)属性的功能,与IOPCBrowseServerAddressSpace接口有相似之处,但是当访问大量数据时没有进行优化操作,适合访问少量数据。

(G).IPersistFile 可选接口允许客户装载或保存服务器的配置信息,如SCADA或DCS数据库,通信波特率,PLC站地址等,当系统配置信息需要修改时,由于此接口的存在,

- -26

上海交通大学工学硕士学位论文

因此用户无需启动另外单独程序,服务器通过此接口可从客户方直接装载配置信息以修改或重新设置原来的配置;

(F). IConnectionPointContainer接口提供了访问IOPCShutDown接口的连接点。 2.OPC组对象

OPC组对象是由OPC服务器创建的用以管理项目集合的对象,此对象所提供的接口如图3-12所示。

IUnknownIOPCItemMgt[IOPCPublicgroupStateMgt]IOPCSyncIOIOPCASyncIO2IConnectionPointContainerIOPCASyncIOIDataObject标准OPC组对象图3-10 标准OPC组对象Fig3-10 Standard OPC Group Object

(A). IUnknown 接口是COM标准接口;

(B). IOPCItemMgt 接口允许客户添加、删除和控制组中的数据项;

(C). IOPCGroupStateMgt 接口允许客户管理组中所有状态信息,包括:刷新速度、活动状态、名称、时差、百分数死区和客户句柄等,这些状态信息影响接口和接口中方法的操作。

(D).IOPCPublicGroupStateMgt 可选接口用以将私有组转换成公共组,因为由客户所创建的组都是私有组,为实现数据项目的共享,必须使用此接口来转换;

(E). IOPCSyncIO 接口允许客户对服务器执行同步读写操作,所谓同步是指客户在一次事务中读写数值和属性的能力。接口中的同步读方法从高速缓存或设备中为组中项目读取有关信息,接口中的同步写方法将数值写到设备中,在返回之前,这些方法必须运行到结束;

(F). IOPCAsyncIO2为2.0新接口,而IOPCAsyncIO为老接口,允许客户对服务器执行异步读写操作,多个异步操作同时出现时,OPC用排队的方式处理它们,并让每个异步操作结束后立即返回以使客户程序继续运行。接口中的异步读方法从高速缓存或设备中为组中项目读取有关信息,接口中的异步写方法将数值写到设备中,每一异步操作都当作事务处理,并被赋予事务标识,当操作完成时,回调函数吧事务处理结果和事务标识传递给客

- -27

上海交通大学工学硕士学位论文

户方IOPCDataCallback(老接口为IAdivseSink)接口;

(H). IConnectionPointContainer为2.0新接口,而IDataObject为老接口,接口都是为达到高效的数据传输,它允许在客户和使用OPC数据流格式的组织间产生连接。 3.客户接口

OPC数据访问规范提供IOPCDataCallback、IOPCShutDown以及IAdviseSink(旧接口)客户接口。IOPCShutDown接口调用负责关闭OPC服务器;IOPCDataCallback和IAdviseSink(旧)接口处理从OPC组中产生的回调函数。产生回调函数的原因可能是数据发生变化、异步读、刷新和异步写完成,在回调函数中,包含有事务标识的数据流从服务器传递给客户,客户通过检查数据格式和事务标识来判断回调函数产生的原因,此外客户将传递过来的事务标识保存在事物列表中,以检验每一个事物的完成情况。

3.2.3 OPC自动化接口

自动化的核心是IDispatch接口,每一个自动化对象都必须实现IDispatch接口。自动化对象的两个基本特征是方法(method)和属性(property),方法指自动化对象所提供的功能服务,属性是指自动化对象的数据特征。客户可通过IDispatch接口的成员函数GetTypelnfoCount和GetTypelnfo处理对象的类型信息,GetlDsOfNarnes成员函数返回方法或属性成员及其参数名字的DIPID(分发ID,一个整数,0或负数有特殊含义,IDispatch用分发ID管理属性和方法)。IDispatch接口的Invoke函数是个关键函数,客户程序必须通过Invoke函数才能访问属性或方法,可以说Invoke函数是自动化对象的命令翻译器,它还提供了管理属性和方法的分发ID机制以及一套描述参数和返回值的方法,使得运行时可动态绑定属性和方法并进行参数类型检查成为可能。虽然IDispatch接口的运行效率比直接通过Vtable进行调用要低一些,但其强大的功能以及灵活性足以弥补效率上的不足。

设计自动化接口的目的是方便使用VB、Delphi或其它嵌有自动化功能的软件与OPC服务器接口。在逻辑层次上,自动化接口由OPC服务器对象、组对象和项目对象组成,如图3-13所示。由于OPC自动化接口与自定义接口外部功能有许多相似之处,因此下面之涉及到不同之处。

- -28

上海交通大学工学硕士学位论文

OPCServerOPCGroups(Collection)OPCBrowserOPCGroupOPCItems(Collection)OPCItem图3-11 OPC服务器自动化接口层次结构

Fig3-11 OPC Automation Server Object Hierarchy

(A). OPCServer此对象与运行的服务器相连接,客户在此使用自动化接口时,必须在产生组对象和项目对象前创建此对象。对OPC服务器属性、配置信息及事件等进行定义; (B). OPCBrowser 对象提供客户浏览服务器数据项目功能,包括数据类型、访问权限数据项目个数等等。

(C). OPCGroups对象用以对公共组的管理,如获取公共组的组名、删除公共组等; (D). OPCGroup对象用以管理组对象中所有状态信息,主要用以对组的刷新速度和活动状态进行修改;

(E). OPCItems对象用于客户添加、删除和控制组对象中的数据项目;

(F). OPCItem对象提供了项目对象的属性和方法,对象接口中的读方法从数据源(高速缓存或设备)读取项目的有关属性和数值,对象接口中的写方法将数值写到设备中[25]。

3.2.4 OPC通讯方式

OPC规范规定了两种通讯方式:同步通讯方式和异步通讯方式。这两种通讯方式与我们常见的串口同步通讯、异步通讯以及以太网的同步通讯、异步通讯的功能差不多。

同步通讯时,OPC客户程序对OPC服务器进行相关操作时,OPC客户程序必须等到OPC服务器对应的操作全部完成以后才能返回,在此期间OPC客户程序一直处于等待状态,如进行写操作,那么必须等到OPC服务器完成写操作后才返回,其具体通讯方式如下图示。因此在同步通讯时,如果有大量数据进行操作或有大量的客户程序对OPC服务器进行读写操作,必然会造成阻滞现象,所以同步通讯只适用于OPC客户程序较少,数据量不大的情况下。

- -29

上海交通大学工学硕士学位论文

图3-12 OPC同步通讯

Fig3-12OPC Synchronization Communication

与同步通讯相对应的是异步通讯时,OPC客户程序对服务器进行相关操作时,OPC客户程序操作后立刻返回,不用等待OPC服务器的操作,可以进行其他操作。当OPC服务器完成数据访问时,触发OPC客户程序的异步通讯完成事件,将数据通讯结果传送给OPC客户程序。

图3-13 OPC异步通讯方式

Fig3-13 OPC Asynchronism Communication

OPC的异步通讯有四种方式:

数据订阅:如果客户端采用订阅方式,服务器端会将变化的数据通过回调传送给客户程序。

异步读:返回操作结果和数据值。异步写:返回操作结果——成功或者失败。异步刷新:异步读所有的Item的值。

3.3 OPC接口设计

在本系统中采用罗克韦尔自动化开发的通讯软件RSLinx作为OPC服务器,开发出基于OPC规范的客户端接口。

3.3.1 RSLinx介绍

RSLinx是罗克韦尔自动化为了实现Allen-Bradley系列可编程控制器基于微软

- -30

上海交通大学工学硕士学位论文

Windows操作系统的工厂级通讯而开发的专业软件。它支持DDE、OPC通讯,可用于处理器与MMI和组件软件之间进行通讯,也可以与相关兼容软件和其他用户定制的DDE、OPC应用软件通讯,比如Micosoft Excel,Microsoft Access,这也就为第三方软件系统的设计提供了可能[26][27]。

3.3.2 OPC自动化接口设计

OPC自动化接口主要是方便使用VB、Delphi语言设计。自动化是一项基于COM的技术,一方面,自动化继承了COM的很多优点,比如语言无关、进程透明等特性,另一方面,自动化简化了COM 的一些底层细节,比如属性和方法的处理、一组专门用于自动化的数据类型等,它为一些弱类型的高级语言(如Visual Basic)提供了一种相互通信的路径。

本次开发过程中,VB开发的自动化接口与OPC服务器之间的数据通讯方式如下图示:

OPC应用程序包装DLLRSLinx.DLL代理-占位DLL代理-占位DLLCOM/DCOMOPC服务器图3-14 OPC异步通讯方式

Fig3-14 OPC Asynchronism Communication

首先,要在客户程序中引用RSLinx.dll文件,然后再客户程序中进行定义对象的声明,接着用“New”方法生成服务器对象,通过OPCServer对象的Connect方法来连接OPC服务器,Connect方法有两个参数,第一个参数是OPC服务器的ProgID,第二个参数是节点名称,如果第二个为空,则标识为本地OPC服务器,如果需要连接远程OPC服务器,那么需要把远程机器的名称或者IP地址作为第二个参数;连接OPC服务器后,需要通过调用OPCServer.OPCGroups.Add方法为OPCServer对象添加OPCGroup对象,参数为OPCGroup

- -31

上海交通大学工学硕士学位论文

名称;接着调用OPCItems.AddItem方法添加Item。至此完成了OPC服务器对象的创建,OPC组对象的添加和OPC Item的添加。如果一切返回都是成功的,便可以通过调用同步读写或者异步读写的方法对Item进行读写操作了。

异步与同步的不同之处在于异步操作后直接返回,操作结果在回调函数中实现。异步读回调在GroupObj_AsyncWriteComplete中实现,异步写在GroupObj_AsyncWriteComplete中实现,数据变化回调在GroupObj_DataChange中实现。所有的回调实现都是采用事件的方式来操作,在VB中采用Dim WithEvents ServerObj As OPCServer 这样的方式来使声名的对象支持事件。

除了上述的不同,在进行异步通讯之前,必须加上启用回调的代码:GroupObj.IsSubscribed=True。[28][29][30]

另外当程序退出的时候,我们需要释放调程序中引用的资源,断开OPC服务器的连接。

- -32

上海交通大学工学硕士学位论文

开始创建OPCServer对象连接到本地或远程OPC服务器失败创建OPCGroup对象设置OPCGroup参数添加Items数据项失败返回Error参数,进行错误处理同步读写数据断开连接结束图3-15 OPC同步通讯方式

Fig3-15 OPC Synchronism Communication

3.3.3 OPC自定义接口设计

OPC自定义接口可以应用于应用程序的最低级,即通过该接口将现场实时数据采集到DCS或SCADA系统中来。包括绝大多数工业组态软件如罗克韦尔的RSView SE、西门子的WinCC、GE的iFix等均支持OPC通讯方式,配置OPC服务器采集现场实时数据,工业组态软件包含OPC客户,通过该接口采集现场实时数据到SCADA系统中来。OPC自定义接口编程流程如图3-18所示。[31][32]

- -33

上海交通大学工学硕士学位论文

程序开始标准COM 初始化如果成功DCOM安全初始化访问COM内存管理器如果成功如果失败重新初始化创建COM对象如果成功创建OPC服务器查询接口如果成功查询接口如果失败结束IOPCServerIOPCBrowseServerAddressSpace查询接口如果成功BrowseOPCItemIDs查询接口如果失败返回创建组Group如果成功查询接口BrowseAccessPathsIOPCPublicGroupStateMgtIConnectionPointContainerIOPCGroupStateMgtIOPCAsyncIO2IOPCItemMgt如果成功如果失败返回如果成功添加项目Item如果成功IOPCDataCallback数据读写程序结束图3-16 接口编程流程图Fig3-16 Interface Flow Chart

3.4 本章小结

本章首先介绍OPC(OLE for Process Control)的起源与现状,它是一种基于微软的COM/DCOM技术来达成自动化控制的协定,OPC包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统;接着详细介绍了微软组件对象模型COM/DCOM的起源、发展、概念与原理、规则、面向对象技术和体系结构;然后详细介绍了OPC软件技术规范架构与组成、自定义接口和自动化接口以及相应的接口函数;最后介绍了RSLinxGateway软件以及应用于本系统设计的基于双重C/S结构的OPC接口以及相应的流程图,并详细介绍了如何搭建OPC客户程序以实现坐标值的传送。

- -34

上海交通大学工学硕士学位论文

第4章 伺服控制实现

4.1 伺服技术的发展

伺服系统(ServoSystem)是自动控制系统中的一类,通常应用闭环控制结构来控制被控对象的某种状态,使其能够自动、连续、精确地复现输入信号的变化规律,常用于快速、精密的位置控制和速度控制场合。伺服控制技术是伴随着现代日益发展的电力电子技术、计算机技术和先进控制理论的发展而发展起来的,它最早出现于二十世纪初。1934年首次提出了伺服机构(Servomechanism)这个概念[33],其中电机控制技术是伺服控制系统的核心。在过去,由于直流电机调速控制简单,具有良好的调速性能和起、制动性能,变流装置容量小,能方便、经济地在大范围内平滑调速,因而直流电机广泛应用于各种伺服控制系统,高性能电控伺服系统绝大多数采用直流伺服技术。但由于直流电机结构复杂,成本高,存在电刷和机械换向器,维护困难,可靠性差,使用环境受到限制,限制了直流电机向高转速、高电压、大容量方向发展[34]。而交流电机相对而言结构简单,坚固耐用,运行可靠,便于维修,价格便宜,于是人们就开始进行大量的交流调速技术的研究。1971年,德国学者Blaschke提出了对交流电机进行矢量控制的思想[35]。它的出现对交流电机控制技术的研究具有划时代的意义,在理论上解决了交流电机的转矩控制问题。通过按转子磁场定向构成的矢量变换控制系统,实现了定子电流的励磁分量与转矩分量间的解祸,从而达到对交流电机的磁链和电流分别控制的目的,这样就可将一台三相交流电机等效为直流电机来控制,因而可使交流电机的动、静态控制性能完全可以和直流系统相媲美。与此同时,大功率晶体管(GTR)、可关断晶闸管(GTO)、功率场效应管(P-MOSFFT)、绝缘栅双极型晶体管(IGBT)等一些既能控制导通又能控制关断的全控型快速电力电子器件相继问世,且正向大功率化、高频化、模块化、智能化方向发展。由于电力电子技术和现代电机控制理论的突破性进展,70年代末期进入了伺服技术的交流化时代,相继开发出各种类型的交流伺服系统,广泛应用于工业生产的各个领域,出现了交流伺服系统逐步取代直流伺服系统的发展趋势。到了90年代,交流伺服系统己经在许多场合取代了直流伺服系统,它的性能甚至超过了直流伺服系统,从而取代了直流伺服系统成为电力传动伺

- -35

上海交通大学工学硕士学位论文

服系统的主体。如今在经济发达的国家,交流伺服系统的推广和应用速度相当快,己遍布冶金、电力、铁路、运输、化工、民用等各个领域,在日、美、德等国家,己经开发出商品化的系列交流伺服系统产品。[36][37][38]

交流伺服控制可分为感应电机(IM)控制和永磁同步电机(PmSM)控制两大类

[39]

。日前,由这两类电机组成的高性能交流伺服驱动装置己占国际市场的主导

地位。就应用领域而言,中小容量(千瓦级及千瓦级以下)驱动采用永磁同步交流伺服电机,由晶体管变频器供电;而大容量(千瓦级以上)驱动采用矢量控制异步交流伺服电机。异步交流电机结构简单、坚固耐用,维护工作量小,运行效率高,可以做到高电压、大容量、高转速,无直流电机的缺陷。但异步电机功率因数低,转子参数易受温度影响而发生变化,影响校制精度,且电机低速特性不好,调速特性较差[40]。随着永磁材料性能的大幅度提高和价格的降低,开发出了各种类型的永磁同步电机交流伺服系统,并一跃成为交流伺服系统的主流。正弦波交流永磁同步电机的转速和频率之间保持同步,具有优良的低速伺服性能,还能实现弱磁高速控制,可具有像直流电机一样的调速特性ial由于永磁同步电机能满足伺服系统的一些高精要求,诸如高的功率/质量比和转矩/惯量比,在超低速有高精度位置控制要求时,转矩脉动小,零转速时有控制转矩,能高速运行,短时间内快速实现加减速运行,高效率,高功率因数等,因此它主要用于中小功率(小于十千瓦)、要求有良好的动、静态响应的高性能伺服奕动中,特别适合于低转速和负载不断冲击的场合。

交流伺服驱动根据数字化程度来分,经历了模拟式、数字模拟混合式到全数字式发展过程。模拟式伺服系统具有响应快、容易随时把握系统S作基本情况等特征,但是也存在以下缺点:

(1)微弱信号信噪分离困难,很难将控制精度提高到1%以上的级别;

[41]

使位置控制产生零点漂移误差。(2)在零点附近容易受到温度漂移的影响,

由于模拟系统的这种本质缺陷,使它很难满足高精度伺服控制的要求,随着微型计算机的发展,尤其是单片微型计算机的迅速发展,使它们体积小,重量轻,工作可靠,价格低廉,在伺服系统中取代了大量的模拟和数字电路,提高了伺服系统的可靠性,增强了伺服系统的通用性和灵活性,促进了伺服系统向数字化方向的发展。与模拟系统相比,数字伺服系统的特点是:[42]

- -36

上海交通大学工学硕士学位论文

(1)从检测部件到控制算法的计算等均可以采用数字部件。只要适当的选择字长和反馈元件的分辨率,即可得到很高的检测和计算精度,提高伺服系统的精度 ;

(2)对逻辑电平以下的漂移、噪声不予响应,零点定位精度可以充分得到保证;

(3)大大缩小交流伺服系统的体积,使伺服系统微型化,降低伺服系统的成本;

(4)为高性能伺服控制策略(自适应控制、最优控制和智能控制等)的实现提供了可能性,将进一步提高交流伺服系统抗负载扰动的自适应能力和智能化程度;

(5)对于用户的误操作,计算机可以自动进行出错处理,从而防止误动作和误操作,明显提高交流伺服系统的可靠性。[43][44][45]

4.2 Kinetix架构

传统的伺服驱动系统采用的是一种孤立的封闭式结构,整个系统对用户而言就相当于一个“黑盒子”,用户对系统的内部状态和控制参数等无法了解,只知道它的外特性。而且设备之间是相互孤立的,无法实现设备之间的协调控制。

如果在“黑盒子”上打通一个消息通道,通过这个消息通道就可以将其内部信息传达出来,从而“黑盒子”也就变成了“白盒子”,原先封闭的系统也就变成了开放的系统。这一消息通道就是一种网络接口,通过这一接口还可将原先单个孤立的设备连成一个网络控制系统,也就是目前人们常说的现场总线控制系统(FCS:Fieldbus Control System)。在这一系统中,每个设备都具备开放性,各个设备之间具有互操作性,通过主站(Master)实现对多个从站(Slave)的协调控制,达到孤立、分散的驱动器无法实现的操作要求。

Kinetix集成运动控制系统是由罗克韦尔自动化公司提供的一种高效的一体化运动控制和顺序控制结构,主要由Logix平台,SERCOS InterfaceTM,驱动器,电机,执行机构五个部分构成,其结构如下图示:[46]

- -37

上海交通大学工学硕士学位论文

图4-1 Kinetix集成运动控制系统Fig4-1 Kinetx Integrated Motion Control System

4.2.1 Logix平台

Logix将运动、顺序、过程和传动控制组合在一个多任务控制平台内,从而降低了系统成本,更易于维护,简化了系统安装。它具有以下特点4.2.1.1 ControlLogix平台

ControlLogix是一种高性能、易于使用的控制器,它使用RSLogix5000软件进行组态、编程和监控系统。监控功能嵌入在RSLogix5000编程软件和

ControlLogix控制器内,因此,运动控制和顺序控制命令可以同时执行,以达到顺序控制和运动控制的完全同步。4.2.1.2 图形化运动曲线编辑器

系统可以通过内置在RSLogix5000内的图形化运动曲线编辑器来设置运动轨迹,从而便于创建复杂的运动曲线;而且在运行期间,可以动态监视系统的执行状况(编辑界面如下图)[47]

- -38

上海交通大学工学硕士学位论文

图4-2 运动曲线编辑器界面Fig4-2 Motion Control Editor Interface

4.2.1.3 编程语言

运动控制指令集可使用三种IEC-61131-3语言:梯形图逻辑语言、结构文本语言和顺序功能图语言。可在同一工程文件内使用多种语言。用户可以选择最适合的语言来实现控制功能。

图4-3 编辑语言种类Fig4-3 Programme Languages

4.2.1.4 故障诊断

- -39

上海交通大学工学硕士学位论文

通过驱动器的接线自诊断功能以及自整定功能节省了调试时间,提高了系统的机械性能。此外,通过远程故障诊断,可以在驱动器和控制器之间传送详细的驱动器状态信息,实现在中央控制器远程管理应用。

4.2.2 SERCOS接口数字式运动控制模块

SERCOS(SErial Real-time Communications System串行实时通讯系统)是一种开放的控制器到数字式驱动器的接口,专门设计用于高速、实时、串行通讯,使用抗干扰的光纤介质。Kinetix系统的驱动器与ControlLogix平台的通讯正是采用这一接口,具有以下特点[48][49]:

z 一个ControlLogix运动控制模块最多可以控制16个运动轴,降低了成

本,简化了集成和调试。

z SERCOS接口运动控制模块使用光纤、数字式链接,替代了传统模拟

链接所要求的高成本独立接线,从而减少了接线数量和接线时间,提高了安装效率。

z 每个控制器可以最多支持32个轴,所以系统可以充分扩展。z 通过SERCOS接口,Kinetix提供高级故障诊断和过程报告。

图4-4 伺服控制器Fig4-4 SERCOS Controller

4.2.3 驱动器

Kinetix6000,Ultra3000,8720MC和1394都可以实现Kinetix一体化运动控制方案的驱动器链接,可以无缝集成在ControlLogix平台内,通过SERCOS光纤链接与控制器通讯。作为Kinetix方案的一部分,这些驱动器提供即插即用配置,具有快速集成和启动、高级故障诊断功能,减少了接线和安装费用。

- -40

上海交通大学工学硕士学位论文

图4-5 驱动器Fig4-5 Drivers

在本次毕业设计中,采用的驱动器是Ultra3000-SE,此数字伺服驱动器是带

SERCOS接口的高性能全数字式伺服驱动器,采用SERCOS光纤环网连接,通过运动模块的连接,无缝地集成在平台内,与ControlLogix平台集成在一起用于集成运动控制。同时通过接口与控制器通讯,提供多轴的协调运动控制,并通过,软件进行组态,为运动控制和机械控制提供一个平台,为单轴或多轴应用提供灵活性。

图4-6运动控制系统基本配置

Fig4-6 Motion Control System Basic Configuration

4.2.4 电机

Kinetix提供智能电机技术,提高了精度与速度稳定性,每转超过2,000,000

- -41

上海交通大学工学硕士学位论文

位置计数。并且有很多种电机能够为应用提供理想性能和经济组合。

图4-7 电机Fig4-7 Motors

4.3 功能实现

Kinetix系统的伺服控制程序是通过Logix5000软件编写的,Logix5000软件自带了强大的伺服控制模块,例如直线差补,圆弧差补等。所以在编程过程中,本系统充分利用了Kinetix系统提供的强大的软件功能,来实现对画笔的精确控制。

在硬件上,我们需要将SERCOS接口的光纤环网用三根光纤搭建起来,然后给控制器和伺服驱动器上电。

在软件上,首先,要根据我们当前使用的控制器和伺服驱动器的型号进行一些参数的组态,然后开始控制程序的编写:

z 电机控制的主程序。接受通过OPC通讯方式传送过来的坐标值,并把

他们进行处理,避免传输过程中产生的错误影响画笔的绘图质量。然后,参照画笔的当前位置和得到的目标位置确定采用直线差补或者圆弧差补的方式驱动画笔运行。[50]

z 错误处理程序。对于在运行过程中伺服电机以及伺服驱动器可能会出

现错误的情况,需要实时的对错误进行处理。

z 归零程序。当一次绘制完成后,系统需要准确地归零,以保证下一次

执行地精确度。

最后,我们可以得到如下图示的运行结果:在界面上绘制如图4-8示的八边形,最终伺服系统绘制出如图4-9示的图形;导入如图4-10示的Logo

- -42

上海交通大学工学硕士学位论文

图形,得到如图4-11示的图形。

图4-8 上位机绘制图形 图4-9 伺服电机绘制图形

Fig 4-8 Picture Drawn in Computer Fig 4-9 Picture Drawn by Motors

图4-10 导入的图片 图4-11 根据导入图片系统绘制的图形Fig 4-10 Picture Loaded to the System Fig 4-11 Picture Drawn based on the Loaded Picture

- -43

上海交通大学工学硕士学位论文

第5章 总结与展望

本次研究,本人做的主要工作主要包括一下几方面:

z 图形轨迹的捕捉。开发了一个基本的人机界面,一方面用户可以在上

面绘制自己想要图形轨迹,另一方面用户也可以调用以前已经画好的图形。系统可以根据不同情况,将用户的图形坐标以及绘制顺序识别出来,并存放到数据缓冲区中。

z OPC通讯程序的开发。对于上位机中得到的图形坐标,我们需要把它

们传送到伺服控制器中,因此,开发了基于RSLinx OPC Server的OPC客户程序,实现了数据在上位机与控制器之间的异步读写。

z 伺服电机控制程序的编写。对于传送到控制器中的坐标值,采用直线

差补或圆弧差补的方法,控制电机运行。

通过半年多的学习和研究,自己对OPC技术、工业现场总线技术以及伺服电机控制技术有了更深的理解,学习到了更多的知识,对整个系统的构建有了自己的想法,并通过毕业设计不断地完善。

现场总线地开放性以及伺服控制地网络化是当前工控领域发展的一个必然趋势,如何更好地在保证有效性和稳定性地同时提高控制地实时性将是最近几年里伺服网络控制的一个热点。这既是工业生产发展的要求也是先进科学技术发展的必然结果。

- -44

上海交通大学工学硕士学位论文

参考文献

1 邵裕森,戴先中主编,过程控制工程,北京:机械工业出版社,20002 [瑞典]JonasBerge著,过程控制现场总线——工程、运行与维护,北京:清华大学出版社,2003

3 甘永梅,李庆丰,刘晓娟,王兆安,编著,现场总线技术极其应用,北京:机械工业出版社,2004

4 周庆海,翁维勤,过程控制系统工程设计,化学工业出版社,1992

5 李淑梅,基于SLC系统锅炉模型的控制和算法通信研究[D],上海:上海交通大学,2005.03

6 OPC Foundation ,OPC Overview(Version1 .0),1998

7 Z.J.Hou, G.W.Wei, A new approach to edge detection[J]. Pattern Recognition,2002,35(6):1559~1570.

8 D.Marr, E.Hildreth.Theoryofedgedetection[J]. Proc.R.Soc.,London,1980,187~217.9 B Shen, I K Sethi. Convolution-based edge detection for image / video in block DCT

domain[J].Journal of Visual Communication and Image Representation, 1996,7(4):411~423

10 徐建华,图像处理与分析,北京:科学出版社,1992.

11 徐莹,小波变换在边缘检测中的应用:[D].上海:上海交通大学,199612 Http://www.opcfoundation.org

13 Mark Janke.OPC-Simple Software Integration for Legacy System. Advanced Process Control

Applications for Industry Workshop, 1999:9- 14.

14 刘恩飞,基于控制网(ControlNet)标准的监控服务系统研究:[D].上海:上海交通大学,2005

15 Dale Rogerson著,杨秀章译. COM技术内幕[M]. 北京:清华大学出版社,1999年3月16 司纪刚,OPC DA 服务器与客户程序开发指南,OPC中国轮坛:http://www.opc-china.com

17 [美]Ash Rofail,邱仲潘译,COM与COM+从入门到精通,电子工业出版社,2000

18 [美]Peter Maurer,施诺 译,组件级编程,清华大学出版社,2003

- -45

上海交通大学工学硕士学位论文

19 潘爱民,COM原理与应用,北京:清华大学出版社,199920 Kraig Brockschmidt, Inside OLE, Second Edition, Microsoft Press, Redmond, 1995

21 Thomas J.Bruke, OPC General Strategic Roadmap,Hanover Fair,2003

22 Chisholm AI, OLE for process control takes first step toward data sharing standards, Chilton's

I&CS( Instrumentation& Control Systems),1996(69):49-530

23 郭红晓,莫德举,OPC技术及其软件的开发,北京化工大学学报,2002年3月第29卷第3期,pp71-73

24 庞彦斌,龚飞, OPC Server的开发要点,仪器仪表学报,22 (3)增刊,200125 OPC Foundation, OPC Data Access Automation Specification Release 2.02, 199926 Getting Result wit RSLinx, Rockwell Automation, June.2000

27 钱晓龙,MicroLogix控制器应用实例,北京:机械工业出版社,2003

姜昌金,基于OPC的分布式监控系统的研究与设计,工业控制计算机,17 (9), 2004,28 牟秋锋,P.47-53

29 侯春生,OPC技术在现场总线控制系统中的应用[D]. 大连:大连铁道学院,2002.1230 马增良,兰斌. OPC数据访问服务器实现机制[J]. 计算机工程与应用,2003.21

31 OPC Foundation, OPC Data Access Custom Interface Specification Release 2.05A,2002

32 Holley, D.W.. Understanding and using OPC maintenance and reliability applications

Computing& Control Engineering Journal, 2004,15(1):28-31.

33 胡佑德,马东升,张莉松,伺服系统原理与设计,北京:北京理工大学出版社,1993.

34 王季秩,曲家骡,执行电动机,北京:机械工业出版社,1999

35 王成元,周美文,郭庆鼎,矢量控制交流伺服驱动电动机,北京:机械工业出版社,199536 周绍英等,交流调速系统,北京:机械工业出版社,1996.37 杨兴瑶,电气传动及应用,北京:化学工业出版社,1994.38 郭庆鼎,王成元,交流伺服系统,北京:机械工业出版社,1994.39 陈国呈,PWM变频调速技术,北京:机械工业出版社,1998.

40 李志民,张遇杰,同步电动机调速系统,北京:机械工业出版社,1996.41 符曦,高磁场永磁式电动机及其驱动系统,北京:机械工业出版社,1997.

- -46

上海交通大学工学硕士学位论文

42 金任,胡拓德,李向春,伺服系统设计指导,北京:北京理工大学出版社,2000.43 徐进,刘德营,张红军. 基于CAN总线的开放式数控系统的研究与开发[J]. 机床与液

压,2004.2

44 谭平. NC嵌入PC型开放式网络数控系统的研究[D]. 合肥:合肥工业大学,2003.1245 白裔峰. 开放式数控系统的研究[D]. 长沙:湖南大学,2003.4

46柏松、蔡凌、顾德英、汪晋宽,基于SERCOS总线的一体化运动控制在滚刀系统中的应用,仪器仪表学报,2005.8

47 Rockwell Automation, ControlLogix System User Manual, 1998

48 ControlLogix Motion Module setup and configuration manual, Rockwell Automation,

Sep.2002

49 Motion Control User’s Guide,Rockwell Automation, Jun.2003

50 Logix Controller Motion Instruction Set, Rockwell Automation, September.2002

- -47

上海交通大学工学硕士学位论文

攻读学位期间发表的学术论文

论文发表:

1.Producer/Consumer通信模式在ControlNet上的实现,《微电脑应用》,已录用

2.基于NetLinx的马达实时控制,《低压电器》,已投稿

获奖情况

1.上海交通大学罗克韦尔自动化奖学金

- -48

上海交通大学工学硕士学位论文

致谢

自从三月份论文开题以来,转眼之间半年有余,其间自己无论在学习研究上还是日常生活里都有了很大的发展。在周围老师同学的帮助下,加上自己的辛勤努力,终于完成了自己的毕业设计。

首先,应该感谢我的导师:陈坚老师。在近两年半的学习生活过程中,通过一些课题研究和项目开发,在学习上,陈老师给我指出了研究的方向和研究方法;在生活上,陈老师教给我了很多做人的道理,学到了很多在其他地方学不到的东西。衷心祝愿陈老师身体健康,事业更上一层楼。

其次,应该感谢实验室的崔平老师。不论在平时的学习、实验室的培训还是写论文找工作,她都热心地给我创造了便利。祝愿崔老师工作顺利,心想事成。

此外,还应该衷心感谢李雪松、童治军两位同门,通过两年的合作,从你们身上我找到了自己很多不足,在你们的帮助和影响下,自己在学业和日常待人处事方面都有了长足的提高。衷心祝愿二位在工作岗位上开拓出自己的一片天空。

衷心谢谢沈慧平、丁晓红、肖金林、杨琨、卢山几位同门,谢谢你们在实验室给我的关照和帮助。

论文的最终定稿,还离不开师妹陈皎皎的功劳,就大恩不言谢了。最后,谢谢我的父母家人,没有你们这么多年的支持,我就不会有今天。儿行千里母担忧,希望我的毕业论文可以稍微慰藉一下你们望子成龙的心灵。祝愿爸爸妈妈永远年轻,笑口常开,青春永驻。下面的内容是参考文献,通过“插入”“引用”“脚注和尾注”,插入尾注到“文档结尾”后,word会自动生成序号。双击序号能自动定位。移动引用位置会自动重新编号。还可以插入“交叉引用”,实现对一篇文献的多次引用。

- -49

基于OPC技术的伺服控制

作者:

学位授予单位:

姜尚坤

上海交通大学

本文链接:http://d.g.wanfangdata.com.cn/Thesis_D018284.aspx

因篇幅问题不能全部显示,请点此查看更多更全内容