一篇文章带你学会PLC配方功能的编程方法
在生产中我们的一台设备往往需要 对应很多种不同工艺或不同尺寸的设备,这就要求我们设备的参数需要经常变化。我们将每一种产品对应的参数保存起来,下一次再生产同种产品时可以迅速一键调用,而不是一个一个的去设置,这种功能就叫做配方(Recipe)
首先来一张图,简单说明一下配方的基本原理

在这张图里,我们创造了一个简单的配方结构。地址区分成3块,前台正在使用的、缓冲区和后台数据库。
下面分配一下具体的地址,我将使用三菱PLC示范

先来讲保存功能,就是将当前配方参数存储到数据库里
首先要确定存储在哪个配方中,如果是配方1,那我们直接使用BMOV D0 D20 K5就可以,如果是存到配方2呢?如果存到配方999呢?很显然,我们不能简单地使用绝对地址去操作,必须引入变址操作,如下图

这里我们引入了另一个变量D6"配方存储位置",根据D6中的值去判断保存到数据库的首地址。
在上面的BMOV D0 D20Z0 K5中,D0是当前配方的起始地址,不受保存配方号的影响,D20由于受到保存配方号的影响,因此是会变化的,例如保存配方号为2的时候,D20就要变成D25。最后的K5代表每个配方的参数量,也是不会变化的。
保存操作就是这样了,非常的简单。相信看到这里一些机智的小伙伴已经明白了配方功能的精髓了,就是对数据库中首地址的变址寻址
载入的操作呢其实也是同理,只不过把BMOV的两个参数倒过来了。不过UP主在实际的使用中发现过一些问题,比如设备正在用当前的参数进行生产,这时候想去查看一下别的配方的参数,这时候如果停机切换配方就会影响到生产。因此我们引入了一个缓冲区,就想最上面那张图一样,我们将载入操作分为两步。第一步将数据库的配方读出到缓冲区,这个缓冲区可以在触摸屏上进行展示;第二步将缓冲区的数据再写入到当前配方。
如果的确是想切换配方,那就第一步和第二步都执行。如果只想看看配方的数据,那么至执行第一步,也不会对当前的生产产生任何影响。

如上图所示,也是很简单。
当然了,Up这里只是列举了一个很简单的例子,在实际的编程中还是需要增加一些其他的卡控,例如配方号值的限制,或者操作的互锁等。大家可以根据自己设备的情况自行把程序写一下,然后模拟测试,写出一套属于自己的模板