應(yīng)用背景:
隨著生活水平提升,越來越多的車進(jìn)去用戶家庭,車輛在保養(yǎng)健康維護(hù)過程中好多隱藏的問題不便于拆卸和查看,比如hud模塊,是否有遇到過高壓沖擊,是否有點(diǎn)擊、led、屏、間斷性失去通訊等一些列隱藏故障以及版本是否較老,有新版本軟件更新迭代是否可以升級(jí)等等。針對(duì)這一類問題,車身模塊本身有版本定義、故障碼診斷反饋以及uds測(cè)試模式調(diào)圖等功能,這時(shí)候需要有一定的診斷設(shè)備發(fā)特定報(bào)文與模塊通訊才能請(qǐng)求到uds診斷信息。
于是就有了這個(gè)便攜診斷工具設(shè)計(jì)。為了方便4S店以及維修人員對(duì)車輛的健康狀態(tài)的維護(hù)和保養(yǎng),快捷的獲取車輛狀態(tài)等信息,該診斷儀當(dāng)前可用于對(duì)汽車的診斷模塊版本信息,uds診斷調(diào)節(jié)基本功能檢查是否有故障,部分模塊切換測(cè)試圖查看顯示效果是否異常,讀取故障狀態(tài)等,最終聯(lián)網(wǎng)數(shù)據(jù)儲(chǔ)存服務(wù)器,便于后續(xù)統(tǒng)計(jì)車輛維護(hù)狀態(tài),歷史故障情況
另外該診斷工具小巧,便于攜帶,一些不便于攜帶大件行李情況下可以方便攜帶,裝口袋即可;未來對(duì)于一些有一定專業(yè)技能的人士可以添加診斷報(bào)文用戶定義編譯,可以指定報(bào)文發(fā)送請(qǐng)求,這樣對(duì)于使用的廣泛性得以擴(kuò)大。
實(shí)現(xiàn)功能:
通過按鍵以及調(diào)節(jié)滑塊等操作發(fā)出指定uds診斷報(bào)文,請(qǐng)求對(duì)應(yīng)診斷模塊的故障狀態(tài)顯示出來。另外可以連接網(wǎng)絡(luò)上報(bào)服務(wù)器此次診斷具體信息,用于服務(wù)器統(tǒng)計(jì)記錄該車歷史排查維修記錄,方便排查歷史記錄
正文:
1.效果展示
設(shè)計(jì)操作頁面如下,通過點(diǎn)擊按鈕可發(fā)出can診斷報(bào)文,等待回應(yīng)狀態(tài)顯示到診斷儀上。最終連接網(wǎng)絡(luò),上傳診斷數(shù)據(jù)信息。整體ui效果頁面如下:
2.硬件框架
硬件結(jié)構(gòu)上比較簡(jiǎn)單,框架設(shè)計(jì)如下,芯片的can 口通過OBD連接車身can網(wǎng),wifi模塊連接在服務(wù)器局域網(wǎng)內(nèi)(當(dāng)然在不方便聯(lián)網(wǎng)情況下可以先進(jìn)行診斷,后面將數(shù)據(jù)存儲(chǔ)診斷儀flash中,待有網(wǎng)絡(luò)下聯(lián)網(wǎng)上報(bào)診斷數(shù)據(jù))
3.軟件框架
軟件結(jié)構(gòu)上主要是上電啟動(dòng)后注冊(cè)驅(qū)動(dòng),初始化完can wifi等外設(shè)后加載ui,隨后子線程中信號(hào)阻塞監(jiān)聽can報(bào)文,直到接收到了can報(bào)文,單片機(jī)中斷,發(fā)出信號(hào)量,子線程讀取can報(bào)文內(nèi)容。
Ui任務(wù)中按鈕以及滑塊等用戶交互接口會(huì)觸發(fā)對(duì)應(yīng)點(diǎn)擊事件,收到按鈕點(diǎn)擊后組包發(fā)出一條can診斷報(bào)文,等待can回應(yīng)信息后,解析回應(yīng)內(nèi)容存儲(chǔ)對(duì)應(yīng)buffer中,并更新ui顯示內(nèi)容。
Tcp連接按鈕按下會(huì)在子線程創(chuàng)建socket任務(wù),等待上傳任務(wù)或者再次點(diǎn)下按鈕終止任務(wù)。上傳按鈕按下會(huì)將診斷信息從buffer中取出,重新組包,按字符串形式存儲(chǔ),之后調(diào)用先前創(chuàng)建的socket中send指令發(fā)出
4.軟件邏輯
a) Ui使用SquareLine工具設(shè)計(jì),開機(jī)后加載ui,如下是繪制的ui效果
b) 配置can數(shù)據(jù)波特率500kbit/s,初始化設(shè)備驅(qū)動(dòng)后打開設(shè)備,創(chuàng)建線程不斷監(jiān)聽can信息
子線程中通過阻塞監(jiān)聽信號(hào)量,而信號(hào)量是由can收到數(shù)據(jù)中斷發(fā)出信號(hào)量,配置驅(qū)動(dòng)中Every Message觸發(fā)can中斷,再讀取can數(shù)據(jù)解析打印出來。
開機(jī)后點(diǎn)擊按鈕,可以看到can接受線程打印的log,can發(fā)送接受數(shù)據(jù)正常
c) Wifi使用板子上rw007模塊,使能ifconfig等工具方便調(diào)試,在加載ui后配置了wifi名字和密碼3次請(qǐng)求連接
復(fù)位開機(jī)后串口中也可以看到wifi連接是成功的
d) Can診斷統(tǒng)一封裝到can_port_req_uds_cmd接口請(qǐng)求和第四個(gè)參數(shù)為返回結(jié)構(gòu)體指針,void*類型可按個(gè)人需求封裝數(shù)據(jù)結(jié)構(gòu),最終返回了id,len長(zhǎng)度以及data指針,最終數(shù)據(jù)按對(duì)應(yīng)格式調(diào)整顯示
e) Tcp客戶端在按鈕connect點(diǎn)擊后創(chuàng)建新線程連接,連接后保持等待,直到提交數(shù)據(jù)按鈕按下時(shí)
診斷到的信息打包成對(duì)應(yīng)格式按字符串方式傳遞,通過socket實(shí)例發(fā)送出去給服務(wù)器端
通過tcp上位機(jī)監(jiān)聽和串口打印信息,可以看到診斷信息上傳ok
-
上位機(jī)
+關(guān)注
關(guān)注
27文章
941瀏覽量
54790 -
診斷儀
+關(guān)注
關(guān)注
1文章
78瀏覽量
8835 -
TCP通信
+關(guān)注
關(guān)注
0文章
146瀏覽量
4221 -
RTThread
+關(guān)注
關(guān)注
8文章
132瀏覽量
40859 -
LVGL
+關(guān)注
關(guān)注
1文章
83瀏覽量
2957
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論