作者 | 主题 |
---|---|
菁 至圣 经验值: 11116 发帖数: 1023 精华帖: 21 |
楼主 2016-06-28 10:45:28
主题:SIMATIC S7-1500与TIA博途软件的使用---连载36
以下内容节选自机械工业出版社出版的西门子自动化技术丛书----《SIMATIC S7- 1500 与 TIA博途软件使用指南》, 作者崔坚。更多更详细的内容请您参考《SIMATIC S7- 1500 与 TIA博途软件使用指南》一书。
指令的处理 6.1 指令的处理 6.1.1 LAD指令处理 LAD程序的逻辑处理以从左到右传递“能流”的方式进行。如图6- 2所示,位信号M1.1首先和M1.2相“与”;之后,将“与”的结果再和位信号M1.3相“或”;最后,相“或”后的逻辑执行结果将传递到输出线圈M1.4。图中位信号M1.1和M1.2信号为1,处于导通状态,所以将“能流”传递给M1.4,触发该线圈的输出。 图6- 2LAD逻辑处理“能流”方向 LAD程序中的逻辑运算、比较等指令也可以由位信号触发。在这些指令中,左边输入端为“EN”使能信号。如果使能信号为“1”,指令执行,如果条件满足则触发输出信号“ENO”。如图6- 3所示,位信号M0.4为“1”时,触发“CMP<=I”比较指令的执行。由于变量MW2大于MW4,所以ENO为零,没有将“能流”传递到输出线圈M0.5。 图6- 3LAD运算处理能量流向
6.1.2 STL指令处理 1) 状态字的使用 与LAD指令相比,STL指令直接对地址区进行操作,例如位处理的“与”指令:
指令在前,地址区在后,通过指令直接对地址进行操作。STL指令的执行与监控通过状态字实现,由于S7-1500 CPU 在系统中虚拟了一个运行STL程序的环境,所以状态字也是虚拟的,并且只保留了5位,其余的位没有使用或取消。状态字与RLO逻辑运算结果一起用于表示地址当前状态、逻辑处理结果、数据溢出等操作状态。状态字的结构如图6- 4所示。 图6- 4 S7-1500的状态字
状态字中每一个位的作用及含义如下:
注意: 与S7-300/400不同,在缺省条件下,如果不对BR位进行控制,ENO是导通的。
图6- 5状态位BR
图6- 6 STL 状态字与程序监控
2) 累加器的使用 对于运算指令,STL使用累加器作为数据的缓存区。S7-1500 CPU中的累加器也是虚拟的,并且只有两个(ACCU1和ACCU2),每个累加器占用32位地址空间,因此可以将4个字节的变量放置在累加器中进行运算。累加器的使用参考下面的示例程序 :
L MD 10 //装载变量MD10的值进入累加器1 L 12.1 //装载浮点值12.1进入累加器1,MD10的值进入累加//器2 +R // 累加器1与累加器2中的值相加,将结果传送到累//加器1中 T MD 14 //将累加器1中存储的运算结果传送到变量MD14
累加器1和累加器2中的数据通过“L”指令自动堆栈。累加器的使用可以大量节省用于保存计算结果的中间变量。使用LAD语言编程没有累加器的概念,一般来说,中间计算数据的转存需要占用CPU的存储空间,但是在程序中使用某些优化的指令,例如一个指令可以进行多个变量运算(LAD指令“CALCULATE”),也可以避免这样的情况。
6.1.3立即读与立即写 立即读、立即写可以直接对输入/输出地址进行读写,而不是访问这些输入/输出对应的过程映像区的地址。立即读/立即写需要在输入/输出地址后面添加后缀“:P”,如图6- 7所示。 图6- 7 立即读/立即写编程示例 立即读/立即写与程序的执行同步:如果I/O模块安装在中央机架上,当程序执行到立即读/立即写指令时,将通过背板总线直接扫描输入/输出地址的当前状态;如果I/O模块安装在分布式从站上,当程序执行到立即读/立即指令时,将只扫描其主站中对应的输入/输出地址的当前状态。
|