基于Windows的华中数控世纪星数控系统PLC编程系统设计

来源:万方数据 作者:韩伟 宋明伟 魏志强 侯巧红

点击:1440

A+ A-

所属频道:新闻中心

关键词:华中数控 数控系统 PLC

    数控系统内部控制逻辑是由通用或内装式可编程控制器(PLC)来实现的。目前,PLC的编程方法主要有专用编程器和基于PC的软件编程器两种。当前,华中数控系统PLC控制是基于DOS环境使用C语言而设计的,该软件已经不太符合现代计算机大多采用Windows操作系统的实际要求,设计人员使用起来不直观、不方便,而且使用C语言编程同使用梯形图编程相比,对编程人员要求较高。根据这些情况,有必要研发一个基于个人计算机的能为用户提供直观、方便、高效的编程环境的PLC软件开发平台,使数控实验台在最大程度上发挥它的积极效用,使学生能够直观、方便地了解和掌握数控系统中PLC的编程和仿真操作。

    1 华中数控系统中的可编程控制器

      华中数控世纪星采用的是“内装型”PLC。和CNC共用一个CPU、输A./输出、电源。该PLC是从属于CNC装置的一部分,与CNC之间的信号传送在CNC内部实现,PC与机床侧的信息传送则通过CNC的I/O接口电路实现。由于CNC的功能和PLC的功能一起考虑,因而这种类型的系统在硬件和软件的整体结构上合理、实用、性能价格比高。PLC和CNC之间没有多余的连线,而且PLC上的信息可以在CNC的显示器上显示,PLC的编程更为方便,故障的诊断功能也有所提高。

    2 数控PLC编程系统的整体设计

      2.1 整体设计方案

      在数控器系统中,CNC和PLC协调配合共同完成对数控机床的控制。PLC主要完成与逻辑运算有关的一些动作,没有轨迹上的具体要求,它接受CNC的控制代码M、S、T等顺序动作信息。对其进行译码,转换成对应的控制信号控制辅助装置完成机床相应的开关动作,如工件的装夹、刀具的更换等一些辅助动作;它还接受机床操作面板的指令,一方面直接控制机床的动作,另一方面将一部分指令送往CNC用于加工过程的控制。PLC内嵌在数控装置中,可以进行读写操作,借助CNC系统的全部硬件资源,具有友好的界面接口,便于用户编程和操作。基于Windows系统的图形开发系统,进行图形化编程。

      2.2 开发工具的选择

      根据设计需要选择C++Builder 5.0为开发工具,该工具是基于Microsoft公司的32位Windows系列操作系统的可视化开发工具,使用的程序语言是C++语言,既可进行过程化程序设计,又可进行面向对象的程序设计,强调对高级抽象的支持,用它开发出的应用程序具有可重用的特点。采取面向对象技术,高质量的代码能有效降低软件的复杂度和提高开发效率。

      2.3 数据结构的选择

      数据结构类型的选择首先要满足对于待处理的数据元素及其关系的描述;其次在能够完整描述问题空间所有数据元素及它们之间关系的基础上,应采用尽可能简单的数据结构,以避免复杂数据结构带来的复杂操作;同时,应考虑与其他模块之间数据结构的通用性。基于以上考虑,作者采用具有线性特性的数据结构来实现梯形图编辑过程中元件添加、删除及修改时设计数据的保存和读取数据的高效性。

      系统采用了标准模板库(STL)中的标准顺序容器list来存储设计过程中涉及到的梯形图数据,主要对象容器定义如下:

      (1)梯级链表:Tyr,edef list<CRung*>CRungList;
      (2)行链表:Typedef list<CRow*>CRowList;
      (3)元件链表:Typedef list<CElement*>CEle—mentList o

      通过list容器模板自带的push—back成员函数将要加入的对象压入到相应种类容器中,通过这样的操作把各对象逐一地放人容器中,再通过其他成员函数如ecase、insert等对它们进行操作,实现各对象数据的集中管理。

      当用梯形图编程系统绘制梯形图时,每在计算机屏幕上画一个梯级,就会生成该梯级类的一个对象,同时程序把该对象加入到梯形图类中的CRungList链表当中;每画一个行,就会生成该行类的一个对象,同时程序把该对象加入到对应的梯级对象中的CRowList链表当中;每画一个元件,就会生成该元件类的一个对象,同时程序把该对象加入到对应行对象中的CElementList链表当中。所以,在CElementList链表中的一个结点对应梯形图中一个水平连线、元件或功能块等。

    3 数控PLC编程系统中的梯形图元件基类设计

      梯形图一般由多个不同的梯级组成,每一个梯级又可以由“一行”或“数行”组成,每行由一个或几个输入元件及一个输出元件组成。输出元件应出现在梯级的最右边,而输入元件则出现在输出指令的左边。

      从计算机角度看,梯形图是一幅位图,它由一个个像素组成。计算机没有能力分析梯形图并判断出每个元件之间的逻辑关系,所以,需要找到一种描述方法,让计算机能“看懂”梯形图。为此,作者采用面向对象设计方法来开发梯形图编辑器。

      首先分析和识别梯形图中的不同对象。根据对象的性质和功能抽象归并为不同类,建立类的层次结构。面向对象软件设计主要是类的设计,而不是对象的设计,因为各种对象是在梯形图对应的编辑过程中动态产生的。通过对系统的梯形图对象、梯级对象、行对象及元件对象进行抽象,建立了梯形图编程系统的类层次结构,其类层次结构中六大类对象为:梯形图类、梯级类、行类、梯形图画布类、梯形图文档类。元件库模型的基类CElement是从梯形图编程系统所支持的所有元件抽象出来的一个类,它定义了其他类的共有操作接口和属性,是其他图元类的父类。模块中所有的元件子类都根据C++的继承机制继承了基类的属性,并根据自己支持的图元形状有选择地重载基类相应的操作,以满足子类的需要。所以基类的定义在梯形图编辑模块的实现过程中是非常关键的一步。

      作者采用的规则是:将具有相同性质,包括相同外部性质和内部处理能力的对象归为一类作为最低层次,然后采用自下而上逐步抽象的方法,将具有共性的类的公共性质再并人一个相对于被抽取共性的类的基类中;被抽取共性的类便为导出类,抽取成形的类为基类。如此类推,不断产生更多的基类,最终建立了类的层次结构。在对所有梯形图元件进行共性抽象之前,做了如下处理:

      (1)梯形图元件除元件自身信息外,还应包含其连接线的信息;

      (2)把梯形图的空格和水平连接线作为特殊元件;

      (3)在梯形图中,常开触点、常闭触点等元件有一个操作参数;定时器、计数器等元件有两个操作参数;空格和水平连接线等元件没有操作参数。为了对所有梯形图元件进行共性的抽象表示,作者为每个元件设置了两个操作参数。例如常开触点只有一个操作参数时,另外一个操作参数设置为空。

      抛开梯形图的图像表象,梯形图中每个元件包含的共同属性如图1所示。元件基类定义元件的所在位置、持久化和事件处理等操作,其定义描述如下:

    图1基类元件的共同属性

      (1)标识信息:元件唯一的功,类型及元件的操作参数;

      (2)位置信息:元件的顶点位置、长度等;

      (3)绘制行为:绘制元件图符,绘制元件包含的线型;

      (4)命中测试行为:鼠标的位置是否命中图元以及具体部位;

      (5)持久化行为:存盘和读取。

      梯形图元件基类的关键代码如下:

    代码 
    代码 

    4 结束语

      以整体设计为基础,有了元件基类,就可以以其为父类,根据每个元件的不同特性,为每个元件设计一个子类。作者把各元件类以相应的英文单词来命名,如常开触点类(Normally Open Contact)命名为CContactNO。每一种元件都在该程序的工程组当中单列一个单元,并把相应元件类的定义写进去,为编辑器的具体实现打下基础。

    (审核编辑: 沧海一土)