驱动编程

2024-09-19

驱动编程(精选5篇)

驱动编程 篇1

汇编语言在单片机程序开发中应用的非常普遍,但对于大规模的单片机程序来说,汇编语言的开发效率已不能满足要求,而C语言正好是效率和清晰结构的完美结合,在嵌入式程序开发中有无与伦比的优势。

传统的程序结构是线性的,CPU按顺序一条一条地执行代码,而事件驱动是程序控制的一种新的模型,其程序流程不是固定的,而由用户或系统的事件来触发什么时候执行哪段代码。事件驱动的程序比较容易扩展,且程序结构清晰,对用户操作响应及时。

本文指出了在C51单片机中开发中,C语言容易误解的几个方面;然后给出了C语言实现事件驱动的程序框架。

1 概述

传统的单片机程序大都用汇编语言编写,编写的程序代码效率很高,可以充分利用单片机的有限资源,对于单片机初学者来说也可以更深入掌握单片机的内部结构、指令系统,更容易理解单片机硬件系统同软件之间的对应关系。但有些项目或产品中对单片机的处理能力要求不高,对响应速度也不高,但单片机软件内部逻辑处理复杂,算法实现难度较大,比如实现较复杂的通信控制协议、复杂的数学运算等。对于这种情况,如果还采用汇编语言编写程序,则实现的复杂度很大,调试相当困难,难于保证整个软件质量;另外,代码量很大,使汇编代码难于阅读、改进和维护。因此对于这种情况,可以用C语言来代替汇编语言进行单片机软件开发。

C语言是一门中级语言,把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言代码效率不及汇编语言,但C语言有很好的表述能力来描述系统结构,对于开发人员来讲更容易把握软件的逻辑结构,更容易把精力花在解决实际逻辑问题上而不是浪费在汇编语言上下跳转的混乱中。C语言主要优点在于它的结构化设计、灵活的数据结构、代码的高效率、可移植性,这正是开发较大系统所必须考虑的因素。所以,在大型程序设计时,应该首先考虑使用C语言而不是汇编。

2 应用

C语言在单片机程序中的应用和在标准计算机中的应用有很多不同的地方,下面总结一下在应用中注意的问题。

2.1 同标准C语言的区别

不同体系单片机上的C语言和标准C语言大部分语法是相同的,但也会有细微的差异,因此在单片机上开发C语言程序时,要特别注意此体系单片机上的C语言同标准C语言不同的地方,比如Keil C51上的C语言有很多关键字同标准C语言上的不同,增加了data、idata、xdata等关键字。如果想让程序在不同体系的单片机上运行,这些不同的地方就要特别注意,具体差异一定要查阅对应的C语言手册。

2.2 数据结构

数据结构的应用是C语言最强大表达能力的体现,除了使用最基本的数据类型外,还可以使用用户自定义的数据结构。基本的数据类型包括整型、实数型、字符型等,自定义数据结构主要指结构体struct、枚举enum、共用体union等高级数据类型。在单片机C语言编程中,很多人只使用基本的数据类型,而不使用高级自定义数据结构。理由是使用高级数据结构会严重影响代码执行速度。其实,这是不正确的看法,下面通过比较基本数据类型和高级数据结构两种形式的数据访问代码的效率来论证。以C51单片机为例,程序如下:

上面对应的汇编代码由C51编译器内存模式采用大模式、代码9级优化所产生,注意查看“比较开始”,“比较结束”之间的语句1.1/1.2/1.3及2.1/2.2/2.3产生的对全局外部变量访问和对全局结构体变量成员访问汇编代码的差异。可以发现,1.1/1.2/1.3对应的代码形式完全一样,2.1/2.2/2.3对应的代码形式也完全相同,效率也相同,所以使用高级数据结构不会增加代码的开销,编译器会自动进行优化。因此,在代码编写时应尽量使用高级数据结构来组织信息,达到代码易于编写、易于维护的目的。

2.3 程序库的使用

标准C语言有很多的库可以使用,如stdlib、stdio等,利用语言本身提供的库可以重用大量标准功能,减少代码重复开发,如字符串操作等。但不用体系的单片机C语言库同标准C语言库是不同的,使用其中函授时应该搞清楚其中的区别,如函数名称相同,但参数顺序可能会不同。

另外,开发中很多人喜欢用自己编写的函数代替库函数,认为这些的代码效率高;其实库函数本身已经针对于单片机体系进行了优化,只要正确使用执行效率一般比自己重写的函数要快得多。因此,除非非常清楚库函数的实现机制及其存在的弊端,应尽量使用语言自带的函数库。

3 基本原理

