最新新闻
我要投稿
联系电话:027-87592219/20/21转188
投稿邮箱:tb@e-works.net.cn
您所在的位置:首页 > 智库 > 智能生产

基于运动控制卡的开放式数控系统研制

发布时间:2014-02-25 作者:张剑殷 苏民  来源:万方数据
对基于运动控制卡和PC的开放式数控系统平台结构进行了研究,介绍了硬件原理和基于COM的模块式软件结构,并在此基础上针对GT400—SV运动控制卡开发了一个数控系统。实践证明这种形式的系统具有很强的性能价格优势,实现了软硬件的开放性和数控模块的二进制复用。

3 软件系统结构规划及实现

  3.1 软件总体层次

  该数控系统能够正常工作,其系统软件包括上位机端的CNC用户应用程序、上下位机进行通讯的通讯驱动程序。其中通讯程序的开发工作量最大、最困难、也最具有技巧性,需要对下位机的通讯结构及微软的WDM有充分了解。GT400-SV随卡提供了win98/2000下的设备驱动程序PHDIO.SYS,同时提供了面向运动控制卡的高级函数库GTSVDLL.DLL,用户通过主机程序调用相应的库函数,将运动控制器相关参数和运动轨迹描述传递给运动控制器,也就是发出运动控制命令,运动控制器将根据主机的要求,自动完成轨迹规划、安全检测、伺服刷新等复杂运算,计算结果转换成模拟电压或脉冲控制电机运动,用户无须编写通讯程序,并从32位驱动库中解脱出来,将全部精力用于定义和开发自己的CNC系统应用程序。本系统的软件层次关系如图3所示。

软件总体层次   

  图3 软件总体层次

  本系统的开放性主要体现在两个方面:一方面,控制卡核心对外开放,系统开发商可改进运动控制卡中的运动控制算法,通过编程器和下载器下载到控制卡的K2ROM中,以针对具体的控制对象优化算法,提高系统性能。另一方面,上位机数控平台对控制卡、CAD/CAM系统、数控机床开放。前者的开放性主要体现在对运动控制卡底层性能特性的控制能力,是以控制卡的物理结构(E2ROM)为基础的。而后者的开放性体现在数控平台对硬件设备的兼容性、通用性、可定制性,对CAD/CAM软件的衔接能力以及数控平台各功能模块的可复用性,这主要通过合理规划软件功能,选择先进的软件体系结构来实现。

  微软的COM及DCOM是目前比较成熟并已得到广泛应用的组件接口标准,通过定义统一的操作规范,用户不再直接和软件模块的功能函数接触,COM规范作为中介,接口屏蔽了模块内部的特征,从而实现了模块在二进制级的交互。具体的讲COM是通过定义的虚函数表(Vtable)以及双重指针来实现的,这种方法具有优异的二进制级软件可重用性,良好的语言无关性,可以实现组件跨进程、跨平台甚至网络范围内的互操作。本文对使用COM规范定义开发基于运动控控制卡的数控系统软件模块做了一些有益的尝试,将COM作为软件的底层结构支持。软件结构如图4所示。

 软件结构  

  图4 软件结构

  3.2 主要模块间数据结构的定义

  3.2.1 数控代码信息

  定义了完整的数控信息,从数控程序段中提取的数控位置信息、运动信息、I/O被填入该结构。

  typedef struct{
  CString title;//程序名称
  int Num;//程序段号
  int GG00;//00组G代码
  ……
  int GG15;//15组G代码
  int GM00;//00组M代码
  ……
  int GM10;//10组M代码
  int T;//刀具号
  double S;//主轴转速
  double F;//进给速率
  double R;//圆弧插补半径,固定循环参数
  double Q;//固定循环参数
  double P;//固定循环参数
  double X;//基本尺寸
  double Y;
  double Z;
  double I;//圆弧插补圆心坐标(相对)
  double J;
  double K;
  }CODEINFO;
  3.2.2 运动控制卡信息
  主要定义了运动控制卡可配置部分的参数。
  tvoedef struct {
  double RefPointX;//系统参考点
  double RefPointY;
  double RefPointZ;
  double RefPointA;
  double ServoCycle;//伺服周期
  AxisMapX;//轴映射
  AxisMapY;
  AxisMapZ;
  AxisMapA;
  unsigned short LimitSense;//限位电平
  unsigned short DSns;//编码器方向
  unsigned long iN;//中断号
  unsigned long PortBase;
  structAxislnfo//轴参数
  {
  double AxisMap[5];
  unsignedshort Kx[5];
  unsigned short ILmt;
  unsigned short MtrLmt;
  short MtrBias;
  unsigned short PosErr;
  double AccLnt;
  }Axis[4];
  }CARDINFO。
  3.2.3 数控系统信息主要定义了数控系统的结构参数,支持的数控代码表,实际的驱动能力。该结构为译码模块和控制卡函数调用模块提供规则,译码模块依据系统信息及译码规则填充数控代码信息结构并输出错误信息。
  typedef struct {
  bool G00,G01,G02,G03,……,G99;//支持的G代码
  bool M00,M01,M02,M03,……,M99;//支持的M代码
  double Xmin,Xmax,Ymin,Ymax,Zmin,Zmax;//平台结构参数(软限位)
  double Smin,Smax;//主轴转速限制
  double Fmin,Fmax;//进给速率限制
  double FF;//快速进给限制
  int plusEqual;//驱动电机脉冲当量
  double synAcc;//合成运动速度限制
  double ServoCycle;//伺服周期
  int AxisNm;//轴数
  struct Tool//刀具参数
  {
  double Lenth;
  double Ratio;
  int index;
  } tool[20];
  } CODEPERMIT;
  3.2.4 错误信息
  typedef struct {
  Cstring title;//程序名称
  UINT line;//出错程序段
  UINT ErrorType;//错误号
  }ERROR;//传递数控代码解释过程中识
  别的错误

本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。