日志
S7-200 直接及间接寻址
2018-10-07 12:33
当我们编写程序是,可以使用3种方法来表示指令的地址。一般的PLC都支持这种寻址方式。
Direct Addressing S7-200通过不同的存储位置来存储不同的地址,我们可以显式的表示一个内存的地址,表明这就是存储的数据的地址。这可以使程序能够直接的读取这些信息。直接弟子可以表明存储的位置,大小等,比如,VW790表明的是字地址,是在内存的V存储区当中。 要读取位的信息,先设定一个存储器的区域,再用点后的数字表明一个位置。下面的例子表明一个位的信息。 I3.4 I是区域,3是字节,4是位信息(0~7) 可以用字节,字,双字来寻址大部分的区域的数据。 VB100 VW100 VD100 Symbolic Addressing 符号地址使用字符来表示一个地址。用一个符号的的常量来表示一个地址。 对于一个SIMATIC程序,用一个符号分配表(symbolic table)来分配。对于IEC程序,用全局变量表(global variable table)来分配。 Indirect Addressing Indirect addressing use a pointer to access the data in memory. 指针使用一个双字内存作为存储另一个地址的信息。可以使用V内存区域,L存储区域,或者是累加寄存器作为指针。要创建一个指针,首先是使用MOVE双字指令来传递为指针地址存储指令。指针也可以是传递一个分程序的参数。 S7-200允许指针来使用下列的内存区域,I,Q,V,M,S,T(当前的数据)及C(当前的值)。我们不能使用单独的位,或者是使用AI,AO,HC,SM,或者是暂存的内存地址L。 要非直接的读取存储器的数据,就需要用ampersand和一个内存的位置符来创建这个非直接存储的地址。这个指令的前面一定是有一个ampersand符号,来表示内存的区域,而不是表明这个区域的内容,这个区域的内容是要是要表示的区域将使用的地址信息。 下面的一个例子 V199 MOVD &VB200, AC1 用VB200的地址(VW200的起始字节)传递到AC1 V200 MOVW *AC1 AC0 传递AC1指向字信息到AC0 这里,用*表示一个命令使用的是一个指针。如下面的图所示,用*AC1表示AC1是一个字长度的值的一个指针。用MOVE 字的命令。在这个例子当中,在VB200和VB201存储的内容传递到了AC0中。 简单的就是说,要使用VB1000作为地址传递数据的话,首先,将&VB1000传递到比如VD808的内存中,要使用VW1100作为地址来输送,将&VB1100传递到VD808当中,在使用这个地址时实际上是使用的VW1100作为操作目的。 以上是用间接地址存储数据的信息。会用程序来说明这一点。在后续的文章中。 |
下一篇: 2018.10.07 日志
上一篇: 实战S7-200之间通讯