免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

[轉(zhuǎn)載]ModelReference使用隨手記

 stevin_lib 2018-07-18

    在之前的文章中大概提到過(guò),使用基于模型的嵌入式開(kāi)發(fā)注意的基本要素,總得概況來(lái)說(shuō)在使用時(shí)要注意三點(diǎn)內(nèi)容:

1、模型的層次結(jié)構(gòu)

2、數(shù)據(jù)接口

3、配置

 

    這三個(gè)方面對(duì)生成代碼和能否調(diào)試成功直接的影響。

 

    這個(gè)星期一直在調(diào)試一個(gè)很大的模型,總體模型是由很多個(gè)子模型拼接形成的,使用了ModelReference的形式,調(diào)試的過(guò)程中遇到了一些大大小小的問(wèn)題,記錄下來(lái)給自己留用也給大家分享一下。

 

1、什么時(shí)候用ModelReference?有那些好處?

    一般來(lái)說(shuō),一個(gè)系統(tǒng)有很多個(gè)相對(duì)獨(dú)立的功能,比如說(shuō)一個(gè)混合動(dòng)力車輛控制系統(tǒng)中,要實(shí)現(xiàn)駕駛員意圖判別,力矩仲裁,故障處理等等相對(duì)獨(dú)立的功能,這個(gè)時(shí)候把這些功能模塊拆分為單獨(dú)的模型來(lái)搭建,每個(gè)模型實(shí)現(xiàn)較為單一的功能,這個(gè)時(shí)候用ModelReference的方式比較好。

   第一、功能實(shí)現(xiàn)拆分,降低搭建模型的難度。

   第二、可以多個(gè)工程師同步進(jìn)行模型搭建,不同的工程師搭建自己熟悉的部分。

   第三、子模型可以單獨(dú)進(jìn)行調(diào)試修改和測(cè)試,比起較早的版本使用library方便很多。

 

2、如何使用ModelReference?

    在主模型中添加模塊Model,這個(gè)模塊可以在Simulink Library Explorer中 Simulink -> Ports & Subsystem 中找到,將其拖放到主模型中。

    雙擊后會(huì)彈出如下對(duì)話框:

ModelReference使用隨手記

    其中Model Name選擇你要引用的模型,點(diǎn)擊Browser手動(dòng)選取。這里要注意的是如果選擇的模型不在當(dāng)前工作路徑,應(yīng)用之后應(yīng)該會(huì)彈出一個(gè)對(duì)話框問(wèn)你是否要把該模型的路徑添加到工作路徑中,選擇是然后相應(yīng)的調(diào)用才可成功,不然主模型是找不到相應(yīng)調(diào)用的模塊的。

    但是,即使選擇了是,在下次打開(kāi)主模型時(shí),如果相應(yīng)的子模型路徑?jīng)]有被添加到工作路徑中,主模型仍會(huì)找不到相應(yīng)的子模型,所以最好在使用模型之前,把所用模型涉及到的模型的路徑都添加到工作路徑中。

    在使用較多的模型引用時(shí),建議大家把各個(gè)模型分類保存在不同的文件夾內(nèi),然后在主模型的回調(diào)函數(shù)PreLoadFcn中添加相應(yīng)的代碼,把各個(gè)子模塊的路徑添加工作路徑,尋址方式可以使用對(duì)主模型相對(duì)尋址的辦法。

    這里給出一個(gè)例子:

ModelReference使用隨手記

    這段代碼添加了主模型保存位置的一個(gè)subsystem文件夾下面的所有文件夾為工作路徑。這里不進(jìn)行代碼細(xì)講,大家可以自己研究。

 

   Model argument:模型參數(shù),這個(gè)可以在各個(gè)子模型中定義,有點(diǎn)類似與如果把整個(gè)子模型看作是函數(shù),這個(gè)就有點(diǎn)類似與的形參。一般用的不多,在model variants時(shí)會(huì)用到。

 

   Model argument values:模型參數(shù)值,在主模型中定義賦值,有點(diǎn)類似與函數(shù)的實(shí)參。可以是workspace中的變量,但是要與子模型中的模型參數(shù)類型對(duì)應(yīng),而且必須是有效值。

 

   Simulink mode:有四種方式,簡(jiǎn)單解釋如下——

        Normal:將整個(gè)被引用模型當(dāng)作原子子系統(tǒng)載入主模型或發(fā)起引用的模型中,進(jìn)行運(yùn)算。

        Accelerate:將整個(gè)被引用模型編譯為S-fuction供發(fā)起引用的模型調(diào)用。

        SIL需要Embedded Coder將被引用模型生成產(chǎn)品級(jí)代碼然后編譯仿真。

        PIL需要相應(yīng)的目標(biāo)板將被引用模型的代碼下載到目標(biāo)處理器中進(jìn)行仿真。

    一般前期的算法驗(yàn)證階段使用前兩種即可,默認(rèn)為Accelerate模型。

 

    在Model的配置窗口中還有一個(gè)Enable variants的按鈕,點(diǎn)擊之后可以一個(gè)模塊根據(jù)不同的條件引用多個(gè)模型,這個(gè)有點(diǎn)類似與C語(yǔ)言中的函數(shù)重載的概念(只是類似,使用的效果可以完全不同)。具體的使用在后面的文章中會(huì)介紹。

 

    其實(shí)完成了模型的Model name的定義就可以在發(fā)起引用的模型中使用了。和模型中的子系統(tǒng)一樣,在被引用的模型中定義的input和output接口,會(huì)在model模塊上顯示為輸入輸出接口。

 

3、使用Model Reference的一些注意事項(xiàng)。

   主要是在使用過(guò)程中注意避免一些數(shù)據(jù)沖突,建議的做法如下:

   第一、被引用的模型的輸入輸出接口要顯式的定義出數(shù)據(jù)類型,最好不要采用繼承選項(xiàng),特別是在多人合作的項(xiàng)目中,有利于模型的組合調(diào)試。

 

   第二、被引用模型的仿真采樣時(shí)間要顯示的定義出,不可以采用集成選項(xiàng),原因同上。

 

   第三、如果模型大量使用了workspace中的變量建議,Normal仿真模式下,在子模型的參數(shù)配置中 Optimization -> Simulaiton and code generation中選擇Inlined Parameters 能夠順利的實(shí)現(xiàn)調(diào)用仿真。(這一點(diǎn)在進(jìn)行代碼生成時(shí)的部署可能會(huì)不一樣,因?yàn)檫@樣的方式直接使用數(shù)字代替模型中的參數(shù),可以節(jié)省內(nèi)存,但是某些嵌入式系統(tǒng)需要使用在線調(diào)參的功能,這里要小心配置。)

 

   第四、如果被引用模型中有 To Workspace 以及 Scope 模塊那么,在被引用模型的參數(shù)設(shè)置中,Model Referencing -> Options for referencing this model 中 Total number of instance allowed per top model中應(yīng)該對(duì)應(yīng)選擇One。

     這里解釋下對(duì)應(yīng)的幾個(gè)選項(xiàng),默認(rèn)為Multiply,意思是可以在另外某個(gè)一個(gè)模型中多次引用該模型;如果選擇One是只能引用一次;Zero表示該模型禁止被引用。

    因?yàn)?To Workspace 以及 Scope 模塊都會(huì)向工作空間內(nèi)寫數(shù)據(jù),調(diào)用多個(gè)模型,那么會(huì)有多個(gè)模型都可以對(duì)工作空間中相同名字的變量進(jìn)行寫操作,所以為了避免數(shù)據(jù)混亂,這里應(yīng)該選擇One。

 

   第五、這一點(diǎn)和第一點(diǎn)有些相同,不過(guò)是個(gè)特例,簡(jiǎn)單說(shuō)下:有時(shí)候我們?cè)谧幽P椭袝?huì)保留一些輸出端口,作為以后備用,會(huì)使用一個(gè)Groud模塊連接到一個(gè)輸出上,但是在模型引用時(shí),會(huì)出現(xiàn)問(wèn)題,主要是由于Groud的輸出是個(gè)未定義的類型(雖然我們知道是0)。

    解決辦法有兩個(gè):(1)在模型的參數(shù)配置中 Optimization -> Simulaiton and code generation 選擇 Block reduction 即在實(shí)際編譯過(guò)程中將Groud的連接的未使用的接口優(yōu)化掉,當(dāng)然這不一定符合我們的預(yù)期。(2)在Groud和對(duì)應(yīng)的Output端口之間添加一個(gè)convert模塊明確的輸出的0是那個(gè)數(shù)據(jù)類型。

 

     目前調(diào)試工作中遇到的問(wèn)題就這么多,以后發(fā)現(xiàn)了繼續(xù)補(bǔ)充吧。

 

     歡迎讀到文章的同學(xué)一起討論和指正。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多