技术论坛

 SIMATIC S7-1500与TIA博途软件的使用---连载36

返回主题列表
作者 主题

至圣

经验值: 11073
发帖数: 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的状态字

 

 

状态字中每一个位的作用及含义如下:

  • OS: OS状态位用于保存被置位的OV状态位信息。如果指令执行过程中出现某个数值溢出取值范围或为无效浮点数,则CPU将置位OV位,并同时置位OS位。如果随后的指令正确执行,CPU将自动复位OV位,但OS位被置位的状态将继续保持。因此,OS位可以记录OV的是否出过故障。调用JOS(OS为1跳转)、 块调用、块结束等指令将自动复位OS位。

  • OV: OV状态位用于表示指令执行过程中出现某个数值溢出取值范围或无效的浮点数。数学函数、转换指令和浮点数比较可能会影响 OV 状态位,如运算出现错误,则OV位置位;如错误消除,则OV位复位。

  • CC1,CC0:条件代码,指示字逻辑指令、比较指令、算术指令、移位指令等操作的结果信息。通过CC0、CC1的状态可以触发程序跳转指令等。

  • BR: 二进制结果位,作为某些跳转指令 (STL) 的条件,也可用于控制功能框指令的ENO输出,例如在使用STL编写函数或函数块时,可以通过SAVE(将 RLO 保存到 BR 位)指令控制ENO输出,示例程序如图6- 5所示,在FC1中通过M1.1控制FC1块的ENO输出,如果M1.1为0,则ENO没有输出,能流没有导通,M1.2为0;如果M1.1为1,则ENO输出,能流导通,M1.2为1。ENO的输出与否与FC1的程序执行与否无关,但是可以使用跳转方式进行关联,例如TIA博途软件中提供的许多函数或函数块,如果程序执行错误,将ENO设置为不导通。

         注意:

         与S7-300/400不同,在缺省条件下,如果不对BR位进行控制,ENO是导通的。

 

   

                                                                     图6- 5状态位BR

 

 

 

  • RLO:状态位 RLO 是二进制逻辑运算的缓冲区,它不是状态字的组成部分。首先,CPU 将第一次扫描的结果传送到RLO,之后每次后续扫描的结果都将与所保存的RLO一起进行运算,并将运算后的结果保存在 RLO 中。可以通过相应的指令置位或复位RLO。RLO 用于控制存储器、定时器和计数器指令,并可用于执行某些跳转指令。RLO在程序调试中很重要,例如赋值指令根据RLO的状态判断其后的线圈是否输出。使用状态字与RLO位对程序的监控如图6- 6所示。

                                                             图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模块安装在分布式从站上,当程序执行到立即读/立即指令时,将只扫描其主站中对应的输入/输出地址的当前状态。

 

您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。