當前位置:首頁 » 編程軟體 » 汽車通信指令程序編譯開發

汽車通信指令程序編譯開發

發布時間: 2023-02-01 05:15:18

⑴ 汽車如何編程

Define Class 環奇小大腳 As 舵機控制
Name = "環奇小大腳"
Procere Init()
This.COM口 = 9
This.速率 = 115200
Return DoDefault()
Endproc
Procere 定義油門曲線()
If Not DoDefault() Then
Return .F.
Endif
*-- 油門
Insert Into 油門曲線 (通道, 位置, 脈沖寬度) Values (0, -1, 1700) && 油門 - 倒車最大
Insert Into 油門曲線 (通道, 位置, 脈沖寬度) Values (0, 0, 1500) && 油門 - 中點
Insert Into 油門曲線 (通道, 位置, 脈沖寬度) Values (0, 0.05, 1450) && 油門 - 不動的
Insert Into 油門曲線 (通道, 位置, 脈沖寬度) Values (0, 1, 1350) && 油門 - 最大
*-- 方向舵
Insert Into 油門曲線 (通道, 位置, 脈沖寬度) Values (1, -1, 1450) && 方向舵 - 最左
Insert Into 油門曲線 (通道, 位置, 脈沖寬度) Values (1, 0, 1370) && 方向舵 - 中點
Insert Into 油門曲線 (通道, 位置, 脈沖寬度) Values (1, 1, 1250) && 方向舵 - 最右
Return .T.
Endproc
Enddefine

Define Class 舵機控制 As Form
Name = "舵機控制"
COM口 = 0
速率 = 115200
Procere Init()
This.定義油門曲線()
Return This.連接舵機控制板()
Endproc
Procere Destory()
*-- 釋放串口。
If Type("This.舵機控制板") = "O" Then
If This.舵機控制板.PortOpen Then
This.舵機控制板.PortOpen = .F.
Endif
Endif
Return .T.
Endproc
Procere 定義油門曲線()
*-- 創建油門曲線臨時表
Create Cursor 油門曲線 (通道 Integer, 位置 N(6, 4), 脈沖寬度 N(4))
Return .T.
Endproc
Procere 連接舵機控制板()
*-- 沒有「舵機控制板」就創建一個。
If Type("This.舵機控制板") <> "O" Then
This.AddObject("舵機控制板", "Olecontrol", "MSCommlib.MSComm")
Endif
*-- 打開串口。
If This.舵機控制板.PortOpen Then
This.舵機控制板.PortOpen = .F.
Endif
This.舵機控制板.CommPort = This.COM口
This.舵機控制板.Settings = Textmerge("<<This.速率>>,n,8,1")
If Not This.舵機控制板.PortOpen Then
This.舵機控制板.PortOpen = .T.
Endif
Return This.舵機控制板.PortOpen
Endproc
Procere 發送指令(通道, 位置)
Local 下限位置, 下限脈沖寬度, 上限位置, 上限脈沖寬度, 當前脈沖寬度, 串口指令代碼
m.下限位置 = -1
m.下限脈沖寬度 = 500
m.上限位置 = 1
m.上限脈沖寬度 = 2500
m.當前脈沖寬度 = 1500
m.串口指令代碼 = ""
*-- 1 找到當前位置最近的2個曲線值,如果找不到就取默認值 -1, 500 及 1, 2500。
*-- 2 生成指令。
*-- 3 發送給串口。
*-- 1
Select Top 1 * From 油門曲線 Where 通道 = m.通道 And 位置 = m.位置 Order By 位置 Desc Into Cursor curTemp
If Reccount("curTemp") > 0 Then
m.當前脈沖寬度 = curTemp.脈沖寬度
Else
Select Top 1 * From 油門曲線 Where 通道 = m.通道 And 位置 < m.位置 Order By 位置 Desc Into Cursor curTemp
If Reccount("curTemp") > 0 Then
m.下限位置 = curTemp.位置
m.下限脈沖寬度 = curTemp.脈沖寬度
Endif
Select Top 1 * From 油門曲線 Where 通道 = m.通道 And 位置 > m.位置 Order By 位置 Into Cursor curTemp
If Reccount("curTemp") > 0 Then
m.上限位置 = curTemp.位置
m.上限脈沖寬度 = curTemp.脈沖寬度
Endif
m.當前脈沖寬度 = Int((m.上限脈沖寬度 - m.下限脈沖寬度) / (m.上限位置 - m.下限位置) * (m.位置 - m.下限位置) + m.下限脈沖寬度)
Endif
*-- 2
m.串口指令代碼 = Textmerge("#<<m.通道>>P<<m.當前脈沖寬度>>")
Debugout m.串口指令代碼
*-- 3
This.舵機控制板.OutBufferCount = 0
This.舵機控制板.Output = 串口指令代碼 + Chr(13)
Endproc
Enddefine

⑵ 學習汽車模塊之間的編程與通訊

汽車電子技術的發展和進步,一般的家用轎車上有數十個電子控制單元,豪華轎車更是達到數百個電子控制單元。汽車生產製造的過程中,同一種電子控制單元用在不同配置的汽車上,需要使用不同的軟體參數。並且出廠之前,需要使用檢測設備與電子控制單元進行通訊(讀取、寫入、控制),以確保電子控制單元內軟體的正確性。
汽車生產廠家需要根據不同汽車、不同的電子控制單元的產品規范進行編程,目前的編程方式為敲代碼,每一個語句由多個代碼組成,編程工作難度大、非專業編程人員無法進行編程工作,且此種方式的編程效率低。
本發明的目的是解決上述的編程難度大、編程效率低的問題。應用可視化編程系統,編程工作簡化成了「填空題」、「選擇題」,即使非專業編程人員也能輕易掌握完成編程工作,且編程效率大幅度提高。
本發明包括以下步驟:
1)在個人電腦的可視化編程系統的後台設置中,將汽車電子控制單元的通訊程序分段切割,每發送或者接受一條指令的語句成為一個塊;傳統編程以語句為最小單位,一個完整的程序語句數萬行;可視化編程以塊為最小單位,一個完整的程序由數十到數百個塊組成;
2)每個塊中,針對不同汽車電子控制單元需要有參數或者指令變化的部分,不賦具體值,以地址名代替;
3)將地址名鏈接至前台界面的單元格,前台界面單元格與後台地址名相互唯一對應;
4)依據汽車電子控制單元的產品規範文件,繪製程序流程圖,將指令與參數變化點整理出來;
5)在可視化編程系統的界面,以填空提、選擇題方式完成參數及指令變化點的輸入;
6)在可視化編程系統的界面,依據整理好的程序流程圖,通過對塊的組合,設置塊與塊之間的運行與跳轉信息,並設置通訊參數;所述的通訊參數為通訊等待時間、通訊波特率等;
7)在可視化編程系統的界面,點擊編程按鈕,系統自動將前台界面的數據通過地址名傳送至後台,在後台完成計算,組合成可執行程序;
8)一個完整的汽車電子控制單元通訊程序編程工作完成,重復上述步驟,完成下一個電子控制單元的通訊程序編程。
附圖說明
圖1為可視化編程系統應用流程圖。
圖2為使用本發明進行某車型制動防抱死電子控制模塊通訊程序流程圖。
圖3為某車型制動防抱死電子控制模塊通訊程序的整理通訊參數及指令變化點電腦界面。
圖4為某車型制動防抱死電子控制模塊通訊程序的可視化編程系統的界面以填空、選擇的方式完成參數與指令變化點的輸入電腦界面。
圖5為某車型制動防抱死電子控制模塊通訊程序的系統自動完成後台程序運行、生成可執行程序、編程工作完成電腦界面。
具體實施方式
如圖1所示,本發明包括以下步驟:
1)在個人電腦的可視化編程系統的後台設置中,將汽車電子控制單元的通訊程序分段切割,每發送或者接受一條指令的語句成為一個塊;傳統編程以語句為最小單位,一個完整的程序語句數萬行;可視化編程以塊為最小單位,一個完整的程序由數十到數百個塊組成;
2)每個塊中,針對不同汽車電子控制單元需要有參數或者指令變化的部分,不賦具體值,以地址名代替;
3)將地址名鏈接至前台界面的單元格,前台界面單元格與後台地址名相互唯一對應;
4)依據汽車電子控制單元的產品規範文件,繪製程序流程圖,將指令與參數變化點整理出來;
5)在可視化編程系統的界面,以填空提、選擇題方式完成參數及指令變化點的輸入;
6)在可視化編程系統的界面,依據整理好的程序流程圖,通過對塊的組合,設置塊與塊之間的運行與跳轉信息,並設置通訊參數;所述的通訊參數為通訊等待時間、通訊波特率等;
7)在可視化編程系統的界面,點擊編程按鈕,系統自動將前台界面的數據通過地址名傳送至後台,在後台完成計算,組合成可執行程序;
8)一個完整的汽車電子控制單元通訊程序編程工作完成,重復上述步驟,完成下一個電子控制單元的通訊程序編程。
使用可視化編程系統進行某車型制動防抱死電子控制模塊通訊程序開發,實施步驟:
1)依據產品文件,繪製程序流程圖,見圖2;
2)依據產品文件,整理通訊參數及指令變化點,見圖3;
3)在可視化編程系統的界面以填空、選擇的方式完成參數與指令變化點的輸入,見圖4;
4)依據流程圖,對前台指令(對應後台程序塊)進行組合、設置通訊參數,見圖4;
5)點擊編程按鈕,系統自動完成後台程序運行,生成可執行程序,編程工作完成。見圖5。
以上為編程全過程,相比傳統的敲代碼編程,編程難度大幅度降低,技術不是專業的軟體技術人員,也能輕松完成編程工作。同時,此種編程方式,大幅節省了編程時間,提高了編程效率。
本發明公開了一種汽車電子控制單元通訊程序的可視化編程方法。該編程方法,包括一台個人電腦、可視化編程系統。其中,個人電腦用於運行可視化編程系統、存儲數據。可視化編程系統用於實現參數的輸入、程序指令的生成及組合、並自動生成可執行的程序文件。通過可視化編程系統,將傳統編程的敲代碼工作變成了填空及選擇題,極大簡化了編程的難度,並顯著提升了編程效率。

