1.2 梯形图的编译
(1)矩阵表:梯形图是图像文件,上下左右工整对应,好像是个矩阵。可将所述梯形图节点元素信息的链表里的数据拷贝一份到数组中,并对其进行操作得到真正意义上的矩阵表,这是实现编译和生成. 程序的关键。生成矩阵表用到的数据结构如下:
(2)梯形图的编译:绘制完梯形图后,在运行程序前,先要对梯形图进行编译,检查其中错误。正确的梯形图是转化为正确的C程序并预期输出的关键。
1.3 梯形图转化到C程序文件
本文的主要依靠生成. 程序,实现扫描语言到结构化语言的转化,用以提高82. 运行速度。生成. 程序时,先将矩阵表中各元素的符号地址做替换标志字符“$”,例如常开元素前加“!$”,常闭元素前加“$”,输出元素前加“$”,输出反相元素前加“!$”等。这样在将来进行实际和符号地址的地址替换,生成PLC开发系统可操作的地址文件时,非常方便。此外,考虑到梯形图是以“网络”为基础顺序执行的,一个“网络”不管由多少行组成,它只能有一个输出,故梯形图最终是把并联转化为串联执行的,并且遵循“从下到上,从里而外”的八字原则。所谓“从上到下”,就是处理各网络时从最后一行开始找并联。至于“从里而外”,需先解释“关联类型”。本文采用梯形图并联开始点和结束点之间所包含的元素个数来判断并联类型。如并联开始点和结束点之间只有一个元素,称为单个元素并联;如有两个元素,称为两个元素并联;如并联开始点和结束点之间有n个元素,称为n个元素并联。这样,所谓“从里而外”就是如果网络里存在多种并联,先处理单个元素并联,后处理多个元素的并联。如果一个网络中既有单个元素的并联又有多个元素并联,第一次处理有单个元素的并联,第二次处理两个元素的并联,第n次处理n个元素的并联。经过层层转换,最终会把一个网络变成一个串联机构,相当于梯形图的一行。这样就可针对这行梯形图写出结构化if语句,进而实现整个梯形图到+ 程序文件的转化。要成功编译+ 程序,不仅写出几行正确语句,还须有头文件、主函数min()、以及必要的变量说明和赋值。图1是生成C程序的流程图。本文把这次转化生成的C程序文件称为Csiurse.c,然后根据助记符表文件中实际地址和符号地址的对应关系转换为PLC开发系统操作的地址文件address.c。