四川省西门子授权供应商---西门子变频器德阳市总代理

供应商
广东湘恒智能科技有限公司
认证
西门子PLC
西门子伺服电机
西门子触摸屏
西门子电缆
西门子变频器
西门子模块
联系电话
13510737515
手机号
13185520415
联系人
董海波
所在地
惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房(仅限办公)
更新时间
2024-07-07 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 块就可以随意使用你的程序。

华南西门子总代理,华中西门子总代理,华东西门子总代理,华北西门子总代理,西北西门子总代理

展开全文

我们其他产品
我们的新闻
咨询 在线询价 拨打电话