运动控制指令介绍
FANUC工业机器人常用指令

FANUC工业机器人常用指令简介FANUC工业机器人是一种广泛应用于工业生产中的自动化设备,其具有高精度、高效率、高可靠性和高稳定性的特点。
为了控制和操作这些机器人,我们需要了解一些常用的指令。
本文档将介绍一些FANUC工业机器人常用指令,包括运动控制指令、传感器与外部设备的指令和系统控制指令。
运动控制指令PTPPTP(Point to Point)是一种常用的运动控制指令,用于控制机器人从一个点(起始点)到另一个点(目标点)的运动。
指令格式:PTP X, Y, Z, A, B, C, VEL, ACC•X, Y, Z:目标点的坐标值。
•A, B, C:目标点的姿态(角度值)。
•VEL:速度值。
•ACC:加速度值。
LINLIN(Linear)指令用于控制机器人沿直线路径运动,从一个点(起始点)到另一个点(目标点),可以控制线性路径上的速度和加速度。
指令格式:LIN X, Y, Z, A, B, C, VEL, ACC•X, Y, Z:目标点的坐标值。
•A, B, C:目标点的姿态(角度值)。
•VEL:速度值。
•ACC:加速度值。
CIRCCIRC(Circular)指令用于控制机器人沿圆弧路径运动。
圆弧由起始点、目标点和中心点定义。
指令格式:CIRC X1, Y1, Z1, A1, B1, C1, X2, Y2, Z2, A2, B 2, C2, VEL, ACC•X1, Y1, Z1:起始点的坐标值。
•A1, B1, C1:起始点的姿态(角度值)。
•X2, Y2, Z2:目标点的坐标值。
•A2, B2, C2:目标点的姿态(角度值)。
•VEL:速度值。
•ACC:加速度值。
传感器与外部设备的指令READREAD指令用于读取外部设备的输入信号值。
指令格式:READ IN[1], IN[2], IN[3], ...•IN[1], IN[2], IN[3]:外部设备的输入信号编号。
WRITEWRITE指令用于写入外部设备的输出信号值。
运动控制常见功能所用编程指令

点动功能点动功能至少需要MC_Power,MC_Reset,和MC_Jog指令;相对距离运行相对速度控制功能,需要MC_Power,MC_Reset,和MC_MoveRelative指令;以速度连续运行相对速度控制功能,需要MC_Power,MC_Reset,和MC_MoveVolcity,以及MC_Halt指令; 启用/禁用工艺对象:MC_Power确认报警.重新启动工艺对象Mc_rest相对定位轴:Mc_MoveVelocity暂停轴:MC_haltS7-1200运动控制指令用户组态轴的参数,通过控制面板调试成功后,就可以开始根据工艺要求编写控制程序了;关于运动控制指令有几点需要说明:1. 打开OB1块,在Portal软件右侧“指令”中的“工艺”中找到“运动控制”指令文件夹,展开“S7-1200 Motion Control”可以看到所有的S7-1200 运动控制指令;可以使用拖拽或是双击的方式在程序段中插入运动指令,如下图所示,以MC_Power指令为例,用拖拽方式说明如何添加Motion Control指令;这些Motion Control指令插入到程序中时需要背景数据块,如下图所示,可以选择手动或是自动生成DB块的编号;添加好背景DB后的MC_Power指令如下图所示;『注意』运动控制指令之间不能使用相同的背景DB,最方便的操作方式就是在插入指令时让Portal软件自动分配背景DB块;2. 运动控制指令的背景DB块在“项目树”-->“程序块” --> “系统块”-->“程序资源”中找到;用户在调试时可以直接监控该DB块中的数值,如下图所示;3. 每个轴的工艺对象都一个背景DB块,用户可以通过下面的方式打开这个背景DB块:可以对DB块中的数值进行监控或是读写;以实时读取“轴_1”的当前位置为例,如下图所示,轴_1 的DB块号为DB1,用户可以在OB1 调用MOVE指令,在MOVE指令的IN端输入:,则Portal软件会自动把更新成:“轴_1”.Position;用户可以在人机界面上实时显示该轴的实际位置;。
ABB机器人程序指令详解

[\Off]: 默认轴配置数据。
( switch )
直线运动时,机器人移动至 ModPos 点,
轴配置数据默认为当前最接近值。
2020/3/
运动控制指令-ConfL
应用: 对机器人运行姿态进行限制与调整,程序运 行时,使机器人运行姿态得到控制。系统默 认值为 ConfL\On; 。
实例:
ConfL\On; … ConfL\Off;
p10,外轴不动。
p20,外轴联动 track_motion。
p30,外轴联动 orbit_a。
限制: 不能在指令 StorePath …RestoPath 内使用。 不能在预置程序 RESTART 内使用。
2020/3/
计数指令
Add Incr
Clear Decr
2020/3/
计数指令-Add
2020/3/
运动控制指令-SoftAct
SoftAct [\MechUnit,] Axis, Softness [\Ramp];
[\MechUnit]: Axis: Softness: [\Ramp]:
软化外轴名称。 ( mecunit )
软化转轴号码。 ( num )
软化值 %。
( num )
2020/3/
运动控制指令-PathResol
限制: 机器人必须在完全停止后才能更改路径控制
值,否则,机器人将默认一个停止点,并且 显示错误信息 50146。 机器人正在更改路径控制值时,机器人被强 制停止运行,机器人将不能立刻恢复正常运 行 ( Restart )。 以下情况机器人将自动恢复默认值 100%。 机器人冷启动。 系统载入新的程序。 程序重置 ( Start From Beginning )。
第八部分:ABB机器人运动控制常用指令

第八部分:ABB机器人运动控制常用指令1.运动速度控制指令:VelSet例如:VelSet 100, 5000;其中100:机器人运行速率%,数据类型是( num )5000:机器人最大速度mm/s,数据类型是( num )解读:每个机器人运动指令均有一个运行速度,在执行运动速度控制指令VelSet后,机器人实际运行速度为运动指令规定运行速度乘以机器人运行速率,并且不超过机器人最大运行速度。
注意:A.机器人冷启动,新程序载入或是程序重置后,系统自动恢复为默认值;B.机器人使用参变量[\T]时,最大运行速度将不起作用;C.Override对速度数据(Speeddata)内的所有项到起作用,但是对焊接参数Welddata与Seamdata内的参数,机器人速度不起作用;D.Max只对速度数据(Speeddata)内TCP这项起作用;实例:Velset 50,800;Movel p1,v1000,z10,tool1; ----500mm/sMovel p2,v1000\V:=2000,z10,tool1; ----800mm/sMovel p2,v1000\T:=5,z10,tool1; ----10 sVelset 80,1000MoveL p1,v1000,z10,tool1; ----800mm/sMoveL p2,v5000,z10,tool1; ----1000mm/sMoveL p3,v1000\V:=2000,z10,tool1; ----1000mm/sMoveL p3,v1000\T:=5,z10,tool1; ----6.25 s2.运动加速度控制指令:AccSet格式:AccSet Acc ,Ramp;解读:Acc,机器人加速度百分率,数据类型为num;Ramp,机器人速度坡度,数据类型为num;例如:AccSet 100, 100;其中100:机器人加速度百分率%,数据类型是( num );100:机器人加速度坡度%,数据类型是( num );注意:A.机器人的加速度百分率最小限制是20%,设定小于20%,还是以20%来计算;B.机器人加速度坡度%最小限制是10,小于10,还是以10来计算;C.机器人冷启动,新程序载入或是程序重置后,系统自动恢复为默认值;。
运动控制指令介绍

