指针传递参数问题

已锁定

大西瓜

  • 帖子

    25
  • 精华

    0
  • 被关注

    2

论坛等级:游士

注册时间:2009-07-21

普通 普通 如何晋级?

指针传递参数问题

1313

6

2013-12-20 17:00:19

调用FC2如下,输出采用临时变量没问题
FUNCTION FC 2 : VOID
TITLE =
VERSION : 0.1


VAR_INPUT
ADDRESS : INT ;
END_VAR
VAR_OUTPUT
OUT : DWORD ;
END_VAR
VAR_TEMP
ADDRESS_1 : DINT ;
END_VAR
BEGIN
NETWORK
TITLE =

L #ADDRESS;
SLD 3;
T #ADDRESS_1;
L ID [#ADDRESS_1];
T #OUT;

END_FUNCTION

ORGANIZATION_BLOCK OB 1
TITLE = "Main Program Sweep (Cycle)"
VERSION : 0.1


VAR_TEMP
OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
OB1_PRIORITY : BYTE ; //Priority of OB Execution
OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
OB1_RESERVED_1 : BYTE ; //Reserved for system
OB1_RESERVED_2 : BYTE ; //Reserved for system
OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds)
OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started
TEMP0 : DWORD ;
END_VAR
BEGIN
NETWORK
TITLE =

L #OB1_SCAN_1;
L 3;
= "first scan";
CLR ;
= "always 0";
SET ;
= "always 1";

NETWORK
TITLE =

CALL FC 2 (
ADDRESS := 10,
OUT := #TEMP0);

LAR1 P##TEMP0;


L D [AR1,P#0.0];
T MD 300;

END_ORGANIZATION_BLOCK

但是#TEMP0改为MD200,CPU就会报错停止

VAR_INPUT
ADDRESS : INT ;
END_VAR
VAR_OUTPUT
OUT : DWORD ;
END_VAR
VAR_TEMP
ADDRESS_1 : DINT ;
END_VAR
BEGIN
NETWORK
TITLE =

L #ADDRESS;
SLD 3;
T #ADDRESS_1;
L ID [#ADDRESS_1];
T #OUT;

END_FUNCTION

ORGANIZATION_BLOCK OB 1
TITLE = "Main Program Sweep (Cycle)"
VERSION : 0.1


VAR_TEMP
OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
OB1_PRIORITY : BYTE ; //Priority of OB Execution
OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
OB1_RESERVED_1 : BYTE ; //Reserved for system
OB1_RESERVED_2 : BYTE ; //Reserved for system
OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds)
OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started
TEMP0 : DWORD ;
END_VAR
BEGIN

NETWORK
TITLE =

CALL FC 2 (
ADDRESS := 10,
OUT := MD 200);

LAR1 MD 200;
L D [AR1,P#0.0];
T MD 300;
END_ORGANIZATION_BLOCK

请高手解释一下,谢谢!
指针传递参数问题 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54801条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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