回复:FB的参数虚实机制与FC有何不同?

东方红一红

版主 西门子1847工业学习平台

  • 帖子

    6798
  • 精华

    50
  • 被关注

    144

论坛等级:至圣

注册时间:2003-07-12

钻石 钻石 如何晋级?

发布于 2013-03-11 08:44:38

4楼

问题出现在这个不起眼的地方。

FUNCTION_BLOCK 179
VAR_INPUT
IBAddrStartInBuffer : INT ;
END_VAR
VAR_OUTPUT
IntelligentSwitchAddr : INT ;
BeltCarrierNum : INT ;
SensorType : INT ;
FaultCode : INT ;
CheckSum : BYTE ;
END_VAR
BEGIN
NETWORK

L P#0.0;
LAR1 ;
L P##Byte01_STX1;
LAR2 ;
L #IBAddrStartInBuffer;
T MW100

END_FUNCTION_BLOCK

OB1里的调用是
CALL FB179,DB179
IBAddrStartInBuffer :=11
IntelligentSwitchAddr:=MW100
BeltCarrierNum :=MW102
SensorType :=MW104
FaultCode :=MW106
发现FB179里“L #IBAddrStartInBuffer”的得数不是11。

而在FC的情况如下:
FUNCTION 179:VIOD
VAR_INPUT
IBAddrStartInBuffer : INT ;
END_VAR
VAR_OUTPUT
IntelligentSwitchAddr : INT ;
BeltCarrierNum : INT ;
SensorType : INT ;
FaultCode : INT ;
CheckSum : BYTE ;
END_VAR
BEGIN
NETWORK

L P#0.0;
LAR1 ;
L P##Byte01_STX1;
LAR2 ;
L #IBAddrStartInBuffer;
T MW100
END_FUNCTION_BLOCK

OB1里的调用是
CALL FC179
IBAddrStartInBuffer :=11
IntelligentSwitchAddr:=MW100
BeltCarrierNum :=MW102
SensorType :=MW104
FaultCode :=MW106
此时在FC179里“L #IBAddrStartInBuffer”的得数就是11。

开始没注意到AR2的引用会有如此影响,所以前面发帖时省略了AR的访问语句。偶然进行其他操作,从系统提示信息里得知AR2的应用会影响FB的local variable的传递。才知道问题出在这里。但内部原理还待高手分解。
知其道,用其妙!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54773条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。