(1)IN为字型数
据输入端,操作数为:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量, *VD, *LD, *AC;数据类型为:整数。
N的操作数为:VB, IB, QB, MB, SB, SMB, LB, AC, 常量, *VD,
图5-31 例5-19题图
*LD, *AC; 数据类型:字节。
OUT的操作数为:VW, IW, QW, MW, SW, SMW, LW, T, C, AQW, *VD, *LD, *AC;数据类型:整数。 (2)使ENO = 0的错误条件:SM4.3(运行时间),0006(间接地址),0091(操作数超出范围)。 【例5-19】将0填入VW0~VW18(10个字)。程序及运行结果如图5-31所示。
从图5-31中可以看出程序运行结果将从VW0开始的10个字(20个字节)的存储单元清零。
5.4 习题
1. 已知VB10=18,VB20=30,VB21=33,VB32=98。将VB10,VB30,VB31,VB32中的数据分别送到AC1,VB200,VB201,VB202中。写出梯形图及语句表程序。
2. 用传送指令控制输出的变化,要求控制Q0.0~Q0.7对应的8个指示灯,在I0.0接通时,使输出隔位接通,在I0.1接通时,输出取反后隔位接通。上机调试程序,记录结果。如果改变传送的数值,输出的状态如何变化,从而学会设置输出的初始状态。
3. 编制检测上升沿变化的程序。每当I0.0接通一次,使存储单元VW0的值加1,如果计数达到5,输出Q0.0接通显示,用I0.1使Q0.0复位。
4. 用数据类型转换指令实现将厘米转换为英寸。已知1英寸=2.54厘米。 5. 编写输出字符8的七段显示码程序。
6. 编程实现下列控制功能,假设有8个指示灯,从右到左以0.5s的速度依次点亮,任意时刻只有一个指示灯亮,到达最左端,再从右到左依次点亮。
7. 舞台灯光的模拟控制。控制要求:L1、L2、L9→L1、L5、L8→L1、L4、L7→L1、L3、L6→L1→L2、L3、L4、L5→L6、L7、L8、L9→L1、L2、L6→L1、L3、L7→L1、L4、L8→L1、L5、L9→L1→L2、L3、L4、L5→L6、L7、L8、L9→L1、L2、L9→L1、L5、L8……循环下去。
按下面的I/O分配编写程序。
输入 输出
起动按钮:I0.0 L1:Q0.0 L6:Q0.5 停止按钮:I0.1 L2:Q0.1 L7:Q0.6
L3:Q0.2 L8:Q0.7
L4:Q0.3 L9:Q1.0 L5:Q0.4
8. 用算术运算指令完成下列的运算。
1)53 2)求COS30°
9. 将VW100开始的20个字的数据送到VW200开始的存储区。 10. 读程序,给程序加注释。
第6章 特殊功能指令
本章要点
? ? 立即类指令的功能
? ? 中断指令的功能应用举例及实训
? ? 高速计数器指令、高速脉冲输出指令功能应用举例及实训 ? PID指令的原理及PID控制功能的应用 ? ? 时钟指令
6.1 立即类指令
立即类指令是指执行指令时不受S7-200循环扫描工作方式的影响,而对实际的I/O点立即进行读写操作。分为立即读指令和立即输出指令两大类。
立即读指令用于输入I接点,立即读指令读取实际输入点的状态时,并不更新该输入点对应的输入映像寄存器的值。如:当实际输入点(位)是1时,其对应的立即触点立即接通;当实际输入点(位)是0时,其对应的立即触点立即断开。
立即输出指令用于输出Q线圈,执行指令时,立即将新值写入实际输出点和对应的输出映像寄存器。 立即类指令与非立即类指令不同,非立即指令仅将新值读或写入输入/输出映像寄存器。 立即类指令的格式及说明如表6-1所示。
表6-1 立即类指令的格式及说明
LAD LDI bit STL AI bit OI bit 说明 常开立即触点可以 LDNI bit ANI bit ONI bit 常闭立即触点可以立即输出 立即置位 Bit:Q,数据类型:布尔 N: VB, IB, QB, MB, SMB, SB, LB, AC, 常量, *VD, *AC, *LD 数据类型:字节 立即复位 =I bit SI bit,N RI bit,N 装载,串联,并联。 装载,串联,并联。 Bit:I 数据类型:BOOL 操作数及数据类型 Bit:Q 数据类型:BOOL 6.2 中断指令
S7-200设置了中断功能,用于实时控制、高速处理、通信和网络等复杂和特殊的控制任务。中断就是
终止当前正在运行的程序,去执行为立即响应的信号而编制的中断服务程序,执行完毕再返回原先被终止的程序并继续运行。
6.2.1 中断源
1. 中断源的类型
中断源即发出中断请求的事件,又叫中断事件。为了便于识别,系统给每个中断源都分配一个编号,称为中断事件号。S7-200系列可编程控制器最多有34个中断源,分为三大类:通信中断、输入/输出中断和时基中断。
(1)通信中断
在自由口通信模式下,用户可通过编程来设置波特率、奇偶校验和通信协议等参数。用户通过编程控制通讯端口的事件为通信中断。
(2)I/O中断
I/O中断包括外部输入上升/下降沿中断、高速计数器中断和高速脉冲输出中断。S7-200用输入(I0.0、I0.1、I0.2或I0.3)上升/下降沿产生中断。这些输入点用于捕获在发生时必须立即处理的事件。高速计数器中断指对高速计数器运行时产生的事件实时响应,包括当前值等于预设值时产生的中断,计数方向的改变时产生的中断或计数器外部复位产生的中断。脉冲输出中断是指预定数目脉冲输出完成而产生的中断。
(3)时基中断
时基中断包括定时中断和定时器T32/T96中断。定时中断用于支持一个周期性的活动。周期时间从1毫秒至255毫秒,时基是1毫秒。使用定时中断0,必须在SMB34中写入周期时间;使用定时中断1,必须在SMB35中写入周期时间。将中断程序连接在定时中断事件上,若定时中断被允许,则计时开始,每当达到定时时间值,执行中断程序。定时中断可以用来对模拟量输入进行采样或定期执行PID回路。定时器T32/T96中断指允许对定时间间隔产生中断。这类中断只能用时基为1ms的定时器T32/T96构成。当中断被启用后,当前值等于预置值时,在S7-200执行的正常1毫秒定时器更新的过程中,执行连接的中断程序。
2. 中断优先级和排对等候
优先级是指多个中断事件同时发出中断请求时,CPU对中断事件响应的优先次序。S7-200规定的中断优先由高到低依次是:通信中断、I/O中断和定时中断。每类中断中不同的中断事件又有不同的优先权,
如表6-2所示。
一个程序中总共可有128个中断。S7-200在各自的优先级组内按照先来先服务的原则为中断提供服务。在任何时刻,只能执行一个中断程序。一旦一个中断程序开始执行,则一直执行至完成。不能被另一个中断程序打断,即使是更高优先级的中断程序。中断程序执行中,新的中断请求按优先级排队等候。中断队列能保存的中断个数有限,若超出,则会产生溢出。中断队列的最多中断个数和溢出标志位如表6-3所示。
表6-2中断事件及优先级
优先级分组 组内优先级 中断事件号 中断事件说明 0 0 通信中断 0 1 1 1 0 1 2 3 4 5 6 7 8 9 10 I/O中断 11 12 13 14 15 16 17 18 19 20 21 22 23 0 定时中断 1 2 3 8 9 23 24 25 26 19 20 0 2 4 6 1 3 5 7 12 27 28 13 14 15 16 17 18 32 29 30 31 33 10 11 21 22 通信口0:接收字符 通信口0:发送完成 通信口0:接收信息完成 通信口1:接收信息完成 通信口1:接收字符 通信口1:发送完成 PTO 0脉冲串输出完成中断 PTO 1脉冲串输出完成中断 I0.0上升沿中断 I0.1上升沿中断 I0.2上升沿中断 I0.3上升沿中断 10.0下降沿中断 I0.1下降沿中断 I0.2下降沿中断 I0.3下降沿中断 HSC0当前值=预置值中断 HSC0计数方向改变中断 HSC0外部复位中断 HSC1当前值=预置值中断 HSC1计数方向改变中断 HSC1外部复位中断 HSC2当前值=预置值中断 HSC2计数方向改变中断 HSC2外部复位中断 HSC3当前值=预置值中断 HSC4当前值=预置值中断 HSC4计数方向改变 HSC4外部复位 HSC5当前值=预置值中断 定时中断0 定时中断1 定时 高速计数器 外部输入 脉冲输出 通信口1 通信口0 中断事件类别 定时器T32 CT=PT中断 定时器T96 CT=PT中断 定时器 表6-3 中断队列的最多中断个数和溢出标志位
队列 CPU 221 CPU 222 CPU 224 CPU 226和CPU 226XM 4 16 8 4 16 8 8 16 8 溢出标志位 SM4.0 SM4.1 SM4.2 通讯中断队列 4 I/O中断队列 16 定时中断队列 8 6.2.2 中断指令
中断指令有4条,包括开、关中断指令,中断连接、分离指令。指令格式如表6-4所示。 1. 开、关中断指令
开中断(ENI)指令全局性允许所有中断事件。关中断(DISI)指令全局性禁止所有中断事件,中断事件的每次出现均被排队等候,直至使用全局开中断指令重新启用中断。
PLC转换到RUN(运行)模式时,中断开始时被禁用,可以通过执行开中断指令,允许所有中断事件。执行关中断指令会禁止处理中断,但是现用中断事件将继续排队等候。
2. 中断连接、分离指令
中断连接指令(ATCH)指令将中断事件(EVNT)与中断程序号码(INT)相连接,并启用中断事件。 分离中断(DTCH)指令取消某中断事件(EVNT)与所有中断程序之间的连接,并禁用该中断事件。 注意:一个中断事件只能连接一个中断程序,但多个中断事件可以调用一个中断程序。
表6-4中断指令格式
LAD DTCH EVNT EVNT:常量, 数据类型:字节 STL 操作数及数据类型 ENI 无 DISI 无 ATCH INT,EVNT INT:常量 0-127 INT/EVNT数据类型:字节 EVNT:常量,CPU 224: 0-23; 27-33 CPU 224: 0-23; 27-33 6.2.3 中断程序
1. 中断程序的概念
中断程序是为处理中断事件而事先编好的程序。中断程序不是由程序调用,而是在中断事件发生时由操作系统调用。在中断程序中不能改写其他程序使用的存储器,最好使用局部变量。中断程序应实现特定的任务,应“越短越好”,中断程序由中断程序号开始,以无条件返回指令(CRETI)结束。在中断程序中禁止使用DISI、ENI、HDEF、LSCR和END指令。
2. 建立中断程序的方法
方法一:从“编辑”菜单→选择插入(Insert)→ 中断(Interrupt)。 方法二:从指令树,用鼠标右键单击“程序块”图标并从弹出菜单→选择插入(Insert)→ 中断(Interrupt)。 方法三:从“程序编辑器”窗口,从弹出菜单用鼠标右键单击插入(Insert)→ 中断(Interrupt)。 程序编辑器从先前的POU显示更改为新中断程序,在程序编辑器的底部会出现一个新标记,代表新