3.1 基本概念

传统的程序是线性的,由主程序按照代码流程一直运行直到代码结束,程序流程是按照程序设计人员设计的流程执行。事件驱动是程序控制的一种新的模型,特别是在可视化用户界面方面应用广泛。事件驱动程序的流程不是固定的,程序只提供对各种事件的处理代码接口,而到底什么时候执行哪段代码由用户的操作事件决定。用户的操作事件是指用户同系统的交互事件,如通过鼠标点击某个按钮,按下键盘上的某个键,定时器到达等。程序只要提供对事件的响应代码就完成了软件的功能。

可以看出,事件驱动的程序组织围绕事件处理展开,更容易使程序模块化、结构化,并且各功能模块界限分明,便于扩展。

3.2 Windows事件模型

Windows操作系统是典型的事件驱动,单片机的事件模型也可以借鉴其实现。在Windows中,应用程序只需将设计好的窗体显示出来,剩下的工作主要是用户进行操作产生事件,不同的事件产生特定标识的消息,消息由Windows送入消息队列,再有Windows的user.dll模块把消息分发给应用程序的消息处理接口,应用程序根据事件进行不同的处理,显示响应给用户。图1是Windows事件驱动的模型图。

在这种模型中,应用程序只需处理其关心的事件,不需要耗时等待事件的产生,而由Windows统一进行调度,这样能充分利用CPU的处理能力,使系统对外界响应准确而及时。

4 驱动软件

在事件驱动基本原理基础上,借鉴Windows事件驱动模型,提出能应用到C51中的事件驱动软件架构。

4.1 总体架构

事件源是事件驱动的源头和动力,一般由中断或周期扫描产生事件,当发生事件时就把事件转变为标识事件的消息,放入对应的消息队列。处理函数检测到消息队列不为空时,依次取出消息进行处理,直到消息队列为空如图2。

4.2 事件源

事件源一般由中断或周期扫描产生,常见的有按键事件、串口事件、定时事件等。事件检测代码一定要精悍短小,耗时少,而对事件的具体处理可能会消耗较长的时间,一般放在主循环中处理。

按键事件可以采用周期扫描的方法,而周期扫描可以在时钟中断中进行,如时钟中断定时10ms。当定时中断到达时,扫描系统的所有按键状态,执行逻辑判别,如果发现有键按下,则产生按键消息,并将键值存入消息体。实际应用时还要注意按键的去抖处理等。

串口事件用中断的方法实现。用C程序编写好的串口中断处理函数进行串口线上字节的接收、缓存。串口通信协议一般以字节组成的数据帧结构进行传送,而控制协议中一般规定了帧头、帧尾等控制标志,在中断程序中就可以进行帧头帧尾的判别,直接将接收的字节组成完整的帧结构。这样,当判别到帧结束的时候,就可以形成“串口数据帧到达消息”送入串口消息队列。

定时事件采用时钟中断的方法实现。在时钟中断到达时,对各个定时计数器加1,如果定时计数器到达了预定的值,则说明定时时间到达,此时生成“定时到达消息”送入定时消息队列。

4.3 消息队列

消息队列用来暂存各种事件产生的消息,防止消息瞬间产生过多来不及保存而丢失。消息队列的设计有多种可选择的策略模型,可以采用全局一个消息队列;也可以根据不同事件类型各对应一个消息队列;或根据优先级设计几个消息队列。选用哪种策略要和系统实际需求结合起来选用。一般情况下,选用一个事件类型对应一个消息队列的模型比较合理,此模型处理逻辑清楚,并且可以根据事件的重要程度给定各个队列的优先级,如串口消息队列优先于按键消息队列,系统结构如图3:

每个队列采用先入先出原则。队列实现上可以采用链式动态分配结构,也可以采用静态数组循环结构。动态分配需要额外的内存分配、回收等损耗,访问时间有抖动,但可以充分利用系统闲置的缓冲区暂存较多的消息,减少了由于瞬间消息数量太大造成的事件丢失;静态数组访问速度很快,访问时间固定,但队列容量固定,必须选取合理的容量大小,在消息溢出率和内存利用率间取得平衡。队列中每个消息项可以用结构体实现。

4.4 处理函数

处理函数放在main函数的主循环中,连续循环调用。处理过程较简单:查看队列中是否有消息需要处理,如果有则取出消息,根据消息内容执行不同的函数即可。主函数结构举例如下:

主循环中三个函数分别用于处理串口消息队列、定时器消息队列、按键消息队列。根据消息优先级不同,队列的处理有所区别:对于高优先级的队列处理函数,要把所有的消息都处理完毕才返回;对于低优先级的队列处理函数,可以只处理一个消息就返回,这时主循环又会进入高优先级处理函数,如果有高优先级的消息则处理,如果没有则再次进入低优先级消息处理函数。这样就保证了高优先级的消息被优先处理。程序流程如图4。

5 结语

C语言逐渐成为嵌入式开发的主要编程语言,在C51系列单片机中的应用也越来越广,本文指出了C51上C语言编程的几个要点,在此基础上,给出了用C语言实现的基于事件驱动的编程模型,包括事件源产生机制、消息队列实现和优先级策略、消息处理函数结构。此模型逻辑清晰,具有较强的通用性,可以针对不同的应用情况进行扩展,有较强的实际应用价值。

参考文献

[1]胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,1996.

[2]侯俊杰.深入浅出MFC[M].武汉:华中科技大学出版社,2001.

[3]徐爱钧,彭秀华.Keil Cx51V7.0单片机高级语言编程与uVison2应用实践[M].北京:电子工业出版社,2004.

驱动编程 篇2

关键词:任务驱动 数控编程 实训

在数控编程课程设计实训教学过程中,引入任务驱动教学法,可以使实训指导教师在工艺和操作技术方面多加指导、多加启发,鼓励学生钻研和思索、革新和创造,不仅提高了学生的设计能力、绘图能力、编程能力,还可以锻炼其机床操作能力,为今后学生走上工作岗位奠定坚实的基础。

一、任务驱动教学法的含义

任务驱动教学法是一种建立在建构主义学习理论基础上的教学法。它将以往以传授知识为主的传统教学理念,转变为以解决问题、完成任务为主的多维互动式的教学理念;将再现式教学转变为探究式学习,使学生处于积极的学习状态,每一位学生都能根据自己对当前问题的理解,运用共有的知识和自己特有的经验提出方案、解决问题。采用任务驱动教学法,学生由被动地接受知识转变为主动寻求知识,由“要我学”转变为“我要学”,学生在完成“任务”的过程中能不断地获得成就感,从而增强学习的自信心,激发学习热情和兴趣,形成一个感知心智活动的良性循环,从而培养出独立探索、勇于开拓进取的自学能力。

二、课程的教学目的

通过课程设计,了解并掌握利用PRO/E软件对零件进行结构设计、计算机绘图的方法及用计算机辅助制造过程和方法,培养自动编程的技能,掌握用数控机床进行机械加工的基本方法,巩固数控加工编程的相关知识,将理论知识与实际工作结合起来,并最终形成独立从事数控加工程序编制的能力。

三、任务驱动教学法的实施

1.创设情境,提出任务

创设情境,是将研究学习的对象转换为现实生活中的情景,在情景中完成任务,会使学生对知识产生亲切感。教师可首先讲授相关的理论知识,然后将学生几人分成一组来完成所布置的任务(建议分组的人数不宜过多,一般以二到三人为宜。分组人数过多,学生会在其中滥竽充数),同时教师根据教学目的和教学内容明确本次任务,但在给学生分解任务时,要根据学生的能力和兴趣,由易到难、由简到繁,激发学生的兴趣。如:布置学生根据任务书提供的零件图及相关技术要求,用PRO/E软件完成零件设计、工程图绘制、零件工艺分析、加工工序卡的编制,使用自动编程软件,完成数控加工程序的编制,最后用数控机床加工出所设计的工件。

2.分析任务,展开新课

学生在接受了任务后,在教师的协助指导下,对所接受的任务进行分析、探讨,制订解决的方案或方法,用制订出来的方案或方法来完成所布置的任务。如在对零件进行详细分析的基础上,指导学生按照数控加工工艺原则,确定整个零件的加工工艺规程,确定毛坯,确定加工的工艺基准;拟订零件的工艺路线,包括确定各加工表面的加工方法、正确划分加工阶段、合理安排加工工序,选择工装、刀具、量具,并对其加工工艺参数进行确定,确定对刀点与换刀点。同时,对某一道相对复杂的工序,可指导学生首先在确定定位装夹方案的基础上,选择一个合适的夹具,完成本工序的加工。该夹具的选择应具有定位可靠、装卸方便、操作安全、方便省力、夹紧可靠且适当等特点,适用于数控机床的加工使用。

3.完成任务,总结评价

最后教师指导学生以分组完成任务的方式,将已经调试好的零件加工程序,存于3.5寸的软盘,将其导入数控机床,安装好所需刀具,夹紧工具,对刀找到编程原点,进行数控加工。但须注意的是,虽然在实训前教师讲解演示得比较详细,实训过程中也进行巡回指导,但学生在完成任务的过程中还是会遇到许多意想不到的问题,致使零件加工失败。这就需要教师引导学生找出问题所在,直至最后成功。同时,由于基础不一,学生的理解能力、操作能力有高有低。教师在检查学生加工的零件后,应根据他们各自的具体情况进行分析、总结,及时对其操作情况作出反馈和评价。对做得好的学生加以表扬、鼓励,对问题较多的学生,应重点指出问题所在,增强其判断能力,让其在良好的心理状态下学习下一课题。

四、运用任务驱动教学法应注意的问题

技工院校的机械制造及自动化专业教学应从培养学生的应用能力出发,在教学内容的安排与取舍上,应着重阐明实际应用价值,力求做到立足实践与应用,以能力培养为中心,使一般能力的培养与职业能力的培养相结合。因此,教师在设计任务时,一定要注意学生的基本素质与知识接受能力,充分考虑其现有的技能水平、认知能力和兴趣。切忌“太难”或“太容易”,同时要让学生充分发挥个人操作能力,独立完成任务。

驱动编程 篇3

电荷耦合器件CCD(ChargeCoupledDevice)作为20世纪70年代发展起来的物性型传感器,是一种集光电转换、电荷存储、电荷转移为一体的半导体传感器件,具有体积小、重量轻、寿命长、分辨率高、响应速度快、性能稳定、抗电磁干扰性好等优点,因而被广泛应用于几何尺寸测量、加工过程检测、在线模式识别、军事侦察、光学摄影、智能传感等方面[1]。随着CCD应用范围日益广泛,对确保CCD稳定高效工作的CCD驱动设计也提出了更多、更高的要求。实现方便快速地产生CCD驱动时序,已成为CCD应用的关键。传统的时序发生器实现方法如单片机驱动法、EPROM驱动法、直接数字驱动法等,由于速度和功能上的限制,已不能满足CCD应用高速化、小型化、智能化发展的需要[2]。因此,结合实际应用需要,设计了基于可编程逻辑器件设计法的线阵CCD驱动时序电路。

1可编程逻辑器件设计方法

可编程逻辑器件是在20世纪80年代迅速发展起来的一种新型集成电路,随着大规模集成电路的进一步发展,出现了PAL和GAL逻辑器件,复杂可编程逻辑器件(CPLD)就是在此基础上发展起来的,跟分立元件相比,CPLD具有速度快,容量大,功耗小,集成度高,可靠性强等优点。基于CPLD器件的可编程设计法就是使用与器件对应的开发软件,结合模块化思想设计电路系统,这种设计方法实现的系统集成度高、速度快、可靠性好,系统每一功能模块完成后可单独仿真,整个系统完成时也可在计算机上进行仿真,不需要外部测试仪器就可以检查修改设计中的问题。利用ISP技术后,电路系统的硬件设计变得像软件设计那样灵活而又易于修改[3]。

2 CCD驱动电路设计

2.1 CCD驱动电路的时序要求

TCD 132D是Toshiba公司生产的一种高灵敏度、低暗电流的线阵CCD图像传感器,TCD 132D内部包含一列1024像元的光敏二极管和两列525位CCD电荷转移寄存器,内部集成有驱动电路和信号处理电路。器件工作在5V驱动(脉冲)和12V电源条件下,每个像元的尺寸为14μm长,14μm高,中心距也为14μm,光敏元总长为14.336mm,可满足一般测量要求[4]。图1为其驱动脉冲波形图。

从驱动脉冲波形图可以看出,一个sh移位脉冲的周期对应于一次信号电荷的输出,当sh脉冲为高电平时,正值传输电极下均形成深势阱,同时sh的高电平使传输电极下的深势阱与存储势阱沟通,像敏元中存储的信号电荷包通过转移栅转移到模拟移位寄存器电极下的势阱中。当sh由高变低时,sh低电平形成的浅势阱将存储栅势阱与传输电极下的势阱隔离开,存储栅势阱进入光积分状态,而模拟移位寄存器将在传输脉冲的作用下驱使转移到该电极对应势阱中的信号电荷定向转移,并经输出电路输出。各驱动间时序要求如图2所示[5]。

2.2CCD驱动时序的VHDL实现

QuartusⅡ是Altera公司推出的第四代可编程器件的综合开发设计平台,它提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,可以生成图形文件,文本文件和波形文件,并支持层次化设计和自顶至下(Top-Down)的模块设计方法,支持VHDL语言。可以编译并形成各种能够下载到各种CPLD器件的文件,同时还可以进行仿真以检验设计的可行性。

