




已阅读5页,还剩57页未读, 继续免费阅读
(机械设计及理论专业论文)壁虎生物机器人外周神经模拟信号控制系统的初步研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京航空航天大学硕士学位论文 摘要 目前机器人在各行各业中发挥着重要作用。作为特种机器人一员的生物 机器人因其特有优点,在军事、反恐等场合亦有较广的应用前景。受壁虎能 够在墙壁等表面爬行这一自然现象的启发,本文从仿生学角度研究壁虎生物 机器人的外周神经模拟信号控制系统。 本文目的是通过研究壁虎运动组织学,寻找合适的壁虎运动控制方法。 壁虎运动神经网络,包括壁虎脚掌运动神经接触状态感受传入、调控壁虎运 动神经网络的脊髓神经元等内容。这样,本文工作是实现一个控制信号发生 系统,通过该系统对壁虎外周神经施加一定的刺激信号,从而达到控制壁虎 运动目的。 在本文中,编写出一套控制信号产生程序,该程序可以产生刺激壁虎外 周神经的控制信号。程序编写过程中,分别使用并行端口和a d 卡两种不同 硬件来实现信号的产生。为寻找出能够有效控制壁虎的信号,程序还对已经 做过的实验数据( 包括控制信号参数等信息) 用h a s h 表的形式做了保存,以 便于以后对实验情况作查找和分析。 由于机器人本身要有一定的信息获取和处理能力,所以文中最后讨论了 一种高效实时数据采集、存储的实现方法,并将这种方法应用到了测试材料 摩擦、粘着性能实验台的软件当中。通过该实验台软件,可以做聚氨酯等材 料的粘着性能实验。这对选择合适的仿壁虎脚掌材料具有指导意义。 关键词:生物机器人仿生生物控制技术 壁虎生物机器人外周神经模拟信号控制系统的初步研究 a b s t r a c t v a r i e t i e so fr o b o t sa r ep l a y i n gi m p o r t a n tr 0 1 e sn o w a d a y s a so n eo ft h e s e r o b o t s ,t h eb i o r o b o th a sal o to fv i r t u e sf o ri t ss p e c i a la p p l i c a t i o n ss u c h a sm i l i t a r ya n dc o u n t e r s t r i k e w et r yt or e s e a r c hag e c k o l i k ew a l l 一c l i m b i n g b i o r o b o t ,w h i c hi se n l i g h t e n e df r o mt h ep h e n o m e n o no ft h eg e c k o sm o v e m e n t o nt h ew a l l w es t u d yt h ec o n t r o lm e t h o do ng e c k o e st h r o u g hh i s t 0 1 0 9 y t h e s ei n v 0 1 v e g e c k o sm o t i v en e u r a ln e t w o r k ,t h ei n p u to ng e c k o sm o t i v en e u r a lo nf e e t , e t c w ec a nc o n t r o lg e c k o sm o v e m e n tb y s t i m u l a t i n gi tw i t he l e c t r o n i c a l s i g n a l s ag e n e r a lc o n t r o ls i g n a i g e n e r a t i n gp r o g r a mi si m p l e m e n t e da sw e l l w ec a nu s ev a r i e t yt y p e so fc o n t r o l s i g n a l st os t i m u l a t eag e c k o t h eg e n e r a t i o no fc o n t r o ls i g n a l si s i m p l e m e n t e db yb o t hp a r a l l e lp o r t o nap ca n da na dc a r d as t o r a g em e t h o di sa l s ou s e df o re a s i l ys e a r c ho n t h ed a t ao fe x p e r i m e n t s t h es t o r a g ei n c l u d e st h ep a r a m e t e r so fc o n t r o ls i g n a l s i n f o r m a t i o na b o u te x p e r i m e n t se n v i r o n m e n t ,e t c s o ,t h eh a s ht e c h n o l o g yi s u s e df o rd a t as e a r c hs u p p o r tah i g h s p e e dd a t aa c q u i s i t i o na n ds t o r a g em e t h o d ism e n t i o n e df i h a l l y t h i sm e t h o dis v e r yu s e f u lf o rr o b o t si n f o r m a t i o n a c q u is i t i o na n dp r o c e s s i n ga b i l i t y k e y w o r d s :b i o - r o b o t ,b i o n i c s ,b i o l o g i c a lc o n t r o l i i 承诺书 本人郑重声明:所呈交的学位论文,是本人在导师指导下, 独立进行研究工作所取得的成果。尽我所知,除文中已经注明引 用的内容外,本学位论文的研究成果不包含任何他人享有著作权 的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体, 均已在文中以明确方式标明。 本人授权南京航空航天大学可以有权保留送交论文的复印 件,允许论文被查阅和借阅,可以将学位论文的全部或部分内容编 入有关数据库进行检索,可以采用影印、缩印或其他复制手段保 存论文。 ( 保密的学位论文在解密后适用本承诺书) 作者签名:粒拉链 日 期:2 q q 墨= 3 南京航空航天大学硕士学位论文 1 1 课题来源 第一章绪论 随着我国社会及经济的高速发展,人权、社会稳定和公共安全受到更多 的重视和关注,这要求人们提供更多的各种类型机器人来代替人去完成一些 极限及危险环境下的作业工作。比如目前特种机器人在实际中的应用已经越 来越广泛,它们在海洋开发,抢险救灾等场合下都发挥了重要作用。所以特 种机器人的研究,对国民经济、国防建设、反恐等方面有着重要意义。世界 各国都对特种机器人的研究很重视,这些特种机器人技术,在美国的“国家 关键技术”、“商业部新兴技术”和“国防部和能源部关键技术”计划【1 】;欧 共体的e u r e k a 计划和信息技术发展战略计划( e s p a i t ) 【2 l ;新加坡、韩国、 巴西等国家和我国高技术发展计划均作为国家优先发展的领域。国内已将管 道机器人技术和产品样机作为优先发展领域【3 】。 在各类特种机器人中,爬壁机器人又以其独特功能和特殊应用场合,而 成为机器人研究中的一个热点问题。爬壁机器人一般以攀爬有斜坡、墙壁为 目的,相对于地面移动的机器人而言,其研究难度更大,控制更加复杂。但 其对军事、工业具有广泛应用前景,故对这类爬壁机器人有一定需求。如在 核电站炉心内壁上清除污染物的工作;对放射性废液储罐焊缝检查的工作; 在大型煤气罐中自动检查焊缝的工作:外壁喷涂、外壁清洗的工作等等。这 些特殊、高危险的作业,用人工方法,既困难又不安全。而爬壁机器人就可 胜任这些类型的工作。 虽然爬壁机器人的研究具有很大的难度,但在自然界中,这种会爬壁的 生物却是处处可见。从小巧的蚊子、苍蝇,到较大的壁虎,它们都能够自如 地在墙壁上爬行,有时甚至可在天花板上运动。如果从这些自然现象和仿生 学角度出发,则是一个研究爬壁机器人的新颖思路和途径。若这种爬壁机器 人可以研究成功,将在面清洗,管道维修,抢险及反恐等场合大有作为,为 国民经济生产、国防建设发挥重要作用。 这种爬壁机器人从属于仿生机器人的范畴。目前国外已有较多的研究成 壁虎生物机器人外周神经模拟信号控制系统的初步研究 果。比如m i t 成功地研制出的机器梭子鱼( r o b o p i k e ) ,是世界上第一个能够 自由游动的机器鱼【引。但在我国,仿生机器人方面的研究与发达国家还有一 定的差距,所以近年来,国家也加大了这方面的投入,在8 6 3 机器人专题中 添加了仿生机器人的项目 3 】。国内从事相关研究的有沈阳自动化研究所( 仿 蛇机器人) 【5 1 、北京航空航天大学( 仿鱼机器人) 6 1 等高校和研究所。 针对上述需要和机器人技术发展现状,本课题提出通过壁虎活体的爬壁 运动控制,实现生物机器人向特定目标的无障碍运动。该生物机器人的研制 成功,会在反恐、管道捡测维修等方面有较广应用前景。 1 2 国内外相关研究情况 目前国内外已经有爬壁机器人的相关研究。在日本有人研究了磁吸附原 理的爬壁机器人【7 1 ,他们研究出的车轮式磁吸附爬壁机器人可以吸附在各种 大型有磁吸附性的构造物如油罐、球型煤气罐、船舶等壁面上,代替人进行 检查和维修任务。图1 - 1 就是这种爬壁机器人的结构原理图。这种类型的机 器人主要特点是:行走稳定,速度快,最大速度可达9 m m i n 。这里面的磁 t 帆 图i 一1 车轮式的磁吸附式爬壁机器人【7 吸附包括电磁体式和永 磁体式两种。相对于真空 吸附式的爬壁机器人而 言,它可以不受壁面凹凸 不平和裂缝的影响,且能 产生很大的吸附力,故基 于这种机理的爬壁机器 人不少。我国也有这种类 型机器人的研究 8 , 9 1 。 另一种爬壁机器人 是利甩真空吸附的形式,胡雪明等1 0 l 对这类爬壁机器人作了研究。真空吸 附类的爬壁机器人与磁吸附类的相比,具有原理简单、不受壁面材料影响等 优点。 综合上述,目前各种爬壁机器人的爬壁机理,不外乎是基于真空吸附、 磁吸附等几种机理。但由于它们自身难以克服的缺点,基于这些机理研制出 2 南京航空航天大学硕士学位论文 的机器人不能作较大范围内的推广应用。表i - i 对这些类型机器人的优缺点 作了一个比较和总结: 表i - 1 目前出现的各种爬壁机器人爬壁原理比较 优点 “ 缺点 真空吸附式原理简单,不受壁面材料限对壁面平整性有要求,容易 制。漏气。 磁吸附式 产生吸附力大,壁面平整性要受壁面材料限制。 求低。 针对目前的研究现况,本课题从仿生学角度出发,拟对壁虎活体作运动 控制,这避免了上述各种情况的不足之处。而且目前国内尚鲜有此类生物活 体控制的研究报道,故本课题有一定的新颖性和前瞻性。 本文之所以选择壁虎作为研究对象,一是因为自然界中壁虎可以自如于 墙面行走;二是a u t u m n 等已经对其脚掌作了微观尺度上的观察【“1 ,发现壁 虎脚掌上有近5 0 万根长度在3 0 1 3 0 微米、直径在5 微米的刚毛。正是这 些细小的剐毛,保证了壁虎能够自如行走于墙壁等表面。 壁虎生物学方面,国外有人对壁虎运动神经作了解剖学上的相关研究。 如t a n gy z 等对雄性壁虎中枢神经荷尔蒙( a n d r o g e nr e c e d t o rm r n ai nt h e b r a i n ) 在控制壁虎运动中所起的作用从神经解剖学角度上,作了一定的研究 ”。t u r kr h e n 等则是对雌性壁虎的运动神经回路、中枢神经作了相应的研 究以试图找出雌性壁虎的神经和运动之间的对应关系 ”】。 由于壁虎运动最终是表现为脚掌的运动,所以对脚掌的研究,也应必不 可少。国内,丁光等解剖、研究了大壁虎的附肢肌 m 】;国外,z a a f 等研究、 比较了习惯在地面上运动和在墙壁上爬行的不同种类壁虎肌肉组织和骨骼 系统的差异 1 5 , 1 6 j 。 目前国外已经有人成功地将生物控制技术在老鼠身上实现了【” 。它通 过将电信号发生电极植入老鼠的大脑当中,可以让老鼠在人的要求下作相应 的运动。图卜2 为该实验的示意图。电极信号通过计算机给出,老鼠在电极 信号的刺激下,可以沿图中设定好的路线走下去。这方面的工作,发表在 n a t u r e 杂志第4 l7 卷上l l ”。 3 壁虎生物机器人外周神经模拟信号控制系统的初步研究 另外,日本东京大学的 科学技术人员也成功地利用 。生物控制技术,完成了对蟑 螂运动的控制【1 7 , 1 8 。这个工 作也是将刺激电极植入蟑螂 体内( 触须上) ,让蟑螂在外 来电信号的刺激下做出一定 的运动行为。这个实验可以 让蟑螂沿着人为画出的一条 参考直线上运动。蟑螂运动 图卜2 通过电极信号控制老鼠的运动 1 7 j 控制信号是由定制的a s i c 芯 片产生,信号指令通信可通 过r f 射频技术来实现1 8 】。图i - 3 是一只带有控制器的蟑螂实物图。图i - 4 则是对蟑螂做实验的示意图。 回固 宁碴 国内外已经研究的成果,都为本课题研究壁虎运动控制提供了很好的参 考和借鉴。 1 ,3 本文的研究内容 本文从仿生学角度出发,通过研究壁虎运动组织学( 包括壁虎的骨髂、 肌肉、神经分布等方面内容) ,进行壁虎的运动控制。从前面提及的文献来 4 南京航空航天大学硕士学位论文 看,壁虎运动神经网络,包括壁虎脚掌运动神经接触状态感受传入、调控壁 虎运动神经网络的脊髓神经元。所以要能够控制壁虎的运动,就要找出壁虎 运动神经网络及其对壁虎运动的支配关系。本课题计划实现一个壁虎外周神 经模拟信号控制系统,通过该系统对壁虎运动神经施加控制信号,从而达到 壁虎运动控制目的。 由于壁虎脚掌神经控制着各自不同形式的运动,故产生信号方法中要保 证有多个不同的独立通道可用,以便能分别与壁虎脚掌的不同形式运动相对 应。为了能够找出有效控制壁虎的信号,需要编制一套控制信号产生软件, 它可以产生指定的控制信号,这些信号通过刺激电极作用于壁虎活体上,以 控制壁虎运动。软件要能够对产生信号的各种参数特性作出选择和调整,以 便于寻找不同刺激信号和壁虎运动之间对应关系。 总结之,壁虎类型生物机器人就是利用生物控制技术,在壁虎活体上植 入刺激电极,通过控制信号发生器( 控制系统) 产生控制信号,使壁虎产生特 定运动行为。与前面文中前砸所述的机器人相比,这种概念的机器人除了能 应用于反恐外,在未来特种侦查、定点清除、复杂危险环境的搜救、管道检 修等领域也具有广泛的应用前景。因此,本课题的研究成果不仅对国家安全 和反恐斗争具有重要意义,对民用和工业应用同样有广泛前景和较大市场。 5 壁宣圭塑垫竖叁丛旦塑丝堡垫堕呈鳖型墨丝丝垫生堑塞 第二章控制信号产生的硬件基础 要通过刺激电极控制壁虎,首先要解决信号产生问题。这就牵涉到硬件 的选择问题。在实验的初始阶段,先是采用p c 机上的并行端口( 以下简称并 口) 作为控制信号发生器,但该方法不能调节信号强度。随着实验的深入进 行,又利用a d 卡作为信号产生硬件,以便可产生强度可调节信号。 2 1 基于并口的信号产生 目前大部分p c 机上都带有2 5 针的并口。根据这2 5 个针脚功能和作用, 可分成3 大组【1 9 】: 1 ) 数据线d a t a1 i n e s ( d a t ab u s ) 2 ) 控制线c o n t r o l1i n e s 3 ) 状态线s t a t u s1 i n e s 其中,数据线又可分成输出和输入两种,输出线可以向相应针脚写数据: 输入线则可以从读取外来信号。故并口也可通过这种方法实现数据采集功 能。控制线则是对数据i o 作一些操作控制,状态线用于查询当前并口的一 些状态信息【2 0 1 。 p c 机上,并口由相应的寄存器( r e g i s t e t s ) 来控制。这些寄存器会被映 射到系统地址空间当中去。根据当初i b m 设计p c 时的方法,p c 上的并口基 址在系统地址一般是0 x 3 7 8 和0 x 2 7 8 ( 如果有第二个并口的话) 。表2 - 1 是p c 机上并行端口地址映射关系: 表2 1p c 机并口的地址映射关系 6 寄存器! l p t ll p t 2 i d a t ar e g i s t a r ( b a s e a d d r e s s + o ) 1 0 x 3 7 80 x 2 7 8 i s t a t u sr e g i 。t e r ( b a s e a d d r e 。s + 1 ) 0 x 3 7 90 x 2 7 9 c o n t r o lr e g is t e r ( b a s e a d d r e s s + z )o x 3 7 ao x 2 7 a 南京航空航天大学硕士学位论文 如果不清楚并口寄存器映射地址,还可以通过b i o s 来查询。因为外设 地址存放在p c 机主板上的b i o s 中。b i o s 从低端4 0 0 h 处开始,共有 2 5 6 ( i o o h ) b y t e 的空间,来存放p c 机外部设备的地址。通过d e b u g 工具就 可以查看这些内容,在命令行下使用命令: c : d e b u g 进入d e b u g 环境,用d 指令查看o x 4 0 o 处的内容: 一d4 0 :0 0 0 0 4 0 :0 0 0 0f 80 3f 80 2e 80 3e 80 2b c0 37 80 37 80 2c o 9 f 0 0 4 0 :0 0 1 02 2c 82 08 00 28 5 0 02 00 00 02 e0 02 e0 06 42 0 0 0 4 0 :0 0 2 02 0 3 93 44 b3 05 23 a2 73 0 5 23 05 20 de o0 0o o 上面以1 6 - h i t ( 2 b y t e ) 为单位存放设备地址。偏移量为o x o o o x 0 7 的,是4 个串口地址( 对应着c o m i c o m 4 ) 。接下来的o x 0 8 o x o f 偏移量,是4 个并 口地址( 对应着l p t i l p t 4 ) 。在i n t e l 的x 8 6 体系上,内存的存放是 l i t t l e r e n d i a n 顺序,也即小字节反而放在前面。这样,从上面显示的内存 内容可以看出,l p t i 的地址是o x 3 b c ,l p t 2 地址是0 x 3 7 8 。当不能确定并口 地址时,一般可以通过这种方法来获取并口地址。 图2 一l 对2 5 针并口管脚做了较为详细的描述川。它包括了并口的状态 查询、控制及数据i 0 等内容。在本文的程序中一般只需要用到数据输出就 可以了。图中的“b a s e a d d r ”映射成0 x 3 7 8 ( 见上面的表2 一1 ) 。从图上也可 以看出,只要使用并口的2 5 针( 地线) ,以及2 9 针( 数据线) ,便可以实 现控制信号的产生。 7 壁虎生物机器入外周神经模拟信号控制系统的初步研究 另一点需要说明的是,并口信号是t t l 电平,即为0 伏和5 伏,其逻辑 阈值约为1 2 伏。了解这个逻辑阈值大小,会对实验中的控制信号强度有一 个总体把握。 图2 1 并口的管脚引线图【2 1 】 2 1 1 d o s ,w i n d o w s 9 5 9 8 下并口的访问 在d o s 和w i n d o w 9 5 9 8 下,访问并口的方法相对而言比较简单,系统一 般都会提供库函数一o u t p 和一i n p u t p 函数: # i n c l u d e c o r l i oh i n t o u t p ( u n s i g n e ds h o dp o r t i n td a t a b y t e ) ; i n t i n p ( u n s i g n e ds h o r tp o r t ; 上面的函数是向一指定的端1 3 ( 由p o r t 参数确定1 ,写读数据( 单位是字 节) 。如果是写数据的话,还有一个数据参数d a t a b y t e ,它表示写入的数据 是多少。 2 1 2w i n d o w sn t 2 0 0 0 南京航空航天大学硕士学位论文 由于w i n d o w sn t 2 0 0 0 内核与w i n d o w s9 8 9 5 的不同,所以访问并口的 方法也要作相应的调整。在w i n d o w sn t 2 0 0 0 下,从安全性出发,程序会被 系统授予一定的特权( p r i v i l e g e ) 和限制( r e s t r i c t i o n ) 。通常,这种特权级 会分作两个:用户模式( u s e rm o d e ) 和核心模式( k e r n e lm o d e ) 。用户模式下 的运行的程序等级是r i n g3 。在核心模式下运行的程序等级是r i n g0 。而 在r i n g3 下系统是不允许直接访问端口的。所以前面所用调用库函数一o u t p 的方法在w i n d o w sn t 2 0 0 0 下是行不通的。如果强行用一o u t p 等函数访问硬 件,系统会产生“p r i v i l e g e di n s t r u c t i o i le x c e p t i o n ”的异常,之后自动 终止程序的执行。 图2 - 2 在不同版本w i n d o w s 下访问并口方法 因为上面的原因,要在w i n d o w sn t 2 0 0 0 下实现对硬件端口的访问,就 要通过一定的途径获得r i n g0 下的权限。这个工作可以通过w i n d o w s 的 d d k ( d e v i c ed r i v ek i t s ) 来实现。w i n d o w s 下的d i ) k 也是一系列的a p i 函数, 只是这些函数是专门用于w i n d o w s 下硬件驱动程序编写的。由于驱动程序可 以运行在r i n g0 的权限下面,所以也就解决了用户程序不能进入k e r n e l 模 式下的矛盾。另个要解决的问题是驱动程序和用户程序之间要定义一个通 9 壁虎生物机器人外周神经模拟信号控制系统的初步研究 信接d 。这样,用户程序通过自己定义的驱动程序接1 :3 来实现对并口访问。 本文运用的方法是先利用d d k 编写一个可访问并口的驱动程序( 定义成 h 亩i n t e r f a o e s y s ) ,之后,由一个d l l 文件( 定义为i n p o u t 3 2 d 1 1 ) 指定外 露接口。图2 - 2 为程序实现思想的一个流程图。 从图中可以看出,程序将访问并口的方法统一成函数i n p 3 2 和o u t 3 2 。 这两个函数用法与前面提及的库函数一o u t p 和一i n p u t p 很相似,只是内部的 实现根据w i n d o w s 版本的不同而不同。图2 2 中“c h e c k i n go s v e r s i o n ” 一步由a p i 函数g e t v e r s i o n 来实现,g e t v e r s i o n 函数的原型定义如下: # i n c l u d e w i n d o w sh d w o r d g e t v e r s i o n ( v o i d ) ; 操作系统的版本信息将放在一个3 2 位的函数返回值中。在个返回值低1 6 位 上存放的是操作系统的m a j o r 、m i n o r 版本号。对于w i n d o w s9 5 9 8 而言, m a j o r 版本号是4 ,对w i n d o w s2 0 0 0 而言,m a j o r 版本号是5 。更详细的, 可以看m s d n 中关于g e t v e r s i o n 函数说明。 如果操作系统是w i n d o w s 9 5 9 8 ,那么就直接用系统库函数一o u t p 和 一i n p u t p 。如果是w i n d o w sn t 2 0 0 0 ,则用d d k 写的驱动程序来实现并口访 问。 与用s d k 编写用户模式下的程序类似,在用d d k 编写可运行于内核模式 下的驱动程序时,总有一个入口函数,这就是d r i v e r e n t r y : # i n c l u d e o p t i o n s 。在出现的对话框中选择d i r c t o r i e s 标签,按着在“s h o w d i r e c t o r i e sf o r :”下选择i n c l u d ef il e s 一项,这时在该项下把n i d a q 的i n c l u d e 目录加进去。如图2 - 4 所示。 图2 - 4 将n i d a q 的i n c l u d e 目录加进v i s u a lc + + 中 接下来将n i d a q 中的l i b 目录加入v is u a lc + + 中,方法和上面的类似, 只是在“s h o wd i r e c t o r i e sf o r :”下选择l i b r a r yf i l e s 。选择完后,如 图2 - 5 所示。 1 3 壁虎生物机器人外周神经模拟信号控制系统的初步研究 图2 - 5 将n i d a q 的l i b 目录加进v i s u mc + + 中 在上亟的操作都成功后,就可以在v is u a lc + + 中调用n i d a q 提供的函 数了。利用如下的语句就可以把上述的头文件给包括进程序中: # i n c l u d e n i d q a h # i n c l u d e n i d e x h 利用如下的语句,则可以把n i d a q 的库文件加进程序中,以便连接成 可执行文件: # p r a g m ac o m m e n t ( 1 i b ,“n i d a q 3 2 1 i b ”) # p r a g m ac o m m e n t ( 1 i b ,。n i d e x 3 2 1 i b ”) 一般,n i d a q 的主要功能大体上可分成如下4 个功能模块: 1 ) 数字输入( d i g i t a li n p u t ) 2 ) 数字输出( d i g i t a lo u t p u t ) 3 ) 模拟输入( a n a l o gi n p u t ) 4 ) 模拟输出( a n a l o go u t p u t ) 由于本文的程序中需要的是可调节的电压,所以只要使用到n i d a q 中 的a o ( 模拟输出) 功能即可。输出电压值的a p i 函数是a o v w r i t e ,其函数原 型定义如下: s h o r t a o v w r i t e ( s h o r td e v i c e n u m b e r s h o r tc h a n d o u b l ev o l t a g e ) ; 1 4 南京航空航天大学硕士学位论文 当中参数d e v i c e n u m b e r 表示安装硬件的i d 号,通常就是1 。如果机子上装 有两块以上的采集卡,则要在n i 的m e a s u r e m e n t & a u t o m a t i o n 工具软件中设 置设备号方能使板卡正常工作。c h a n 参数是指通道数。v o l t a g e 则是通道 c h a n 的电压值( 单位伏特) 。 1 5 壁虎生物机器人外周神经模拟信号控制系统的初步研究 第三章多线程技术在实验软件中的应用 在实验过程中,软件要保证控制信号产生与操作具有交互功能。比如操 作人员可在任意时刻决定信号的产生、停止。究竟何时要产生信号,何时要 停止信号,是异步事件,只能在运行时( r u n - t i m e ) 决定。所以,软件中运用 了多线程技术,建立一定数目的后台线程负责信号产生、停止等操作,而让 前台程序( 主线程) 监听操作人员的动作,并把相应操作指令的变化以线程问 通信方式来通知后台线程去执行。 3 1 简介 目前大多数的操作系统都支持多线程技术】,这是因为多线程可满足 下面要求: 1 ) 处理并行计算的需要: 2 ) 随着计算机应用范围的拓展,需要超长运算时间的应用程序越来越 多: 3 ) 免等待网络、文件系统、用户或其他i o 操作而耗费大量的执行时 间。 人们对软件功能和性能提出了越来越高的要求,相应的软件i o 流量亦 是越来越高,需要的c p u 处理时间也就越来越多。所以,多线程技术将更多 地应用在各种场合中,处理实际生活中复杂问题。本章主要论述了线程建立 和线程间通信、同步的方法。利用多线程技术,在软件中可以任易时间内停 止、开始控制信号的产生( 第四章) 。同时,利用多线程技术还可以实现快 速高效的数据采集( 第五章) 。 3 2 多线程的建立及运行 前面已经提及当前大多数系统都提供了支持多线程的a p i 函数接口。在 w i n 3 2 平台下,要创建一个线程,一般是调用c r e a t e t h r e a d 函数,该函数 1 6 南京航空航天大学硕士学位论文 原型定义如下 j h a n d l ec r e a t e t h r e a d ( l p s e c u r i t y a t t r i b u t e st o t h r e a d a t t r i b u t e s a t t r i b u t e s d w o r dd w s t a c k s i z e l p t h r e a ds t a r t r o u t i n ef p s t a r t a d d r e s s , f u n c t i o n l f o i d p p a r a m e t e r , t h r e a d d w o r d d w c r e a t i o n f l a g s , l p d w o r d 佃t h r e a d l d t h r e a di d ) : | | p o i n t e rt os e c u r i t y ,n i t i a lt h r e a ds t a c ks i z e i tp o i n t e rt ot h r e a d | | a r g u m e n t f o rn e w i ic r e a t i o nf l a g s i i p o i n t e rt or e c e i v e 如果建立线程的函数成功了,会返回一个标识该新建线程的i d 号( 旬柄 值) 。如果建立线失败的话,函数会返回空值( n u l l ) ,如果此时再通过调用 a p i 函数g e t l a s t e r r o r ,可以得到更加详细的出错信息。 函数当中,参数i p t h r e a d a t t r i b u t e 是一个指向结构s e c u r i t y a t t r i b u t e s 的指针。该结构用于w i n 3 2 下的安全信息处理,它决定返回的线 程句柄值是否可以被子进程继承。在n t 内核下,即把一个空值( n u l l ) 赋给 1 p t h r e a d a t t i b u t e ,线程仍会得到一个默认的安全信息块。在本文程序中, 直接给这个参数赋空值,利用系统默认安全值。 第二个参数d w s t a c k s i z e 用于指定新线程s t a c k 上c o m m i t 的大小,单 位是字节。如果该值是0 的话,并不表示线程s t a c k 大小是0 字节,它是让 系统自己分配大小,一般情况下,这个系统自己分配的大小是和调用线程 ( c a l l i n gt h r e a d ) 一样大。当参数值小于缺省c o m m i t 的大小时,情况和为 0 时的一样。在本文程序中,就取系统自动分配的丧小( 赋值0 ) 。 接下来的1 p s t a r t a d d r e s s 从字面上理解,就是线程的启始地址值,在 程序中,就是指定的线程执行函数地址。只要新线程建立了,其就会从该函 数开始执行。其执行,与调用线程( 也可看成是新线程的父线程) 的执行是独 立的,从而使程序有了并发( c o n c u r r e n c y ) 、并行( p a r a l l e l i s m ) 的功能。线 1 7 壁虎生物机器人外周神经模拟信号控制系统的初步研究 程执行函数的原型定义是: d w o r dw i n a p it h r e a d p r o c ( j l p v o i d i p p a r a m e t e r “t h r e a dd a t a ) : 需要指出的是,这里的t h r e a d p r o c 只是一个占位符( p l a c e h o l d e r ) ,在实际 应用中,用自己写的线程执行函数名代替即可。 下面一个参数,也是个很重要的参数:i p p a r a m e t e r ,它担负着调用 线程和新建线程之间数据交换的任务。通过这个参数,可以让新线程知道调 用线程具体执行时的一些参数信息,在程序中,该参数中,存放了控制信号 的电压值、占空比、信号周期等信号。 为了可更好地控制新建线程的运行,c r e a t e t h r e a d 函数还提供了一个 指定线程建立方式的参数,这就是d w c r e a t i o n f l a g s 。它可以让调用线程在 建立线程成功后,立即让这个新线程运行,还是先让它暂停在那儿。如果是 0 的话,就表示线程建立完之后,立即执行。当是c r e a t e s u s p e n d e d 常量 时,则表示线程并不立即执行,只有当调用线程再次调用r e s u m e t h r e a d 时, 新建的线程才开始执行。在本文程序中,直接用0 就可以了。最后一个参数 是i p t h r e a d l d ,用于存放新线程的i d 号,该i d 号标识新建立的线程。 3 ,3 线程间通信与同步 上一节已提及线程之间数据通信的内容,那就是创建线程函数时的参数 值。通过函数中的参数值就可以实现线程间通信。在本文程序中,控制信号 参数特征就是通过这种方法来实现的。但是,这种静态的通信方法功能局限, 当线程在运行的过程中要做通信时( 运行时的通信) ,这种方法就不可行了 ( 因为要实现通信的两个或多个线程是在并发地运行于各自代码中) 。 为此,目前的大多数操作系统都会提供线程间通信机制和相应的系统调 用( s y s t e mc a l l ) ,这些称之为i p c ( i n t e r p r o c e s sc o m m u n i c a t i o n ) 。虽然 本文程序中用到的是线程,但其通信机理与进程类似,因为,线程、进程并 发运行,都是由操作系统内核按一定时间分片进行管理的,故i p c 内容和方 法,亦可用于线程问通信。为论述方便,在不引起混淆的情况下,本节下面 论述中,不再区分进程和线程两种提法。 南京航空航天大学硕士学位论文 i p c 机制有很多种,以适用于不同的场合。w i n 3 2 平台下的i p c 机制主 要有: 1 ) 剪贴板( c 1 i p b o a r d ) : 2 ) c o m c o m + : 3 ) d d e : 4 ) f i l em a p p i n g : 5 ) 管道( p i p e ) : 等等。w i n d o w s 中绝大多数应用程序都或多或少地运用了上面的i p c 机制。 几个线程的并发执行时,总会有对同一个资源进行存取( a c c e s s ) 操作的 情况,所以需要防止数据讹误,这会涉及到一个同步问题。实际上,由于要 实现同步,通信就必不可少( 否则无法同步) ,故同步、通信往往是掺杂在一 起。在w i n 3 2 下,提供了一系列的“同步对象”( s y n c h r o n i z a i o n to b j e c t s ) 和“等待函数”( w a i tf u n c t i o n s ) ,用于实现同步。常见的同步对象包括: 1 ) e v e n t ; 2 ) m u t e x ; 3 ) s e m a p h o r e ; 4 ) w a i t a b l et i m e r ; 等等。这些同步对象都有一个状态值。这个状态值要么是“s i g n a l e d ”,要 么是“n o n s i g n a l e d ”。当有两个线程同时对同一个资源作存取时,其中一个 线程可以先查看同步对象的状态,当该对象状态是n o n s i g n a l e d 时,线程会 在此时暂停在该处( 也即b l o c k i n g 状态) ,直到同步对象的状态变成 s i g n a l e d ( 这个状态一般是由另一个线程来改变) 。前面提及的w a i t f u n c t i o n s 就是让线程等待,直到同步对象状态改变。 本文程序中使用的w a i t 函数是w a i t f o r s i n g l e o b j e c t 函数。当中第1 个参数是相应的同步对象句柄值( h a n d l e 类型) 。第2 个参数是函数等待 ( t i m e o u t ) 的时间,单位毫秒。如果这段时间已经过了,函数会立即返回, 如果这时候同步对象仍是n o n s i g n a l e d 状态的话,函数返回值是 w a i t t i m e o u t :如果在t i m e o u t 期间,同步对象从n o n s i g n a l e d 变到 s i g n a l e d 状态,那么,w a i t f o r s i n g l e o b j c e t 会立即返回,返回值是 w a i t o b j e c t 一0 。需要指出的是,w a i t f o r s i n 9 1 e o b j e c t 函数的第2 个参数 有两个极限值。一个是0 ,表示函数只是查询一下同步对象状态,之后立即 1 9 壁虎生物机器人外周神经模拟信号控制系统的初步研究 返回( 因为函数的等待时间是o 毫秒) 。利用这种方法,可以实现前后台的 线程通信。 ! w a i t f o r s i n g l e o b j e c t 函数中第2 个参数的另一个极限值是i n f i n i t e , 这表示函数等待时间将是“无限长”。这种情况下,调用w a i t f o r s i n g l e o b j e c t 的线程只有在同步对象从n o n s i g n a l e d 变到s i g n a l e d 状态时,才会返回, 否则将一直处于等待状况( b 1 0 c k ir i gs t a t e ) 。通过这个方法,可以让共用 资源为多个线程安全地使恩。利用同步对象实现i p c 思想可用图3 1 表示。 本文程序中所使用的同步对象是e v e n t ( 事件) 。在程序运行时,调用 拽程1 同步对象置为n o 唰c d 阻止其它线程对共用盏谭 曲访问萁它墟程只有在同步 对象状态变或蛳蚰耐时,才能 访问共用资濒 p 一一| 。 图3 - 1 多个线程存取共用资源时的同步 c r e a t e e v e n t 函数,就可以建立一个e v e n t 对象: h a n d l ec r e a t e e v e n t ( l p s e c u r i t 、- a t t r i b u t e si p e v e n t a t t r i b u t e s ,f | p o i n t e rt os e c u r i t y a t t r i b u t e s b o o l b m a n u a r e s e t f lf l a gf o rm a n u a l r e s e te v e n t b o o l b l n i t i a l s t a t e , i if l a gf o ri n i t i a ls t a t e l p c t s t r i p n a m e t fp o i n t e rt oe v e n t o b j e c tn a m e ) : 9 ,f; j 赋 y 一i、。一 南京航空航天大学硕士学位论文 第一个参数1 p e v e n t a t t r i b u t e s 和前面讨论的c r e a t e t h r e a d 函数中的 第一个参数是一样的,都是为n t 内核提供的安全信息。可以在这里直接用 n u l l ,让系统为其分配一个默认安全属性。 接下来的参数b m a n n u a l r e s e t 用于指定对象的状态是要用手动改变 ( m a n u a l r e s e t ) ,还是自动改变( a u t o - r e s e t ) 。当它为真( t r u e ) 时,需要调 用函数r e s e t e v e n t 将e v e n t 的状态手动地置成n o n s i g n a l e d 。若为假 ( f a l s e ) ,系统会在等待线程释放后,自动把e v e n t 对象置成n o n s i g n a l e d 。 e v e n t 对象一开始是s i g n a l e d 还是n o n s i g n a l e d ,是由参数 b i n i t i a l s t a t e 来决定的。当其为t r u e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学语音知识题库及答案
- 2025年向量题型归纳及题库答案
- 遇见最好的自己演讲稿
- 2025年麦田格文学考试题及答案
- 2025年湖南中考语文试卷及答案
- 个人自媒体创业方案咨询
- 丰田活动策划方案
- 高一下学期金太阳试卷及答案
- 西藏山南地区贡嘎县2025年中考数学最后冲刺模拟试卷含解析
- 2025年学潜水理论考试题及答案
- 人教部编版九年级历史上册思维导图【版】(24张) 省赛获奖
- 低压电工试题库-含答案
- 【幼儿自主游戏中科学探究活动实践研究文献综述1900字】
- 肝脓肿的诊断和治疗
- YY 9706.102-2021医用电气设备第1-2部分:基本安全和基本性能的通用要求并列标准:电磁兼容要求和试验
- GB 7691-2003涂装作业安全规程安全管理通则
- 危险化学品双重预防机制培训课件
- 跌倒坠床原因分析预防措施
- 湖南人民出版社乘槎笔记(斌椿)
- Q∕SY 1452.1-2012 石油装备产品包装规范 第1部分:钻机和修井机
- 妇产科产前诊断技术服务临床医师考核题(附答案)
评论
0/150
提交评论