多电机同步控制(7)

2019-08-17 14:03

开始 RI=1 将数据存入数组js 接收完毕 js[2]=1 修改主电机设定速度shd js[2]=0 开始上传主从电机实际速度 RI清0 TI=1 发送主从电机实际速度 TI清0 中断返回

图3.3 与上位机通信子程序流程图

31

3.3.4 主程序

PID控制算法是在主程序中完成的。在主程序中不断地以0.1秒的周期循环计算控制量,即主从电机PWM的占空比,通过改变占空比来调节电机的速度。其流程图如图3.4所示。

j作为主程序的循环标志,每当Timer4循环4次计时0.1秒时在T4中断中被置1,在主程序中进入if语句执行一次控制算法,并被清0。下一次主程序循环过来时if语句就不会再执行了,直到过了0.1秒后j再次被置1,这样就保证了0.1秒内只计算一次。

在主程序的初始化阶段,为主电机设定了一个300转/分钟的转速,即shj=300,并设置了一组控制参数,若要改变电机的速度,可通过UART0通信接口在上位机界面上修改。

在主程序中,主电机的设定速度转化成的标准脉冲数减去其实测脉冲数,其结果作为当前时刻主电机的速度偏差值,从电机把主电机的实测脉冲数作为自己的设定速度值,用其减去从电机的实测脉冲数,结果作为其当前时刻的速度偏差值,以实现跟踪主电机。

改进的PID算法采用了遇限削弱积分法和积分分离法。主电机积分饱和的条件为:e13>300或u1=255且e13>0, 即当主电机速度偏差达到300或主电机控制量已达到上限且偏差为正时,除去主电机控制算法中的积分项。从电机积分饱和的条件为:e23>300或u2=255且e23>0,即当从电机速度偏差达到200或从电机控制量已达到上限且偏差为正时,除去从电机控制算法中的积分项。

为了避免主从电机稳定情况下频繁地修改控制量并减小计算工作量,主程序采用了带死区的控制算法,当主从电机的速度偏差满足以下条件|ei3|<2且|ei3-ei2|<2时,认为主从电机速度处在稳定域内,不执行修改控制量的指令。

32

开 始 主电机速度初始值设定 控制参数初始设置 J=1 计算主电机近三次速度偏差 计算从电机近三次速度偏差 主电机积分饱和 K1=0去除主电机积分项 从电机积分饱和 K2=0去除从电机积分项 主电机偏差稳定域内 计算主电机控制量u1 从电机偏差稳定域内 计算从电机控制量u2

图3.4 主程序流程图

33

3.4 程序调试

程序的编辑及调试是在C8051F单片机的专用配套集成开发环境(IDE)中完成的,IDE支持硬件环境下的调试。IDE支持运行,停止,断点,查看等操作,十分方便。本程序是在硬件环境下进行调试的。IDE操作界面如图3.5所示。

调试是程序设计中非常重要的一环。程序设计是一项系统的工程,要做到一次性正确是困难的,一经调试,总会发现这样那样的错误。在程序调试时,首先要保证硬件接线正确,因为我们是在硬件环境下进行调试的。

程序是在一边编写一边调试中完成的。我们先编写了初始化段、测速段和主程序,这是一个完整的控制程序,调试无误后,又编写了串口通信程序,这是一个相对独立的程序段。在程序排错时,最有效的方法是模块化的调试排错方法。先按最小单元一个模块一个模块的调试,无误后,再按一个功能一个功能模块的调试。

图3.5 IDE编辑和调试环境

34

需要说明的是,上位机上的通信界面我们采用的是串口调试精灵。它是一个仿真串口通信软件。用它能够实现PC机与单片机的通信。其操作界面如图3.6所示。

图3.6 串口调试精灵调试界面

调试通信程序的时候,在串口调试精灵界面上先将串口设置为如图3.6中的参数,波特率为115200,接收和发送数据都采用16进制,再将串口打开。在主程序中设定速度初始化为每分钟300转。若要改为每分钟200转,则在串口调试精灵中的发送数据区输入以下三个数据:00,c8,01,十六进制数c8即是十进制数200,在主程序运行的情况下按一下手动发送即可,发送后电机的速度马上调整。发送结果可在IDE中查询,如图3.7所示。

35


多电机同步控制(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:0.57MW屋顶光伏发电项目可行性研究报告

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

马上注册会员

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