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

基于Windows 2000下开放式数控系统软件的开发

发布时间:2014-05-14 作者:陈德妙 张桂香 
关键字:开放式 数控系统  
基于PC机和Windows操作系统的开放式数控系统是数控技术的大势所趋。文章首先介绍了数控机床的发展历程,并分析传统数控系统不足和基于PC的开放式数控技术的优点的基础上,论述了基于Windows2000 操作系统下,开放式数控系统软件的研究和开发过程。重点阐述了在Microsoft Visual C ++ 下系统人机交互界面的设计、工控PC 机控制运动控制卡的接口软件模块、PC机与主轴控制变频器的RS485 串行口通讯软件模块的的编写,同时给出了主要程序代码。该数控系统现在已经在调试之中,并且达到了预期的加工精度和效果。

2 与主轴变频器的通讯软件的设计

  该数控车床的主轴采用变频器控制转速,还有通过连接主轴上的光电编码盘与运动控制卡上的辅助编码器接口来确定主轴位置。

  主轴变频器采用了Simens 的MICROMASTER420 系列的变频器,为了与主轴电机功率匹配,选用了0. 75kW的变频器。MI2CROMASTER420 由微处理器控制,并采用具有现代先进技术水平的绝缘栅双极型晶体管( IGBT) 作为功率输出器件,具有很高的运行可靠性和功能的多样性,是专门用于控制三相交流电动机速度的变频器系列。

  变频器与工控机的连接采用的是RS485 通讯,采用2 线双绞传输方式,即数据D + 和数据D - ,这种数据差动传输方式可以有效地消除干扰的影响。对于串口通讯,在VC ++ 环境下可以直接利用Active 控件来实现,这样就比较方便、可靠,但是在使用前安装控件并在注册表中注册后才能使用。该控件就是Microsoft Communications Control(MSComm) ,它的几个主要属性设置如表1所示。

 Microsoft Communications Control 属性设置表

   通讯报文的如表2 所示,其中,STX 区是一个字节的ASCI2ISTX(02hex) ,表示一条信息的开始;LGE 指明这一信息中后跟的的字节数目。ADR 是变频器的地址;BCC 是一个字节的校验和,用于检查信息是否有效;中间部分便是有效的数据字符,分为两个区域,即PKW 区(参数识别ID - 数值区) 和PZD 区(过程数据) 。

通讯报文结构

   在程序设计上,主框架类CmainFrm 里的OnCreate (LPCRE2ATESTRUCT lpCreateStruct) 函数中进行初始化工控机串口,大致代码如下:

   if (m ctrlComm. GetPortOpen() )
   m ctrlComm. SetPortOpen(FALSE) ;
   m ctrlComm. SetCommPort (1) ; / / 选择com1
   if ( ! m ctrlComm. GetPortOpen() )
   m ctrlComm. SetPortOpen(TRUE) ;/ / 打开串口else
   AfxMessageBox(”cannot open serial port”) ;
   m ctrlComm. SetSettings(”9600 ,n ,8 ,1”) ; / / 波特率9600 ,无校验,8 个数据位,/ / 1 个停止位
   m ctrlComm. SetRThreshold(1) ; / / 参数1 表示每当串口接收缓冲区中有多于或/ / 等于1 个字符时将引发一个接收数据的OnComm事件
   m ctrlComm. SetInputLen(0) ; / / 设置当前接收区数据长度为0
  m ctrlComm. GetInput () ;/ / 先预读缓冲区以清除残留数据
MSComm控件会产生OnComm事件,所以在OnComm( ) 函数里对通讯报文进行处理。

3 与运动控制卡的通讯模块的设计

   GT- 200SV 卡的核心是由ADSP2181 数字信号处理器和FP2GA组成,可以实现高性能的控制计算,并能实现多轴协调运动。

   在控制软件中,与该卡相关的类是CcardDeal 类。该类主要包括轴的初始化函数AxisInitial ( ) 、电机轴报警函数Error ( shortrtn) 、卡的初始化函数GTInitial () 和轴坐标映射函数MapAxis ( ) 。总之,CcardDeal 类具有了轴、卡的最基本的操作,为下面的刀架的大小溜板轴的控制打下了基础。

   有了这些函数之后,就可以在主框架类CmainFrm 里的On2Create(LPCREATESTRUCT lpCreateStruct) 函数中进行初始化卡和轴,部分主要代码如下:

   int CMainFrame : :OnCreate(LPCREATESTRUCT lpCreateStruct)
   {
   ...
   CCardDeal Card ; / / 定义一个卡的对象
   Card. GTInitial () ; / / 卡的初始化
   Card. InputCfg() ; / / 专用输入信号参数设置
   Card. AxisInitial () ; / / 轴初始化
   double cnt1[5 ] = {2000 ,0 ,0 ,0 ,0} ; / / 坐标映射数组
  double cnt2[5 ] = {0 ,2000 ,0 ,0 ,0} ; / / 坐标映射数组
   Card.MapAxis() ; / / 映射各个坐标轴
   ...
    return 0 ;
   }
4  结束语

   该数控系统已调试运行了,由于时间仓促,有些软件功能未能开发出来。但是这本身就是个开放式数控系统,所以以后在应用过程中,需要什么功能,便可以在原有软件系统上进一步进行开发。比如,一些零件的车削循环指令,一些特殊的自定义辅助功能等都可以添加。

开放式数控系统是数控技术发展的必然趋势,它给数控系统生产商、机床制造商以及用户都带来了许多好处。而基于PC的开放式数控系统具有较强的灵活性,可以充分利用PC 机丰富的软硬件资源和强大的技术优势,有利于更加完美地实现数控系统的用户界面、图形显示、动态仿真以及网络通讯等功能。模块化的程序设计使系统的通用性和可移植性大大增强,同时也有利于系统日后的功能扩展。  

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