(4)CASE SEND_START_Z1,对应的十751进制数位 0xAB,代表三文精密工
作台 Z轴进行竖直方向运动。单片机接收到此字符后 ,进入 Z轴数据接收子函
数 kzzz(),依次接收 b(2)~b7)共 6个字符,并通过处理计算出 Z轴运动的起点坐
标z1,终点 z2,速度 zv。最后返回主函数。
(5)CASE SEND_START_Z2,对应的十751进制数位 0x98,代表三文精密工
作台Z轴进行竖直方向运动。单片机接收到此字符后 ,进入 Z轴数据接收子函
数 kzzz(),依次接收 b(2)~b(7)共6个字符,并通过处理计算出 Z轴运动的起点坐
标 z1,终点 z2,速度 zv。最后返回主函数,将Z轴运动的当前坐标(z_buff)赋给
起点坐标(z1) ,以实现任意位置回零的功能。
主函数模块程序代码简化如下
void main ()
{
int i=0;
init(); //调用中断程序
while(1) //主循环下不做任何动作
{
switch(message)
{
case SLEEP: PCON=0X01; break………………………….
case SEND_START_XY1: kzz()……………………………
case SEND_START_Z1: kzzz()……………………………..
case SEND_START_XY2: kzz();y1=y_buff;x1=x_buff……
case SEND_START_Z2: kzzz();z1=z_buff……..………….
default: break;
}
}
}
5.3.5.几个关键函数子程序
(1)数据接收子函数
由于二文工作台运动与 Z 轴运动的通信格式控制字位数不同,因此数据接
收函数有2个,分别为 kzz()和 kzzz()。接收完字符后,通过函数处理计算出坐标
值。
(2)象限判断函数
对于二文工作台, 其平面运动轨迹可以为任意直线。 平面内任意直线有八种,
即第一象限,Y轴正半轴,第二象限,X轴负半轴,第三象限,Y轴负半轴,第
四象限,X轴正半轴。
判断依据为起点坐标和终点坐标的比较。
象限判断过程中,用 flag_q(值为 1~8)表示直线所属象限,同时设置步进
电机驱动器的CCW端口电平,以实现插补运动。
对于 Z 轴,其沿 Z 方向的运动包括两种,即沿 Z 轴正向和沿 Z 轴负向。判
断依据为起点坐标与终点坐标的比较。
方向判断过程中,用 flag_z(值为 1 或 0)表示运动方向,同时设置步进电
机驱动器的CCW端口电平,以实现上下运动。
(3)插补运动函数
二文工作台的运动采用逐点比较法设计的插补算法, 逐点比较法通过偏差函
数 fi 值来确定当前运动点与直线的位置关系。依据直线的象限参数 flag_q 和插
补算法中fi 的值来确定控制工作台运动的步进电机应进行的动作。
(4)步进电机运动函数
步进电机的动作为沿正向或负向转动一个步距角,通过对其 CW 端口置低
电平,延时,置高电平,延时4布来完成。步进电机的运动方向由 CCW决定, 三维精密工作台机械结构及其控制系统设计(17):http://www.751com.cn/jixie/lunwen_2764.html