用matlab simulink做了一个模型,包含有一个函数和一个状态机。
函数负责将整数数组的每个数加上头(83)和尾(69),依次输送到状态机。
状态机负责去掉头(83)和尾(69),再将数据依次输出。
要达到的效果是,状态机的最终依次输出50 48 55 52 48。
现在碰到的问题是,函数的输出显示其功能是OK的,但是它的执行和状态机的执行没有做到同步,导致最终从状态机输出端得到的数据和最新输入的数据不一致。
所以需要请教,是否有办法可以让函数和状态机同步。
下列图片是模型图和状态机内部图。
另外,函数的代码如下:
function y = fcn(u)
global cnt1;
global cnt2;
if length(u) < 1
y=0;
else
if cnt2 > length(u)
cnt2=1;
end
if cnt1==1
y=u(cnt2);
cnt1 = cnt1+1;
cnt2 = cnt2+1;
else
if cnt1<1
y=83;
cnt1=cnt1+1;
else
%cnt1>1
y=69;
cnt1=0;
end
end
end