运动及轴命令ACC类型:轴指令语法: ACC(rate)注意:这个指令用来和旧的Trio控制器兼容。
在新控制程序中加速度率和减速度率可用ACCEL 和DECEL轴参数设定。
说明:同时设定加速度率和减速度率参数:rate:加速率,单位:UNITS/SEC/SEC例子:例1:把轴的加、减速设置成相同的值,在指定的速度下,运行电机ACC(120) ‘ 加减速同时设为 120 units/sec/secSPEED=14.5 ‘ 电机速度设为 14.5 units/secMOVE(200) ‘ 电机走 200个units的增量距离ADD_DAC类型:轴指令语法: ADD_DAC(轴)说明: ADD_DAC指令提供双反馈控制。
允许一个辅助编码器(轴2)反馈到伺服轴(轴1)。
指令使得两个伺服环的输出共同决定伺服轴的速度指令输出。
这个指令通常应用于轧辊反馈系统,需要一个辅助编码器补偿滑动。
当一个运动轴,带两个反馈编码器时,用到这条指令。
实现方法:在虚拟轴上做动作,用ADDAX()或CONNECT()把此动作加到两个轴上,再用ADD_DAC把两个轴的速度指令输出加到同一轴上如果2个反馈装置分辨率的不同,必须注意两个轴所要求的目标位置不一样。
注:在下例中,需要设置辅助编码器轴的ATYPE为伺服轴。
使用ADD_DAC(-1)取消连接参数:轴速度参考输出到基本轴,设置-1取消连接,并返回正常操作。
参阅: AXIS,ADDAX,OUTLIMIT例1:BASE(1)‘使两轴编码器在相同的线性距离反馈回相同的计数ENCODER_RATIO(counts_per_mm2, counts_per_mm1)UNITS AXIS(1) = counts_per_mm1UNITS AXIS(2) = counts_per_mm1 ‘ 单位必须相同ADD_DAC(2) ' 把轴2 的DAC_OUT叠加到轴1上ADDAX(1) AXIS(2) ' 把轴1的轨迹加到轴2上‘到现在,两轴已经准备就绪MOVE(1200)WAIT IDLEADDAX类型:运动控制指令语法: ADDAX(轴号)说明: ADDAX指令将2个或多个的运动叠加形成较复杂的运动轨迹。
ABB机器人常用指令详解-中文(一)

ABB常用指令详解-中文(一)ABB常用指令详解-中文(一)本文档旨在介绍ABB常用指令的详细信息,以帮助用户更好地了解和使用ABB系统。
下面将对各个章节进行详细阐述。
1.运动控制指令1.1.MOVEJ指令MOVEJ指令用于将关节直线移动到目标位置。
可以通过设置目标位置、运动速度和加速度来实现精确的运动控制。
该指令的语法如下:MOVEJ {目标位置},v{速度},a{加速度}其中,目标位置可以用关节角度或者工具坐标系位置进行表示。
1.2.MOVEL指令MOVEL指令用于将工具坐标系下的TCP(工具中心点)位置沿直线移动到目标位置。
通过设置目标位置、运动速度和加速度参数,可以实现精确的运动控制。
该指令的语法如下:MOVEL {目标位置},v{速度},a{加速度}其中,目标位置可以用工具坐标系下的坐标进行表示。
1.3.MOVEC指令MOVEC指令用于沿一条圆弧轨迹将点A移动到点B。
可通过设置起始点和终点的TCP位置,沿圆弧轨迹实现精确的运动控制。
该指令的语法如下:MOVEC {起始点TCP位置},{终点TCP位置},v{速度},a{加速度}2.系统控制指令2.1.SPEED指令SPEED指令用于设置运动的速度和加速度参数。
可以通过设置关节速度、坐标系速度和时间倍率三个参数来控制的运动速度。
该指令语法如下:SPEED v{速度},a{加速度},t{时间倍率}2.2.SETDO指令SETDO指令用于设置数字输出口的状态。
可以通过该指令将数字输出口的状态设置为高(1)或低(0)。
该指令的语法如下:SETDO x{数字输出口号},{状态}2.3.SETTOOL指令SETTOOL指令用于设置工具坐标系。
可以通过该指令将工具坐标系的原点和方向设置为指定的TCP位置。
该指令的语法如下:SETTOOL p{x},{y},{z},{q0},{q1},{q2},{q3}3.数据处理指令3.1.WT指令WT指令用于暂停程序的执行,直到满足指定的条件。
两轴运动控制器指令说明

