浔之漫智控技术(上海)有限公司
西门子PLC模块 , CPU模块 , DP通讯电缆 , 6GK交换机
西门子扩展模块6ES7231-0HC22-0XA8
发布时间:2023-10-26

      我们有时需要多次调用某些功能块,每次调用都需要生成一个背景数据块,但是这些背景数据块中的变量又很少,这样在项目中就出现了大量的背景数据块“碎片”。在用户程序中使用多重背景可以减少背景数据块的数量。
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,重新对功能块进行编译,该功能块就有多重背景功能了。

如图,程序循环执行500次,想请问下这样需要多长时间?CPU的扫描周期时间是150ms,有可能超出CPU的监控时间而报故障嘛?CPU扫描一个network1的时间是多少?用的是CPU 315-2DP。

答:1、程序循环执行500次,想请问下这样需要多长时间?
如果CPU的扫描周期时间是150ms,程序循环执行500次,则是150ms X 500的关系。
2、有可能超出CPU的监控时间而报故障嘛?
如果启用了看门狗功能,则报故障。
3、CPU扫描一个network1的时间是多少?用的是CPU 315-2DP。
一个network1的指令数量是可变的,其扫描时间是指令数量的函数。用户不需顾及一条指令、一个程序段的扫描时间。重要的要注意一个周期的扫描时间。可以通过OB1 的临时变量确定其循环周期。
相应的临时变量已存储于 OB1 声明变量部分并各对应不同的局部地址字。

问:用到许多bool变量,是放在V里还是M里呢?

答:V和M基本上功能一样,但是V的内存区域大,所以一般用V存放模拟量数值和运算中间量,而M区域一般用数字量的中间继电用。 
V区的数据具有断电保护功能,M区的数据断电保护范围需要设置过 v区比较大,而且掉电可以保存,其他功能和m差不多


1、V和M没有变质的区别,地位几乎可以互换;

2、V多而M少。M少可以使指令码短,存贮和执行效率提高。

3、M有规定的一些使用,比如MB0-MB13如设为保持的话,在断电时是直接写eeprom的,属**型保持,除此之外的保持是临时的由超级电容或电池保持的。

4、V容量大,使用V比使用M指令代码要长,当然时间上也费一些。同样的V区,我发现也有分区的情况,V0-V511是一块,相应的指令代码就比V512以上的要短,但是执行时间上是否有区别,没有考证。所以经常使用的V变量,应放在V511之前,可以缩短指令代码的长度。

5、V和M由于符号上的区别,习惯上把它们的用途作一些分类,比如M主要用来作位变量,这样程序的可读性就更大


展开全文
优质商家推荐 拨打电话