大连理工大学本科论文 下载本文

现场总线控制系统功能块组态软件设计

在一个网络回路中,所有的功能块连接情况可以分为以下几种情况: (1) 一个功能块连接一个单输入端功能块,如图:

图3-13 连接形式1

(2) 多个功能块连接一个多输入端的功能块,如图:

图3-14 连接形式2 (3) 一个功能块连接多个功能块,如图:

图3-15 连接形式3 在给出功能块的执行顺序规则之前,给出几个概念,

(1) 首功能块:首功能块是指在整个回路中输入端没有连线的功能块。

(2) 执行焦点:执行焦点是指当前需要分析的功能块。分析的方法由规则提供。 经过研究功能块程序的执行顺序有如下几条规则:

(1)获得执行焦点的功能块首先检查它的所有输入端都获得了信号,如果没有,则将连接其输入端的所有功能块放入堆栈1,放入的顺序是靠右下的优先放入堆栈。 如果输入端都获得了信号,就执行自己且出栈。如果输出端有连线则将与其输出连接的功能块放入队列,放入的顺序是靠左上的优先入堆栈2。 (2) 第一个获得运算焦点功能块一定是首功能块中最上面的。

(3) 执行焦点的转移顺序是如果堆栈不空,则将运算焦点传递给栈顶元素,如果堆

–36–

现场总线控制系统功能块组态软件设计

栈空了则将运算焦点传递给堆栈2的栈顶元素。 (4) 所有功能块执行一遍后结束。

(5) 总体的执行顺序是从左到右,从上到下。 例如下面的一个形式比较复杂的功能块网络,如图:

图3-16 功能块网络

根据规则分析如下:本网络中有两个首功能块,是1和2,1所在网络比2位置高,所以1获得执行焦点,1的输入端都有信号,所以执行1,1的输出有连线,将3放入堆栈2中,这是堆栈1空,堆栈2中有一个3,3出栈获得执行焦点,以此类推,3进栈1,2进栈1,执行2,3,4,5进堆栈2,执行3,6进堆栈2,6出栈2,6进栈1,5进栈1,4进栈1,执行4,执行5,执行6。最后的执行顺序和标号是一致的。

可以按照上述的规律写成一个功能块排序的算法,排序算法的研究如下:

通过观察,一个功能块回路可以抽象成一个有向无环图。其中功能块是图中的结点,连接线是图中的边,为了方便,只要研究出功能块对应的图在规则下的算法,就等于得到了功能块排序的算法。从功能块的执行规则来看,这种排序算法是一个特殊的拓扑排序。

在分析算法前,要确定图的存储形式,通过研究发现使用相邻矩阵最方便代码的实现,邻接矩阵定义如下:

若G是一个具有n个顶点的图,则G的相邻矩阵是如下定义的n*n矩阵: A[i,j]= 1 ,若是图G的边 A[i,j]=0, 若不是图G的边

例如图3-10的功能块可以形成一个有向无环的图结构,其中每个结点都是有权值的,值的信息是功能块在网络中的位置,以便在入队入栈排序时确定顺序。

–37–

现场总线控制系统功能块组态软件设计

1 2 3 4 5 6

图3-17 有向无环图 图的相邻矩阵为:

0 0 0 0 0 0

1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 通过观察可知,可以从矩阵中方便的获得一些功能块的连接情况,矩阵中列全部为零的是首功能块,查看与某功能块输入端连接的功能块可以遍历功能块标号对应的列,其中值为1的元素的行坐标就是与此功能块输入端有连接的功能块标号,同理,可以查看与某功能块输出端连接的功能块。当某个功能块执行后将它所对应的行清零。 模拟功能块排序的算法程序是对一个矩阵及附加的一个队列和个堆栈的操作,操作的方法就是功能块的执行规律。第一个获得执行焦点的是最靠左上方的首功能块,然后依据执行规律执行下去。给出功能块排序算法前,定义一个结构体,它模拟的是功能块,包含了功能块在网络中的位置信息,还包含一个编号信息,对应作数组中的坐标。

typedef struct node{ //结点的结构体 int number; //结点编号

int row; //代表功能块所在的行 int col; //代表功能块所在的列

–38–

现场总线控制系统功能块组态软件设计

}Node;

功能块排序算法流程如图3-18.

根据上述算法每个功能块网络对功能块排序后保存到一个链表中,然后功能块的编译程序将每个功能块编译转化为二进制的形式,顺序保存到一个.bin文件中,每个网络对应一个.bin文件,通过通讯模块下载到下位机中去。

3.3 本章小结

本章详细介绍了PLC_Config可视化功能块编辑和编译程序的设计和实现,这部分是组态软件的重要部分,通过MFC的文档视图结构设计实现的编辑模块提供了友好方便的操作界面,用户可以方便操作进行功能块的编程,编译程序将用户编辑功能块程序转化为一个可由下位机识别的数据结构,供下位机程序使用执行。在整个组态的过程中起到了连接用户与PLC的桥梁作用。

–39–