收藏 分销(赏)

PMAC卡简介.doc

上传人:丰**** 文档编号:3136991 上传时间:2024-06-19 格式:DOC 页数:62 大小:2.64MB
下载 相关 举报
PMAC卡简介.doc_第1页
第1页 / 共62页
PMAC卡简介.doc_第2页
第2页 / 共62页
PMAC卡简介.doc_第3页
第3页 / 共62页
PMAC卡简介.doc_第4页
第4页 / 共62页
PMAC卡简介.doc_第5页
第5页 / 共62页
点击查看更多>>
资源描述

1、1.PMAC卡-简介和预备知识PMAC卡是功能非常强大的运动控制卡,但是网上PMAC的教程很少,仅有的几个教程还是官网培训教程,罗列概念和记流水账,最不喜欢这样的教程。自己学习PMAC卡的时候走了许多弯路,刚好找完工作就写一下PMAC的相关教程,看完整个系列的教程,相信对于PMAC的使用是没有问题的,主要分为以下几个模块:1. 简介和预备知识2. PMAC硬件3. PMAC下位机编程4. PMAC上位机编程PMAC简介PMAC基本上算是自动控制行业中功能最强大的运动控制卡了,虽然价格不菲,但是使用及其方便,功能也极其强大,怎么强大自己去搜啦,这是官网链接。PMAC是一系列控制卡的简称,常用的有

2、PMAC1、PMAC2、Turbo PMAC1、 Turbo PMAC2、UMAC、Clipper等,基本功能和使用方法是一样的,这里我使用的是Turbo PMAC1控制卡。在国内PMAC有多家代理,笔者固定联系的是苏州均信,维修的话有北京泰道公司,北京泰道公司的官方QQ群号为190220668 ,在群里面可以提问,有各路大神和官方人员解答疑问,群共享里面也有许多资料供学习。运动控制基础“工欲善其事,必先利其器”,在本文中还是先说一下运动控制相关理论,这里只是一些基本概念,深入了解还是要自行查看相关资料。定义:在复杂条件下将预定的控制方案、规划指令转变成期望的机械运动,实现机械运动精确的位置控

3、制、速度控制、加速度(转矩)的控制。最简单的运动控制系统我们考虑一个最简单的控制卡-驱动器-电机反馈运动控制系统控制器:根据要求的参考输入信号(如位移、速度、力等),产生相应的控制信号,这里对应PMAC控制卡。执行机构:根据运动控制器发出的控制信号,产生操作量,作用在被控对象上,带动被控对象产生相应的运动。运动控制中执行机构通常由电机及其驱动器组成的,其中驱动器提供电机功率,使得电机做旋转或直线运动。被控对象:将被操纵的机器设备称为被控对象。这里对应常用旋转电机运动模组或直线电机模组。传感器(反馈检测装置):对被控对象的过程实际信号(如实际位移、实际速度、实际力等)进行检测、转换为电信号,经整

4、形、放大提供给控制器,从而对被控对象构成闭环负反馈控制。常用的传感器有光电编码器、光栅尺、测速发电机和张力/压力控制器等。如上图,可以看到运动控制系统有反馈检测装置,就拿这里的运动控制系统来说,不使用反馈控制的运动控制系统就叫开环系统,反馈控制的是通过编码器采集的信号来反馈的运动控制系统就叫半闭环控制系统(因为此时的被控对象的信号是间接的方式得到的),反馈控制的是通过光栅尺采集的信号来反馈的运动控制系统就叫全闭环控制系统。三环控制关于三环控制,有一篇比较通俗的文章(原文链接),这里截取一段,稍作修改如下:运动伺服一般都是三环控制系统,从内到外依次是电流环、速度环、位置环,这三环一起构成一个完整

5、的运动控制系统。1、电流环:电流环的输入是速度环PID 调节后的输出,我们称为“电流环给定”,然后电流环的这个给定和“电流环的反馈”值进行比较后的差值在电流环内做PID 调节输出给电机,“电流环的输出”就是电机的每相的相电流,“电流环的反馈”不是编码器的反馈而是在驱动器内部安装在每相的霍尔元件(磁场感应变为电流电压信号)反馈给电流环的。2、速度环:速度环的输入就是位置环PID 调节后的输出以及位置设定的前馈值,我们称为“速度设定”,这个“速度设定”和“速度环反馈”值进行比较后的差值在速度环做PID 调节后输出就是上面讲到的“电流环的给定”。速度环的反馈来自于编码器(光栅尺)的反馈后的值经过“速

6、度运算器”得到的。3、位置环:位置环的输入就是外部的脉冲(如在控制卡中输入的待运动位置指令),外部的脉冲经过平滑滤波处理和电子齿轮计算后作为“位置环的设定”,设定和来自编码器反馈的脉冲信号经过偏差计数器的计算后的数值在经过位置环的PID 调节后输出和位置给定的前馈信号的合值就构成了上面讲的速度环的给定。位置环的反馈也来自于编码器(光栅尺)。在上图中,我标出了三环控制和运动控制系统基本组成的对应关系,可以看到三环控制是把控制器、执行结构、被控对象和反馈检测细化了,上图中是一种常用的伺服电机驱动模式速度控制模式(即电机驱动器包括速度环和电流环),其他的伺服电机驱动模式包括位置控制模式、力矩控制模式

7、等等。还需要注意的是在每一环的控制中,我们引入了PID控制的概念。PID控制PID是在工业控制中经典的控制算法,现在仍然被普遍的采用。当我们知道被控对象目标控制值,和当前被控对象实际测量值,那么就可以计算出实际控制差值,这就是反馈,那么拿到这个反馈要如何处理得到输出信号给被控对象使得被控对象的实际测量值越来越接近目标控制值呢?这时候就要有一种计算输出信号的算法,这里就该PID工作了。PID详细名称为:比例-积分-微分控制方式,是一种误差控制算法,综合作用可以使系统更加准确稳定的达到控制的期望。关于PID算法的原理和调节策略通俗讲解参见这篇文章。如果想深入研究,参见这篇文章,英文好的好的话也可以

8、参见wiki。在使用PMAC完成运动控制的时候,调整PID是必不可少的一个环节,一定要对PID原理有基本了解和知道PID的调节步骤。2.PMAC硬件-一个运动控制系统的实例运动控制系统的构成有很多方式,你可以使用嵌入式系统、专用运动控制PLC、工控机+运动控制卡、专用数控装置等等。PMAC控制一般采用的都是工控机+运动控制卡(IPC)的方式,这样有搭建系统比较灵活,可扩展性强等优点。下面是一个完整的PMAC运动控制系统硬件组成和接线及信号传输示意图。整个运动控制系统按信号流通顺序,由PC-PMAC卡-PMAC卡转接板-电机驱动器-电机(编码器)-运动模组(限位传感器)构成。图中红色线为信号传输

9、示意图。对于一个控制系统来说,都有驱动电路和控制电路两路电。图中,驱动电路主要用于给驱动器供电,处理后输出电机驱动电以供电机正常工作,这里不同的驱动器要求不一样(220V或380V),这里为了简单使用220V。图中,控制电路主要控制整个系统:1.交流接触器控制主驱动回路的通断(可采用直流接触器24V或交流接触器220V,这里用220V)2.电机驱动器控制电路供电(不同的驱动器要求不一样,直流24V或交流220V,这里为了简单使用220V)3.转接板供电(转接板是将PMAC的信号分流,可使用官方转接板或自行设计的转接板,220V变压后输出15V给转接板供电)4.图中的限位传感器供电,220V变压

10、后输出24V给转接板供电。(这里只是示意,实际中信号线和供电线都是从转接板走线)下图是更加形象的说明整个系统的构成:图中的正负限位起保护作用,零限位用于编码器+滚阻丝杠模组回零时找到原点(因为编码器一般是增量编码器、不知道自己的当前位置),如果是光栅尺反馈也可以使用标记原点来回零。注意图中的运动模组,这里使用的是伺服电机+编码器+滚珠丝杠模组,构成半闭环系统,也可以使用直线电机+光栅尺(或伺服电机+编码器+滚珠丝杠模组+光栅尺)构成全闭环系统。如果是滚珠丝杠模组,需要了解导程这个概念,即丝杠转动一周模组前进的距离,常见导程为10mm,20mm。如果是使用光栅尺作反馈,需要了解光栅尺分辨率这个概

11、念。光栅尺的分辨率,是指光栅尺可读取并输出的最小长度变化,对应的参数有:每毫米光栅刻线数、脉冲数、细分等。目前国内光栅尺分辨率一般有5m、1m、0.5m、0.2m、0.1m。以每毫米50线光栅为例,经过4细分,就能得到很简单的5m的分辨率,至于高分辨率的光栅尺,就必须采用电子细分技术。再说整个模组的定位精度和重复定位精度,简单来说定位精度就是在一次定位测量中运动测量结果和实际目标指令距离的偏差范围,重复定位精度就是在多次定位测量中运动测量结果相互之间的偏差范围。整个模组的定位精度和重复定位精度是我们在设计一个运动控制系统时必须考虑的因素,这个受诸多因素的影响,必须认真考虑。如光学部分、机械部分

12、 、电气部分等等。这里有个常见的问题需要强调,整个模组的定位精度和重复定位精度是由实际测量元件和运动元件决定的,如果只是提高编码器、光栅尺等测量元件的精度,对于运动部分(电机、模组)的精度不够,那么整个模组的定位精度和重复定位精度依旧提不上去,举个最简单的例子,现在在100mm处,想运动到100.1mm处,光栅尺、编码器的精度可精确到0.1um,但是电机+模组精度有限,一个脉冲就跑了1mm,那么无论如何也是不能够跑到100.1mm处的啦。经常有人说我的测量精度是够的,为什么不能够到精确运动啊,这个很可能和你的运动部分有关系。3.PMAC硬件-组成和接口及安装拿到一块PMAC卡,首先我们要看一下

13、他的硬件组成(DSP)和提供的各种接口(I/O、串口等),然后就开始做准备工作(设置跳线),最后是安装(插槽PCI和转接板)。硬件组成和接口PMAC是基于Motorola DSP的伺服控制卡,不同型号的PMAC可控制的最大轴通道个数不一样,DSP型号也不一样。有专门的伺服芯片来完成编码器反馈计算等工作,PMAC中最容易坏的地方就是这组芯片,实际部署时要做好接地保护和高压保护,一定不要热插拔。我所在实验室用的是Turbo PMAC PCI1,我也是用这个做示例,其他的诸如UMAC、Clipper等系列应该差不多,请自行研究。如下图标出了常用接口:JEXP是安装扩展板卡的扩展口,如常见的增加通道个

14、数(默认为8个通道)的卡等等,这是官网的扩展卡选配链接。JMACH1和JMACH2分别是对应1-4轴及5-8轴的控制信号输出通道,一般和转接板相连。JOPTO是8路输出和8路输入通道口,一般的IO信号输出输出使用它。PMAC有各种和上位机(PC)相连的方式,这里采用PCI接口,不同的型号还有VME、USB等方式。其他接口概不详述,请查阅手册。准备工作在上图中,我标出了跳线的位置,图中包括两种:使用跳线帽(红色)跳线和未跳线。跳线就相当于我们使用的软件设置选项一样,通过设置不同的跳线来配置不同的硬件功能,这是根据使用需求决定的,一般默认跳线是满足通用需求的。常用跳线如下:1.供电跳线一般采用默认

15、如下:E85、E87、E88选择OFF,E89 跳线选择ONE90跳线选择1-2E100跳线选择1-22.电机控制跳线E17A、E17B、E17C、E17D跳线选择OFF(控制伺服电机选择OFF,控制音圈电机/直线电机选择ON)3.中断跳线中断是下位机(PMAC)向上位机通信的机制,这里我们需要通过跳线配置中断触发的通道和变量。查阅硬件手册E54-E65用于设置中断,这里手册有点不清楚,我来解释一下,比如对于E54:可知默认没有跳线,一旦找到跳线,使用跳线帽连接,允许通过EQU8通道来向上位机发送中断请求以完成向上通信,这个中断级别为IR7,级别越高,越先被响应,PMAC用户可使用的有IR5、

