原创 利用多线程思想实现单片机系统的伪并行处理

2009-8-13 08:49 4335 8 9 分类: MCU/ 嵌入式
摘要:介绍和分析了一种原用于计算机高级语言的编程思想---多线程编程,向单片机控制系统的移植。利用多线程的编程思想进行单片机的复杂控制,可以应用到一些对系统控制有苛刻要求的项目中。利用多线程编程的各个线程同时运行的特点,加大单片机控制的灵活性和复杂性,在功能的层面上极大地提高了单片机控制系统的运行速度。本文对这种模拟多线程的编程思想的适应性做出了分析,以及提出了可用于更苛刻条件的扩展型多线程模拟思想。电子园51单片机学习网bSb+Y(kk#B
关键词:多线程;单片机控制系统;扩展型多线程模拟

WLTB^ksa.v281521. 引言 
8z4o3Mx5m fy]28152       随着计算机的不断发展,越来越多的,优秀的编程思想被提出来,并付诸实践。在某些方面已出现了根本性的变革。另一方面,单片机自从80年代诞生以来,便以飞快的速度发展起来,但由于其物理条件的限制,单片机控制系统的编程仍然局限于经验的模式,很少应用那些新提出的高级语言的编程思想。如果将不断发展的编程思想与广泛应用的单片机控制系统结合起来,一定会大大促进单片机控制系统的进一步发展。使其更广泛的应用于各个方面。
g$C_wii28152      在下面这个具体项目中,实际情况对系统有一些比较苛刻的要求。按照一般的单线程的控制方法已经无法满足实际需求。具体情况如表1(表1所示为生化分析仪的设计中对单片机系统的要求的一部分)电子园51单片机学习网 z ~__ e?2O)A%c*j7n
 电子园51单片机学习网e$CWQ2d%OuQ


c*~ Vs4~ m&L3T28152                                  表1电子园51单片机学习网(l9A.Ec I+Dp3c


A7I}1wI^28152    表1所示只占了整个系统要求的1/6。下面对表1中的几项内容加以说明。电子园51单片机学习网+tzifMS
   对象M1开始动作17操作,即首先步进电机M1(正向)转动查找光电开关信号PS1;查到后执行两次‘过程1‘。过程1:向电机打出30拍。由表1可知该动作从C  段执行到  K段停止;电子园51单片机学习网 K!~7t+wj*L+APR [
    对象M2即步进电机M2等对象M1执行完动作17后执行动作23等。对象M3和对象M4 则在开始时同时启动,分别执行各自的动作。各个对象之间有的独立,有的相互关联。
U+r3j&q$N E28152    整个项目需要控制16台步进电机,21个电磁阀,3个泵,1个直流电机,系统要求全部执行时间为6秒钟,系统要求步进电机以其最快的速度-----40us—60us打拍。如果以单线程的方式编程让一台电机转到位之后,再转其他电机。这样16台电机打一拍就需要640us---960us已经无法满足系统要求。这就需要使单片机并行控制多台电机运转。这种以并行的方式驱动各个电机同时启动可以在最短的时间将各个电机同时到位。在转动电机的同时还需要检测一些开关量已确定电机的位置。为了实现这个目的。下面提供第一种解决方案(此方案是常用的方案之一,但作者并不推荐这个方案。因为这个方案成本太高。)。
U;?c4L*i"u7m\S28152     方案一:  硬件实现。电子园51单片机学习网.nHX7c$zs
      我们可以用多个CPU,将各个电机的控制分到不同的CPU中执行,并可将不互相冲突的电机控制过程放到一个CPU中,其结构如图1电子园51单片机学习网:{8aw)YS]L
 

4q7ZI B`u,{Q-UR28152

电子园51单片机学习网``j u%u#r*@7n%x


1cpu实现方案结构图电子园51单片机学习网mT [Vf6rL


3L/|)RhlUDR28152
,sO(DtoVKx U?28152    如图所示系统中设定一个主CPU,其功能为与计算机通讯,并将计算机下达的指令分发给相应的从CPU,更主要的是主CPU将监控整个并行控制的运作。因为各个控制过程之间有的彼此关联,所以主CPU不仅要控制各个线程的执行,还要兼顾线程之间的通讯。以表1为例,具体作法如下:
*F0|2}+P}T%{P E t28152      1.开始后,主CPU发给从CPU1一个信号,从CPU启动对象M1进行动作17,并由从CPU向主CPU返回一个信号。主CPU收到信号后,置起标志1。当对象M1进行完动作17后,从CPU向主CPU发出信号,CPU将标志1清掉。
n:E;q#M"SH28152      2.开始后,主CPU发给从M2一个信号,从CPU启动对象M2。从CPU向主CPU不断查询标志1。当标志1被清掉后,从//控制对象2执行动作23。
q0xsN0b#Uf@ML28152      3.开始后,主CPU发给从CPU一个信号,从CPU启动对象M3和对象M4。执行动作25,然后开电磁阀6,然后延时1秒,关电磁阀6,执行动作24,然后执行动作26,等////1的动作17完成后,启动步进电机20,执行动作25,等等。
u^(Q4n_In"vZ28152    如上所说, 主CPU设置了多个标志位用以跟踪各个线程的运行情况。并用这些标志位承担了各个相关线程之间的通讯。凡是线程运行到与其他线程相关的地方都会在主CPU内设置一个标志位以供其它相关线程查询。而那些不相关的线程可以完全独立运行。相关线程除了需检测标志的部分,其他部分也可独立运行。电子园51单片机学习网HX8k0[ u
     这种多CPU控制的作法实现了单片机的并行运作方式。但多CPU的控制方案成本几乎是成倍提高,而且在硬件的基础上实现的多CPU之间的通讯花费时间稍长。并且容易有干扰。
(Dq)_0|1a"N iCi0a28152     方案二(作者推荐): 另一种实现的方法是在软件的层面上模拟多cpu的运作。从而实现单片机的伪并行处理.这种实现方法借鉴了计算机实现多线程的编程方法。
\-X:a S$M28152     多线程编程编程思想,即:同时给CPU分配了几个任务或线程。当然计算机 CPU实际上不可能同一时间做几件事,而是把时间分到不同的线程,使每个线程都有点进展。如果一个线程无法进行,比如线程要求的键盘输入尚未取得,则转入另一个线程的工作。通常,CPU在线程间的切换非常迅速,使人们感觉好象所有的线程是同时进行的。
(`;}+u2c-TQW"X `28152多线程编程中有一个很重要的环节:各个线程之间的通讯与控制问题电子园51单片机学习网 ncd4J@!H
    在多线程编程中,每个线程都用编码提供线程的行为,用数据供给编码操作。多个线程同时处理同一编码和数据,不同线程可能各有不同的编码和数据。事实上,编码和数据部分是相当独立的,需要时即可向线程提供。因此经常是几个线程使用同一段编码和数据这就会出现下面的情况电子园51单片机学习网p*`{$H7I4`
     当一个线程在调用数据时,另一个线程可能正在修改这些数据。则前一个线程所调用的数据出现了不确定性。这会影响整个运行结果。为了避免这个问题,多线程编程中,各个线程之间通讯和控制尤为重要。在将多线程的思想向单片机控制系统移植时,这点要非常注意。 因为系统多线程运作的实现从其最基本的层面看仍然是单线程的操作;他的实现归根结底是利用了计算机的高速度。它将系统运行的基准时间分成了许多时间片,将各个时间片分给不同的线程,如此一来在一个基准时间内各个线程全都向前行进了一步,然后运行下一个基准时间,周而复始。这样在用户层的角度看来,各个线程是同步进行的。只要速度够块,时间片的划分不会影响用户层面上的应用,这样就可以实现多线程的操作。近年来单片机速度的大幅度提升,这就使多线程思想向单片机控制系统的移植成为可能。
I3rY)@]wq F MM28152     在整个项目中全部的输入信号共39个;同时并行查询的对象最多时有61个系统要求以步进电机最快的速度打拍。时间约40us---60us,为了保证步进电机打拍的稳定性和灵活性。我选用了DSP内部的一个定时器,定时时间为打拍时间的1/3—1/5。设定为10us中断。这个时间为整个系统运行的基准时间。在这段时间内,系统要查询一遍所有对象并向相应的步进电机打拍。在一些线程中还需要采样多次。换句话说,在这个系统时间内。所有线程都要向前行进一步。
XhR'|a v28152    就像计算机一样,将这个基准时间分为多个时间片。将各个时间片分给不同的线程,在这种情况下,各个线程的执行是间断的。这与用硬件模拟多线程有本质的不同。像这样既要应用各线程执行的间断性,又要保证各线程运行的连续性。这对软件的设计有了很高的要求,这同时也是单片机控制系统用软件模拟多线程方法中的难点之一,为了解决这个问题,可在个线程自带线程进度指示器用来标志线程的运行进度,即用一个变量记载线程的每一步;如图2电子园51单片机学习网h?1^2@zP%G}P
                                       
lH;J8V0_28152                                      图2

&qL^"u7v$Xh28152

(_.S'j'r3[:q28152    系统设定线程进度指示器用来指引线程的连续运行,同时在一个中断中轮询所有对象。其编程结构大致如下:电子园51单片机学习网Y(g| X Q
时钟中断:电子园51单片机学习网O&UL%Q7o0u!{;@
    线程1:电子园51单片机学习网:C)JAprt{6X
         线程进度标志:电子园51单片机学习网*E/j#dn)Hz3G(uG*c"p
           1:    ;
0mT&snH[0f.rO28152           2:    ;电子园51单片机学习网$b n8XrQb3Pp7j
           3 ;电子园51单片机学习网,r1V4s#{;K+C
        电子园51单片机学习网J4A$mG!b3Ua |F`p
        线程2:
.|$x$~_'^28152   线程进度标志:
q)pCI\ V]-|4vc28152         1:    ;
/h|?V(_@hK%B"H7@28152         2:    ;
Y'g d+K K.M}28152        。。。。。。。。电子园51单片机学习网*rB"j*Q%HT5n8{


(k4Q{X*o.Q'~28152    用软件模拟多线程还有很多要注意的地方。
@H5p.ab;SccA28152    如果选用20兆的DSP来实现控制功能,步进电机最快的打拍速度为40us---60us,则有下面的计算结果,,取1/4,即10us产生一中断,在中断里查询61个对象。20兆DSP单条指令的执行时间大约为50ns在一次中断内可执行的语句数=10us/50ns=200条,如果在分给61个对象,每个对象所分得的指令数仅为3条,已经不够用了,即使选择60兆的DSP,说分指令也只是9条,若以牺牲打拍的灵活性为代价,以60us为已中断。则每个对象所分得的指令数仅为36条勉强够用,如果所控制的对象再多的话,软件编程的灵活性将进一步被压缩,电子园51单片机学习网'fh;e6GW,G^ K Xo/o
    下面提出了一种扩展的多线程模拟方法,如图3电子园51单片机学习网9LA6yi;O+U1Q"C d

电子园51单片机学习网J?V.T,W5X1dM

电子园51单片机学习网7^Frd"G_#t(z?.J
   电子园51单片机学习网jH @{&M3s n
                                 图3   
Hh|iv7]zz28152     s1,s2为系统运行的基准时间,M1.1 为第一对象组中第一对象。M1.2 为第一对象组中第二对象。电子园51单片机学习网P-?i dv:|9b'DAH

电子园51单片机学习网WK}Wp-smc

     这种扩展的多线程模拟方法 仍将系统时间化成多个时间片,与上面不同的是有几个线程(对象)组成一个线程组,共享同一个时间片,例如:当系统运行到第一次基准时间的第一个时间片时,由共享时间片的第一个线程占用,当系统运行到第2次基准时间的第1个时间片时,由共享时间片的第2个线程占用,如此类推,这种扩展模式可以灵活的掌控线程与所用时间的比例,但是这是以牺牲运行时间为代价的。

RL+y t%bH2\k28152

3D4_%vbq@ b.]Z28152    结论:本文对单片机控制系统的编程思想作出了扩展,将本属于计算机高级语言编程思想的多线程编程移植到单片机控制系统中。这种方法使单片机控制系统可工作于对系统运行速度要求很高的系统中,并且对其他的高级语言编程思想,如对事件句柄的处理等向单片机控制系统移植起了示范作用。电子园51单片机学习网E%FCsq/R$m0dv


S d ZYN28152  参考文献
:?ywf+G.]0U28152  [1]柳永新主编。Windows c 程序设计入门与提高。清华大学出版社,1999,6。电子园51单片机学习网A1sVO'Z%I#p
  [2]李朝青主编。单片机原理及接口技术,1994。电子园51单片机学习网 T*~%]&g&\ E6Z

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2013-3-10 23:03

说白了就是RTOS(实时操作系统)实现多任务处理,能执行多任务以及及时响应各个中断,用RTX51或ucOS即可实现。
相关推荐阅读
用户1414655 2012-11-28 16:09
给你们介绍一些毛骨悚然的骗人技术
星期六下午 2 点多, 我一个人乘70 路至四川路,当中我在和我老公通电话的时候发觉有人拍了下我的肩膀,刚开始我以为是遇到认识的人和我打招呼的,后来一看旁边是40 多岁的...
用户1414655 2009-11-24 23:01
通信电源蓄电池温度监测系统设计
0 引 言    在通信系统的设计和建设中,通信电源被称为通信系统的心脏,电源系统将直接影响通信系统的可靠性和稳定性。美国APC公司的一项调查结果表明,大约有75%以上的通信系统故障都是由于电源设备故...
用户1414655 2009-09-23 08:53
各种白光LED驱动电路特性评比
作者:    时间:2008-12-02    来源:52RD硬件研发         1996年日亚化学的中村氏发表蓝光LED之后,白光LED就被视为次世代照明光源最具发展潜力的元件,因此有关白光L...
用户1414655 2009-09-23 08:52
论机器视觉与图像分析技术
作者:    时间:2008-12-02    来源:52RD硬件研发         也许你仍然希望能得到咨询专家的帮助,不过紧缩包裹型(Shrink-Wrapped)开发工具包现在已经使得缺乏专业...
用户1414655 2009-09-23 08:52
LCD TV视频解码器技术概述
作者:    时间:2008-12-03    来源:52RD硬件研发          CD TV属于高整合性电子产品,它涵盖了演算法、软体、韧体、硬体、晶片、无线射频等领域,且许多专利仍是属于国外...
用户1414655 2009-09-23 08:52
液晶显示器的自动调光技术
作者:    时间:2008-12-03    来源:52RD硬件研发          最近几年大型液晶显示器的应用,从笔记型电脑、PDA、桌上型电脑用监视器,持续扩展至家用液晶电视等领域,液晶电视...
EE直播间
更多
我要评论
1
8
关闭 站长推荐上一条 /3 下一条