爱收集资源网

SMC606运动控制器:硬件原理全解析

网络整理 2023-10-26 22:04

一:引言

通过前几篇有趣应用教程的学习,相信你们对雷赛SMC606控制器早已形成了兴趣(《用BASIC控制SMC606实现机械手堆码》《如何用C#控制机械写毛笔字》点击文章标题进行回顾)。本次教程将学习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'参与插值运动轴数为 2Line_Dist1(0) = 25'定义 X 轴运动距离为 25mmLine_Dist1(1) = 25'Y 轴运动距离为 25mmLine_Dist2(0) = 25'定义 X 轴运动距离为 25mmLine_Dist2(1) =-25'Y 轴运动距离为 -25mmLine_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轴运行速率一致,但目标距离不一致,所以会出现一段折线轨迹。而直线插值无论如何设置速率参数以及目标位置,其运动轨迹一直都为一条直线。

程序框图连接点怎么用
上一篇:补单攻略:淘宝超越竞争,做好就在这里 下一篇:没有了
相关文章