You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IEC 61131-3功能块类型变量赋值运算符语义及执行机制问询

IEC 61131-3中功能块赋值的行为解析

先看示例代码:

VAR
   fbA, fbB : TON;
END_VAR
   
// Function Block assignment
fbB := fbA;

赋值操作的本质

在CoDeSys、TwinCAT、Unity这类IEC 61131-3实现中,功能块实例的内存是静态分配的,fbB := fbA这类赋值操作仅会完成内存区域的完整复制:

  • 包含fbA的VAR_INPUT(输入变量)、VAR(内部状态变量)、VAR_OUTPUT(输出变量)的所有成员数据
  • 没有额外的逻辑操作,本质就是把fbA占用的内存字节逐字节(或按结构化成员)拷贝到fbB的内存区域中。

对FB_init()/FB_reinit()/FB_exit()方法的影响

赋值操作不会调用任何FB_init()、FB_reinit()或FB_exit()方法:

  • FB_init()仅在功能块实例首次初始化(比如程序启动时、实例被创建时)触发
  • FB_reinit()用于重初始化实例状态,通常需要显式调用或通过特定系统逻辑触发
  • FB_exit()在实例被销毁时执行(不过多数IEC 61131-3运行时是静态内存模型,很少触发这个方法)
  • 赋值只是单纯的内存拷贝,不属于初始化、重初始化或销毁流程,因此不会触发这些方法。

内容的提问来源于stack exchange,提问作者Hydrargyrum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 05:41:59