Page 269 - 可编程控制器设计原理
P. 269

第八章  S7-200 PLC 子程序的应用


                   AND T10  // 定时器 T10 计时完成
                   AND C5   // 计数器 C5 计数值满足条件
                   CALL Cooling_Control

                   2. 多条件组合的灵活性
                   多条件组合使得条件调用具有极高的灵活性。可以通过 AND(与)、OR(或)、
               NOT(非)等逻辑运算符将多个条件组合起来。比如在一个仓库的货物搬运系统中,
               当货物重量传感器检测到货物重量在一定范围内(条件 A),或者搬运轨道上

               没有障碍物(条件 B),并且操作人员发出允许搬运的信号(条件 C)时,调用
               Goods_Transfer 子程序进行货物搬运。其逻辑表达式可以表示为 (A OR B) AND C,
               通过合理设置这些条件,可以满足各种复杂的实际应用需求。

                   3. 动态调整调用条件
                   条件调用还支持动态调整调用条件。在程序运行过程中,可以根据不同的生
               产阶段、设备状态等因素实时改变条件。例如,在一个生产多种产品的流水线上,
               根据当前生产的产品类型,调整调用不同加工子程序的条件。当生产产品 A 时,
               调用 Processing_A 子程序的条件是温度在范围 T1 内且压力在范围 P1 内;当生

               产产品 B 时,调用 Processing_B 子程序的条件变为温度在范围 T2 内且压力在范
               围 P2 内。
                   (三)调用栈管理

                   1. 调用栈的概念
                   (1) 存储机制详解
                   调用栈是一种后进先出(LIFO)的数据结构,用于管理子程序调用顺序。
               当主程序或一个子程序调用另一个子程序时,系统会将当前的程序执行位置(返
               回地址)和相关的上下文信息(如局部变量的值)压入调用栈。返回地址记录了

               调用点的位置,以便子程序执行完毕后能准确返回。局部变量的值则保证了子程
               序执行过程中数据的完整性。例如,当主程序调用子程序 Sub_1 时,主程序当前
               执行到的指令地址被压入栈底,Sub_1 执行过程中如果又调用了子程序 Sub_2,
               Sub_1 的返回地址和局部变量信息会被压入栈中,Sub_2 的相关信息再压入栈顶。

                   (2) 栈指针的作用
                   栈指针是调用栈管理中的一个重要概念,它始终指向栈顶元素。在压入和弹
               出操作时,栈指针会相应地移动。当有新的子程序调用时,栈指针向上移动,将



                                                                                      261
   264   265   266   267   268   269   270   271   272   273   274