论文部分内容阅读
摘 要:本文主要讲述了利用C语言程序设计去实现机床主轴自动换档的控制方法,并通过实例说明如何在系统中运用C语言去设计机床PLC程序,以达到控制机床各种动作的目的。
关键词:数控系统、变频主轴、自动换档、PLC程序、C语言程序设计
1 引言
机床主轴分为很多种,按控制电机分可分为变频主轴,伺服主轴,按齿轮分可分为单主轴和换档主轴.各种主轴具有各自的特点,满足各种不同加工要求。数控系统控制主轴旋转方面,控制单主轴要比控制换档主轴要容易一些。目前大多数的数控系统都采用梯形图形式的PLC程序来控制主轴的自动换挡动作,编写的程序步骤较长,不便于观看与纠错,而华中HNC-210A数控系统采用C语言来编写PLC程序,这样的编写方法控制主轴自动换挡具有观看清晰,便于调试与修改的特点,极具有推广性.
2 主轴换档时的动作要求
机床主轴换档时采用电子离合器来控制主轴齿轮的啮合,主轴箱内具有几组齿轮,两个电子离合器控制5种齿轮位置,左面离合器有两个运行位置GR1,GR2,右面齿轮有3个运行位置GR1,GR2,GR3,5个位置可组成4个档位,每档内用变频器驱动变频电机无级调速在自动方式或MDI方式用M40指令、M41指令、M42指令、M43指令选择主轴的0,1,2,3档。
3 C语言的 PLC程序编制
3.1变量定义:
根据主轴换档动作的控制要求,在PLC程序里需定义以下变量:
#define spdl_cmd R_ui[18/2] //主轴转速
#define spdl_ctrl R[20] //主轴控制
#define spdl_stat R[21] //主轴状态
#define CommandOutSpeed R_ui[36/2] //当前指令输出速度
#define AdjustOutSpeed R_ui[38/2] //补偿后的指令输出速度
#define Cur_Shelves_Pos R_c[40] //主轴当前挡位
#define New_Shelves_Pos B[41] //主轴目标挡位
3.2主轴当前档位的读取
void GetWhichShelves(void)
{
if(!IN_GET_Gear1 && IN_GET_Gear2 && !IN_GET_Gear3 && IN_GET_Gear4 && !IN_GET_Gear5)
Cur_Shelves_Pos=0; //主轴当前档位在0档
if(!IN_GET_Gear1 && IN_GET_Gear2 && IN_GET_Gear3 && !IN_GET_Gear4 && !IN_GET_Gear5)
其余档位编法类似
3.3主轴档位变换时主轴电机正反转的控制
void SpdlChangeShelves(void) //主轴自动换档
{
switch(New_Shelves_Pos)
{
case 0: //目标档位0档
if(Cur_Shelves_Pos==1)
spdl_ctrl=1; //主轴正转
else
spdl_ctrl=2; //主轴反转
break;
} 其余档位编法类似
3.4电磁离合器运动的控制
void out_yc(void)
{
switch(New_Shelves_Pos)
{
case 0: //目标档位0档
#ifdef IN_GET_Gear2
if(IN_GET_Gear2==0)
{
#ifdef OUT_ACT_EN_YC1
OUT_ACT_EN_YC1 //离合器1输出
#endif
} 其余档位编法类似
3.5 主轴速度的输出控制
#ifdef Out_SpdlGroup
void AutoFindShelves(void)
{
Out_SpdlGroup
switch(New_Shelves_Pos)//当前使用的挡位
{
case 1:
#ifdef Spdl_BIT_S1
Spdl_BIT_S1 //主轴1档速度输出
#endif
break;
}
#endif 其余档位编法类似
4 结束语
运用这种方法编写完程序后,可以清晰和直观的看到主轴当前所处档位及当前主轴速度,如需修改档位和速度时只需打开操作界面,在表格内填入自己想要的数值即可,非常方便,很有推广性,但要注意合理填入数值,以防数值过大损坏电机。
参考文献
1.《C语言程序设计》楼永坚 吴鹏 徐恩友 主编 人民邮电出版社
2.《华中HNC-210A连接说明书》华中数控系统资料
3.《华中HNC-210A操作说明书》华中数控系统资料
关键词:数控系统、变频主轴、自动换档、PLC程序、C语言程序设计
1 引言
机床主轴分为很多种,按控制电机分可分为变频主轴,伺服主轴,按齿轮分可分为单主轴和换档主轴.各种主轴具有各自的特点,满足各种不同加工要求。数控系统控制主轴旋转方面,控制单主轴要比控制换档主轴要容易一些。目前大多数的数控系统都采用梯形图形式的PLC程序来控制主轴的自动换挡动作,编写的程序步骤较长,不便于观看与纠错,而华中HNC-210A数控系统采用C语言来编写PLC程序,这样的编写方法控制主轴自动换挡具有观看清晰,便于调试与修改的特点,极具有推广性.
2 主轴换档时的动作要求
机床主轴换档时采用电子离合器来控制主轴齿轮的啮合,主轴箱内具有几组齿轮,两个电子离合器控制5种齿轮位置,左面离合器有两个运行位置GR1,GR2,右面齿轮有3个运行位置GR1,GR2,GR3,5个位置可组成4个档位,每档内用变频器驱动变频电机无级调速在自动方式或MDI方式用M40指令、M41指令、M42指令、M43指令选择主轴的0,1,2,3档。
3 C语言的 PLC程序编制
3.1变量定义:
根据主轴换档动作的控制要求,在PLC程序里需定义以下变量:
#define spdl_cmd R_ui[18/2] //主轴转速
#define spdl_ctrl R[20] //主轴控制
#define spdl_stat R[21] //主轴状态
#define CommandOutSpeed R_ui[36/2] //当前指令输出速度
#define AdjustOutSpeed R_ui[38/2] //补偿后的指令输出速度
#define Cur_Shelves_Pos R_c[40] //主轴当前挡位
#define New_Shelves_Pos B[41] //主轴目标挡位
3.2主轴当前档位的读取
void GetWhichShelves(void)
{
if(!IN_GET_Gear1 && IN_GET_Gear2 && !IN_GET_Gear3 && IN_GET_Gear4 && !IN_GET_Gear5)
Cur_Shelves_Pos=0; //主轴当前档位在0档
if(!IN_GET_Gear1 && IN_GET_Gear2 && IN_GET_Gear3 && !IN_GET_Gear4 && !IN_GET_Gear5)
其余档位编法类似
3.3主轴档位变换时主轴电机正反转的控制
void SpdlChangeShelves(void) //主轴自动换档
{
switch(New_Shelves_Pos)
{
case 0: //目标档位0档
if(Cur_Shelves_Pos==1)
spdl_ctrl=1; //主轴正转
else
spdl_ctrl=2; //主轴反转
break;
} 其余档位编法类似
3.4电磁离合器运动的控制
void out_yc(void)
{
switch(New_Shelves_Pos)
{
case 0: //目标档位0档
#ifdef IN_GET_Gear2
if(IN_GET_Gear2==0)
{
#ifdef OUT_ACT_EN_YC1
OUT_ACT_EN_YC1 //离合器1输出
#endif
} 其余档位编法类似
3.5 主轴速度的输出控制
#ifdef Out_SpdlGroup
void AutoFindShelves(void)
{
Out_SpdlGroup
switch(New_Shelves_Pos)//当前使用的挡位
{
case 1:
#ifdef Spdl_BIT_S1
Spdl_BIT_S1 //主轴1档速度输出
#endif
break;
}
#endif 其余档位编法类似
4 结束语
运用这种方法编写完程序后,可以清晰和直观的看到主轴当前所处档位及当前主轴速度,如需修改档位和速度时只需打开操作界面,在表格内填入自己想要的数值即可,非常方便,很有推广性,但要注意合理填入数值,以防数值过大损坏电机。
参考文献
1.《C语言程序设计》楼永坚 吴鹏 徐恩友 主编 人民邮电出版社
2.《华中HNC-210A连接说明书》华中数控系统资料
3.《华中HNC-210A操作说明书》华中数控系统资料