指令说明:输出状态设置输出口号。
出厂参数默认的是M0-01到M9-10如下图所示:如您要重新设置,可以如下图所示:在控制器主界面进入参数设置-》IO设置-》输出。
重新设置好参数。
M0-M9相当与指令里的参数01-10相当与接线板的输出1-10(绿灯)输出状态指令是用于接输出点的。
比如:接水泵,气缸,电磁阀等等。
但必须先接中间继电器,由中间继电器转出去。
继电器接法如下图:(一头接24V,一头接输出口。
)参数:P(输出口号),S(输出状态)取值范围:P(0-9),S(0:关,1:开)(特殊指令)输入控制输出在参数设置画面下(主画面进入“参数设置”),按“空格”键进入此设置。
显示“入00态00出00态00类00”共四行。
入:指输入口号(1-10)态:指相应的输入口为0/1时有效出:批输出态号(0-9),对应于M0-M9态:指相应的输出态为0/1类:0:电平状态:相应的输入口与其态相符时使输出态置为相应的输出状态1:脉冲方式:相应的输入口触发一次使输出态置为相应的输出状态注:输入口为零时无效最多可设置四个延时等待延时相应时间。
时间单位0.1/0.01秒参数:T(延时的时间)。
取值范围:(0-99999)当T为0时执行暂停功能,暂停后按面板上的启动键继续。
时间单位:0.1秒默认的是0.1秒,如需时间更精确的话,在控制器界面进入参数设置-》系统参数-》选项(0.01秒)如下图时间单位:0.01秒直线插补沿直线,以F速度×速度倍率,运动给定的增量值。
此运动受速度倍率的影响,且与当前F速度有关。
参数:X,Y,Z,C(向运动增量)F(运动速度,如F速度为0,默认速度300,数值越大速度越高)注:F为0,受上直线插补、测位运动、圆弧指令速度的影响参数:P(输入口号)S(输入口状态)取值范围:P(1-10)S(0,1)P参数(非0)选择的输入口S状态为(0/1)时等待。
(用与常开、常闭)常开常闭接法:(三线传感器:一头接输入点,另外两头分别接24V,24G)(二线传感器:一头接输入点,另外一头接24G)当P为0,S为1时,执行无限运动。
7-6 S7-1200 PLC运动控制的指令解读

