数控系统中内嵌式PLC编程软件的实现

来源:互联网

点击:1201

A+ A-

所属频道:新闻中心

关键词:数控系统 内嵌式PLC

      内嵌式可编程控制器(embedued PLC)具有结构紧凑、成本低廉等优点,在中小型数控系统中得到了广泛的应用,但也存在通用性不高、扩充性不强以及对用户透明度较差等问题。本文根据其工作原理,用C语言建立了内嵌式PLC的集成编程环境,使这些问题得到了较好的解决。

    1 编程软件的功能和数据流向

      编程软件的主要功能是在I/O接口卡和伺服控制卡等硬件平台上针对不同的数控系统来完成内嵌式PLC的软件编程任务。在编程软件的主界面中,有’‘输人定义”、‘’输出定义”、“中间变量”、“参数设置”、“系统组成”、“梯形图”、“系统退出”等功能项,其中“输人定义”和“输出定义”用来定义输人信号和输出信号;“中间变量”用来定义PLC逻辑程序中用到的内部变量;“参数设置卜,用来设定数控系统所用到的一些参数;“系统组成‘’的功能是把已经定义过的输人信号、输出信号、中间变量以及系统的参数根据所设计的数控系统的大小有选择地组合在一起,并根据输人/输出点数的多少建立映射区川,形成一个名字为PLC. H的磁盘文件,供其他程序调用;“梯形图”选项用来对梯形图进行编辑和编译,形成数控系统能够识别的代码在本系统中,该代码是一个名字为CPLC.C的C语言程序。该程序能被数控程序或仿形数字化程序调用,经过和PLC的函数库连接形成一个完整的可执行文件。编程软件的数据流向如图1所示。

    2 信号定义

      在编程软件的主界面中选择“输人定义”,其下拉式菜单有两个子功能“新建”和“打开”。“新建”就是对一块输人卡上的32路输人信号进行定义,此时屏幕上会给出提示信息,让用户键人输人卡的基地址,基地址的范围在000H-3FFH之间,并且不能与系统所占用的地址以及已经定义过的输人卡的地址相冲突,例如,用户键人的基地址为330贝y在屏幕上从上到下顺序排列出该输人卜上的4个口地址330.331,332,333,每个口地址对应8路输人信号,用户可以对这些信号进行定义,信号定义完成后,按压F2键,则该输人卡的信号以330.adr文件名存于硬盘上。“打开”是用来对已经定义过的一块输人卡的信号从硬盘上调出并显示在屏幕上以便用户查阅和修改。用同样的方法在“输出定义’‘中可以完成输出信号的定义,

    3 梯形图的编辑和双向链表的存储结构

      编程软件的“梯形图”选项用来进行梯形图的编辑和编译。本系统将梯形图的基本符号如动合触点、动断触点等归纳成14种基本图素,图素代号为“A”-“N”,排列在屏幕右侧,供操作者选择。屏幕左侧为梯形图编辑窗口,光标可在该窗口内全屏幕搜索定位。梯形图的每行可编辑9列图素操作者只需移动浅绿色的光标块到合适的位置然后在此光标块上分别键人需要输人的图素代码和该图素代码所对应的信号代码,即可存该位置画出相应的梯形图符号,并标有信号代码。梯形图的编辑有全中文界面和帮助信息,可吏现的功能主要有:梯形图文件存盘、装载;图素的绘制、插入、删除;图形浏览;梯形图整行的插入、删除;错误检测;梯形图编译等。由于梯形图的行数是不能预知的,因此,对梯形图的编辑采用动态数据存储,以双向链表数据结构来记录梯形图的所有信息,把梯形图的每行作为一个链结,其结构如下:

      其中,BLOCK blk[9]为结构体数组,每一项顺序记录着从第1列到第9列的基本图素信息,其第9列限定为输出项,BLOCK的结构如F:

      对梯形图的编辑可以通过对结构体LDA的前后项指针*prior和*next来进行,如图2所示。

    图2梯形图双向链表数据结构图

      双向链表结构存放在内存的堆中,所占用的内存空间在程序运行期间可以动态地变化。用两个全局指针变量LAD*listhead和LAD*lisitail分别指向双向链表的链头和链尾,用全局性指针变量LAD*info来指向正在编辑的链结一般情况下,一个完整的梯形图不可能在一个屏幕内全部显示出来,而只能以屏幕为单位一屏一屏地显示(本系统一屏幕显示10行),因此用fistlin来记录屏幕当前显示的梯形图起始行,用rellin表示光标块所在行在当前屏幕卜的位置,如果rellin >10或rellin < 1,则把当前屏幕的内容更换整个梯形图通过LAD的前项指针*prior和后项指针*nex。按照行号顺序链结在一起。这样,对梯形图的各种操作,如修改、删除、插人等就转化为对双向链表的相应操作,例如删除梯形图的某行,实际卜就是把内存中的梯形图双向链表的链结删除掉,并且这西操作均可用结构体指针的运算来实现。由于双向链表的每个链结都具有向前和向后的指针,既可向前查找,也能向后访间,因此各类操作十分灵活方便。

    4 梯形图的编译

      编辑好的梯形图,根据其双向链表中的图素代号和信号代码,可形成各种逻辑关系。利用编译程序、把这种逻辑关系编译成C程序困,以便嵌入到同样用C语言编制的数控程序或仿形数字化程序中,完成机床的顺序控制。在梯形图编译时按照梯形图的梯级顺序进行,编译过程中要进行语法检查,主要是检查所编译的梯形图足否钶台规定的格式,如果梯形目不符合格式要求,则会给出错误信启,同时,在编译过程中还要枝验梯形嘲中的信号代码与信号定义模块PLC。H中所定义的信号是否~致,如果不一致,则提示该信号代码未定义。用户通过查看编译过程中所给出的错误信息,进行相应的修改,直到没有错误为止。梯形图编译程序的流程图如图3所示。

    图3梯形围编译程序流程圈

    5 结束语

      该编程软件简化了采用常规方法时要根据系统不同的硬件配置从底层进行设计的繁琐步骤,缩短了设计周期,提高丁工作效率。从其在&ldquo;数控仿形铣床&rdquo;研制过程中的使用情况来看,取得了令人满意的效果,为系统的设计、安装和调试带来了极大的便利。

    (审核编辑: Doris)

    声明:除特别说明之外,新闻内容及图片均来自网络及各大主流媒体。版权归原作者所有。如认为内容侵权,请联系我们删除。