1、1 目录 第 6 章 数据处理、运算指令及应用 . 2 6.1 数据处理指令 . 2 6.2 算术运算、逻辑运算指令 . 14 6.3 表功能指令 数据表是用来存放字型数据的表格,如图 6-27 所示。 . 23 第 7 章 中断指令、高速计数器、高速脉冲输出与 PID 控制 . 27 7. 1 中断指令 . 27 7.2 高速计数器 . 31 7.3 高速脉冲输出 . 41 7.4 PID 控制控制 . 56 第 8 章 可编程序控制器的通信及网络 . 66 8.1 网络通信概述 . 66 8.2 西门子 S7 系列 PLC 的网络类型及配置 . 68 8.3 S7-200 PLC 的通信指
2、令与通信实例 . 69 2 第第 6 章章 数据处理、运算指令及应用数据处理、运算指令及应用 本章要点 数据传送、字节交换、字节立即读写、移位、转换指令的介绍、应用及实训 算术运算、逻辑运算、递增/递减指令的介绍、应用及实训 表的定义、填表指令、表取数指令、填充指令、表查找指令的介绍 6.1 数据处理指令 6.1.1 数据传送指令及比较指令 1. 字节、字、双字、实数单个数据传送指令 MOV LAD STL MOVB IN,OUT MOVW IN,OUT MOVD IN,OUT MOVR IN,OUT 【例【例 6-1】将变量存储器】将变量存储器 VW10 中内容送到中内容送到 VW100 中
3、。中。 2. 字节、字、双字、实数数据块传送指令 BLKMOV 【例【例 6-2】程序举例:将变量存储器】程序举例:将变量存储器 VB20 开始的开始的 4 个字节(个字节(VB20- VB23)中的数据,移至)中的数据,移至 VB100 开始的开始的 4 个字节中(个字节中(VB100-VB103) 。) 。 3 程序执行后,将 VB20VB23 中的数据 30、31、32、33 送到 VB100VB103。 执行结果如下:数组 1 数据 30 31 32 33 数据地址 VB20 VB21 VB22 VB23 块移动执行后:数组 2 数据 30 31 32 33 数据地址 VB100 VB
4、101 VB102 VB103 3. 字节、字、双字、实数数据比较指令 指令格式与比较范围 比较指令在 S7-200 中以“功能触点”的形式使用,如图所示。需要比较的两个操作数分别位于 功能触点的上部与下部,其中上部为需要比较的数据,下部为比较基准数据。 S7-200 允许的操作码可以为:LDX F、 AX F 、 OX F S7-200 允许的比较方式操作如下: =:等于(EQ)比较,IB0= MB0 时触点闭合; :不等于(NE)比较,IB0MB0 时触点闭合; =:大于等于( GE)比较:IB0MB0 时触点闭合: :大于(GT)比较:IB0MB0 时触点闭合; :小于( LT )比较;
5、IB0 8FFF,7FFF FFFF8FFF FFFF。 在 S7-200 中的处理是直接比较两个存储器的数据,指令表程序如图所示。 将操作数 1(INl)移动到累加器 1 中; 将操作数 2 (IN2)移动到累加器 l 中,原累加器 1 中的内容(操作数 1)移动到累加器 2 中: 累加器 1 与累加器 2 的内容进行规定的比较; 比较条件满足,功能指令图上部的连线接通。 4 6.1.2 字节交换、字节立即读写指令 1. 字节交换指令:字节交换指令用来交换输入字 IN 的最高位字节和最低位字节。 LAD STL 功能及说明功能及说明 SWAP IN 功能: 使能输入功能: 使能输入 EN 有
6、效时有效时,将输入字将输入字 IN 的高的高 字节与低字节交换,结果仍放在字节与低字节交换,结果仍放在 IN 中中 IN:VW, IW, QW, MW, SW, SMW, T, C, LW, AC。数据类型:字。数据类型:字 【例【例 6-3】字节交换指令应用举例】字节交换指令应用举例 2. 字节立即读写指令 LAD STL 功能及说明功能及说明 BIR IN,OUT 功能:字节立即读功能:字节立即读 IN: IB OUT:VB, IB, QB, MB, SB, SMB, LB, AC。 数据类型:字节数据类型:字节 BIW IN,OUT 功能:字节立即写功能:字节立即写 IN:VB, IB,
7、 QB, MB, SB, SMB, LB, AC, 常量常量 OUT:QB 数据类型:字节数据类型:字节 字节立即读指令(MOV-BIR)读取实际输入端 IN 给出的 1 个字节的数值,并将结果写入 OUT 所 指定的存储单元,但输入映像寄存器未更新。 字节立即写指令从输入 IN 所指定的存储单元中读取 1 个字节的数值并写入(以字节为单位)实际 输出 OUT 端的物理输出点,同时刷新对应的输出映像寄存器。 6.1.3 移位指令及应用举例 1. 左、右移位指令 5 说明:在 STL 指令中,若 IN 和 OUT 指定的存储器不同,则须首先使用数据传送指令 MOV 将 IN 中的数据送入 OUT
8、 所指定的存储单元。如: MOVB IN,OUT SLB OUT,N 2. 循环左、右移位指令 在 STL 指令中,若 IN 和 OUT 指定的存储器不同,则须首先使用数据传送指令 MOV 将 IN 中的数 据送入 OUT 所指定的存储单元。如: MOVB IN,OUT SLB OUT,N 【例【例 6-4】程序应用举例,将】程序应用举例,将 AC0 中的字循环右移中的字循环右移 2 位,将位,将 VW200 中的字左移中的字左移 3 位。位。 6 【例【例 6-5】用】用 I0.0 控制接在控制接在 Q0.0Q0.7 上的上的 8 个彩灯循环移位,从右到左以个彩灯循环移位,从右到左以 0.5
9、s 的速度依次点亮,的速度依次点亮, 保持任意时刻只有一个指示灯亮,到达最左端后,再从右到左依次点亮保持任意时刻只有一个指示灯亮,到达最左端后,再从右到左依次点亮 3. 移位寄存器指令(移位寄存器指令(SHRB) (1)移位寄存器指令 SHRB 将 DATA 数值移入移位寄存器。 EN 为使能输入端,连接移位脉冲信号,每次使能有效时,整个移位寄存器移动 1 位。DATA 为数 据输入端,连接移入移位寄存器的二进制数值,执行指令时将该位的值移入寄存器。 S_BIT 指定移位寄存器的最低位。 N 指定移位寄存器的长度和移位方向,移位寄存器的最大长度为 64 位,N 为正值表示左移位,输 入数据(D
10、ATA)移入移位寄存器的最低位(S_BIT) ,并移出移位寄存器的最高位。 (2)DATA 和 S-BIT 的操作数为 I, Q, M, SM, T, C, V, S, L 。 数据类型为:BOOL 变量。 N 的操作数为 VB, IB, QB, MB, SB, SMB, LB, AC, 常量。 数据类型为:字节。 【例【例 6-6】移位寄存器应用举例。】移位寄存器应用举例。 7 【例【例 6-7】用】用 PLC 构成喷泉的控制。用灯构成喷泉的控制。用灯 L1L12 分别代表喷泉的分别代表喷泉的 12 个喷水注。个喷水注。 (1)控制要求:按下起动按钮后,隔灯闪烁,)控制要求:按下起动按钮后,
11、隔灯闪烁,L1 亮亮 0.5 秒后灭,接着秒后灭,接着 L2 亮亮 0.5 秒后灭,秒后灭, 接着接着 L3 亮亮 0.5 秒后灭,接着秒后灭,接着 L4 亮亮 0.5 秒后灭,接着秒后灭,接着 L5、L9 亮亮 0.5 秒后灭,接着秒后灭,接着 L6、L10 亮亮 0.5 秒后灭,秒后灭, 接着接着 L7、L11 亮亮 0.5 秒后灭,接着秒后灭,接着 L8、L12 亮亮 0.5 秒后灭,秒后灭,L1 亮亮 0.5 秒后灭,如此循秒后灭,如此循环下去,直环下去,直 至按下停止按钮。如图至按下停止按钮。如图 5-8 所示。所示。 (2)I/O 分配 输入 输出 (常开)起动按钮:I0.0 L1
12、:Q0.0 L5、L9: Q0.4 (常闭)停止按钮:I0.1 L2:Q0.1 L6、L10:Q0.5 L3:Q0.2 L7、L11:Q0.6 L4:Q0.3 L8、L12:Q0.7 8 分析:应用移位寄存器控制,根据喷泉模拟控制的 8 位输出(Q0.0Q0.7) ,须指定一个 8 位的移 位寄存器(M10.1M11.0) ,移位寄存器的 S-BIT 位为 M10.1,并且移位寄存器的每一位对应一个 输出。 9 6.1.4 转换指令 转换指令是对操作数的类型进行转换, 并输出到指定目标地址中去。 转换指令包括数据的类型转换、 数据的编码和译码指令以及字符串类型转换指令。 不同功能的指令对操作数
13、要求不同。类型转换指令可将固定的一个数据用到不同类型要求的指令 中,包括字节与字整数之间的转换,整数与双整数的转换,双字整数与实数之间的转换,BCD 码与 整数之间的转换等。 1. 字节与字整数之间的转换 LAD STL BTI IN,OUT ITB IN,OUT 操作数及 数据类型 IN:VB, IB, QB, MB, SB, SMB, LB, AC, 常 量, 数据类型:字节 OUT: VW, IW, QW, MW, SW, SMW, LW, T, C, AC,数据类型:整数 IN:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量,数据类型:整数
14、 OUT:VB, IB, QB, MB, SB, SMB, LB, AC, 数据 类型:字节 功能及 说明 BTI 指令将字节数值(IN)转换成整数值, 并将结果置入 OUT 指定的存储单元。 因为字 节不带符号,所以无符号扩展 ITB 指令将字整数(IN)转换成字节,并将结果 置入 OUT 指定的存储单元。输入的字整数 0 至 255 被转换。超出部分导致溢出,SM1.1=1。输 出不受影响 2. 字整数与双字整数之间的转换 10 LAD STL ITD IN,OUT DTI IN,OUT 操 作 数 及 数据类型 IN:VW, IW, QW, MW, SW, SMW, LW, T, C,
15、AIW, AC, 常量, 数据类型:整数 OUT:VD, ID, QD, MD, SD, SMD, LD, AC,数据类型:双整数 IN:VD, ID, QD, MD, SD, SMD, LD, HC, AC,常量,数据类型:双整数 OUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC, 数据类型:整数 功能及 说明 ITD 指令将整数值(IN)转换成双整数 值, 并将结果置入OUT指定的存储单元。 符号被扩展 DTI 指令将双整数值(IN)转换成整数值, 并将结果置入 OUT 指定的存储单元。如果 转换的数值过大,则无法在输出中表示,产 生溢出 SM1.1=1,
16、输出不受影响 3. 双整数与实数之间的转换 LAD STL DTR IN,OUT ROUND IN,OUT TRUNC IN,OUT 功能及 说明 DTR 指令将 32 位带符号整 数 IN 转换成 32 位实数, 并 将结果置入 OUT 指定的存 储单元 ROUND 指令按小数部分四舍 五入的原则,将实数(IN)转 换成双整数值,并将结果置入 OUT 指定的存储单元 TRUNC(截位取整)指令按 将小数部分直接舍去的原则, 将 32 位实数(IN)转换成 32 位双整数, 并将结果置入OUT 指定存储单元 4. BCD 码与整数的转换 LAD STL BCDI OUT IBCD OUT 功能
17、及 说明 BCD-I 指令将二进制编码的十进制数 IN 转换成整数,并将结果送入 OUT 指 定的存储单元。IN 的有效范围是 BCD 码 0 至 9999 I-BCD指令将输入整数IN转换成二进制编码 的十进制数, 并将结果送入 OUT 指定的存储 单元。IN 的有效范围是 0 至 9999 LAD 和 STL 指令中, IN 和 OUT 的操作数地址相同。 若 IN 和 OUT 操作数地址不是同一个存储器, 对应的语句表指令为: MOV IN OUT BCDI OUT 5. 译码和编码指令 11 LAD STL DECO IN,OUT ENCO IN,OUT 操 作 数 及 数据类型 IN
18、:VB, IB, QB, MB, SMB, LB, SB, AC, 常 量。数据类型:字节 OUT:VW, IW, QW, MW, SMW, LW, SW, AQW, T, C, AC。数据类型:字 IN:VW, IW, QW, MW, SMW, LW, SW, AIW, T, C, AC, 常量。数据类型: 字 OUT: VB, IB, QB, MB, SMB, LB, SB, AC。 数据 类型:字节 功能及 说明 译码指令根据输入字节(IN)的低 4 位表 示的输出字的位号,将输出字的相对应的 位,置位为 1,输出字的其他位均置位为 0 编码指令将输入字 (IN) 最低有效位 (其值为
19、1) 的位号写入输出字节(OUT)的低 4 位中 【例【例 6-8】译码编码指令应用举例。】译码编码指令应用举例。 若 (AC2) =2, 执行译码指令, 则将输出字 VW40 的第二位置 1, VW40 中的二进制数为 2#0000 0000 0000 0100; 若(AC3)=2#0000 0000 0000 0100,执行编码指令,则输出字节 VB50 中的码为 2。 6. 七段显示译码指令 LAD STL 功能及操作数 SEG IN,OUT 功能: 将输入字节 (IN) 的低四位确定的 16 进制数 (16#0 F) ,产生相应的七段显示码,送入输出字节 OUT IN:VB, IB,
20、QB, MB, SB, SMB, LB, AC, 常量。OUT:VB, IB, QB, MB, SMB, LB, AC。IN/OUT 的数据类型:字节 【例【例 6-9】编写显示数字】编写显示数字 0 的七段显示码的程序。的七段显示码的程序。 12 7. ASCII 码与十六进制数之间的转换指令 LAD STL ATH IN,OUT,LEN HTA IN,OUT,LEN 操 作 数 及 数据类型 IN/ OUT: VB, IB, QB, MB, SB, SMB, LB。数据类型:字节 LEN:VB, IB, QB, MB, SB, SMB, LB, AC, 常量。数据类型:字节。最大值为 25
21、5 功能及 说明 ASCII 至 HEX(ATH)指令将从 IN 开始的 长度为 LEN 的 ASCII 字符转换成十六进制 数,放入从 OUT 开始的存储单元 HEX 至 ASCII (HTA) 指令将从输入字节 (IN) 开始的长度为 LEN 的十六进制数转换成 ASCII 字符,放入从 OUT 开始的存储单元 6.1.5 天塔之光的模拟控制实训天塔之光的模拟控制实训 1. 实训目的 (1)掌握移位寄存器指令的应用方法 (2)用移位寄存器指令实现天塔之光控制系统 (3)掌握 PLC 的编程技巧和程序调试的方法 2. 控制要求 如图 5-15 所示的天塔的灯光, 可以用 PLC 控制灯光的闪
22、耀移位 及时序的变化等。控制要求如下:按起动按钮,L12L11L10 L8L1L1、L2、L9L1、L5、L8L1、L4、L7L1、L3、 L6L1L2、L3、L4、L5L6、L7、L8、L9L1、L2、L6 L1、L3、L7L1、L4、L8L1、L5、L9L1L2、L3、L4、 L5L6、L7、L8、L9L12L11L10 循环下去,直至按 下停止按钮。 3. I/O 分配 输入 输出 起动按钮:I0.0 L1:Q0.0 L4 Q0.3 L7:Q0.6 L10 Q1.1 停止按钮:I0.1 L2:Q0.1 L5 Q0.4 L8:Q0.7 L11 Q1.2 L3:Q0.2 L6 Q0.5 L9
23、:Q1.0 L12 Q1.3 4. 程序设计 分析:根据灯光闪亮移位,分为 19 步,因此可以指定一个 19 位的移位寄存器(M10.1M10.7, M11.0M11.7,M12.0M12.3) ,移位寄存器的每一位对应一步。而对于输出,如:L1(Q0.0)分 别在“5、6、7、8、9、10、13、14、15、16、17”步时被点亮,即其对应的移位寄存器位“M10.5、 M10.6、M10.7、M11.0、M11.1、M11.2、M11.5、M11.6、M12.0、M12.1”置位为 1 时,Q0.0 置位 13 为 1,所以需要将这些位所对应的常开触点并联后输出 Q0.0,以此类推其他的输出
24、。移位寄存器移 位脉冲和数据输入配合的关系如图 5-16 所示。参考程序如图所示。 14 6.2 算术运算、逻辑运算指令 6.2.1 算术运算指令 整数与双整数加减法指令格式 LAD STL MOVW IN1,OUT +I IN2,0UT MOVW IN1,OUT -I IN2,0UT MOVD IN1,OUT +D IN2,0UT MOVD IN1,OUT +D IN2,0UT 功能 IN1+IN2=OUT IN1-IN2=OUT IN1+IN2=OUT IN1-IN2=OUT 如指定 INI=OUT, 则语句表指令为: +I IN2, OUT; 如指定 IN2=OUT, 则语句表指令为:
25、+I IN1, OUT。在整数减法的梯形图指令中,可以指定 IN1=OUT,则语句表指令为:-I IN2,OUT。 【例【例 6-11】求】求 5000 加加 400 的和,的和,5000 在数据存储器在数据存储器 VW200 中,结果放入中,结果放入 AC0。 15 2. 整数乘除法指令 MOVW IN1, OUT *I IN2,0UT MOVW IN1, OUT /I IN2,0UT MOVD IN1, OUT *D IN2,0UT MOVD IN1, OUT /D IN2,0UT MOVW IN1, OUT MUL IN2, OUT MOVW IN1, OUT DIV IN2,OUT I
26、N1*IN2=OUT IN1/IN2=OUT IN1*IN2=OUT IN1/IN2=OUT IN1*IN2=OUT IN1/IN2=OUT 【例【例 6-12】乘除法指令应用举例】乘除法指令应用举例 注意:因为 VD100 包含:VW100 和 VW102 两个字,VD200 包含:VW200 和 VW202 两个字,所 以在语句表指令中不需要使用数据传送指令。 3. 实数加减乘除指令 16 4. 数学函数变换指令 例如:求 23=EXP(3*LN(2) )=8;27 的 3 次方根=271/3=EXP(1/3*LN(27) )=3。 三角函数指令:将一个实数的弧度值 IN 分别求 SIN、
27、COS、TAN,得到实数运算结果,从 OUT 指 定的存储单元输出。 操作数及数据类型:实数 【例【例 6-14】求】求 45 正弦值正弦值 分析:先将 45 转换为弧度: (3.14159/180)*45,再求正弦值。 LD I0.1 MOVR 3.14159, AC1 /R 180.0, AC1 *R 45.0, AC1 SIN AC1, AC0 6.2.2 逻辑运算指令 17 【例【例 6-15】逻辑运算编程举例】逻辑运算编程举例 /字节与操作字节与操作 LD I0.0 ANDB VB1, VB2 /字或操作字或操作 MOVW VW100, VW300 ORW VW200, VW300
28、/双字异或操作双字异或操作 XORD AC0, AC1 /字节取反操作字节取反操作 MOVB VB5, VB6 INVB VB6 运算过程如下: VB1 VB2 VB2 0001 1100 WAND 1100 1101 0000 1100 VW100 VW200 VW300 0001 1101 1111 1010 WOR 1110 0000 1101 1100 1111 1101 1111 1110 VB5 VB6 0000 1111 INV 1111 0000 6.2.3 递增、递减指令 递增字节(字、双字)和递减字节指令在输入字节(字、双字) 上加 1 或减 1,并将结果置入 OUT 指定
29、的变量中。递增和递减字节运算不带符号。 18 说明: (1)EN 采用一个机器扫描周期的短脉冲触发;使 ENO = 0 的错误条件:SM4.3(运行时间) ,0006 (间接地址) ,SM1.1 溢出) (2)影响标志位:SM1.0 (零) ,SM1.1(溢出) ,SM1.2(负数) 。 (3)在梯形图指令中,IN 和 OUT 可以指定为同一存储单元,这样可以节省内存,在语句表指令 中不需使用数据传送指令。 6.2.4 运算单位转换实训运算单位转换实训 1. 实训目的 (1)掌握算术运算指令和数据转换指令的应用。 (2)掌握建立状态表调试程序的方法及学会数据块的使用。 (3)掌握在工程控制中,
30、进行运算单位转换的的方法及步骤。 2. 实训内容 将英寸转换成厘米,已知 VW100 的当前值为英寸的计数值,1 英寸=2.54 厘米。 3. 写入程序、编译并下载到 PLC 分析:将英寸转换为厘米的步骤为:将 VW100 中的整数值英寸双整数英寸实数英寸实数厘 米整数厘米。 思考题 试用带参数的子程序实现“英寸转换为厘米”,并将其导出。新建一个项目,导入该子程序,并将 10 英寸转换为厘米,看看转换结果如何? 19 6.2.5 控制小车的运行方向实训控制小车的运行方向实训 1.实训目的 (1)掌握数据传送指令和比较指令的实际运用方法。 (2)学会用 PLC 控制小车的运行方向。 2.实训内容
31、 设计一个自动控制小车运行方向的程序,如图 5-24 所示。控制要求如下: (1)当小车所停位置限位开关 SQ 的编号大于呼叫位置按钮 SB 的编号时,小车向左运行到呼叫 位置时停止。 (2)当小车所停位置限位开关 SQ 的编号小于呼叫位置按钮置按钮 SB 的编号时,小车向右运行到呼叫的编号时,小车向右运行到呼叫 位置时停止。位置时停止。 (3)当小车所停位置限位开关 SQ 的编号等于呼叫位置按钮 SB 的编号时,小车不动作。 3.I/O 分配表及外部接线图 4.参考程序 分析: 当按钮接通或行程开关被压下时将呼叫按钮号和行程开关的位号用数据传送指令分别送到字 节 VB1 和 VB2 中,按下
32、起动按钮后,用比较指令将 VB1 和 VB2 进行比较,决定小车左、右行或 停止,当按下停止按钮,小车停止,VB1、VB2 清零。 20 6.2.6 用模拟电位器调节定时器设定值用模拟电位器调节定时器设定值 用模拟电位器调节定时器 T37 的设定值,要求定时范围为 520s。CPU 22I 和 CPU222 只有一个 模拟电位器,其它的 CPU 都有两个模拟电位器。CPU 将电位器 0 和电位器 l 的位置转换为 0255 的数字值,然后分别存入特殊存储器字节 SMB28 和 SMB29 中。用螺钉旋具调整电位器的位置, 即可改变 SMB28 和 SMB29 中的值。 1程序设计 要求在输入信
33、号 I0.4 得电的情况下,用模拟量电位器 0 来设置定时器 T37 的设定值,设定的范 围为为 520s, 即从电位器读出的数字 0255 对应于定时器 520s 的定时值。 设从电位器读出的数 字为 N,则 100ms 定时器的设定值为 (200 50)*N255+ 50=150)*N255+50 (100ms) 为保证运算精度,采用实数运算指令作乘除运算,运算的结果取整后再加 50 存入 VW50 中。对应 的梯形图程序如图所示。 21 6.2.7 触摸屏或组态软件数据显示触摸屏或组态软件数据显示 PLC 程序设计程序设计 通过 VWl0VW28 将 VWl000VWl099 中的 10
34、0 个数据分 l0 页显示到触摸屏或监控软件中, 其显示界面如图所示。 按下“首页”按钮,数据显示第一页;按“下页”钮,数据向下翻页显示,若翻到最后一页再 按“下页”按钮时,数据将返回第一项;按“上页”按钮,数据向上翻页显示,若翻到第一页再按 22 “上页” 按钮时, 数据将返回最后一页。 设 M30.0 为首次显示按钮, M30.1 为上页显示按钮, M30.2 为下页显示按钮,则对应的首页数据显示梯形图如图所示 向下翻页数据显示梯形图如图所示, 向上翻页数据显示梯形图如图所示。 23 6.3 表功能指令 数据表是用来存放字型数据的表格,如图 6-27 所示。 表格的第一个字地址即首地址,为
35、表地址,首地址中的数值是表格的最大长度(TL) ,即最大填表 数。 表格的第二个字地址中的数值是表的实际长度(EC) ,指定表格中的实际填表数。 每次向表格中增加新数据后,EC 加 1。 从第三个字地址开始,存放数据(字) 。表格最多可存放 100 个数据(字) ,不包括指定最大填表数 (TL)和实际填表数(EC)的参数。 要建立表格,首先须确定表的最大填表数。 确定表格的最大填表数后,可用表功能指令在表中存取字型数据。表功能指令包括填表指令,表取 24 数指令,表查找指令,字填充指令。所有的表格读取和表格写入指令必须用边缘触发指令激活。 6.3.1 填表指令 (1) DATA 为数据输入端,
36、其操作数为:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量, *VD, *LD, *AC;数据类型为:整数。 (2)TBL 为表格的首地址,其操作数为:VW, IW, QW, MW, SW, SMW, LW, T, C, *VD, , *LD *AC; 数据类型为:字。 (3)指令执行后,新填入的数据放在表格中最后一个数据的后面,EC 的值自动加 1 【例【例 6-16】填表指令应用举例。将】填表指令应用举例。将 VW100 中的数据中的数据 1111,填入首地址是,填入首地址是 VW200 的数据表中。的数据表中。 6.3.2 表取数指令 先进先
37、出指令(FIFO) :移出表格(TBL)中的第一个数(数据 0) ,并将该数值移至 DATA 指定存 储单元,表格中的其他数据依次向上移动一个位置。 后进先出指令(LIFO) :将表格(TBL)中的最后一个数据移至输出端 DATA 指定的存储单元,表 格中的其他数据位置不变。 25 【例【例 6-17】表取数指令应用举例。从图】表取数指令应用举例。从图 5-30 的数据表中,用的数据表中,用 FIFO,LIFO 指令取数,将取出的数指令取数,将取出的数 值分别放入值分别放入 VW300,VW400 中,程序及运行结果如图所示。中,程序及运行结果如图所示。 6.3.3 表查找指令 表格查找(TB
38、L-FIND)指令在表格(TBL)中搜索符合条件的数据在表中的位置(用数据编号表 示,编号范围为 099) 。其指令格式如图所示。 TBL:为表格的实际填表数对应的地址(第二个字地址) ,即高于对应的“增加至表格”、“后入先出” 或“先入先出”指令 TBL 操作数的一个字地址(两个字节) 。数据类型:字。 PTN:是用来描述查表条件时进行比较的数据。数据类型:整数。 INDX:搜索指针,即从 INDX 所指的数据编号开始查找,并将搜索到的符合条件的数据的编号放 入 INDX 所指定的存储器。数据类型:字。 CMD:比较运算符,其操作数为常量 14,分别代表 =、。数据类型:字节 【例【例 6-
39、18】查表指令应用举例。从】查表指令应用举例。从 EC 地址为地址为 VW202 的表中查找等于的表中查找等于 16#2222 的数。程序及数据的数。程序及数据 表如图所示。表如图所示。 26 为了从表格的顶端开始搜索,AC1 的初始值=0,查表指令执行后 AC1=1,找到符合条件的数据 1。 继续向下查找,先将 AC1 加 1,再激活表查找指令,从表中符合条件的数据 1 的下一个数据开始查 找,第二次执行查表指令后,AC1=4,找到符合条件的数据 4。 继续向下查找,将 AC1 再加 1,再激活表查找指令,从表中符合条件的数据 4 的下一个数据开始查 找,第三次执行表查找指令后,没有找到符合
40、条件的数据,AC1=6(实际填表数) 。 6.3.4 字填充指令 字填充(FILL)指令用输入 IN 存储器中的字值写入输出 OUT 开始 N 个连续的字存储单元中。N 的数据范围:1255。其指令格式如图 5-34 所示。 【例【例 6-19】将】将 0 填入填入 VW0VW18(10 个字) 。程序及运行结果如图个字) 。程序及运行结果如图 5-35 所示。所示。 LD I0.1 FILL +0, VW0, 10 可以看出程序运行结果将从 VW0 开始的 10 个字(20 个字节)的存储单元清零。 27 第 7 章 中断指令、高速计数器、高速脉冲输出与 PID 控制 7. 1 中断指令 7
41、. 1. 1 中断源中断源 1. 中断源的类型 中断源即发出中断请求的事件,又叫中断事件。 为了便于识别,系统给每个中断源都分配一个编号,称为中断事件号。 S7-200 系列可编程控制器最多有 34 个中断源, 分为三大类:通信中断、输入/输出中断和时基中断。 (1)通信中断 在自由口通信模式下,用户可通过编程来设置波特率、奇偶校验和通信协议等参数。用户通过编程 控制通讯端口的事件为通信中断。 (2)I/O 中断 I/O 中断包括外部输入上升/下降沿中断、高速计数器中断和高速脉冲输出中断。 S7-200 用输入(I0.0、I0.1、I0.2 或 I0.3)上升/下降沿产生中断。 高速计数器中断
42、指对高速计数器运行时产生的事件实时响 应,包括当前值等于预设值时产生的中断,计数方向的改变时产生的中断或计数器外部复位产生的 中断。 脉冲输出中断是指预定数目脉冲输出完成而产生的中断。 (3)时基中断 时基中断包括定时中断和定时器 T32/T96 中断。 定时中断用于支持一个周期性的活动。周期时间从 1 毫秒至 255 毫秒,时基是 1 毫秒。使 用定时中断 0,必须在 SMB34 中写入周期时间;使用定时中断 1,必须在 SMB35 中写入 周期时间。将中断程序连接在定时中断事件上,若定时中断被允许,则计时开始,每当达 到定时时间值,执行中断程序。定时中断可以用来对模拟量输入进行采样或定期执
43、行 PID 回路。 定时器 T32/T96 中断指允许对定时时间间隔产生中断。这类中断只能用时基为 1ms 的定时 器 T32/T96 构成。当中断被启用后,当前值等于预置值时,在 S7-200 执行的正常 1 毫秒定 时器更新的过程中,执行连接的中断程序。 2. 中断优先级和排对等候 优先级是指多个中断事件同时发出中断请求时,CPU 对中断事件响应的优先次序。 S7-200 规定的中断优先由高到低依次是:通信中断、I/O 中断和定时中断。 每类中断中不同的中断事件又有不同的优先权,如表 6-2 所示 。 一个程序中总共可有 128 个中断。 S7-200 在各自的优先级组内按照先来先服务的原
44、则为中断提供服务。在任何时刻,只能执 行一个中断程序。 7. 1.2 中断指令中断指令 28 7. 1. 3 中断程序中断程序 1. 中断程序的概念 中断程序是为处理中断事件而事先编好的程序。中断程序不是由程序调用,而是在中断事件发生时 由操作系统调用。在中断程序中不能改写其他程序使用的存储器,最好使用局部变量。中断程序应 实现特定的任务,应“越短越好”,中断程序由中断程序号开始,以无条件返回指令(CRETI)结束。 在中断程序中禁止使用 DISI、ENI、HDEF、LSCR 和 END 指令。 2. 建立中断程序的方法 方法一:从“编辑”菜单选择插入(Insert) 中断(Interrupt
45、) 。 方法二:从指令树,用鼠标右键单击“程序块”图标并从弹出菜单选择插入(Insert) 中断 (Interrupt) 。 方法三:从“程序编辑器”窗口,从弹出菜单用鼠标右键单击插入(Insert) 中断(Interrupt) 。 程序编辑器从先前的 POU 显示更改为新中断程序,在程序编辑器的底部会出现一个新标记,代表 新的中断程序。 【例【例 7-1】编写由】编写由 I0.1 的上升沿产生的中断事件的初始化程序。的上升沿产生的中断事件的初始化程序。 分析:查表 6-2 可知,I0.1 上升沿产生的中断事件号为 2。所以在主程序中用 ATCH 指令将事件号 2 和中断程序 0 连接起来,并
46、全局开中断。程序如图 6-1 所示。 【例【例 7-2】编程完成采样工作,要求每】编程完成采样工作,要求每 10ms 采样一次采样一次 分析:完成每 10ms 采样一次,需用定时中断,查表 6-2 可知,定时中断 0 的中断事件号为 10。因 此在主程序中将采样周期(10ms)即定时中断的时间间隔写入定时中断 0 的特殊存储器 SMB34, 并将中断事件 10 和 INT-0 连接,全局开中断。在中断程序 0 中,将模拟量输入信号读入,程序如 图所示。 29 【例【例 7-3】利用定时中断功能编制一个程序,实现如下功能:当】利用定时中断功能编制一个程序,实现如下功能:当 I0.0 由由 OFF
47、ON,Q0.0 亮亮 1s,灭,灭 1s,如此循环反复直至,如此循环反复直至 I0.0 由由 ONOFF,Q0.0 变为变为 OFF。 7. 1. 4 中断程序编程实训中断程序编程实训 1. 实训目的 (1)熟悉中断指令的使用方法。 (2)掌握定时中断设计程序的方法。 2. 实训内容 (1)利用 T32 定时中断编写程序,要求产生占空比为 50%,周期为 4s 的的方波信号。 (2)用定时中断实现喷泉的模拟控制,控制要求如例 6-7。 3. 参考程序 (1)产生占空比为 50%,周期为 4s 的的方波信号,主程序和中断程序如图所示 30 (2)喷泉的模拟控制参考程序如图所示。 分析:程序中采用
48、定时中断 0,其中断号为 10,定时中断 0 的周期控制字 SMB34 中的定时时间设 定值的范围为 1-255ms。喷泉模拟控制的移位时间为 0.5s,大于定时中断 0 的最大定时时间设定值 255ms,所以将中断的时间间隔设为 100ms,这样中断执行 5 次,其时间间隔为 0.5s,在程序中用 VB0 来累计中断的次数,每执行一次中断,VB0 在中断程序中加 1,当 VB0=5 时,即时间间隔为 0.5s,QB0 移一位。 7.1.5 彩灯循环点彩灯循环点亮控制亮控制 1控制要求 采用定时器中断的方式实现 Q0.0Q0.7 输出的依次移位(间隔时间 1 s)。按下启动按钮 I0.0,移
49、位从 Q0.0 开始;按下停止按钮 I0.1,移位停止且清 0。 2程序设计 采用移位指令与中断指令的配合完成彩灯依次点亮控制。 按下启动按钮的第一个扫描周期置 QB0 初值并建立 T96 定时器中断事件与中断子程序 0 的连接,实现全局开中断;设置 T96 定时器预 设值为 1s,并保证系统停止时不会有任何输出;编制中断子程序,实现 QB0 的左移位控制。其梯 形图程序如图所示。 31 7.2 高速计数器 CPU22x 系列最高计数频率为 30KHz,用于捕捉比 CPU 扫描速率更快的事件,并产生中断, 执行中断程序,完成预定的操作。高速计数器最多可设置 12 种不同的操作模式 7.2.1
50、占用输入占用输入/输出端子输出端子 32 各高速计数器不同的输入端有专用的功能,如:时钟脉冲端、方向控制端、复位端、起动端。 7.2.2 高速高速计数器的工作模式计数器的工作模式 1. 高速计数器的计数方式 (1)单路脉冲输入的内部方向控制加/减计数 即只有一个脉冲输入端,通过高速计数器的控制字节的第 3 位来控制作加计数或者减计数。该 位=1,加计数;该位=0,减计数。如图 6-6 所示内部方向控制的单路加/减计数 。 (2)单路脉冲输入的外部方向控制加/减计数 即有一个脉冲输入端,有一个方向控制端,方向输入信号等于 1 时,加计数;方向输入信号等 于 0 时,减计数。如图 6-7 所示外部