技术频道

PMAC控制板在转台控制系统中的应用

摘 要:各种嵌入式产品的出现导致计算机控制系统出现了很多新的形式,作为典型的DSP应用产品,PMAC非常适合轴类运动的控制。本文主要介绍PMAC在一个实际的飞行模拟转台控制系统中的应用方法。

关键词:PMAC, 转台, 半实物仿真

  1. 引言
  由于各种民用、军用飞行器技术的快速发展,当今世界各国都十分重视半实物仿真技术的研究和应用,而飞行模拟转台是半实物仿真的重要设备之一。通常,飞行模拟转台提供模拟飞行器飞行姿态角和为被试件提供测试条件的功能,以便验证全数字仿真的实验结果并进一步优化或改良飞行器设计方案。而对于转台这样一个典型的自动控制系统来讲,控制器扮演重要角色,其优劣直接决定飞行仿真实验的成败和效果。因此,寻求简单易用且可靠的控制器成为转台设计的一个重要方面。
  2. 使用PMAC控制器
  随着自动控制理论和数字计算机及其应用技术的不断发展,使以计算机为基础控制技术迅猛发展,被控对象规模更大,控制过程和规律也更加复杂和精密,控制方法也更加灵活多样。在转台的控制系统中,除了用来产生输入信号的仿真机之外,计算机还扮演了控制器的角色。在这里,计算机可以是单片机、工控机或者是PC等。根据控制器的不同形式,计算机控制系统分为集中式,分布式,集散式三种类型,其中集散式控制器又分为PC机与单片机,PC机与PC机,PC机与嵌入式控制器三种形式。
  在控制系统中使用PMAC,采用的就是PC机与嵌入式控制器组合这种形式。
  2.1问题的提出

  转台的控制系统通常采用上、下位机的形式。如图1所示,常见的控制器一般位于下位机,由其给出具体控制算法,并由下位机总线上的各个分立器件(如放大器,DA、AD转换装置等)来完成输出控制信号和采集被控对象位置/速度等信息的功能,同时通过网卡等通信设备与上位机交换信息。这里,控制器的功能由一个各部分相对独立的系统来完成,使系统设计、控制算法实现和数据采集都较为复杂;加上各个设备之间可能存在的干扰,整个系统的安装调试需要花费较多的精力才能完成。这样看来,如果整个下位机(包括提到的各种功能)能够由一个独立的通用部件完成,系统设计和调试所面对的困难就要小得多。PMAC控制器正好可以达成这一目的。
  2.2 PMAC简介
  PMAC的全称是Programmable Multi Axis Controller,由美国Delta Tau公司设计生产。PMAC系列包含适用多种总线平台的板卡以及适于独立使用的组件。PMAC基于DSP(数字信号处理器),是一种通用的运动控制器,但更适用于数控机床等轴运动设备。它可以控制2 – 32根轴的运动(18块PMAC级联可以控制128根轴),同时包含多路数字I/O和DA/AD装置;可以自动生成各种控制曲线的轨迹,并允许用户方便的生成自己的控制代码。由于DSP的强大功能,PMAC甚至集成了典型的控制算法(也可以由用户提供自己的控制算法),并提供高精度的计算能力。用于PC的PMAC提供ISA/PCI总线或串口的通信方式,并提供了一组编程接口供高级用户进行二次开发。
  PMAC非常适合于对轴运动进行控制。因此,只要满足指标要求,飞行模拟转台也可以采用PMAC作为控制器。这样,整个下位机物理结构可以大大简化,系统设计和调试过程也变得相对简单。
  图2是PMAC本身提供的前馈滤波+PID控制算法的框图,其中的各个参数都可以调节,以满足不同需要。