16、IR6、IR7三个中断级别,IR1-IR4应该是被PMAC自身保留采用。那么这里EQU8是什么通道呢,再查手册,可以看到EQU8是JEQU接口的一个通道,如下图JEQU这里可以理解为允许外部触发产生中断,外部触发向上位机通信。另外,这里涉及到后面的知识,查阅PMAC 软件手册,看到即可以在PMAC下位机程序中,通过设置M812或M813的值来模拟外部触发,从而完成下位机编程时向上位机中断请求。这里暂时看不懂不要紧,后面还会讲到,这里是为了连贯,把这些知识放在一起。4.其它设置跳线这里主要是说一下常见需要注意的参数:如E51跳线连接后开机会重置PMAC卡所有参数到初始状态,这一般是我们不需要的,

17、注意检查,默认为未连接,但是代理公司维修时经常将此跳线连接。安装PMAC安装比较简单,不同的接口和PC直接连起来就行,需要注意的是JMACH接口的接线,JMACH包含了供电、驱动器、编码器、限位各种信号,需要将其分流,最好使用转接板,就是把60针的排线分开,最简单的就是使用官方的ACC-8D和ACC-8DCE转接板,分别如下图:前者直接将排线分各个接线柱,后者分成若干个接线DB头。其他功能更强大的转接板,请在上面给出的扩展板链接中查找。当然,也可以查手册自行了解各个针对应的信号意义,自行设计转接板,如Turbo PMAC PCI的手册上各个针的意义如下:安装后的设置假设我们所有硬件都已经安装完

18、成,下一步就是对不同的硬件做参数调节了,具体的PMAC安装流程如下示意图。这里驱动器设参数设置不同的驱动器不一样,请自行查阅手册。4.PMAC下位机-PMAC安装参数设置PMAC硬件安装完成后,必须使用工具对PMAC相关参数进行调节才能正常工作。本文先介绍PMAC PC操作工具PEWIN32,然后一步步说明PMAC安装参数设置过程。注意在此之前要完成驱动器的参数设置(即通常说的驱动器整定)。下一节介绍下位机相关知识和下位机编程,这些都是在PEWIN32中。PEWIN32下载安装PMAC功能非常强大,主要用来配置PMAC卡、查看PMAC控制卡的各种状态变量及编写、调试PMAC程序等。(这里推荐使

19、用PEWIN32PRO,不推荐使用PEWIN32 PRO 2,这个新版本有很多bug且不稳定)PEWIN32的相关安装包和license在购买pmac时向代理商索要即可。在安装PEWIN32之前要安装PComm32 PRO,这是PMAC PC驱动和编程接口库,没有安装这个,PC是无法和PMAC通信的,PEWIN32和自己编写的程序都工作不了。安装界面如下:接下来安装PEWIN32,注意PEWIN32只是一个主程序,需要将附加的一系列调试工具plot、tuning、setup安装。安装界面如下:安装参数设置过程1.建立连接如下图,在setup中选择打开安装选项在Default Device中选择

20、当前Pewin32连接的卡号注意这里打开Properties勾选上Enabale Interrupts,否则后续的中断程序无法成功发送中断同样确认这里的Download标签页中的第四项Do not download.没有勾选,否则后续的下位机程序无法成功download2.配置电机和反馈建立连接后下面就是配置电机和反馈,这包括根据当前的电机类型、反馈形式(编码器、光栅尺)、轴通道选择等设置PMAC卡参数。PEWIN32中在Tools选择对应的Setup工具,如本人使用的Turbo Pmac1的Setup界面如下:按照引导一步步设置参数即可。3.开环测试如图,选择打开Tuning Pro,对指定

21、轴做开环测试4.PID调节开环测试通过后,同样在Tuning Pro中调节PID参数使电机稳定运行。5.当前硬件状态测试当所有的参数设置完成后,可以如下图打开Terminal界面、Motor Status界面和Position监控界面Terminal界面主要用来动态发送命令、设置参数和查看参数、运行程序等,连接成功后打开会显示如下图最上面一行文字。Motor Status主要用来查看当前电机激活状态、各个限位开关状态,可以用手遮挡各个限位开关,查看各个状态是否做出正确变化Position默认用来监测当前各个轴的位置,右键可以添加对速度、跟随误差的监控,这里可以用手推动各个轴看反馈是否正常。6.

