开放式数控系统中的软件PLC技术研究

来源:万方数据 作者:罗华丽 李斌 汤志斌

点击:1210

A+ A-

所属频道:新闻中心

关键词:数控系统 PLC CNC

      在数控系统中,可编程逻辑控制器(PLC)在处理开关量辅助控制问题时起着重要作用,它主要负责NC侧和机床侧的逻辑信号处理。在NC侧,CNC向PLC发送M,S,T等辅助功能代码信息;PLC将M, S, T命令的应答信号回送给CNC,并且控制CNC设置各坐标的机床基准点。在机床侧,PLC向机床传送控制机床执行的信号,机床将其操作面板上开关、按钮信号等传送给PLC。以前,需要根据数控机床的控制要求来分析PLC与CNC及PLC与机床之间的信息交互种类和信息交互量,然后选用相应的外部硬件PLC,或者在系统设计时将硬件PLC嵌入到NC硬件中口这种方法突出的缺点是开放性差,设计一旦定型就很难更改。

      随着计算机及相关技术的发展,使用工业PC机、基于开放式结构已成为数控系统发展的主要方向。与这种情况相适应,基于PC平台的嵌入式软件PLC由于无需专门的编程器,可以充分利用PC机的软硬件资源,直接采用梯形图或语言编程,具有良好的人机界面等优点,在数控系统中正逐渐取代硬件PLC成为该领域辅助功能控制的新方法。

      本文讨论我们开发的开放式数控系统中所采用的软PLC技术。PLC功能在我们的数控系统中作为一个子系统得以实现,该子系统支持梯形图和语言两种编程方式,梯形图和语言之间可通过一个通用数据结构进行相互转换,同时这个通用数据结构也是PLC执行模块的输入。目前该子系统支持30个国际通用的PLC基本指令和功能指令,能满足绝大多数PLC应用的需求。

    1 软件PLC系统的结构

      在数控系统开放性要求越来越高的今天,硬件PLC的缺点越来越突出,主要表现在:

      兼容性差:生产厂家众多,各种机型互不兼容,没有统一的标准,在编程元件的种类、数目、编程语言等方面各不相同;

      封闭、扩展能力差:产品的功能实现有赖于硬件,数据结构相对封闭,用户难以改变或增添PLC的功能;

      对使用者的素质要求高:现行的PLC产品,其编程方式要求使用者对PLC的硬件结构、PLC电气原理、编程指令均要有相当的了解,不利于PLC的进一步推广使用;

      可维护性差:当PLC出现故障时,需由专业人员用专用工具检测硬件,再维修硬件;

      成本较高。

      为了解决目前数控机床和数控系统中PLC存在的问题,我们在基于Wintlows2000的开放式数控系统开发中对软件PLC进行了研究和开发口开发原则是体现开放式数控系统的要求,采用统一的数据结构和开放的外部接口,PLC控制功能的完成不依赖于具体的硬件,编程元件的数目、种类可根据需要动态添加,无需更改硬件,降低PLC编程进门门槛,降低整个数控系统的成本。

      1.1 软件PLC的结构

      基于Winoows2000的开放式数控系统软件在物理上可划分为在计算机CPU上运行的上位机部分和在运动控制卡DSP处理器上运行的下位机部分。因此PLC子系统也可分为上、下位机两大部分,上位机又可分为离线的PLC程序编辑部分和在线的PLC执行人机界面部分,其结构如图3所示。

      上位机离线部分主要完成PLC梯形图编程、语言编程、梯形图程序语法检查、梯形图程序逻辑检查、语言程序语法检查、语言程序逻辑检查、梯形图程序与通用数据结构双向转换、语言程序与通用数据结构双向转换;上位机在线执行部分通过人机界面控制和反馈下位机对PLC程序的执行;PLC程序的具体执行由下位机在线处理。其中:

    图1 软PLC结构图

      梯形图和语言编程模块在Windows2000环境下负责离线PLC图形化和语言化编程;

      梯形图程序语法检查模块检查用户PLC图形程序有无

      指令标记重复、指令地址越界等语法错误;

      梯形图程序逻辑检查模块检查PLC图形程序有无逻辑错误,如指令位置不正确、梯级中缺少输出指令等;

      语言程序语法检查模块检查用户语句程序有无拼写、指令格式、指令地址越界等语法错误;

      语言程序逻辑检查模块检查语句表程序是否存在逻辑错误,如RD X2.0AND. STK就是错误指令段,因为AND.STK操作需要堆栈中至少有两个有效位,若将该指令段改为RDX2.0RD X2.1AND. STK其逻辑就正确了,同理,指令段RnR2.0RD X2.1AND. STKG1.2SUB9PRM2也是错误的PLC指令段,因为COM指令只需要一个控制条件,而该指令段有两个控制条件;

      梯形图与通用数据结构双向转换模块对梯形图程序解释得到一个通用的数据结构,从这个通用数据结构反过来也可得到梯形图程序;

      语言程序与通用数据结构双向转换模块对语言程序解释得到一个通用的数据结构,从这个通用数据结构反过来也可得到语言程序;

      PLC执行模块在实时多任务环境下实现在线PLC功能。

      通过通用数据结构的衔接,实现了梯形图程序和语言程序的双向转换,而且这个通用数据结构也是PLC执行模块的输入。

      1.2 软件PLC白勺特点

      相对于硬件PLC来说,软件PLC具有下述特点:

      (1)传统PLC的功能以应用软件的形式实现。软件PLC实际上就是传统PLC的功能以应用软件的形式实现,这是软件数控的表现形式,也是开放式数控系统的要求。软件数控可以认为是开放式数控的高级阶段,软件数控的主要特性表现在两个方面:一是高度开放的体系结构;二是应用软件的表现形式,即系统的主要功能部件均表现为应用软件的形式。软件化可大大增强了系统的伸缩性和可调节性,从而使其体系结构实现高度开放性成为可能。

      (2)易于实现与硬件无关性要求口软PLC控制功能的完成不依赖于具体的硬件,不存在机型不兼容问题;编程软元件的数目、种类可根据需要动态添加,无需更改硬件。

      (3)统一的数据结构易于实现深度的系统开放。由于采用统一的数据结构,对特定机床,只需编写相应的梯形图程序或语句程序,不必另加硬件或另外重新设计软件,这简化了PLC的使用,使数控系统有可能向深度方向开放。这种灵活的实现机制有望大幅度提升数控系统的控制性能,促使数控系统的智能化时代早日到来。

      (4)方便用户使用。由于在Windows2000图形化界面下完成用户梯形图或语言程序编制,并可实现梯形图和语言的相互转化,降低了PLC编程进门门槛。

      (5)成本低口PLC的控制功能由软件完成,这种实现形式上的变革使得系统可以更方便、更广泛地应用计算机技术的先进成果,简化系统实现难度,缩短研发周期,有助于技术创新,可相应降低整个数控系统的成本。

    2 PLC程序图形化编程环境的实现和梯形图与语言的转换

      2.1 PLC程序图形化编程环境的实现

      PLC图形编程环境采用双向链表数据结构描述和记录屏幕编辑位置的状态。该链表的数据结构如下:以梯形图每行的头指针作为链表的一个节点,每个节点指向一个动态数组,动态数组的每一元素中存储的是特定行的梯形图元素。PLC有2类指令:基本指令和功能指令。基本指令共12个,完成简单的“与”、“或”等基本逻辑运算;功能指令共24个,实现定时、记数、译码、加、减、乘、除等复杂功能口单个梯形图元素的数据结构为:

      2.3 语言程序转换为梯形图程序的算法

      语言程序转换为对应梯形图程序的算法如下:

      (1)读取一条PL.C.指令,若为指令结束标志则转(6)口若为RD,RD. NOT等建立新梯级指令则转(2):若为AND, AND用.NOT或OR , OR .NOT或RTI.STK, RD.NOT. DTK或TMR01、SUB5等增加梯形图的列或行的指令则转(3);若为DR.STK,AND.STK等块并联指令则转(4):

      (2)添加一新数组元素,根据当前指令和上一梯级最大行值填写该数组元素的数据域;

      (3)添加一新数组元素,根据当前指令和前一数组元素数据域信息填写新数组元素的数据域;

      (4)添加一新数组元素,根据因DR.STK、AND.STK增加的数组元素数目修改前一数组元素数据域的连接方式,然后删掉因OR.STK指令和}AND.STK指令增加的数组元素;

      (5)转(1);
      (6)按动态数组各元素数据域的信息绘制梯形图。

      此算法稍作修改就可作为梯形图程序向语言程序转换的算法:此时指令结束标志、建立新梯级指令、行或列增加指令、块并联中表示连接方式的DR.STK, AND.STK指令等均表现为相应的梯形图符号口

    3 PLC程序的执行

      数控系统中的PLC根据所处理机床事件的实时性要求,可划分为高级PLC和低级PLC。前者主要处理急停、超程、循环启动、进给保持等实时性要求较高的事件,后者处理机床控制面板输入和辅助功能M、S、T)等实时性要求较低事件。

      对每一个PLC指令,都需要编写好其对应的执行函数,建立函数地址表口当PLC程序执行时,查询指令链表并从函数地址表中调用执行函数。

      3.1 PLC程序在内存中存储的数据结构

      上位机PLC程序在内存中的表示使用了动态数组,这样可以将PLC程序直接存储为相应的文件,以便将来的修改等操作。对下位机而言,一个好的数据结构对提高系统的执行效率是非常关键的,特别是对数控系统这种具有较高实时性要求的系统更是如此,而由于下位机不是在Windows2000下运行,因此需要对上位机数据结构作较小的转换。考察PLC指令系统发现:基本上每个功能指令前面都有一个或几个基本指令作为控制指令,对于没有控制指令的功能指令,可为其增加一空操作(NOP)指令作为控制指令,这样就可利用每一个功能指令与它的最后一个基本控制指令,将功能指令同基本指令联系起来,即用图2所示的链表结构来实现PLC程序在内存中的存储。

      该链表的数据结构如下:


      3.2 PLC程序的执行算法

      PLC的执行如图2所示:当某级PLC程序被调用时,头指针指向基本指令链表的表头,然后沿链表往后移动并执行相应的指令,一直到该级PLC链表的结尾为止。在执行过程中,当某一基本指令链接有功能指令时,即基本指令为功能指令的最后一个控制条件时执行该功能指令口当功能指令执行完后,返回到基本指令并执行下一个基本指令。在PLC执行过程中,各指令逻辑操作的结果暂存于“堆栈寄存器”中,同时各指令也从“堆栈寄存器”中获取中间结果参与逻辑运算口所谓“堆栈寄存器”是一个16位的内存区,所涉及的“移位”,“与”,“或”等基本逻辑操作是用C语言的相应逻辑运算来实现的。

      PLC执行程序的具体算法可用伪代码表示如下:

    4 PLC程序编辑和转换实例

      编辑PLC梯形图程序时,只需用鼠标单击窗口左侧工具栏中的图标,在左窗口的相应位置即可白动画出需要的梯形图元素口通过双击已画出的梯形图元素,可弹出对话框。在对话框的标记栏和地址栏中可分别输入该元素的标识和地址,如W1和Y1.0;在对话框的参数栏中可输入参数,如20和R30整个梯形图编辑过程非常直观、简单。通过点击程序生成菜单中的语句生成生成子菜单,可实现梯形图程序向语句程序的转换,如图3。编辑PLC语言程序时,可在右窗口输入PLC指令,如RD X7.0口同理点击程序生成菜单中的梯图生成子菜单,可将右边的语言程序转换成左边的梯形图程序。

    图2 PLC编辑界面

    5 结束语

      本文提出的内嵌式软PLC在基于Windows2000的开放式数控系统中的实现方法体现了数控系统的开放性要求,易于实现与硬件无关性要求,统一的数据结构易于实现深度的系统开放,方便的编程环境、灵活的编程方式可降低PLC编程进门门槛,方便用户使用,另外该方法降低了系统成本。

    (审核编辑: 沧海一土)