<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 利用多線程思想實現(xiàn)單片機系統(tǒng)的偽并行處理

          利用多線程思想實現(xiàn)單片機系統(tǒng)的偽并行處理

          作者: 時間:2012-03-23 來源:網(wǎng)絡(luò) 收藏

          1. 引言

          本文引用地址:http://www.ex-cimer.com/article/171803.htm

          隨著計算機的不斷發(fā)展,越來越多的,優(yōu)秀的編程被提出來,并付諸實踐。在某些方面已出現(xiàn)了根本性的變革。另一方面,自從80年代誕生以來,便以飛快的速度發(fā)展起來,但由于其物理條件的限制,控制的編程仍然局限于經(jīng)驗的模式,很少應(yīng)用那些新提出的高級語言的編程。如果將不斷發(fā)展的編程與廣泛應(yīng)用的控制結(jié)合起來,一定會大大促進(jìn)單片機控制的進(jìn)一步發(fā)展。使其更廣泛的應(yīng)用于各個方面。

          在下面這個具體項目中,實際情況對系統(tǒng)有一些比較苛刻的要求。按照一般的單的控制方法已經(jīng)無法滿足實際需求。具體情況如表1(表1所示為生化分析儀的設(shè)計中對單片機系統(tǒng)的要求的一部分)

          43.gif
          表1

          表1所示只占了整個系統(tǒng)要求的1/6。下面對表1中的幾項內(nèi)容加以說明。

          對象M1開始動作17操作,即首先步進(jìn)電機M1(正向)轉(zhuǎn)動查找光電開關(guān)信號PS1;查到后執(zhí)行兩次‘過程1‘。過程1:向電機打出30拍。由表1可知該動作從C 段執(zhí)行到 K段停止;

          對象M2即步進(jìn)電機M2等對象M1執(zhí)行完動作17后執(zhí)行動作23等。對象M3和對象M4 則在開始時同時啟動,分別執(zhí)行各自的動作。各個對象之間有的獨立,有的相互關(guān)聯(lián)。

          整個項目需要控制16臺步進(jìn)電機,21個電磁閥,3個泵,1個直流電機,系統(tǒng)要求全部執(zhí)行時間為6秒鐘,系統(tǒng)要求步進(jìn)電機以其最快的速度 -----40us—60us打拍。如果以單的方式編程讓一臺電機轉(zhuǎn)到位之后,再轉(zhuǎn)其他電機。這樣16臺電機打一拍就需要640us---960us 已經(jīng)無法滿足系統(tǒng)要求。這就需要使單片機控制多臺電機運轉(zhuǎn)。這種以的方式驅(qū)動各個電機同時啟動可以在最短的時間將各個電機同時到位。在轉(zhuǎn)動電機的同時還需要檢測一些開關(guān)量已確定電機的位置。為了這個目的。下面提供第一種解決方案(此方案是常用的方案之一,但作者并不推薦這個方案。因為這個方案成本太高。)。

          方案一: 硬件。

          我們可以用多個CPU,將各個電機的控制分到不同的CPU中執(zhí)行,并可將不互相沖突的電機控制過程放到一個CPU中,其結(jié)構(gòu)如圖1

          44.gif
          圖1多cpu方案結(jié)構(gòu)圖

          如圖所示系統(tǒng)中設(shè)定一個主CPU,其功能為與計算機通訊,并將計算機下達(dá)的指令分發(fā)給相應(yīng)的從CPU,更主要的是主CPU將監(jiān)控整個控制的運作。因為各個控制過程之間有的彼此關(guān)聯(lián),所以主CPU不僅要控制各個的執(zhí)行,還要兼顧線程之間的通訊。以表1為例,具體作法如下:

          光電開關(guān)相關(guān)文章:光電開關(guān)原理

          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();