22、保存参数在命令行中输入save命令将当前配置的参数写到EEPROM中,这样下次启动时就会使用新配置的参数。同时可以使用Backup-Upload params将参数备份到磁盘文件中以防止意外修改了当前参数可以使用Backup-Restore 来恢复参数。5.PMAC下位机-下位机编程基础在开始下位机编程之前,先要了解下位机编程的基础-各种变量、运动参数和命令行操作。变量PMAC的下位机实际上是一种类Basic的编程语言,但是又类似汇编语言,所有变量的存储空间都是预先分配好的,操作的时候存储数据只能在指定的几种变量类型和变量名中存储,整个系统的参数也是存储在变量中。变量类型和作用如下:1.I变量

23、电机和编码器等的参数变量,用于设置电机的速度,精度,回零等数值,以及坐标系的状态,编码器的反馈形式,PID参数等,一句话,设置系统参数就靠它。举例子如下:Ixx19-最大手动加速度限制Ixx20-手动加速时间Ixx22-手动速度在PEWIN32中,如图打开I参数设置,一般我们使用第二个如下图,为全局I参数设置,可以根据Description看到不同I参数的含义如下图,为当前电机的定义,如编码器反馈地址等等。实际上,上节讲到Setup引导设置也是设置电机的I参数,如果我们知道要设置哪些参数,完全可以手动在此修改,不用借助setup程序,setup程序只是做一个人性化界面引导而已。如下图,安全设置

24、包括电机的跟随误差(实际运动位置和命令运动位置的偏差)的Fatal(电机被停止)和Warning(只在Terminal报警,不停止电机),还包括后面讲到Jog的最大加速度设置、运动程序的最大速度和加速度设置,当我们编程序时发现始终运行不到指定的速度很有可能就是此处的设置问题。如下图,为电机的运动设置,包括后续的Jog的速度、加速度设置等。如下图,这里保存的就是Tuning Pro调试的结果,同样,如果我们知道要使用什么PID参数,直接在此设置即可。2.M变量在PMAC工作时,会将当前运行状态(电机参数,编码器位置,IO参数)放到指定的内存中,我们要查看这部分参数,只需要用M变量绑定指定内存即可

25、访问和设置,有点类似C语言的指针,如下图,这里可以电机Download Suggested M-variables使用PEWIN32推荐的M参数设置,一般我们使用默认设置。 举例子如下:读取电机状态-给定位置(mx61)、实际位置(mx62)、位置偏差(mx64)其中x=1-16或124读取I/O口状态-m11在上位机的学习软件、监控程序以及下位机程序的编写过程中,电机当前位置、I/O口的状态等数据,采集时均由M变量来完成。3.P变量和Q变量P变量和Q变量都可用于PMAC编程中的计算,48-位浮点形式,P变量为P0 P8191,Q变量为Q0Q8191,不同的卡P变量和Q变量数量稍有不同,他们类

26、似于我们在C语言中编程变量,只不过他们的名字是预先指定的。P变量和Q变量不同之处是前者是全局变量,可在任意时刻任意程序或任意位置进行改变,从而对其它程序或状态直接产生影响;而Q变量是单一坐标系的局部变量,坐标系的概念稍后介绍。主要用途如下:1.可用于计算功能。P100=P101*452.可作为标志位软件触发IF( M1!= 1 AND P10 = 0)PMAC中运动过程参数对于PMAC中一个指定的运动加速到指定的速度再停止,整个过程如下:其中IX20指定的为整个加速时间,IX21指定的为开始加速和停止加速时的S曲线加速时间,IX22为最终的速度,这里IX20、IX21、IX22设置的是手动Jo

27、g的总加速时间、S曲线加速时间和运动速度。在对应的运动程序中,使用TA、TS、F指令来完成相应的同样的设置。手动操作PMAC的手动操作主要是为了调试方便,主要指令如下,可以自行在view-terminal窗口中测试:1.查看和设置各种类型变量I/P/Q/M变量的值2.控制电机Jog运动3.控制程序的运行状态如下图,为设置6号轴电机的运动参数(总加速时间Ixx20、S曲线加速时间Ixx21、运动速度Ixx22)可以terminal窗口控制电机的运行,常用的几个电机手动操作指令是需要记下的,如下:J/-Jog运动停止(或者闭环)J+ - Jog正向连续运动J- -Jog反向连续运动J=常数 - J

