入门教程|SMC606运动控制器基本运动功能的实现(可下载)
一:引言
通过前几篇有趣应用教程的学习,相信大家对雷赛SMC606控制器已经产生了兴趣(《用BASIC控制SMC606实现机械手码垛》《如何用C#控制机械写毛笔字》点击文章标题进行回顾)。本次教程将学习SMC606运动控制器的基本运动功能,通过完成一个简单运动项目,来学习并掌握运动控制的技术。
教程将使用SMC606运动控制器、三轴运动平台以及BASIC程序实现回原点运动、定长运动、直线插补运动、圆弧插补运动、恒速运动和输入输出信号的控制,希望能对运动控制技术感兴趣的初学者有所帮助。
二.硬件原理
三.程序设计
SMCSetEquiv(1,640) ‘设置 Y 轴脉冲当量为 640 pulse/mm
SMCSetEquiv(2,1600) ‘设置 Z 轴脉冲当量为 1600 pulse/mm
‘函数括号内第一个数字表示轴号,第二个数字表示脉冲当量
Run1,LED ‘启动多任务程序1,LED
WhileTrue ‘主程序死循环
IfSMCCheckDone(MyaxisX)=1
AndSMCCheckDone(MyaxisY)=1
AndSMCCheckDone(MyaxisZ)=1Then ‘当三个轴的运动状态都为停止时
IfSMCReadInBit(0)=0Then ‘按下按钮1时
‘等号后面的数字为设置电平,0为低电平,1为高电平
Gosub goHome ‘调用回零子程序
EndIf
IfSMCReadInBit(2)=0Then ‘按下按钮3时
Gosub goHome ‘调用回零子程序
WhileSMCCheckDone(MyaxisX)=0
OrSMCCheckDone(MyaxisY)=0
OrSMCCheckDone(MyaxisZ)=0
Wend ‘等待所有轴回零完毕
Gosub goPmoveAndArc ‘调用定长+画图子程序
EndIf
Gosub goVmove ‘调用 恒速运动子程序
WhileSMCReadInBit(1)=0
Wend ‘等待 按钮2 松开
IfSMCReadInBit(1)=1Then ‘松开 按钮2 时
Gosub goStop ‘调用 松开按钮 子程序
EndIf
EndIf
EndIf
Wend
WhileTrue
IfSMCCheckDone(MyaxisX)=0Then’如果X轴正在运动
SMCWriteOutBit(0,0) ‘指示灯LED0亮。
‘函数括号内第一个数字为通用输出IO的编号,
‘第二个数字为设置电平,0为低电平,1为高电平。
Else
SMCWriteOutBit(0,1) ‘否则灯灭
EndIf
MyHome_dirX=0‘X轴回零方向为0负向
MyModeX=1 ‘X轴回原点模式为1一次回零反找
MyLow_VelX=0.1 ‘X轴回原点起始速度为0.1mm/s
MyHigh_VelX=8 ‘X轴回原点运行速度为8mm/s
MyHome_TaccX=0.5 ‘X轴回原点加速时间为0.5s
MyHome_TdecX=0.5 ‘X轴回原点减速时间为0.5s
MyEnableX=2 ‘X轴回原点使能参数为2先运动到指定位置再清零
MyPositionX=0.1 ‘X轴计数偏移位置值为0.1
SMCSetHomePinLogic(MyaxisX,MyLogicX,0) ‘调用函数设置X轴ORG原点有效电平
SMCSetHomemode(MyaxisX,MyHome_dirX,1,MyModeX,0) ‘调用函数设置X轴回原点模式
SMCSetHomeProfileUnit(MyaxisX,MyLow_VelX,MyHigh_VelX,MyHome_TaccX,MyHome_TdecX)
‘调用函数设置X轴回原点速度参数
SMCHomeMove(MyaxisX) ‘启动X轴回零运动
MyMax_VelX=15 ‘X轴最大速度为15
MyTaccX=0.2 ‘X轴加速时间为0.2s
MyTdecX=0.2 ‘X轴减速时间为0.2s
MyStop_VelX=0.1 ‘X轴停止速度为0.1
Mys_modeX=0 ‘X轴保留参数为0
Mys_paraX=0.05 ‘X轴S段时间为0.05
MyDistX=25 ‘X轴目标位置为20
Myposi_modeX=0 ‘X轴运动模式为0相对坐标模式
SMCSetProfileUnit(MyaxisX,MyMin_VelX,MyMax_VelX,MyTaccX,MyTdecX,MyStop_VelX) ‘调用函数设置X轴运动速度曲线
SMCPMoveUnit(MyaxisX,MyDistX,Myposi_modeX) ‘启动X轴点位运动
Dim Line_dist1(2) ‘定义直线插补运动终点数组1
Line_Crd = 0 ‘参与直线插补运动的坐标系 0
Line_Min_Vel = 1 ‘起始速度为 1mm/s
Line_Max_Vel = 15 ‘最大速度为 15mm/s
Line_Tacc = 0.1 ‘加速时间为 0.1s
Line_Tdec = 0.1 ‘减速时间为 0.1s
Line_Stop_Vel = 1 ‘停止速度为 1mm/s
Line_Smode = 0 ‘保留参数,固定值为 0
Line_Spara = 0.05 ‘平滑时间为 0.05s
Line_Dist1(0) = 25 ‘定义 X 轴运动距离为 25mm
Line_Dist1(1) = 25 ‘Y 轴运动距离为 25mm
Line_Dist2(0) = 25 ‘定义 X 轴运动距离为 25mm
Line_Dist2(1) =-25 ‘Y 轴运动距离为 -25mm
Line_posi_mode = 0‘插补运动模式为相对坐标模式
SMCSetVectorProfileUnit(Line_Crd,Line_Min_Vel,Line_Max_Vel,Line_Tacc,Line_Tdec,Line_Stop_Vel)‘设置直线插补速度参数
SMCSetVectorSprofile(Line_Crd,Line_Smode,Line_Spara) ‘设置速度曲线S段时间
SMCLineUnit(Line_Crd,Line_axisNum,AxisArray(0),Line_Dist1(0),Line_posi_mode) ‘启动直线插补运动
Dim Dist(2) ‘定义圆弧运动终点数组
Dim cen(2) ‘定义圆弧圆心数组
Arc_Crd = 0 ‘参与插补运动的坐标系0
AxisArray(0) = 0 ‘定义插补0轴为 X 轴
AxisArray(1) = 1 ‘定义插补1轴为 Y 轴
Arc_Min_Vel = 1 ‘起始速度为 1mm/s
Arc_Max_Vel= 10‘最大速度为10 mm/s
Arc_Tacc = 0.3 ‘加速时间为0.3s
Arc_Tdec = 0.3 ‘减速时间为0.3s
Arc_Stop_Vel = 1‘停止速度为 1mm/s
Arc_Smode = 0 ‘保留参数,固定值为0
Arc_Spara = 0.1 ‘平滑时间为 0.1s
Arc_axisNum = 2‘参与插补运动轴数为2
Dist(0) = -50 ‘定义X轴运动终点位置
Dist(1) = 0 ‘定义Y轴运动终点位置
Cen(0)=-25 ‘定义圆心的X轴坐标
Cen(1)=0 ‘定义圆心的Y轴坐标
Arc_posi_mode = 0 ‘插补运动模式为相对坐标模式
Arc_Circle=0 ‘设置圆弧圈数为1
Arc_Dir = 0 ‘设置圆弧方向为顺时针
‘调用函数圆弧插补速度参数
SMCSetVectorSprofile(Arc_Crd,Arc_Smode,Arc_Spara) ‘调用函数圆弧插补速度曲线S段时间
SMCArcMoveCenterUnit(Arc_Crd,Arc_axisNum,AxisArray(0),Dist(0),Cen(0),Arc_Dir,Arc_Circle,Arc_posi_mode) ‘令X轴Y轴做圆心+圆弧终点模式圆弧插补运动
恒速运动程序代码如下:
SMCSetProfileUnit(MyaxisX,MyMin_VelX,MyMax_VelX,MyTaccX,MyTdecX,MyStop_VelX) ‘调用函数设置X轴运动速度曲线
SMCSetsprofile(MyaxisX,Mys_modeX,Mys_paraX) ‘调用函数设置X轴S段参数值
SMCVMove(MyaxisX,0) ‘启动X轴负方向恒速运动
停止恒速运动程序代码如下:
SMCStop(MyaxisX,0) ‘停止X轴负方向恒速运动
四.小结
想要获取完整文章内容及“附录例程代码”可点击文末“阅读原文”
热门文章