VHDL(VHSIC HDL)语言是美国国防部开发的一种硬件描述语言,其中VHSIC为“Very Hign Speed Integrated Circuit”即高速集成电路。所谓硬件描述语言,就是可以描述硬件电路的功能,信号连接关系及定时关系的语言。它能比电路原理图更加有效地表示硬件电路的特性。由于它与硬件工艺无关等特性,用来设计电路时可大大提高开发效率。

在本驱动电路设计中,使用4 MHz的CP作为输入激励脉冲信号,积分时间预设为2.5 ms。下面给出用VHDL语言实现TCD132D驱动时序的部分程序:

2.3驱动电路时序仿真与实验测试

采用EPM7064STC44-10作为目标器件,用VHDL语言描述整个设计,并在QuartusⅡ5.1集成环境下完成整个设计的输入、编译、仿真,最终生成编程烧录文件。在仿真过程中,将CP的周期设为250 ns,即CP的频率为4 MHz。仿真波形图如图3所示。

从仿真图中可知,sh高电平脉冲宽度为4个CP周期即1 μs,fm、fccd频率分别为2 M、0.5 M,恰好是TCD132D手册中的典型驱动频率要求,可见符合设计要求。

由于sh的时间比较长(在本设计中设定为10000个CP周期),在仿真图中不能完全表现出来,然后对实际电路使用示波器(型号为RIGOL DS5152M)进行测量,实测波形图如图4、图5所示,对比可得出仿真结果和实测结果吻合。电路可稳定输出1M的像元同步脉冲(它与CCD驱动脉冲同频率),此处行同步脉冲周期即CCD积分时间为1.156 ms,实际应用时由于考虑到光照强度的问题,积分时间没有设为2.5 ms,而是1.156 ms(编程时r最大值取为4 624),这里即体现了积分时间可调的可编程设计思想。

3结论

为实现CCD图像采集,采用CPLD设计CCD驱动电路,具有体积小、功耗低、速度快、抗干扰强等特点,VHDL硬件描述语言,能够将CCD驱动时序可编程化。在设计完成后,可随时对CPLD 重新编写来产生不同的时序,以满足各种型号CCD 的需要和同一CCD的各种不同应用需要,而不必更改与CPLD 的外部连线,有利于驱动电路的调试和升级。

参考文献

[1]冼进.Verilog HDL数字控制系统设计实例.北京:中国水利水电出版社,2007:232—235

[2]元华明.高分辨率全帧CCD驱动电路技术研究.西安:中国科学院研究生院,2006:7—10

[3]求是科技.CPLD/FPGA应用开发技术.北京:人民邮电出版社,2005:23—35

[4]苏波,王纪龙,王云才.线阵CCD驱动电路的研究.山西:山西师范大学学报(自然科学版),2002:13—17

驱动编程 篇4

一、教学现状分析

(1) 生源素质差。教学对象素质较低, 主要表现在文化理论基础差, 自控能力弱, 学习主动性差等几方面。而生源的这些问题, 给教学带来了很大的影响。

(2) 教学设备简陋, 教学条件差, 实践环节薄弱。数控专业是一门实践性很强的专业, 需要学生在学习理论的同时及时地进行实践操作以加深理论理解。如果不能及时地理论联系实际地教学, 那就很难有好的教学效果。而众多的学生实习需要有数量较多的数控设备, 这使许多学校力所不及。

(3) 师资培养跟不上技术发展的需要。目前大多数学校的老师都是由其他课老师转型而来, 不但在实践操作能力上不行, 在理论上也边学边教, 任课老师需要学习的知识很多, 理论与实践提高的空间还很大。虽然教师学习的热情很高, 花的气力也很大, 但由于教学任务重, 培训机会少, 知识更新慢, 跟不上技术发展的需要, 很难适应教学方面的要求。

二、任务驱动教学法在数控编程与加工技术教学中应用的必要性

《数控编程与加工技术》课程是中职模具与数控专业的一门专业课程, 以培养学生数控编程与加工技能为主要目标。该课程涉及数控加工工艺、数控编程与各种数控设备的操作等多方面知识和技能, 涵盖内容广, 实践性很强。在传统教学模式中, 《数控编程与加工技术》课程理论教学与实践教学是分开教学, 先理论后集中实训, 容易造成学生知识脱节, 理论课上掌握的知识无法应用到实训中, 导致实训期间重复讲解理论知识, 费时费力。所谓任务驱动教学模式, 是教师把教学内容设计成一个或多个具体的任务, 让学生通过完成一个个具体的任务, 掌握教学内容, 达到教学目标。它是一种学生主动学习, 老师加以引导的教学方法。在这个过程中, 学生拥有学习的主动权, 教师不断地挑战和激励学生前进, 从而使学生真正掌握所学内容, 并通过此任务来举一反三, 收到良好的学习效果。

