上位機與同類can設備的通信方法
【技術領域】
[0001]本發(fā)明涉及一種工程機械與汽車CAN總線通信,更具體地說,涉及一種上位機與同類CAN設備的通信方法。
【背景技術】
[0002]工程機械或汽車上CAN總線設備很多,如果同一個總線上掛了同一個廠家的多個同類CAN設備,這些設備具有相同的通信協(xié)議與運行系統(tǒng)(例如傳感器、運行系統(tǒng)相同但應用程序不同的控制器、顯示器等),需要通過CAN總線在為該廠家的同類CAN設備中一個設備中更新參數(shù)和程序,需要先通過上位機軟件掃描出總線上的所有這類設備,用戶選擇其中該設備后,再與該設備進行通信。
[0003]上位機發(fā)送請求掃描的CAN數(shù)據(jù)幀時,各設備都會對其發(fā)出應答幀。如果這些應答幀使用相同的ID,會出現(xiàn)相同ID同時發(fā)送的情況,這會產(chǎn)生應答幀沖突,導致總線數(shù)據(jù)錯誤。如果這些設備使用不同的ID,會占用很多ID資源,而且可能與其他廠家設備的ID沖突,而且使用多ID的方案還需要在裝車之前對整個總線上的CAN設備ID進行分配,很不方便。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術問題是針對現(xiàn)有上位機與CAN總線上CAN設備進行通信會產(chǎn)生幀沖突的問題,而提供一種上位機與CAN總線上CAN設備進行通信時避免CAN設備幀沖突的通?目方法。
[0005]本發(fā)明為實現(xiàn)其目的的技術方案是這樣的:提供一種上位機與同類CAN設備的通?目方法,其包括以下步驟:
[0006]步驟S1上位機獲取CAN總線上所有已經(jīng)廣播的ID ;在該步驟中,包括上位機直接連接在CAN總線上獲取總線上廣播的ID,也可以是上位機與直接連接在CAN總線上的無線通信設備如GPS進行無線通信,通過無線通訊設備獲取CAN總線上已廣播的ID。進一步地上位機通過無線通訊設備與CAN總線上的CAN設備進行通信。
[0007]步驟S2判斷CAN總線上已廣播的ID與上位機默認通信ID是否相同沖突,若有ID相同沖突,上位機修改其通信ID,并通過信息修改指令將上位機修改后的通信ID廣播到CAN總線上,CAN總線上的同類CAN設備收到通信ID修改信息后修改自身的通信ID,各同類CAN設備修改后的通信ID與上位機修改后的通信ID相同;如果沒有ID相同沖突,則上位機和同類CAN設備使用默認通信ID。
[0008]步驟S3上位機軟件通過發(fā)送掃描指令掃描總線上同類CAN設備。
[0009]步驟S4同類CAN設備設定掃描指令應答延時時間T ;各同類CAN設備的掃描指令應答延時時間T各不相同,各同類CAN設備收到掃描指令后開始計時并在各自的掃描指令應答延時時間T后發(fā)送掃描指令應答幀。
[0010]步驟S5上位機收到總線上所有同類CAN設備的應答幀并通過應答幀的內(nèi)容獲取所有同類CAN設備的序列號生成同類CAN設備列表;
[0011]步驟S6從所述的同類CAN設備列表中選定一個同類CAN設備,上位機與該選定的同類CAN設備進行應答通信。
[0012]本發(fā)明的上位機與CAN設備間的通信方法,可用于對基于CAN總線通信的控制系統(tǒng)的調(diào)試與升級進行刷機,在應用時,上位機連接在CAN總線上,上電后,經(jīng)過一定時長TB,上位機獲取CAN總線上所有已經(jīng)廣播的ID,然后進行上述步驟中的S2至S4步驟,上位機收到總線上所有同類CAN設備的應答幀并通過應答幀的內(nèi)容獲取所有同類CAN設備的序列號生成同類CAN設備列表,供技術人員選擇后上位機與其進行應答通信。本發(fā)明中,同類CAN設備是指具有相同通信協(xié)議的CAN設備,它們的通訊協(xié)議與上位機通信協(xié)議配套使用,可以實現(xiàn)數(shù)據(jù)通信。上位機與同類CAN設備基于通信ID進行通信,同類CAN設備具有相同的通信協(xié)議,在通信程序中都設定有它們默認的通信ID ;上位機的配套通信協(xié)議程序也設置有相同的默認通信ID。如果上位機和同類CAN設備在調(diào)試時將默認通信ID進行了修改,上位機和同類CAN設備在下一次上電復位后,它們的通信ID又恢復到程序中設置的默認通信ID。在上述上位機與同類CAN設備的通信方法中,步驟S4中,各同類CAN設備依據(jù)自身序列號或CPU芯片編碼計算掃描指令應答延時時間T,CAN設備的序列號和CPU芯片編碼通常是唯一的,基于此而計算出來的掃描指令應答延時時間T也基本上是唯一的,不會與其他的CAN設備的掃描指令應答延時時間T相同而導致通信沖突。各同類CAN設備可以在其上電后就讀取其自身序列號或CPU芯片編碼,當然也可以使用其他參數(shù)比如隨機數(shù)來進行計算掃描指令應答延時時間T。各CAN設備計算出來的時間T不相同,各CAN設備不會在同一時刻發(fā)送數(shù)據(jù),保證了上位機軟件可以收到總線上所有同類CAN設備的應答,不會引起沖突。各CAN設備的掃描指令應答延時時間T中最長的為Tmax,那么上位機在發(fā)出掃描指令后,在Tmax時間內(nèi)會受到CAN總線上所有同類CAN設備的應答幀。
[0013]在上述上位機與同類CAN設備的通信方法中,所述通信ID包括指令ID和數(shù)據(jù)ID。通信ID還可以包括其他用來通信的ID.
[0014]在上述上位機與同類CAN設備的通信方法中,步驟S4中各同類CAN設備所發(fā)掃描指令應答幀的內(nèi)容為各同類CAN設備的序列號。
[0015]在上述上位機與同類CAN設備的通信方法中,在于所述各同類CAN設備的序列號長度不超過5字節(jié)。
[0016]在上述上位機與同類CAN設備的通信方法中,掃描應答幀的ID與指令ID相同,此舉可節(jié)約ID資源。
[0017]本發(fā)明與現(xiàn)有技術相比,本發(fā)明解決了上位機與CAN設備進行通信時多個具有相同通信協(xié)議的設備節(jié)點同時發(fā)送應答報文導致總線錯誤的問題。
【附圖說明】
[0018]圖1是本發(fā)明上位機與同類CAN設備的通信方法的流程圖。
【具體實施方式】
[0019]下面結(jié)合【附圖說明】具體實施方案。
[0020]本發(fā)明中的上位機與CAN設備間的通信方法,可用基于CAN總線通信的控制系統(tǒng)的調(diào)試與升級,在應用時,上位機連接在CAN總線上,上電后,經(jīng)過一定時長TB,上位機獲取識別CAN總線上所有已經(jīng)廣播的ID,開始通信時,ID個數(shù)計數(shù)變量V = 0,上位機每收到一個ID就記錄在內(nèi)存的某個