加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线15903418770
公司新闻
TIA Portal中当使用 HMI 变量作为块输入输出参数时
发布时间: 2024-04-10 14:22 更新时间: 2024-05-03 07:00

在 PLC 处理调用块期间,HMI 变量可能会改变输入输出参数的值,然而在块调用结束后会覆盖HMI的写操作(当回写时)。

STEP 7 (TIA Portal) 在内部传送数据可以使用指针方式或者复制方式,取决于参数的传送区域和数据类型。

如果数据作为副本传送(值传递),块调用时操作数的值将被复制到被调用块的 Input 参数。例如,FB 的副本是存储在背景数据块,FC 的副本是存储在块堆栈区。

如果使用结构型变量(像数据类型ARRAY,STRUCT,STRING,...)作为块参数,那么 STEP7 是以指针传递数据的(引用传递)。

以下表格对比了两种数据传递方式之间的不同之处。

   

数据作为副本传递(值传递)

数据作为指针传递(引用传递)

块调用时,块使用的是参数的值,并不直接使用参数。块使用参数所指向的内存地址。
写访问只改变副本,而不会改变块中的值。写访问直接改变参数。
*副本需要额外的内存。因为没有副本,所以不需要额外的内存。

*备注
在使用 InOut 参数的情况下,即便副本并没有在块中被修改,在块结束的时候操作数的副本也将写入操作数。这意味着在块运行期间,操作数(或操作数的一部分)的异步改变(通过 HMI 写访问或者更高优先等级的运行系统)将会丢失,因为块被调用后,操作数的值会被覆盖。

补救方法
在共享数据块中定义变量,并且使用共享DB块变量作为块参数。

在 S7-1200/S7-1500 块调用中,被传递的变化的数据存储在 InOut 参数中,那么以上所述内容也会发生。


例子
一个有 “优化的块访问” 选项的功能块,调用一个没有 “优化的块访问” 选项并且包含一个使用 PLC 数据类型作为 InOut 参数的功能块。

备注
不要使用M存储区的原因如下:

  • 由于兼容性的问题,M存储区并没有被优化,所以优化的全局DB比M存储区更好用。

  • 每种控制器的M存储区大小不一样,所以使用共享 DB 块就可以随意使用你的程序。


  • 联系方式

    • 电  话:15915421161
    • 联系人:张经理
    • 手  机:15903418770
    • 微  信:15915421161