LAR1 P##AUFTRAG_START
//;
L 1
AIN1: T #LOOPCOUNT
A [AR1,P#0.0]
JC AIN3
//;
L 32
>=I
JC AIN2
//;
L #LOOPCOUNT
+ 1
+AR1 P#0.1
JU AIN1
//;
AIN2: L 0
AIN3: T #AUFTRAG
监控看到 LAR1 P##AUFTRAG_START 值为 84001870
1,#AUFTRAG_START 这个是 struct类型,是不是理解为一个32位指针?
但是块接口,如图三,又是一个指针,具体指向哪里呢?
2,84001870,对应 DB782这个DB块吗,但是程序里面并没有此DB?
图片说明:
最佳答案
1、#AUFTRAG_START 这个是 struct类型,是不是理解为一个32位指针?
指令LAR1 P##AUFTRAG_START,就是装载指针AR1 。#AUFTRAG_START是地址,AR1是指针。即将#AUFTRAG_START表示的数据装入AR1中。STRUCT是一种数据类型,即表示一个由确定数目组件构成的数据结构。
2、84001870,对应 DB782这个DB块吗?
是的,DBX782.0。
先熟悉AR指针的数据格式:
当是对DB区域寻址时,AR=840xxxxx
AR:
1000 0YYY 0000 0BBB BBBB BBBB BBBB BXXX
其中最高位第31bit被固定为1。同时,第24、25、26位(YYY)有了可以取值的范围,如为100,即表示DB(数据块)。 3-18位指定byte字节。0-2位,指定bit位。
、例如:
据上述规定的数据格式:
当AR=840000D4(hex)=1000 0100 0000 0000 0000 0000 1101 0100(b),实际上就是等于DBX26.4。
、据上述规定的数据格式,解读 84001870 :
AR=84001870(hex)=1000 0100 0000 0000 0001 1000 0111 0000(b),实际上就是等于DBX782.0。
3、但是程序里面并没有此DB?
虽然程序里面并没有此DB,但STRUCT与DB有关。
、在此要熟悉STRUCT:
Struct(结构性类型)是由不同数据类型组成的、属于复合型数据类型,它是用来定义一组相关的数据,其长度由用户定义,它与数组(Array)类型相反(ARRAY是由相同类型的数据组成的数组)。简言之,结构(STRUCT)是将一组同不同类型的数据组合在一起组成一个单位就是结构。
、在什么样的情况下需要用到 Struct 数据类型?
参考:
http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=71462&cid=1029
4、相关·资料:
、STEP 7的STRUCT数据类型:
http://www.xinmanduo.com/plc/177146.html
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc282907.html