S7-200程序控制类指令及应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
S7-200程序控制类指令及应用
王兵
1
2012-8-29
跳转指令、循环指令、子程序指令、中断指 令统称为程序控制类指令。 程序控制类指令用于程序执行流程的控制。 对一个扫描周期而言,跳转指令可以使程序出现 跨越或跳跃以实现程序段的选择;子程序指令可 调用某段子程序;循环指令可多次重复执行指定 的程序段;中断指令则用于中断信号引起的子程 序调用。 程序控制类指令可以影响程序执行的流向及 内容,对合理安排程序的结构,提高程序功能以 及实现某些技巧性运算,具有重要的意义。
19
2012-8-29
2.I/O中断 I/O中断包括上升沿中断及下降沿中断、 高速计数器中断和脉冲串输出中断。S7- 200CPU可用输入I0.0~I0.3的上升沿或下降 沿产生中断,并可用这些上升沿或下降沿信 号来表示某些需要及时响应的故障状态。
20
2012-8-29
3.时基中断
时间中断包括定时中断及定时器T32/96中断, S7-200 CPU可支持2个定时中断。定时中断按周 期时间反复执行。周期时间范围为5ms~255ms, 增量为lms。定时中断0的周期时间应写入SMB34, 定时中断1的周期时间应写入SMB35。每当定时器 溢出时,定时中断事件把控制权交给相应的中断 程序,通常可用定时中断以固定的时间间隔去控 制模拟量输入的采样或者去执行一个PID回路。 定时器T32/96中断允许及时地响应一个给定 的时间间隔。这些中断只支持1ms分辨率的延时接 通定时器(TON)和延时断开定时器(TOF)T32和T96。 T32和T96的工作方式与普通定时器相同。中断允 许时且定时器的当前值等于预置值时,执行被连 接的中断程序。
26
2012-8-29
LAD 中断 允许指令 中断 禁止指令 STL LAD STL
(ENI)
ENI
(DISI)
DISI
中断条件
返回指令 中断无条件 返回指令 中断标号
LAD
STL LAD
(RETI)
CRETI
(RETI)
RETI N INT INT N
2012-8-29
STL
LAD
STL
27
中断连接指令
13 2012-8-29
子程序举例:
14
2012-8-29
子程序的嵌套举例:
15
2012-8-29
第四节
中断指令
一、中断与中断源
中断是计算机特有的工作方式,指主程序执行过程中, 中断主程序的执行去执行中断子程序。和前节谈到的子程 序一样,中断子程序也是为某些特定的控制功能而设定的。 和普通子程序不同的是,中断子程序是为随机发生且 必须立即响应的事件安排的,其响应时间应小于机器的扫 描周期。 能引起中断的信号叫中断源,S7-200系列CPU支持34 种中断源,如表9-5所示。从表中可以看出,不同的CPU对 中断事件的支持是不同的(表中Y表示该型号CPU具有该种中 断功能)。
22 2012-8-29
中断事件的优先级顺序:
23
2012-8-29
24
2012-8-29
三、中断指令及中断程序
中断是计算机为应对紧急事件而设立的一种运行 机制,但是并不一定在计算机的任何运行时间点上都 可以允许中断的发生。对于PLC应用程序的运行来说, 任何时候都响应内部及外部的所有中断称为全局开中 断,任何时候都不响应各种中断称为全局禁止中断。 当PLC进入RUN状态时,自动进入全局禁止中断状 态,如需在适当的时候开放全局中断时,可在用户程 序中使用全局中断允许指令(ENI),反之,如需全局 禁止中断时,可在应用程序中的适当位置使用全局中 断禁止指令(DISI)。执行DISI指令不会影响当前正 在执行中的中断程序的执行,只有当该中断程序执行 完毕后,DISI功能才有效。
12
2012-8-29
二、子程序的执行过程及子程序的嵌套
当有一个子程序被调用时,系统会保存 当前的逻辑堆栈,置栈顶值为1,堆栈的其 他值为零,把控制权交给被调用的子程序。 当子程序完成后,恢复逻辑堆栈,把控制权 交还给调用程序。 S7-200具有子程序嵌套调用功能,嵌 套可以达到8层。但在中断子程序中仅能有 一次子程序调用。
5
2012-8-29
二、跳转指令的应用实例
6
2012-8-29
7
2012-8-29
第二节
循环指令
一、循环指令及其功能 FOR-NEXT指令循环执行FOR(开始)指 令和NEXT(结束)指令之间的循环体(程序) 指令段一定次数。 FOR—NEXT指令可以实现8层嵌套。FOR 指令和NEXT指令必须成对使用,在嵌套程序 中距离最近的FOR指令及NEXT指令是一对。
16
2012-8-29
表9—5 S7—200系列CPU支持的中断(事件)源:
17
2012-8-29
21
22 18 2012-8-29
中断事件可分为以下三大类:
1.通讯口中断 通讯口中断含端口0及端口1接收及发送相关中断。 PLC的串行通讯口可由梯形图或指令表程序来控制,这 种通讯口的操作模式称为自由端口模式。在自由端口 模式下,可由用户程序设置波特率、字符的位数、奇 偶校验及通信协议。接收及发送中断可以简化程序对 中断的控制。
29 2012-8-29
下降沿中断服务程序举例:
30
2012-8-29
用定时中断读取模拟量数值举例:
31
2012-8-29
2
2012-8-29
第一节
跳转指令
一、跳转及标号指令 跳转指令使程序流程跳转到指定标号N处的程序分支执 行。
跳转指令
标号指令
N
(JMP)
N LBL
JMP N
3
LBL N
2012-8-29
左图是跳转指令在梯形图 中应用的例子。Network 4中的 跳转指令使程序流程跨过一些 程序分支(Network5~15)跳转 到标号3处继续运行。跳转指令 中的“N”与标号指令中的“N” 值相同。
8
2012-8-29
FOR EN ENO
(NEXT)
INDX
INIT FINAL
FOR
INDX,INIT,FINAL
NEXT
有效操作数:
9
2012-8-29
二、循环指令的应用实例
1 2
来自百度文库
10
2012-8-29
第三节
子程序指令
一、子程序指令
子程序调用指令将程序控制权交给子程序SBR-N,该 子程序执行完毕,程序控制权回到子程序调用指令的下一 条指令。 子程序指令含子程序调用指令和子程序返回指令。子 程序条件返回指令(CRET)在条件满足时中止子程序执行。
LAD
SBR-N
EN
子程序 调用指令
STL LAD CALL SBR-N
子程序
(RET)
CRET
2012-8-29
条件返回
11
指令
STL
子程序是为一些特定的控制要求编制的相对独 立的程序。 为了和主程序区别,S7—200规定子程序与中 断子程序分区排列在主程序的后边,且当子程序 或中断子程序数量多于1时,分序列编号加以区别。 如子程序中没有安排CRET指令,子程序将在 子程序运行完毕后返回。
4
2012-8-29
使用跳转指令应注意以下几点:
可以有多条跳转指令使用同一标号,但不允许一个跳转指 令对应两个标号,即在同一程序中不允许存在两个相同的 标号。 可以在主程序、子程序或者中断服务程序中使用跳转指令, 跳转与之相应的标号必须位于同一段程序中。一般将标号 指令设在相关跳转指令之后,这样可以减少程序的执行时 间。 在跳转条件中引入上升沿或下降沿脉冲指令时,跳转只执 行一个扫描周期,但若用特殊辅助继电器SM0.0作为跳转指 令的工作条件,跳转就成为无条件跳转。
中断分离指令
DTCH EN ENO
ATCH EN INT ENO
EVNT EVNT
ATCH INT,EVNT
DTCH EVNT
操作数:
28
2012-8-29
四、中断程序的执行
中断是随机产生的,即在主程序执行的过程中随 时都可能产生中断,为了减少主程序中断的不良影响, 被中断的时间越短越好,这就要求中断子程序尽可能 简洁。在CPU接到中断申请且准备响应时,系统先将 反映指令执行情况及累加器状态的逻辑堆栈、累加器、 寄存器及特殊标志位保存,然后再去执行中断程序。 对于通讯及外部中断,每一个中断申请一般只执 行中断程序一次。对于时基或定时器中断,每隔一定 的时间执行中断程序一次。当中断程序执行完毕时, 恢复中断执行前保存的数据,程序返回主程序原断点 执行。
25
2012-8-29
相对全局开放中断的条件下,单个中断可独 立地开放与禁止,所用的指令分别为中断连指令 (ATCH) 及中断分离指令(DTCH)。ATCH指令更重要 的职能是将中断事件与该事件发生时需执行的中 段程序段连接起来。在ATCH指令参数中,设有中 断事件号及所对应的中段程序号,而所有的中断 程序都依次排列在主程序之后,并用中断标号指 令(INT)标示号码。在ATCH指令指定相应中断子程 序时,自动允许中断。与此相反,中断分离指令 DTCH分离中断事件与中断子程序的联系,自动关 闭中断。
21 2012-8-29
二、中断优先级及中断队列 由于中断控制是脱离于程序的扫描执行机制 的,如有多个突发事件出现时处理也必须有个秩 序,这就是中断优先级。S7—200 PLC中断优先组 别从大的方面按下列顺序分级: 通信(最高级); I/O(含HSC和脉冲列输出)(中极); 定时(最低级)。 在每一级中又可分别分级。 优先级还有以下约定。
王兵
1
2012-8-29
跳转指令、循环指令、子程序指令、中断指 令统称为程序控制类指令。 程序控制类指令用于程序执行流程的控制。 对一个扫描周期而言,跳转指令可以使程序出现 跨越或跳跃以实现程序段的选择;子程序指令可 调用某段子程序;循环指令可多次重复执行指定 的程序段;中断指令则用于中断信号引起的子程 序调用。 程序控制类指令可以影响程序执行的流向及 内容,对合理安排程序的结构,提高程序功能以 及实现某些技巧性运算,具有重要的意义。
19
2012-8-29
2.I/O中断 I/O中断包括上升沿中断及下降沿中断、 高速计数器中断和脉冲串输出中断。S7- 200CPU可用输入I0.0~I0.3的上升沿或下降 沿产生中断,并可用这些上升沿或下降沿信 号来表示某些需要及时响应的故障状态。
20
2012-8-29
3.时基中断
时间中断包括定时中断及定时器T32/96中断, S7-200 CPU可支持2个定时中断。定时中断按周 期时间反复执行。周期时间范围为5ms~255ms, 增量为lms。定时中断0的周期时间应写入SMB34, 定时中断1的周期时间应写入SMB35。每当定时器 溢出时,定时中断事件把控制权交给相应的中断 程序,通常可用定时中断以固定的时间间隔去控 制模拟量输入的采样或者去执行一个PID回路。 定时器T32/96中断允许及时地响应一个给定 的时间间隔。这些中断只支持1ms分辨率的延时接 通定时器(TON)和延时断开定时器(TOF)T32和T96。 T32和T96的工作方式与普通定时器相同。中断允 许时且定时器的当前值等于预置值时,执行被连 接的中断程序。
26
2012-8-29
LAD 中断 允许指令 中断 禁止指令 STL LAD STL
(ENI)
ENI
(DISI)
DISI
中断条件
返回指令 中断无条件 返回指令 中断标号
LAD
STL LAD
(RETI)
CRETI
(RETI)
RETI N INT INT N
2012-8-29
STL
LAD
STL
27
中断连接指令
13 2012-8-29
子程序举例:
14
2012-8-29
子程序的嵌套举例:
15
2012-8-29
第四节
中断指令
一、中断与中断源
中断是计算机特有的工作方式,指主程序执行过程中, 中断主程序的执行去执行中断子程序。和前节谈到的子程 序一样,中断子程序也是为某些特定的控制功能而设定的。 和普通子程序不同的是,中断子程序是为随机发生且 必须立即响应的事件安排的,其响应时间应小于机器的扫 描周期。 能引起中断的信号叫中断源,S7-200系列CPU支持34 种中断源,如表9-5所示。从表中可以看出,不同的CPU对 中断事件的支持是不同的(表中Y表示该型号CPU具有该种中 断功能)。
22 2012-8-29
中断事件的优先级顺序:
23
2012-8-29
24
2012-8-29
三、中断指令及中断程序
中断是计算机为应对紧急事件而设立的一种运行 机制,但是并不一定在计算机的任何运行时间点上都 可以允许中断的发生。对于PLC应用程序的运行来说, 任何时候都响应内部及外部的所有中断称为全局开中 断,任何时候都不响应各种中断称为全局禁止中断。 当PLC进入RUN状态时,自动进入全局禁止中断状 态,如需在适当的时候开放全局中断时,可在用户程 序中使用全局中断允许指令(ENI),反之,如需全局 禁止中断时,可在应用程序中的适当位置使用全局中 断禁止指令(DISI)。执行DISI指令不会影响当前正 在执行中的中断程序的执行,只有当该中断程序执行 完毕后,DISI功能才有效。
12
2012-8-29
二、子程序的执行过程及子程序的嵌套
当有一个子程序被调用时,系统会保存 当前的逻辑堆栈,置栈顶值为1,堆栈的其 他值为零,把控制权交给被调用的子程序。 当子程序完成后,恢复逻辑堆栈,把控制权 交还给调用程序。 S7-200具有子程序嵌套调用功能,嵌 套可以达到8层。但在中断子程序中仅能有 一次子程序调用。
5
2012-8-29
二、跳转指令的应用实例
6
2012-8-29
7
2012-8-29
第二节
循环指令
一、循环指令及其功能 FOR-NEXT指令循环执行FOR(开始)指 令和NEXT(结束)指令之间的循环体(程序) 指令段一定次数。 FOR—NEXT指令可以实现8层嵌套。FOR 指令和NEXT指令必须成对使用,在嵌套程序 中距离最近的FOR指令及NEXT指令是一对。
16
2012-8-29
表9—5 S7—200系列CPU支持的中断(事件)源:
17
2012-8-29
21
22 18 2012-8-29
中断事件可分为以下三大类:
1.通讯口中断 通讯口中断含端口0及端口1接收及发送相关中断。 PLC的串行通讯口可由梯形图或指令表程序来控制,这 种通讯口的操作模式称为自由端口模式。在自由端口 模式下,可由用户程序设置波特率、字符的位数、奇 偶校验及通信协议。接收及发送中断可以简化程序对 中断的控制。
29 2012-8-29
下降沿中断服务程序举例:
30
2012-8-29
用定时中断读取模拟量数值举例:
31
2012-8-29
2
2012-8-29
第一节
跳转指令
一、跳转及标号指令 跳转指令使程序流程跳转到指定标号N处的程序分支执 行。
跳转指令
标号指令
N
(JMP)
N LBL
JMP N
3
LBL N
2012-8-29
左图是跳转指令在梯形图 中应用的例子。Network 4中的 跳转指令使程序流程跨过一些 程序分支(Network5~15)跳转 到标号3处继续运行。跳转指令 中的“N”与标号指令中的“N” 值相同。
8
2012-8-29
FOR EN ENO
(NEXT)
INDX
INIT FINAL
FOR
INDX,INIT,FINAL
NEXT
有效操作数:
9
2012-8-29
二、循环指令的应用实例
1 2
来自百度文库
10
2012-8-29
第三节
子程序指令
一、子程序指令
子程序调用指令将程序控制权交给子程序SBR-N,该 子程序执行完毕,程序控制权回到子程序调用指令的下一 条指令。 子程序指令含子程序调用指令和子程序返回指令。子 程序条件返回指令(CRET)在条件满足时中止子程序执行。
LAD
SBR-N
EN
子程序 调用指令
STL LAD CALL SBR-N
子程序
(RET)
CRET
2012-8-29
条件返回
11
指令
STL
子程序是为一些特定的控制要求编制的相对独 立的程序。 为了和主程序区别,S7—200规定子程序与中 断子程序分区排列在主程序的后边,且当子程序 或中断子程序数量多于1时,分序列编号加以区别。 如子程序中没有安排CRET指令,子程序将在 子程序运行完毕后返回。
4
2012-8-29
使用跳转指令应注意以下几点:
可以有多条跳转指令使用同一标号,但不允许一个跳转指 令对应两个标号,即在同一程序中不允许存在两个相同的 标号。 可以在主程序、子程序或者中断服务程序中使用跳转指令, 跳转与之相应的标号必须位于同一段程序中。一般将标号 指令设在相关跳转指令之后,这样可以减少程序的执行时 间。 在跳转条件中引入上升沿或下降沿脉冲指令时,跳转只执 行一个扫描周期,但若用特殊辅助继电器SM0.0作为跳转指 令的工作条件,跳转就成为无条件跳转。
中断分离指令
DTCH EN ENO
ATCH EN INT ENO
EVNT EVNT
ATCH INT,EVNT
DTCH EVNT
操作数:
28
2012-8-29
四、中断程序的执行
中断是随机产生的,即在主程序执行的过程中随 时都可能产生中断,为了减少主程序中断的不良影响, 被中断的时间越短越好,这就要求中断子程序尽可能 简洁。在CPU接到中断申请且准备响应时,系统先将 反映指令执行情况及累加器状态的逻辑堆栈、累加器、 寄存器及特殊标志位保存,然后再去执行中断程序。 对于通讯及外部中断,每一个中断申请一般只执 行中断程序一次。对于时基或定时器中断,每隔一定 的时间执行中断程序一次。当中断程序执行完毕时, 恢复中断执行前保存的数据,程序返回主程序原断点 执行。
25
2012-8-29
相对全局开放中断的条件下,单个中断可独 立地开放与禁止,所用的指令分别为中断连指令 (ATCH) 及中断分离指令(DTCH)。ATCH指令更重要 的职能是将中断事件与该事件发生时需执行的中 段程序段连接起来。在ATCH指令参数中,设有中 断事件号及所对应的中段程序号,而所有的中断 程序都依次排列在主程序之后,并用中断标号指 令(INT)标示号码。在ATCH指令指定相应中断子程 序时,自动允许中断。与此相反,中断分离指令 DTCH分离中断事件与中断子程序的联系,自动关 闭中断。
21 2012-8-29
二、中断优先级及中断队列 由于中断控制是脱离于程序的扫描执行机制 的,如有多个突发事件出现时处理也必须有个秩 序,这就是中断优先级。S7—200 PLC中断优先组 别从大的方面按下列顺序分级: 通信(最高级); I/O(含HSC和脉冲列输出)(中极); 定时(最低级)。 在每一级中又可分别分级。 优先级还有以下约定。