S7-300/400 PLC有两个数据块寄存器,DB和DI
使用DB寄存器打开数据块后,使用DBX、DBB、DBW、DBD等来访问数据块里的变量
比如
OPN DB 1
L DBW 0 //此时访问的就是DB1.DBW 0
使用DI寄存器打开数据块后,使用DIX、DIB、DIW、DID等来访问数据块里的变量
比如
OPN DI 1
L DIW 0 //此时访问的也是DB1.DBW 0
因为调用FB时,系统自动使用DI寄存器来打开背景数据块,所以通常DI寄存器又被称为背景数据块寄存器,如果在FB里不使用OPN DI打开数据块,直接使用DIW访问的就是背景数据块里的一个字变量,所以在FB里最好不要使用DI寄存器打开其它的数据,否则造成参数访问混乱。
总之,看到DIW并不一定是访问的背景数据块,要看是否在FB里使用,是否使用了OPN DI打开了其它数据块,不在FB里DB寄存器和DI寄存器使用没有区别。