电机转子动平衡半自动去重系统的研制
备份上一次去重策略结果,如果是第一次去重,就不备份去重策略;
do{
if(第一次去重)
{ if(unbala(1)<=max)
从基准位置转过angle(1)度,进行去重,去
重量为unbala(1);
else
{ 把unbala(1)分解到相邻的三个爪极上,中间一个爪极位置为从基准位置逆时针转过angle(1)度的地址,去重量为max,与该爪极相邻的两个爪极的去重理均为:(unbala(1)-max)/2/cos(相临两爪极间夹角);}javascript:window.open(this.src);" style="cursor:pointer;"/>
保存第一次去重策略结果;}
else
{ 检查angle(i)是否和保存的策略中的相位值
有重合,若有得合,存储重合的结果;
if(有重合)
{ 把相位重合处的量和新采集到的量进行向量相加,然后把这个量当成采集进来的量;}
按照第一次去重对待来生成本次去重策略;
把本次去重策略和以前存储的去重策略进行比较,查看是否有相位的重合,如果有重合,而且两者量的叠加没有超过max,或者超过了max,便可以把叠加后的量分配到相邻的爪极上,使每个爪极上的去重量小于max,就生成新的去重策略,同时刷新存储的去重策略,否则就报告转子无法平衡;
}javascript:window.open(this.src);" style="cursor:pointer;"/>
然后根据生成的去重策略,求出各个爪极上的去重量的质心位置x(相对于校正平面,在两个校正平面的之间为正,其余为负),并把各个爪极上的质心位置乘以去重量进行合成,记为M,如果M在允许的偏差范围之内,就不修改去重策略,同时更新备份的去重自力策略;否则,就按照简支梁的模型(其中以两个校正面为支点)把偏离校正平面的质量分解到左右两个校正面上,然后把这两个量分别和原来的校正面上的不平衡量进行向量合成,同时把去重策略结果用备份的策略结果来替代。
}while(如果超出允许的偏差范围);
下位机程序按模块化进行设计。模块按照其实现的功能划分(如图4所示),主要可以划分为:响应键盘输入显示模块、响应串口输入模块、控制步进电机转动模块、操作EEPROM模块、看门狗模块等。响应键盘输入模块主要接收键盘输入及显示,同时执行键盘的各个功能键的功能程序,如调零点。控制步进电机转动模块的功能是按照收到的数据来识别哪个步进电机需要转动,然后再根据收到送相应的脉冲给该步进电机。如果需要多台步进电机执行动作,可以循环执行上述过程。
图5是响应串口输入模块的流程图,采用了串口中断的方法。其流程如下:先接收帧长度(一字节),即本帧要发送的数据量,包括表示帧长度的这个字节;再接收其余的数据,同时把收到的除最后一个字节外的数据相加求和;然后把这个和数对256取余并与最后接收到的一个字节的数据进行比较,如果相同,就发送一个接收正确的代码给PC机并处理接收到的数据,否则发送一个接收错误的代码给PC机,要求重发数据清除接收到的数据。
上位机和下位机之间的通讯程序由PC机部分和单片机部分组成。PC机部分把生成的并于如何去重的代码按照规定的格式填入发送帧中,然后把帧通过串口发送给下位机,同时接收一些单片机传来的反馈信号。单片机部分主要是识别串口有否信号传来,并把接收到的帧按照约定的格式翻译成指导步进电机转动的脉冲数,以备后用;并发送加工完毕、接收正确与否等反馈信号。
其中帧的格式如下:
帧长度 | 特征码 | 有效数据 | 校验和 |
第一字节是帧长度,第二字节是特征码,中间有若干个字节是有效数据,最后一个字节是校验和。其中第一字节数据的意义已经在前面提及;第二字节数据用以表示本帧的用途,如该字节为“1”表示接收零点信息,其后的有效数据就是关于零点的x,y值,该字节如果为“2”表示自动去重,其后的有效数据表示执行去重的具体代码;最后一个字节是校验和,用于校核发送方发送的数据和接收方接收的数据是否一致。
4 可靠性设计
因为对电机转子进行动平衡加工时已经处于整个转子加工的最后阶段,一旦报护废,不仅浪费材料,而且也浪费前面大量的工作,因此损失比较严重。故对系统的可靠性提出了较高的要求。考虑到工厂现场环境较恶劣,因此在硬件设计上对输入输出的数据均采用了光耦隔离,单片机系统也加设了看门狗电路;在软件上,对输入输出的数据进行多重的合法性检测,在软件的操作设计上,尽量避免误操作引起转子报废。