28、og到指定的位置(单位是脉冲counts)J常数 - Jog从当前实际位置运动指定的距离Ctrl +K K掉所有电机6.PMAC下位机-下位机编程PMAC的下位机编程包括三种程序:命令序列程序、运动(Program)程序和PLC程序。如下图,PMAC中编写程序,直接在File-new新建文件会打开编辑器,所有文件为PMC后缀。查看当前程序可以在File-Uplaod Programs查看当前已有的Program程序和PLC程序及他们的编号、状态。1.命令序列程序上节讲到,PMAC卡中可以使用手动操作,在命令行设置参数状态、控制电机等,但是它一次只能发送一条命令,那么为了一次性运行多个命令序列,

29、即可在PMC程序中如下编写:1. i620=2002. i621=203. i622=104. 5. #6j/这里先设置6轴电机的运动参数,然后激活电机,类似的写法经常用于PMAC参数的初始化中。程序编写完成后,点击Download按钮,命令系列程序在下载的过程中就会执行。如下图,勾选Show Message Window,打开Mesage窗口如下图,在Message窗口可以可以看到当前程序是否有错误等,类似C语言编译过程。命令序列经常和PLC程序及运动Program程序混用,下面会说明。2.运动(Program)程序为了便于编写运动程序,PMAC中使用一个坐标系的概念,比如有6号电机和8号电

30、机,我们在一个的坐标系下将其分别映射到X和Y坐标,如下所示1. #6-819.2Y;机械手Y向,单位mm,(819.2=8192/10,丝杆导程为10mm)2. #8-819.2X;机械手X向,单位mm,(819.2=8192/10,丝杆导程为10mm)这样我们编程的时候,可以直接把当前运动想成现实坐标系的运动,实际行我们在程序中指定X运动1个单位就是电机运动819.2个脉冲,换算成轴的运动距离就是1mm,这样编写程序简洁易懂。标准运动程序的模板如下:1. &1;坐标系为12. CLOSE;确认所有缓冲区被关闭3. 4. OPENPROG40;程序号为405. CLEAR6. ;运动程序主体-

31、开始7. 8. ;运动程序主体-结束9. CLOSE这些指令都是命令指令,所以他们都是在程序下载的时候运行,之间的运动程序主体会被写到特定的缓冲区,但是在这时候程序是不运行的。下面写编写一个简单的程序,如下:1. &12. CLOSE;确认所有缓冲区被关闭3. #6-819.2X;机械手X向,单位mm,(819.2=8192/10,丝杆导程为10mm)4. #8-819.2Y;机械手Y向,单位mm,(819.2=8192/10,丝杆导程为10mm)5. 6. #6j/7. #8j/8. 9. OPENPROG4010. CLEAR11. 12. INC;增量运动模式13. X(10)Y(10)

32、;X正方向前进10mm,Y正方向前进10mm14. 15. CLOSE注意这里,使用命令序列完成了轴的定义和电机的激活,但是中间的两行运动程序代码只是被写到对应的缓冲区,还没有执行。在terminal窗口输入命令&1b40r程序才运行。注意一个坐标系下关联的所有电机必须都激活,运动程序才能正常运行。在实际中,轴的定义和电机的激活最好放到单独的命令序列文件中。下面是一个比较复杂的程序:1. &12. CLOSE;确认所有缓冲区被关闭3. #6-819.2X;机械手X向,单位mm,(819.2=8192/10,丝杆导程为10mm)4. #8-819.2Y;机械手Y向,单位mm,(819.2=819

33、2/10,丝杆导程为10mm)5. 6. #6j/7. #8j/8. 9. OPENPROG4010. CLEAR11. 12. ;运动参数设置13. TA(200);ms14. TS(20);ms15. F(50);mm/s16. 17. ABS;绝对模式18. Linear;直线运动19. 20. p1=021. While(p12)28. Return29. EndIf30. 31. p1=p1+132. EndWhile33. 34. CLOSE上面程序的含义就是从当前位置以速度50mm/s直线运动到绝对坐标(30,10)的位置,再从当前位置以速度10mm/s直线运动到绝对坐标(10,

