找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
问题2: LAR1 //监控值P#DIX14.0,其实就是打开的DB725数据块。这样理解,对?
问题3: L B[AR1,P#0.0] 监控值16#10,为何我在DB725.DBB0或DB725.DBB14数值都是0,但程序为何显示16#10呢?其他地址中也没有任何数值。
问题4: 监控中的P#15.0, P#16.0是DB700数据块中的位置(其实是DB725中不同的位置呗,因为指针在DB725中在移动位置,假设L B[AR1,P#100.0] 那DB700.DBX14.0读取的就是DB725.DBX100.0位置内容)
程序原文和监控数值:
TAR2 //8400-0000 //
AD 16#00FF_FFFF //0000-0000 //
L P##i_OtherStaSource //P#DIX14.0 //装载指针DB700.DBX14.0(也就是DB725.DBX0.0 ,BYTE3500)
+D //16#8500-0070 //也就是DI背景块DB700区域.DBX14.0
LAR1 //P#DIX14.0 //
L B [ AR1 , P#0.0 ] //16#10 // P#DIX14.0 Syntax-Id of Any-T_SRC_ANYPointer read
T #l_Syntax_Id //16#10 //
L B [ AR1 , P#1.0 ] //16#02 //P#DIX15.0 RangeType read (B#16#2 = Byte; B#16#3 = Int;
// B#16#4 = Word; B#16#7 = DInt; B#16#8 = DWord)
T #l_RangeType //16#02 //
L W [ AR1 , P#2.0 ] //16#0DAC //P#DIX16.0 Count the to transferred Values
T #l_Count_Values //3500 //
L W [ AR1 , P#4.0 ] //16#02DS //P#DIX16.0 DB-Number read
T #l_DB_no //725 //
L D [ AR1 , P#6.0 ] //P#8400-0000//P#DIX20.0 Pointer StartAddress read
T #l_StartAddress
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
问题1:装载指令 L P##i_OtherStaSource指针,指向DB700.DBX14.0(也就是DB725.DBX0.0 ,BYTE3500),我的理解是这个dix14.0其实就是DB725数据块,其实地址DB725.DBX0.0 这样理解,对?
A1:你的理解不对。P##i_OtherStaSource是指向i_OtherStaSource(参数前面需要加#)的指针,P#表示指针,#i_OtherStaSource是FB参数,根据定义在背景数据块的14.0开始,所以P##i_OtherStaSource 指向P#DB700.DBX14.0(因此处DB700是背景数据块),dix14.0开始的10个字节放的FB调用传入ANY,指向DB725.DBX0.0开始的一个区域,此处3500字节。
问题2: LAR1 //监控值P#DIX14.0,其实就是打开的DB725数据块。这样理解,对?
A2:不对。这个是把前面从ANY中取出指针+加上原来AR2地址寄存器保存指针偏移送AR1,监控值P#DIX14.0,就表示AR1中现在是P#DIX14.0。
问题3: L B[AR1,P#0.0] 监控值16#10,为何我在DB725.DBB0或DB725.DBB14数值都是0,但程序为何显示16#10呢?其他地址中也没有任何数值。
A3:不对。这里几个装载,基于AR1指针再加偏移P#0.0、P#1.0、P#2.0、P#4.0、P#6.0,解析出ANY到底指向哪里。
L B[AR1,P#0.0] 相当于取ANY第0个字节(此处为DB700.DBB14),值16#10,这是STEP7约定的。
L B[AR1,P#1.0] 相当于取ANY第1个字节(此处为DB700.DBB15),值16#02,表示数据类型为BYTE。
L W[AR1,P#2.0] 相当于取ANY第2个字节开始字(此处为DB700.DBW16),值3500,结合前面表示3500字节。
L W[AR1,P#4.0] 相当于取ANY第4个字节开始字(此处为DB700.DBW18),值725,表示DB块号。
L D[AR1,P#6.0] 相当于取ANY第6个字节开始双字(此处为DB700.DBD20),值16#84000000,前面的16#84指向DB块,后面部分表示起始地址0.0。
问题4: 监控中的P#15.0, P#16.0是DB700数据块中的位置(其实是DB725中不同的位置呗,因为指针在DB725中在移动位置,假设L B[AR1,P#100.0] 那DB700.DBX14.0读取的就是DB725.DBX100.0位置内容)
A4:不对。P#DIX14.0、P#DIX15.0、P#DIX16.0、P#DIX18.0、P#DIX20.0,这是前面AR1=16#85000070(P#DIX14.0,16#85表示指针指向背景数据块)加上指针偏移得到的。都是执行背景数据块的。
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

西门子商城