Matlab 版 (精华区)
发信人: hahn (有奇☆闭关造文中), 信区: Matlab
标 题: [合集] S-function问题探讨
发信站: 哈工大紫丁香 (Thu Sep 7 04:29:30 2006), 站内
────────────────────────────────────────
godblesschn (上帝) 于 (Wed May 24 20:39:59 2006) 说道:
十万火急,请教各位,在仿真时出现如下错误怎么办?
“Output returned by S-function 'convert' in 'motor_control/Subsystem2/S-Funct
ion' during flag=3 call must be a real vector of length 1”
万分感谢!!!
────────────────────────────────────────
godblesschn (上帝) 于 (Wed May 24 20:43:23 2006) 说道:
十万火急,请教各位,在仿真时出现如下错误怎么办?
: “Output returned by S-function 'convert' in 'motor_control/Subsystem2/S-F..
: ion' during flag=3 call must be a real vector of length 1”
: 万分感谢!!!
S-function如下:
function [sys,x0,str,ts] = convert(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 2,
sys=mdlUpdate(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
case 4,
sys=mdlGetTimeOfNextVarHit(t,x,u);
case 9,
sys=mdlTerminate(t,x,u);
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 1;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 1;
sizes.NumInputs = 3;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [0];
str = [];
ts = [-1 0];
function sys=mdlDerivatives(t,x,u)
sys = [0];
function sys=mdlUpdate(t,x,u)
sys=[];
function sys=mdlOutputs(t,x,u)
if u(2)<-100000|u(2)>100000
u(1)=u(1)+pi*(u(3)+1);
else
u(1)=u(1)+pi*u(3);
end
sys = [u(1)];
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1;
sys = t + sampleTime;
function sys=mdlTerminate(t,x,u)
sys = [];
────────────────────────────────────────
esong (准备走人) 于 (Wed May 24 21:00:17 2006) 说道:
试试看 在ouput函数里面 sys=u(1) 不要方括号
如果不行 检查一下你的输入 看看3个输入里面有没有复数
【 在 godblesschn (上帝) 的大作中提到: 】
: 十万火急,请教各位,在仿真时出现如下错误怎么办?
: S-function如下:
: function [sys,x0,str,ts] = convert(t,x,u,flag)
: ...................
────────────────────────────────────────
godblesschn (上帝) 于 (Wed May 24 21:08:46 2006) 说道:
【 在 esong (准备走人) 的大作中提到: 】
: 试试看 在ouput函数里面 sys=u(1) 不要方括号
: 如果不行 检查一下你的输入 看看3个输入里面有没有复数
ouput函数里面 sys=u(1) 不要方括号 还是不行。
再试试您说的另外一个办法。非常感谢!
我现在在作电机控制方面的仿真,如有同路人,诚心欢迎与您一起探讨!
────────────────────────────────────────
godblesschn (上帝) 于 (Wed May 24 21:11:08 2006) 说道:
【 在 esong (准备走人) 的大作中提到: 】
: 试试看 在ouput函数里面 sys=u(1) 不要方括号
: 如果不行 检查一下你的输入 看看3个输入里面有没有复数
可惜我不知道怎么才能检测输入是不是复数啊!
忘您指点!
────────────────────────────────────────
esong (准备走人) 于 (Wed May 24 21:45:40 2006) 说道:
不要说您了
我也是学生 听着感觉挺怪的^_^
根据提示错误 输出是一个 实的1维向量
刚才我随便搭了个模型 用你的s-function试了一下 是好使得
不用改
sys=[u(1)]就可以了
你的问题应该就是 输入可能有问题 检查一下输入信号
用一个to workspace看一下
【 在 godblesschn (上帝) 的大作中提到: 】
: 可惜我不知道怎么才能检测输入是不是复数啊!
: 忘您指点!
────────────────────────────────────────
esong (准备走人) 于 (Wed May 24 22:00:56 2006) 说道:
因为我不知道你怎么用的你的s-finction
所以只是推测 你要仔细看看你的模块
如果你要我搭的模型的话 留下邮箱
【 在 esong (准备走人) 的大作中提到: 】
: 不要说您了
: 我也是学生 听着感觉挺怪的^_^
: 根据提示错误 输出是一个 实的1维向量
: ...................
────────────────────────────────────────
godblesschn (上帝) 于 (Thu May 25 08:59:11 2006) 说道:
esong同学你好,我按你的做了,采用u1、u2、u3作为输入出现错误,采用v1、v2、v3就o
k。请帮我看看结果,我不知道怎么看,谢谢了,我的邮箱:ypf_250250@163.com
>> whos
Name Size Bytes Class
ans 101x1 18834 cell array
tout 1000x1 8000 double array
u1 1x1 124024 struct array
u2 1x1 124026 struct array
u3 1x1 124026 struct array
v1 1x1 124046 struct array
v2 1x1 124048 struct array
v3 1x1 124048 struct array
Grand total is 100111 elements using 771052 bytes
>> whos
Name Size Bytes Class
ans 101x1 18834 cell array
tout 1000x1 8000 double array
u1 1x1 62408 struct array
u2 1x1 62410 struct array
u3 1x1 62410 struct array
v1 1x1 62430 struct array
v2 1x1 62432 struct array
v3 1x1 62432 struct array
Grand total is 53899 elements using 401356 bytes
>> whos
Name Size Bytes Class
ans 101x1 18834 cell array
tout 1000x1 8000 double array
u1 7702x1 61616 double array
u2 7702x1 61616 double array
u3 7702x1 61616 double array
v1 7702x1 61616 double array
v2 7702x1 61616 double array
v3 7702x1 61616 double array
Grand total is 53700 elements using 396530 bytes
────────────────────────────────────────
esong (准备走人) 于 (Thu May 25 09:34:48 2006) 说道:
你用最后一组v1v2v3是好使的吧
前面的结构数组也好使吗?
我光看你的数组类型也查不出错误阿
我把我的模型给你油箱发过去吧
【 在 godblesschn (上帝) 的大作中提到: 】
: esong同学你好,我按你的做了,采用u1、u2、u3作为输入出现错误,采用v1、v2、v3就o
: k。请帮我看看结果,我不知道怎么看,谢谢了,我的邮箱:ypf_250250@163.com
: Name Size Bytes Class
: ...................
────────────────────────────────────────
godblesschn (上帝) 于 (Thu May 25 09:50:34 2006) 说道:
【 在 esong (准备走人) 的大作中提到: 】
: 你用最后一组v1v2v3是好使的吧
: 前面的结构数组也好使吗?
: 我光看你的数组类型也查不出错误阿
: 我把我的模型给你油箱发过去吧
太感谢了!真是感动!
────────────────────────────────────────
godblesschn (上帝) 于 (Thu May 25 10:32:15 2006) 说道:
【 在 esong (准备走人) 的大作中提到: 】
: 你用最后一组v1v2v3是好使的吧
: 前面的结构数组也好使吗?
: 我光看你的数组类型也查不出错误阿
: 我把我的模型给你油箱发过去吧
esong你好:
我把我的控制框图发到你的邮箱了,能帮我看看吗?万分感谢!
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.958毫秒