西门子工业支持中心,以专业共创价值!
西门子工业支持中心,以专业共创价值!
悬赏:10西币 | 解决时间:2023-01-29 18:47
产品版区:
SIMATIC S7-300(F)/S7-400(F/H/FH)
手机用户20221123469563
L P##Puls
LAR1
L W [AR1,P#0.0]
300cpu在FC中读取了plus的地址存在AR1,这个plus是在DB块中声明的UDT_Pulse(名字是UDT300),然后模拟出如图1的结果。
1、为什么plus的地址是V 1.0?
2、W [AR1,P#0.0]的值是300是因为UDT300吗?
3、V存储器有没有什么文档详细的讲解?
钻石用户推荐最佳答案
回答者:
阿鸣
回答时间:2023-01-23 17:30
提问者对于答案的评价:
如何设置带有"ANY"或"POINTER"数据类型的功能块?
https://support.industry.siemens.com/cs/document/20443243
W [AR1,P#0.0]的值是300,是因为PULSE 是一个ANY 类型的指针,这个指向的是以 AR1 为基地址的一片 10 字节的存留区,这最取到的值就是指针结构的第一个字,第一个字就是 DB 块号,即DB块号 12C,转换成 10 进制就是 300,即指针在实参部分传到块内的 DB 块号就是 DB300。
关于指针结构及用法参考
http://www.ad.siemens.com.cn/productportal/Prods/published/Prog/Prog_2.4/Prog_2.4.html#T1
关于这 V区,其实在 300中是不存在的,可以看看调用这个 FC 块的 OB 的临时存储区 LB20 LB21这些存储区
本回答有12位钻石用户推荐
这是间接寻址的问题,你要先看懂间接寻址的方法和每一步的含义。
参见:S7-300和S7-400寻址
https://support.industry.siemens.com/cs/document/79632832/s7-300%E5%92%8Cs7-400%E5%AF%BB%E5%9D%80?dti=0&lc=zh-CN
本回答有3位钻石用户推荐
V区是系统调用时自动分配的一个存储区,不需要关注它是多少,具体的很多书上都有介绍,对应的需要看ANY指针和POINT指针的定义和间接寻址,因为UDT定义的数据类型超过32位,300/400CPU是32位的,超过了32位,只能通过间接寻址方式去读取数据,所以需要先找起始地址,并保持到地址寄存器中,然后判断它的数据块号和存储数据的起始地址。
本回答有2位钻石用户推荐
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!