程序SFC21(Fill)的源区与目标区可以是L区吗?

分享到:
313
下一篇 >

菜鸟:

Temp

ElementTemp "Elment" 0.0 

Ret_Val_Temp Int 28.0 

Bvar                      Byte             30.0 



CALL  FILL

ptr_type:=Any

BVAL    :=P#DB6005.DBX0.0 BYTE 1

RET_VAL :=#Ret_Val_Temp

BLK     :=P#L0.0 BYTE 28

CALL  "Interface2"

A1_Element_DB_Pointor :=P#L0.0 BYTE 28

A2_Element_DB_Pointor :=P#DB3310.DBX0.0 BYTE 28

B_Element_DB_Pointor  :=P#DB3320.DBX0.0 BYTE 28

C_Element_DB_Pointor  :=P#DB3030.DBX0.0 BYTE 28

NOP 0


其中DB6005中为一个byte类型的数据,初始化为0


是否正确



写成如下:程序出错

L     B#0

T     #Bvar

NOP 0


CALL  FILL

ptr_type:=Any

BVAL    :=P#L30.0 BYTE 1

RET_VAL :=#Ret_Val_Temp

BLK     :=P#L0.0 BYTE 28

NOP 0



CALL  "Interface2"

A1_Element_DB_Pointor :=P#L0.0 BYTE 28

A2_Element_DB_Pointor :=P#DB3310.DBX0.0 BYTE 28

B_Element_DB_Pointor  :=P#DB3320.DBX0.0 BYTE 28

C_Element_DB_Pointor  :=P#DB3030.DBX0.0 BYTE 28

NOP 0


请高手指教

大虾:

你需要让程序知道所使用的临时变量区域已经被定义或隐含定义了,在Temp区域定义,或者P#L30.0 BYTE 1直接写成LB30。

菜鸟:

临时我定义了啊,

Temp

ElementTemp     "Elment"       0.0 

Ret_Val_Temp      Int                28.0 

Bvar                         Byte             30.0 

我看帮助上说可移动的数据区没有L区,是不知道是源区和目标区都不可以吗?

大虾:

帮助里存储区域是包含L区的,程序错误是指什么?返回值不为0吗?

菜鸟:

SFC21:返回值为0.


CALL  "Interface2"

这个程序内部有错误,执行结果不对。


帮助内容:

存储区

可以使用“填充块”指令移动以下存储区的数据:

数据块区域

位存储区

过程映像输入表

过程映像输出表

与程序执行无关的数据块

大虾:

SFC21:返回值为0.

说明SFC21正确执行了,你的错误可能是其它方面的原因。


你可能感兴趣: 工控菜鸟园 自动化系统 SIMATIC S7-300
无觅相关文章插件,快速提升流量