为了对比下面的寄存器寻址方式,我们这里,修改为:L MD[MD100]。并假定MD100=8Hex,同时我们也假定MD1=85000018Hex。
当把MD100这个双字作为一个双字指针运用时,其存储值的0-18bit将会按照双字指针的结构Byte.bit来重新“翻译”,“翻译”的结果才是指针指向的地址,因而MD100中的8Hex=1000B=1.0,所以下面的语句:
L MD[MD100]
LAR1
经过“翻译”就是:
L MD1
LAR1
前面我们已经假定了MD1=85000018,同样道理,MD1作为指针使用时,对0-18bit应该经过Byte.bit结构的“翻译”,由于是传送给AR地址寄存器,还要对24-31bit进行区域寻址“翻译”。这样,我们得出LAR1中最终的值=DIX3.0。就是说,我们在地址寄存器AR1中存储了一个指针,它指向DIX3.0。
-----------------------------
L MD100
LAR1
这段语句,是直接把MD100的值传送给AR,当然也要经过“翻译”,结果AR1=1.0。就是说,我们在地址寄存器AR1中存储了一个指针,它指向1.0,这是由MD100直接赋值的。
似乎,两段语句,只是赋值给AR1的结果不同而已,其实不然。我们事先假定的值是考虑到对比的关系,特意指定的。如果MD100=CHex的呢?
对于前一段,由于CHex=1100,其0-3bit为非0,程序将立即出错,无法执行。(因为没有MD1.4这种地址!!)
后一段AR1的值经过翻译以后,等于1.4,程序能正常执行。
本文关键字:siemens PLC入门,plc技术 - PLC入门
上一篇:三菱PLC特殊定时器指令