武漢理工大學(xué) 現(xiàn)代教育技術(shù)中心 武漢 430063
系統(tǒng)采用現(xiàn)場總線集散系統(tǒng)FDCS(field distributed control system)結(jié)構(gòu),由服務(wù)器,CAN智能單元,以及CAN局域網(wǎng)總線組成。服務(wù)器完成系統(tǒng)的數(shù)據(jù)管理與分析計算系統(tǒng)計算。CAN智能單元完成本地現(xiàn)場的數(shù)據(jù)處理、顯示、報警和控制。各個節(jié)點的數(shù)據(jù)通過CAN總線實現(xiàn)互相傳輸,見圖1。
圖1 分布式控制系統(tǒng)圖
對應(yīng)每個CAN節(jié)點要完成的控制、顯示等功能,就必須要有一個最小系統(tǒng)。根據(jù)現(xiàn)場的要求,采用SAMSUNG S3C44B0X微處理器。它使用ARM7TDMI核,工作在66 MHz,帶有8 kB CACHE,外部存儲器控制器,LCD控制器,71個通用I/O接口,SPI接口等。可以很方便地進行最小系統(tǒng)的構(gòu)建。見圖2。
圖2 智能單元模塊
LCD、FLASH、SDRAM在S3C44B0X中都有對應(yīng)的接口引腳與控制器,實現(xiàn)方便。
鍵盤與LED由一塊單片機89C2051統(tǒng)一控制。89C2051通過掃描方式點亮數(shù)碼管和掃描按鍵。電路框圖見圖3。
圖3 鍵盤與LED電路框
電路框圖中包括,98C2051,兩片移位寄存器74HC164,用作對鍵盤和數(shù)碼管的掃描,8個9012接5V電源用作對數(shù)碼管的驅(qū)動。89C2051通過串口接收每個數(shù)碼管要顯示的數(shù)據(jù)。同時將掃描到的按鍵,進行編碼后,通過串口發(fā)送到S3C44B0X。
源代碼是掃描第一個按鈕和點亮第一個數(shù)碼管。第一個數(shù)碼管的片選引腳和第一個按鍵一端的引腳都連接在第一個74HC164出來的第一個引腳。當(dāng)P3.7置高電平,讓74HC164出來的第一路得到高電平,與其相連的9013與地接通,那么第一個數(shù)碼管就被選中(數(shù)碼管選用共陰極的)。并且如果此時按下第一個按鍵,P3.4(P3.4與第一個按鍵相連)得到低電平,就掃描到這個按鍵按下。
P1 = 0XFF;
DOUT = 1; //DOUT = P3^ 7
塑料排水板伸出級配砂礫墊層不小于0.5m,施工完成后可將排水板露出端彎折埋置于砂墊層中,同時在砂墊層中埋設(shè)盲溝和集水井,井壁隨著土層的填高而隨之砌高,確保軟土地基中空隙水由塑料排水板排到級配砂礫墊層中,再由盲溝匯總到集水井,從而達到加速軟基固結(jié)的目的。
CLK = 1; //CLI = P3^ 8
CLK = 0;
P1 = dispDataBuf[0]; // dispDataBuf[8]保存了每個數(shù)碼管要顯示數(shù)據(jù)的對應(yīng)16進制數(shù)
preTemp = P3;
dltime();
nextTemp = P3;
if((preTemp & 0x1C) == (nextTemp & 0x1C))/*去抖動 */
{
keytime ++;
if(keytime >= 10)
{
keytime = 0;
if((nextTemp & 0x1c) == 0x0c)//P3.4得到低電平
get_keyset = 1;
if((get_keyset == 1)&&((nextTemp & 0x1c) != 0x0c))//該段代碼實現(xiàn)按鍵松下后才算一次按鍵作用
{
get_keyset = 0;
sendkeynum();//通過串口發(fā)送按鍵編碼
}
}
S3C44B0X芯片含有SPI接口,基于此,選用MICROCHIP的MCP2510控制器、CAN驅(qū)動器PHILIPHS的TJA1050。MCP2510是一種帶有串行外圍接口SPI的獨立CAN控制器,它支持CAN技術(shù)規(guī)范V2.0A/B;并能夠發(fā)送的接收標(biāo)準(zhǔn)的和擴展的信息幀,同時具有接收濾波和信息管理的功能。MCP2510通過SPI接口與MCU進行數(shù)據(jù)傳輸,最高數(shù)據(jù)傳輸速率可達5 Mb/s。S3C44B0X可通過MCP2510與CAN總線上的其它MCU單元通訊見圖4。MCP2510有配置、正常、睡眠、監(jiān)聽、反饋等五種工作模式,內(nèi)含三個發(fā)送緩沖器、兩個接收緩沖器,同時還具有靈活的中斷管理能力,這些特點使得S3C44B0X對CAN總線的操作變得非常簡便。
圖4 CAN通訊接口電路圖
S3C44B0X通過SPI接口與MCP2510相連并對其進行控制。MCP2510的控制見表1。
表1
圖5 MCP2510讀、寫時序圖
如圖5所示,在讀操作開始時,CS 引腳將被置為低電平。隨后讀指令和8 位地址碼(A7 至A0)將被依次送MCP2510 。在接收到讀指令和地址碼之后, MCP2510 指定地址寄存器中的數(shù)據(jù)將被移出通過SO 引腳進行發(fā)送。每一數(shù)據(jù)字節(jié)移出后, 器件內(nèi)部的地址指針將自動加一以指向下一地址。因此可以對下一個連續(xù)地址寄存器進行讀操作。通過該方法可以順序讀取任意個連續(xù)地址寄存器中的數(shù)據(jù)。通過拉高CS 引腳電平可以結(jié)束操作。寫操作時,置CS 引腳為低電平啟動寫操作。啟動寫指令后,地址碼以及至少一個字節(jié)的數(shù)據(jù)被依次發(fā)送到MCP2510 。只要CS 保持低電平,就可以對連續(xù)地址寄存器進行順序?qū)懖僮?。在SCK 引線上的上升沿,數(shù)據(jù)字節(jié)將從D0位開始依次被寫入。如果CS 引腳在字節(jié)的8 位數(shù)據(jù)尚未發(fā)送完之前跳變到高電平,該字節(jié)的寫操作將被中止,而之前發(fā)送的字節(jié)已經(jīng)寫入。
通過一塊RS232-CAN的控制卡與服務(wù)器相連接,這樣就組成了CAN控制的局域網(wǎng)。在服務(wù)器上通過VC+PCOMM控件實現(xiàn)對CAN轉(zhuǎn)換卡的控制。由于數(shù)據(jù)量大,而且實時性要求高,所以采用兩個線程。一個線程負責(zé)串口數(shù)據(jù)的接收和相應(yīng)的數(shù)據(jù)處理,將處理后的數(shù)據(jù)送到數(shù)學(xué)模型中計算得到結(jié)果,即要發(fā)送的數(shù)據(jù),保存到一個全局鏈表中;另外一個線程專門負責(zé)數(shù)據(jù)的發(fā)送。
系統(tǒng)采用了總線拓撲結(jié)構(gòu),在實際應(yīng)用中不但節(jié)約了大量的導(dǎo)線,更重要的是方便了布線,能在較短的時間里安裝調(diào)試完畢,非常適用于在航船舶;作為設(shè)備級網(wǎng)絡(luò),CAN所具有的一些良好性能,使其能夠滿足船舶實時通信的要求,CAN 網(wǎng)絡(luò)在船舶的應(yīng)用也為船舶綜合通信系統(tǒng)的設(shè)計提供了一種新的方法。
[1] 蔣健文.CAN總線測控節(jié)點智能核心的研究[J]. 鹽城工學(xué)院學(xué)報,2000,13(3):11-13.
[2] 滿慶豐.現(xiàn)場總線技術(shù)的應(yīng)用及發(fā)展[J].石油化工建設(shè),2006(3):22-23.
[3] 張端陽, 鄭華耀, 黃學(xué)武.CAN總線在嵌入式船舶仿真系統(tǒng)中的應(yīng)用[J].系統(tǒng)仿真技術(shù) ,2006(2):108-111.
[4] 吳團結(jié).基于CAN總線技術(shù)的艦船動力系統(tǒng)綜合控制[J].中國艦船研究,2006(2):70-74.
[5] 鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計[M].北京:北京航空航天大學(xué)出版社,1996:240-255.