基于PCI总线的数字随动系统的开发

更新时间:2024-05-08 12:10:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

西安航空技术高等专科学校

毕业(实践)报告任务书

设计题目:

在天津三星视界移动有限公司的实习报告 基于PCI总线的数字随动系统的开发

系 别: 电气工程系 专 业: 应用电子技术

班 级: 电子1241 姓 名: 王松 学 号: 0930302124121

指导主管签字:

单位公章:天津三星视界移动有限公司

2012 年 05月 05 日

摘 要

随着微电子技术与计算机技术的发展,计算机控制系统在各个领域中得到越来越广泛的应用。本文针对微机控制的随动系统进行了理论和实践上的研究。随动系统的根本任务就是实现执行机构对给定量的准确跟踪,给定量随机变化时系统能使被控量尽可能准确地跟随并复现给定量。为了提高控制精度,提高设备的通用性和实用性,本设计采用了现代微机主流总线——PCI总线,对基于PCI总线的PC机扩展接口板的设计进行了研究和阐述,用C语言体现了控制过程,为提高系统的可操作性用VB语言设计了用户操作界面。

关键词: 微机控制 数字随动 PCI总线

Abstract

With the micro-electronics technology and computer technology development, The computer control system used in various fields has been more and more widely. In this paper, we research Servo system with computer-controlled in theory and practice. the fundamental task of Servo system is implementing agencies to achieve an accurate quantitative tracking, random changes to the quantitative system would enable the accused to follow as accurately as possible and repetition to the quantitative. In order to improve the control accuracy, improve the equipment and the general practicality, the design adopt modern computer mainstream bus - PCI bus. We researched and designed expanding interface card based on the PCI-bus and described by C language reflect the control process.In order to improve system operability we also designed user interface with VB language.

Key Words: Microcomputer control Digital Follow-up System PCI-BUS

目 录

第一章 绪 论................................................................ 1 第二章 PCI数据接口电路的实现基础 .............................................. 2

PCI总线协议............................................................ 2

2.1.1 PCI总线的特点 ................................................... 2 2.1.2 PCI总线的系统结构 ............................................... 4 2.1.3 PCI总线信号定义 .................................................. 5 2.1.4 PCI总线命令 ...................................................... 8

第三章 PCI总线接口电路板的设计 ................................................ 9

3.1 数据采集与控制系统的基本组成 ........................................... 9 3.2 PCI系统总线接口电路板设计............................................. 11

3.2.1数字随动系统模拟调节电路介绍 ..................................... 11 ......................................... 13 3.2.2接口板功能要求及总体构思

3.2.3总线接口电路板整体分析 ........................................... 14

第四章 数字随动系统控制软件支持............................................... 16

系统控制软件的C语言实现 .............................................. 16

4.1.1 C语言简介 ....................................................... 16 4.1.2 PCI接口技术 ..................................................... 16 4.1.3 随动系统C程序功能要求及实现..................................... 20

第五章 数字随动系统软硬件综合调试............................................. 23

5.1 随动系统软硬件接口 ................................................ 23 5.2 随动系统整体调试 .................................................. 23 结束语 ....................................................................... 24 参考文献...................................................................... 25 致 谢...................................................................... 26 附录

....................................................................... 27

西安航空技术高等专科学校2012届毕业设计说明书

第一章 绪 论

由于微机控制技术的飞速发展,微机控制系统的快速计算,灵活多样的逻辑判断和高效的信息加工能力使自动控制进入更高一级的领域。提高了生产过程的自动化程度,减少了人工干预,并不断地完善和满足工农业生产和国防科技日益增长的需求,其控制对象也已从单一的工厂流程扩展到企业生产过程的管理和控制。随着微机和单片机的推广使用,实现信息自动化与过程控制相结合的分级分布式计算机控制,使计算机控制技术水平的发展到了一个崭新的阶段。

本课题即是现代微机控制技术的一个基本应用。随动系统是工业控制领域应用较为广范的一类系统,其根本任务就是实现执行机构对位置指令(给定量)的准确跟踪。当给定量随机变化时,系统能使被控制量准确无误的跟随并复现给定量。这也是本系统所要解决的首要问题。由于位置随动系统的基本特征体现在位置环上,体现在位置的给定信号和位置反馈信号及两个信号的综合比较方面。因此若生产机械要求进一步提高控制精度,则必须采用数字式检测装置来组成数字随动系统。在系统中,一般可采用模拟的电流环和速度环以保证系统的快速相应,但位置环必须是数字式的。本系统就属于这种情况。本系统采用光电编码盘作为

位置检测环节,原理图如下:

在这种系统中给定往往是二进制数字码信号,检测环节借助转换电路得到二进制信号,二者构成“角度——数码”转换器或“线位移——数码”转换器。它的输出信号与数码信号同时送入计算机进行比较并确定误差,按一定控制规律运算后(如PD,PID算法)构成数字形式的校正信号,再经数据装换成电压信号,作为转换器给定信号。采用计算机控制时系统的控制规律可以很方便的通过软件改变,大大增强了控制的灵活性。

1

西安航空技术高等专科学校2012届毕业设计说明书

第二章 PCI数据接口电路的实现基础

2. 1 PCI总线协议

PCI总线的概念是由Intel公司联合IBM, Compaq, AST, HP, DEC等100多家公司提出的,1999年2月公布。制定PCI总线的目标是建立一个工业标准的、低成本的、允许灵活配置的、高性能局部总线结构。它既为今天的系统建立一个新的性能/价格比,又能适应将来CPU的特性,能在多种平台和结构中应用。

PCI总线标准是当今PC领域中最流行的总线标准。随着CPU的快速发展,基于图形的操作系统(如Windows)迅速普及、多媒体、视频处理和网络传输的大量应用,使ISA总线逐渐成为系统数据传输瓶颈。PCI总线可以很好地满足上述需要。PCI是一种局部总线(Local Bus),由于独立于CPU的结构,使总线形成了一种独特的中间缓冲器的设计,从而与CPU及时钟频率无关。因此用户可以将一些高速外设,如网络适配卡、图形卡、硬盘控制器等从ISA总线上卸下,而通过局部总线直接挂接到PCI总线上,使之与高速的CPU总线相匹配,从而打破了数据I/0的瓶颈,使高性能CPU的功能得以充分发挥。

2.1.1 PCI总线的特点

PCI是先进的高性能局部总线,可同时支持多组外围设备。PCI局部总线不受制于处理器,为中央处理器及高速外围设备提供一座桥梁,更可作为总线之间的交通指挥员。提高数据吞吐量。PCI采用高度综合化的局部总线结构。其优化的设计可充分利用今日最先进的微处理器及个人电脑科技。它可确保电脑部件、附加卡及系统之间的运作可靠,并能完全兼容现有的ISA/EISA/Micro channel扩充总线。总之,PCI局部总线具有如下特点: 1. 高性能

PCI是一套整体的系统解决方案,较其它只为加速图形或视频操作的局部总线优越。它能提高网络界面卡、硬盘的性能;可以出色地配合全活动影像、图形及各种高速外围设备的要求。PCI局部总线以33MHZ的时钟频率操作,采用32位数据总线,可支持多组外围部件及附加卡。数据传送速率可高达132MB/s,远远超过标准ISA总线5M/s的速率。即使在32位的情况下,也能支持奔腾级电脑的图形数据传送速率。 2. 线性突发传输

PCI能支持一种称为线性突发的数据传输模式,可确保总线不断满载数据。

外围设备一般会出内存某个地址顺序接收数据,这种线性或顺序的寻址方式,意味着可以由某一个地址起读写大量数据,然后每次只需将地址自动加1,便可接收数据流内下一个字节的数据。线性交发传输能够更有效地运用总线的带宽去传送数据,以减少无谓的地址操作。

2

西安航空技术高等专科学校2012届毕业设计说明书

另外,PCI最独持之处是可以支持突发读取及突发写入,这对使用高性能图形加速器尤为重要。 3. 极小的存取延误