三、如何实施任务驱动教学法

(1) 教学内容的调整。根据中职教育的特点, 课程教学内容要围绕“必需、够用”的原则来进行, 教材以讲明基本概念、基本原理为度, 删去一些烦琐的计算过程和一些过时的教学内容。例如, 由于自动编程在数控编程中已得到广泛应用, 可将教材中一些复杂曲线的数学处理等内容进行压缩;因穿孔纸带在企业中已不使用, 这部分内容也可以删减。由于中职学生主要是技能的培养, 因此, 有必要对理论性太强、岗位实用性较低的内容进行删减, 突出实践技能性强的教学内容。

(2) 教材的建设。教材是教学改革的物化成果, 在确定了课程基本内容后, 教材的编写就成为有效提高课程教学质量的重要方式之一。在《数控编程》课程教材的建设中, 应以课程的基本要求为基础, 从培养实用型、技能型、技术应用型人才出发, 遵循“必需、够用”的原则, 力求做到“有用、实用、好用”。

(3) 任务驱动教学法实例分析。传统的教学方法, 在讲解数控车削加工基础这部分内容时, 是以教师讲解为主, 学生总觉得一听就懂, 下课就忘记, 不直观。利用任务驱动教学法, 我们可以将这部分内容分为3个任务来进行教学, 分别是:认识数控车床, 数控车床的手动车削, 加工程序的识读、输入和编辑。 (1) 任务一:认识数控车床。提出任务知识目标:掌握数控车床的组成及工作过程, 了解数控车床的特点及分类;技能目标:能简述数控车床各部位名称, 简单学会正确使用数控车床。在实施过程中可以采取现场教学, 先让学生带着问题观察数控车床, 再由教师进行讲解, 从而引出相关知识点。例如:数控车床的组成及工作过程、数控车床的分类、数控车床的加工特点等。 (2) 任务二:数控车床的手动车削。先提出这个任务的知识目标是掌握操作面板上各功能按钮的含义和应用, 数控车床开机和关机步骤;技能目标是熟悉数控车床的基本操作, 学会数控车床手动车削工件。 (3) 任务三:加工程序的识读、输入与编辑。提出任务的知识目标:掌握数控加工程序的结构与指令代码的基本含义, 了解数控车床的机床坐标系和工件坐标系。技能目标:学会识读加工程序, 学会加工程序的输入和编辑。任务二激发了学生学习这一任务的兴趣, 很自然地就能引入任务三。给出任务二中所车削工件的加工程序, 教师操作车床演示自动加工过程, 由此引出数控加工程序的概念, 再次激发学生学习编写程序的兴趣。当学生带着问题来学习数控加工程序及编制过程, 坐标系统与运动方向的规定、程序结构等相关理论知识就不会觉得枯燥。这样, 一个个问题环环相扣, 在教学过程中教师循循诱导, 各个知识点紧密联系不脱节。

在完成这3个任务的过程中, 教师的循循诱导起了非常关键的作用。要让学生在解决一个问题的同时找出另一个问题, 带着问题来完成任务, 在完成任务的过程中找到答案。数控机床解决问题的关键, 就是把人解决问题的步骤用一种特殊的语言 (数控加工程序) 描述出来, 即把大脑思维的每一步写出来。这是数控程序设计教学中的一个重点, 也是一个难点, 需要教师在教学过程中逐步引导训练学生, 使学生逐渐学会分析问题、解决问题的方法和步骤。

实践证明, “任务驱动”教学法在中职学校数控车床编程与加工技术教学中的运用是成功的, 总体上学生的学习质量有了明显提高。

参考文献

[1]崔兆华.数控车床加工工艺与编程操作[M].南京:江苏教育出版社, 2010.[1]崔兆华.数控车床加工工艺与编程操作[M].南京:江苏教育出版社, 2010.

[2]关亮.数控车床操作与编程技能训练[M].北京:高等教育出版社, 2005.[2]关亮.数控车床操作与编程技能训练[M].北京:高等教育出版社, 2005.

驱动编程 篇5

与杆支撑并联机构相比,丝驱动机构具有结构简单、惯性小、平动工作空间大和运动速度快等特点。从20世纪90年代初至今,各国研究人员纷纷开展这方面的研究工作,并取得了一批瞩目的研究成果。

本研究基于丝驱动动机构的控制系统,通过采用C++Builder和MATLAB混合编程的方式实现机构在空间的活动范围以及在某空间位姿与悬丝拉力之间的关系的编程研究,具有相当重要的现实意义。

