同时打开两个数据块,L 指令是用在哪个数据块

L     #HMI_DATA_DB
      T     #TEMP_HMI_DATA_DB
      OPN   DB [#TEMP_HMI_DATA_DB]
      L     #HMI_CONFIG_DB
      T     #TEMP_HMI_CONFIG_DB
      OPN   DI [#TEMP_HMI_CONFIG_DB]
      L     P#2.0
      T     #TEMP_DATA_AREAPOINTER
      L     P#70.0
      T     #TEMP_DATA_GLOBAL
      LAR1  
      L     P#220.0
      T     #TEMP_DATA_MANUAL_COMMON
      L     P#40.0
      T     #TEMP_CONFIG_MANUAL_COMMN
      A     #FIRST_SCAN
      JCN   A999
      R     DBX [AR1,P#52.1]
      L     B#16#0
      T     DBW [AR1,P#12.0]
      T     DBW [AR1,P#16.0]
      T     DBW [AR1,P#18.0]
      T     DBW [AR1,P#22.0]
      T     DBW [AR1,P#26.0]
      T     DBW [AR1,P#30.0]
      T     DBB [AR1,P#32.0]
      T     DBB [AR1,P#34.0]
      T     DBW [AR1,P#36.0]
      T     DBW [AR1,P#38.0]
      T     DBW [AR1,P#40.0]
      T     DBW [AR1,P#42.0]
      T     DBW [AR1,P#48.0]
请问一下,这段程序中的L P#2.0, L P#220.0, 装载的是那个数据块的数据?

最佳答案

1:先你程序中,用到了2个DB,看看你的这段程序在调用时  HMI_DATA_DB和#HMI_CONFIG_DB的IN 接口被赋了什么值,那么你的程序中就用到了相应的DB,比如 
HMI_DATA_DB=10,HMI_CONFIG_DB=11,则你的程序中使用到了DB10,和DB11.这2个DB块。
      L     #HMI_DATA_DB
      T     #TEMP_HMI_DATA_DB
      OPN   DB [#TEMP_HMI_DATA_DB]
      L     #HMI_CONFIG_DB
      T     #TEMP_HMI_CONFIG_DB
      OPN   DI [#TEMP_HMI_CONFIG_DB]

2:看一下程序
       L     P#2.0
      T     #TEMP_DATA_AREAPOINTER
      L     P#70.0
      T     #TEMP_DATA_GLOBAL
      LAR1  
      L     P#220.0
      T     #TEMP_DATA_MANUAL_COMMON
       L P#2.0,和L P#220.0并没有用到 DB块里的数据,它仅仅是把指针常数P#2.0和p#220.0装载到累加器1中。

3:下面语句
      L     B#16#0
      T     DBW [AR1,P#12.0]
      T     DBW [AR1,P#16.0]
      T     DBW [AR1,P#18.0]
      T     DBW [AR1,P#22.0]
      T     DBW [AR1,P#26.0]
      T     DBW [AR1,P#30.0]
      T     DBB [AR1,P#32.0]
      T     DBB [AR1,P#34.0]
      T     DBW [AR1,P#36.0]
      T     DBW [AR1,P#38.0]
      T     DBW [AR1,P#40.0]
      T     DBW [AR1,P#42.0]
      T     DBW [AR1,P#48.0]
这里 是把0 传输到DB [#TEMP_HMI_DATA_DB]中,TEMP_HMI_DATA_DB值是多少就是用到相应的DB。 看你的程序如果用到DB[#TEMP_HMI_CONFIG_DB] 中的数据,会以 
类似DIW[AR1,p#0.0]的方式来引用,注意是DI,STEP7 程序中如果他是使用2个DB块,鼻血使用CPU中DB1和DB2寄存器,也就是一OPN DBxxx和OPN DIxxx的方式打开DB块

提问者对于答案的评价:
感谢楼主的分析,很到位

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 上午3:24
下一篇 2018年12月1日 上午3:24

相关推荐