入门教程|SMC606运动控制器基本运动功能的实现(可下载)

您所在的位置:网站首页 prc控制器编程视频教学 入门教程|SMC606运动控制器基本运动功能的实现(可下载)

入门教程|SMC606运动控制器基本运动功能的实现(可下载)

2024-07-07 02:18| 来源: 网络整理| 查看: 265

一:引言

通过前几篇有趣应用教程的学习,相信大家对雷赛SMC606控制器已经产生了兴趣(点击文章标题进行回顾)。本次教程将学习SMC606运动控制器的基本运动功能,通过完成一个简单运动项目,来学习并掌握运动控制的技术。

教程将使用SMC606运动控制器、三轴运动平台以及BASIC程序实现回原点运动、定长运动、直线插补运动、圆弧插补运动、恒速运动和输入输出信号的控制,希望能对运动控制技术感兴趣的初学者有所帮助。

二.硬件原理

2.1 运动控制器

SMC606运动控制器外观如图2.1所示,图中方框部分为本项目所需要使用的各个接口。

下面按标号顺序介绍SMC606运动控制器接口功能:

(1)电源接口:接入24V直流电源,为SMC606运动控制器提供电源。

(2)Ethernet接口:通过此接口实现控制器与PC机的以太网通信。

(3)轴信号接口:通过轴信号接口与电机驱动器连接。

(4)原点限位接口:与原点传感器相连接,为控制器提供原点信号。

(5)通用输入接口:用于接入按钮、开关量传感器等开关量信号。

(6)通用输出接口:用于控制指示灯、继电器、电磁阀等开关量元件。

2.2运动控制器输入输出电路

SMC606控制器的数字输入电路原理图如图2.2所示,输入信号IN由外部按钮提供,SMC606内部中的小框为光耦,作光电隔离,起到抗干扰作用。

当按钮处于断开状态时,光耦里面的发光二极管处于截止状态,不发光,则光敏三极管处于截止状态,所以给CPU输入的IN0信号为高电平。

当按钮处于闭合状态时,发光二极管导通后发光,使光敏三极管处于导通状态,则输入给CPU的IN0信号为低电平。

SMC606控制器的原点输入电路原理图如图2.3所示,输入信号ORG由光电开关提供,SMC606内部中的小框为光耦,作光电隔离,起到抗干扰作用。

当运动平台不在原点位置时,挡片未遮挡光电开关,光电开关内光敏三极管处于导通状态,控制器内光耦的发光二极管导通发光后,使光敏三极管处于导通状态,则输入给CPU的ORG0信号为低电平。

运动平台回到原点位置时,挡片遮挡光电开关,光电开关内光敏三极管处于截止状态,光耦中发光二极管处于截止状态不发光,使光敏三极管处于截止状态,则输入给CPU的ORG0信号为高电平。即原点信号的有效电平为高电平。

SMC606控制器的输出电路原理图如图2.4所示,SMC606内部中的小框为光耦,作光电隔离,起到抗干扰作用。

输出信号OUT由IO指令从CPU发出。当CPU输出信号OUT0为高电平时,光耦里面的发光二极管处于截止状态,不发光,使光敏三极管处于截止状态,没有电流流过三极管的基极,所以三极管也处于截止状态,指示灯LED灯不亮。

同理当CPU输出信号OUT0为低电平时,发光二极管导通发光,光敏三极管导通提供电流给三极管的基极,所以三极管导通使指示灯LED亮。

2.3 步进电机驱动器

以雷赛产品DM542步进电机驱动器为例,其外观如图2.5所示。驱动器外部接口有控制信号接口和电机及电源接口,还有一个拨码开关。

(1)控制信号接口:接收控制器传输的控制信号,其中PUL+、PUL-为脉冲信号,DIR+、DIR-为方向信号,ENA+、ENA-为使能信号。

(2)拨码开关:采用八位拨码开关为电机调整细分数、工作电流、静态半流。SW1、SW2、SW3为最大工作电流设定。SW4为半流/全流模式设定,默认为半流模式。SW5、SW6、SW7、SW8为细分模式设定。

(3)电机及电源接口:GND为直流电源地,+V为直流电源正极,A+和A-为电机的A相线圈的连线,B+和B-为电机的B相线圈的连线。

2.4控制器与驱动器连接

SMC606控制器与步进电机驱动器的有两种连接方式,分别是差分连接和单端连接,取决于步进电机驱动器的类型。

如图2.6所示,DM542步进电机驱动器采用的是差分信号连接方式。驱动器中小框为光耦,作光电隔离,起到抗干扰作用。

控制器内26LS31输出端PUL+与步进电机驱动器内光耦的发光二极管的正极连接,输出端PUL-与发光二极管的负极连接,输出端DIR同理。

