SCL中如何修改IN_OUT参数地址?

已锁定

smartauto

  • 帖子

    22
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2007-06-30

普通 普通 如何晋级?

SCL中如何修改IN_OUT参数地址?

891

1

2012-08-22 07:58:33

数据类型定义:
UDT1
数据块定义:
DB1:
...
DEV1: UDT1;
DEV2: UDT1;
...
DEVn:UDT1;
...
程序如下:
FUNCTION FC1
VAR_INPUT
Number : INT ; //要处理的记录数量
LEN :INT; //每个记录的字节长度
END_VAR
VAR_IN_OUT
FirstRec: UDT1;
//自己加的视窗
Ptr AT FirstRec : STRUCT
DBNum : WORD;
Addr : DWORD;
END_STRUCT;
END_VAR
VAR_TEMP
TempRec : UDT1;
i : INT ; //index for 'FOR' loop
END_VAR
//程序功能:逐个读入并写回
FOR i:=0 TO Number-1 DO
TempRec := FirstRec; //如何写才正确?使 Ptr.Addr 偏移一个记录,即 i*LEN*8
//逻辑处理部分
FirstRec :=TempRec;//问题同读入
END_FOR;
END_FUNCTION;

此程序读入记录部分编译后的代码如下,如何还原到SCL?
L #i
ITD
L L#960 //每个记录的偏移量LEN*8
*D
L P##FirstRec
LAR1
TAK
T LD 252
TAK
L W [AR1,P#0.0]
T LW 256
OPN DB [LW 256]
L D [AR1,P#2.0]
L LD 252
+D
LAR1
L D [AR1,P#0.0]
T #TempRec.Vrs //第一个DW
L P##FirstRec
LAR1
L W [AR1,P#0.0]
T LW 256
OPN DB [LW 256]
L D [AR1,P#2.0]
L LD 252
+D
LAR1
L D [AR1,P#4.0]
T LD 4 //第二个DW
L P##FirstRec
LAR1
L W [AR1,P#0.0]
T LW 256
OPN DB [LW 256]
L D [AR1,P#2.0]
L LD 252
+D
LAR1
L D [AR1,P#8.0]
T LD 8 //第三个DW,直到复制完成

期待你的指教,多谢!
SCL中如何修改IN_OUT参数地址? 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54623条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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