数控钻攻铣加工中心控制系统设计书.docx
《数控钻攻铣加工中心控制系统设计书.docx》由会员分享,可在线阅读,更多相关《数控钻攻铣加工中心控制系统设计书.docx(17页珍藏版)》请在冰豆网上搜索。
![数控钻攻铣加工中心控制系统设计书.docx](https://file1.bdocx.com/fileroot1/2023-2/13/b4972936-677e-458e-b41e-5321401c3499/b4972936-677e-458e-b41e-5321401c34991.gif)
数控钻攻铣加工中心控制系统设计书
数控钻攻铣加工中心控制系统
V1.0
设计说明书
目录
1前言3
1.1编写目的3
1.2背景3
2系统设计4
2.1结构4
2.2系统内核5
2.3驱动程序6
2.4驱动程序模型8
2.5I/O请求包(IRP)10
3功能实现设计12
3.1驱动程序中实现I/O功能12
3.2中断机制12
3.3应用程序与驱动程序之间的通信16
3.4驱动程序与应用程序之间的通信16
4并口驱动程序开发17
4.1系统组成17
4.2驱动程序开发18
5总结18
1前言
1.1编写目的
随着经济和社会的发展,中小批量生产的趋势曰益增强,而且对精度、形状的复杂程度、效率和效益等也提出了更高的要求。
这就需要数控技术不断发展和提高。
数控技术的发展也十分迅速且具有了一些新趋势,如:
开放式智能化的数控系统;5轴联动加工;数控加工的网络化;“软”开放式数控技术等。
本公司专门成立了数控钻攻铣加工中心研发小组,不仅在硬件上加强优化,同时也借助于软件开发实现数控中心的升级,编写本说明书同时为开发者提供研发实录,并为今后再次改造升级提供历史资料。
1.2背景
当今世界数控系统市场上的CDE控制器制造商生产的钻攻铣加工中心控制系统,大多是专用设备,在结构上提供给用户有限的选择,用户无法对现有数控设备的功能进行修改以满足自己特殊需求;各种厂商提供给用户的系统的操作方式各不相同,用户在培训人员、设备维护等方面要投入大量的时问与资金;当今的加工中心控制系统处DNC和FMS环境中,同时还与CAD/CAM,CAPP等系统实现通信,过去的封闭式加工中心控制系统系统,没有共同的编程语言,缺乏标准的人机接la。
上述这些问题都严重阻碍了加工中心控制系统制造商、系统集成商和用户采用快速而有创造性地解决当今制造环境中数控加工和系统集成的问题。
所谓开放性数控,是指制造商、系统集成者、用户都能够自由地选择加工中心控制系统装置、驱动装置、伺服电机、应用软件等数控系统的各个构成要素,采用规范的、简便的方法将这些柯成要素组合起来,以更改、添加加工中心控制系统装置的功能,并能够实现整个装置的经济化、实用化、和简单化。
数控系统的Pc化是实现丌放式数控的比较现实的途径。
PC从产生到现在,其可靠性和计算能力飞速增长,硬件已完全实现标准化,这些使得它更加适合于在工业环境下使用。
Pc具有充足的支持软件来改善加工中心控制系统系统的用户界面、图形显示、动态仿真、数控编程、故障诊断、网络通讯等功能。
;利用PC丰富的程序开发工具,机床制造商和用户可以采用通用的编程语言编制软件模块代替系统的原有硬件模块,便于厂商添加具有自己专有的技术模块。
2系统设计
在Windows2000操作系统中进行钻攻铣加工中心的实时控制,可以通过开发底层的设备驱动程序下实现,考虑到经济性、实用性和实时性要求不高的条件下,本系统采用前者。
Windows2000系统是基于WindowsNT构架,并在此添加了即插即用(PIlP)和电源管理(Power)等,该系统在安全性和稳定性比Windows9x操作系统有很大的提高。
使用DriverStudio开发工具开发WDM(WindowsDrivermodle)驱动程序,也采用分层设计和多线程原理。
2.1结构
Windows2000操作系统分用户模式和内核模式。
用户模式主要包含安全子系统、Win32子系统和POSIX子系统等。
内核模式主要包含:
I/0管理器、即插即用(PnP)管理器、电源管理器、硬件抽象层、内存管理器、运行支持、进程管理以及对象管理器和安全引用监视器等。
该操作系统中使用两种运行模式,内核模式对应CPU的Pan#(O极环),用户模式对应CPU的Pan93(3极环).应用程序一般运行在用户模式下,驱动程序运行在内核模式下。
组件图
在用户模式下,Windows2000采用了保护措旌,防止特权指令的执行和对硬件的直接操作,保护操作系统的安全性和稳定性。
在内核模式下,驱动程序实现对硬件设备接口功能的封装,通过驱动程序来操作硬件,因此,在内核模式中运行的程序是操作系统最信任的部分,直接影响到系统的安全性和稳定性。
2.2系统内核
在操作系统内核中,开发硬件设备驱动程序主要涉及三部分:
I/0管理器,微核层和硬件抽象层。
①I/0管理器
I/0管理器,负责操作系统加子系统管理。
它通过发送数据包(IRP),异步完成加操作。
对于设备驱动程序来说,I/0管理器负责为核心模式驱动程序提供体系结构,为这些驱动程序提供支持,如接收用户的请求、与用户交换数据、内存映射、挂接中断、同步等工作都由加管理器来完成。
事实上,当核心模式驱动程序动态装入系统后,这个驱动程序可看作是I/0管理器的一部分。
I/0管理器管理模式如所示;
I/0管理器
②微核层
微核层是CPU自身的理想化视图,提供以下管理机StJ:
中断和异常处理、线程调度和同步、多处理机同步、定时控制等。
操作系统高层部分利用微核层提供的服务,可以忽略底层CPU体系结构的不同,因此,设备驱动程序和高层操作系统组件可以不考虑与底层CPU之问的差异,使得驱动程序可以在体系结构不同的CPU上工作。
③硬件抽象层
硬件抽象层(HAL)是Windows2000操作系统中独特的地方,可以理解为硬件平台的抽象化,用不是CPU自身一部分的硬件抽象模型来代表其余部分,使得操作系统不依赖于特殊硬件平台或体系结构。
HAL层提供了可用系统资源的标准模型,以及特定硬件平台功能的标准视图,向外提供了一组标准接口,其它可执行部件通过标准接口访问资源,从而实现了硬件的“抽象化”。
这些标准接口,实际上就是一组定义很好的函数,各种系统组件使用HAL函
数与CPU外的硬件打交道。
地址。
函数基本上把平台特定细节对系统其余部分
隐藏起来,从而屏蔽了不同硬件平台间的差异性。
2.3驱动程序
在Windows操作系统中要进行硬件中断实时处理,需要开发相应的设备驱动程序(*.SYS)。
设备驱动程序实现了管理计算机硬件和内核对象的软件接口,用户若需要直接访问内核对象和硬件资源,就必须通过驱动程序来实现这一请求。
在Windows2000中,内核使用一个名为“加管理器”的系统部件具体管理和协调所有的内核模式驱动程序。
Windows2000内核使用基于对象的概念管理所有的系统部件和内核驱动程序。
在内核中每个驱动程序拥有至少一个“设备对象”来描述其控制的设备。
Windows2000是采用分层的驱动结构,其分层结构如图所示:
分层机构图
在最高层,WIN2000支持用户模式,内核模式两种驱动程序,从名字上来看,用户模式驱动程序是运行在用户模式的系统级代码,内核模式驱动程序使用系统级代码编写,且运行在内核模式下,因为内核模式允许直接访问硬件,这些驱动程序被用来直接控制硬件。
向下移动一层,内核模式驱动程序可被进一步的分成两种,遗留模式的驱动程序和Windows驱动模式的驱动程序(WDM)。
遗留模式的驱动程序需要去侦测硬件和与I/O子系统连接,这些遗留模式的驱动程序可被移植到WIN2000(和WIN98)上。
Windows驱动模式的驱动程序支持即插即用,电源管理,热拔插,自动配置。
一个好的Windows驱动模式的驱动程序可以在WIN2000和Win98上使用,虽然微软不保证二进制兼容,但可以再用WIN98DDK编译一遍就可以使用了。
再向下移动一层,遗留模式的驱动程序和Windows驱动模式的驱动程序可被进一步的分成三种:
高层,中间层,低层。
顾名思义,高层驱动程序依靠中间层和低层驱动程序去完成工作,中间层驱动程序则依靠低层驱动程序去完成工作。
高层驱动程序包括文件系统驱动程序(FSDs),依次翻译程序请求成为特定的驱动器请求,当低层的驱动程序的服务已经准备好的时候它也是需要的。
中间层驱动程序包括磁盘镜像驱动器,类驱动器(Class),迷你驱动器(MINI),过滤驱动器(FILTER)等。
这些驱动器位于低层驱动器和高层驱动器之间。
类驱动器是对代码重用的一次尝试,因为一种特定设备有多个驱动程序,它们之间大部分是相同的,这些相同的部分被作为一个类驱动器和其它部分分开。
例如:
所有的IDE驱动器共享大部分的代码,这样就只用一次编写好这些公用的代码,把它作为一般的类驱动器加载。
对于一个指定的设备,我们就只用编写以类驱动器为基础的迷你驱动程序就可以了。
过滤驱动器可以截取程序对存在的驱动器为基础的迷你驱动程序就可以了。
过滤驱动器可以截取程序对存在的驱动程序发出的请求。
在请求到达驱动程序之前,它给我们一个更改请求内容的机会。
事实上,在Windows驱动模式的世界中,中间层驱动程序也是由基本的驱动程序所组成,这些驱动程序可能既不是类驱动器,也不是迷你驱动器,但是,它们纵是扮演着转换抽象的I/O请求到低层物理驱动器代码的角色。
低层驱动器包括硬件和总线的控制器。
例如:
SCSI适配器是一个低层驱动器,这些低层驱动器和HAL于硬件结合紧密:
在WDM中低层驱动器包括物理驱动器的概念、行为。
这些物理驱动器与一个或者多个功能驱动器结合。
2.4驱动程序模型
WDM(WindowsDriverModule)是Microsoft公司力推的全新驱动程序模式。
它的运行平台是windows98/NT/Me/2000/XP。
作为操作系统的一部分,它运行在Windows内核模式,可以执行特权指令,对任何的I/O设备有全部的访问权。
如与以往的驱动程序不同,WDM是模块化的、分层次类型的驱动程序结构。
它还支持USB、IEEEl394,ACFI等全新的硬件标准,支持即插即用,并引进了功能设备对象FD0(FunctionDeviceObject)和物理设备对象PDO(PhysicalDeviceObject)两个新类来描述硬件,一个POO对应一个真实的硬件。
一个硬件只允许有一个PDO,却可以拥有多个FDO。
在与应用程序通信时,系统为每个用户请求打包形成一个IO请求包fNIP:
IORequestPacket)结构,将其发送至驱动程序,并通过识别IRP的PDO来区别是发送给哪个设备的。
内核通常通过发送IRP来运行驱动程序中的代码。
在驱动程序的加载方面,它既可以通过符号名也可以通过一个128位的全局唯一标志符GUID(GloballyUniqueIdentifier)实现驱动程序的识别。
此外,以往一些设备要在两个不同的平台上运行,就需编写截然不同的代码,现在只要编写一个WDM驱动程序,分别编译,并写好安装文件就可以了。
一个WDM驱动程序通常由驱动程序初始化、创建和删除设备、处理Win32打开和关闭文件甸柄的请求、处理、Win32I/O请求、访问硬件、串行化对设备的访问、调用其他驱动程序、取消I/O请求、超时I/O请求、处理一个可热插拔的设备被加入或删除的情况、处理电源管理请求、使用WMI(WmdowsManagementInterface)和NT(NetworkTerminal)事件向系统管理员报告等几部分组成。
其中初始化模块是不可少的,其他模块则是可选的,但前5部分是常用的。
其设备对象和驱动层次结构结构模型如图所示:
驱动层次机构图
图中左边是一个设备对象堆栈,设备对象是操作系统为帮助管理硬件而创建的数据结构。
处于堆栈最低层的设备对象为物理设备对PDO(PhysicalDeviceObject);在设备对象堆栈的中间有一个对象称为功能设备对象FDO(FunctionalDeviceObject);在FDO的上面或下面可能还会有一些过滤设备对象FiDO(FilterDeviceObject)。
在WDM驱动程序模型中,每个硬件设备至少有两个驱动程序。
其中一个驱动程序称为功能∞lncitional)驱动程序,通常它就是那个硬件设备驱动程序。
它负责该硬件工作的所有细节。
如I/O操作、中断事件和给用户提供一种设备控制方式等。
另一种驱动程序称为总线03USl驱动程序。
它负责管理硬件与计算机的连接。
操作系统的PnP管理器按照设备驱动程序的要求构造设备对象堆栈,总线驱动程序的一项任务是枚举总线上的设备,并为每个设备创建一个PDO。
一旦总线驱动程序检查到新硬件存在,PnP管理器就创建一个PDO,之后便开始描绘结构。
创建完PDO后,PnP管理器参照注册表中的信息查找与这个PDO相关的过滤器和功能驱动程序,它们出现在图的中部。
系统安装程序负责添加这些注册表项,而驱动程序包中控制硬件安装的INF文件负责添加其他表项。
这些表项定义了过滤器和功能驱动程序在堆栈中的次序。
PnP管理器先装入最下层的过滤器驱动程序并调用其AddDevice函数。
该函数创建一个FiDO,这样就在过滤器驱动程序和FiDO之间建立了水平连接。
然后,AddDevice把PDO连接到FiDO上,这就是设备对象之间的连线的由来。
PnP管理器继续向上执行,装入并调用每个下层过滤器、功能驱动程序、上层过滤器,直到完成整个堆栈。
2.5I/O请求包(IRP)
I/0操作的处理过程
I/O请求包(IRP)是驱动程序操作的中心,为系统的内核“对象”。
它是一个预先定义好的数据结构,带有一组对它进行操作的I/O管理器例程。
I/O处理过程如上图所示,当用户产生一个I/O请求时,要进行如下操作:
①子系统调用一个I/O系统服务以打开一个命名文件。
②I/O管理器调用对象管理器以寻找命名的文件,并帮助它决定到文件对象的符号连接。
它也调用安全引用监视器以检查子系统是否拥有正确的权限打开那个文件对象。
③如果卷还没有被安装(mount),I/O管理器暂停打开请求,并且调用一个或多个Windows2000文件系统,直到它们中问之一认可这个文件对象存储在文件系统使用的海量存储设备之一上面。
当文件系统已经安装了卷,I/O管理器继续处理这个请求。
④I/O管理器为这个打开请求分配内存并初始化一个IRP。
对于驱动程序来说,打开等同于一个“创建”请求。
⑤I/O管理器调用文件系统驱动程序,传递它给IRP。
文件系统驱动程序访问它的在IRP中的I/O栈位置,以确定什么操作必须被完成、检查参数、确定是否请求的文件在缓存中,并且如果没有的话,在IRP中设置相邻的较低层的驱动程序的I/O栈位置。
⑥驱动程序处理IRP,并完成请求的I/O操作,调用I/O管理器和其他系统组件提供的内核模式支持例程。
⑦驱动程序将IRP连同I/O状态块集返回到I/O管理器,以指明请求的操作是成功被执行了,还是失败了。
⑧I/O管理器从IRP获得I/O状态,所以它能通过保护子系统返回状态信息到原始调用者。
⑨I/O管理器释放完成的IRP。
⑩如果打开操作成功,I/O管理器返回文件对象的句柄到子系统。
如果出现错误,它返回合适的状态到子系统。
子系统成功打开一个描述数据文件、设备或卷的文件对象后,它使用返回的句柄为设备I/O操作(通常是读、写、或设备I/O控制请求)在后续的请求中指明文件对象。
为了创建这样的请求,子系统调用I/O系统设备。
I/O管理器将这些请求作为IRP,发送它们到合适的驱动程序。
3功能实现设计
3.1驱动程序中实现I/O功能
在Windows2000操作系统中实现对IO资源的操作,KIoRange类实现对加映射地址访问。
在驱动程序的parrealtimeDevice:
:
OnStartDevice(KlrpI)例程中添加对I/O资源的初始化。
如下:
字节
字
双字
输入
M_loportrangeO.inb
M_loportrangeO.inw
M_loportrangeO.ind
输出
M_loportrangeO.outb
M_loportrangeO.ouwt
M_loportrangeO.outd
访问IO端口语言指令
3.2中断机制
Windows2000操作系统将设备的中断请求抽象为独立于平台的中断对象,中断对象包括总线类型、中断优先级别、总线矢量号、中断模式(电平触发、边沿触发)等。
它是以陷阱机制来实现中断的,陷阱就是所有中断当前进程,进入其他进程情形的统称,包括中断、系统调用和异常。
中断是指程序执行过程中,当发生某个事件时,中止CPU上现行程序的运行,引出处理该事件的程序执行的过程。
中断是由与现行指令无关的中断信号触发的(异步的),且中断的发生与CPU处在用户模式或内核模式无关,在两条机器指令之间才可响应中断,一般来说,中断处理程序提供的服务不是为当前进程所需的。
异常是由处理器正在执行现行指令而引起的,一条指令执行期间允许响应异常,异常处理程序提供的服务是为当前进程所用的。
异常包括很多方面,有出错(fault),也有陷入(trap)。
中断和异常要通过硬件设施来产生中断请求,可看作硬中断。
不必由硬件发信号而能引发的中断称软中断,软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行效果。
陷阱机制结构如下图
陷阱处理机制
从这个图可以看出陷阱机制形式上就是接收中断、系统调用和异常,然后分派到各个处理程序;要用到几个表:
中断调度表IDT、系统服务调度表。
操作系统总是将中断对象和一定IRQL(中断等级)联系在一起,中断的IRQL级别高低,依赖于发生中断的总线类型和总线级别。
一个驱动程序可以产生多个具有同一IRQL级别的中断对象。
中断对象也总是和一定的中断服务程序(ISR)联系在一起,当设备中断发生时,系统调用该中断对象的ISR。
ISR是完成中断任务的核心程序,它是系统提供的标准函数,也可以是用户自己定义的执行函数。
中断服务程序只有在当前处理器IRQL等于或低于当前中断对象IRQL时,ISR才能执行。
同样,ISR在执行的过程中不会被中断,除非有比IRQL更高的中断请求出现。
一般外部设备的ISR,运行在DIROL(硬件中断等级)级别上,这样CPU运行的级别比较高,因此ISR应该尽可能快地执行,以免出现中断堆积。
中断级别顺序如图所示
抽象中断描述
在图中,优先级的顺序从上到下依次提高,这里的优先级意味着当优先高的中断发生时,优先级低的中断会被屏蔽而且也会暂时不响应同级的其它中断。
不响应并不意味着丢失,而是操作系统先暂时存起来。
在这些中断级别中,PASSNELEVEL,APC—LEVEL和DISPATCHLEVEL是属于软件中断,其它均是硬件中断。
中断调用过程
当有中断产生并已确认识自己的设备产生时,系统响应中断,并按照上图所示的中断过程调用进行处理。
最后调用中断服务例程并返回,一般要求中断服务例程服务时间不能太多,以免引起系统变慢。
对时间要求不是太高的不重要的中断服务可以采用延迟中断调用(在mQl操作系统提供的延迟过程调用对象(运行在DISPATCHLEVEL级别上),这个对象可用于那些需要花费很多时间执行的ISR的设备中断,使得这些中断程序执行低于DIRQL级别上。
中断延迟调用流程图如下图所示
延迟中断调用
中断服务例程的处理时间应当尽可能地短,并且由于中断服务例DIRQL级别上运行,很多函数不能调用。
所以通常在中断服务例程中,若判断该中断是自己的设各产生的,则调用一个在DISPATCH_LEVEL级别上运行的延迟过程调用。
当一个中断服务例程完成后,一旦处理器获得DISPATCH墟VEL的运行权,内核就运行它的延迟过程调用,如图所示。
可以在延迟过程调用例程中作实时控制工作。
在驱动程序中,Kinterrupt类实现硬件中断的处理。
其成员函数包括中断的初始化,及将一个中断服务例程连接到一个中断和解除其连接等。
KdeferredCall类实现延迟过程调用(DPC)操作。
如果中断服务例程是异步调用的,必须考虑其他例程和中断服务例程对共享数据的保护性访问,采用中断同步调用函数Synchronize0,即可以实现其他例程和中断服务例程对共享数据的串行访问,中断同步例程也在DIRQI。
级别上运行,执行时间尽可能短。
中断同步例程也不是Kinterrupt类的成员函数,可以用DEVMEMBER_SYNCHRITSECTION宏声明中断服务例程为KDevice的一个成员函数或用MEMBERSYNCHRITSECTIONWITHCONTEXT宏声明中断服务例程为KDevice或其他类的一个成员函数。
3.3应用程序与驱动程序之间的通信
在Windows2000中,应用程序实现与WDM通信的过程是应用程序先用CreateFile函数打开设备,然后用DeviceloControl和WDM进行通信,包括从WDM中读数据和写数据给WDM两种情况,也可以用ReadFile从WDM中读数据或用WriteFile写数据给WDM。
当应用程序退出时,用CloseHandler函数关闭设备。
这将产生对应设备对象的相应IRP。
应用程序可以用两种方法打开设备:
用GUID接口或符号连接名。
应用程序一旦获得该设备的有效旬柄就可以与WDM进行通信了。
3.4驱动程序与应用程序之间的通信
当WDM捕捉到特点事件(如中断)发生时,应当可以与应用程序进行通信,在DriverWorks文档资料介绍的三种方法中,WDM可以采用其中DeviceControl一步完成和WIN32事件通知两种方法。
另一种方式是创建~个命名的事件,共驱动程序和应用程序共享使用,这种方法只适用于NT驱动程序与应用程序进行通信。
其方法分别如下:
1.DeviceloControl异步完成
应用程序创建一个事件后,用DeviccIoControl函数将该事件句柄传递WDM,然后等待驱动程序发送事件消息。
WDM通过类Kevent获得这个事件的一个对象指针后,可以在IRQL当应用程序调用DeviccloControl函数时,驱动程序首先将此IRP保存起来,然后调用I.MarkPendiin90,返回STATUSPENDING。
当一个事件发生后,驱动程序完成这个IRP。
对于DeviceloControl一步完成,由于IRP是未决的,所以必须将此IRP保存起来,当应用程序退出时,若此IRP仍未完成,则必须在取消例程中取消该IRP,Win32应用程序的编程省略。
2.WIN事件通知
利用win32事件通知方法有以下几个步骤:
①在设备类parrealtimeDevice.h中定义一个Kevent指针
②在DeviccControl(KirpI)例程中接受应用程序传给WDM的事件句柄。
③当特定事件发生后,设置事件为信号状态,实现WDM与应用程序的通信。
注意,不能在IRQL>DISPATCH_LEVEL级别上调用。
4并口驱动程序开发
在Windows2000环境中,实时控制程序放到底层设备驱动程序(*.sys)中
实现。
通过DriverWorks驱动程序开发工具,驱动程序主要设计以下几部分:
①驱动程序(*.sys)加载及卸载;
②硬件资源操作;
③实时控制程序;
④与应用程序通信;
⑤用户模式下的控制程序等。
4.1系统组成
本系统采用上位机的标准打印口控制下位机,下位机以Atmel89c52为处理器,配以4个扩展数据存储器、2个程序存储器和4个8255并行口,完成对机床的控制。
利用打印口的ECP模式实现双向通信来进行控制,充分利用了系统闲置资源,有利于数控机床向开放式数控及网络化数控发展、有利于加工中心和柔性制造系统的二次开发,提高了机床的可靠性和通用性。
本控制系统的系统结构如图所示:
4.2驱动程序开发
根据Driverwizard向导的提示,依次分别在10个对话框中填入相关参数,最后向导自动生成一个驱动程序框架。
包括DriverEntry0、Createdevice()等,经过添加必要的程序后可编译生成*.sys和*.inf安装文件和win32控制台几个主要函数如下。
①驱动程序(*.sys)加载及卸载在应用程序动态加