34、30)的位置,如此循环,如果没有If语句的话,循环10次,但是这里加了If语句就只循环2次了。基本的运动程序就是这样,再复杂的运动程序都是在此基础上延伸出来的。各种运动指令请查PMAC Software Manual手册,相应的程序编写请查PMAC User Manual手册。3.PLC运动程序在电气系统中,PLC是经常用的控制元件,就是有快速的扫描各个状态,对扫描到的状态变化做相应的处理。他的实时性非常高,简洁可靠。在PMAC中有模拟PLC的功能。同样对于运动程序中的最后一个实例功能,改写如下:运动程序:1. &12. CLOSE;确认所有缓冲区被关闭3. #6-819.2X;机械手X向,单

35、位mm,(819.2=8192/10,丝杆导程为10mm)4. #8-819.2Y;机械手Y向,单位mm,(819.2=8192/10,丝杆导程为10mm)5. 6. #6j/7. #8j/8. 9. OPENPROG4010. CLEAR11. 12. TA(200);ms13. TS(20);ms14. F(50);mm/s15. 16. ABS;绝对模式17. Linear;直线运动18. 19. p1=020. While(p110)21. F(50)22. X(30)Y(10)23. F(10)24. X(10)Y(30)25. 26. p1=p1+127. EndWhile28.

36、29. CLOSEPLC程序:1. OPENPLC202. CLEAR3. 4. If(p1=2)5. COMMAND&1b40a6. EndIf7. 8. CLOSE9. 10. enableplc20一般我们让PLC程序始终在后台运行,扫描指定的状态,这里我们在download PLC的时候就激活了PLC程序。这样当在terminal中输入&1b40r运行运动程序时,一旦p1=2,PLC可默认为立即扫描到该状态,这时候就会终止该程序。这里本来运动程序会运行两个循环,但是由于PMAC的Lookhead的功能,这里只运行了一个循环就中止程序了,先留个悬念,马上讲到。4.PMAC运动程序Look

37、head功能PMAC在执行的时候会有Lookhead的功能,顾名思义就是前瞻的功能,就是在执行的时候会预先读取执行下面一段代码,对于运动轨迹相关的代码会进行预先计算,变量赋值会提前进行。分析如上运动程序,在第二个循环的时候,预先读取了整个循环内容,即运动指令还没运行时,p1=p1+1就已经被执行了,这时候PLC检测到p1的改变就会中止程序了。那么这里要怎么做才能避免预读取带来的副作用呢,其实很简单,在X(10) Y(30)后加一句dwell 0即可,这告诉运动程序,预读取就到此位置或者说必须dwell 0前的程序执行完毕才会进行后续操作。Lookhead还会带来其他的影响,如对一个直角拐弯,开

38、启了lookhead后实际运行轨迹为圆角拐弯,这个要注意,具体的请参考手册。7.PMAC下位机-回零程序的编写在运动控制中,运动轴的回零是一个共性的问题:对于半闭环的编码器+电机+模组或全闭环的直线电机+光栅尺来说,它们之所以能够知道自己当前处于一个什么样的位置就是靠编码器和光栅尺来记录当前的位置,问题在于一般我们使用的都是相对式的编码器或光栅尺,换言之,我们必须告诉编码器和光栅尺以什么位置作为零点开始计算当前的坐标,指定当前的零点的过程就是回零的过程。相对式的编码器或光栅尺一旦掉电,就必须重新回零,这也是大多数数控机床上电要回零的原因。如下图,为了指定当前运动系统的零点,我们使用一个零位传感

39、器来标记,对于编码器+电机+模组,零位传感器就是一个处在零位的限位传感器,对于直线电机+光栅尺可以不用设置特殊的硬件,直接捕获光栅尺的零位信号就行,当然你也可以不用零位信号,而统一使用限位传感器来指定零位。同时每个运动系统一般都是有正负限位的,一方面是作为安全用途,一旦模组运动超出正负限位范围自动停掉电机防止造成危害,另一方面,也可作为触发使用,下面会讲到。1.信号的触发为了形象的说明问题,考虑模组和传感器的如下相对运动,这里传感器既可以是限位传感器也可以是零位点触发,基本原理是一样的。这里为了说明问题,将传感器拉长了,实际上传感器的接触长度很短。可以看到,当前模组和传感器相对运动的时候,还没