如图2.7所示,DM422步进电机驱动器采用的是单端信号连接方式。

控制器内26LS31输出端PUL+悬空,输出端PUL-与步进电机驱动器内光耦的发光二极管的负极连接,发光二极管正极与5V电源连接,输出端DIR同理。

相比较而言,脉冲信号采用差分信号传输方式不仅抵消了干扰噪声,提高了抗干扰能力,而且两条信号线形成回路,信号地无关,避免了电平转移。

2.5三轴运动平台

本项目使用的三轴平台的外观如图2.8所示,三个轴信号接口分别连接三个驱动器,控制三台步进电机;同时它还提供了输入输出接口(控制按钮、LED指示灯等)、原点和限位接口、和24V直流电源。

运动平台的三个轴均是由步距角为1.8°的步进电机、滚珠丝杆、导轨、滑块组成。平台最大负载为5Kg,定位精度为0.03mm。其参数为:

X轴:

(1)有效行程: 0~200mm

(2)丝杆导程: 10mm

(3)驱动器细分数: 32

Y轴:

(1)有效行程:0~100mm

(2)丝杆导程:10mm

(3)驱动器细分数:32

Z轴:

(1)有效行程: 0~50mm

(2)丝杆导程: 4 mm

(3)驱动器细分数: 32

由三个电机的步距角为1.8°可知,电机转一圈需要200个脉冲。设置驱动器的细分数为32时,也就是将步距角1.8°再细分为32个角度,此时电机转一圈需要6400个脉冲。

已知X、Y轴的丝杠导程为10mm,即电机转一圈滑块移动10mm,所以滑块移动1mm时需要640个脉冲,设置X轴、Y轴的脉冲当量为640pulse/mm。

同理Z轴丝杠导程为4mm,即电机转一圈滑块移动4mm,所以滑块移动1mm时需要1600个脉冲,设置Z轴的脉冲当量为1600pulse/mm。

三.程序设计

3.1 功能介绍

本次项目要实现三个功能:回原点、手动调节位置、自动执行轨迹运动。

本次设计的构想图如图3.1所示。按照构想实现以下功能:

(1)按钮1按下:控制三轴回原点。按下按钮1后,Z轴滑块先进行定长运动向上抬升一段距离,X轴与Y轴同时进行回原点运动。当X轴、Y轴都回原点完毕后,Z轴再进行回原点运动,直到Z轴回原点完毕。

(2)按钮3按下:三轴先回原点,再执行轨迹运动。三轴回原点动作与按钮1实现的动作一致。三轴回原点完成后,三轴同时进行定长运动,即X轴滑块向左,Y轴滑块向后,Z轴滑块向上同时进行定长运动到一定的距离,接着Z轴滑块进行反方向的定长运动下降致笔尖触碰纸面,如图3.1所示的落笔位置,然后X轴Y轴进行直线插补运动画等腰直角三角形的两斜边;之后,顺时针圆弧插补运动开始画半圆;与此同时LED灯5亮,动作执行完毕后,笔尖停留在落笔位置,LED灯5灭。

(3)按钮2按下:按下按钮2且按住不放,可实现Y轴滑块向前的恒速运动,松开按钮即停止恒速运动。

(4)按下其他几个按钮(4~9)也是与按钮2功能一致的恒速运动,但是运动轴与方向有区别。

(5)LED灯0、1、2亮分别表示X轴、Y轴、Z轴正在运动,灯灭表示停止运动。

3.2程序框图

3.2.1 主程序框图设计

根据上一节的功能构想,可以绘制出主程序框图如图3.2所示。主程序由一个大循环构成。在大循环中设置了从按钮1到按钮9的功能执行流程,与上一节的功能构想一一对应。

3.2.2 多任务程序框图设计

多任务程序对应为3.1节的(5)功能,其程序框图如图3.3所示。多任务程序也是一个由大循环构成,循环内为判断X轴、Y轴、Z轴是否正在运动,正在运动对应LED灯亮,否则灯灭。

3.2.3回零与画图子程序框图设计

回原点子程序与画图子程序框图如图3.4所示。在回零子程序中,Z轴滑块做定长运动,向上抬升一小段距离,使笔抬起。在画图子程序中,X轴、Y轴、Z轴滑块同时做定长运动,将笔移动至平台中的指定位置(落笔点),Z轴滑块做定长运动,向下移动一小段距离至笔尖触碰纸面,后开始做插补运动画图。

3.2.4恒速运动与停止子程序框图设计

恒速运动子程序包括了所有需要恒速运动的按钮的流程,其程序框图如图3.5所示。松开按钮表示恒速运动结束,调用停止恒速运动子程序。其程序框图如图3.6所示。

3.3程序设计

按照程序框图的流程,编写BASIC程序。