1 C++Builde r与Ma tla b混合编程的方法

丝驱动的控制系统需要大量数据的传输和高精度计算。因此, 用C++Builder灵活高效的界面开发及数据库管理能力和Matlab强大的计算功能进行有机的结合, 实现混合编程, 将极大地提高运行效率和可操作性。因此,在软件系统进行调试仿真时,我们采用C++Builder与Matlab混合编程的方式来实现。

通过Matlab在后台进行数值计算与图形处理,将两者结合进行混合编程,可以直观的显示控制系统的力空间及位姿空间,也方便调试和仿真。

Matlab与C++Builder接口实现有以下几种方案:

(1)基于COM技术,利用Matlab引擎(Engine),采用客户机/服务器(Client/Server)模式,实现与Matlab的交互。具体应用中,由Matlab作为Active X服务器在后台运行,而应用程序作为前端客户机通过Matlab引擎进行交互。应用程序将数据和命令信息通过引擎传送到Matlab环境进行处理,Matlab将处理后的结果通过引擎回送给应用程序。这种结合方式需要Matlab在后台运行,离不开Matlab环境。

(2)基于OLE技术,Matlab提供一个自动化对象(外部名称为Matlab.Application),应用程序通过创建一个Matlab OLE自动化对象来操纵Matlab,从而实现交互,这种方法同样离不开Matlab环境。

(3)利用Matlab C Math Library或Matlab C++Math Library调用Matlab函数或用Matlab的mcc编译器将Matlab的.m源文件翻译为.cpp的源文件,然后在C编译器中调用

(4)用Mideva将.m文件翻译为cpp代码,然后在C编译器中调用。

(5)按照Matcom的语法,在BCB中直接书写matlab语句。

其中,通过方法(1)、(2)生成的程序需要系统安装Matlab才能正常运行,而由方法(3)、(4)、(5)生成的程序则没有这样的要求,它能够以独立执行程序的形式运行,即使客户没有安装Matlab也可以运行。但是方法(3)不能利用Matlab中丰富的图形句柄处理函数,对于试验台软件系统来说,是不符合要求的。而方法(4)、(5)则支持大多数的Matlab语句,包括图形功能。因此,我们采用(4)、(5)相结合的方式,实现Matlab与C++Builder的混合编程,对软件系统进行调试与仿真。

本文采用方法(4)中提到的第三方工具Matcom。Matcom(又称Mideva)是MathTools公司为Matlab开发的.m文件高效解释和调试IDE,它提供了Matlab中.m文件与其他高级语言的接口,可以将Matlab中.m文件翻译为C++源程序,并可以编译为.dll文件或脱离Matlab环境独立运行的可执行程序(.exe文件)。具体的实现步骤如下:

(1)利用C++Builder编写主程序和主界面。设计调用流程,实现调用方法,建立好与数据库的连接。

(2)利用Matlab编写.m文件的数值处理程序与图形绘制程序。

(3)启动Matcom,将编写的.m文件载入,选择Compile to exe功能,将载入的.m程序编译。在Matcom工作目录下的Release文件夹里能找到翻译为文件名.cpp、g_文件名.cpp以及文件名.h和文件名.exe的四个文件(如果Matcom的Configration菜单中选中Debug,则将这些文件输出在Matcom的工作目录下的Debug子目录下)。

(4)将Matcom安装目录下的lib文件夹里的MATLAB.h和v4500b.lib文件添加到C++Builder对应的Include和lib目录里。这两个文件包含了Matlab中定义的类型原型、常量等,并且众多Matlab函数都由其实现。

(5)查看由步骤3生成的文件名.cpp和文件名.h文件,根据系统要求和实现功能作适当修改。

(6)将修改好的文件复制到C++Builder的应用工程文件目录下,在需要加入这个程序的函数单元中添加#include“MATLAB.h”和#include“文件名.h”这两行代码,就可以进行编译了。

图1为C++Builder与Matlab混合编程实现软件系统调试仿真的结构图:

2 系统的可行空间和可控空间

可行工作空间指满足运动平台所受力平衡和力矩平衡,且各根丝具有正拉力值的所有运动目标物位姿的集合。

由于悬丝只能承受拉力而不能承受压力,所以丝驱动机构必须在一定的预紧力下工作,同时,由于悬丝材料的限制,只能承受一定的最大拉力,否则就会被拉断。假设悬丝的最小预紧力为fmin,悬丝能承受的最大拉力为fmax。那么,满足f∈[fmin, fmax]的所有f (f∈R+)是可接受力。

