资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第五章第五章 PLC 运动控制的实现运动控制的实现 第三章介绍了 PLC 程序可调用的一些函数接口,利用其中一些函数便可实现轴运动控 制的实现。本章将示例说明各运动控制函数的使用 5.1 机床轴回零控制机床轴回零控制 在手动方式下需要控制机床轴回零时,调用函数 set_axis_home()即可起动相关轴开始 回零。该函数的原型为: void set_axis_home( int axis, /所指定的轴号:0-15 int start_stop); /为 0:取消回零 非 0:回零 当碰到回零开关时,PLC 程序必须通过轴控制字*axis_ctrl(x)|AX_HOME_SW 告诉伺服系统回零开关已到。当伺服轴找到机械零位后,系统会通过轴状态字 *axis_stat(x) /禁止 X 轴点动 set_axis_jog(1,0); /禁止 Y 轴点动 set_axis_jog(2,0); /禁止 Z 轴点动 /如果进给保持设定(进给保持键 X1.1 为常闭点) if(X1 /取消 X 轴回零 set_axis_home(1,0); /取消 Y 轴回零 set_axis_home(2,0); /取消 Z 轴回零 else /X、Y、Z 轴正点动的输入点分别为 X2.1、X2.3、X2.5 if(X2 /起动 X 轴回零 if(X2 /起动 Y 轴回零 if(X2 /起动 Z 轴回零 return; void plc1( ) /PLC 扫描入口函数 1 plc1_time=16; /间隔 16 毫秒后,再调用 plc1()函数 /回零信号处理回零信号处理 /X、Y、Z 轴回零的输入点分别为轴回零的输入点分别为 X3.3、X3.4、X3.5 u1=X3 u2=X3|R13|R23; if(u1 / X 轴回零 else if(u2 if(u1 / Y 轴回零 else if(u2 if(u1 / Z 轴回零 else if(u2 /记住输入信号最后三次的采样值 R_ui30/2=R_ui20/2; R_ui32/2=R_ui22/2; R_ui20/2=R_ui10/2; R_ui22/2=R_ui12/2; R_ui10/2=X_ui0/2; R_ui12/2=X_ui2/2; void plc2( ) /PLC 扫描入口函数 2 plc2_time=32; /间隔 32 毫秒后,再调用 plc2()函数 /回零灯回零灯 Y2 /熄灭 X、Y、Z 轴回零灯 if(*axis_stat(0) /点亮 X 轴回零灯(输出点为 Y1.4) else Y1 /灭掉 X 轴回零灯(输出点为 Y1.4) if(*axis_stat(1) /点亮 Y 轴回零灯(输出点为 Y1.5) else Y1 /灭掉 Y 轴回零灯(输出点为 Y1.5) if(*axis_stat(2) /点亮 Z 轴回零灯(输出点为 Y1.6) else Y1 /灭掉 Z 轴回零灯(输出点为 Y1.6) /记住输入信号最后三次的采样值 R_ui130/2=R_ui120/2; R_ui132/2=R_ui122/2; R_ui120/2=R_ui110/2; R_ui122/2=R_ui112/2; R_ui110/2=X_ui100/2; R_ui112/2=X_ui102/2; 5.2 机床轴点动机床轴点动 点动控制方式下,只要用户按下点动键,机床轴便不停止运动。在手动方式下需要点 动控制机床轴运动时,调用函数 set_axis_jog()即可点动相关轴运动。该函数的原型为: void set_axis_jog( int axis, /点动轴号:0-15 int speed); /点动速度,单位:内部脉冲/插补周期 在 PLC 程序中,点动控制的主要流程为: 1) 在手动操作点动方式下,根据面板按键计算点动速度 2) 检测点动按键状态,调用函数 set_axis_jog()点动/停止相关轴。 例: #define Speed_MAX 420 /坐标轴移动速度最大值 #define mode_sel R0 /模式选择 #define jog_speed R4 /点动速率 void manual( ) /手动方式控制处理函数 switch(mode_sel) /根据手动操作模式分别进行处理 case MODE_JOG: /点动模式 /计算 X 轴点动速度 i = (long) jog_speed*(*axis_vmax(0)/Speed_MAX; if(X2 switch(X2 break; case 0x04: /-X(输入点为 X2.2) i=-i; break; default: i=0; set_axis_jog(0,i); /X 轴点动 /计算 Y 轴点动速度 i = (long) jog_speed*(*axis_vmax(1)/Speed_MAX; if(X2 switch(X2 break; case 0x10: /-Y(输入点为 X2.4) i=-i; break; default: i=0; /点动速度为零,即停止运动 set_axis_jog(1,i); /Y 轴点动 /计算 Z 轴点动速度 i = (long) jog_speed*(*axis_vmax(2)/Speed_MAX; if(X2 switch(X2 break; case 0x40: /-Z(输入点为 X2.6) i=-i; break; default: i=0; /点动速度为零,即停止运动 set_axis_jog(2,i); /Z 轴点动 return; 5.3 机床轴步进机床轴步进 机床轴步进要求用户按一次步进轴,相关轴便步进指定的距离,因此 PLC 程序必须捕 捉步进按钮的上升沿(或下降沿)脉冲信号。在手动方式下需要步进控制机床轴运动时,调用 函数 set_axis_step()即可步进相关轴运动。该函数的原型为: void set_axis_step(int axis, /步进轴号:0-15 long displacement); /步进增量,单位:内部脉冲当量 在 PLC 程序中,步进控制的主要流程为: 1) 在手动操作步进方式下,根据面板按键计算步进轴及步进增量。 2) 检测步进按键上升沿脉冲后,调用一次函数 set_axis_step(),步进相关轴。 例: #define Speed_MAX 420 /坐标轴移动速度最大值 #define mode_sel R0 /模式选择 #define axis_sel R_c1 /轴选择 #define step_mul R_i2/2 /步进倍率 #define jog_speed R4 /点动速率 void manual( ) /手动方式控制处理函数 switch(mode_sel) /根据手动操作模式分别进行处理 case MODE_STEP: /步进模式 switch(X2 break; case 0x04: /-X 步进 set_axis_step(0,-step_mul); break; case 0x08: /+Y 步进 set_axis_step(1,step_mul); break; case 0x10: /-Y 步进 set_axis_step(1,-step_mul); break; case 0x20: /+Z 步进 set_axis_step(2,step_mul); break; case 0x40: /-Z 步进 set_axis_step(2,-step_mul); break; return; void plc2( ) /PLC 扫描入口函数 2 plc2_time=32; /间隔 32 毫秒后,再调用 plc2()函数 if( (R_ui110/2=X_ui100/2 switch(X_ui100/2 break; case 0x10: feedover=30; break; case 0x20: feedover=50; break; case 0x30: feedover=80; break; case 0x40: feedover=100; break; case 0x50: feedover=140; break; default: feedover=100; mode_sel=(auto_enable)? MODE_AUTO:0; /取工作方式 switch(X100 mode_sel=(auto_enable)? MODE_AUTO:0; break; case 1: /单段方式 *ch_ctrl(0) |= CH_SGL_BLK; mode_sel=(auto_enable)? MODE_AUTO:0; break; case 2: /点动方式 mode_sel=MODE_JOG; break; case 3: /步进方式 mode_sel=MODE_STEP; break; case 4: /回零方式 mode_sel=MODE_REF_RETURN; break; case 5: /手动攻丝 mode_sel=MODE_JOG; break; default: mode_sel=0; if(X100 break; case 0x20: step_mul=10; break; case 0x30: step_mul=100; break; case 0x40: step_mul=1000; break; case 0x50: step_mul=1000; break; default: step_mul=100; break; 5.4 机床轴直线运动机床轴直线运动 除点动、 步进等机床轴运动外, 华中数控系统还为 PLC 提供了如下控制轴运动的函数, 以便用户灵活控制轴运动: 5.4.1 设置轴移动距离及速率 void set_axis_move( int axis, /轴号:0-15 long displacement, /移动距离增量 int speed); /移动速率,单位:内部脉冲/插补周期 5.4.2 设置轴移动的目的地及速率 void set_axis_moveto( int axis, /轴号:0-15 long position, /移动的目的地,绝对坐标 int speed);/移动速率,单位:内部脉冲/插补周期 5.5 停止机床轴运动停止机床轴运动 要停止机床相关轴运动,在 PLC 程序中,调用 set_axis_stop()即可。该函数的原型定义 为: /设置指定轴停止运动 void set_axis_stop(int axis); /轴号:0-15 5.5 机床轴运动状态获取机床轴运动状态获取 在 PLC 程序中,可能会需要判断某些轴是否正在运动、取轴的当前绝对位置等。系统 提供了如下函数供 PLC 使用: 5.5.1 取指
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号