利用多線程思想實(shí)現(xiàn)單片機(jī)系統(tǒng)的偽并行處理
1. 引言
本文引用地址:http://m.butianyuan.cn/article/171803.htm隨著計(jì)算機(jī)的不斷發(fā)展,越來越多的,優(yōu)秀的編程思想被提出來,并付諸實(shí)踐。在某些方面已出現(xiàn)了根本性的變革。另一方面,單片機(jī)自從80年代誕生以來,便以飛快的速度發(fā)展起來,但由于其物理?xiàng)l件的限制,單片機(jī)控制系統(tǒng)的編程仍然局限于經(jīng)驗(yàn)的模式,很少應(yīng)用那些新提出的高級(jí)語言的編程思想。如果將不斷發(fā)展的編程思想與廣泛應(yīng)用的單片機(jī)控制系統(tǒng)結(jié)合起來,一定會(huì)大大促進(jìn)單片機(jī)控制系統(tǒng)的進(jìn)一步發(fā)展。使其更廣泛的應(yīng)用于各個(gè)方面。
在下面這個(gè)具體項(xiàng)目中,實(shí)際情況對(duì)系統(tǒng)有一些比較苛刻的要求。按照一般的單線程的控制方法已經(jīng)無法滿足實(shí)際需求。具體情況如表1(表1所示為生化分析儀的設(shè)計(jì)中對(duì)單片機(jī)系統(tǒng)的要求的一部分)
表1
表1所示只占了整個(gè)系統(tǒng)要求的1/6。下面對(duì)表1中的幾項(xiàng)內(nèi)容加以說明。
對(duì)象M1開始動(dòng)作17操作,即首先步進(jìn)電機(jī)M1(正向)轉(zhuǎn)動(dòng)查找光電開關(guān)信號(hào)PS1;查到后執(zhí)行兩次‘過程1‘。過程1:向電機(jī)打出30拍。由表1可知該動(dòng)作從C 段執(zhí)行到 K段停止;
對(duì)象M2即步進(jìn)電機(jī)M2等對(duì)象M1執(zhí)行完動(dòng)作17后執(zhí)行動(dòng)作23等。對(duì)象M3和對(duì)象M4 則在開始時(shí)同時(shí)啟動(dòng),分別執(zhí)行各自的動(dòng)作。各個(gè)對(duì)象之間有的獨(dú)立,有的相互關(guān)聯(lián)。
整個(gè)項(xiàng)目需要控制16臺(tái)步進(jìn)電機(jī),21個(gè)電磁閥,3個(gè)泵,1個(gè)直流電機(jī),系統(tǒng)要求全部執(zhí)行時(shí)間為6秒鐘,系統(tǒng)要求步進(jìn)電機(jī)以其最快的速度 -----40us—60us打拍。如果以單線程的方式編程讓一臺(tái)電機(jī)轉(zhuǎn)到位之后,再轉(zhuǎn)其他電機(jī)。這樣16臺(tái)電機(jī)打一拍就需要640us---960us 已經(jīng)無法滿足系統(tǒng)要求。這就需要使單片機(jī)并行控制多臺(tái)電機(jī)運(yùn)轉(zhuǎn)。這種以并行的方式驅(qū)動(dòng)各個(gè)電機(jī)同時(shí)啟動(dòng)可以在最短的時(shí)間將各個(gè)電機(jī)同時(shí)到位。在轉(zhuǎn)動(dòng)電機(jī)的同時(shí)還需要檢測(cè)一些開關(guān)量已確定電機(jī)的位置。為了實(shí)現(xiàn)這個(gè)目的。下面提供第一種解決方案(此方案是常用的方案之一,但作者并不推薦這個(gè)方案。因?yàn)檫@個(gè)方案成本太高。)。
方案一: 硬件實(shí)現(xiàn)。
我們可以用多個(gè)CPU,將各個(gè)電機(jī)的控制分到不同的CPU中執(zhí)行,并可將不互相沖突的電機(jī)控制過程放到一個(gè)CPU中,其結(jié)構(gòu)如圖1
圖1多cpu實(shí)現(xiàn)方案結(jié)構(gòu)圖
如圖所示系統(tǒng)中設(shè)定一個(gè)主CPU,其功能為與計(jì)算機(jī)通訊,并將計(jì)算機(jī)下達(dá)的指令分發(fā)給相應(yīng)的從CPU,更主要的是主CPU將監(jiān)控整個(gè)并行控制的運(yùn)作。因?yàn)楦鱾€(gè)控制過程之間有的彼此關(guān)聯(lián),所以主CPU不僅要控制各個(gè)線程的執(zhí)行,還要兼顧線程之間的通訊。以表1為例,具體作法如下:
光電開關(guān)相關(guān)文章:光電開關(guān)原理
評(píng)論