声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1181|回复: 3

求助,.c文件编译为.dll文件出错

[复制链接]
发表于 2007-6-6 15:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
#define S_FUNCTION_NAME  s_friction_woodchen
#define S_FUNCTION_LEVEL 2
#include "simstruc.h"

static void mdlInitializeSizes(SimStruct *S)
{
   

    ssSetNumSFcnParams(S, 0);  
    if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S)) {
        
        return;
    }

    ssSetNumContStates(S, 0);
    ssSetNumDiscStates(S, 0);

    if (!ssSetNumInputPorts(S, 1)) return;
    ssSetInputPortWidth(S, 0, 1);
    ssSetInputPortRequiredContiguous(S, 0, 0);
   
    ssSetInputPortDirectFeedThrough(S, 0, 1);

    if (!ssSetNumOutputPorts(S, 1)) return;
    ssSetOutputPortWidth(S, 0, 1);

    ssSetNumSampleTimes(S, 1);
    ssSetNumRWork(S, 0);
    ssSetNumIWork(S, 0);
    ssSetNumPWork(S, 0);
    ssSetNumModes(S, 0);
    ssSetNumNonsampledZCs(S, 0);

    //ssSetOptions(S, 0);
}


static void mdlInitializeSampleTimes(SimStruct *S)
{
    ssSetSampleTime(S, 0, INHERITED_SAMPLE_TIME);
    ssSetOffsetTime(S, 0, 0.0);
    ssSetModelReferenceSampleTimeDefaultInheritance(S);
}



#define MDL_INITIALIZE_CONDITIONS   
#if defined(MDL_INITIALIZE_CONDITIONS)
  
  static void mdlInitializeConditions(SimStruct *S)
  {
  }
#endif

#define MDL_START
#if defined(MDL_START)
  
  static void mdlStart(SimStruct *S)
  {
  }
#endif

static void mdlOutputs(SimStruct *S, int_T tid)
{
    real_T u =ssGetInputPortSignal(S,0);
    real_T f = ssGetOutputPortSignal(S,0);
    //y[0] = u[0];
    int_T sgn;
    real_T g,z;
    real_T Q0=1e5;
    real_T Q1=sqrt(1e5);
   
   if u>0
         sgn=1;
       elseif u<0
         sgn=-1;
       else
         sgn=0;
     
   g=(1+0.5*exp(-1*(u/0.2)^2))/Q0;

   z=g*sgn;

   f=Q0*z+Q1*(u-abs(u)*z/g);
}



#define MDL_UPDATE  
#if defined(MDL_UPDATE)
  
  static void mdlUpdate(SimStruct *S, int_T tid)
  {
  }
#endif



#define MDL_DERIVATIVES  
#if defined(MDL_DERIVATIVES)
  
  static void mdlDerivatives(SimStruct *S)
  {
  }
#endif

static void mdlTerminate(SimStruct *S)
{
}




#ifdef  MATLAB_MEX_FILE   
#include "simulink.c"      
#else
#include "cg_sfun.h"     
#endif
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-6-6 16:02 | 显示全部楼层
利用mex命令编译以后出现如下错误:

‘initilizing’: incompatible types

'function': convertion from 'double' to 'int', possible loss of data

请大家帮我看看那里出现问题了,我已经查了2天了,实在查不出来。
 楼主| 发表于 2007-6-6 16:10 | 显示全部楼层
%     dz          |v|
%    ---- = v -  ----- * z        ...............(1)
%     dt          g(v)

%                     dz
%     F = Q0*z + Q1* ---- +Q2*v         ...............(2)
%                     dt

%                                                           2
%                                                 -(v/vs)
%     Q0*g(v) = Fc + ( Fs - Fc )*exp            ...............(3)

通过3个公式算F的值
发表于 2007-6-6 18:26 | 显示全部楼层
数据类型不同的问题。确定它们的数据类型相同
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-21 10:55 , Processed in 0.050291 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表