matlabsimulink中的执⾏顺序问题
关于在simulink中开发⼀些硬件环境模型,有时候会碰到⼀些模块的执⾏先后顺序问题。⽐如说在⼀个通过UDP发送指令命令给客户端,要求发送的指令有先后的时间顺序,只有在前⼀条命令发送完以后,才可以进⾏下⼀条的命令发送。这时候会有⼀个问题,simulink是⼀个图形化的开发平台,他不像C、C++、JAVA那样是代码开发,它的模型开发过程中,没有⼀个执⾏的先后过程。在同⼀个模型下,所有在同⼀级的模块都默认是同时执⾏的(当然,执⾏过程中,由于运算的快慢,有的模块会抢先执⾏)。在代码开发程序执⾏过程中,总是按照源⽂件⽂本的先后顺序,从上到下执⾏代码,即代码源程序是默认时间执⾏顺序的。那么,为了能够在simulink中顺序执⾏模块,我有两种思路:第⼀种:根据模块的优先级顺序执⾏
在simulink中,每个模块都可以为其分配⼀个优先级,该优先级是⼀个从0开始的整数,优先级越低,其会先执⾏。这样可以保证执⾏顺序。做法:在要分配执⾏优先级的模块上,右键单击,选择block property,在priority(优先级)中填写定义的优先级值。
注意:该优先级只在存在优先级值的模块之间发挥作⽤,对于没有优先级值的模块,不能保证有优先级值的模块运⾏⼀定⽐没有优先级值的模块快。
第⼆种:为每⼀个模块设置⼀个使能开关,只有当达到预定的值的时候,才让指定模块使能
可以利⽤变量分配模块,分配⼀个变量,专门⽤来指定哪⼀个模块执⾏。当⼀个模块执⾏完后,让该变量加1,达到下⼀个使能预定值,以进⾏下⼀个的指定模块运⾏,并同时禁⽤其他模块。