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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于CAN總線的溫室測控系統(tǒng)的研究與設

          基于CAN總線的溫室測控系統(tǒng)的研究與設

          作者: 時間:2012-03-16 來源:網(wǎng)絡 收藏
          CAN(Controller Area Network)總線又稱為控制局域網(wǎng),是一種多主方式串行通信協(xié)議,能有效地支持具有很高安全等級的分布實時控制。由于具有造價低、通信速度快、可靠性高、實時性強等突出優(yōu)點,在汽車行業(yè)、機械工業(yè)、家用電器及傳感器等領域應用廣泛。
          溫室控制技術是農(nóng)業(yè)現(xiàn)代化的重要內容,在目前的溫室系統(tǒng)中主要是靠RS-485總線來組成控制網(wǎng)絡,將采集到的數(shù)據(jù)和信息傳送到主控機中。其通信速率、節(jié)點連接數(shù)目都受到一定的限制。
          本文提出了以構成現(xiàn)場控制網(wǎng)絡。的通信速率最高可達1 Mbps/40 m,掛接的設備可達110個。另外信號的傳輸采用短幀結構,這樣傳輸時間短,受干擾的概率低。并且一旦網(wǎng)絡中某個節(jié)點故障時,該節(jié)點具有自動關閉輸出功能,以主動切斷該節(jié)點與總線的聯(lián)系,使網(wǎng)絡上其他節(jié)點及通信不受影響,具有較強的抗干擾能力,降低了惡劣環(huán)境對于溫室系統(tǒng)的影響,提高了系統(tǒng)的實時性、可靠性和擴充性。

          1 系統(tǒng)總體設計
          溫室測控系統(tǒng)采用分布式多主方式進行通信。系統(tǒng)主要由主控上位機、CAN總線和多個智能測控模塊組成(注意:各個智能測控模塊之間存在強烈的相互關系)。通過對溫室內外,特別是溫室內部各種影響作物生長的要素用相應智能傳感器進行測量,然后通過CAN總線傳送給主控上位機,上位機進行數(shù)據(jù)打印、分析和處理、參數(shù)設置并且控制有關設備等工作,從而實現(xiàn)對溫室要素的調控,保證了作物生長所需的環(huán)境。系統(tǒng)上任何節(jié)點均可在任意時刻主動向其他節(jié)點發(fā)出信息,支持點對點、一點對多點和全局廣播方式接受和發(fā)送數(shù)據(jù)。圖1是溫室測控系統(tǒng)總體設計圖。

          b.JPG



          2 硬件平臺設計
          溫室測控系統(tǒng)的硬件平臺主要由多個CAN智能節(jié)點構成,如圖2所示。本系統(tǒng)節(jié)點采用總線型拓撲結構,兩芯電纜(CANH和CANL)雙絞線連接。主要由微控制器,CAN通信控制器MCP2515和CAN收發(fā)器TJA1050組成。本文中微控制器MC68S08QQ8與控制器MCP2515是通過SPI口連接,測控節(jié)點通過微控制器的IIC口來連接的。智能節(jié)點的個數(shù)是由溫室內外所測控的環(huán)境要素來決定的,但是任意智能節(jié)點均可以像以太網(wǎng)節(jié)點那樣直接掛接在CAN總線網(wǎng)絡上,即在不犧牲可靠性的前提下進一步擴展現(xiàn)場測控節(jié)點的數(shù)量。

          c.JPG


          上一頁 1 2 3 4 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();