最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

PMAC教材

来源:动视网 责编:小OO 时间:2025-09-24 14:54:16
文档

PMAC教材

1.PMAC控制卡及泰道公司简介PMAC控制卡PMAC是可编程多轴控制器(ProgrammableMulti-AxisController)的简称,是美国泰道(DeltaTauDataSystems,Inc)公司生产的功能强大的运动控制器,PMAC是目前世界上功能最强的运动控制器,同时也是当前开放式数控系统控制器的突出代表泰道公司介绍泰道公司拥有三十多年丰富的运动控制经验,是首屈一指的创新型、高性能机器控制专家,拥有全球数百万轴的惊人控制能力;自从上世纪90年代初推出第一款基于DSP的8轴的P
推荐度:
导读1.PMAC控制卡及泰道公司简介PMAC控制卡PMAC是可编程多轴控制器(ProgrammableMulti-AxisController)的简称,是美国泰道(DeltaTauDataSystems,Inc)公司生产的功能强大的运动控制器,PMAC是目前世界上功能最强的运动控制器,同时也是当前开放式数控系统控制器的突出代表泰道公司介绍泰道公司拥有三十多年丰富的运动控制经验,是首屈一指的创新型、高性能机器控制专家,拥有全球数百万轴的惊人控制能力;自从上世纪90年代初推出第一款基于DSP的8轴的P
1.PMAC控制卡及泰道公司简介

PMAC控制卡

PMAC是可编程多轴控制器(Programmable Multi-Axis Controller)的简称,是美国泰道(Delta Tau Data Systems, Inc )公司生产的功能强大的运动控制器,PMAC是目前世界上功能最强的运动控制器,同时也是当前开放式数控系统控制器的突出代表

泰道公司介绍

泰道公司拥有三十多年丰富的运动控制经验,是首屈一指的创新型、高性能机器控制专家,拥有全球数百万轴的惊人控制能力;自从上世纪90年代初推出第一款基于DSP的8轴的PMAC产品,每三年左右便会推出一款新的产品,如今最新的第七代产品Power PMAC(基于Power PC)已达到惊人的256轴的控制能力。

应用范围

由于其灵活的结构和开放性的编程接口,PMAC有着非常广泛的从最简单的到最复杂的应用,如半导造、航空、通用自动化、机器人控制、半导体生产线自动化、各类数控机床、医药设备、各种测量和定位机具、包装生产流水线自动化等等。以下是在一些公司中的典型的应用:

Amada                金属处理Hewlett Packard             制造
American National Can          贴标签Hughes Aircraft              机器工具
Applied Materials             半导造IBM                   集成电路制造
ATS (Canada)              

专用机器制造Kodak                     胶卷处理和包装
Alcon        激光眼睛治疗手术Lawrence Livermore National Lab    检测
Blue Print Automation          包装机器OEM

Lockheed                 制造
Boeing            制造Meyer Machine Tool             沤轮叶片加工
Bryant Grinder             精密打磨M & M / Mars               包装
Coburn Optical       镜片打磨National Institute of Science and Tech 

精密机床
Cooper Tire       轮胎制造Paper Conversion Machinery Co     纸处理
Dover Instruments       

制造 / 检测

Brooks PRI                 水处理
GE  Aerospace               飞行模拟Rank Taylor Hobson            镜片打磨
GE  Aircraft                  机械SE Huffman                精密打磨机床
GE  Medical                  机床Siemens                   PLC
GE  Plastics                 注射成型,等等 

Scott Paper                包装/纸处理

General Dynamics            制造SIG                    包装
General Tire               轮胎制造Tappistron                  针织簇绒机床
Gilette                    包装/制造

Varian                  晶片处理
Grinding Machines              硅晶片打磨3M                     

胶卷/胶带处理/包装

Hormel                     食物加工  
PMAC特性

PMAC是一台具有内存、运算操作能力的计算机,采用泰道独有的实时内核(基于DSP的卡)或实时Linux操作系统(基于Power PC的卡)通过存储在自己内部的程序进行单独的操作;它还是一台实时的、多任务的计算机,能自动对任务进行优先等级判别,先执行优先级高的任务。PMAC既可以工作亦可按主机的命令进行工作,它和主机的通讯可以通过串行口也可以通过总线进行,通过总线通讯时,还可以将中断信号引入主机,从而实现非常灵活有效的控制系统。

PMAC可以通过灵活的类似Basic的高级语言(Power PMAC还可以用C语言)控制多轴运动,提供了运动控制、可编程逻辑控制、同主机交互等基本功能;并具有各种现场总线和多种反馈装置接口。

PMAC的最大特点是开放性。允许用户根据自己的用途使用内部寄存器。PMAC的编码器反馈地址、A/D和I /O与内部寄存器一样是统一编址,可以像使用PMAC其它内存一样来操作编码器反馈、A/D和I/O,使用非常方便。内部寄存器和A/D、I/O的地址既可以使用 PMAC的默认值,也可以由用户重新定义,以满足不同的需要。 

以下是一些基本功能:

• 多轴插补联动

• 可同时运行多个运动程序和PLC程序

• 多种插补方式和S曲线加减速

• 空间任意平面刀具半径补偿

• 螺距补偿、反向间隙补偿和力矩补偿

• 高速高精度位置捕捉(25ns)和位置比较(100ns)

• G、M、T、D代码

• 电子齿轮和电子凸轮

• 运动程序旋转缓冲区

• 时基控制

PMAC相关资源

官方网址

泰道总部:www.deltatau.com

泰道中国分公司:www.deltatau-china.com

手册及相关资料

所有手册:http://www.deltatau.com/Manuals/default.aspx

技术笔记:

http://www.deltatau.com/common/support/technotes/technotes.asp?connectionStr=release

应用实例:http://www.deltatau.com/common/support/appex.asp?connectionStr=release

技术热线和Email

请访问相关网址。

论坛和群

论坛:http://forums.deltatau.com/

      bbs.gongkong.com  里的PMAC讨论区

群:QQ 1149406

2.PMAC分类及型号说明

按内核功能划分

主要有Non-Turbo PMAC, Turbo PMAC,Turbo PMAC2和Power PMAC。

Turbo PMAC和Non-Turbo PMAC的区别

Non-Turbo PMAC是最早生产的PMAC,在90年代初期生产,其功能相对较弱,已经停产;Turbo PMAC是Non-Turbo PMAC的升级产品,在90年代中后期生产保持了向前兼容的特性,但本身也相对较老。 Turbo PMAC也叫PMAC 1型卡, Turbo PMAC和Non-Turbo PMAC的主要区别如下:

• 32轴 vs. 8轴

• 16坐标系 vs. 8坐标系

• 具正逆解功能

• 具前瞻算法

• 32,768个用户变量 vs. 4096个用户变量

• 支持同时多个接口通讯

Turbo PMAC和Turbo PMAC2的区别

Turbo PMAC2也叫PMAC2型卡,其与Turbo PMAC的主要区别在于伺服接口芯片和一些用于设置相关特性的固件功能。PMAC 2 型伺服芯片可以对驱动控制器软硬件的主时钟信号进行编程配置,PMAC 1型芯片不具有此功能。

这些功能意味着在Turbo PMAC2为核心的控制卡上,用户可以根据需求任意配置伺服环、电流环以及PWM的频率;这一点非常重要,因为不同的控制对象其动态响应特性相差很大。例如,对一个20KW的伺服电机,1KHZ的伺服环比较合适;而对只有5W的特种伺服电机,伺服环频率可能要求在10KHZ以上。

PMAC2型卡目前在市场是主流产品,但逐渐会被Power PMAC取代。

Power PMAC

在Power PMAC以前的PMAC产品都是基于Motorola的DSP,内核采用泰道特有的实时内核,伺服接口芯片为DSPGATE1或DSPGATE2;Power PMAC采用嵌入式Power PC作为处理器并采用实时Linux操作系统,伺服接口芯片采用DSPGATE3。由于采用浮点芯片替代整数芯片,计算能力获得了质的提升。显著的表现是最大轴数由32轴提高到了256轴。

 采用Power PMAC为内核的产品保持了向前兼容性,意味着以前采用Turbo PMAC2为内核的产品可以被无缝的替换掉。

按架构划分及型号说明

主要分为板级产品、系统级产品和现场总线产品。

板级产品

●总线级插卡产品:

型号:Turbo PMAC PCI, Turbo PMAC Lite PCI, PMAC Mini PCI, Turbo PMAC VME, PMAC2A PC/104,

分别支持PCI、ISA、VME和PC104总线,作为插卡直接插到计算机或其他控制设备的插槽中,由计算机或控制设备供电,离开计算机及相关设备无法运行。

     VME               PC/104                   PCI

●板卡产品:

型号:Turbo PMAC Clipper

采用串口、USB或者以太网和上位机进行通讯,需要的电源进行供电,可以于计算机运行;成本较低,目前是中国市场上销售量最大的产品。

Clipper

系统级产品

●UMAC:

型号:Turbo UMAC、Power UMAC

UMAC是泰道公司系列产品中的旗舰级产品,于计算机运行,采用积木式框架结构(3U标准),支持包括各种编码器、现场总线、驱动器、AD/DA 和 I/O的扩展,能在最高层次上满足用户的要求;

例如:

◆用户因为升级原因,需要用正余弦编码器取代正交编码器,只需要将原来的接口卡拔出,换成对应的正余弦接口卡即可。

◆用户需要用Power PMAC控制卡,只需将原来的Turbo PMAC 控制卡直接替换既可以。

Turbo UMAC

●智能多轴伺服器

型号:Geo Brick、Geo Brick LV

Geo Brick 是集成了PMAC内核的多轴(4~8)驱动器,于计算机运行,可以完全取代原来的控制器+伺服器结构,并提供紧凑(四轴体积:144mm×178mm×391mm,重量:4.4Kg,功率:2KW/轴)的系统级解决方案;是数控机床集成商的理想的选择。

          Geo Brick(90~240VAC)             Geo Brick LV(12~80VDC)

●数控系统

型号:Advantage400、Advantage900

泰道的CNC产品,操作界面类似西门子840D;硬件上配合UMAC或者Clipper(需要双端口RAM选项)使用。

  

Advantage 900

MACRO现场总线产品

型号: Turbo PMAC2 PCI Ultralite、Turbo PMAC2 VME Ultralite、Turbo PMAC2 Ethernet Ultralite, UMAC MACRO CPU。

泰道采用MACRO作为伺服器和控制器之间的现场总线,介质既可以采用光纤,也可以采用RJ45。

3.典型运动控制卡介绍

这里介绍用途最广泛的Clipper和最新产品Power UMAC。

Clipper

Clipper是基于Turbo PMAC2内核的一款大众型产品,结合了4轴全功能运动控制(脉冲加方向、模拟量和全数字PWM输出于一体)32路本地数字I/O、可任意扩展多至2048路远达百米的远程数字I/O、8路12位/16位可选ADC输入、4路额外12位+/-10V DAC输出和两路手轮通道。

Clipper的主要功能及特点:

• 4轴插补联动(单轴伺服频率最高30kHz)

• 所有轴都可以运行或联动

• 可同时运行16个运动程序和个PLC程序

• 简单易用的高级语言编程

• 直线、圆弧、样条和PVT插补

• S曲线加减速和动态前瞻控制

• 2D和3D坐标平移和旋转

• 非直角坐标系嵌入式正逆解

• 空间任意平面刀具半径补偿

• 螺距补偿、反向间隙补偿和力矩补偿

• 高速高精度位置捕捉(25ns)和位置比较(100ns)

• 共振抑制(高频陷波、中频前置滤波、低频电子惯量)

• 用户自定义伺服算法

• 龙门双驱交叉耦合自动纠偏

• G、M、T、D代码

• 伺服环级联(张力控制、自动调高等)

• A/B相正交编码器1/T细分

• 电子齿轮和电子凸轮

• 运动程序旋转缓冲区

• 时基控制

• 可连接全数字直接PWM驱动器

Clipper最多可以扩展到32轴,每四轴需要添加一款扩展卡。

Power PMAC

Power PMAC作为泰道的最新产品,其功能异常强大,主要表现如下:

●卓越的运算能力:

256轴插补联动(所有轴可以运行,伺服频率1~120KHZ)

128个坐标系(数控中的通道),每个坐标系支持32轴

同时运行16个运动控制程序、32个实时PLC(扫描时间可调,最高可达5us)和32个 后台PLC(扫描时间小于100us)

位浮点运算

●杰出的运动控制功能:

直线、圆弧(椭圆、螺旋、螺纹)、样条和PVT插补,回转体表面和球体表面加工

基本S曲线加减速和任意曲线加减速 (可加加速度)

超前读和超前读回溯

电子齿轮和电子凸轮(时基控制)

高速高精度位置捕捉(25ns)和位置比较(100ns)

非直角坐标正逆解:斜轴功能、刀具中心控制、刀具端和机械手控制

G、M、T、D代码执行并可定制

动态2D或3D平面空间旋转变换

各种1D,2D和3D的补偿表(一阶或三阶插值):螺距补偿、反向间隙补偿、形变补偿和力矩补偿

任意平面刀具半径补偿

A/B相正交编码器12位硬件1/T细分

运动程序旋转缓冲区

●强劲的特殊功能:

伺服环级联:张力控制、自动调高等

共振抑制:高频陷波、中频前置滤波、低频电子惯量

用户自定义伺服算法和换相算法(C语言或脚本语言),支持Matlab,Simulink产生C代码直接下载到伺服环

龙门双驱交叉耦合自动纠偏

●灵活的开发环境:

专用脚本语言和C/C++语言直接编程,提供接口用其他高级编程语言(VB,C#...)编程

用户界面二次开发和第三方应用程序开发

内置的编辑器和调试器

内嵌实时的Linux系统支持任何开源程序

内置支持FTP和HTTP的网络服务器

●完善的接口:

反馈:内置正交编码解码和多种串行编码器(SSI, EnDat, Yaskawa…)解码功能,提供旋转变压器激励、正余弦编码16位插值

输出:模拟量、脉冲方向、四相PWM,或通讯速率高达1.25Gbps的MACRO2现场总线 

控制对象:交流/直流无刷、直流有刷、感抗、直线、步进、音圈和压电陶瓷电机以及液压装置

●多样的通讯方式:

多种现场总线:ProfiBus, Devicenet, CANopen, ControlNet, CC-Link, Ethercat

100兆/1000兆以太网和USB2接口,每秒中实现5千运动控制数据包处理

4.典型运动控制卡使用说明

泰道中国分公司将Clipper作为内核,根据中国用户的特性进行本土化工作推出了IMAC400。IMAC400在工业级的外壳中完全光电隔离Clipper,大大提高了控制系统的整体稳定性和可靠性。不仅降低了接线的复杂性,完全屏蔽的工业插头和外壳也大大提高系统的抗干扰能力,最大限度地降低维护及维修成本。

现以IMAC400为例进行使用说明:

1)用户在拆箱后检查IMAC 400的配件是否齐全,全部配件包括:

名称数量名称数量
IMAC 4001个

TB2端子

1个

电源线1条

IMAC CD1张

TB3端子

1个

其它
2)检查IMAC 400侧面标签上的OPT选项是否和订货时所要求的一致

3)IMAC CD上有调试软件PEWIN32PRO2,建议用户在Windows XP系统下安装该软件。

4)软件安装完成以后,把IMAC 400用交叉网线和用户电脑连接起来,连接完成后给IMAC 400上电。

5)IMAC 400上电试运行。用户接入220V交流电源和+24V直流电源,观察A+5V、A+12V、A-12V、D+5V这四个电源指示灯是否正常点亮,风扇是否能正常工作。

6)IMAC 400默认的IP地址是192.6.94.5,用户需要把电脑的IP地址修改为192.6.94.x,其中x不能是5,否则会造成IP冲突。

7)打开PEWIN32 PRO2软件,配置以太网通讯。在PMAC Devices中新建ETH0,配置IP为192.6.94.5,配置完成后点击OK。

8)通讯成功后,用户可以进行出厂程序测试。打开文件窗口选择TXT文件,在\\IMAC 400 CD\\IMAC 400概述目录下选择“出厂测试程序.TXT”文件,点击黄色箭头下载到IMAC 400中,然后在Terminal窗口中输入以下指令:

enaplc1

i5=2

&1b1r

此时用户可以在Position窗口上观察到4个轴的位置和速度变化。为防止误操作,测试完成后用户需要将以上测试程序用“$$$***”指令清除,然后输入“sav”指令保存。

警告:

1、出厂程序仅供用户测试裸机使用,严禁带电机操作。

2、测试结束后必须使用“$$$***”指令清除该程序,然后输入“sav”指令保存。

9)一切正常后,请参考用户手册进行IMAC400和伺服器间的接线;软件的使用请参考随机光碟中的软件手册或者到官方网站下载对应的手册。

5.典型应用实例分析

Clipper或IMAC400连接驱动器力矩模式配置及简单程序实例

Close

Delete Gather  

;设置DSPGATE的相关频率

I7000 = 1001 ;PWM frequency 29.4kHz, PWM 1-4

I7001 = 5 ;Phase Clock 9.8kHz

I7002 = 3 ;Servo frequency 2.45kHz

I7003 = 1746 ;ADC frequency

I10 = 3421867 ;Servo interrupt time

;设置一号电机

I102 = $78002 ;Command Output Address

;Position Feedback

I7010 = 3 ;Closed loop, X4 CCW

I7016 = 0 ;Output mode: PWM

I169 = 1001 ;DAC limit 10Vdc

I100=1 ;To activate motor

;Example PID Gains

I130=10000 ;P gain = default

I131=3000 ;D gain = default

I132=3000 ;VFF = default

I133=0 ;I gain = default

I134=1 ;I mode = default

I135=0 ;AFF = default

I124=$120001

#1hmz

;设置二号电机

I200=1 ;To activate motor

I202 = $7800A ;Command Output Address

;Position Feedback

I7020 = 3 ;Closed loop, X4 CCW

I7026 = 0 ;Output mode: PWM

I269 = 1001 ;DAC limit 10Vdc

;Example PID Gains

I230=10000 ;P gain = default

I231=3000 ;D gain = default

I232=3000 ;VFF = default

I233=0 ;I gain = default

I234=1 ;I mode = default

I235=0 ;AFF = default

I224=$120001

#2hmz

;设置三号电机

I300=1 ;To activate motor

I302 = $78012 ;Command Output Address

;Position Feedback

I7030 = 3 ;Closed loop, X4 CCW

I7036 = 0 ;Output mode: PWM

I369 = 1001 ;DAC limit 10Vdc

;Example PID Gains

I330=10000 ;P gain = default

I331=3000 ;D gain = default

I332=3000 ;VFF = default

I333=0 ;I gain = default

I334=1 ;I mode = default

I335=0 ;AFF = default

I324=$120001

#3hmz

;设置四号电机

I400=1 ;To activate motor

I402 = $7801A ;Command Output Address

;Position Feedback

I7040 = 3 ;Closed loop, X4 CCW

I7046 = 0 ;Output mode: PWM

I469 = 1001 ;DAC limit 10Vdc

;Example PID Gains

I430=10000 ;P gain = default

I431=3000 ;D gain = default

I432=3000 ;VFF = default

I433=0 ;I gain = default

I434=1 ;I mode = default

I435=0 ;AFF = default

I424=$120001

#4hmz

;简单PLC程序,用于将四个电机置于闭环状态

;发送 Enable PLC 2 可以执行

open plc2 clear

cmd"#1j/"   cmd"#2j/"   cmd"#3j/"  cmd"#4j/"

displc2

close

