基于测速发电机的双闭环运动控制系统(6)

2018-12-12 22:59

磁通也随之减小,导致电枢绕组的感应电动势和输出电压降低。铜的电阻温度系数约为 0.004/℃,即当温度每升高 25℃,其电阻值相应增加 10%。所以,温度的变化对电磁式直流测速发电机输出特性的影响是很严重的。

为了减小温度变化对输出特性的影响,通常可采取下列措施:

(1)设计电机时,磁路比较饱和,使励磁电流的变化所引起磁通的变化较小。

(2)在励磁回路中串联一个阻值比励磁绕组电阻大几倍的附加电阻来稳流。附加电阻可用温度系数较低的合金材料制成,如锰镍铜合金或镍铜合金,它的阻值随温度变化较小。这样尽管温度变化,引起励磁绕组电阻变化,但整个励磁回路总电阻的变化不大,磁通变化也不大。其缺点是励磁电源电压也需增高,励磁功率随之增大。

直流测速发电机是一种测速元件,它把转速信号转换成直流电压信号输出。直流测速发电机广泛地应用于自动控制、测量技术和计算机技术等装置中。对直流测速发电机的主要要求是:(1)输出电压要严格地与转速成正比,并且不受温度等外界条件变化的影响;(2)在一定的转速下,输出电压要尽可能的大;(3)不灵敏区要小。

直流测速发电机可分为励磁式和永磁式两种。励磁式由励磁绕组接成他励,永磁式采用矫顽力高的磁钢制成磁极。由于永磁式不需另加励磁电源,也不因励磁绕组温度变化而影响输出电压,故应用较广。

在自动控制系统和计算装置中通常作为测速元件、校正元件、解算元件和角加速度信号元件。

26

27

五、运动控制的程序编写

算法是程序的核心,因此PID算法的实现至关重要。

开始开始系统初始化计算给定与输出的偏差偏差累积积分AD、DA初始化PID结构体初始化后向差分,微分电流环电压采样结构体偏差成员更新PID控制器输出计算积分环节限幅设置返回计算输出值转速环电压采样电流环PID计算转速环PID计算DA输出调整结束

图5-1 PID算法框图 图5-2主程序流程框图

结束在电流环和转速环的设计中,我选择的是PI调节器,我设计的是一个PID所有参数均可调的函数,所以使用时只要改变相应的参数即可得到所要的PI控制器,具体设置方法请参考主程序。

PID算法:

#include #include #include\

/******************************************************************************

*功能:定义结构体变量

******************************************************************************/ struct _pid { int pv; /*integer that contains the process value*/ int sp; /*integer that contains the set point*/ float integral; float pgain; float igain;

28

float dgain; int deadband; int last_error; }; struct _pid warm,*pid; int process_point, set_point,dead_band; float p_gain, i_gain, d_gain, integral_val,new_integ;

/******************************************************************************

* 函数名:pid_init

功能描述: PID初始化,通过设定*pv 、*sp赋值

******************************************************************************/

void pid_init(struct _pid *warm, int process_point, int set_point) { struct _pid *pid; pid = warm; pid->pv = process_point; pid->sp = set_point; }

/******************************************************************************

* 函数名:pid_tune

功能描述:结构体变量一致.

******************************************************************************/

void pid_tune(struct _pid *pid, float p_gain, float i_gain, float d_gain, int dead_band) { pid->pgain = p_gain; pid->igain = i_gain; pid->dgain = d_gain; pid->deadband = dead_band; pid->integral= integral_val; pid->last_error=0; }

/******************************************************************************

* 函数名:pid_setinteg

功能描述://PID结构体中的偏差成员更新

******************************************************************************/

void pid_setinteg(struct _pid *pid,float new_integ) { pid->integral = new_integ;

29

pid->last_error = 0; }

/******************************************************************************

* 函数名:pid_bumpless 功能描述:

******************************************************************************/

void pid_bumpless(struct _pid *pid) { pid->last_error = (pid->sp)-(pid->pv); }

/******************************************************************************

* 函数名:pid_calc

功能描述:PID核心计算

******************************************************************************/

float pid_calc(struct _pid *pid) { int err; float pterm, dterm, result, ferror; err = (pid->sp) - (pid->pv); if (abs(err) > pid->deadband) { ferror = (float) err; /*do integer to float conversion only once*/ pterm = pid->pgain * ferror; if (pterm > 100 || pterm < -100) {//积分分离 pid->integral = 0.0; } else{ pid->integral += pid->igain * ferror; if (pid->integral > 100.0) //抗积分饱和,防最大溢出 { pid->integral = 100.0; } else if (pid->integral < 0.0) pid->integral = 0.0; } //防最小溢出 dterm = ((float)(err - pid->last_error)) * pid->dgain;//微分值 result = pterm + pid->integral + dterm; } else result = pid->integral; pid->last_error = err;

30


基于测速发电机的双闭环运动控制系统(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:村镇建筑工匠培训班试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: