如何在方法实现内部为待返回的返回值赋值?
IEC 61131-3 方法返回值的正确赋值方式
你不需要额外定义VAR_OUT变量来传递方法返回值,这种写法混淆了方法返回值和输出参数的概念。
- 当你声明方法为
METHOD M_MyMethod : BOOL时,符合IEC标准的编程环境(CODESYS、TwinCAT、TIA Portal等)会自动生成一个与方法名完全同名的隐式返回变量,你直接在方法实现内给这个同名变量赋值,方法执行结束后该变量的值就会作为返回值传递给调用方。 - 你之前定义的
bReturnVal属于独立的输出参数,和方法本身的返回值没有关联,调用时必须单独绑定参数才能拿到这个值,无法直接通过方法调用本身获取结果,不符合带返回值方法的常规使用逻辑。
正确代码示例
方法声明
METHOD M_MyMethod : BOOL VAR // 仅需定义方法内部使用的局部变量即可,无需为返回值额外定义VAR_OUT bWhatever : BOOL; END_VAR
方法实现
// 执行方法内部业务逻辑 bWhatever := TRUE; // 此处替换为你实际的逻辑计算结果 // 直接对方法同名变量赋值,即为返回值赋值 M_MyMethod := bWhatever;
补充:部分支持新版IEC标准的编程环境也支持
RETURN关键字直接带返回值的写法,即RETURN bWhatever;,效果和给方法同名变量赋值完全一致,可根据个人编码习惯选择。
使用标准返回值写法后,你可以直接把方法调用作为布尔值使用,比如:
IF M_MyMethod() THEN // 方法返回TRUE时执行的逻辑 END_IF;
不需要额外声明变量接输出参数,这才是带返回值方法的预期使用方式。
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

