前言
TSMaster近日更新了五大模塊的新功能,主要包含網(wǎng)絡(luò)仿真中的checksum和rolling counter的本地化支持、J1939多幀報(bào)文收發(fā)、MATLAB自動化控制模塊等等。小編接下來將在之后推文中給大家以圖文教程的形式一一講解。
今天介紹TSMaster的新功能—網(wǎng)絡(luò)仿真中的checksum和rolling counter的本地化支持,該功能可以輕松做到不寫一行代碼就可以實(shí)現(xiàn)帶checksum和rc的網(wǎng)絡(luò)仿真。
舊版本 VS 新版本
Old VS New version /
舊版本
首先回顧一下舊的方法,也就是使用小程序?qū)γ總€信號進(jìn)行模擬,打開這個示例隨后按F5啟動仿真,就可以看到不斷遞增的rolling counter,也就是藍(lán)色的這個三角波。
我們展開trace,從中把這個checksum拖到圖形窗口中,就可以觀察checksum的實(shí)時曲線。再看我們的小程序代碼,在pretx的回調(diào)函數(shù)中,需要寫程序來直接控制checksum和rolling counter的信號,倘若涉及到大型的網(wǎng)絡(luò)仿真,那么就需要花費(fèi)大量的時間,每個信號進(jìn)行逐個處理容易出錯,同時也會帶來效率的問題。
新版本
新功能則不需要手動處理每個信號,我們來新建一個工程試一試。打開工程-工程目錄,找到TSMaster的安裝包自帶的示例數(shù)據(jù)庫。例如powertrain,我們將它拖入,可以看到數(shù)據(jù)庫已經(jīng)載入。
我們選擇一幀報(bào)文,以ABS data為例,可以看到這個報(bào)文并沒有checksum和rc,我們需要修改數(shù)據(jù)庫給他加上這兩個信號,點(diǎn)擊編輯按鈕,打開數(shù)據(jù)庫編輯器,我們新建兩個信號,分別命名為ABS checksum。checksum一般是8位的無符號,然后還有一個是ABS。rc一般是4位無符號,再將這兩個信號拖入ABS data這個報(bào)文里面,隨后我們打開這個報(bào)文的配置窗口,將dlc改為8,切換到layout。
我們可以將我們新建的rc拖動到合適的位置,接下去是設(shè)定checksum的位置,這是我們新增的checksum信號,由于checksum是保護(hù)報(bào)文的數(shù)據(jù)內(nèi)容的,一般位于報(bào)文的第一個字節(jié)或者是最后一個字節(jié)。在這里我們把這個信號拖到最后一個字節(jié),這意味著保護(hù)的范圍是從0到6字節(jié),點(diǎn)擊確定,再點(diǎn)擊保存,再點(diǎn)擊關(guān)閉??梢钥吹絋SMaster會自動刷新所編輯的數(shù)據(jù)庫。
這時候我們展開報(bào)文,選擇abs data,切換到布局窗口,我們就可以看到我們新增的兩個信號,一個是rolling counter,在52-55位之間;另外一個是checksum,在56-63之間。新增的checksum和rc已經(jīng)按照我們的要求設(shè)置成功了。
checksum和rc的本地化支持
localization support for checksum & rc /
>關(guān)閉數(shù)據(jù)庫編輯器,切換到仿真,打開rbs窗口,雙擊激活engine節(jié)點(diǎn),設(shè)置為自啟動仿真,隨后按下F5啟動仿真,這就可以讓rbs來仿真engine這個節(jié)點(diǎn)的所有報(bào)文。
切換到分析,打開trace窗口,展開abs data報(bào)文,可以看到我們新增的rc和checksum都是默認(rèn)的0,這時候就需要進(jìn)行配置,回到rbs窗口,在rc信號上點(diǎn)擊右鍵,設(shè)置它為rolling counter信號,設(shè)置將會立即生效,可以看到rolling counter在變化。
>接著打開一個圖形窗口,把rc拖入圖形就可以看到鋸齒波,說明rc已經(jīng)生效,接下來就要配置checksum。由于checksum涉及到crc算法庫的安裝和編輯,這個信號是不能夠?qū)崟r的去配置它的,所以我們先按F6停止仿真,再在checksum信號上右擊選擇設(shè)為checksum信號,那么第一次設(shè)置會看到系統(tǒng)會安裝默認(rèn)的crc的算法庫,并且在安裝成功后會彈出crc算法列表。
我們可以隨便選一個算法比如說crc 8。這個時候我們就已經(jīng)成功的將crc 8的算法和這個checksum信號產(chǎn)生了關(guān)聯(lián)。此時還有一個配置項(xiàng)需要確認(rèn),那就是這個checksum信號的保護(hù)范圍,默認(rèn)是從0字節(jié)開始,保護(hù)后面7個字節(jié),那么這是可以隨時更改。我們可以點(diǎn)擊右鍵,選擇編輯crc算法參數(shù),就可以看到已經(jīng)配置過的crc信號表。
那么雙擊這個表里面任何一個信號,還可以繼續(xù)修改他關(guān)聯(lián)的crc算法,這個時候我們先不修改算法,我們只需要知道這個窗口是可以更改保護(hù)的字節(jié)起始以及保護(hù)的字節(jié)數(shù)就可以了。那么我們現(xiàn)在先點(diǎn)擊確認(rèn),然后我們再次按下F5啟動仿真,展開abs data報(bào)文,我們就可以看到checksum已經(jīng)在刷新了。
>我們把這個信號拖到圖形窗口中,就可以看到了checksum的實(shí)時曲線,而一般情況下,checksum的算法都是公司自定義的,我們完全可以改寫默認(rèn)的crc的算法庫來做到這一點(diǎn)。點(diǎn)擊仿真-小程序庫,可以看到默認(rèn)的crc的算法庫也不過就是一個小程序庫而已,他提供了21個默認(rèn)的算法。
我們可以在c代碼編輯器中找到這個算法庫的源代碼,注意的是這個小程序是以庫文件的方式提供的,是沒有獨(dú)立的啟動和停止按鈕的,我們在此制定一個crc算法。點(diǎn)右鍵添加自定義函數(shù)取名為mycrc,參數(shù)表可以隨便選一個copy,然后我們可以把現(xiàn)有的算法的內(nèi)容抄進(jìn)來。比如說這個crc8,然后在這個基礎(chǔ)上進(jìn)行修改,我們可以隨意的改,比如說將這個poly = 0x17,如果要想把我們新的這個函數(shù)安裝到系統(tǒng)中,只需要編譯這個算法庫就可以,當(dāng)然編譯的過程需要保證。
首先要停止仿真,因?yàn)楫?dāng)前的這個算法庫依然在被rbs引擎使用,此時我們再點(diǎn)擊編譯就可以看到編譯成功,并且已經(jīng)自動安裝到我們的系統(tǒng)中。
如何實(shí)現(xiàn)實(shí)時曲線
How to achieve real-time curves /
我們打開總線仿真,在這個信號上點(diǎn)右鍵,重新選擇一下crc算法,選擇我們的mycrc,就可以關(guān)聯(lián)成功。然后我們按F5啟動仿真切換到圖形窗口,就可以看到不一樣的checksum的實(shí)時曲線,這是因?yàn)檫@個整個報(bào)文里面就只有rolling counter的一個信號在變化,所以這個checksum的信號的曲線具有一定的規(guī)律,那么同時我們也可以讓其他的信號也動起來,這該怎么做呢?
1、手動設(shè)置方法
最快的一種是使用發(fā)送窗口的信號生成器。我們可以首先在rbs窗口中將這個報(bào)文的周期改為0,那這樣的話rbs就不會自動發(fā)送這個報(bào)文,然后我們切換到發(fā)送窗口,點(diǎn)擊添加來自數(shù)據(jù)庫的報(bào)文,選擇我們的abs data,我們點(diǎn)擊發(fā)送,然后切換到圖形窗口,就可以看到跟之前一樣的曲線。這是新功能的強(qiáng)大之處,也就是不管該報(bào)文在系統(tǒng)的哪個模塊被發(fā)出,只要rbs是激活狀態(tài),報(bào)文的checksum和rolling counter就能夠被正確配置。
接下來我們可以激勵其中的其他信號,比如說carspeed這個信號,我們可以將生成器選擇為正弦波,配置偏移量為150,因?yàn)樗姆秶?到300,然后點(diǎn)擊應(yīng)用關(guān)閉,點(diǎn)擊啟動生成,這個時候就可以看到checksum發(fā)生了變化,這時候我們把carspeed拖進(jìn)來,就可以看到所有信號的實(shí)時曲線。這時候的checksum就顯示出了無規(guī)則的變化,這是因?yàn)橥瑫r有了兩個信號在變化,那么以上就是checksum和rolling counter的手動設(shè)置方法。
2、自動設(shè)置方法
我們還可以通過小程序API來做到自動設(shè)置,首先可以清空這兩個信號的配置,只要在上面點(diǎn)擊右鍵,選擇設(shè)為普通信號,那這兩個信號就不再具有功能,可以看到這兩個信號就變成了默認(rèn)的值,然后我們可以打開自動化模塊,新增一個函數(shù)調(diào)用,搜rc可以從中找到跟rolling counter有關(guān)的就是這個can rbs set rc Signal。他只有一個傳入?yún)?shù),就是信號的數(shù)據(jù)庫地址。接著我們到總線仿真里面,把這個rc信號頂右鍵的數(shù)據(jù)庫地址拷貝過來,這樣就實(shí)現(xiàn)了這個信號的設(shè)置。
那么我們可以再增加一個函數(shù)調(diào)用,按回車新建一個新的動作,然后我們選擇crc相關(guān)的函數(shù),那么可以看到這個函數(shù)名叫set crc Signal,他有4個參數(shù)。第一個也是信號地址,我們就如法炮制,選擇checksum的數(shù)據(jù)庫地址,填入后第二個就是算法的名稱,那這個名稱其實(shí)就是剛才我們所選的mycrc,那么在這個前面需要加上小程序的前綴,所以是crc.mycrc。那么小程序可以看到他的名稱是crc,所以只需要把這個這個名稱加上點(diǎn),再加上函數(shù)名抄過來就可以了,然后他所保護(hù)的字節(jié)起始是從第0個字節(jié)開始,往后保護(hù)7個字節(jié),那么這樣就算設(shè)置完畢。
以上就是本次發(fā)布的新功能的全部用法,我們下期再見!(具體操作步驟詳情可直接觀看我們的B站視頻哦~)
-
仿真
+關(guān)注
關(guān)注
50文章
3972瀏覽量
132970
發(fā)布評論請先 登錄
相關(guān)推薦
評論