主程序代码如下:

SMCSetEquiv(0,640) '设置 X 轴脉冲当量为 640 pulse/mm

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时

'函数括号内的数字为通用输入IO号,

'等号后面的数字为设置电平,0为低电平,1为高电平

Gosub goHome ' 调用回零子程序

EndIf

IfSMCReadInBit(2)=0Then '按下按钮3时

Gosub goHome '调用回零子程序

WhileSMCCheckDone(MyaxisX)=0

OrSMCCheckDone(MyaxisY)=0

OrSMCCheckDone(MyaxisZ)=0

Wend '等待所有轴回零完毕

Gosub goPmoveAndArc '调用定长+画图子程序

EndIf

IfSMCReadInBit(1)=0Then '按下按钮2时

Gosub goVmove '调用 恒速运动子程序

WhileSMCReadInBit(1)=0

Wend '等待 按钮2 松开

IfSMCReadInBit(1)=1Then '松开 按钮2 时

Gosub goStop '调用 松开按钮 子程序

EndIf

EndIf

EndIf

Wend

主程序主要有以下内容:

先使用函数SMCSetEquiv设置三个轴的脉冲当量,其后设置速度和位置参数时,位移单位均为mm。

启动多任务程序LED,

接着在While True大循环中编写主程序的所有代码。

使用函数SMCCheckDone判断轴是否都为停止状态,当函数返回值为1表示运动状态为停止。

使用函数SMCReadInBit判断按钮是否按下。按钮1按下调用回零子程序goHome;按钮3按下,调用定长+画图子程序goPmoveAndArc;按钮2按下调用恒速运动子程序goVmove以及松开按钮时的停止子程序goStop。

完整程序代码见附录。

多任务程序代码如下:

LED:

WhileTrue

IfSMCCheckDone(MyaxisX)=0Then'如果X轴正在运动

SMCWriteOutBit(0,0) '指示灯LED0亮。

'函数括号内第一个数字为通用输出IO的编号,

'第二个数字为设置电平,0为低电平,1为高电平。

Else

SMCWriteOutBit(0,1) '否则灯灭

EndIf

Wend

多任务程序也使用While True循环,点亮LED灯使用SMCWriteOutBit函数来表达。

回原点子程序代码如下:

MyLogicX=1 'X轴ORG有效电平为1高有效

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轴回原点速度参数

SMCSetHomePositionUnit(MyaxisX,MyEnableX,MyPositionX) '调用函数设置X轴回零完成后位置计数值

SMCHomeMove(MyaxisX)'启动X轴回零运动

定长运动程序代码如下:

MyMin_VelX=0.1 'X轴最小速度为0.1

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轴运动速度曲线

SMCSetsprofile(MyaxisX,Mys_modeX,Mys_paraX) '调用函数设置X轴S段参数值

SMCPMoveUnit(MyaxisX,MyDistX,Myposi_modeX) '启动X轴点位运动

为了使X轴在运动时速度平稳变化,采用S形速度曲线控制,即在程序中使用SMCSetsprofile函数来设置S段时间。S形速度曲线与加速度曲线如图3.7所示。可见,速度曲线是一条平滑曲线,图中Tacc为加速时间,Tdec为减速时间,Spara为S段时间。

直线插补程序代码如下:

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_axisNum = 2 '参与插补运动轴数为 2

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) '启动直线插补运动

直线插补与定长运动指令的区别为,定长运动只能设置单轴,例如定义X轴的定长运动函数只能驱动X轴,Y轴同理。当定义的X轴速度与Y轴速度一致,但目标距离不同时,其运动轨迹是一条折线。直线插补函数则可以设置多轴,其运动曲线是一条直线。如图3.1所示。

圆弧插补程序代码如下:

Dim AxisArray(2) '定义轴数组

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 '设置圆弧方向为顺时针

SMCSetVectorProfileUnit(Arc_Crd,Arc_Min_Vel,Arc_Max_Vel,Arc_Tacc,Arc_Tdec,Arc_Stop_Vel)

'调用函数圆弧插补速度参数

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轴负方向恒速运动

四.小结

使用雷赛Motion软件观察运动轨迹,当按钮3按下后,其运动轨迹如图4.1所示,和图3.1所设计的运动轨迹完全一样。其中OAB为调用定长运动函数得出来的轨迹,BC、CD为调用直线插补函数得出来的轨迹,DB为调用圆弧插补函数得出来的轨迹。由于设置定长运动X轴和Y轴运行速度一致,但目标距离不一致,所以会出现一段折线轨迹。而直线插补无论如何设置速度参数以及目标位置,其运动轨迹始终都为一条直线。

电气控制原理动态图,全都给你整理齐了!

2020年中国高端数控机床行业市场分析



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3