;定义坐标轴并映射电机到坐标轴

&1

#1->1000X ;定义电机1为X轴

#2->1000Y ;定义电机2为Y轴

#3->1000X ;定义电机3为X轴

#4->1000Y ;定义电机4为Y轴

;简单的运动控制程序

OPEN PROG 2 CLEAR

RAPID X-10 Y0

DWE1000

ABS

CIRCLE1

F100

N 100

X-10 Y0 I10 J0

GOTO 100

CLOSE

I5113=10

稍微复杂的运动程序

;******************** 设置和定义 ********************

&2         ; Coordinate system 2

CLOSE        ; Make sure all buffers are closed

#5->1000X       ; 1 unit (cm) of X is 1000 counts of motor 5

;******************** 运动控制程序 ***********************

OPEN PROG 2      ; Open buffer for entry, Program #2

CLEAR        ; Erase existing contents of buffer

LINEAR       ; Blended linear interpolation move mode

INC        ; Incremental mode - moves specified by distance

TA500        ; 1/2 sec (500 msec) acceleration time

TS250        ; 1/4 sec in each half of S-curve

P1=0        ; Initialize a loop counter variable

WHILE (P1<10)   Loop until condition is false (10 times)

X10     10 cm (=10,000 cts) positive

DWELL500       ; Hold position for 1/2 sec

X-10     10 cm negative

DWELL500       ; Hold position for 1/2 sec

P1=P1+1       ; Increment loop counter

ENDWHILE       ; End of loop

CLOSE        ; Close buffer - end of program

; 终端窗口中输入下列指令运行运动控制程序

&2 B2 R ; Coordinate System 2, point to Beginning of Program 2, Run

具有分支的运动程序

;******************** 设置和定义**********************

CLOSE        ; Make sure all buffers are closed

&1         ; Coordinate System 1

#2->27.77777778A     ; A-axis is programmed in degrees

; 10,000 (cts/rev) / 360 (deg/rev)

M1->Y:$FFC2,8,1      ; Variable M1 assigned to Machine Output 1

M11->Y:$FFC2,0,1     ; Variable M11 assigned to Machine Input 1

I5190=60000       ; Feedrate (speed) units are per minute

; (1 min=60000 msec)

;******************** 运动控制程序***********************

OPEN PROG 3 CLEAR ; Prepare buffer for entry

HOME2        ; Find home position for motor

LINEAR       ; Blended linear interpolation move mode

F20        ; Speed of 20 degrees per minute

Q50=0        ; Initialize a loop counter variable

WHILE (Q50<36)   Loop until condition is false (36 times)

IF (M11=1)       ; Machine Input 1 on?

A((Q50+1)*10)      ; Positive move to calculated position

ELSE        ; Do the following branch for false IF

A(-(Q50+1)*10)      ; Negative move to calculated position

ENDIF

DWELL20       ; Hold position for 20 msec

M1=1 M1=0       ; Pulse output on and off quickly

DWELL20       ; Hold position for 20 msec

A0         ; Return to home position

Q50=Q50+1       ; Increment loop counter

ENDWHILE       ; End of loop

CLOSE        ; Close buffer - end of program

; 终端窗口中输入下列指令运行运动控制程序 

&1 B3 R ; Coordinate System 1, point to Beginning of Program 3, Run

简单的G代码运动程序

此例子介绍简单PMAC G代码程序。 Gxx 被解释成PROG 1000的标号为Nxx000 的子程序; Mxx被解释成PROG 1001的标号为Nxx000 的子程序;用户如果使用标准G代码则无需去些这些子程序,因为泰道公司已经提供了标准的程序;本例中写的子程序只是为了解释工作原理;用户如果要定制G代码,可以修改对应的子程序。

;******************** 设置和定义**************************

OPEN PROG 5 CLEAR ; Prepare motion program 5 for entry

G17 G90       ; XY plane, absolute move spec

G97 S1800       ; Set spindle speed of 1800 rpm

F500    500 mm/min

G00 X10.00 Y5.00     ; Rapid move to (10, 5)

M03        ; Start spindle

G04 P2.0       ; Wait 2 seconds

G01 Z0        ; Lower cutter

X30.25 Y5.00      ; Linear XY move

G03 X35.25 Y10.00 J5     ; CCW arc move

G01 X35.25 Y50.10     ; Linear move

G03 X30.25 Y55.10 I-5 ; CCW arc move

G01 X10.00 Y55.10     ; Linear move

G03 X5.00 Y50.10 J-5     ; CCW arc move

G01 X5.00 Y10.00     ; Linear move

G03 X10.00 Y5.00 I5     ; CCW arc move

G01 Z5 M05       ; Cutter up, stop

G00 X0 Y0       ; Back to home

CLOSE

;*****************************************************************

Motion program 1000 contains the G-Code subroutines

OPEN PROG 1000 CLEAR     ; Prepare buffer 1000 for entry

RAPID RETURN       ; G00 Rapid mode (N0 is implied)

N01000 LINEAR RETURN     ; G01 Linear interpolation mode

