内嵌式可编程控制器(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: