第07章中断及高速处理指令
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.中断连接指令与中断分离指令
• 中断连接指令(ATCH,Attach Interrupt)用来建 立中断事件EVNT(由中断事件号指定)和处理 此事件的中断程序INT(由中断程序号指定)之间 的联系,并使能该中断事件。 • 中断分离指令(DTCH,Detach Interrupt)用来 断开中断事件(EVNT)与中断程序(INT)之间 的联系,并禁止该中断事件。 • 消除中断事件指令(CEVNT,Clear Event)从中 断队列中清除所有EVNT类型的中断事件。
(2)绝对式编码器
• N位绝对式编码器有N个码道,最外层的码 道对应编码的最低位。每一码道有一个光 电耦合器,用来读取该码道的0、1数据。 绝对式编码器输出的N位二进制数反映了运 动物体所处的绝对位置,根据位置的变化 情况,可以判别出旋转的方向。
2.高速计数器的工作模式与外部输入信号
(1)高速计数器的工作模式
OB1 主程序 网络 1 LD MOVB MOVB SM0.1 0 , VB10 // 首次扫描时为 1 // 中断次数计数器清 0
250 , SMB34 // 设定时中断 0 的时 间间隔为 250ms
ATCH
INT_0 , 10
// 连接 INT_0 到定时中 断 0 (事件号 10 )
ENI
// 允许全局中断
3.中断控制
• 经过中断判优后,将优先级最高的中断请 求送给CPU,CPU响应中断后自动保存逻 辑堆栈、累加器和某些特殊标志寄存器位, 即保护现场。中断处理完成后,又自动恢 复这些单元保存起来的数据,即恢复现场。
7.2 高速处理指令
• 高速处理指令有高速计数指令和高速脉冲输出指 令两类。
• 7.2.1 高速计数操作指令
各计数器有专用的时钟脉冲、方向控制、复位及启动输入端子, 有的计数器只有部分输入端子。各高速计数器的外部输入信 号如表7-6和表7-7所示。只有CPU224、CPU226和 CPU226XM有HSC1和HSC2。
表7-7 HSC1和HSC2的外部输入信号
HSC1 模 式 0 1 2 3 4 5 6 I0.6 时钟 时钟 时钟 时钟 时钟 时钟 加时钟 方向 方向 方向 减时钟 复位 复位 启动 复位 复位 启动 I0.7 I1.0 I1.1 I1.2 时钟 时钟 时钟 时钟 时钟 时钟 加时钟 方向 方向 方向 减时钟 复位 复位 启动 复位 复位 启动 I1.3 HSC2 I1.4 I1.5
• 定时中断一旦被允许,中断就会周期性地不断产生,每当 定时时间到时,就会执行被连接的中断程序。如果退出 RUN状态或定时中断被分离,定时中断被禁止。如果执 行了全局中断禁止指令,定时中断事件仍会连续出现,每 个定时中断事件都会进入中断队列,直到中断队列满。
• 【例7-2】定时中断的定时时间最长为255ms,用定时中 断1实现周期为2s的高精度定时。 • 为了实现周期为2s的高精度周期性操作的定时,将定时中 断的定时时间间隔设为250ms,在定时中断1的中断程序 中,将VB0加1,然后用比较触点指令“LD=”判断VB0是 否等于8。若相等(中断了8次,对应的时间间隔为2s), 在中断程序中执行每2s一次的操作,例如采集模拟量输入 的数值和使QB0加1,程序设计如图7-3所示。 • 对于定时间隔不同的任务,可以计算出它们的定时时间的 最大公约数,以此作为定时中断的预置时间。在中断程序 中对中断事件进行计数,根据计数值来处理不同的任务。
CEVNT EVNT
消除中断事件
表7-2 中断指令的有效操作数
输入/输出 数据类型 操作数范围
IN
BYTE
常数(0~27)
EVNT
BYTE
常数 CPU221和CPU222: 0~12,19~23和27~33 CPU224:0~23和27~33 CPU224XP和CPU226: 0~33
1.全局性的中断允许指令与中断禁止
OB1 主程序 网络 1 SM0.1 EN INT_0 0 INT EVNT ATCH EN ENO ATCH ENO
OB1 主程序 网络 1 LD ATCH ATCH ENI 网络 2 LD DTCH 网络 3 LD DISI 中断程序 0 ( INT_0 ) 网络 1 LD SI SM0.0 Q0.0 , 1 // 总为 ON // 使 Q0.0 立即置位 SM5.0 0 M5.0 // I/O 错误标志位 // 禁止 I0.0 的上升沿中断 SM0.1 // 首次扫描时为 1 // 定义 I0.0 的上升沿 中断程序为 INT_0 INT_1 , 3 // 连接 INT_1 到 I0.1 的下降沿中断(事件 3 ) // 允许全局中断 INT_0 , 0
第7章 中断及高速处理指令
7.1 中断程序与中断指令
所谓中断,是当控制系统执行正常程序时,系统 中出现了某些急需处理的异常情况或特殊请求,这 时系统暂时中断现行程序,转去对随机发生的更紧 迫事件进行处理(执行中断服务程序),当该事件 处理完毕后,系统自动回到原来被中断的程序继续 执行。
7.1.1 中断程序
队列 CPU224 CPU226
CPU221、CPU222、 CPU224XP、
描述(0=不溢出,1=溢出)
SM位
通信中断队列溢出
SM4.0
通信中断队列
I/O中断队列 定时中断队列
4
16
I/O中断队列溢出
SM4.1
定时中断队列溢出 8
SM4.2
表7-4各中断队列的最大中断个数
表7-5 中断队列溢出标志位
编码器分为以下2种类型: (1)增量式编码器
根据输出信号的个数,有3种增量式编码器: 1)单通道增量式编码器 2)双通道增量式编码器 3)三通道增量式编码器
A相 B相 90℃ a)A、B 相型编码器正转
A相 B相 b)A、B 相型编码器反转 图 7-4 编码器的输出波形
A相 B相 Z相 c)三 通 道 增 量 式 编 码 器
AIW0 , VW20 QB0
// 每 2s 将 QB0 加 1
定时中断采集模拟量
2.中断优先级
给中断源指定处理的次序就是给中断源确定中断优先级。
中断按以下固定的优先级顺序执行:通信(最高优先级)、I/ O中断和定时中断(最低优先级)。在上述3个优先级范围内, CPU按照先来先服务的原则处理中断,任何时刻只能执行 一个用户中断程序。3个中断队列及其能保存的最大中断 个数如表7-4所示。 如果发生中断过于频繁,使中断产生的速率比可处理的速 率快,或中断被DISI指令禁止,中断队列溢出状态位被置 1,如表7-5所示。只应在中断程序中使用这些位,因为当 队列变空或返回主程序时,这些位会被复位。
• 高速计数器HSC(High Speed Counter)用来累计比 PLC扫描频率高得多的脉冲输入(30kHz),利用产生的 中断事件完成预定的操作。 • PLC的普通计数器的计数过程与扫描工作方式有关。
1.编码器
• 编码器每圈发出一定数量的计数时钟脉冲和一个 复位脉冲,作为高速计数器的输入。高速计数器 有一组预置值,开始运行时装入第一个预置值, 当前计数值小于当前预置值时,设置的输出有效。 当前计数值等于预置值或有外部复位信号时,产 生中断。发生当前计数值等于预置值的中断时, 装载入新的预置值,并设置下一阶段的输出。有 复位中断事件发生时,设置第一个预置值和第一 个输出状态,循环又重新开始。 • 用高速计数器可实现高速运动的精确控制。
// 当 M5.0 接通时,禁止所有中端
中断程序 1 ( INT_1 ) 网络 1 LD RI SM0.0 Q0.0 , 1 // 使 Q0.0 立即复位
I/O 中断应用
(3)时基中断
• 时基中断(Timed Interrupt)包括定时中断和定时器 T32/T96中断。可用定时中断来执行一个周期性的操作, 以1ms为增量单位,周期的时间可取lms~255ms。对定 时中断0,必须把周期时间写入SMB34;对定时中断1, 必须把周期时间写入SMB35。
指令
• 中断允许指令(ENI,Enable Interrupt)全局性 地允许所有被连接的中断事件。 • 禁止中断指令(DISI,Disable Interrupt)全局性 地禁止处理所有中断事件,允许中断排队等候, 但是不允许执行中断程序,直到用全局中断允许 指令ENI重新允许中断。 • 进入RUN模式时自动禁止中断。 • 中断程序有条件返回指令(CRETI,conditional Return from Interrupt)在控制它的逻辑条件满足 时从中断程序返回。
OB1 主程序 网络 1 MOV_B SM0.1 EN ENO 0 IN OUT MOV_B EN 250 IN ENO OUT ATCH EN INT_0 10 INT EVNT ENI 中断程序 0(INT_0) 网络 1 SM0.0 EN VB10 网络 2 8 = =B VB10 IN INC_B ENO OUT MOV_B EN 0 IN ENO OUT MOV_W EN AIW0 IN INC_B EN QB0 IN ENO OUT QB0 ENO OUT VW20 VB10 VB10 ENO SMB34 VB10
表7-1 中断指令的LAD名称及STL指 令格式
LAD RETI ENI DISI ATCH DTCH STL CRETI ENI DISI ATCH INT, EVNT DTCH EVNT 描述 从中断程序有条件返回 允许中断 禁止中断 连接中断事件和中断程序 断开中断事件和中断程序的连接
CLR_EVNT
高速计数器的工作模式分为下面的4大类: 1)无外部方向输入信号的单相加/减计数器(即 带有内部方向控制的单相计数器)(模式0~2) 2)有外部方向输入信号的单相加/减计数器(模式 3~5) 3)有加计数时钟脉冲和减计数时钟脉冲输入的双 相计数器(模式6~8) 4)A/B相正交计数器(模式9~11)
(2)高速计数器的外部输入信号
【例7-1】在I0.0的 上升沿通过中断使 Q0.0立即置位。在 I0.1的下降沿通过 中断使Q0.0立即复 位。程序设计如图 7-2所示。
INT_1 3
INT EVNT ENI
网络 2 SM5.0 EN 网络 3 M5.0 DISI 中断程序 0(INT_0) 网络 1 SM0.0 Q0.0 SI 1 中断程序 1(INT_1) 网络 1 SM0.0 Q0.0 RI 1 图 7-2 0 EVNT DTCH ENO
中断程序 0 ( INT_0 ),每隔 250ms 中断一次 网络 1 LD INCB 网络 2 LDB= MOVB MOVW INCB 图 7-3 8 , VB10 0 , VB10 // 如果中断了 8 次( 2s) // 中断次数计数器清 0 // 读 AIW0 的值 SM0.0 VB10 // 该位总为 ON // 中断次数计数器加 1
• 中断程序必须由三部分构成:中断程序标号(即 中断事件的编号)、中断程序指令和无条件返回 指令。 • 在中断程序中不能使用DISI、ENI、HDEF、 LSCR和END指令。 • 在主程序和中断程序之间正确共享数据的编程技 巧有以下3条: • (1)STL程序共享单个变量 • (2)LAD程序共享单个变量 • (3)STL或LAD程序共享多个变量
Fra Baidu bibliotek
7.1.2 中断指令
各种中断指令的LAD指令格式如图7-1所示。LAD指令名称及 STL指令格式如表7-1所示,指令的有效操作数见表7-2。
ATCH EN INT EVNT 图 7-1 中 断 指 令 的 LAD 指 令 格 式 ENO EN EVNT DTCH ENO CLR_EVNT EN EVNT RETI ENO ENI DISI
7.1.3 中断源
• 1.中断源及种类
中断源是中断事件向PLC发出中断请求的来源。 S7-200 CPU最多可以有34个中断源,这些中断 源大致分为三大类:通信口中断、输入/输出 (I/O)中断和时基中断。 (1)通信口中断 (2)I/O中断 I/O中断包括上升沿中断或下降沿中断、高速计数器 (HSC)中断和脉冲串输出(PTO)中断。CPU 可用输入点I0.0~I0.3的上升沿或下降沿产生中断。