图2:PMAC的PID框图

  3. 系统构成方法
  3.1 由PMAC构成上下位机系统
  简化的逻辑框图如图3所示。

  图中,PMAC控制卡通过标准总线与上位机相联,码盘等测速或测角机构通过PMAC上的DD接口传递位置、速度等信息,经PMAC处理,并按上位机给出的控制要求通过PMAC上的DA接口输出合适的电平信号控制转台上的电机运动,从而构成控制闭环。
  另外,PMAC通过总线向上位机交换报告转台位置、运行安全等信息,并从上位机获得程序运行所需要的命令,如程序开始、结束和系统复位等。
  由于PMAC自身的特性,使诸如码盘信号换算、行程限位等功能可以很方便的实现,且PMAC的可编程特性使系统经由很强的扩展能力,整个系统构成要比普通的上下位机系统显得简单实用。而PMAC的使用也使系统更具通用性,只需作少量调整即可应用于其他设备。
  3.2软件环境的选择
  过去用于转台控制的上下位机软件系统普遍采用DOS作为操作系统。这一方面是受当时的条件限制,另一方面也是由于DOS的开放性,程序可以直接对硬件进行操作,且一般认为DOS的实时性较好。缺点是控制软件的图形界面不容易通过编程的方式生成,控制和通信程序中揉杂大量用于生成用户界面的代码,调试和维护比较困难,而且直接直接对硬件操作使得程序通用性较差。随着计算机软/硬件及其应用技术的发展,一方面计算机硬件的价格显著降低,软件产品极大丰富,另一方面使用者对程序界面的要求也逐渐提高,越来越多的控制系统软件开始采用Windows作为操作系统。对于PMAC而言,它同时提供了基于DOS和Windows的配置程序、二次开发工具以及例程。稳定性方面,Windows作为控制系统上位机的操作系统已经是流行的做法,说明它可以满足一般要求;而实时性更是一个相对概念,对于转台控制系统而言,只要你有足够快的硬件设备和不太差的控制/通信程序,毫秒级的时间精度不难达到。
  这样,如果采用PMAC作控制器,我们可以选用Windows作为上位机的操作系统;而PMAC运行一般并不需人为干预,结果合适配置,上电后会按既定的方式执行程序。PMAC通过驱动程序+开发库的方式提供与OS的接口,Windows下常见的开发工具都可以使用。
  4. PMAC相关的程序设计
  作为一款成熟的工业产品,PMAC不仅提供了快速稳定的硬件平台,也提供了一套完整的二次开发接口供高级用户使用。PMAC用于数控机床等的控制时,可以由用户编写程序在相应的坐标系内对各个轴的运动轨迹进行方便的控制,并方便地取得各个轴的速度、加速度、位置等信息。
  4.1 PMAC的基本运行方式
  在PMAC和PC构成的系统中,相对于PMAC,PC机一侧一般称为主机(Host)。
  PMAC上的DSP芯片起到CPU的作用,通过DSP Gate控制程序的运行。用于PC的PMAC的启动过程和普通的板卡没有太大的区别:主机上电后,PMAC默认通过PCI或ISA总线(取决于PMAC的种类)与主机通信,随后PMAC开始自检过程(这一点上很象一台计算机),如果PMAC自检没有问题,则从板上自带的EPROM内读取变量初始设置等配置信息;如果有活动的PLC程序且PLC程序可以运行,则PLC程序也会开始在后台运行。PMAC启动完成后,则可以接收来自主机总线或端口(串行口)的指令,进行进一步的动作。
  这里简单介绍一下在PMAC中运行的几种程序。
  PMAC通过DSP处理所有的运算过程,板卡上的芯片固化了所有负责PMAC启动和高级数学、逻辑运算的核心程序。另外主要用于控制轴运动方式的的程序称为“G-Code”,一般由用户根据需要自行编写,可以以编译或非编译的方式运行,比如控制数控机床的程序中大部分是此类代码,最多可以有256个。最后一类PLC程序(最多32个)则是循环运行于后台的。只要被设置为允许运行,PLC程序会一直运行,直到PMAC本身停止。PMAC的程序运行也有类似计算机的优先级别分级。核心程序负责协调其它程序的运行,优先级最高;然后是PLC0,接下来是控制运动的G-Gode,最后是PLC1-PLC31,他们在运动程序的间歇运行。同时PMAC也提供硬件中断功能(中断级数取决于PMC的级连使用情况),允许主机以中断方式和PMAC通信。
  4.2 PMAC的编程方式
  PMAC提供了强大的功能用于轴类运动的控制。
  一方面,普通用户可以通过编写并运行G-Code的方式来控制特定设备(例如数控车床)的运动过程;另一方面,PMAC也允许高级用户以命令的方式直接对PMAC的运行过程进行控制。对于前者,PMAC提供了一系列的配置工具和IDE,方便用户进行G-Code的编写、调试、编译和上载(至PMAC);对于后者,除了必需的配置工具以外,PMAC也提供了相应的开发包用于高级用户的二次开发。PMAC应用于转台的控制系统时并不需运行G-Code,因此以下着重解释PMAC开发包的编程方式。
  当需要与PMAC直接通信时,需要用到DeltaTau提供的PCOMM库。针对微软的Windows,可以使用PCOMM32库来与PMAC通信。PCOMM32提供了支持ANSI/UNICODE的几组函数分别用于初始化/停止/配置、字符方式通信、上/下载、双端口RAM(PMAC板载)操作、伪中断等,具体可查看PCOMMM32的参考手册。
  结合转台的具体情况,所要作的主要是配置PMAC的运行参数和读取轴运动状态。为了保证较高的存取速度,可以使用双端口RAM作为通信中介。当双端口RAM被配置成实时数据缓冲工作方式时,可以直接从双端口RAM读取各个轴的运动状态,而PMAC本身负责在大约每400微秒的时间间隔内对这些信息进行刷新。用户编写的应用程序只需要读取对应的双端口RAM的地址上的数据即可。而且,PCOMM32提供了一组函数专门负责上述功能的实现,使用户不必和硬编码的双端口RAM地址打交道,提高了开发效率。
  以下的代码片断是利用双端口RAM从PMAC获得运动信息的例子:
  //针对轴的操作
  double aDouble =DPRPosition(1,1); //轴的当前位置
  //other codes handle this
  aDouble = DPRGetCommandedPos(1,1); //轴的给定位置
  //other codes handle this
  aDouble = DPRFollowError(1,1); //轴的随动误差
  //other codes handle this
  aDouble = DPRGetVel(1,1); //轴的速度
  //do more
  如果双端口RAM默认功能提供的运动状态信息不能够满足用户要求,或者用户只需要其中一部分信息而双端口RAM又有足够的存储空间,也可以采用以下方式。
  前文提到PMAC启动后可以以较高的优先级别循环运行PLC0程序,且其运行的时间间隔也可以设置,默认也是大约400微秒。于是可以通过编写PLC0程序的方式,向双端口RAM中刷新所需的数据,然后再由用户程序读出处理。这样也可以在保证实时性的前提下满足用户对数据的特殊需要,且代码量不大。
  以下的代码片断是使用PLC0更新双端口RAM从PMAC获得运动信息的例子:
  //first in command line setup M-variable
  m111->D$28 ;#1轴当前位置
  m112->DP$D000 ;first memory area
  ;... other settins
  //PLC0
  open plc 0 clear
  m112 = m111 / (i108*32) ;在plc0内刷新,i108*32是作单位转换
  ;...do more
  close
  //wakeup plc 0
  i5 = 2
  enable plc 0
  //user app
  //...
  float lamer = DPRGetFloat(DEVICE0_ID, 0); //0 is offset from DP$D000
  //...handle the lamer
  4.3PMAC应用程序的一般结构
  综合前面的论述,PMAC的应用程序一般分为三个部分。
  1. PMAC的设置。一般情况下,尽管PMAC使用出厂时的默认配置即可运行起来,在投入正式使用前一般都会根据具体需要对默认配置进行改变,包括硬件设置(如跳线)、软件设置(如控制电机运行的I变量等)、变量分配和报警设置,具体可以参考PMAC的软件手册和用户手册。另外还需要连接用的电缆等。
  2. PMAC运动程序的编写。作为控制器,在配置好系统变量的前提下,PMAC通过运动程序、PLC程序等对具体对象施加控制信号。同时,这些程序还要负责向上位机报告工作状态。一般来讲,PMAC一侧的程序以简单语句为主,且最好不要有太复杂的逻辑,以保证运行效率。
  3. 主机(上位机PC)一侧程序的编写。主机一侧的程序除负责向PMAC传送仿真机的指令外,还需要获得转台的实时运动状态和报警情况,一般还需要绘制波形和记录数据备查。当上位机程序在WIN32下实现时,应尽可能利用线程来处理各种操作,以保证实时性。
  5.结论
  将PMAC作为转台的控制器在理论和实际上都是可行的,笔者已经在实际系统上实现。这样作使系统设计和应用程序的设计大大简化,设计者只需要较少的代码就可以达到目的。另外,当整个系统投入使用并进入维护阶段,采用PMAC这样的标准部件也减少了软/硬件维护的困难。作为飞行模拟转台设计实现的一个新思路,这一方法值得尝试。

文章版权归西部工控xbgk所有,未经许可不得转载。