N02000 CIRCLE1 RETURN ; G02 Clockwise circle mode

N03000 CIRCLE2 RETURN ; G03 Counterclockwise circle mode

N04000 READ(P)       ; G04 Dwell for P seconds

IF (Q100 & 32768 > 0)      ; P parameter specified?

DWELL (Q116*1000)      ; PMAC specifies dwell time in msec

ENDIF

RETURN

N17000 NORMAL K-1 RET ; G17 Specify XY plane

N18000 NORMAL J-1 RET     ; G18 Specify ZX plane

N19000 NORMAL I-1 RET     ; G19 Specify YZ plane

N90000 ABS RET       ; G90 Absolute mode

N91000 INC RET       ; G91 Incremental mode

N97000 READ(S)       ; G97 Spindle speed set

IF (Q100 & 262144 > 0)     ; S parameter specified?

I422=Q119/30       ; #4 jog speed in cts/msec

ENDIF

RETURN

CLOSE

;*****************************************************************

Motion program 1001 contains the M-Code subroutines

OPEN PROG 1001 CLEAR     ; Prepare buffer 1001 for entry

N03000 CMD "#4J+" RET     ; Start spindle clockwise (closed loop)

N04000 CMD "#4J-" RET     ; Start spindle counterclockwise (ditto)

N05000 CMD "#4J/" RET     ; Stop spindle

CLOSE

; 终端窗口中输入下列指令运行运动控制程序

&1 B5 R ;Coordinate System 1, point to Beginning of Program 5, Run

旋转缓冲区

旋转缓冲区用于从上位机向PMAC传送大量的动态数据,例如机器人视觉系统和高速高精数控机床,其原理是采用缓存接受和存储动态数据。

;  This example Motion Program demonstrates:

;    A) Using the Rotary Buffer

;    B) Calculating Rotary Buffer size

;    C) Using G-Codes (G0, G1) to command motion

;    E) Download 'associated' files using '#include'

;     The '&1R' command (line 49) will cause this program to begin running

;     The 'Stop' command (line 76) will end the Motion Program 

;

;     Calculating Rotary Buffer size:

;      Estimate 1.5 'words' per axis move

;      Estimate 1 'word' per other commands

;  ;        12 x 1.5 = 18

;        12 x 1   = 12

;          -----

;            30

;     &1 DEFINE ROTARY 30

Close    

Delete Gather

Delete Rot         

;;Included files provide G-Code & M-code definitions

#include "G-Code_Sub.pmc"     ;download G-code definitions, Prog 1000

#include "M-Code_Sub.pmc"     ;download M-code definitions, Prog 1001

&1        ;Define Coordinate System

#1->2000X       ;Define Motor #1 - X axis

#2->2000Y       ;Define Motor #2 - Y axis

I5192=1         ;Disable 'Blending' for C.S #1

&1 DEFINE ROTARY 30      ; Create C.S. 1 rotary buffer

&1 B0         ; Point C.S. 1 to rotary buffer

&1R        ;Start the Motion Program

OPEN ROT        ; Open buffers for entry

G90        ;Absolute positioning

F5        ;Set Feedrate

M05        ;Pen up

G00 X5 Y5       ;Move to start 

M03        ;Pen down

G01 X10 Y5

G01 X10 Y10

G01 X5 Y10

G01 X5 Y5

M05        ;Pen up

G00 X0 Y0       ;Move to machine zero

Stop        ;Stop the Motion Program

CLOSE

PLC I/O实例

此例子展示如何使用PLC程序操作PMAC的通用I/O;程序开始时把变量M1~M14映射到对应的机器I/O的地址;实际应用中用户只需选择对应的PMAC卡并下载缺省的M变量映射既可以,不需要这样一个一个定义M变量。

注意:不同的PMAC卡对应的I/O地址不一样,错误的M变量映射可能导致不可知的后果。

;************************** 设置和定义***************************

CLOSE         ; To ensure these are on-line

M1->Y:$FFC2,8,1       ; Machine Output 1

M2->Y:$FFC2,9,1       ; Machine Output 2

M3->Y:$FFC2,10,1      ; Machine Output 3

M4->Y:$FFC2,11,1      ; Machine Output 4

M11->Y:$FFC2,0,1      ; Machine Input 1

M12->Y:$FFC2,1,1      ; Machine Input 2

M13->Y:$FFC2,2,1      ; Machine Input 3

M14->Y:$FFC2,3,1      ; Machine Input 4

M20..39->*        ; Self-referenced flag variables

;************************** PLC Program **********************************

CLOSE         ; Make sure other buffers closed

OPEN PLC 5        ; Open buffer for editing

CLEAR         ; Erase existing contents

;第一个分支基于1号输入,对应的P1000变量被设置,它可以是位置、速度或时间等等.

IF (M11=1)        ; Machine Input 1 true?

P1000=5000        ; If so, set to this value

ELSE

P1000=500        ; If not set to this value

ENDIF

; 此分支基于2号输入, 当其值为真时,P8计数值增加一位

