基于WINCE的CAN驅動(dòng)的研究與實(shí)現
5 運行設計
5.1 運行控制
1 整個(gè)父設備連同子設備在同一個(gè)線(xiàn)程下工作。注意不要阻塞了線(xiàn)程。
2 通過(guò)MCGS_DATA data可以得到接口指針,方法如下(MCGS_DATA是MCGS組態(tài)軟件中封裝了重要的用戶(hù)數據的結構體):
MCGS_DATA* pData;
pData = (MCGS_DATA*)data.m_pParentData;
if (pData)
{
g_pDevCanProxy = (CDevCanProxy*)pData->m_pParentData;
if (g_pDevCanProxy)
{ //下面就可以對Can卡進(jìn)行讀寫(xiě)操作了
g_pDevCanProxy->SvrWriteAndRead(dwAimCanId, SendBuf);
}
}
5.2 運行時(shí)間
由于父設備連同子設備在同一個(gè)線(xiàn)程下工作,根據WINCE的消息響應機制,每個(gè)子設備論詢(xún)采集消息,CPU執行消息隊列如下所示:
在運行環(huán)境中,WINCE的消息響應的最小時(shí)隙為2毫秒,每個(gè)子設備的采集又有一個(gè)采集周期,設備命令是沒(méi)有時(shí)間周期概念的,按照Windows消息隊列來(lái)處理。
第一種,如果按照主從模式來(lái)開(kāi)發(fā)子設備就先假設了子設備(CAN設備)不會(huì )主動(dòng)發(fā)送數據,并且不會(huì )收到上個(gè)設備的干擾數據,在一般情況中這是不可能的。但可以這樣處理,在向設備發(fā)送數據時(shí),先等待一個(gè)周期,保證沒(méi)有上個(gè)設備的干擾數據,再把它清空,最后才進(jìn)行正常的設備采集工作。
第二種,如果按照分布式實(shí)時(shí)控制模式進(jìn)行開(kāi)發(fā),主要流程包括按照協(xié)議組合數據包,發(fā)送幀信息,接收幀信息和解析數據包。
5.3 系統出錯處理設計
設計原則:能從硬件上屏蔽數據的盡量從硬件上屏蔽(初始化設置控制器,驗收寄存器和屏蔽寄存器),再從軟件上屏蔽數據。如果不能達到設備地址解析一致性,就認為設計上是有缺陷的。當驅動(dòng)不能通訊時(shí),重啟運行環(huán)境或進(jìn)行復位操作就可以了。
6 結論
在本文中,首先介紹了CAN的基本原理以及在工業(yè)中的應用。然后以CAN在嵌入式系統的使用為例,提出了解決了CAN在實(shí)際中的系統設計,優(yōu)化方案以及代碼實(shí)現,并給出了在基于WINDOWS CE下的工控機上的具體實(shí)現。
在北京中聯(lián)克龍科技發(fā)展有限公司,天地科技股份有限公司常州自動(dòng)化分公司等公司,該系統解決方案都達到了令人滿(mǎn)意的效果,滿(mǎn)足了用戶(hù)遠程高速通訊的要求,能長(cháng)期穩定的運行。這些項目的經(jīng)濟效益到達了五百萬(wàn)元。
本文作者創(chuàng )新點(diǎn):提出了CAN在實(shí)際中的系統設計,優(yōu)化方案以及代碼實(shí)現,設計并實(shí)現了基于WINCE的滿(mǎn)足工業(yè)現場(chǎng)要求的CAN驅動(dòng)。
參 考 文 獻
[1]WINDOWS CE 內核定制及應用開(kāi)發(fā) 作者:周毓林。
[2]吳振綱,陳虎.PLC的人機接口與編程[J].微計算機信息,2005,8-1:21-23。
[3]WINDOWS CE 權威指南 作者:(美)Chris Muench。
[4]Windows VxD與設備驅動(dòng)程序權威指南(第二版) 作者:孫喜明譯。
評論