40、接触的时候信号为低电平,一旦模组开始进入传感器范围,这时候电平跳变为高电平,存在一个上升沿,捕获这个上升沿就是模组刚刚进入传感器范围的时刻。模组继续运动,一旦模组完全离开传感器范围,这时候电平跳变为低电平,存在一个下降沿,捕获这个下降沿就是模组刚刚完全离开传感器范围的时刻。因为最开始的时候没有回零,这时候模组是不知道自己当前到底处于什么位置的,但是在高低电平跳变的时候会发送中断,我们可以捕获这两个中断从而判断当前模组是否运动到指定的位置,从而将当前指定位置标记为零点。2.回零策略上面其实已经叙述了最基本的思想:利用信号触发的上下沿来通知PMAC是否已经运动到指定位置,从而将当前模组在的位置标记

41、为相对零点。但是,我们需要面临的一个问题是,模组的最开始位置是不定的。同样用之前的图,最开始时候模组可能处于零位的正向也可能处于负向,甚至可能直接就在正负限位或零点上。这时候该怎么编写一个回零程序,在最开始不知道模组的位置的时候让模组正确的运动到零点呢?毫无疑问,模组处于正向的时候必须向负向移动才能到零点触发,模组在负向的时候必须向正向移动才能到零点触发,但是它们的方向是完全相反的,这让我们编写运动程序很为难。为了解决这个问题,我们采用如下策略: 1.不管当前模组处于什么位置,都先向负向运动直到触发负限位 2.从负限位触发点开始向正向移动,PMAC是通过指定一个偏移值来完成的,所谓偏移值就是到

42、达触发点后再偏移多少距离,这个偏移要求必须让模组移动到零位的正向 2.然后,模组负向运动直到准确停在零点触发点,当前标记为零点好了,现在基本策略定下来了。现在说说偏移值的问题。当我们运动到指定限位导致电平出现上下沿信号的时候,这时候PMAC接到中断,但是此时还在运动,不会准确的停在指定点上。对于这种问题,PMAC提供的解决方案是,既然不能准确的停止那就不让它准确的停在指定的触发点上,而是指定一个偏移值,当第一次上下沿触发的时候会记录当前的位置,这个当前的位置是可以准确记录的,这样运动到偏移一个指定值时是可以完成的,当然这个值是不能太小的,否则也停不准。那么要精确的停止在某一点怎么做呢,很简单,

43、借鉴这种方法,既然你要跑过,那就让你先跑过,再反向回走偏移的值就行,这就是很多机床看回零时先过零点再反向走回来的原因,看运动平台在那不知所谓的来回捣鼓,其实干的就是这事儿。PMAC中指定偏移值为0,仔细观察PMAC会自己帮我们完成走过再回来的流程,这个需要了解一下以便于我们清楚整个回零轨迹为什么这样跑动和为什么使用偏移值。下面结合示意图看回零过程可以看到: 1.负向运动到负限位直到触发,这里分为两种情况:A.不在负限位的时候,直接负向移动直到上升沿触发B.在负限位的时候,正向移动直到下降沿触发注意一个使用上升沿,一个使用下降沿,是为了保证两种情况触发时模组位置是一样的,看示意图就懂了 2.按照步骤1指定的移动偏移值移动到零位的正向去,只要指定了偏移值,PMAC会自动完成这个偏移过程 3.从偏移后的位置负向移动,按照之前讲的先走过一点再反向走回从而精确停在零位,这个偏移可能很小,人眼不易观察出来。3.PMAC回零代码一个单独的轴的典型回零程序如下:1. ;程序功能:实现6轴回零运动。2. ;*3. 4. CLOSE;确认所有缓冲区被关闭5. &16. 7. ;以下部分为运动程序8. OPENPROG209. CLEAR10. 11. ;6轴回零12. 13. If

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服