理论教育 程序编写之使用功能块和函数

程序编写之使用功能块和函数

时间:2023-07-01 理论教育 版权反馈
【摘要】:对可以按国际标准编程的新一代PLC,多模块组织最好的方法是使用新(自)建的程序(块)、函数或功能块。如和利时PLC,其程序(块)、函数及功能块可以在PowerPro“对象组织器”的“程序”窗口上添加。用了功能块或函数后,上述的几个“谁”就好处理了。而如今PLC的档次提高了,用户程序则可以利用生成及调用程序、函数、功能块进行多模块组织了。

程序编写之使用功能块和函数

对可以按国际标准编程的新一代PLC,多模块组织最好的方法是使用新(自)建的程序(块)、函数或功能块。这点与计算机用汇编语言使用子程序、宏去实现程序模块化完全相同。如和利时PLC,其程序(块)、函数及功能块可以在PowerPro“对象组织器”的“程序”窗口上添加。

这里还要强调两点:

一是程序(块)、函数及功能块的调用是可以嵌套的(即程序还可以调用其他程序、函数及功能块。功能块可以调用函数及其他功能块。函数可以调用其他函数)只是不能直接或间接地调用自身,即不能递归调用。

二是程序可分成两种:仅一次调用的,称为专用块,它仅起到划分模块的作用;要多次调用的,称之为标准块。两种模块的编程是不同的。

第一种模块编程较简单,可以直接对指定地址进行编程,无须转换。其编程如同正常的编程,该怎么编就怎么编。

第二种模块编程要复杂一些。因为要多次被调用,所以首先要弄清每次是“谁”调用的,要对这个“谁”进行识别。识别之后,要依“谁”的特点,把与这个“谁”相关的逻辑量或模拟量的值读入,再进行有关逻辑处理或数据处理。最后再把结果赋值给与这个“谁”相关的变量

对于这第二种情况,最好用功能块(如果有多个控制输出)或函数(如果仅有1个控制输出),而不用程序。这也是类似PowerPro编程软件的优点。用了功能块或函数后,上述的几个“谁”就好处理了。而且模块间的通信(数据交换),也不必都用全局变量解决。还可以节省PLC的内存。

此外还要提及的是,为了便于多模块编程,还要使程序“单元化”。“单元化”是作者在1993年出版《可编程序控制器》一书中提出的技巧编程构思之一。其要点不妨转录如下:

“把整体的输入输出的逻辑关系划分成若干单元,把有关的或关系密切的划在同一单元内,先是逐个单元进行逻辑设计,然后再做全面综合。”

这样构思的好处是:(www.daowen.com)

(1)尽管整体的逻辑变量很多,但是具体到某一单元时,输入输出变量可能就不会那么多了。这对于应用解析法(即本书指的基本逻辑设计法)编程会带来很大的方便。否则,有关、无关的都混在一起,或明明知道某输入与某输出无关,而硬拉在一起,然后再用逻辑分析把它们的关系“化简”掉,也太多此一举了。

(2)单元化可以使输入输出间的逻辑关系变得清晰与简明。这主要因为变量数减少不单是数量的问题,而且“量变还会带来质变”,无关的逻辑关系不存在了,将突出主要的关系。

(3)单元化的构思可进一步把一些功能或输入输出关系相近的单元做些标准化设计,实际系统要用时,移植过来就是了。

单元化构思主要解决两个问题:

(1)电路(指程序,下同)本身的问题。要靠它实现一定的控制功能,或用它反映输入与输出的逻辑关系。

(2)电路的“入出口”的问题。即一个单元电路怎么启用(即调用)?启用并完成工作后怎么离开这个单元,去启用新的单元?

因为当年PLC档次低,还没有POU这样可以把用户程序分为程序、函数、功能块的机制,所以,也只能做这样的构思。

而如今PLC的档次提高了,用户程序则可以利用生成及调用程序、函数、功能块进行多模块组织了。实现上述构思就更容易了。至于上述“电路本身”问题,就是一个生成及调用独立的程序、函数、功能块。而“入出口”问题,就是这些程序、函数、功能块的调用,使用相关指令就可以了。至于模块间的数据交换:对程序,可用全局变量;对函数、功能块则用定义输入、输出。这两个问题解决起来都比较简单。但要指出的是在进行程序多模块组织时,先进行上述单元化构思还是必要的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