支持PCI的设备,存取延误很小,能够大幅度减少外围设备取得总线控制权所需的时间。例如,连接局部网络的以太网控制器,其缓冲区随时需要由网络接收大型档案,由于要等待使用总线的批准.从而使以太网界面卡注往无法及时在缓冲区溢出之前迅速将数据送给中央处理器,网络界面卡被迫将文件内容存在额外的内存区。对于PCI兼容的外围设备,由于它能提供更快速的存取,因此以太网卡可及时将数据传至中央处理器,减少所需的额外内存.从而降低附加卡的整体成本。

4. 采用总线主控和同步操作

PCI的总线主控相同步操作功能有利于PCI性能的改善。总线主控是大多数总线部具有的功能,目的是让任何一个具有处理能力的外围设备暂时接管总线,以加速执行高吞吐量、高优先级的任务。PCI独特的同步操作功能可保证微处理器能够与这些总线主控同时操作,不必等待后者的完成。 5. 不受处理器限制

PCI独立于处理器的结构,形成一种独持的中间缓冲器设计方式,将中央处理器子系统与外围设备分开。一般来说,在中央处理总线上增加更多的设备或部件只会降低性能和可靠程度。而有了缓冲器的设计方式,用户可随意增添外围设备,以扩展电脑系统而不必担心在不同时钟频串下会导致性能的下降。 独立于处理器的总线设计还可保证处理器技术的变化不会使任何个别系统的设计变得过时,使消费者大为受惠。 6. 适合于各种机型

PCI局部总线不只是为标准的桌面(台式)电脑提供合理的局部总线设计,同时也适用于便携式电脑和服务器。它可为便携式电脑及笔记本电脑提供台式电脑的图形性能,又可支持3.3v的电源环境,延长电池寿命,为电脑的小型化创造了良好的实现条件。PCI可缩小零件的尺寸,减少零件的数目,从而节省了宝贵的线路板空间,可使系统设计者在其产品中加入更多功能。

在服务器环境下,PCI支持分级式外围设备的特性,可使一个PCI界面支持一组级联的PCI局部总线;也可以使设置为多组PCI总线的服务器增添额外的扩展插槽,提供更多的I/O接口,并将高带宽与低带宽的数据分隔开来。 7. 兼容性强

由于PCI的设计是要辅助现有的扩展总线标准,因此它与ISA、EISA及MCA总线完全兼容。虽然现有电脑系统的插倍数目有限,但PCI局部总线可提供“共用插槽”,以便接插一个PCI、EISA及MCA插头。这种兼容能力能保障用户的投

3

西安航空技术高等专科学校2012届毕业设计说明书

资,让用户在继续使用沿用的附加卡之余,又能提供额外的插槽,方便用户选用新的外围设备。 8. 预留了发展空间

PCI总线在开发时预留了充足的发展空间,这是它的一项重要特性。例如,它支持64位地址/数据多路复用。这是考虑到新一代的高性能外围设备最终将需要64位宽的数据通道。PCI的64位延伸设计,可将系统的数据传输速率提高到264MB/s,同时,由于PCI描槽能同时接插32位和64位插卡,所以,32位与64位外围设备之间的通信是在用户不知不觉间进行的,从而做到了真正的瞻前顾后兼容。PCI还提供了自动配置功能,从而保证了用户在安装外围卡时,不需要手工调整跨接线。 9. 低成本、高效益

PCI的芯片将大量系统功能高度集成,节省了逻辑电路,耗用较小的线路板空间.成本降低。PCI部件采用地址/数据线复用,从而使PCI部件用以连接其它部件的引脚数减至50以下。 10. 是立足现在放眼未来的标准

PCI局部总线既迎合了当今的技术要求,又能满足未来的需要,是计算机界公认的最具高赡远瞩的局部总线标准。PCI的高性能、高效率及与现有标准的兼容性和充裕的发展潜力,是其它总线不可及的。它可作为当今及未来的设计指引。

2.1.2 PCI总线的系统结构

图2. 1 PCI系统结构图

Figure 2.1 PCI system architecture diagram

4

西安航空技术高等专科学校2012届毕业设计说明书

在一个PCI系统中可以做到高速外部设备和低速外部设备共存、PCI总线与ISA/EISA总线并存,如图2.1中所示。

在图2.2.1中可以看出,处理器/Cache/存储器子系统经过一个PCI桥连接到PCI总线上。此桥提供了一个低延迟的访问通路,从而使处理器能够直接访问通过它映射于存储器空间或I/0空间的PCI设备,也提供了能使PCI主设备直接访问主存的高速通路。该桥也能提供数据缓冲功能,以使CPU与PCI总线上的设备并行工作而不必相互等待。另外,桥可使PCI总线的操作与CPU总线分开,以免相互影响。

扩展总线桥(标准总线接口)的设置是为了能在PCI总线上接出一条标准I/0扩展总线,如ISA, EISA或MCA总线,从而可继续使用现有的I/0设备,以增加PCI总线的兼容性和选择范围。一般地,典型的PCI局部总线系统中,最多支持三个插槽(连接器),但这样的扩充能力并不一定是必要的。PCI接插卡连接器属于微通道 (MC)类型的连接器。同样的PCI扩充板连接器也可以用在ISA, EISA及MCA总线的系统中。

2.1.3 PCI总线信号定义

在一个PCI应用系统中,如果某个设备取得了总线控制权,就称其为“主设备”, 而被主设备选中以进行通信的设备称为“从设备”或“目标节点”。对于相应的接口信号线,通常分为必备的和可选的两大类。如果作为目标的设备,至少需要47条;若作为主设备则需要49条。利用这些信号线便可处理数据、地址、实现接口控制、仲裁及系统功能,如图2.2所示。下面,对上述的这些必备信号作一下简要的介绍: 1. 系统信号 (1) CLK总线时钟信号

该时钟信号用于所有PCI设备的同步,系统中所有的信号都以他为基准,该信号的频率称为总线的工作频率。PCI的最高操作频率是33MHz,最低频率是直流 (OHz)。

(2) RST#系统复位信号

该信号用于复位总线上的接口逻辑或设置PCI特性寄存器以及有关信号到指定的状态,该信号低电平有效。在复位信号的作用下,PCI总线的所有输出信号处于高阻态,SERR#被悬空。 2. 地址和数据信号

(1) AD[31:0]地址数据多路复用信号

这组信号是双向三态的,由地址和数据信号公用。一个PCI总线传输事务包括一个地址传送节拍和多个数据传送节拍。在FRAME#信号有效时,该组信号上传输的是32位的物理地址。对于工//0端口,这是一个字节地址。对于配置空

5

西安航空技术高等专科学校2012届毕业设计说明书

