4 梯形图主要功能实现
4.1梯形图符号的输入和编辑
该梯形图编辑器采用软键盘按菜单梯形图编辑器[1-4]工 具绘制相应的图形符号,具有增加、删除、修改等功能,操作方便。操作者在使用时,只需移动到合适的位置,然后用键盘按相应的梯形图符号,即可在该位置画出 该符号,并可以标注编号。将作图窗口划分成一定间隔的行与列,使插入的图形符号只能定位在网格点上。这既不影响梯形图编辑的直观性,又使解释程序易于实现。
4.2 梯形图符号的存储和提取
每个梯形图符号是一幅位图,我们存储每幅位图的类型、位置、文本显示信息等。提取时仍按照原 来的顺序绘制各幅位图。由于梯形图的行数是不能预知的,因此,对梯形图的编辑采用动态数据存储,以双向链表数据结构来记录梯形图的所有信息。由于双向链表的每个链结都具有向前和向后的指针,既能向前查找,又可向后访问,因此各类操作十分灵活方便。
4.3 语法检查
主要检查所绘制的 梯形图是否符合规定的格式,如果梯形图不符合格式要求,则会给出错误信息。首先对存储好的文件进行逐行扫描,看支路是否有输出,如有则指出错误,没有则继 续扫描;继续检查编号是否为X、Y、R、T等事先规定好的字母,如不是则指出错误,正确则继续扫描;然后看编号后面是否为数字,是则正确,检查数字是否小 于127,是则语法检查成功,不是则报警。
4.4 逻辑检查
由于在编辑梯形图时,存储的是行与行之间的顺序以及每行中各元素的信 息,并没有存储各个元素间的逻辑关系,所以检查比较困难。我们采用先把梯形图转换成语句表的方法来达到目的。本文提出了以二叉树为中心的转换方法。二叉树的特点:一个父结点有且只有两个子结点。这种数据结构用来表示逻辑关系很方便。梯形图中有序排列的阶梯,可以表示成若干有序排列的二叉树森林,通过对每棵 二叉树设计遍历算法,可以唯一地得到相应指令集。
5 语句表主要功能设计与实现
5.1 MMC 部分主程序的设计原理
MMC 部分主程序采用的是主循环的总体结构,每隔大致30ms 就对各子程序模块扫描执行一次。而每一模式下的子程序又包括向键任务子程序和无键任务子程序,在主程序的每一扫描周期中,有键值输入的情况下,则运行相应的向键任务子程序,如果没有输入键值,则运行相应的无键任务子程序。在每一次循环之前,先进行模式的检查,如果当前模式已经改变,则把相应模式的子程序调 入前台执行,而把在这之前运行的前台程序转入后台继续执行。
5.2 设计原理
MMC 部分main 主程序采用定周期循环读取键值的处理方式,当遇到某一中断,首先对其合法化进行判断,在其合法的情况下,将其中断子程序从后台转移至前台执行并显示之。所以,全屏幕编辑子程序采用每一个循环周期接收一个字符或一个控制指令并执行之的思路。
5.2.1 指令的输入处理
考虑到编辑器应 能适应顺序输入语句表程序以及进行程序段中间某部分的修改两种情况,每输入一个指令时首先应对其合法性进行检查判断,合法的情况下,首先应将当前位置后面的所有字符后移一位,然后在当前位置处依次、前后相连地把该指令字符存放在一缓存里。在存入缓存的同时将其显示在监视器上,监视器采用的是800×600 的LCD,其普通字符模式下显示参数为50×18。字符和数字输入的算法如图4 所示。
图 4 输入流程图
5.2.2 确认键的输入处理
(1)编辑功能。当一PLC 语句表程序段编辑完以后必须按下确认键才能进行下一程序段的编辑工作。一旦按下确认键,编辑器需要对该程序段依次进行查错、容错、格式化和规整化一系列处理。语法检查用户语句程序有无拼写、指令格式、指令地址越界等语法错误;语言程序逻辑检查语句表程序是否存在逻辑错误。
(2)检错功能。开发 系统在将PLC程序转换为中间代码之前必须先检查PLC程序是否有语法错误。该系统为了方便PLC编程者修改PLC程序,按照梯形图的梯级顺序进行,编译过程中要进行语法检查,主要是检查所编译的梯形图是否符合规定的格式,如果梯形图不符合格式要求,则会给出错误信息,同时,在编译过程中还要校验梯形图中的信号代码与信号定义模块中所定义的信号是否一致,如果不一致,则提示该信号代码未定义。用户通过查看编译过程中所给出的错误信息,进行相应的修改,直到 没有错误为止。
5.2.3 其它功能键的处理
在PLC 编程中为了方便用户进行指令的编辑,还提供了行选择、行复制、行粘贴、字选择、字复制、字粘贴,行号检索等功能。当然在进行屏幕编辑以及上面介绍的所有功能中还会遇到上、下自动移屏显示,这是每个编辑器都应具有的最基本的功能。值得指出的是:在这个编辑系统中,光标总是随着输入自动地指向下一位置处,指导 用户将输入的字符输到当前位置处,光标是不能随便自由地移到屏幕的空格处。并且在行选择和字选择时均以反色形式重新在原位置处对所选内容重新刷新一遍。
6 结束语
本文提出的内嵌式软PLC 编辑器体现了数控系统的开放性要求,易于实现与硬件无关性要求,统一的数据结构易于实现深度的系统开放,方便的编程环境、灵活的编程方式可降低PLC 编程门槛,方便用户使用,另外该方法降低了系统成本。该PLC 编辑器根据输入的离散信息,在内部进行逻辑运算,并完成输入输出控制功能,完全能够满足经济型数控加工中心的要求。