×
嵌入式开发 > 详情

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

发布时间:2020-07-07 发布时间:
|

1. 引言

随着计算机的不断发展,越来越多的,优秀的编程思想被提出来,并付诸实践。在某些方面已出现了根本性的变革。另一方面,单片机自从80年代诞生以来,便以飞快的速度发展起来,但由于其物理条件的限制,单片机控制系统的编程仍然局限于经验的模式,很少应用那些新提出的高级语言的编程思想。如果将不断发展的编程思想与广泛应用的单片机控制系统结合起来,一定会大大促进单片机控制系统的进一步发展。使其更广泛的应用于各个方面。

在下面这个具体项目中,实际情况对系统有一些比较苛刻的要求。按照一般的单线程的控制方法已经无法满足实际需求。具体情况如表1(表1所示为生化分析仪的设计中对单片机系统的要求的一部分)


表1

表1所示只占了整个系统要求的1/6。下面对表1中的几项内容加以说明。

对象M1开始动作17操作,即首先步进电机M1(正向)转动查找光电开关信号PS1;查到后执行两次‘过程1‘。过程1:向电机打出30拍。由表1可知该动作从C 段执行到 K段停止;

对象M2即步进电机M2等对象M1执行完动作17后执行动作23等。对象M3和对象M4 则在开始时同时启动,分别执行各自的动作。各个对象之间有的独立,有的相互关联。

整个项目需要控制16台步进电机,21个电磁阀,3个泵,1个直流电机,系统要求全部执行时间为6秒钟,系统要求步进电机以其最快的速度 -----40us—60us打拍。如果以单线程的方式编程让一台电机转到位之后,再转其他电机。这样16台电机打一拍就需要640us---960us 已经无法满足系统要求。这就需要使单片机并行控制多台电机运转。这种以并行的方式驱动各个电机同时启动可以在最短的时间将各个电机同时到位。在转动电机的同时还需要检测一些开关量已确定电机的位置。为了实现这个目的。下面提供第一种解决方案(此方案是常用的方案之一,但作者并不推荐这个方案。因为这个方案成本太高。)。

方案一: 硬件实现

我们可以用多个CPU,将各个电机的控制分到不同的CPU中执行,并可将不互相冲突的电机控制过程放到一个CPU中,其结构如图1


图1多cpu实现方案结构图

如图所示系统中设定一个主CPU,其功能为与计算机通讯,并将计算机下达的指令分发给相应的从CPU,更主要的是主CPU将监控整个并行控制的运作。因为各个控制过程之间有的彼此关联,所以主CPU不仅要控制各个线程的执行,还要兼顾线程之间的通讯。以表1为例,具体作法如下:





『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
LPC2131的GPIO操作