IF (M12=1)        ; Machine Input 2 true?

IF (M22=0)        ; Not true last time thru?

P8=P8+1        ; Have rise edge, so increment

M22=1         ; Note as true for next time thru

ENDIF

ELSE         ; MI2 is not true

M22=0         ; Note as not true for next time thru

ENDIF

;标志位满足一定条件时,对应的输出被设置,运行对应的电机

IF (M23=1 AND M24=1)     ; First two flags true?

AND (M25=1 AND M26=1) ; Second two flags true?

M1=1        ; Then set output

COMMAND"#1J+"            ;手动运行1号电机

COMMAND"#2J/"            ;手动停止2号电机

ELSE

M1=0         ; Otherwise clear output

COMMAND"#2J+"            ;手动运行2号电机

COMMAND"#1J/"            ;手动停止1号电机

ENDIF

CLOSE         ; Close the buffer

ENABLE PLC 5       ; Enable operation of program

实时运动数据采集

实时采集数据,需要首先用I5000变量指定用于存储采集数据的缓冲区内存起始地址和模式,然后用I5001–I5048变量指定要采集数据源的地址,最后采用I5049指定采集周期;实际应用中没有这么复杂,采用PMAC PLOT软件可以方便的实现这些设置。

;********************* Set-up and Definitions *********************/

Undefine All  ; Undefine all coordinate definitions

End Gat  ; End any data gathering that might be happening presently

Del Gat  ; Erase any defined gather buffer

Close     ; Make sure all buffers are closed

&1     ; Coordinate System 1

#1->1000X    ; Assign motor 1 to the X-axis - 1 program unit

     ; of X is 1000 encoder counts of motor #1

/********************* Motion Program Text *************************/

Open Prog 1 Clear     ; Open buffer for program entry, Program #1

Linear     ; Blended linear interpolation move mode

Abs     ; Absolute mode - moves specified by position

TA 500     ; Set 1/2 sec (500 msec) acceleration time

TS 0     ; Set no S-curve acceleration time

F 5     ; Set feedrate (speed) of 5000 units(cts)/sec

CMD"End Gat"    ; Stop gathering

CMD"Del Gat"    ; Deletes the gather buffer

CMD"Def Gat"    ; Allocates all the available memory as gather buffer

Dwell 0     ; Force CMD lines to execute

CMD"Gat"  ; Starts gathering of the data

Dwell 0     ; Force CMD lines to execute

X 10     ; Move X-axis to position 10000

Dwell 500  ; Stay in position for 1/2 sec (500 msec)

X 0     ; Move X-axis to position 0

Dwell 0     ; Force CMD lines to execute

CMD"End Gat"    ; Send On-line command to stop data gathering

Dwell 0     ; Force CMD lines to execute

Close     ; Close buffer - end of program

运动学正逆解应用

此例解释如何直接从工具端运动映射到电机的运动;对象为一个两轴的机器人臂;工具端在XY坐标系中定义;A 和 B 定义为角度 (电机位置);最终目的是在运动控制程序中直接指定工具端XY位置而不是电机位置。L1 = 4 英尺, L2 = 3 英尺。

正向运动学方程:

逆向运动学方程:

注意:不失一般性,这里只讨论第一象限。

End Gat

Del Gat

Close

//=======================相关设置===================================//

//运动学相关变量,这些变量是固定的不变的。

#define KinPosX    Q7    ; X-axis pos in mm for kinematics

#define KinPosY    Q8    ; Y-axis pos in mm for kinematics

#define Mtr1Pos    P1    ; Motor#1 pos in cts for kinematics

#define Mtr2Pos    P2    ; Motor#2 pos in cts for kinematics

// 采用宏定义代替坐标系变量使得编程更加直观

#define Length1    Q91    ; Linkage 1 length (inches)

#define Length2    Q92    ; Linkage 2 length (inches) 

#define Mtr1SF    Q93    ; Motor#1 Scale Factor, Counts/User units (deg)

#define Mtr2SF    Q94    ; Motor#2 Scale Factor, Counts/User units (deg)

#define TempA    Q95    ; Temporary holding register for A calculation (deg)

#define TempB    Q96    ; Temporary holding register for B calculation (deg)

#define Xsq_p_Ysq    Q97    ; X^2+Y^2

#define L1sq_p_L2sq    Q98    ; L1^2+L2^2

#define L1sq_s_L2sq    Q99    ; L1^2-L2^2

#define TempCosB    Q100    ; cos(B) value

Length1=4        ; Linkage 1 length, 4 inches  --UserInput

Length2=3        ; Linkage 2 length, 3 inches  --UserInput

Mtr1SF=2000/360        ; Motor#1, cts/deg     --UserInput

Mtr2SF=2000/360        ; Motor#2, cts/deg     --UserInput

L1sq_p_L2sq=Length1*Length1+Length2*Length2

L1sq_s_L2sq=Length1*Length1-Length2*Length2

// 标志位

#define Mtr1HmComp    M145    ; Motor#1 Home-complete bit (suggested M-variable)

