TIA Portal中当使用 HMI 变量作为块输入输出参数时
发布时间:2024-11-26
在 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 块就可以随意使用你的程序。
展开全文
其他新闻
- 德国技术工人凭什么终身不换东家呢? 2024-11-26
- 新型PLC蠕虫病毒及应对策略 2024-11-26
- S7-200 SMART PID参数整定的仿真实验 2024-11-26
- 我与模拟量的故事 2024-11-26
- Win10下如何安装step7 2024-11-26
- 说说WINCC与串口通讯 2 2024-11-26
- 说说WINCC与串口通讯 2024-11-26
- MAC地址 2024-11-26
- GSD文件 2024-11-26
- Step7里怎样设置断点调试 2024-11-26