有一段Pointer数据类型指针的程序求助

已锁定

Jimmy888

  • 帖子

    4
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2014-04-09

普通 普通 如何晋级?

有一段Pointer数据类型指针的程序求助

1042

2

2014-04-09 23:32:50

编写一个计算功能的函数FC3,输入首地址“In_Data”及连续浮点格式变量的个数"NO"后,输出几个变量的平均值"OUT_VAL"
OB1中调用函数FC3程序如下:

CALL FC 3
In_Data:=P#M100.0
NO:=4
OUT_VAL:=MD20

FC3接口参数

数据接口 名称 数据类型 地址
IN In_Data Pointer
IN NO INT
OUT OUT_VAL Real
TEMP BLOCK_NO INT 0.0
TEMP NO_TEMP INT 2.0.
TEMP ADD_TEMP REAL 4.0



L 0
T #ADD_TEMP
L P##In_Data
LAR1
L 0
L W[AR1,P#0.0]
==I
JC M1
T #BLOCK_NO
OPN DB[#BLOCK_NO]
M1: L D[AR1,P#2.0]
LAR1
L 0
L#NO
==I
JC END
NO: T #NO_TEMP
L D[AR1, P#0.0]
L #ADD_TEMP
+R
T #ADD_TEMP
+AR1 P#4.0
L #NO_TEMP
L #NO_TEMP
LOOP NO
L #ADD_TEMP
L #NO
DTR
/R
T #OUT_VAL
END: NOP 0

这段程序有几个地方看不懂
1. L 0
L W[AR1,P#0.0]
==I
通过这两句程序判断#In_Data是否为DB块,为什么?(程序提示是参考POINTER的数据格式)

2. T #BLOCK_NO
OPN DB[#BLOCK_NO]
程序提示是说如果判定其为DB块,则需要打开DB块,为什么要打开该DB块,对程序有什么用处?

3. M1: L D[AR1,P#2.0]
程序提示说是找出计算数据区的开始地址,POINTER数据中,后四个字节包含内部交叉指针,将P#100.0装载到AR1中。 为什么,本来给的不就是开始地址吗,为什么还要再去找开始地址?
有一段Pointer数据类型指针的程序求助 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54705条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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