当前课程知识点:电气控制技术与PLC > 第6章 功能指令的应用 > 6.8 子程序的编写与调用 > 子程序的编写与调用
大家好
本讲我们一起来学习
S7-200SMART子程序的编写与调用相关内容
首先我们来先了解一下子程序的作用
第一个作用是
当系统规模很大 控制要求复杂时
使用子程序可以将程序分成容易管理的小块
使程序结构简单 易于阅读 调试 查错 和维护
第二个作用是
当一些程序功能会在程序中反复执行时
如某些数据运算程序
多台相同设备控制程序
例如 多台电机的启停
报警程序 通信程序等
这时可以将这些程序段编写成子程序
需要时对其进行调用
而不需要反复的编写这些程序
可以减少程序整体步数
接下来
我们一起来看一下子程序编程的一般架构
如图1所示
可以在主程序 其他的子程序中调用子程序
调用子程序
调用子程序时
将执行子程序中的指令
一直到子程序结束
然后返回调用它的程序中
执行下一条指令
子程序的调用可以用普通触点的接通或者断开来进行调用。
子程序的具体编写是在S7-200SMART的编程环境
STEP 7-MicroWIN SMART下
有单独区域进行编写
并且可以编写多个子程序
下面我们来看下编程环境下子程序的编写方式
当我们把编程软件打开时
如图2中所示
有三个标签
SBR_0就是子程序编辑标签
它前面的是main主程序标签
后面是INT_0中断子程序标签
如果我们需要增加子程序
可以鼠标左键选中SBR_0标签
然后鼠标右键
选择插入子程序
另外还可以在属性中对子程序进行重命名
子程序的调用是在软件左侧目录树中找到调用子程序例程
如图3所示
找到对应的子程序名称
然后鼠标左键点住拖到你要调用的位置上面
如图3b所示
就是将SBR_0子程序
放入被调的主程序或者是子程序中
下面我们以3台电动机的顺序控制为例
来讲一下子程序的编写
我们先来看一下控制要求
按下启动按钮SB1
电动机M1 M2 M3间隔3s顺序启动
按下停止按钮SB2
电动机M1 M2 M3间隔3s顺序停止
大家想一下 要实现上面的控制要求
我们该怎么做呢
第一步 我们要进行I/O分配
如表1所示
输入量有
启动按钮SB1分配I0.0
停止按钮SB2分配I0.1
输出量为接触器KM1到KM3分别控制三台电动机
分配Q0.0到Q0.2
下面我们一块分析编程思路
按照控制要求可以分别编写
电动机顺序启动子程序和顺序停止子程序
然后主程序分别来调用这两个子程序
下面我们
根据分析来编写程序
先编写主程序
在编程环境主程序标签下面编写
采用启动按钮I0.0常开触点
串联停止按钮常闭触点I0.1互锁
当按下启动按钮I0.0时
调用三台电动机间隔3s顺序启动子程序
如图所示
子程序调用结束后
再回到主程序执行下一条语句
电动机停止主程序和启动主程序比较类似
如图所示
采用停止按钮I0.1常开触点
串联启动按钮常闭触点I0.0
当按下停止按钮后
调用三台电动机间隔3s顺序停止子程序
接下来我们来编写启动子程序
可以分三部分来编写
第一部分
启动的启保停电路
采用启动按钮I0.0常开触点
并联中间继电器M0.0后
再串联定时器T39常闭触点和中间继电器输出线圈M0.0
第二部分
定时电路采用M0.0常开触点
控制并联的三个定时器T37 T38 T39
定时间分别为3s 6s 9s
第三部分
电动机启动置位电路程序
利用三个定时器的常开触点串联置位的输出线圈
三台电动机间隔三秒启动的工作过程是按下启动按钮SB1
线圈M0.0得电
三个定时器T37 T38 T39同时开始定时
T37的3s定时时间到后
其常开触点闭合
电动机M1启动
同理 T38 T39定时6s 9s时间到后
对应的定时器常开触点闭合
实现三台电动机的顺序启动运行
同时T39常闭触点断开
中间继电器线圈M0.0失电
停止子程序
也分三部分来编写
和启动子程序类似
分为停止的启保停电路
停止定时控制电路和电动机M1到M3的复位电路程序
停止的启保停电路
采用的是中间继电器M0.1
定时电路也是采用三个定时器分别是T40 T41 T42
来实现3s 6s 9s的定时
定时时间到后
采用复位指令
复位三台电机输出线圈
实现电动机顺序停止
三台电动机间隔三秒停止的工作过程和启动类似
大家可以自行分析
S7-200 SMART子程序的编写还有些注意事项
我们一块来看看
第一点是
PLC扫描一般只在主程序里扫描
只有在调用子程序条件接通时才会跳转到子程序内扫描
子程序不能调用就不会扫描
所以能节省程序的执行时间
提高了响应速度
第二点是
子程序会保留调用该子程序最后一个扫描周期
各个存储区的状态
这一点需要特别注意
第三点是
不同的子程序中允许出现相同的线圈
但不能同时调用
本讲到此结束
谢谢大家
-1.1 低压电器简介
--低压电器简介
-1.2 低压开关电器
--低压开关电器
-1.3 主令电器
--主令电器
-1.4 接触器
--接触器
-1.5 熔断器
--熔断器
-1.6 继电器(一)热继电器和速度继电器
-1.7 继电器(二)时间继电器
-小测验
-2.1 三相异步电动机的直接起动控制
-2.2 三相异步电动机点动控制和长动控制
-2.3 三相异步电动机降压起动控制(一)
-2.4 三相异步电动机降压起动控制(二 )
-2.5 三相异步电动机的多点控制和顺序控制
-2.6 三相异步电动机的调速控制
-2.7 三相异步电动机的制动控制(一)
-2.8 三相异步电动机的制动控制(二)
-2.9 三相异步电动机正反转控制(一)
-2.10 三相异步电动机正反转控制(二)
-2.11 电气控制线路的设计方法
-小测验
-3.1 电气控制电路图的绘制(一)
-3.2 电气控制电路图的绘制(二)
-3.3 电气控制电路图的绘制(三)
-3.4 电气控制电路的设计方法 (一)
-3.5 电气控制电路的设计方法 (二)
-小测验
-4.1 认识PLC
--认识PLC
-4.2 PLC组成及工作原理
-4.3 S7-200 SMART PLC硬件介绍(上)
-4.4 S7-200 SMART PLC硬件介绍(下)
-4.5 STEP 7-Micro/WIN SMART编程软件(上)
--STEP 7-MicroWIN SMART编程软件(上)
-4.6 STEP 7-Micro/WIN SMART编程软件(下)
--STEP 7-MicroWIN SMART编程软件(下)
-小测验
-5.1 PLC编程语言与程序结构
-5.2 指令基础
--指令基础
-5.3 位逻辑指令
--位逻辑指令
-5.4 PLC编程规则与技巧
-5.5 定时器指令的工作原理
-5.6 定时器指令应用举例
-5.7 计数器指令的工作原理
-5.8 计数器指令的应用
--计数器指令应用
-小测验
-6.1 功能指令概述
--功能指令概述
-6.2 数据处理指令(一):比较指令与数据传送指令
-6.3 数据处理指令(二):数据转换指令
--数据转换指令
-6.4 数据处理指令(三):表格指令和时钟指令
-6.5 算术运算指令及其应用
-6.6 逻辑运算指令及其应用
-6.7 程序控制指令:跳转指令、循环指令
-6.8 子程序的编写与调用
-6.9 中断程序与中断指令
-6.10 高速计数器指令与高速脉冲输出指令(一)
-6.11 高速计数器指令与高速脉冲输出指令(二)
-小测验(一)
-小测验(二)
-小测验(三)
-7.1 梯形图的经验设计法
-7.2 顺序控制设计法与顺序功能图概述
-7.3 顺序功能图的基本结构和绘制方法
-7.4 使用SCR指令的顺序控制梯形图设计方法
-7.5 使用起保停电路的顺序控制梯形图设计方法
-7.6 使用置位复位指令的顺序控制梯形图设计法
-小测验
-8.1模拟量控制概述
--模拟量控制概述
-8.2模拟量输入输出配置及数值的规范化
-8.3PID控制指令
--PID控制指令
-8.4水箱水位PID控制程序举例
-小测验