matlab/simulink中的執行順序問題


關於在simulink中開發一些硬件環境模型,有時候會碰到一些模塊的執行先后順序問題。比如說在一個通過UDP發送指令命令給客戶端,要求發送的指令有先后的時間順序,只有在前一條命令發送完以后,才可以進行下一條的命令發送。這時候會有一個問題,simulink是一個圖形化的開發平台,他不像C、C++、JAVA那樣是代碼開發,它的模型開發過程中,沒有一個執行的先后過程。在同一個模型下,所有在同一級的模塊都默認是同時執行的(當然,執行過程中,由於運算的快慢,有的模塊會搶先執行)。在代碼開發程序執行過程中,總是按照源文件文本的先后順序,從上到下執行代碼,即代碼源程序是默認時間執行順序的。

那么,為了能夠在simulink中順序執行模塊,我有兩種思路:

第一種:根據模塊的優先級順序執行

在simulink中,每個模塊都可以為其分配一個優先級,該優先級是一個從0開始的整數,優先級越低,其會先執行。這樣可以保證執行順序。

做法:在要分配執行優先級的模塊上,右鍵單擊,選擇block property,在priority(優先級)中填寫定義的優先級值。

注意:該優先級只在存在優先級值的模塊之間發揮作用,對於沒有優先級值的模塊,不能保證有優先級值的模塊運行一定比沒有優先級值的模塊快。

第二種:為每一個模塊設置一個使能開關,只有當達到預定的值的時候,才讓指定模塊使能

可以利用變量分配模塊,分配一個變量,專門用來指定哪一個模塊執行。當一個模塊執行完后,讓該變量加1,達到下一個使能預定值,以進行下一個的指定模塊運行,並同時禁用其他模塊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM