资源简介
梯形曲线运动控制算法,只贴出PID梯形算法核心代码和应用示例,由于保密关系,不能上传全部代码,望各位见谅,本示例仅供学习参考交流使用
代码片段和文件信息
/*
***************************************************************************************
*
* (c) Copyright 2006-2008 wei wei.qiu china zj. hz
* All Rights Reserved
*
*
*
*
*--------------文件信息-----------------------------------------------------------------
* 文 件 名: app_gpio.c
* 创 建 人: 邱卫卫
* 创建日期: 2014年01月08日
* 描 述: 主程序C语言入口 uC/OS-II启动
*---------- 版本信息-------------------------------------------------------------------
* 版 本: V1.0
*
*--------------------------------------------------------------------------------------
****************************************************************************************
void get_encoder_TWO(void)//******************计算当前实际速度V
{
s32 CNT3_tempCNT3_last;
cnt3 = TIM3 -> CNT;
CNT3_last = CNT3;
CNT3_temp = rcnt3 * ENCODE_PRD + cnt3;
Position_PID.ActualPoint = CNT3_temp;
V3 = CNT3_temp - CNT3_last;
while (V3>Vbreak)
{
rcnt3--;
CNT3_temp = rcnt3 * ENCODE_PRD + cnt3;
V3 = CNT3_temp - CNT3_last;
}
while (V3<-Vbreak)
{
rcnt3++;
CNT3_temp = rcnt3 * ENCODE_PRD + cnt3;
V3 = CNT3_temp - CNT3_last;
}
CNT3 = CNT3_temp;
//POSITION += CNT3;
}
void PID_init(void)
{
Position_PID.SetPoint=0.0;
Position_PID.ActualPoint=0.0;
Position_PID.CurPoint =0;
Position_PID.CurVolt =0;
Position_PID.DecSpeedF=0;
Position_PID.err=0.0;
Position_PID.err_last=0.0;
Position_PID.voltage=0.0;
Position_PID.integral=0.0;
Position_PID.Kp=0.01;
Position_PID.Ki=0.30;
Position_PID.Kd=0.1;
Position_PID.Integral_Index = 50;//((float)MOTION_POINT/(float)7200)*60.0+2.0;
TIM_Cmd(TIM2 ENABLE);
}
float point_PID_realize(float point)
{
float indexindex2=1.0err_temp;
Position_PID.SetPoint = point;
Position_PID.err=Position_PID.SetPoint-Position_PID.ActualPoint;
index = Position_PID.SetPoint/2;
if(Position_PID.DecSpeedF == 0)
{
if(((Position_PID.SetPoint-Position_PID.err)>=index)
||(Position_PID.voltage>=PWMPeriod))
{
Position_PID.CurPoint = Position_PID.SetPoint-Position_PID.err; //recode
Position_PID.CurVolt = Position_PID.voltage;
//Position_PID.integral -= 24*Position_PID.SetPoint;
Position_PID.DecSpeedF =0xAA;
}
}
if(abs(Position_PID.err)>Vbreak) //
{
index=0.0;
}
else if(Position_PID.ActualPoint>=Position_PID.SetPoint)
{
index=0;
Position_PID.DecSpeedF =0;
Position_PID.integral =0;
}
else if(abs(Position_PID.err)<=Position_PID.CurPoint)
{
//Position_PID.Kp = 7.0;
//Position_PID.voltage=Position_PID.Kp*Position_PID.err;
//return Position_PID.voltage;
- 上一篇:zedboard的usb视频显示
- 下一篇:操作系统——作业调度实验
相关资源
- 遗传算法在PID参数整定中的应用
- 树莓派无刷电机控制器调速和 PID 控制
- PID控制的PLC实现
- 课程设计 51单片机温度PID调节打包k
- S7-200CPU_PID控制图解
- zw_fuzzy_pid.zip
- 基于粒子群算法的pid控制器优化设计
- 基于FPGA的神经网络PID控制器设计与实
- PLC自编PID程序算法.doc
- 基于智能模糊PID控制和PLC控制的恒压
- 基于STM32和增量PID的旋转倒立摆的设计
- PID神经网络改进研究
- pid算法-arduino
- stc12c5a60s2 PID PWm
- PID调参软件
- 基于遗传算法的PID参数整定及仿真
- PID控速小车
- 毕业设计__PID控制直流电机
- 黑苹果灯光调节补丁ACPIDebug.kext
- 基于arduino的循迹小车不含有PID算法
- 基于arduino的循迹小车含有PID算法
- PID算法温度控制
- 51单片机直流电机PID闭环调速
- stm32 PID调节
- 基于51单片机的自动加热散热系统,采
- 自适应PID控制算法
- PSO优化PID
- 基于PID算法的电加热炉温度控制仿真
- 双闭环PID+鸟群算法
- CSTR模糊PID控制
评论
共有 条评论