工控组态软件模拟系统-论文.doc_第1页
工控组态软件模拟系统-论文.doc_第2页
工控组态软件模拟系统-论文.doc_第3页
工控组态软件模拟系统-论文.doc_第4页
工控组态软件模拟系统-论文.doc_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

工控组态软件模拟系统工控组态软件模拟系统Simulation System of Industrial Control Configuration Software摘 要随着工业自动化水平的不断提高,对工业控制的及时性、准确性和稳定性提出了更高的要求。而工控组态软件的出现,很好的满足了工业控制的各方面的要求。随着嵌入式系统自动化和智能化的进一步发展,在嵌入式系统平台上开发出性能良好的应用软件也显得越来越重要。本课题正是从工业控制的要求和特点出发,基于三星公司的ARM9处理器S3C2410和嵌入式Linux操作系统平台,完成了对工控组态软件的模拟。课题首先对底层硬件进行研究,包括驱动电机控制电路、PWM、ADC等电路的工作原理和电路图,并结合对S3C2410芯片上具体的控制管脚和寄存器的分析,在没有操作系统的平台上实现了对硬件设备的控制。在此基础上,在Linux 2.4内核下设计了各个硬件设备的驱动程序,利用内核空间和用户空间之间数据的传递以及中断的捕捉和信号发送的机制,使各个硬件能够正常运行于嵌入式Linux操作系统上。随后,分析总结工控组态软件的特点,对模拟系统进行了整体的设计和功能的描述,并结合软件工程的设计思想,分别对系统进行了需求分析、概要设计、详细设计和测试。概要设计中,划分功能模块,利用多线程完成了操作硬件和显示的功能,使系统结构层次更加的合理。详细设计中,以功能键来划分处理函数,使程序流程和逻辑更加的清晰。最后,裁剪和编译嵌入式Linux系统,在ARM9处理器上完成了应用程序的运行和调试。本系统可以成功运行于Embest硬件平台,运行过程中,能够实时准确的监测每个硬件的状态,并能够通过控制台准确的控制外部硬件动作,完成了对一般工业控制的仿真和模拟。关键词:工控组态软件;S3C2410;设备驱动- -工控组态软件模拟系统Simulation System of Industrial Control Configuration SoftwareAbstract Along with the development of the automatic control in industry, the timeliness, accuracy and stability in industrial control is expected to reach a higher level. And the Industrial Control Configuration Software comes out to meet the strict demand. Whats more, as the embedded system becomes more specific and intelligent, developing Industrial Control Configuration Software on embedded platform shows its extraordinary potential and competitiveness. According to the features and demands of industrial control, the simulation system is just accomplished based on the Samsung ARM9 processor S3C2410 platform and embedded linux operating system. Firstly, the system introduces the circuit diagram of the hardware, including the control circuit of DC motor, PWM, ADC and so on. And through analyzing the concrete control pins and registers on the S3C2410 chip, the system succeeds in controlling the peripheral devices without a operating system. Based on the hardware, the system designs the device drivers that run in the Linux 2.4 kernel. In the drivers, the system completes the data transmission between user space and kernel space, the capture to the interrupt and the sending of the signal from the kernel. It successfully makes the peripheral hardware devices run on the Linux operation system normally. Afterward, the system analyzes the features of the Industrial Control Configuration Software and designs the simulation systems functions in general. Then, according to the theory of software engineering, the system does the requirement analysis, general design, detailed design and the test. In general design, the system divides the function modules and succeeds in controlling the hardware and showing the status by using multithreading, the structure of the system becomes more reasonable. In detailed design, the system divides the functions by the control keys and makes the flow and logic get much clearer. And finally, the system cuts out the kernel and compiles the Linux operation system, run and debug on the ARM9 platform.The simulation system can succeed in running stably on the Embest hardware platform. When it is running, the system is not only able to monitor all the peripherals, but also can control the external hardware accurately by the console. The system has achieved the simulation of the ordinary industrial control.Key Words:Industrial Control Configuration Software;S3C2410;Device Driver- III -目 录摘 要IAbstractII1 文献综述11.1 嵌入式简介及其应用11.1.1 嵌入式系统的定义11.1.2 嵌入式系统的技术特点11.1.3 嵌入式系统的发展趋势11.2 工控组态软件的简介21.2.1 工控组态软件概述21.2.2 工控组态软件的功能特点31.3 课题研究的意义和目的31.4 课题研究的内容32 理论基础42.1 系统相关的技术和原理42.1.1 直流电机工作原理42.1.2 A/D转换原理42.1.3 IIC总线原理52.1.4 PWM调节电机速度原理62.2 实验平台硬件的电路连接和工作原理72.2.1 整体硬件电路连接关系72.2.1 L298N硬件驱动电路及连接关系72.2.2 PWM定时器的硬件电路及连接关系92.2.3 ADC转换器硬件电路及连接关系102.2.4 Led硬件电路及连接关系112.2.5 蜂鸣器原理及硬件连接关系112.2.6 Eint0中断按键的硬件电路及连接关系122.2.7 ZLG7290原理及硬件连接关系132.2.8 5*4键盘及数码管硬件电路及连接关系142.3 Linux2.4内核下驱动程序设计介绍152.3.1 设备驱动程序的作用152.3.2 Linux设备驱动程序实现机制162.3.3 Linux设备的分类162.3.4 Linux下驱动程序的特点162.3.5 Linux设备驱动的相关操作163 系统分析183.1 系统整体描述183.2 系统功能分析193.3 系统实现目标204 系统设计实现224.1 系统概要设计224.1.1 系统总体框架设计224.1.2 上层应用程序功能模块设计234.1.3 数据库结构设计254.2 系统详细设计264.2.1 硬件设备驱动设计264.2.2 应用程序整体描述344.2.3 按键详细介绍364.2.4 重要数据结构说明364.2.5 程序执行流程设计374.3 系统的运行实现424.3.1 建立交叉编译环境424.3.2 建立嵌入式Linux操作系统444.3.3 系统运行实现455 系统测试485.1 测试方案设计485.1.1 测试的方法理论485.1.2 针对本系统提出的测试方案485.2 测试结果分析50结 论51参 考 文 献53致 谢54工控组态软件模拟系统1 文献综述1.1 嵌入式简介及其应用1.1.1 嵌入式系统的定义嵌入式系统是指以应用为中心,以计算机技术为基础,软件硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用软件等部分组成。用于实现对其它设备的控制、监视和管理等功能,它通常嵌入在主要设备中运行。1.1.2 嵌入式系统的技术特点嵌入式系统是集软件、硬件于一体的高可靠性系统 嵌入式系统麻雀虽小,五脏俱全,软件除操作系统外,还需有完成嵌入式系统功能的应用软件,硬件除了CPU外,还需有外围电路支持,微处理器、微控制器、DSP已构成嵌入式系统硬件的基础。嵌入式系统是资源开销小的高性能价格比系统 嵌入式系统的发展离不开应用,应用的共同要求是系统资源开销小,由于嵌入式系统技术日益完善,各种高性能嵌入式应用系统层出不穷,它已是资源开销小的高性能价格比的一类应用系统。为了满足系统资源开销小、高性能、高可靠性的要求,大多使用Flash Memory。嵌入式系统是功能强大、使用灵活方便的系统 嵌入式系统应用的广泛性,要求该系统通常是无键盘、无需编程的应用系统,使用它应如同使用家用电器一样方便。1.1.3 嵌入式系统的发展趋势嵌入式应用软件的开发需要强大的开发工具和操作系统的支持。随着因特网技术的成熟、带宽的提高,ICP和ASP在网上提供的信息内容日趋丰富、应用项目多种多样,嵌入式电子设备的功能不再单一,电气结构也更为复杂。为了满足应用功能的升级,在采用更强大的嵌入式处理器增强处理能力的同时,还采用实时多任务编程技术和交叉开发工具技术来控制功能复杂性,简化应用程序设计、保障软件质量和缩短开发周期。另外,随着网络的快速蔓延,联网成为必然趋势。为适应嵌入式分布处理结构和应用上网需求,面向21世纪的嵌入式系统要求配备标准的一种或多种网络通信接口。同时,支持小型电子设备实现小尺寸、微功耗和低成本。为满足这种特性,要求嵌入式产品设计者相应降低处理器的性能,限制内存容量和复用接口芯片。这就相应提高了对嵌入式软件设计技术要求。另外,还需要提供精巧的多媒体人机界面。1.2 工控组态软件的简介1.2.1 工控组态软件概述组态一词来源于英文单词Configuration,从组态软件的内涵上说组态软件是指在软件领域内,操作人员根据应用对象及控制任务的要求,配置(包括对象的定义、制作和编辑,对象状态特征属性参数的设定等)用户应用软件的过程,也就是把组态软件视为“应用程序生成器”。从应用角度讲组态软件是完成系统硬件与软件沟通、建立现场与监控层沟通的人机界面的软件平台,它的应用领域不仅仅局限于工业自动化领域。而工业控制领域是组态软件应用的重要阵地,伴随着集散型控制系统DCS (Distributed Control System)的出现组态软件已引入工业控制系统。在工业过程控制系统中存在着两大类可变因素:一是操作人员需求的变化;二是被控对象状态的变化及被控对象所用硬件的变化。而组态软件正是在保持软件平台执行代码不变的基础上通过改变软件配置信息(包括图形文件、硬件配置文件、实时数据库等),适应两大不同系统对两大因素的要求,构建新的监控系统的平台软件。以这种方式构建系统既提高了系统的成套速度,又保证了系统软件的成熟性和可靠性,使用起来方便灵活,而且便于修改和维护。图1.1描述了工控组态软件的作用:图1.1 工控组态软件的作用描述图1.2.2 工控组态软件的功能特点(1) 强大的图形组态功能,界面一致性好,易学易用。(2) 提供了丰富的脚本语言函数和功能。(3) 能与多种通讯协议互联,支持多种硬件设备。(4) 提供多种数据驱动程序交换数据。(5) 有一个实时数据库作为整个系统数据处理、数据组织和管理的核心。(6) 功能模块丰富,互相独立的组织形式提高了系统可靠性和可扩展性。1.3 课题研究的意义和目的嵌入式系统核心理念就是把计算机系统嵌入到特定对象体系中,实现智能化控制。正由于嵌入式系统的特定性和智能化,被广泛应用于工业控制等专门领域。而随着工业自动化水平的迅速提高,组态软件逐渐被过程自动化技术人员所熟悉。组态软件是面向监控与数据采集的软件平台,它能根据用户对被控对象和控制目的的要求在模块间进行任意组合。它不仅满足了被控对象的个性需求、缩短了软件开发时间并节省了开发费用,还具有实时多任务、接口开放、操作直观、使用灵活简单、功能多样、运行可靠等特点。而采用嵌入式系统开发出的工控组态软件对对象进行过程控制,不仅可以大大提高控制的自动化水平,而且可以提高控制的及时性和准确性,从而改善劳动条件、提高产品质量及合格率。因此,嵌入式系统下的工控组态软件有着更强的竞争力和更为广阔的市场前景。本课题就是利用现有的实验开发平台,来进行对工控组态软件的模拟。实现对模拟的工作现场的实时监控和对外部设备的操作控制。1.4 课题研究的内容 本课题完成在嵌入式S3C2410 ARM9实验平台上,实现对工控组态软件的模拟。从理论到实际操作需要研究学习如下内容:(1) 课题相关的技术原理,像直流电机工作原理,PWM调速原理,AD转换原理等。(2) 课题相关的硬件设备的硬件电路,在学习了解每个硬件设备工作原理的基础上着重掌握Embest实验箱相关硬件的硬件电路图,连接关系等。(3) 嵌入式Linux操作系统下驱动程序的开发设计,开发出独立的能够驱动硬件正常工作地驱动程序。(4) 基于ARM-Linux嵌入式系统应用程序的开发流程和方法。(5) 系统的逻辑、数据、控制的设计和实现。2 理论基础2.1 系统相关的技术和原理2.1.1 直流电机工作原理直流电机是通过两个磁场的互作用产生旋转。定子通过永磁体或受激励电磁铁产生一个固定磁场,转子由一系列电磁体构成,当电流通过其中一个绕组时会产生一个磁场。对有刷直流电机而言,转子上的换向器和定子的电刷在电机旋转时为每个绕组供给电能。通电转子绕组与定子磁体有相反极性,因而相互吸引,使转子转动至与定子磁场对准的位置。当转子到达对准位置时,电刷通过换向器为下一组绕组供电,从而使转子维持旋转运动。电机的速度与施加的电压成正比,输出转矩则与电流成正比。直流电机高效运行的最常见方法是施加一个 PWM(脉宽调制)方波,其通-断比率对应于所需速度。电机起到一个低通滤波器作用,将 PWM 信号转换为有效直流电平。PWM 驱动信号很常用,因为使用微处理器的控制器很容易产生 PWM 信号。虽然用精确的脉冲宽度可以调节电机的速度,实际应用中的 PWM 频率却是可变的,设计师应对其进行优化,以防止电机颤抖,发出耳朵听得到的噪声和 RFI。如要使直流电机反转,必须转换电机中电流的方向,为此,大多数设计师采用排列成 H 型的4个开关装置。2.1.2 A/D转换原理A/D转换器(Analog-to-Digital Converter)又叫模/数转换器,即是将模拟信号(电压或是电流的形式)转换成数字信号。这种数字信号可让仪表,计算机外设接口或是微处理机来加以操作或是工作使用。实验箱上的ADC转换器采用的是逐次逼近法来进行模拟量和数字量的转换。逐次逼近式A/D是比较常见的一种A/D转换电路,转换的时间为微秒级。采用逐次逼近法的A/D转换器是由一个比较器、D/A转换器、缓冲寄存器及控制逻辑电路组成,基本原理是从高位到低位逐位试探比较,好像用天平称物体,从重到轻逐级增减砝码进行试探。转换的过程如图2.1所示:逐次逼近法转换过程是:初始化时将逐次逼近寄存器各位清零;转换开始时,先将逐次逼近寄存器最高位置1,送入D/A转换器,经D/A转换后生成的模拟量送入比较器,称为o,与送入比较器的待转换的模拟量i进行比较,若oi,该位1被保留,否则被清除。然后再置逐次逼近寄存器次高位为1,将寄存器中新的数字量送D/A转换器,输出的o再与i比较,若oi,该位1被保留,否则被清除。重复此过程,直至逼近寄存器最低位。转换结束后,将逐次逼近寄存器中的数字量送入缓冲寄存器,得到数字量的输出。逐次逼近的操作过程是在一个控制电路的控制下进行的。图2.1 A/D转换过程2.1.3 IIC总线原理IIC(InterIntegrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。IIC总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此IIC总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。IIC总线的另一个优点是,它支持多主控,其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率,在任何时间点上只能有一个主控。IIC总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,IIC总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。IIC总线在传送数据过程中共有三种类型信号。开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据;结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据;应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况做出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。IIC规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。图2.2是IIC总线传递数据的过程:图2.2 IIC总线传递数据过程2.1.4 PWM调节电机速度原理PWM(Pulse-WidthModulation)是脉宽调制技术的简称。晶体管开关器件的导通时间也被称为导通角,通过控制晶体管的开通与关断时间来改变导通角的大小,就可以调节加在负载上的平均电压的大小,以实现对直流电机的调速,这就是PWM变速控制技术的基本原理。用分立器件组成PWM电路一般来说需要如下几个部分:三角波产生电路、脉冲调制电路、PWM信号延迟及分配电路。S3C2410作为一款功能强大的微处理器,其内部已经集成了包含上述三个部分的PWM发生器,只要对相关寄存器进行简单的设置,就可以产生需要的PWM信号。S3C2410的定时/计数器03都具有PWM输出功能,以定时/计数器0为例说明。时钟信号PCLK经过可编程的8位预分频器和时钟除法器分频后,驱动定时器内的逻辑控制器进行工作。逻辑控制器的核心,是一个16位的减法计数器。我们可以赋予计数缓冲寄存器(TCNTB0)和比较缓冲寄存器(TCMPB0)不同的初始值,当定时器使能时,这两个寄存器中的数据将被分别载入到减法计数器(TCNT0)和比较寄存器(TCMP0)。计数缓冲寄存器和比较缓冲寄存器的设计思想在S3C2410中被称为“双缓冲”,它的优点是在频率或占空比改变时,定时器仍然能产生稳定的输出。计时过程如下:从PCLK过来的时钟信号到达逻辑控制器时,减法计数器的值自动减1,当减法计数器的值为0时,定时器会向CPU发送中断请求,一轮计时操作完成。在自动装载模式下,计数缓冲寄存器中的初始值会由硬件控制自动载入减法计数器,进行下一轮的计时操作。PWM发生器的原理:比较缓冲寄存器(TCMPB0)中设定的初值是用来产生PWM信号的.信号的产生规则是:每当TCNT0的值和TCMP0的值相等时,定时器的输出逻辑电平翻转。PWM脉冲频率由TCNT0决定,而脉冲宽度由TCMP0决定。TCMP0的值越大,PWM脉冲的占空比越大,也即平均输出电压越大,反之亦然。2.2 实验平台硬件的电路连接和工作原理2.2.1 整体硬件电路连接关系 本系统用到了实验平台上的PWM定时器、直流电机、蜂鸣器、led、AD转化器、数码管等硬件,它们和S3C2410具体的连接关系如图2.3所示:2.2.1 L298N硬件驱动电路及连接关系L298是一种高电压、大电流电机驱动芯片。该芯片的主要特点是:工作电压高(最高工作电压可达46V)、输出电流大(瞬间峰值电流可达3A,持续工作电流为2A)。内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器、线圈等感性负载。采用标准TTL逻辑电平信号控制,具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作。有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作。可以外接检测电阻,将变化量反馈给控制电路。图2.3 各个硬件和S3C2410芯片的连接关系图L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB接控制使能端,控制电机的停转。图2.4是L298N外部管脚图:图2.4 L298N外部管脚图2.2.2 PWM定时器的硬件电路及连接关系S3C2410有5个16位定时器,其中定时器 0,1,2,3具有脉冲宽度调制(PWM)功能,定时器4具有内部定时作用,但是没有输出引脚。定时器0具有死区生成器,可以控制大电流设备。定时器 T0,T1 共用一个8bit预分频器,定时器 T2,T3,T4 共用另一个8bit预分频器,每个定时器都有一个时钟分频器,信号分频输出有5种模式(1/2,1/4,1/8,1/16 和外部时钟 TCLK)。每个定时器模块都从时钟分频器接收它自己的时钟信号,时钟分频器接收的时钟信号来自于8bit预分频器。可编程 8bit 预分频器根据存储在 TCFG0 和 TCFG1 中的数据对 PCLK 进行预分频。当时钟被允许后,定时器缓冲计数器器寄存器(CTNTBn)把计数初值下载到减法计数器中。定时器比较缓冲寄存器(CMPBn)把初始值下载到比较寄存器中来和减法计数器值比较,这种CTNTBn 和 CMPBn 双缓冲寄存器特性能使定时器产生稳定的输出,且占空比可变。每一个定时器都有一个自己的用定时器时钟驱动的16位减法计数器。当减法计数器减到0的时候就会产生一个定时器中断来通知CPU定时器操作完成。当定时器减法计数器减到0的时候相应的TCNTBn的值被自动重载到减法计数器中继续下次操作。然而,如果定时器停止了,比如在运行的时候通过清除TCON中定时器使能位来中止定时器的运行,TCNTBn的值不会被重载到减法计数器中。TCMPBn的值用于脉冲宽度调制(PWM)。当定时器的减法计数器的值和TCMPBn的值相匹配的时候,定时器输出改变输出电平。因此,比较寄存器决定了 PWM 输出的开关时间。图2.5为PWM产生不同占空比的示意图:图2.5 PWM产生不同占空比示意图PWM输出时钟频率 = 定时器输入时钟频率(TCLK)/定时器计数缓冲寄存器值(TCNTBn)。 PWM输出信号的占空比 = 定时器比较缓冲寄存器值(TCMPBn)/定时器计数缓冲寄存器值(TCNTBn)。S3C2410定时器特性:5个16bit定时器;两个8bit预分频器和两个4bit分频器;可编程PWM输出占空比;自动重载模式或者单个脉冲输出模式;具有死区生成器;自动重载与双缓冲。而本系统中的PWM输出到L298N驱动硬件的使能管脚ENA上,从而将占空比转换成使能时间的长短,控制电机转速。图2.6为控制电机转速的硬件电路图:图2.6 PWM控制电机转速的电路图2.2.3 ADC转换器硬件电路及连接关系S3C2410内部有8路10位的ADC转换器,其参考电压2.5V,在开发板上提供了两路直流电压测量电路,图2.7,可调电阻R1204和R1206用于调整输入电压,AIN4和AIN2是模拟电压输入端口。系统中用到了AIN2模拟电压输入端口,通过旋转AIN2来调节R1206的电阻值,进而连续的改变输入的电压值,再通过内部的转换,将模拟电压量转化为数字量。图2.7 Embest 试验箱上AD输入电路连接图2.2.4 Led硬件电路及连接关系LED1-4分别与GFP7-4相连,通过GFP7-4引脚的高低电平来控制发光二极管的亮与灭。当这几个管脚输出高电平的时候发光二极管熄灭,反之,发光二极管点亮。图2.8为LED发光二极管的硬件连接图:图2.8 LED发光二极管硬件连接图系统中通过按键来控制四个二极管的点亮情况,按照它们空间顺序依次点亮。2.2.5 蜂鸣器原理及硬件连接关系蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声。电源接通时,电流经触点通过线圈,线圈产生磁力吸下衔铁强制膜片移动,衔铁移动使触点断开,电流中断磁力消失,膜片在本身的弹性和弹簧片作用下又同衔铁一起恢复原位,触点闭合电路接通,电流再通过触点流经线圈产生磁力,重复上述动作。如此反复循坏膜片不断振动,从而出音响。图2.9为蜂鸣器的工作原理图:图2.9 蜂鸣器工作原理图而实验箱上的蜂鸣器是通过PWM的驱动发出响声的。图2.10是实验箱上的蜂鸣器的硬件连接图:图2.10 Embest 实验箱上蜂鸣器电路连接图2.2.6 Eint0中断按键的硬件电路及连接关系开发板上设计了2路按键电路,通过2个CPU的GPIO管脚各被1个10k的电阻上拉,在一般情况下,该GPIO的管脚电平为高,一旦按键按下GPIO的管脚电平将为低,可以通过程序轮询的模式或者中断的模式来获取GPIO的管脚电平的变化。图2.11是两个中断按键的硬件连接图:图2.11 Embest 实验箱上按键硬件连接图系统中用到了SB1202按键来表示外部中断的发生。当SB1202按键被按下时,触发eint0中断,并把中断的发生显示到控制台上。2.2.7 ZLG7290原理及硬件连接关系ZLG7290能够直接驱动8位共阴式数码管(或64只独立的LED),同时还可以扫描管理多达64只按键。其中有8只按键还可以作为功能键使用,就像电脑键盘上的Ctrl、Shift、Alt键一样。另外ZLG7290B内部还设置有连击计数器,能够使某键被按下后不松手而连续有效。采用IIC总线方式,与微控制器的接口仅需两根信号线。可控扫描位数,可以控制任一数码管闪烁。图2.12是ZLG7290的管脚示意图:图2.12 ZLG7290管脚示意图.2.8 5*4键盘及数码管硬件电路及连接关系电路采用支持IIC总线协议的芯片ZLG7290BS,该芯片能驱动8个LED数码管及扩展64位键盘。图2.13、2.14是各个电路连接图:图2.13 键盘控制电路图图2.14 键盘连接电路2.3 Linux2.4内核下驱动程序设计介绍2.3.1 设备驱动程序的作用众所周知,任何一个计算机系统的运行都是系统中软硬件协作的结果,硬件是底层基础,是所有软件得以运行的平台,代码最终会落实为硬件上的组合逻辑与时序逻辑;软件则实现了具体的应用,它按照各种不同的业务需求而设计,满足了用户的需求。硬件较固定,软件则很灵活,可以适应各种复杂多变的应用。可以说,计算机系统的软硬件互相成就了对方。但是,软硬件之间同样存在着悖论,那就是软件和硬件不应该互相渗透到对方的领地。为了尽可能快的完成设计,应用软件工程师不想也不必关心硬件,而硬件工程师也难有足够的闲暇和能力来顾及软件。也就是说,应用软件工程师需要看到一个没有硬件的纯粹的软件世界,硬件必须被透明地呈现给他们。而实现硬件对软件工程师的隐形的任务就落在了驱动工程师的头上。对设备驱动最通俗的理解就是“驱使硬件设备行动”。设备驱动与底层硬件直接打交道,按照硬件设备的具体工作方式读写设备寄存器,完成设备的轮询、中断处理、DMA通信、进行物理内存向虚拟内存的映射,最终使通信设备能够收发数据,使显示设备能够显示文字和图像,是存储设备能够记录文件和数据。图2.15为驱动程序所起作用的示意图:图2.15 驱动程序作用示意图由此可见,设备驱动充当了硬件和应用软件之间的纽带,它使得应用软件只需要调用系统软件的应用编程接口(API)就可以让硬件完成要求的工作。在系统中没有操作系统的情况下,工程师可以根据硬件设备的特点自行的定义接口,而在有操作系统的情况下,设备驱动的架构则由相应的操作系统定义,驱动工程师必须按照相应的架构设计设备驱动,这样,设备驱动才能良好地整合到操作系统的内核中。2.3.2 Linux设备驱动程序实现机制Linux系统中每一个设备都有一个驱动程序,设备驱动程序存在于内核中,不同的应用可以共享这些代码。Linux系统中,每一个设备体现为/dev目录下的一个文件。设备驱动程序封装了控制的细节,并通过一个特殊接口输出一个经典操作集。内核通过访问该设备的文件节点来调用相关处理函数。一个驱动程序就是一个函数和数据结构的集合,它的目的是实现一个简单的设备管理的接口,内核利用这个接口请求驱动程序控制设备的I/O操作。2.3.3 Linux设备的分类Linux系统的设备分为字符设备、块设备和网络设备三种。字符设备是指没有缓存的设备;块设备的读写则都有缓存来支持,只能以块为单位进行读写,并且块设备能够随机存取,即不管块处于设备的什么地方都可以对它进行读写,字符设备则没有这个要求;网络设备在linux里做专门的处理。而本系统用的硬件设备都是字符型设备。2.3.4 Linux下驱动程序的特点设备驱动程序是核心的一部分,像核心中的其他代码一样,出错将导致系统的严重损伤。一个编写不当的设备驱动程序甚至能够使系统崩溃并导致文件系统的破坏和数据的丢失。设备驱动程序必须为Linux核心或其他从属系统提供一个标准接口。如终端驱动可以为Linux核心提供一个文件I/O接口。设备驱动程序可以使用标准的核心服务如内存分配、中断发送和等待队列等。Linux设备驱动程序可以连接到核心中,当核心被编译时,哪些程序可以连接进内核是用户自己可以进行配置的。2.3.5 Linux设备驱动的相关操作(1) 主设备号和次设备号Linux系统为每个设备分配一个主设备号和次设备号,主设备号对应相应的驱动程序,次设备号标识具体设备的实例。每一类设备使用的主设备号是独一无二的,大部分常见的设备都静态分配了一部分主设备号,但是也可以由Linux系统自行分配一个主设备号。(2) 设备文件的操作Linux系统访问设备就像访问文件一样,例如打开设备使用系统调用open(),关闭设备使用系统调用close(),读写设备使用系统调用read()和write()。在Linux内核中,字符设备使用struct file_operations结构来定义设备的各种操作集合,结构中的各个函数分别响应同名或类似的名称的系统调用。本系统中,主要用到了open(),close(),read(),write()和ioctl()函数。ioctl方法提供用户程序对设备执行特定的命令的方法,比如设置驱动程序内部参数,控制设备操作性能等。(3) devfs设备文件系统devfs(设备文件系统)是由Linux2.4内核引入的,引入时被许多工程师给予了高度的评价,它的出现使得设备驱动程序能自主地管理它自己的设备文件。机体来说,devfs有如下优点: 可以通过程序在设备初始化的时候在/dev目录下创建设备文件,卸载设备时将它删除。 设备驱动程序可以指定设备名,所有者和权限位,用户空间程序仍可以修改所有者和权限位。 不再需要为设备驱动程序分配主设备号以及处理次设备号,在程序中可以直接给regster_chrdev()传递0主设备号以动态获得可用的主设备号,并在devfs_register()中指定次设备号。3 系统分析3.1 系统整体描述(1) 系统开发及运行平台 硬件平台:PC机,Embest Edukit-III实验平台,S3C2410 ARM9芯片 软件平台:cygwin模拟环境(2) 系统组成部分基本组成部分:输入、输出、控制、显示部分。如图3.1所示:图3.1 系统组成部分示意图 输入部分包括:AD的模拟输入信道AIN2旋钮、键盘的0-9的数字键、外中断SB1202按键。 输出部分包括:直流电机、4个发光led、蜂鸣器、数码管。 控制部分包括:键盘的除去0-9数字键外剩余的功能按键。 显示部分LCD显示屏上可以实时的显示输入、输出中各个部分的状态,通过控制台改变输入、输出时,能够实时的显示到LCD显示屏上,并且能够记录各个部分一定时间内的历史状态,可以通过控制台来查看各个部分的历史状态。3.2 系统功能分析本系统要实现在S3C2410 ARM处理器和嵌入式Linux操作系统平台上对工控组态软件部分功能的模拟,主要有以下几个方面的实现要求:(1) 驱动各个硬件模块在嵌入式Linux操作系统下正常工作的实现系统的正常运行,首先要求各个硬件设备能够正常的工作。在没有操作系统的情况下,我们可以通过直接对相关硬件的各个寄存器(最常用的是控制寄存器和数据寄存器)以及相关的I/O管脚进行配置和操作来使硬件设备工作。而本系统是运行在嵌入式Linux操作系统的平台下,我们控制硬件设备时要在Linux操作系统下进行相应的程序编写,这就要求我们利用操作系统提供的API来控制和使用硬件,而这个系统调用等编程接口不能直接和硬件设备打交道,这就需要硬件设备的驱动程序来连接硬件设备和操作系统的内核。所以,各个硬件设备能够在操作系统控制下正常的工作,硬件驱动程序起到了至关重要的作用。硬件设备的驱动程序的设计,要根据各个硬件的特点分别进行构思和设计,而且设计出来的驱动程序要具有普遍适用的性质,就是在应用程序中用到相应的硬件设备驱动时,应用程序设计者不必了解设备驱动程序的具体实现,也不必根据驱动程序的内部具体实现来设计应用程序。像ADC的驱动和EINT0的驱动,这两个硬件设备都涉及到了中断,所以在驱动程序的设计中要进行中断的注册,中断的处理等。(2) 通过输入设备和控制台正确改变硬件设备状态的实现通过输入设备正确的改变硬件的状态,需要驱动程序的设计的正确和合理,另外,应用程序中的数据逻辑也要符合系统的要求。比如,在旋转AIN2钮时,ADC转换后的值要对应的变化;按下SB1202按键后能够触发EINT0外中断的发生等。通过控制台的控制正确的改变硬件设备状态,是指按下控制台上的按键时,相关联的硬件设备要立即做出相应的响应。比如,按下按键“A”后,试验箱上的led会亮;按下按键“B”后,试验箱上的蜂鸣器会发出响声等。另外,还涉及到了控制台控制对某个硬件设备的数据输入方式,要做到能够正确流畅的进行数据输入方式的切换。比如,按下“F”,可以进行直流电机输入量的切换,按一下切换到外部硬件设备输入的方式,即AIN2的输入,再按一下就会切换到控制台输入的模式,即利用键盘上的“+”和“-”来增减电机的转速;而“C”键可以切换输入到数码管的输入模式,控制台上的“E”来进行循环增减,外部硬件设备为0-9的数字键作为外设输入模式的输入端。(3) 各个硬件设备正常运行而没有冲突的实现本系统集成了多个硬件设备一起工作,在保证单个硬件设备能够正常工作地基础上,当这些硬件设备组合到一起时,也能互不影响的正常工作。即某个硬件设备不会因为另一个硬件设备的启动或是状态变化而产生错误的结果或停止工作。这不仅需要在各自驱动程序中对寄存器的相应位的设置正确并且不改变其他位,也要求各个硬件驱动程序之间没有耦合关系,不会产生函数的调用及参数的传递等。另外还对应用程序中数据流逻辑的设计有一定得要求。例如,当按下相应的控制按键使蜂鸣器响起,在蜂鸣器响的过程中再按下控制led的按键,应该同能能够点亮led;在旋转AIN2改变电机转速的同时按下控制蜂鸣器的按键,蜂鸣器也能够即时的发出响声;在电机转动的同时,led、蜂鸣器、数码管等也应当能够正常独立的工作。(4) 在LCD显示屏上正确的显示出当前状态及状态变化的实现本系统一个重要的组成部分就是LCD显示部分。它上面会实时的现实各个硬件设备的当前状态,当某个硬件设备的状态发生变化时,也会实时的反映在LCD显示屏上。例如,LCD上会实时显示直流电机的转速,而用AIN2控制电机时,即使是旋转幅度很小的一下,也会产生很多个ADC转换后的值,而这些值又用于控制电机的转速,虽然不能把每个转速值都显示出来,但是要在视觉效果上不能产生太大的间断。这就要求对应用程序进行精心的设计,准确监控硬件状态变化,实现各个硬件设备状态在LCD屏幕上的实时正确的显示。(5) 键盘输入控制信息改变程序运行状态的实现通过键盘的取数,控制程序的开始、结束和中间的运行过程。控制台是由除去0-9的数字键的按键组成的,在程序的运行过程中,可以通过键盘改变影响程序的运行和硬件的状态。同时,能够把键盘实时取得的值作为系统的输入,动态的改变硬件的状态。在这里,值得提出的是按键的抖动,在应用程序中,采用了延时判断的方法去除抖动,实现键盘的实时控制。3.3 系统实现目标(1) 及时性外部硬件设备输入和控制键盘的输入要即时,即按下按键后立即获取按键的值并进行相应的操作;输出设备的输出要即时,这表现在电机转速、led、蜂鸣器以及数码管上,要快速的响应输入的信息;LCD显示要即时,即硬件状态有变化时就快速的显示到屏幕上,实时显示各个设备的状态。(2) 准确性外部硬件设备输入和控制键盘的输入的正确性,即输入的数据信息和控制信息要准确;输出的准确性,即输出设备能够准确的响应输入的控制;LCD显示的准确性,即准确的显示各个硬件设备状态的变化。(3) 稳定性系统的稳定性包括输入、输出的稳定性,以及各个硬件模块之间的独立性,能够互不影响的准确无误的工作,不会出现异常及不稳定的情况出现。4 系统设计实现4.1 系统概要设计4.1.1 系统总体框架设计本系统是在嵌入式开发平台上开发,并且基于Linux操作系统在S3C2410 ARM9处理器上运行的,是上层应用程序通过操作系统的API编程接口对相关硬件进行控制,这就需要一个中间层,也就是硬件设备驱动程序来建立上层应用程序和底层硬件之间的联系。这样,本系统的正常工作依赖于三个层次间的相互配合,这个三个层次是:应用程序(上层)、硬件设备驱动程序(中间层)、硬件设备(底层)。图4.1为系统的整体层次图:图4.1 系统层次图(1) 底层-硬件设备包括Embest EduKit III实验平台上的部分硬件设备:直流电动机、led发光二极管、蜂鸣器、数码

温馨提示

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

评论

0/150

提交评论