当我们学会所数据存储和程序运行分离后,就可以单独理解数据存储这块了。我们要读写一个数据,定然要找到这个读写的数据地址。
PLC对数据寄存器的地址寻找有两种方式,一种是直接寻址,另一种是间接寻址。这两者有什么区别呢,比如操场上站满了士兵,军官要从这么多行列的士兵中寻找到某个具体的士兵,他要么就一个一个的亲自去找,找到这个士兵所站的哪行哪列这个位置,这就是直接寻址。要么就他自己不用亲自去,吩咐下属一个命令你帮我把这个人找出来,他在哪行哪列,然后再找第二个兵又在哪行哪列,这个呢就属于间寻寻址了,因为他命令下属找的。
我们的PLC也一样,你是领导,你要找三个数据,PLC里面有很多寄存器,要么你亲自命令,直接读取VW0,VW10,VW20。三个还好,如果非常多个,领导不可能一个个找是吧,再怎么说也是个领导吧!那么你找个喽喽比如AC0,让它去找,它怎么找呢,先让其与VB0挂钩(&VB0),就是告诉AC0你先站在VB0这里,你的位置是VB0这个位置。就好像军官告诉下属你先站在我第一个找的士兵所在的行列,和它位置一样,然后把这个士兵的数据告诉领导。然后领导开始发话了,嗯你给我退后十行,站到那里去把情况给我汇报汇报。嗯我们的小跟班就退后十行跑到VW10那里给你汇报数据去了。
这个时候我们间接寻址就有一个很容易让初学者误会的地方了,比如很多人在给AC0一个加十的指令,容易混淆理解为把AC0里面要给你汇报的数据加十了。我们再回过头来看上一段,领导和喽喽是怎么工作的,领导要求喽喽的是地址加十,而喽喽反馈回领导的地址加十后的位置上的数据。转到PLC上就是,你要求给AC0加减指令等等改变的只是它的地址,而它反馈给你的是所在地址上的数据。我们叫这个喽喽为指针,你想指向哪个地址,就让这个指针去寻找这个位置,指针反馈给你的是这个位置上的数据。这就是间接寻址。
西门子S7-1200.S7-1500.S7-300.V90.G120.S120.