BLOCK_DB运用

我在程序块里确实看见了DB0啊,它是实际值得哇,而且初值是DB1,我找遍了都找不DB1和DB0,及时说没有DB0块,但图片里面的DB0是什么意思,正如大家看到图片里面的数据块DB1883是一个背景数据块,代表一种功能的参数传递(其中一个挂在DP总线上的变频器,我想查看它的启动条件,它的启动条件就关联在
OPN   #i_DBdata
A     DBX [AR1,P#12.1]            // RESET
   =     #prof_WR_RESET
、、、、、、、、、、、、、、、、
其中一段程序:
  OPN   #i_DBdata

      L     #i_DBindex

      SLW   3
      LAR1  
好了,在这里,我可以说LAR1的值就是#I_DBindex了吧,在图片里它的值是96,所以,我可以说 最上面程序A     DBX [AR1,P#12.1]  就是DB0.DBX108.1了吧(DB0也在图片里哈,我在线监视的实际值不会错吧)
所以,我哪里错了?我现在到处去找DB0就是为了去找DBX108.1这个点位关联了什么东西,(HMI里面没有哈)

问题补充:
像这种情况该怎么办啊,求解决办法

图片说明:

BLOCK_DB运用   

最佳答案

1:DB块的号码必须从1开始的,DB1 是形参的初始值,合法的DB块号码 从1-16000.
从你图中可以看出,你的 i_DBData的实际值,根本就是空的哇!@Actual value 才是真正的实际值,可以判断在 调用 CALL FBxxx,DB1883 . #i_DBdata根本没有赋值。

2:OPN   #i_DBdata

      L     #i_DBindex

      SLW   3
      LAR1  
好了,在这里,我可以说LAR1的值就是#I_DBindex了吧,在图片里它的值是96,所以,我可以说 最上面程序A     DBX [AR1,P#12.1]  就是DB0.DBX108.1
你的间接寻址理解是没有问题的。

3:不要钻牛角尖,在调用FB时,如果给i_DBdata 赋值,比如DB200,那么你可以再实际值中看到 DB200。

3:何必要纠结 DB0 还是DB1了?i_DBData 在FB 被调用时赋了什么值?,如果没有赋值,那么就是空的了,打开你的FB程序,然后在线监控,鼠标移动到右侧,然后 右键\SHOW\ DB1 Register 和DB2 Register 。看看 你的DB1 里面的类容 就是知道用的是哪个DB块了。不过根据 你的图片可以判断,I_DBDATA 在调用时没有赋值!

提问者对于答案的评价:
谢谢各位,我已经彻底理清楚了,有个小小的疑问,DB块中@actual与actual ,initial的区别和作用?

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc197647.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年8月26日 上午12:29
下一篇 2017年8月26日 上午12:29

相关推荐