寻找STEP7不能生成多重背景的原因
时间:2023-03-19来源:佚名
我们有时需要多次调用某些功能块,每次调用都需要生成一个背景数据块,但是这些背景数据块中的变量又很少,这样在项目中就出现了大量的背景数据块“碎片”。在用户程序中使用多重背景可以减少背景数据块的数量。 S7-1200的定时器和计数器都是功能块,使用它们时也需要指定背景数据块。S7-1200也能使用多重背景。 《S7-300/400 plc应用技术》的“发动机控制”例程中,用FB1控制汽油机和柴油机,分别使用了背景数据块DB1和DB2。在例程“多重背景”的FB10的变量声明表中声明数据类型为FB 1的两个静态变量,它们就是所谓的多重背景。它们具有FB1的全部属性,包括程序和局部变量,它们的数据存储在FB10的背景数据块DB10中。因此使用多重背景可将多次调用FB1的背景数据存放在FB10的背景数据块中。 有个读者在学习多重背景的时候问我:“我按书中做的例子中,就是汽油机和柴油机控制的例子,在FB10中定义静态变量时,变量的数据类型为FB1,定义后变为它的符号“发动机控制”,为什么这几个字是红色的??” 他同时把有问题的项目文件发给我。 图1: 打开他发来的项目,发现FB10的属性有问题。 下面是我的回答:“这几个字为红色表示定义的这个静态变量有问题。在管理器里用右键点击FB10,执行出现的快捷菜单中的“属性”命令,在“属性”对话框可以看到“无多实例能力”(无多重背景功能)。” 图2: 为了解决这个问题,在生成FB10的时候一定要选中“多重背景功能”多选框。 图3: 用邮件把上述回答发给了他,他来邮件说按我的建议重新生成有多重背景功能的FB10后,还是不能生成数据类型为FB1的静态变量。他把修改后的项目发给了我。 经检查我发现他生成的FB1也没有多重背景功能,问题可能就出在这里。重新生成有多重背景功能的FB1后,就可以在FB10中生成数据类型为FB1的多重背景了。 最后可以得出结论:为了使用多重背景,有关的功能块(FB1和FB10)都必须设置为有多重背景功能! 过去我是这样做的,但是因为做得很顺利,没有发现这个规则。“失败是成功之母”,我们的经验是在遇到问题和解决问题的过程中积累起来的,这是成为高手的必由之路,但是还必须善于总结经验教训,不然下一次又会犯同样的错误。 最后介绍一个STEP7帮助提供的诀窍: 如果没有创建具有多重背景功能的功能块,而又希望该功能块具有这种属性,可以根据功能块生成一个源文件,随后删除其中的块属性CODE_VERSION1,重新对功能块进行编译,该功能块就有多重背景功能了。 |