⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 proc_motoraction_sctr._c

📁 一个直流电机的闭环控制源代码程序
💻 _C
字号:
/***********************************************************
*   函数库说明:电机闭环位置控制模块函数库                 *
*   版本:      v1.00                                      *
*   作者:      王卓然                                     *
*   创建日期:  2007年4月16日                              *
* -------------------------------------------------------- *
*  [支 持 库]                                              *
*   支持库名称:                                           *
*   需要版本:                                             *
*   支持库说明:                                           *
* -------------------------------------------------------- *
*  [版本更新]                                              *
*   修改:                                                 *
*   修改日期:                                             *
*   版本:                                                 *
* -------------------------------------------------------- *
*  [版本历史]                                              *
* -------------------------------------------------------- *
*  [使用说明]                                              *
***********************************************************/

/********************
* 头 文 件 配 置 区 *
********************/
# include "RD_MacroAndConst.h"
# include "PF_Config.h"
# include "PROC_MotorAction_SCTR.h"

/********************
*   系 统 宏 定 义  *
********************/

/*------------------*
*   常 数 宏 定 义  *
*------------------*/
#ifndef MOTOR_P
    # define MOTOR_P                10             
#endif


/*------------------*
*   动 作 宏 定 义  *
*------------------*/

/********************
*    结构体定义区   *
********************/

/********************
*   模块函数声明区  *
********************/

/********************
*   全局函数声明区  *
********************/
BOOL PROC_Motor_Postion_Control(void);

/********************
*   模块变量声明区  *
********************/

/********************
*   全局变量声明区  *
********************/

uint16 Delta = 0;

/***********************************************************
*   函数说明:电机位置控制函数                             *
*   输入:    无                                           *
*   输出:    无                                           *
*   调用函数:无                                           *
***********************************************************/
BOOL PROC_Motor_Postion_Control(void)
{
    uint32 dTempDCounter = 0;
    uint16  ERR = 0;
    static uint16 I = 0;
    
    SAFE_CODE_PERFORMANCE
    (
        dTempDCounter = g_dNowMotorPosition;
    )
    
    if (dTempDCounter > g_dAimMotorPosition)
    {
        ERR = (uint16)((dTempDCounter - g_dAimMotorPosition)*MOTOR_P);
        Delta = ABS((int16)(dTempDCounter - g_dAimMotorPosition));
        
        //SAFE_CODE_PERFORMANCE
        //( 
            MOTOR_GO_BACK
        //)
        
        SET_PWM(ERR)
    }
    else if (dTempDCounter < g_dAimMotorPosition)
    {
        ERR = (uint16)((g_dAimMotorPosition - dTempDCounter)*MOTOR_P);
        Delta = ABS((int16)(g_dAimMotorPosition - dTempDCounter));
        
        //SAFE_CODE_PERFORMANCE
        //(        
            MOTOR_GO_FRONT
        //)
        
        SET_PWM(ERR)
    }
    else                                                    //计数器相等
    {
        //MOTOR_BRAKE_FREE
    }
    /*
    Set_DISP_BUFF
        (
            0x0F,
            SET_DWORD_DIV_8(Delta).BYTEBH,
            SET_DWORD_DIV_8(Delta).BYTEBL,
            SET_DWORD_DIV_8(Delta).BYTEAH,
            SET_DWORD_DIV_8(Delta).BYTEAL
        );
    */

    return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -