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