如何解决报错及修改源程序
simulink吧
全部回复
仅看楼主
level 1
我做的是永磁同步电机的直接转矩控制,在最后一部分要选择合适的三相逆变桥的各个IGBT的通断,我用全用的if else语句来进行选择的。源程序如下:
function [Ua,Ub,Uc] = table(Te,xitas,xitar,ciliangeiding)
if ciliangeiding==0 && Te==1 && 0<=xitas<pi/3
Ua=0
Ub=1
Uc=0
else if ciliangeiding==0 && Te==1 && pi/3<=xitas<2*pi/3
Ua=0
Ub=1
Uc=1
else if ciliangeiding==0 && Te==1 && 2*pi/3<=xitas<pi
Ua=0
Ub=0
Uc=1
else if ciliangeiding==0 && Te==1 && pi<=xitas<4*pi/3
Ua=1
Ub=0
Uc=1
else if ciliangeiding==0 && Te==1 && 4*pi/3<=xitas<5*pi/3
Ua=1
Ub=0
Uc=0
else if ciliangeiding==0 && Te==1 && 5*pi/3<=xitas<6*pi/3
Ua=1
Ub=1
Uc=0
else if ciliangeiding==0 && Te==0 && 0<=xitas<pi/3
Ua=0
Ub=1
Uc=1
else if ciliangeiding==0 && Te==0 && pi/3<=xitas<2*pi/3
Ua=0
Ub=0
Uc=1
else if ciliangeiding==0 && Te==0 && 2*pi/3<=xitas<pi
Ua=1
Ub=0
Uc=1
else if ciliangeiding==0 && Te==0 && pi<=xitas<4*pi/3
Ua=1
Ub=0
Uc=0
else if ciliangeiding==0 && Te==0 && 4*pi/3<=xitas<5*pi/3
Ua=1
Ub=1
Uc=0
else if ciliangeiding==0 && Te==0 && 5*pi/3<=xitas<6*pi/3
Ua=0
Ub=1
Uc=0
else if ciliangeiding==0 && Te==-1 && 0<=xitas<pi/3
Ua=0
Ub=0
Uc=1
else if ciliangeiding==0 && Te==-1 && pi/3<=xitas<2*pi/3
Ua=1
Ub=0
Uc=1
else if ciliangeiding==0 && Te==-1 && 2*pi/3<=xitas<pi
Ua=1
Ub=0
Uc=0
else if ciliangeiding==0 && Te==-1 && pi<=xitas<4*pi/3
Ua=1
Ub=1
Uc=0
else if ciliangeiding==0 && Te==-1 && 4*pi/3<=xitas<5*pi/3
Ua=0
Ub=1
Uc=0
else if ciliangeiding==0 && Te==-1 && 5*pi/3<=xitas<6*pi/3
Ua=0
Ub=1
Uc=1
else if ciliangeiding==1 && Te==1 && (0<=xitar<pi/6 || 11*pi/6<=xitar<12*pi/6)
Ua=1
Ub=1
Uc=0
else if ciliangeiding==1 && Te==1 && pi/6<=xitar<pi/2
Ua=0
Ub=1
Uc=0
else if ciliangeiding==1 && Te==1 && pi/2<=xitar<5*pi/6
Ua=0
Ub=1
Uc=1
else if ciliangeiding==1 && Te==1 && 5*pi/6<=xitar<7*pi/6
Ua=0
Ub=0
Uc=1
else if ciliangeiding==1 && Te==1 && 7*pi/6<=xitar<9*pi/6
Ua=1
Ub=0
Uc=1
else if ciliangeiding==1 && Te==1 && 9*pi/6<=xitar<11*pi/6
Ua=1
Ub=0
Uc=0
else if ciliangeiding==1 && Te==0 && (0<=xitar<pi/6 || 11*pi/6<=xitar<12*pi/6)
Ua=0
Ub=0
Uc=0
else if ciliangeiding==1 && Te==0 && pi/6<=xitar<pi/2
Ua=0
Ub=0
Uc=0
else if ciliangeiding==1 && Te==0 && pi/2<=xitar<5*pi/6
Ua=0
Ub=0
Uc=0
else if ciliangeiding==1 && Te==0 && 5*pi/6<=xitar<7*pi/6
Ua=0
Ub=0
Uc=0
else if ciliangeiding==1 && Te==0 && 7*pi/6<=xitar<9*pi/6
Ua=0
Ub=0
Uc=0
else if ciliangeiding==1 && Te==0 && 9*pi/6<=xitar<11*pi/6
Ua=0
Ub=0
Uc=0
else if ciliangeiding==1 && Te==-1 && (0<=xitar<pi/6 || 11*pi/6<=xitar<12*pi/6)
Ua=0
Ub=0
Uc=1
else if ciliangeiding==1 && Te==-1 && pi/6<=xitar<3*pi/6
Ua=1
Ub=0
Uc=1
else if ciliangeiding==1 && Te==-1 && 3*pi/6<=xitar<5*pi/6
Ua=1
Ub=0
Uc=0
else if ciliangeiding==1 && Te==-1 && 5*pi/6<=xitar<7*pi/6
Ua=1
Ub=1
Uc=0
else if ciliangeiding==1 && Te==-1 && 7*pi/6<=xitar<9*pi/6
Ua=0
Ub=1
Uc=0
else ciliangeiding==1 && Te==-1 && 9*pi/6<=xitar<11*pi/6
Ua=0
Ub=1
Uc=1
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
各个输入输出如系统图所示。现在的问题是怎么让每一次选择之后他的输出维持一个周期?还有就是在下一次输入波形到来的时候,如何让该程序再次从头开始执行?还有就是系统图这个报错怎么解决?
2020年09月26日 06点09分 1
level 1
自编程模块是左下角那个
2020年09月26日 06点09分 2
level 1
顶一下
2020年09月26日 14点09分 3
level 1
dd
2020年09月27日 01点09分 4
level 1
我再顶
2020年09月29日 15点09分 5
level 1
反正报错都是意思是三相电压电流测量模块输入输出想要矢量值这个意思,这怎么解决啊。把powergui按相量模式搞,又和逆变器不兼容。
2020年09月29日 15点09分 6
1