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

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 基于CAN總線的智能饋線終端的研究

          基于CAN總線的智能饋線終端的研究

          作者: 時間:2009-11-09 來源:網(wǎng)絡(luò) 收藏

          開關(guān)量輸入輸出控制部分
          F040共有P0~P7共8組64個端口,且每個端口都是可位尋址的。有了這樣充足的端口,我們可以很方便地連接相應(yīng)的開關(guān)量而不需外擴(kuò)端口。端口并不直接與相關(guān)的開關(guān)直接相連,而是通過相應(yīng)的光耦,這樣做的目的是為了防止電網(wǎng)串入的瞬時干擾。F040定時對開入開關(guān)進(jìn)行檢測,并將相應(yīng)的值經(jīng)由傳入配電子站,即可實(shí)現(xiàn)遙信功能。接收配電子站發(fā)出的開出開關(guān)的控制信號控制相應(yīng)開關(guān)的開合,實(shí)現(xiàn)相應(yīng)的遙控功能。
          測頻部分
          利用F040內(nèi)部的硬件資源我們可以很方便地對交流工頻信號進(jìn)行測量。具體實(shí)現(xiàn)方法為取一路交流電信號,經(jīng)過相應(yīng)的限幅處理后,送入F040片內(nèi)的電壓比較器后,得到方波信號。F040片內(nèi)的電壓比較器可以調(diào)整回差電壓,通過對回差電壓的調(diào)整即可實(shí)現(xiàn)遲滯電壓的比較功能,用于消除輸入信號在過零點(diǎn)可能出現(xiàn)的抖動現(xiàn)象。電壓比較器輸出的方波信號連接到F040的片內(nèi)PCA(可編程計數(shù)器陣列)的一個捕獲/比較單元,捕獲/比較單元工作在上跳沿捕獲方式,每次檢測到上跳沿將引起一個中斷,同時產(chǎn)生一次捕獲,將此時PCA計數(shù)器的值送入該捕獲/比較單元的捕獲寄存器中。我們在中斷服務(wù)子程序計算兩次捕獲的PCA0計數(shù)值之差即對應(yīng)交流工頻的周期。PCA計數(shù)器選擇與定時采樣計數(shù)器相同的時基,所以只需將此計數(shù)值除以采樣次數(shù)就可作為定時采樣計數(shù)器的重裝值用于下一次交流采樣。
          通訊部分
          F040中內(nèi)置協(xié)議控制器,只要外接總線驅(qū)動芯片和適當(dāng)?shù)目垢蓴_電路就可以很方便地建立一個CAN總線智能測控節(jié)點(diǎn)。本設(shè)計中采用PHILIP公司的TJA1050T CAN總線驅(qū)動器。CAN總線通信硬件原理圖如圖3所示。
          圖中F040 的CAN信號接收引腳RX和發(fā)送引腳TX并不直接連接到TJA1050T的RXD和TXD端,而是經(jīng)由高速光耦6N137進(jìn)行連接,這樣做的目的是為了實(shí)現(xiàn)CAN總線各節(jié)點(diǎn)的電氣隔離。為了實(shí)現(xiàn)真正意義上完全的電氣隔離,光耦部分的VA和VB必須通過DC-DC模塊或者是帶有多個隔離輸出的開關(guān)電源模塊進(jìn)行隔離。為防止過流沖擊,TJA1050T的CANH和CANL引腳各通過一個5Ω的電阻連接到總線上。并在CANH和CANL腳與地之間并聯(lián)2個30P的電容, 用于濾除總線上高頻干擾。而防雷擊管D1和D2可以起到發(fā)生瞬變干擾時的保護(hù)作用。[1]
          TJA1050T的8腳連接到F040的一個端口用于模式選擇,TJA1050T有兩種工作模式用于選擇,高速模式和靜音模式。TJA1050T正常工作在高速模式,而在靜音模式下,TJA1050T的發(fā)送器被禁能,執(zhí)行只聽功能,可用于防止由于CAN控制器失控而造成的網(wǎng)絡(luò)阻塞。

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

          3 終端的軟件設(shè)計
          鑒于該裝置功能復(fù)雜,軟件編制方法采用 C51和匯編混合編程,首先在系統(tǒng)中移植μC/OS-II,然后在此基礎(chǔ)上分別編制各個相關(guān)的任務(wù),通過這樣可以大大提高整個系統(tǒng)的實(shí)時性,可靠性,降低程序設(shè)計的難度,提高程序的可維護(hù)性。軟件部分主要包括兩大部分:一是μC/OS-II實(shí)時內(nèi)核的移植,二是各相關(guān)任務(wù)的編制。
          μC/OS-II在 C8051F單片機(jī)上的移植
          μC/OS-II是一個完整的,可移植,固化、裁減的占先式實(shí)時多任務(wù)內(nèi)核。μC/OS-II大部分是用ANSI C 進(jìn)行編制的,只有少部分與CPU密切相關(guān)的部分是用匯編語言編寫的,至今UC/OS-II已在超過40種不同架構(gòu)的微處理器上運(yùn)行。[3]
          μCOS-II在C8051F上的移植主要是三個與CPU架構(gòu)有關(guān)的文件進(jìn)行重寫,它們分別是匯編文件OS_CPU_A.ASM、C語言文件 OS_CPU_C.C和頭文件OS_CPU.H。
          另外要注意的一個問題是函數(shù)的可重入性問題,由于單片機(jī)內(nèi)部堆棧空間有限,C51為函數(shù)調(diào)用提供的是一種壓縮棧,每個函數(shù)被給定一個空間用于存放局部變量。函數(shù)中的每個變量都放在這個空間的固定位置,當(dāng)遞歸調(diào)用這個函數(shù)時,會導(dǎo)致變量被覆蓋。為保證所有函數(shù)的可重入性,必須使用reentrant關(guān)鍵字指定所有相關(guān)的系統(tǒng)函數(shù)。
          相關(guān)任務(wù)的編制
          饋線終端主要包括以下幾個任務(wù),它們分別是A/D定時采樣任務(wù),該任務(wù)具有最高的優(yōu)先級,該任務(wù)主要完成數(shù)據(jù)的采集、采樣通道的切換等功能。CAN通信任務(wù),該任務(wù)具有第二高的優(yōu)先級,該任務(wù)主要完成采樣數(shù)據(jù)及相關(guān)報警信號的上傳以及配電子站發(fā)過來的相應(yīng)命令報文的解析處理。電參數(shù)計算任務(wù),該任務(wù)具有第三高優(yōu)先級,該任務(wù)主要完成電力參數(shù)的計算功能。LCD顯示子任務(wù),該任務(wù)主要完成相關(guān)電力參數(shù)在LCD屏上的顯示,該任務(wù)具有最低的優(yōu)先級。
          CAN總線通信報文的格式
          CAN總線通信采用具有29位標(biāo)識符的擴(kuò)展幀,標(biāo)識符的內(nèi)容包括當(dāng)前信號的種類代碼,(包括報警信號,電參數(shù)信號,故障錄波信號,開關(guān)量參數(shù)信號以及控制信號等), 配電子站的地址,F(xiàn)TU的地址等。配電子站發(fā)送控制信號的格式為,使用數(shù)據(jù)域的第一個字節(jié)判斷控制信號的種類,控制信號的種類主要有開出開關(guān)量的控制信號,請求獲取開入開關(guān)量的控制信號,請求實(shí)時獲取電參數(shù)的控制信號,以及對時信號等,根據(jù)控制信號的種類確定其它幾個數(shù)據(jù)的意義,例如如果是對時信號,則后6個字節(jié)依次為當(dāng)前時間的年,月,日,時,分,秒。
          4 結(jié)語
          運(yùn)用CAN總線技術(shù)開發(fā)的終端單元,可以極大提高配電自動化系統(tǒng)的可靠性,實(shí)時性,系統(tǒng)性價比高,安裝維護(hù)簡潔方便,具有較廣闊的應(yīng)用前景。


          上一頁 1 2 下一頁

          關(guān)鍵詞: CAN 總線 智能饋線

          評論


          相關(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); })();