#define Mtr2HmComp    M245    ; Motor#2 Home-complete bit (suggested M-variable)

#define CS1_RunTimeError    M5182    ; Coordinate System 1 run-time-error bit (suggested M-variable)

Mtr1HmComp->Y:$0000C0,10,1         ; #1 Home-complete bit

Mtr2HmComp->Y:$000140,10,1         ; #2 Home-complete bit

CS1_RunTimeError->Y:$00203F,22,1         ; &1 Run-time-error bit

Undefine all

&1        ; Addressing Coordinate System 1

//========================= 正向运动学================================ //

Open Forward Clear                        

If(Mtr1HmComp=1 and Mtr2HmComp=1)    ; Homed?

    TempA=Mtr1Pos/Mtr1SF    ; Motor 1 position in deg

    TempB=Mtr2Pos/Mtr2SF    ; Motor 2 position in deg

    KinPosX=Length1*cos(TempA)+Length2*cos(TempA+TempB)

    KinPosY=Length1*sin(TempA)+Length2*sin(TempA+TempB)

Else

    CS1_RunTimeError=1     ; Abort, and set runtime if not homed             

Endif

Close        

//============================逆向运动学============================== //

Open Inverse Clear

Xsq_p_Ysq=KinPosX*KinPosX+KinPosY*KinPosY

TempCosB=(Xsq_p_Ysq-L1sq_p_L2sq)/(2*Length1*Length2)

If (ABS(TempCosB)<0.9998)    ; Valid solution with 1 degree error ?

    Q0=KinPosX    ; Q0 is atan2 function denominator

    TempA=atan2(KinPosY)-acos((Xsq_p_Ysq+L1sq_s_L2sq)/(2*Length1*sqrt(Xsq_p_Ysq)))

    TempB=acos(TempCosB)

    Mtr1Pos=Mtr1SF*TempA

    Mtr2Pos=Mtr2SF*TempB

Else

    CS1_RunTimeError=1    ;Abort, and set runtime if not homed

Endif

Close    

//===============运动控制程序========================================== //

End Gat

Del Gat

Close

&1    ; Address Coordinate System 1

I5150=1    ; Isx50 Coordinate System x Kinematic Calculations Enable

I5113=10    ; Isx13 Coordinate System x Segmentation Time (msec)

#1->I    ; Use kinematics to calculate Motor# 1 position

#2->I    ; Use kinematics to calculate Motor# 2 position

Open Prog 1 Clear

Linear    ; Linear move mode

Abs    ; Absolute move modal

TA 100    ; Acceleration time 100 msec

TS 0    ; S-curve time 0 msec

TM 1000    ; Move time 1000 msec

X 1.5 Y 0    ; Go to starting position X=1.5 Y=0

CMD "EndGat"     ; End previous gathering

CMD "DelGat"     ; Delete gathering buffer (release buffer)

CMD "DefGat"     ; Define gathering buffer

CMD "Gat"     ; Start gathering data

X 2 Y 0    ; Go to X=2 Y=0

Dwell 0    ; Stop 0 msec, stop blending

X 4 Y 0    ; Go to X=4 Y=0

Dwell 0     ; Stop 0 msec, stop blending

X 4 Y 3    ; Go to X=4 Y=3

Dwell 0    ; Stop 0 msec, stop blending

X 2 Y 3    ; Go to X=2 Y=3

Dwell 0    ; Stop 0 msec, stop blending

X 2 Y 0    ; Go to X=2 Y=0

Dwell 1000    ; Wait for 1000 msec

CMD "EndG"     ; End gathering data

Close

6.PMAC相关软件

PMAC相关软件在开发过程冲起到了很大的作用,熟悉这些软件的使用将有效的加快开发。

●开发软件

 用于设置电机,编写PLC和运动控制程序,调试和发送在线指令;主要有以下几款:PeWin32Pro2:核心开发环境,编写PLC和运动控制程序,发送指令,动态观测窗口。

PMAC Tuning:用于调试电机电流环和伺服环。

PMAC Plotting:采集和绘制各种曲线。

●通讯函数库(PCOMMSERVER)

 提供和各种和高级语言开发工具如:.NET, C++, C#, Visual Studio的COM组件接口。

 注意:PCOMM32和PTALK都是过时的通讯函数库,泰道不再提供技术支持。

●人机接口软件

    PMAC NC Pro2: 数控专用软件

 HMI:类似于组态软件的人机接口开发软件。

文档

PMAC教材

1.PMAC控制卡及泰道公司简介PMAC控制卡PMAC是可编程多轴控制器(ProgrammableMulti-AxisController)的简称,是美国泰道(DeltaTauDataSystems,Inc)公司生产的功能强大的运动控制器,PMAC是目前世界上功能最强的运动控制器,同时也是当前开放式数控系统控制器的突出代表泰道公司介绍泰道公司拥有三十多年丰富的运动控制经验,是首屈一指的创新型、高性能机器控制专家,拥有全球数百万轴的惊人控制能力;自从上世纪90年代初推出第一款基于DSP的8轴的P
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top