可控工作空间指运动平台承受力满足f∈[fmin, fmax]的所有位姿的集合。可控工作空间,是在可行工作空间的基础上进行拉力范围限制。

从可行空间和可控空间的定义我们可以看出,可控空间是可行空间的一个子集,求解可行空间和可控空间的原理是相似的———通过力平衡方程,解得的结果中,取力为正的那部分解所对应的空间就是可行空间。而可控空间则是在可行空间中,取力满足最大拉力与预紧力之间值所对应的姿态空间。因此,在软件实现中,具体就变为求解力平衡方程的问题。

根据理论研究,丝驱动并联机构运动平台在某个位姿保持静止,必须满足如下力和力矩平衡方程:

式(1)是一个非齐次线性方程组,全部解F可以写成

当丝驱动机构满足矢量封闭原理时,对运动平台不同姿态,方程JTH=0在项目要求的姿态范围内,都能找到一个H (H>0或H<0),无论H>0或H<0,总能通过改变λ的值,使得公式(2)的结果为正,也即总能找到一组全为正力F,使丝驱动并联机构满足力平衡。

由于悬丝承受的拉力有一个范围,如果不能找到适当的λ,使得力取值在悬丝承受的拉力范围内,就说明,在这个姿态下无法满足力平衡,也就是说,这个姿态无法达到。

根据试验台的技术指标,我们可以取一个稍大的范围包含试验台的要求范围。在计算中,我们可以取一个适当步长,从最小值开始,循环相加直到范围超过最大值停止。在姿态参数以特定步长循环中,嵌套一个力方程求解循环,当满足力为正时,说明这个姿态是可以达到的。可控空间是包含在可行空间内,两个空间的求解原理相同,在软件系统中,用户关心的是可控空间范围,因此,将求解可行空间中的力的适用范围取一个最大最小值,就可以解算出可控空间范围。

3 C++Builde r和MATLAB混合编程实现力和空间的状态图绘制

通过C++builder与matlab的混合编程,调用matlab绘制的图形,显示在软件系统中,用户可以查看感兴趣的参数变化曲线,并可以根据需要以指定格式保存在计算机中。下图为力变化曲线图子界面:

拉力以及速度变化曲线的界面显示与此类似。

3.1可行空间

由位姿参数计算得到各丝某一组拉力如下:

调用可控空间图如图3所示:

调用可控空间图如图4所示:

4总结

本研究将C++Builder强大软件系统开发能力与MATLAB强大的数据运算和处理能力结合起来,并尤其突出了MATLAB的图像显示功能,对悬丝控制系统的力和空间进行了仿真,仿真结果验证了理论数据,取得了很好的效果。本研究将控制系统中复杂的数据输出以图形化的方式显示,对类似系统的开发也具有一定的参考价值。

摘要:某丝驱动控制系统, 是当前机械研究中的新领域。目前在国内还停留在理论阶段, 其难点在于确定6根丝控制下的机构其位置姿态与悬丝拉力大小之间的关系。本文采用C++ Builder和MATLAB混合编程的方式, 利用MATLAB软件绘制出悬丝受力范围和目标物所能到达的空间范围, 能直观的展示给用户。

关键词:丝驱动,控制系统,空间范围,C++ Builder,MATLAB

参考文献

[1]郑亚青.6自由度绳牵引并联机构的运动学参数标定[N].华侨大学学报, 2006, 4 (27) .

[2]刘雄伟, 郑亚青.6自由度绳牵引并联机构的运动学分析[N].机械工程学报, 2002, 12 (38) .

[3]Cong Bang Pham, Guilin Yang, Song Huat Yeo.Dynamic analysis of cable-driven parallel mechanisms[C]//International Conference on Advanced Intelligent Mechatronics Monterey.California:[s.n.], 2005.

[4]范伟亮, 杨景曙, 赵义正.基于C++Builder与MATLAB混合编程的可视化仿真研究[J].现代计算机.2007 (273) :71-73.

[5]于红华, 熊予莹, 任斌, 赵智昊.C++Builder与Matlab、Mideva接口编程及其实现光谱仪改造[J].电脑开发与应用, 2002, 15 (10) :2-4.

[6]扈晓, 任志良, 李少慧.Matlab应用程序接口在C++Builder中的使用[J].软件技术.2002, 21 (1) :33-35.

【驱动编程】推荐阅读:

自动编程06-01

编程游戏06-21

编程控制06-22

编程平台07-11

编程模式08-26

小学编程08-27

串口编程08-29

编程理论09-19

Python编程07-15

CAM编程05-08

上一篇:海上风机下一篇:左心耳封堵术