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)
页面执行时间:2.487毫秒