1. MC_Power使能指令
轴在运动之前,必须运行使能指令,且一直处于激活状态,此指令是运动控制时, 必须要使用的指令。
LAD
输入/输出
参数的含义
EN
使能
Axis
已配置好的工艺对象名称,是一个数据块
StopMode 轴停止模式,有三种模式
Enable
为1时,轴使能;为0时,轴停止(不是上升沿)
Busy
标记MC_Powe指令是否处于活动状态
Error
标记MC_Power指令是否产生错误
ErrorID 错误ID码
ErrorInfo 错误信息
2.MC_MoveRelative相对定位轴指令
相对定位轴指令
MC_MoveRelative相对定位轴指令块的执行不需要建立参考点,只需要定义距离、 速度和方向即可。当上升沿使能Execute后,轴按照设定的速度和距离运行,其方向由 距离中的正负号(+/-)决定。以当前停止的位置作为起点,指定移动方向和移动量(相 对地址)进行定位动作。与参考点(参考点)无关。
3. MC_MoveAbsolute绝对定位轴指令
LAD
输入/输出
参数的含义
EN
使能
Axis
已配置好的工艺对象名称,是一个数据块
Execute
上升沿使能
Position
绝对目标位置
Velocity
定义的速度 要求为启动/停止速度 ≤ Velocity ≤ 最大速度
Doห้องสมุดไป่ตู้e
1:已达到目标位置
Busy
1:正在执行任务
CommandAborted 1:任务在执行期间被另一任务中止
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运动及轴命令ACC类型:轴指令语法: ACC(rate)注意:这个指令用来和旧的Trio控制器兼容。
在新控制程序中加速度率和减速度率可用ACCEL 和DECEL轴参数设定。
说明:同时设定加速度率和减速度率参数:rate:加速率,单位:UNITS/SEC/SEC例子:例1:把轴的加、减速设置成相同的值,在指定的速度下,运行电机ACC(120) ‘ 加减速同时设为 120 units/sec/secSPEED=14.5 ‘ 电机速度设为 14.5 units/secMOVE(200) ‘ 电机走 200个units的增量距离ADD_DAC类型:轴指令语法: ADD_DAC(轴)说明: ADD_DAC指令提供双反馈控制。
允许一个辅助编码器(轴2)反馈到伺服轴(轴1)。
指令使得两个伺服环的输出共同决定伺服轴的速度指令输出。
这个指令通常应用于轧辊反馈系统,需要一个辅助编码器补偿滑动。
当一个运动轴,带两个反馈编码器时,用到这条指令。
实现方法:在虚拟轴上做动作,用ADDAX()或CONNECT()把此动作加到两个轴上,再用ADD_DAC把两个轴的速度指令输出加到同一轴上如果2个反馈装置分辨率的不同,必须注意两个轴所要求的目标位置不一样。
注:在下例中,需要设置辅助编码器轴的ATYPE为伺服轴。
使用ADD_DAC(-1)取消连接参数:轴速度参考输出到基本轴,设置-1取消连接,并返回正常操作。
参阅: AXIS,ADDAX,OUTLIMIT例1:BASE(1)‘使两轴编码器在相同的线性距离反馈回相同的计数ENCODER_RATIO(counts_per_mm2, counts_per_mm1)UNITS AXIS(1) = counts_per_mm1UNITS AXIS(2) = counts_per_mm1 ‘ 单位必须相同ADD_DAC(2) ' 把轴2 的DAC_OUT叠加到轴1上ADDAX(1) AXIS(2) ' 把轴1的轨迹加到轴2上‘到现在,两轴已经准备就绪MOVE(1200)WAIT IDLEADDAX类型:运动控制指令语法: ADDAX(轴号)说明: ADDAX指令将2个或多个的运动叠加形成较复杂的运动轨迹。
ADDAX指令把指定轴的目标位置(DPOS)的变化,附加到指令指向的轴(基准轴)的任意运动上。
指定轴可以是任一轴,不一定在系统里物理存在。
ADDAX指令发出后两轴的链路保持连接。
直到断开。
指定轴上的进一步运动被附加到基准轴上。
使用ADDAX(-1)取消轴的连接。
ADDAX允许执行两轴叠加运动。
当带有编码器接口的伺服轴的轴参数SERVO 设置到OFF也就是开环,所测位置MPOS被复制到需求位置DPOS。
可以使用ADDAX统计编码器输入。
参数:轴号:指定轴注意:ADDAX指令在做运动叠加时,是在轴参数units下计算的。
例1UNITS AXIS(0)=1000UNITS AXIS(1)=20' 把轴1叠加到轴0ADDAX(1) AXIS(0)MOVE(1) AXIS(0)MOVE(2) AXIS(1)' 轴0将运动1*1000+2*20=1040个边沿例2 物体放置在连续运动的同步带上,并在不远处拾起。
传感器给出信息物体在需要位置之前还是之后,有多远的距离。
在以下例子中,轴0假设为基本轴并连续正向运动,叠加轴2依据子程序计算出的偏移运动到轴0。
FORWARD AXIS(0) ‘设置连续运动ADDAX(2) ‘叠加轴2的偏移运动到轴0REPEATGOSUB getoffset ‘计算偏移MOVE(offset) AXIS(2)在轴2上作偏移的运动UNITL IN(2)=ON ‘直到校正结束例3 有一个cambox运动,用一个编码器输入轴(可以是手轮)作主轴,其实现方法:用一个虚拟轴做主轴,执行cambox运动。
把编码器输入的脉冲输入加到这个虚拟轴上。
' 轴0执行凸轮运动,轴2做主轴' 轴1有一个编码输入子板' 轴2是虚拟轴SERVO AXIS(1)=OFFADDAX(1) AXIS(2) ’把编码器输入的脉冲输入加到这个虚拟轴上。
...CAMBOX(1000,1100,4,600,2) AXIS(0) ’ 轴0执行凸轮运动,轴2做主轴AXIS类型:修改指令语法: AXIS(轴号)说明: AXIS修改设置单轴运动指令或单轴参数读写。
AXIS参数在命令行或程序行特别有效。
注意:如果需要修改下面的所有指令的作用轴应该用BASE指令参数:轴号任何有效的BASIC表达式,指定轴号。
注意:AXIS指令可用于修改以下指令的轴参数:ADDAX,CAM,CAMBOX,CANCEL,CONNECT,DATUM,DEFPOS,FORWARD,MOVEABS,MOVECIRC,MOVELINK,MOVE,MOVEMODIFY,REVERSE,REGIST,WAIT IDLE,WAIT LOADED。
参阅: BASE()例子:例子1>> PRINT MPOS AXIS(3)例子2MOVE(300) AXIS(2)例子3REPDIST AXIS(3)=100注意:请注意上面例子中执行动作和参数读写时在写法上的区别。
BASE类型:运动控制指令语法: BASE(轴1,轴2,轴3)说明: BASE指令用于导向下一个运动指令轴的参数读/写入特定轴或轴组,设置的缺省值依次为:0,1,2…每一个过程有其自己的BASE基本轴组,每个程序能单独赋值。
Trio Basic 程序与控制轴运动的运动发生器分开。
每个轴的运动发生器有其独立的功能,因此每个轴能以自己的速度、加速度等进行编程,单独运动,同时运动,或者通过插补或链接运动链接在一起。
AXIS()命令只要应用正在进行的单命令可以重新导向不同的轴。
而BASE()指令,导向接下来的所有指令,除非用AXIS规定轴号参数:轴号:轴号或轴组号成为新的基准轴排列,即轴号或轴组发送运动指令给多轴指令里的第一个轴。
基本轴的轴数和顺序轴在轴组用于多轴运动。
例子:例子1BASE(1)UNITS=2000 ‘设置轴1的转换因子。
SPEED=100 ‘设置轴1的速度ACCEL=5000 ‘设置轴1的加速度BASE(2)UNITS=2000 ‘设置轴2 的转换因子SPEED=125 ‘设置轴2的速度ACCEL=10000 ‘设置轴2的加速度例子2BASE(0,4,6)MOVE(100,-23.1,1250)注意:轴0移动100单位,轴4移动-23.1单位,轴6移动1250单位。
这些轴会轴0的速度,加速度运动到特定位置。
注意:BASE指令为每一个过程设置一个内部轴队列。
默认值为:0,1,2一直到控制器上的最大轴号。
如果BASE没有指定所有轴,则自动把其他值填入。
首先填入的是比最后制定的轴号大的轴,然后按顺序填入其他轴:例子3在MC216控制器上设置16轴的基本排列。
BASE(2,6,10)设置16轴的内部排列2,6,10,11,12,13,14,15,0,1,3,4,5,7,8,9注意:在命令行处理过程中,通过输入>>BASE(0,2,3,1,4,5,6,7)>>例子是8轴控制器MC206CAM类型:轴指令语法: CAM (start point,End point,Table multiplier,distance)说明: CAM指令按存储在TABLE变量中数组的位置曲线来运动。
Table数组由TABLE指令定义。
Table值是相对于cam运动起始点的绝对位置,并特指编码器的边沿。
运动可由TABLE数组中3到数组容许的任意个点来定义。
运动控制器根据table里的运动曲线通过插补控制电机做出圆滑的运动。
参数: start pointTable数组中使用的第一个元素的地址。
允许Table数组保留多个轨迹或其它信息。
End pointTable数组中最后一个元素的地址。
注意:2个或2个以上CAM()指令同时执行时可以用数组中的相同一组值。
Table multiplierTable倍乘值用于成比例的放缩Table里存储的数值。
因为Table值特定为编码器的沿。
控制运动轨迹的幅值。
Distance用户定义的单位控制整个运动速度。
执行CAM依据当前轴的速度和距离。
控制频率例如:假定程序单位为mm同时速度设置成10mm/s,加速度足够高。
如果定义距离100mm,CAM的执行需要10秒。
速度可以由其他控制指令随时更改。
加速度为当前指定的ACCEL值。
注意为了跟随CAM轨迹,ACCEL参数必须比SPEED参数大1000倍。
(假设默认SERVO_PERID是1ms )参阅: ACCEL,AXIS,CAMBOX,SPEED,TABLE例子:假定运动需要遵循以下位置等式:T(x)=x*25+10000*(1-cos(x))上等式中,X是角度。
客户在利用这个例子时应注意上面的算式,在给table赋值时,cos(x)里的x要换算成弧度。
这个例子提供简单的常速摆动。
循环执行需要以下代码。
FOR deg=0 TO 360 STEP 20 ‘用来给table赋值的循环rad = deg * 2 * PI/360 ‘角度转化为弧度x = deg * 25 + 10000 * (1-COS(rad))TABLE(deg/20,x) ‘table赋值NEXT degWHILE IN(2)=ON ‘input 2 为on时,CAM循环CAM(0,18,1,200)WAIT IDLEWEND注:子程序camtable加载以下数据到table数组。
Table位置角度值1 0 02 20 11033 40 33404 60 65005 80 102636 100 142367 120 180008 140 211609 160 2339610 180 2450011 200 2439612 220 2316013 240 2100014 260 1823615 280 1526316 300 1250017 320 1034018 340 910319 360 9000注意:当CAM指令执行时,ENDMOVE参数设成上一运动的结束位置。
例2:电机上安转一个打印模版,上面有0到9十个数字,激光射到哪个数字,哪个数字就会被打印。
需要打印的数字来自PORT1,ASCII码。
编码器是4000个边沿每转,所以数字与数字之间是400。
Camtable从0到1,这样,cammultiplier应该是400的整数倍,这样才能保证在每个位置之间运动。
速度设为10000 边沿/s,每个cam运动周期设为固定0.25s,这样distance参数应该是10000*0.25=2500程序如下:GOSUB profile_genWHILE IN(2)=ONWAIT UNTIL KEY#1 '等待来自port1的数字GET#1,kIF k>47 AND k<58 THEN '是否有效position=(k-48)*400 '转化为绝对位置multiplier=position-offset '计算相对运动'检查反方向运动是否更近IF multiplier>2000 THENmultiplier=multiplier-4000ELSEIF multiplier<-2000 THENmultiplier=multiplier+4000ENDIFCAM(0,200,multiplier,2500) '做cam运动WAIT IDLEOP(15,ON) '触发激光WA(20)OP(15,OFF)offset=(k-48)*400 '计算当前位置ENDIFWENDprofile_gen:num_p=201scale=1.0FOR p=0 TO num_p-1TABLE(p,((-SIN(PI*2*p/num_p)/(PI*2))+p/num_p)*scale)NEXT pRETURNCAMBOX类型:运动控制指令语法:CAMBOX(start point, end point, table multiplier, link distance ,link axis<,link options><, link pos>)说明: CAMBOX指令按存储在TABLE变量中数组的位置曲线来运动。