15966|2

195

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

iar运行pid为什么会出现Warning[Pe223]: function "memset" declared implicitly [复制链接]

typedef struct PID {  

        float  SetPoint;           //  设定目标 Desired Value  

        float  Proportion;         //  比例常数 Proportional Const  
        float  Integral;           //  积分常数 Integral Const  
        float  Derivative;         //  微分常数 Derivative Const  

        float  LastError;          //  Error[-1]  
        float  PrevError;          //  Error[-2]  
        float  SumError;           //  Sums of Errors

} PID;  

/*====================================================================================================  
   PID计算部分  
=====================================================================================================*/  

float PIDCalc( PID *pp, float NextPoint )  
{  
    float  dError,  
            Error;  

        Error = pp->SetPoint -  NextPoint;          // 偏差  
        pp->SumError += Error;                      // 积分  
        dError = pp->LastError - pp->PrevError;     // 当前微分  
        pp->PrevError = pp->LastError;  
        pp->LastError = Error;  
        return (pp->Proportion * Error              // 比例项  
            +   pp->Integral * pp->SumError         // 积分项  
            +   pp->Derivative * dError             // 微分项  
        );  
}  

/*====================================================================================================  
   Initialize PID Structure  
=====================================================================================================*/  

void PIDInit (PID *pp)  
{  
   memset ( pp,0,sizeof(PID));
}  

/*====================================================================================================  
    Main Program  
=====================================================================================================*/  

float sensor (void)                    //  Dummy Sensor Function  
{  
    return 100.0;  
}  

void actuator(float rDelta)            //  Dummy Actuator Function  
{}  

void main(void)  
{  
    PID         sPID;                   //  PID Control Structure  
    float      rOut;                   //  PID Response (Output)  
    float      rIn;                    //  PID Feedback (Input)  

    PIDInit ( &sPID );                  //  Initialize Structure  
    sPID.Proportion = 0.5;              //  Set PID Coefficients  
    sPID.Integral   = 0.5;  
    sPID.Derivative = 0.0;  
    sPID.SetPoint   = 100.0;            //  Set PID Setpoint  

    for (;;) {                          //  Mock Up of PID Processing  

        rIn = sensor ();                //  Read Input  
        rOut = PIDCalc ( &sPID,rIn );   //  Perform PID Interation  
        actuator ( rOut );              //  Effect Needed Changes  
    }  
}

此帖出自单片机论坛

最新回复

缺少头文件或  详情 回复 发表于 2017-7-25 13:45
点赞 关注
 

回复
举报

1310

帖子

3

TA的资源

一粒金砂(高级)

沙发
 
缺少头文件
此帖出自单片机论坛
 
个人签名

RTEMS

 

回复

195

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

好了  谢谢
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表