间和内存空间,这是一个双字地址。在数据传送节拍,该组信号线上传送的是数据信号,AD [7:0]包含最低字节数据,而AD[31:24〕包含最高字节数据。 (2) C/BE#[3:0]总线命令和字节允许信号

双向三态信号,在地址传送节拍,C/BE# [3:0]田传送PCI总线命令(I/0,内存读等);在数据传送节拍,C/BE#[3:0]传送的是字节允许信号,字节允许信号确定32位数据在4个字节中的哪些字节被传送,该信号中的4位分别对应于32位中的4个字节。

(3) PAR (Parity)奇偶校验信号

双向三态,该信号对AD[31:0]和C/BE#[3:0]信号作奇偶校验,以保证数据的有效性。当AD[31:0]和C/BE#[3:0〕中“1”的个数为偶数时,PAR=1(高电平)。

3. 接口控制信号 (1) FRAME#帧周期信号

双向三态,低电平有效。由当前主控设备驱动,表示一个总线周期的开始和结束。当该信号有效,表示开始总线传输操作,AD[31:0]和C/BE#[3:0]上传送的是有效地址和命令。在整个总线周期内,该信号一直有效,当该信号变为高电平时,表示进入最后一个数据节拍,传送结束。 (2)IRDY#主设备准备好信号

6

图2.2 PCI总线连接器定义示意图

Figure 2.2 PCI bus connector definition diagram

西安航空技术高等专科学校2012届毕业设计说明书

双向三态,低电平有效,该信号由系统主控设备驱动。它与TRDY#同时有效时可完成数据的传输。在写周期工RDY#表示AD [31: 0}上数据有效,在读周期改信号表示主控设备己经准备好接受数据。 (3) TRDY#从设备准备好信号

双向三态,低电平有效,从设备驱动。当该信号有效,表示从设备准备好传送数据。在写周期表示从设备准备好接受数据;在读周期,表示AD [31: 0]上的数据有效。

(4) STOP#从设备要求主设备停止当前数据传送

双向三态信号,低电平有效,主控设备驱动,用于请求总线主控设备停止当前数据传送。 (5) LOCK#锁定信号

双向三态,低电平有效,主控设备驱动,用于保证主设备对存储器的锁定操作。

(6) IDSEL初始化设备选择信号

输入信号,高电平有效,在配置读写操作阶段,用于芯片选择。 (7) DEVSEL#设备选择信号

双向三态,低电平有效,从设备驱动,当该信号有效时(输出),表示所译码的地址是在设备的地址范围内;当作为输入信号时,表示总线上有某个设备是否被选中。

4. 仲裁信号(这两个信号只被总线主控设备使用) (1) REQ#总线请求信号

双向三态,低电平有效,由希望成为总线主控设备驱动。他是一个点对点信号,并且每一个主控设备都有自己的REQ#。 (2) GNT#总线请求允许信号

双向三态,低电平有效。当该信号有效时表示总线请求被响应。这也是一个点对点信号,每个总线主控设备都有自己的GNT#。 5. 错误报告信号

(1) PERK#数据奇偶校验错信号

双向三态,低电平有效。该信号有效时,表示总线数据错,一个主控设备在完成数据传送节拍后,根据结果驱动PERR#信号。当发现奇偶校验错时,主设备重新接受数据。 (2) SERR#系统错误信号

漏极开路信号,低电平有效。该信号用于报告地址奇偶错、数据奇偶错、命令错等。 6. 中断请求信号

7

西安航空技术高等专科学校2012届毕业设计说明书

(1) INTx#中断信号(x=A,B,C,D)

漏极开路信号,电平触发信号,低电平有效。PCI为每一个单功能设备定义一个中断线。对于多功能设备最多可有4条中断线。对于单功能设备,只能使用INTA#,其余的三条无意义。

2.1.4 PCI总线命令

PCI

总线命令是处理器发送的指向目标的表明作业类型的命令。PCI上的

基本总线传输机制是碎发成组传输。一个分组由一个地址相和一个或多个数据相组成。基本的PCI传输出三个信号控制:

FRAME#:该信号由主设备驱动,表明一个事务的开始和结束。 IRDY#:该信号由主设备驱动,表明它己做好传输数据的准备。 TRDY#:该信号由从设备驱动,表明它己做好传输数据的准备。

PCI总线上支持三个独立的物理空间:存储器空间、I/0空间和配置地址空间。前二者由系统统一编址,、一个PCI设备可以占有系统存储器空间或I/0空间的一部分,PCI设备负责其自己的地址译码,不需要从外部输入设备选择信号。每一个PCI设备内部都有一个配置空间,用于支持PCI设备的硬件配置。对配置空间寻址时,要给出设备片选信号,以表明要寻址的设备。

PCI主设备在一个事务的地址相期间,要在C/BE [3::0]总线上给出一个命令编码,向目标设备表明本次事务所要执行的事务类型。PCI总线上可以实现的命令及其编码。

各个命令简述如下:

中断应答命令,是系统中断控制器读绝对地址。

特殊周期命令,是一种在PCI上的简单的消息广播机制,他的设计是用来当需要边带通信而对实际信号的交换。

I/0读命令,是从I/0端口地址中读取数据。 I/0写命令,是向工/0端口地址中写入数据。 存储器读命令,是向内存地址中读取数据。

存储器写命令,是向作业单元映像中的内存地址空间中写入数据。 配置读命令,是用来读每一个作业单元的配置空间。

配置写命令,是用来向每一个作业单元的配置空间中写配置数据的。 双地址周期命令,是用来传输64位地址到某一设备,该设备必须支持64位地址,如果是32位地址的从设备,则该命令是无效的。

8

西安航空技术高等专科学校2012届毕业设计说明书

第三章 PCI总线接口电路板的设计

物理世界的特征一般都是模拟量,如果由计算机对模拟物理量进行分析和控制,就需要在前项通道中有一个接口电路将模拟物理量转变成计算机可以接受的数字序列,在后相通道中有一个接口电路计算机产生的数字序列变成物理装置可以接受的模拟量,这两种接口电路称为数据采集与控制系统。本系统所设计的接口电路板就是一个例子。

在微机控制系统中,由数据采集系统对控制量进行采集,微处理器将检测采集数据作预定处理,再将处理后的结果交由数据采集与控制系统变换成模拟量送入被控装置。数据采集与控制系统完成微机控制系统中的主要数据转换工作。

在几乎所有涉及到数字信息处理的领域中,数据采集与控制系统都是其核心部分之一。不管是中低速的语音识别和处理及震动检测系统,还是在高速的雷达信息处理系统及图像处理系统,或是数百通道的地质勘探仪器均是由现有数据采集系统得到数字序列,然后再由高速处理系统进行实时处理或是有微机系统进行普通的后处理。

在个人仪器,自动测试系统和许多其它领域中,数据采集与控制系统均得到广泛的应用,只要用到计算机来处理模拟物理量的问题,就离不开数据采集与控制系统。由于数字处理在越来越多的领域替代了模拟处理,因此数据采集与控制系统的应用也就越来越广泛了。

由于在本系统设计中总线接口板起着重要作用,我们在本章中将结合寄宿于PC的数据采集与控制系统研究总线接口电路板的设计。

3.1 数据采集与控制系统的基本组成

一般数据采集与控制系统的组成框图如图3.1,这里不包括传感器部分,由于各种物理信号的传感器差异太大,传感器部分一般不包括在数据采集系统中。

Vi1 Vi2 Vi3 PC 多 路 模 拟 可编成放大器 采样 保持 A/D 转换器 数据 缓冲 与接 口 总线 Vin 开 关 定时与控制逻辑 9

模拟 放大 D/A 转换器 西安航空技术高等专科学校2012届毕业设计说明书

图3.1 数据采集系统框图

Figure 3.1 Block diagram of Data Acquisition

1. 多路模拟开关(MUX) System

大多数的数据采集系统支持多个模拟输入通道,这些通道分时使用A/D变换器在一个特定时间间隔里只允许一个模拟通道通过,完成这一功能的部件称为多路模拟开关(MUX)。

一般的MUX器件有2的N次方个模拟输入端,N个通道选择端,由对N个通道选择信号的译码选中一个开关闭合,使其对应的模拟输入端与输出端接通,让该路模拟信号通过。有规律的周期性改变N个选通信号,可以按固定的序列周期性闭合各个开关,构成一个周期分组的时分复用输出信号,由后面A/D转换器时分复用对各通道模拟信号进行周期性转换。 2. 可编程放大器(PGA)

由于采集系统大多数支持多路模拟通道,各通道之间电压范围可能有较大差异,因此最好是对各通道采用不同的放大倍数,即放大器的放大倍数是可以实施控制改变的,可由M位数字译码产生2的M次方种控制组态,控制放大器选择2的M次方种放大倍数的一种,提供这些可编程的放大器可以大大拓宽一种数据采集系统的适应面。 3. 采样-保持单元

A/D转换器完成一次转换需要一定的时间,在这段时间里希望A/D转换器的输入端电压保持不变,这可以由采样-保持单元完成,采样-保持单元的加入,大大提高了一个数据采集系统的有效的采集频率。 4. A/D转换器

A/D转换器一个数据采集系统的前向通道(模拟至数字转换通道)的核心,由A/D转换器决定前向通道的主要参数。A/D转换器的位数决定了前向通道的精度,转换器完成一次转换需要的时间tad和采样-保持的跟踪时间th之和决定了系统的采集频率fs,下列成立:

fs=1/(tad+th) 5. D/A转换器

D/A转换器是后向通道(数字至模拟转化通道)的核心,决定了后向通道的速度与精度。 6. 模拟放大与平滑

这部分电路提供了三方面的功能:其一是对D/A转换器的输出模拟值进行放大,以满足目标的要求;其二是进行阻抗匹配,由于D/A转换器的输出阻抗较大而且动态改变,必须有一个高输入电阻低输出电阻的运放电路提供输出缓冲才能与一般的目标负载相接;其三是提供低通滤波,将D/A输出的阶梯形波形变成平

10

西安航空技术高等专科学校2012届毕业设计说明书

滑波形,这在利用微机内数字序列产生任意函数波形的应用场合是必须的。 7. 数据缓冲与接口电路

A/D变换完成后的结果通过数据锁存或缓冲以后,由接口电路控制将数据传入内存,或者在内存中已产生的数字序列,通过接口电路送入数字换成或锁存单元,再传送给D/A转换器进行模拟输出。 8. 定时与控制逻辑

数据采集与控制系统各部分的定时关系是比较严格的,如果定时不合适就会严重影响精度。例如MUX两个开关切换时间是800ns,在MUX开关切换器件PGA同时切换放大倍数,大约是800ns,从PGA的一个新放大倍数到产生稳定的输出大约是400ns,那么从PGA放大倍数开始切换到采样-保持器电路开始跟踪至少1.2μs。若采用保持跟踪时间是6μs后才开始。对于所描述的情况必须遵守如下时序:(1)开始MUX开关切换。(2)开始PGA放大倍数切换。(3)开始采样—保持。(4)开始A/D转换。(5)A/D转换完成。定时电路就是要按照各电路电源的工作次序产生各种时序信号,而控制单元是在时序信号控制下产生各种控制信号。

3.2 PCI系统总线接口电路板设计

3.2.1数字随动系统模拟调节电路介绍

数字随动系统是一个由计算机控制的位置跟踪系统。微型计算机系统是数字控制的主体,可由单片机系统或PC机机接口电路组成,实现A/D、D/A及控制算法;光电编码器作为角度测量元件,用来实现转角到数字量的转换;执行电机则用来实现对位置的跟踪。该模拟调节电路由以下部分组成:电源、模拟调节器、PWM、功率放大器、及机械部分。整个模拟调节电路与计算机接口板用以标准D型25P插座相连。电路如图3.1。

11

西安航空技术高等专科学校2012届毕业设计说明书

图3.1 1.电源

本系统提供的电源如下: 输入:AC220V?10%

输出:+5V 1A?12V 0.1A -24V 2A 模拟给定量可由RP1在?5V之间进行调解。 2.模拟调节器

模拟调节器包括速度调节器ASR和电流调节器ACR,ASR和ACR有通用型运放LM358组成。在图2-3中我们可以看出ASR可接为P/PI/PD/PID调节,而在实验室中我们将其接成PID形式,其参数可根据需要用RP5进行调节;ACR我们则将其固定为PI调节器。 3.PWM功率放大器

PWM功率放大器由双运放组成三角波振荡器,与压力比较器及外围电路共

12

西安航空技术高等专科学校2012届毕业设计说明书

同构成电压控制PWM电路。当输入端电压由-5V到+5V变化时,输出端的输出脉冲宽度由100%向0变换,调节RP3可使输入端电压为0时输出脉冲宽度为50%,有关PWM电路的工作原理及详细叙述可见参考文献[2]。 4.机械部分

机械部分包括力矩电动机,测速发电机及光电编码器。执行电机采用的是SYL-1.5型的直流力矩电动机,空载启动电流0.18A,静摩擦力矩0.0294N/m。测速发电机型号OCDY-1,灵敏度1伏/弧度/秒。光电编码器采用响应频率为5KHz的AL-05-512绝对式光电编码器测量误差?20`。

上面的四部分相连,当从计算机键盘输入的给定位置信号由系统控制软件及总线接口板转换为模拟控制输出电压送给模拟调节电路,经过ASR、ACR及PWM功率放大器,驱动电机旋转,通过减速箱带动光电编码盘和刻度盘转动。由于光电编码盘输出的数字量反馈信号不断增大,当刻度盘转过一定角度,到达数字反馈量与给定信号相一致的位置时,误差为零,数字量输出也等于零,点击边听支援转,完成了位置跟踪过有关D型25P、15P插座的各引脚功能见表3.2

功能 +5V D0 2 9 AGND 8,20 D1 14 2 +12V 21 D2 15 3 D3 3 10 -12V 22 D4 16 4 Un 23 D5 4 11 D6 17 5 Ui 11 D7 5 12 UnD8 18 6 DGND 7,19 13 Ui* 12 CP 7 Uct* 25 DGND 14,15 D型25P 1 D型15P 1 功能 D型25P Un* 24

表3.2 D型25P、15P插座的各引脚功能对照表

Table 3.2 D-type 25P, 15P socket of the pin function table

本系统的性能指标为:系统跟踪位置输入,系统的过渡过程时间ts?1秒;

?超调量?%?5%;稳态误差满足ess?0.7。

3.2.2接口板功能要求及总体构思

在本系统中,通过我们设计的总线接口电路板实现数字计算机对外部系统主电路的控制接口板的功能主要有以下两点: 1.采集执行电机当前位置量入计算机

外部模拟调节电路工作时,为求达到对位置的准确跟踪,我们必须采集到执行电机的当前位置量与给定位置量相比较,利用控制规律求出控制输出电压,实现对外部电路的控制。前面介绍过,本系统模拟调节电路采用绝对式光电编码器来采集执行电机的当前位置量,输出9位数字量。本系统接口板是基于PCI总线设计的,PCI总线包含8/16/32位数据线,为提高设备板卡的通用性,我们采用8

13

西安航空技术高等专科学校2012届毕业设计说明书

位数据量来设计板卡用两片数据锁存器将9位反馈量分开,分别送入计算机内存后再重新组成9位当前位置反馈量。 2.控制电压输出

要实现数字控制的位置跟踪系统则必须由数字计算机输入给定位置,与采集回的9位当前位置反馈量相比求出误差值,由PI/PD/PID算法计算出控制输出电压。控制输出电压必须由数字量转化为模拟量才可以对外部模拟调节电路产生控制作用。所以在电路板中又加入一片8位数模转化器对控制输出电压进行数模转换,将转换产生的模拟量在输出至外部模拟调节电路。

基于上述两个基本功能要求,考虑了本系统的实际情况,对本系统所用的总线接口电路板的设计做如下构思:总线接口板采集数据时所用的两片数据锁存器采用74LS373芯片:一片74LS373取9位反馈量的高7位,另一路取其低2位。采集数据通过一片总线收发器/驱动器将数据输入数字计算机内存地址,用软件重新组合成9位当前位置反馈量,此总线收发/驱动作用由一片74LS245担当;控制输出电压的数模转换由8位数模转换器AD7537完成。用双运放集成芯片LF347使AD7537的模拟量以双极性电压形式输出。为简化电路决定采用通用阵列逻辑GAL,用它来产生所用各功能芯片的控制输入信号及整体接口的地址译码信号。

3.2.3 总线接口电路板整体分析

数字随动系统PCI总线扩展接口电路板通体结构图参见附录1。

这节主要介绍本系统总线接口电路在控制芯片GAL20V8的协调下个芯片的工作状态。

前面介绍都已提到本系统在开始工作时先通过74LS373采集执行电机的当前位置,两片774LS373均处于直通状态,仅当某一片的输出允许信号OE和74LS245的使能信两片74LS373均处于直通状态,仅当某一片的输出允许信号OE和74LS245的使能信号G同时被置于0时,原先在74LS373中等待的数据便直接进入总线,被存入内存地址。这两个芯片的选通适合控制程序终端口吐指令中给出的端口地址有关的。当地址给定后,GAL芯片按照内部编定的译码程序对此地址和端口读信号进行译码,输出控制信号。当系统发送据时,根据控制软件发出的端口写地址,GAL电路译码输出控制信号,同时选通AD7537和74LS245,完成数据发送。

根据以上的功能要求设计接口电路控制部分,如果用分立元件来实现的华裔端口写操作时AD7537的WR信号为例电路图如图3.15。

14

西安航空技术高等专科学校2012届毕业设计说明书

在图中,各控制信号的逻辑表达式分析如下:

当系统读数据时,74LS245的数据收发方向控制信号DIR应为低电平,即由B向A传送,一片74LS373的输出允许信号OE和74LS245的使能信号G同时有效,那么可以由GAL20V8芯片同时输出两个完全一样的信号来实现。因此有:

OE?A9A8A7A6A5A4A3A2A1A0 G?A9A8A7A6A5A4A3A2A1A0 DIR信号由IOR直接给出。

当系统写数据时,74LS245的数据收发方向控制信号DIR应为高电平,即由A向B传送,DAC的协允许信号WR和74LS245的使能信号G同时有效,那么可以由GAL20V8芯片同时输出两个完全一样的信号来实现。因此有:

AD7537和74LS245同时选同时,GAL逻辑表达式为:

WR?A9A8A7A6A5A4A3A2A1A0*IOW G?A9A8A7A6A5A4A3A2A1A0

G?A9A8A7A6A5A4A3A2A1A0 DIR信号由IOR直接给出。 这里为适应GAL电路的编程,用IOR和IOW代替IOR和IOW形式。 按以上逻辑对GAL芯片进行编程后,GAL20V8即可实现预先设计功能。

15

西安航空技术高等专科学校2012届毕业设计说明书

第四章 数字随动系统控制软件支持

4.1系统控制软件的C语言实现

4.1.1 C语言简介

1. C语言的一些特点

C语言是一种中级程序设计语言。所谓中级设计语言是指它具备汇编语言和高级语言的特征。一方面,C语言允许对字节、字位和存储器地址直接操作,微机上的C语言大都支持对端口的操作以及中断服务程序的编写,这些都是汇编语言的特征;另一方面,C语言有支持各种数据类型,具有高级语言特征。从C语言作为中级语言的特点来看,它既具有对硬件系统的管理,又提供各种复杂灵活的软件功能。 2. C语言的构造

一个C语言程序由两种成分构成:一种是C语言的语句,这部分由C语言的标准所规定:一种是C语言的库函数,库函数是同C语言编译器一起提供的常用功能函数,例如输入输出、文件操作、字符串处理、内存管理等功能都由库函数来完成。C语言标准中定义了一组库函数,一般的C语言编译器又提供了一些附加的库函数,例如图形处理,硬件管理等。用户还可以自己扩充库函数,所以C语言的库函数这一部分有很强的扩充性,是C语言的特点之一。

4.1.2 PCI接口技术

当使用PC机对过程进行采集与数据处理、实施控制或进行管理时,均要将数据输入计算机中,又将处理结果作为控制量输出或作为图形、数据打印显示。这些为计算机输入数据或接收计算机输出数据的设备称为I/O设备。由于这些设备向计算机输入数据或接收计算机输出数据的速度和计算机不匹配,甚至两者的数据格式可能不一样,电路工作时许也可能不一样,因此必须在计算机与I/O设备之间有一个媒介,对上述的矛盾进行协调,这就要出现了I/O接口电路将外界电路与总线相连。 1. I/O接口配置

计算机的接口卡都需要使用I/O空间资源、存储器空间资源以及中断资源。与ISA相比,PCI接口卡可以实现资源的自动配置,即在每次系统启动时,由操作系统根抓每个接口卡上的资源需求情况,自动分配所需的资源,启动完毕后,接口卡的驱动程序可以读取分配结果,从而获得所需的资源。接口卡上无需任何硬件跳线即可实现“即插即用”技术,这是因为PCI系统除了支持内存空间, I/O空间外,还多了一个配置空间。配置空间是PCI所特有的一个空间,所有的PCI设备必须提供配置空间。而当系统加电时,BIOS软件会检测PCI总线,确定PCI

16

西安航空技术高等专科学校2012届毕业设计说明书

总线上有哪此设备,以及它们的配置信息,并根据这此信息进行系统资源分配。只有这样,各个PCI设备才可能不至于产生地址以及中断等的冲突。因此,各个PCI设备必须有实现PCI协议规定的配置寄存器。对于9052,它的配置信息是通过串行EEPROM来储存并在芯片复位时进行加载的。串行EEPROM一般要求采用NM93CS46或与之兼容的存储器,必须支持连续读写。前边介绍过EEPROM存储了9052重要的配置信息,如设备号DID、制造商VID、子设备号SDID、子制造商SVID、中断号、设备类型号、局部空间基地址、局部空间大小及映射类型、局部空间描述、片选响应、中断控制和状态以及局部响应控制CNTRL等信息。EEPROM的内容自接关系到9052能否正确的工作。特别注意的是,如果EEP-ROM内容编写不正确的话,即使硬件设计没有一点错误,9052也无法正确工作。

所以我们对于ISA接口模式下EEPROM中的值进行配置配置项目如表4.1 设备号DID为0x9050,制造商VID为Ox10B5,子设备号SDID为0x0000,子制造商SVID为Ox0000,设备类型号为0x06800000。其中DID和VID我们一般使用默认值,这是PLX公司9052芯片的标志,而SDID和SVID可以自己设置,也可以向PLX免费申请一个全球唯一的串号。操作系统一般都是通过DID、VID、S、DID、SVID以及设备类型号来识别各个厂家不同的设备(实际上是驱动程序通过DID、VID、SDID、SVID来寻找确定板卡的)。设备类型号可以查询手册,自己给它指定一个。木例为0x06800000,计算机启动时会提示发现PCI桥设备。

地址 00H 04H 08H 0CH 10H 14H 24H 28H 38H 3CH 4CH 50H 5CH 60H 数值 905010B5 06800000 905010B5 xxxx01xx 对应寄存器 设备ID和生产商ID 类别码 子系统ID和生产商ID 中断引脚 局部地址空间0的范围寄存器 局部地址空间1的范围寄存器 局部地址空间0的基址寄存器 局部地址空间1的基址寄存器 局部地址空间0的总线定义寄存器 局部地址空间1的总线定义寄存器 片选0基址寄存器 片选1基址寄存器 中断控制/状态寄存器 控制寄存器

表4.1 ISA接口模式下EEPROM值及装入程序 Table 4.1 ISA interface mode and into the program EEPROM value

17

西安航空技术高等专科学校2012届毕业设计说明书

局部空间1范围寄存器的值为OxFFFFFFF1,表示I/O空间大小为16字节,bit0为1表示此空间被映射为I/O空间。

局部空间1基地址寄存器的值为0x00000201,表示空间1的基地址0x200。bit0为1表示空间1使能。

局部空间1描述寄存器的值为0x00400022,其中bit[23:22]为01表明局部空间1的数据总线宽度为16位。在ISA模式中,局部空间1必须映射为I/O空间,局部空间0必须映射为内存空间。

局部片选寄存器1的值是0x00000109,表示局部地址落在0x200-0x210之间时,片选有效。在ISA模式下,虽然不存在片选信号1,但我们必须设置它,使它的值与局部空间1的基地址和范围相匹配,否则局部空间也就无法响应PC I的I/O控制指令了

地址 00H 04H 08H 0CH 10H 14H 18H 1CH 2CH 3CH 设备ID和生产商ID 状态和命令 类别码和版本ID BIST、头域类型、延迟计时器、Cache行大小 配置寄存器内存映射的PCI基址0 配置寄存器I/O映射的PCI基址1 局部空间0的PCI基址2 局部空间0的PCI基址3 子系统ID、字系统生产商ID Max_Lat、Min_Gnt、中段引脚、中断线 表4.2 PCI总线配置寄存器 中断控制状态寄存器的值为0x00001000 ,表示不使用中断,其中bit12为1

表示ISA模式使能,如果不设置bit12为1,那么9052就会工作在C模式而造成错误。

地址 00H 04H 14H 18H 28H 2CH 3CH 40H 4CH 50H 局部地址空间0的范围寄存器 局部地址空间1的范围寄存器 局部地址空间0的基址寄存器 局部地址空间1的基址寄存器 局部地址空间0的总线定义寄存器 局部地址空间1的总线定义寄存器 片选0基址寄存器 片选1基址寄存器 中断控制/状态寄存器 控制寄存器 9052内部提供了两种配置寄存器:PCI配置寄存器(表4.2)和局部空间配置寄存器(表4.3)。PCI配置寄存器有6个基地址寄存器,局部配置寄存器有4个基地址寄存器。PCI基地址是在系统上电时由BIOS 根据设备配置信息而分给设备在系统中的物理地址,我们在设计硬件电路和编写EEPROM时不用理会。其中PCI基地址0和基地址1分别是以内存方式和I /O方

表4.3 局部总线配置寄存器

式来访问局部配置寄存器所分配的基地址,PCI基地址2和基地址3分别映射到局部基地址0和局部基地址1。编写驱动程序时通过调用PCI基地址2或基

18

西安航空技术高等专科学校2012届毕业设计说明书

地址3的值得到板卡在微机系统中的真实基地址。因此,9052其实就相当于一个桥,在PCI总线和局部总线之间起到一个翻译的作用。在本设计中,对局部空间1进行I/O操作,局部基地址寄存器1的值为0x201,表示空间1的基地址0x200,局部片选寄存器1的值是0x00000209表示局部地址范围为0x200~Ox20F,共16字节。假设现在板卡实际基地址的值为PCIBAR3,那么当PCI端访问地址PCIBAR3+Offset (Offset为偏移量)时,若0 < Offsets<16,那么ISA端的地址总线上出现的值就会为0x200+Offset,且IORD或IOWR信号也会产生,如图3所示;如果Offset不在这个范围之内,那么地址就会落在局部片选寄存器1所设置的有效片选范囚之外,因而局部端也就不会响应。

PCI空间 PCIBAR3+0

PCIBAR3+1 ISA空间 0x200 0x201 图4.4 ISA端的地址与PCI端的

地址一一映射(0≤offset≤16) Figure 4.4 ISA and PCI-side of the address Address mapping (0 ≤ offset ≤ 16)

PCIBAR3+1 5 0x20F 由于存在这种一一映射的关系,ISA总线的地址空间要映射到I/O空间。为从PCI总线配置寄存器中获得主机动态分配的映射基址,并对映射端口进行读写,必须编写驱动程序。但是由于驱动在本设计中已经准备好了,我们在后边的文中对于主机统一分配的基地址统一用PCIBAR3=000C400H表示,用以这个基地址加上个偏移量,调用编程语言指令对端口进行读写。

对于我们设计的总线接口卡在ISA空间的口地址范围为0x200~0x20F即一般板卡的游戏接口。通过对各个端口的分配如下:

采集子函数读入地址为0x202和0x203。所以偏移量分别为offset=02H,offset=03H。所以端口的地址为000C402H和000C403H。

输出数据将占用0x201,偏移量为offset=01H。所以端口的地址为000C401H 2. I/O接口的输入输出指令函数

在PC机中,有多种语言支持端口的读写操作。我们针对C语言进行详细说明。因为这些函数已经存在于C语言库中,省略了设计者自己开发的麻烦。TurboC提供了专门对I/O接口进行输入输出操作的几个函数:

int inp(int portid) int inport(int portid) int inportb(int portid)

int outp(int portid ,int value)

19

西安航空技术高等专科学校2012届毕业设计说明书

int outport(int portid ,int value) int outportb(int portid ,int value) 这些函数的原型在dos.h中。 (1)接口输入函数 int inp(int portid) int inport(int portid)

import函数从指定的接口地址portid中读取一个字,而inportb则从指定的接口中读取一个字节。 1. 接口输出函数

int outp(int portid ,int value) int outport(int portid ,int value) int outportb(int portid ,int value)

outport函数把一个16位二进制数发送到口地址坡人提到的接口中去。outportb函数是将一个字节的数value送到口地址为portid的接口去。

4.1.3 随动系统C程序功能要求及实现

本系统作为一个数字控制的随动系统,需要有计算机对整个过程进行数据采集及监控,因此除了模拟电路的调节及PCI总线几口电路的硬件支持外,也需要软件对硬件各个方面的工作给予支持及协调。在整个控制过程中所有的系统参数、位置给定量输入,控制规律的软件实现,通过I/O端口地址向外部模拟调剂电路的控制输出量的输出及模拟电路的位置反馈量的采集,整个调节过程参数及波形的处理、显示等都得由C语言来实现。就本系统而言,其软件功能的整体实现应如附录2流程图所示。下面就此流程图的主要过程进行解释。对各主要自函数作专门分析。

大家都已经知道本系统的工作的首先从接收有数字计算键盘给出的各项系统参数开始,系统参数包裹系统比例放大倍数Kp,积分系数Ki,微分系数kd及位置给定Pn。

在定各个头文件、各全局变量声明及赋初值、打开个将要使用的数据文件、接受各个参数及给定量后,程序即开始第一次调用采集自函数,采集光电编码器送回的执行电机当前位置量,然后和给定位置两相比较,求出首个偏差值en。将此偏差值送捷径跟随子函数,将其在保证执行电机旋转角度在-180。 和180。之间的前提下转换,再将转换出的本次偏差值赋给钱一次误差变量en1。

延时一段时间后,重复以上各步再次采集、计算、转换得到本次偏差,调用PID运算子函数,算出控制输出量,经过范围校正后调用控制量输处子程序,对外部模拟调剂电路输出控制电压,并向数据文件输出调节过程参数。将本次偏差再赋予上次偏差en1,利用time()函数取当前系统时间。

20

西安航空技术高等专科学校2012届毕业设计说明书

再调用延时子程序延时一段时间,重复各步骤,输出控制电压,调节过程参数后再次去当前系统时间,利用difftime()函数求出两次系统时间的间隔,判断其是否小于3秒,如果小于3秒,则调转循环执行此段程序;否则停止执行调节过程,向另一数据文件输出一标志位,以备VB程序执行时调用,调用调剂过程超调量显示子程序显示整个调剂过程的超调情况,调用过程子程序显示调节过程调节波形。令执行电机停止,调节过程结束。

在本系统的C语言程序中利用了多个功能子函数。对各功能子函数进行详细的分析对于全面地理解整个随动控制软件是非常有必要的。 1. 执行电机位置采集子函数

采集子函数是本系统子函数中两个与外部交换数据的重要子函数之一。欲比较精确的调节数字随动系统,有比较准确的位置反馈量是非常比要的。如何准确的采回光电编码器送出的位置反馈量呢?前文已经对地址空间作了详细的说明,所以采集自函数使用的杜如地址为0x402和0x403。虽然74LS373仅锁存了2条数据线上的数据,但仍以8位的形式通过总线送回内存,因此本子函数使用前面介绍过得intputb()函数将此8为数据功过口地址为0x402的端口采回,然后与0x0C0相与取其高两位。将第二片74LS373锁存的7位数据以8位形式经0x403取回,与0x7f相与取其低七位。光电编码器采集的9位反馈量取齐后。将通过0x403取回的数据左移8位后和通过0x402取回的数据相加。然后再右移6位去掉其原有相与留下的6个0。这样就形成了9位位置反馈量。 2. 系统捷径跟踪子函数

本系统数字控制的优点在于它能实现位置上的捷径跟踪。这就是说,不管你输入的位置给定量与当前位置的偏差多大,系统总能控制旋转角度在-180。 和180。之间即达到指定位置。其程序实现如下:判断得到偏差值en,如果0

本系统是采集频率为5KHz的光电编码器进行数据采集的,而系统所用的主控计算机是计算速度达到几百兆次。因此出现了一个问题那就是当光电编码器采集一次外部数据时,微机已经执行了数据操作上万次了,以至于发生同一个数据被采集了许多次的现象,影响了系统的调节,扩大了系统处理的数据量,所以有必要增加一个延时子函数,让计算机执行与光电编码器采回数据量相应次数的端口操作。

4. 描绘波形子函数

为更形象、更直观地了解本系统的动态调节过程,本系统还未用户开发了波形帽徽子程序。现在普遍使用的TC2.0版本支持丰富的图形库函数,利用他们我

21

西安航空技术高等专科学校2012届毕业设计说明书

们可以方便的显示借口系统中获得的数据序列和分析结果。在本系统中继将采回的位置反馈数据至于数组S[200],因此我们自诩将此数组中的数据序列以曲线形式描绘出来就可以了。本函数中,我们使用了VGA的640*480分辨率的图形显示模式,像素的左上角(0,0)至右下角(639,479)。以clearviewport()函数清屏后利用矩形函数rectangle()在左上角(20,40),右下角(620,440)范围内开辟一个视图区,用于显示波形,试图的背景色和线条分别用setbkcolor()和setcolor()设定,线形由setlinestyle()函数确定。波形图的横坐标是画在XIAS=240处的一处横线,纵坐标一左边框代替。综合坐标各处均标出T(执行时间)、β(旋转角度值)。坐标的正负方向均有PIX=200个像素,由于执行电机的旋转角度范围为-180度到+180度之间,即-256—+255,因此用200.0/256.0将数据归为一化为[-200,200]范围内。各值点用函数lineto()连接起来形成连续曲线。在给定波形和反馈波形除分别标出Pn和Yn。本函数的优点在于可以通过接受键盘字符输入惊醒反馈波形的动态显示,且可通过改变dx值对波形进行压缩或展开。

22

西安航空技术高等专科学校2012届毕业设计说明书

第五章 数字随动系统软硬件综合调试

5.1 随动系统软硬件接口

一个完成的计算机控制系统良好的工作状态是以系统软硬件之间良好的接口为前提的。因此在调试本系统时,有必要对系统的各主要工作模块之间的接口关系作全面的研究。本系统的整体结构可视为四个模块:外部模拟调节电路,PCI总线扩展接口电路板,C语言控制程序,VB用户可操作界面。C语言控制程序和VB用户可操作界面可合并看作计算机工作模块。计算机工作模块和模拟调节电路之间以总线接口电路有一D型25P的标准插座,此端应与模拟调节电路D型25P标准插座以一排线相连,设计时已考虑两个插座个引脚功能的相互对应,以保证数据的正确传送。接口电路板的金手指是根据PCI总线插槽的尺寸和个引脚功能来设计的,当接口电路板正确插入并固定,板上各处点已经与总线紧密接触。主控计算机将借助C语言控制程序的I/O端口读写函数通过系统总线与接口电路板的数据交换。

在前面的介绍的系统操作界面时,大家都已看到系统数据的输入是通过操作界面来完成的,当输入的数据功过设定的范围判断后就开始执行控制程序。

5.2 随动系统整体调试

在数字控制系统的调试中,参数的整定是十分重要的,调节系统参数整定的好坏直接影响调节的品质。由于一般的生产过程都具有较大的时间常数,而数字控制系统(DDC)的采样周期则要小得多,所以DDC系统以及PID数字随动调节器的参数整定完全可以按照模拟调节器的各种参数整定的方法进行分析和综合。如何正确地选择PID数字调节器的参数,使系统的抗扰性、快速性及稳态性保持最优,并将误差保持在对小值,这成了了本系统调试中PID参数整定的一个重要问题。

凑试法是通过模拟运行观察系统的响应曲线,然后根据各调节参数对系统响应的大致影响,反复凑试参数,以达到满意的响应,从而确定PID的调节参数,增大比例系数Kp一般将加快系统的响应,有利于减少静差。但过大的比例系数会使系统有较大的超调,并产生震荡,是稳定性变坏。增大公式4-1的Ti有利于加快系统响应,使超调变小,稳定性增加,但对于干扰信号的抑制能力却将减弱。在系统凑试过程中,参考了以上参数对控过程的影响趋势,对参数进行先比例,后积分,在再微分的整体步骤。

23

西安航空技术高等专科学校2012届毕业设计说明书

结 束 语

随着现在微机控制技术的日益成熟。数字控制的松动系统在越来越广泛的领域内得以应用,小至工厂的数据机床,轧钢炼钢,大到国防的雷达控制火炮群,无一不显示出数控随动系统的应用的优势。

在本次毕业设计课题的完成过程中,本人主要承担着控计算机PCI总线的扩展接口电路板的设计与实现、控制规律及控制过程的软件实现和用户操作界面的设计。作为一个研究项目,本课题对数控随动控制系统仅做了普遍性的研究,但成功后只要稍加改造亦可用于多种场合。在整个设计过程中,充分利用大学中所学的专业技术知识,阅读了大量相关著作,借鉴了许多前辈的论点及成果,在老师的指导下,和同组同学相互配合,顺利地完成了全部毕业设计任务。

虽然如此,我个人认为本系统还有一些不足之处:如本系统是模拟与数字合作调节,不是一个完全数字控制的系统,因此其受到外界模拟电路的许多影响,又会产生一些极难调节或校正的偏差,影响到整个系统的性能指标和调节波形;本系统在调试时对PID参数精心整定是采用的是根据实验经验算法出的调节参数范围对实际调节参数进行凑试,直到达到系统的性能指标要求为止,如果在实际生产中则需要很多的技术人员去调整参数,且当对象特性发生变化时,又要重新整定,不适用于非线性时变和随机过程,而现有的字校正参数的方法结构和计算复杂,用继电器在线测量系统的极限振荡中期和增益,并根须要求稳定系统的相域和增益域从而自动校正参数的方法则有其独到的优点;再有对于PCI总线芯片制作的板卡需要对其进行驱动的编写,由于这次驱动已经就绪希望在以后能学习驱动的编写与制作。就以上3个问题希望有机会对其深入研究,以使数控随动技术得以更广泛的应用。

24

西安航空技术高等专科学校2012届毕业设计说明书

参考文献

[1] 王仕元. C高级实用程序设计. 清华大学出版社. 1996 [2] 刘凯. 实用编译技术. 天津大学出版社

[3] 何克忠 李伟. 计算机控制系统. 清华大学出版社 [4] 李贵山. PCI局部总线开发指南. 西安科技大学出版社

[5] 王胡舰. 利用接口芯片PCI9052制作PCI总线接口卡详解. 工业控制计算机. 2004.2 [6] 吴业进. PCI9052接口芯片及其ISA模式应用 [7] 数据采集与编程. 时代自动化专家之路丛书 [8] 绪方胜彦. 现代控制工程. 机械工业出版社

[9] 谢剑英. 微型计算机控制技术. 国防工业出版社.1991

[10] 尹勇 李宇. PCI总线设备开发宝典. 北京航空航天大学出版社. 2005. [11] PLX Technology,Inc. PCI 9052 Data Book Version 1.02. 2000. [12] 孙涵芳. 可编程逻辑器件PAL和GAL. 北京航空航天大学出版社. 1990 [13] Memory components handbook. Intel.

[14] David F.hoeschele.Jr. Analog-Digital/Digital-Analog conversion Techniques. John Wedey &

Sons.INC,1986

25

西安航空技术高等专科学校2012届毕业设计说明书

致 谢

感谢西安航空技术高等专科学校三年来对我的辛苦培育,让我在大学这三年来学到很东西,特别感谢应用电子技术专业为我提供了良好的学习环境、感谢领导、老师们三年来对我无微不至的关怀和指导,让我得以在这三年中学到很多有用的知识。在此,我还要感谢在班里同学和朋友,感谢你们在我遇到困难的时候帮助我,给我支持和鼓励,感谢你们。

谢谢!

26

附录C语言主控程序清单

附录

数字随动系统C语言控制源程序:(设取得的PCI总线空间的基地址为000C400H) #include /* 定义头文件 */ #include #include #include #include #include

#define PIX 200 /* 宏定义 */ #define XIAS 240 #define LENTH 600 #define MAXP 1024

static int s[600],t[600]; int u,v,w;

int en=0,en1=0,en2=0; /* en=pn-yn(当前时刻) en1=pn-yn(前一时刻) */ int yn,b=0; /* 反馈位置量 */ int pn,c=0;

int cn,maxcn; /* 控制量输出量 */ int i,run;

float kp,ki,kd,delta,max; /* 比例放大系数0—10,微分系数0-50 */ int a1,a2,a3,a4; /* 200=140du */ int d1,d2,d3,d4; int b1,b2,b3,b4,b5; int c1,c2,c3 FILE *fp; FILE *fq; FILE *ft;

void follow(void); /* 子函数定义 */ void io(void); void dac(void); void pid(void); void display(void); void show(void); void delay(void); void plot_line(void);

main(argc,argv) /* 命令加参数格式 */ int argc;

char *argv[ ]; { double diff;

time_t first,second; if (argc!=17) /* 命令参数总个数不小于17 */ exit(); else {

- -

27

附录C语言主控程序清单

if((fp=fopen(“wjd.txt”,”w+”))==NULL) /* 打开系统数据文件 */ exit();

fprintf(fp,” %s\\n”,”数字随动系统演示过程参数列表”); fprintf(fp,” %s\\n”,”============================”);

fprintf(fp,”%s %s %s %s %s %s %s %s %s \\n”,”kp”,”ki”,”kd”,”yn”,”pn”,”en”,”en1”,”cn”,”un”); /* 打印参数列表 */

if((fq=fopen(“shjh.txt”,”w+”))==NULL) exit();

kp=1.5; /* 初始化 */ kd=6; en=0; en1=0; cn=0x7f; dac();

a1=*argv[1];a1=a1-48; /* 参数对应 */ a2=*argv[2];a2=a2-48; a3=*argv[3];a3=a3-48; a4=*argv[4];a4=a4-48;

kp=a1+a2*0.1+a3*0.01+a4*0.001; d1=*argv[5];d1=d1-48; d2=*argv[6];d2=d2-48; d3=*argv[7];d3=d3-48; d4=*argv[8];d4=d4-48;

ki=d1-d2*0.1+d3*0.01+d4*0.001; b1=*argv[9];b1=b1-48; b2=*argv[10];b2=b2-48; b3=*argv[11];b3=b3-48; b4=*argv[12];b4=b4-48; b5=*argv[13];b5=b5-48;

kd=b1*10+b2+b3*0.1+b4*0.01+b5*0.001; c1=*argv[14];c1=c1-48; c2=*argv[15];c2=c2-48; c3=*argv[16];c3=c3-48; pn=c1*100+c2*10+c3;

if((pn=512)&&(pn<999)) /* 给定大于511时 */ pn=pn-pn(pn/512)*512;

else

exit();

io(); /* 数据采集(反馈量) */ delay(); /* 延时 */

en=pn-yn; /* 本次偏差 */ t[0]=en; /* 偏差数组 */ follow(); /* 捷径跟随 */

- -

28

附录C语言主控程序清单

en1=en; /* 当前误差变成前一时刻误差 */ io(); delay(); en=pn-yn; t[1]=en; follow();

pid(); /* 计算控制输出电压 */ display(); /* 打印当前所有变量值 */ dac(); /* 控制电压输出 */

first=time(NULL); /* 第一次取系统时间 */ c=2;

11:io(); /* 数据采集子程序(二次反馈量) */

dalay(); en=pn-yn; t[c]=en; c=c+1; follow();

pid(); /* 计算二次控制输出量 */ display(); /* 打印 */ dac(); /* 输出控制 */

second=time(NULL); /* 第二次取时间 */

diff=difftime(second,first); /* 两次系统时间之差 */ if(diff<3.0) /* 判断满足跳转至标号11 */ goto 11;

else /* 否则执行下列语句 */ { show(); /* 计算超调 */ plot_line() /* 描绘波形 */ run=0 /* 假定标志位 */

fprintf(fq,”%d\\n”,run); /* 标志输出 */ goto t1; /* 系统停止 */}} t1:cn=0x7f; /* 零控制电压 */

dac(); /* 端口输出子程序 */

fclose(fp); /* 关闭系统数据文件 */ fclose(fq); fclose(ft); }

void dac() /* 输出控制子函数 */ { int an; an=cn;

outportb(0xC401,an); /* 对地址000C401输出字节量an */ return; }

void pid() /* PID算法计算子函数 */ { int u;

u=(int)(kp*(en-en1)/2+ki*en/2+kd*(en-2*en1+en2)/2);

- -

29

附录C语言主控程序清单

u=u; u+=128; if(u>255) u=255; else

if(u<0) u=0; en=u;

en2=en1; /* 偏差赋值 */ en1=en; return; }

void plot_line() /* 波形描绘子函数 */ { float factor,dx; int i;

int gdriver=9,gmode=2; /* 定义显示模式 */ initgraph(&gdriver,&gmode,”c:\\\\tc”); clearviewport(); /* 清屏 */ printf(“dx=?”); scanf(“%f”,&dx);

setlinestyle(0,0,3); /* 线形,背景色,线条色 */ setbkcolor(0); setcolor(4);

for (b=0;b<600;b++) /* 转换 */ { if(s[b]>=256 s[b]=s[b]-512;)} if(pn>=256) pn=pn-512;

rectangle(20,40,620,440); /* 构建绘图区,坐标系 */ moveto(20,XIAS); lineto(620,XIAS);

moveto(20,XIAS-(int)(pn*200.0/256.0)); /* 画给定量直线 */ lineto(620,XIAS-(int)(pn*200.0/256.0)); outtextxy(25,50,”β”); /* 输出标志 */ outtextxy(600,230,”T”);

outtextxy(600,XIAS-(int)(200.0/256.0),”pn”);

outtextxy(20+50*dx,XIAS-(int)(200.0/256.0*s[60]),”yn”); moveto(20,XIAS-(int)(200.0/256.0*s[0])); /* 定义起点 */ for(i=1;iMAXP) break;

lineto(20+i*dx,XIAS-(int)(200.0/256.0*s[i])); /* 定义起点 */ getch(); } getch();

closegraph(); /* 恢复 */}

void delay() /* 延时子函数 */ { int i,j;

for(i=0;i<2000;i++)

- -

30

附录C语言主控程序清单

{ for(j=0;j<1000;j++) { ; }}

void follow() /* 系统跟随子函数,偏差计算 */

{ if((en>=0)&&(en<=256)) en=en; /* 度数 0<=en<=180 */

if((en>256)&&(en<=512) en=en-512; /* 180-256)) en=en; /* -180-512)&&(en<=256)) en=512+en;/* -180<=en<=-360 en=en+360 */ return; }

void show() /* 超调计算子函数 */ { int u;

if((ft=fopen(“shen.txt”,”w+”))==NULL) exit();

for(b=0;b<600;b++) /* 判断第一个返回量与给定量相等点位置 */ { if(abs(t[b])==0) {u=b; break;}

if(abs(t[b])==1) { u=b;

break; }}

for(c=u;c<600;c++) /* 从此点开始求取震荡峰值 */ { v=abs(t[c]); w=abs(t[c+1]); if(w

delta=max*100.0/abs(pn-s[0]); /* 超调量计算 */ break;}}

fprintf(ft,”%f%%\\n”,delta); /* 超调量输出 */ fclose(ft);

void io() /* 数据采集子函数 */ { int a;

a=inportb(0xC402)&0x0c0; /* 从口地址000C402采数据取其高两位 */

yn=a;

a=inportb(0xC403)&0x7f; /* 从口地址000C403 采数据取其低七位 */

yn=a*256+yn; /* 合成9位数据 */ yn=yn/64;

s[b]=yn; /* 每一次数据送数组s[b] */ b=b+1; return; }

void display() /* 打印子函数 */ { float vn;

vn=(float)(3.92157*cn/100.0-5.0); /* vn即 un=10*(pn-512)/255-5,

cn=10*cn,cn=pn-512<360>*/

- -

31

附录C语言主控程序清单

fprintf(fp,”%5.3f,%5.3f,%6.3,%-5d,%-5d,”,kp,ki,kd,yn,pn); fprintf(fp,”%-5d,%-5d,%-5d,%1.2fv\\n”,en,en1,cn,vn); return; }

- - 32

本文来源:https://www.bwwdw.com/article/5dwg.html

Top