⑶ 如何進行汽車 CAN 匯流排開發

首先,請看這份恆潤工程師寫的論文《CAN匯流排系統測試技術》。
裡面基本描述了CAN匯流排開發的流程,但主要側重於CAN匯流排的測試,不過也能讓你有所了解。
根據你的描述,假設你的要求是:能夠基於某嵌入式平台(最好該平台在汽車ECU開發中被廣泛使用),根據給定的通信協議(一般由通信矩陣描述),編寫CAN介面代碼,並能通過相關設備進行簡單測試。
推薦的學習步驟為:
1. 了解CAN基本知識
可以通過這個ppt,恆潤的東西還是不錯的。
CAN基礎_網路文庫
2. 直觀的了解CAN
這需要你購買或借用CAN匯流排檢測設備,檔次差很多。如果是你自己想玩,可以買個周立功的USB轉CAN,淘寶也就幾百塊錢。如果是課題組采購,可以買個Kvaser的USBCAN,幾千塊吧。大致這個樣子。
要是土豪的話,可以買Vector的VN1600,這個就好幾萬了。以上三種我都用過。一定要買雙通道,然後一個口發,一個口接,可以自己接延長線通過示波器看信號了。嘗試修改報文ID,數據,波特率等等,看示波器的變化,對理解第一部分的內容很有幫助
3. 選擇嵌入式平台,學習CAN介面的編程
飛思卡爾MC9S08DZ60MLH 8位汽車級CAN匯流排 開發板 學習板超
可以選擇這個小板子練習一下,程序的寫法都是差不多的。然後和第二部分的匯流排檢測設備連在一起進行測試。
這一步需要詳細了解信號轉換的知識,特別是Big Endian和Little Endian的區別,factor和offset的作用,如何置1或置0,可以參考DBC_File_Format_DocumentaTIon_網路文庫,很詳細,看完就懂了。
4. 如果有興趣,可以看看J1939協議(用於商用車)或者CANOpen協議(用於現場控制,很多電機控制器使用)或者ISO 15031-5(用於OBD診斷)。
最後,希望你在了解CAN以後,不要花過多的精力在底層上,基本都是體力勞動。體現價值的還得是上層。請看看一汽技術中心的相關招聘要求:
工作職責
1.設計新能源汽車網路拓撲和制定網路技術需求;
2.制定新能源汽車網路通信需求、網路通信矩陣和網路資料庫
3.設計和開發新能源汽車網路通信協議模擬試驗、網路通信規范、網路線束規范;
4.設計新能源汽車網關控制器及具有相同網路通信功能的介面控制器產品定義與技術規范;
5.負責新能源汽車電子電氣開發過程中的問題解決,配合生產和售後服務。來源:知乎 作者:Wang Yu

熱點內容
計算機編譯型語言大全 發布:2024-04-22 21:01:54 瀏覽:263
類數組java 發布:2024-04-22 21:01:09 瀏覽:328
ae腳本插件在哪 發布:2024-04-22 20:54:25 瀏覽:876
linux編譯是什麼 發布:2024-04-22 20:18:41 瀏覽:611
c感知哈希演算法 發布:2024-04-22 20:08:29 瀏覽:303
手機能訪問國外的軟體 發布:2024-04-22 20:03:25 瀏覽:267
linux腳本後台執行 發布:2024-04-22 20:03:11 瀏覽:172
大話西遊數據編譯 發布:2024-04-22 19:59:05 瀏覽:87
夜神雲伺服器 發布:2024-04-22 19:48:45 瀏覽:751
c語言中整除符號 發布:2024-04-22 19:44:36 瀏覽:698