Download presentation
Presentation is loading. Please wait.
Published byIvan Darmadi Modified 6年之前
1
第4章 基本指令 4.1 位操作类指令 4.2 运算指令 4.3 其他数据处理指令 4.4 表功能指令 4.5 转换指令
2
本章学习目的 l 位操作类指令,主要是位操作及运算指令,与时也包含与位操作密切相关的定时器和计数器指令等。
返回本章首页
3
4.1 位操作类指令 4.1.1 指令使用概述 4.1.2 基本逻辑指令 4.1.3 复杂逻辑指令 4.1.4 定时器指令
4.1 位操作类指令 4.1.1 指令使用概述 4.1.2 基本逻辑指令 4.1.3 复杂逻辑指令 4.1.4 定时器指令 4.1.5 计数器指令 4.1.6 比较 返回本章首页
4
4.1.1 指令使用概述 1. 主机的有效编程范围 存储器的存储容量及各编程元件的有效编程范围如右表4.1所示。
5
许多指令中含有操作数,操作数的有效编址范围如表4.2所示。
6
(1)指令例 整数加法 +I,整数加法指令。使能输入有效时,将两个单字长(16位)的符号整数IN1和IN2相加,产生一个16位整数结果输出(OUT)。 在LAD和FBD中,以指令盒形式编程。指令盒的执行结果:IN1+IN2=OUT 在STL中,执行结果:IN1+OUT=OUT IN1和IN2的寻址范围:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常数。 OUT的寻址范围:VW、IW、QW、MW、SW、SMW、LW、T、C、AC、*VD、*AC和*LD。
7
本指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出);SM1.2(负)
使能流输出ENO断开的出错条件:SM1.1(溢出);SM4.3(运行时间);0006(间接寻址) 指令格式: +I IN1, OUT
8
本指令在梯形图和语句表中的编程如图4.1所示。
例: +I VW0, VW4 本指令在梯形图和语句表中的编程如图4.1所示。 图4.1 整数加法
9
3. 梯形图的基本绘制规则 (1)Network (2)能流/使能 (3)编程顺序 (4)编号分配 (5)内、外触点的配合
(6)触点的使用次数 (7)线圈的使用次数 (8)线圈的连接 返回本节
10
4.1.2 基本逻辑指令 基本逻辑指令在语句表语言中是指对位存储单元的简单逻辑运算,在梯形图中是指对触点的简单连接和对标准线圈的输出。
4.1.2 基本逻辑指令 基本逻辑指令在语句表语言中是指对位存储单元的简单逻辑运算,在梯形图中是指对触点的简单连接和对标准线圈的输出。 一般来说,语句表语言更适合于熟悉可编程序控制器和逻辑编程方面有经验的编程人员。用这种语言可以编写出用梯形图或功能框图无法实现的程序。选择语句表时进行位运算要考虑主机的内部存储结构。
11
可编程序控制器中的堆栈与计算机中的堆栈结构相同,堆栈是一组能够存储和取出数据的暂时存储单元。堆栈的存取特点是“后进先出”,S7-200可编程序控制器的主机逻辑堆栈结构如表4.3所示。
12
1. 标准触点指令 (1)LD:装入常开触点(LoaD) (2)LDN:装入常闭触点(LoaD Not) (3)A:与常开触点(And)
(4)AN:与常闭触点(And Not)。 (5)O:或常闭触点(Or) (6)ON:或常闭触点(Or Not) (7)NOT:触点取非(输出反相) (8)= :输出指令
13
在语句表中,LD、LDN、A、AN、O、ON、NOT这几条指令的执行对逻辑堆栈的影响分别如表4.4、表4.5其后的说明。
14
表4.5 指令A I0.2的执行
15
程序实例: 本程序段用以介绍标准触点指令在梯形图、语句表和功能块图3种语言编程中的应用,仔细比较不同编程工具的区别与联系。 其梯形图和语句表程序结构如图4.2所示。 图4.2 标准触点LAD和STL例
16
2. 正负跳变指令 本程序对应的功能框图如图4.3所示。在功能框图中,常闭触点的装入和串并联用指令盒的对应输入信号端加圆圈来表示。
程序执行的时序图如图4.4所示。 图4.3 标准触点FBD例
17
图4. 4 时序图
18
负跳变触点检测到脉冲的每一次负跳变后,产生一个微分脉冲。
指令格式:ED (无操作数) 应用举例:图4.5是跳变指令的程序片断。图4.6是图4.5指令执行的时序。
19
图4.5 跳变应用
20
图4.6 时序
21
3. 置位和复位指令 (1)S,置位指令 (2)R,复位指令
置位即置1,复位即置0。置位和复位指令可以将位存储区的某一位开始的一个或多个(最多可达255个)同类存储器位置1或置0。这两条指令在使用时需指明三点:操作性质、开始位和位的数量。各操作数类型及范围如表4.6所示。
22
(1)S,置位指令 将位存储区的指定位(位bit)开始的N个同类存储器位置位。 用法: S bit, N 例: S Q0.0, 1
23
(2)R,复位指令 将位存储区的指定位(位bit)开始的N个同类存储器位复位。当用复位指令时,如果是对定时器T位或计数器C位进行复位,则定时器位或计数器位被复位,同时,定时器或计数器的当前值被清零。 用法: R bit, N 例: R Q0.2, 3 应用举例:图4.7为置位和复位指令应用程序片断。
24
图4.7 置位复位
25
本程序对应的时序图如图4.8所示。 图4.8 时序图
26
4. 立即指令 (1)立即触点指令 (2)=I,立即输出指令 (3)SI,立即置位指令 (4)RI,立即复位指令
27
(1)立即触点指令 在每个标准触点指令的后面加“I”。指令执行时,立即读取物理输入点的值,但是不刷新对应映像寄存器的值。 这类指令包括:LDI、LDNI、AI、ANI、OI和ONI。下面以LDI指令为例。 用法: LDI bit 例: LDI I0.2 注意:bit只能是I类型。
28
(2)=I,立即输出指令 用立即指令访问输出点时,把栈顶值立即复制到指令所指出的物理输出点,同时,相应的输出映像寄存器的内容也被刷新。 用法: =I bit 例: =I Q0.2 注意:bit只能是Q类型。
29
(3)SI,立即置位指令 用立即置位指令访问输出点时,从指令所指出的位(bit)开始的N个(最多为128个)物理输出点被立即置位,同时,相应的输出映像寄存器的内容也被刷新。 用法: SI bit, N 例: SI Q0.0, 2 注意:bit只能是Q类型。SI和RI指令的操作数类型及范围如表4.7所示。
30
(4)RI,立即复位指令 用立即复位指令访问输出点时,从指令所指出的位(bit)开始的N个(最多为128个)物理输出点被立即复位,同时,相应的输出映像寄存器的内容也被刷新。 用法: RI bit, N 例: RI Q0.0, 1 应用举例: 图4.9为立即指令应用中的一段程序,图4.10是程序对应的时序图。
31
图4.9 立即指令程序
32
图4.10 时序图 返回本节
33
4.1.3 复杂逻辑指令 1. 栈装载与指令 2. 栈装载或指令 3. 逻辑推入栈指令 4. 逻辑弹出栈指令 5. 逻辑读栈指令
4.1.3 复杂逻辑指令 1. 栈装载与指令 2. 栈装载或指令 3. 逻辑推入栈指令 4. 逻辑弹出栈指令 5. 逻辑读栈指令 6. 装入堆栈指令
34
1. 栈装载与指令 ALD,栈装载与指令(与块)。在梯形图中用于将并联电路块进行串联连接。 在语句表中指令ALD执行情况如表4.8所示。
35
2. 栈装载或指令 OLD,栈装载或指令(或块)。在梯形图中用于将串联电路块进行并联连接。 在语句表中指令OLD执行情况如表4.9所示。
36
3. 逻辑推入栈指令 LPS,逻辑推入栈指令(分支或主控指令)。在梯形图中的分支结构中,用于生成一条新的母线,左侧为主控逻辑块时,第一个完整的从逻辑行从此处开始。 注意:使用LPS指令时,本指令为分支的开始,以后必须有分支结束指令LPP。即LPS与LPP指令必须成对出现。 在语句表中指令LPS执行情况如下表4.10所示。
37
4. 逻辑弹出栈指令 LPP,逻辑弹出栈指令(分支结束或主控复位指令)。在梯形图中的分支结构中,用于将LPS指令生成一条新的母线进行恢复。
注意:使用LPP指令时,必须出现在LPS的后面,与LPS成对出现。 在语句表中指令LPP执行情况如下表4.11所示。
38
5. 逻辑读栈指令 LRD,逻辑读栈指令。在梯形图中的分支结构中,当左侧为主控逻辑块时,开始第二个和后边更多的从逻辑块。
39
6. 装入堆栈指令 LDS,装入堆栈指令。本指令编程时较少使用。 指令格式: LDS n (n为0~8的整数) 例: LDS 4
在语句表中执行情况如下表4.13所示。
40
图4.11是复杂逻辑指令在实际应用中的一段程序的梯形图。
应用举例: 图4.11是复杂逻辑指令在实际应用中的一段程序的梯形图。 图4.11 复杂逻辑指令的应用 返回本节
41
4.1.4 定时器指令 系统提供3种定时指令:TON、TONR和TOF。 精度等级:
4.1.4 定时器指令 系统提供3种定时指令:TON、TONR和TOF。 精度等级: S7-200定时器的精度(时间增量/时间单位/分辨率)有3 个等级:1ms、10ms和100ms,精度等级和定时器号关系如表4.14所示。
42
指令操作数 1)编号: 2)预设值PT: 3)使能输入(只对LAD和FBD):
43
1. 接通延时定时器 TON,接通延时定时器指令。用于单一间隔的定时。上电周期或首次扫描,定时器位OFF,当前值为0。使能输入接通时,定时器位为OFF,当前值从0开始计数时间,当前值达到预设值时,定时器位ON,当前值连续计数到32767。使能输入断开,定时器自动复位,即定时器位OFF,当前值为0。 指令格式: TON Txxx,PT 例: TON T120,8
44
2. 有记忆接通延时定时器 TONR,有记忆接通延时定时器指令。用于对许多间隔的累计定时。上电周期或首次扫描,定时器位OFF,当前值保持。使能输入接通时,定时器位为OFF,当前值从0开始计数时间。使能输入断开,定时器位和当前值保持最后状态。使能输入再次接通时,当前值从上次的保持值继续计数,当累计当前值达到预设值时,定时器位ON,当前值连续计数到32767。 TONR定时器只能用复位指令进行复位操作。 指令格式:TONR Txxx,PT 例: TONR T20,63
45
3. 断开延时定时器 TOF,断开延时定时器指令。用于断开后的单一间隔定时。上电周期或首次扫描,定时器位OFF,当前值为0。使能输入接通时,定时器位为ON,当前值为0。当使能输入由接通到断开时,定时器开始计数,当前值达到预设值时,定时器位OFF,当前值等于预设值,停止计数。 TOF复位后,如果使能输入再有从ON到OFF的负跳变,则可实现再次启动。 指令格式:TOF Txxx,PT 例: TOF T35,6
46
4. 应用举例 例1:图4.12是介绍3种定时器的工作特性的程序片断,其中T35为通电延时定时器,T2为有记忆通电延时定时器,T36为断电延时定时器。
47
图4.12 定时器特性
48
本梯形图程序中输入输出执行时序关系如图4.13所示。
图4.13 定时器时序
49
例2:用TON构造各种类型的时间继电器触点。
有的厂商的PLC只有TON定时器,因此,在这种情况下可以利用TON来构造断电延时型的各种触点。 图4.14是用TON构造TOF作用的触点。其时序图与TOF的时序完全相同。 图4.15用通电延时定时器与输出继电器组成带瞬动触点的定时器。 图4.16是利用常开触点实现通电和断电都延时的触点作用。 本程序实现的功能是:用输入端I0.0控制输出端Q0.0,当I0.0接通后,过3个时间单位Q0.0端输出接通,当I0.0断开后,过6个时间单位Q0.0断开。
50
图4.14 定时器应用
51
图4.14 定时器应用
52
图4.15 定时器应用
53
图4.16 定时器应用 返回本节
54
4.1.5 计数器指令 1. 概 述 2. 增计数器 3. 增减计数器 4. 减计数器 5. 应用举例
55
1. 概述 计数器用来累计输入脉冲的次数。计数器也是由集成电路构成,是应用非常广泛的编程元件,经常用来对产品进行计数。
计数器指令有3种:增计数CTU、增减计数CTUD和减计数CTD。 指令操作数有4方面:编号、预设值、脉冲输入和复位输入。
56
图4.18 电机顺序起动
57
2. 增计数器 CTU,增计数器指令。首次扫描,定时器位OFF,当前值为0。脉冲输入的每个上升沿,计数器计数1次,当前值增加1个单位,当前值达到预设值时,计数器位ON,当前值继续计数到32767停止计数。复位输入有效或执行复位指令,计数器自动复位,即计数器位OFF,当前值为0。 指令格式:CTU Cxxx,PV 例: CTU C20,3 程序实例: 图4.19为增计数器的程序片断和时序图。
59
图4.19 增计数程序及时序
60
3. 增减计数器 CTUD,增减计数器指令。有两个脉冲输入端:CU输入端用于递增计数,CD输入端用于递减计数。
指令格式:CTUD Cxxx,PV 例: CTUD C30,5 程序实例:如图4.20所示为增减计数器的程序片断和时序图。
61
图4.20 增减计数程序及时序
62
4. 减计数器 CTD,增减计数器指令。脉冲输入端CD用于递减计数。首次扫描,定时器位OFF,当前值为等于预设值PV。计数器检测到CD输入的每个上升沿时,计数器当前值减小1个单位,当前值减到0时,计数器位ON。 复位输入有效或执行复位指令,计数器自动复位,即计数器位OFF,当前值复位为预设值,而不是0。 指令格式:CTD Cxxx,PV 例: CTD C40,4 程序实例:图4.21为减计数器的程序片断和时序图。
64
图4.21 减计数程序及时序
65
5. 应用举例 1)循环计数。 以上三种类型的计数器如果在使用时,将计数器位的常开触点作为复位输入信号,则可以实现循环计数。
2)用计数器和定时器配合增加延时时间,如图4.22所示。试分析以下程序中实际延时为多长时间。
67
图4.22 计数器应用例 返回本节
68
4.1.6 比较 1. 字节比较 2. 整数比较 3. 双字整数比较 4. 实数比较 5. 应用举例
69
1. 字节比较 字节比较用于比较两个字节型整数值IN1和IN2的大小,字节比较是无符号的。比较式可以是LDB、AB或OB后直接加比较运算符构成。 如:LDB=、AB<>、OB>= 等。 整数IN1和IN2的寻址范围:VB、IB、QB、MB、SB、SMB、LB、*VD、*AC、*LD和常数。 指令格式例: LDB= VB10, VB12 AB<> MB0, MB1 OB<= AC1, 116
70
2. 整数比较 整数比较用于比较两个一字长整数值IN1和IN2的大小,整数比较是有符号的(整数范围为16#8000和16#7FFF之间)。比较式可以是LDW、AW或OW后直接加比较运算符构成。 如:LDW=、AW<>、OW>= 等。 整数IN1和IN2的寻址范围:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常数。 指令格式例: LDW= VW10, VW12 AW<> MW0, MW4 OW<= AC2, 1160
71
3. 双字整数比较 双字整数比较用于比较两个双字长整数值IN1和IN2的大小,双字整数比较是有符号的(双字整数范围为16# 和16#7FFFFFFF之间)。 指令格式例: LDD= VD10, VD14 AD<> MD0, MD8 OD<= AC0, LDD>= HC0, *AC0
72
4. 实数比较 实数比较用于比较两个双字长实数值IN1和IN2的大小,实数比较是有符号的(负实数范围为 E-38和 E+38,正实数范围为 E-38和 E+38)。比较式可以是LDR、AR或OR后直接加比较运算符构成。 指令格式例: LDR= VD10, VD18 AR<> MD0, MD12 OR<= AC1, AR> *AC1, VD100
73
5. 应用举例 控制要求: 一自动仓库存放某种货物,最多6000箱,需对所存的货物进出计数。货物多于1000箱,灯L1亮;货物多于5000箱,灯L2亮。 其中,L1和L2分别受Q0.0和Q0.1控制,数值1000和5000分别存储在VW20和VW30字存储单元中。 本控制系统的程序如图4.23所示。程序执行时序如图4.24所示。
74
图4.23 程序举例
75
图4.24 时序图 返回本节
76
4.2 运算指令 4.2.1 加法 4.2.2 减法 4.2.3 乘法 4.2.4 除法 4.2.5 数学函数指令 4.2.6 增减
4.2 运算指令 加法 4.2.2 减法 4.2.3 乘法 4.2.4 除法 数学函数指令 4.2.6 增减 逻辑运算 返回本章首页
77
加法 1. 整数加法 +I,整数加法指令。使能输入有效时,将两个单字长(16位)的符号整数IN1和IN2相加,产生一个16位整数结果OUT。
78
图4.25 整数加法例
79
2. 双整数加法 +D,双整数加法指令。使能输入有效时,将两个双字长(32位)的符号双整数IN1和IN2相加,产生一个32位双整数结果OUT。 在LAD和FBD中,以指令盒形式编程,执行结果:IN1+IN2=OUT。 在STL中,执行结果:IN1+OUT=OUT。 OUT的寻址范围:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。 指令格式:+D IN1, OUT 例: +D VD0,VD4
80
+R,实数加法指令。使能输入有效时,将两个双字长(32位)的实数IN1和IN2相加,产生一个32位实数结果OUT。
在LAD和FBD中,以指令盒形式编程,执行结果:IN1+IN2=OUT。 OUT的寻址范围:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。 本指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出);SM1.2(负)。 返回本节
81
4.2.2 减法 减法指令是对有符号数进行相减操作。包括:整数减法、双整数减法和实数减法。这三种减法指令与所对应的加法指令除运算法则不同之外,其他方面基本相同。
82
在LAD和FBD中,以指令盒形式编程,执行结果:IN1-IN2=OUT。 在STL中,执行结果: OUT- IN2=OUT。
指令格式:-I IN2, OUT (整数减法) -D IN2, OUT (双整数减法) -R IN2, OUT (实数减法) 例: -I AC0, VW4 返回本节
83
4.2.3 乘法 1. 整数乘法 *I,整数乘法指令。使能输入有效时,将两个单字长(16位)的符号整数IN1和IN2相乘,产生一个16位整数结果OUT。 指令格式:*I IN1,OUT 例: *I VW0,AC0
84
2. 完全整数乘法 MUL,完全整数乘法指令。使能输入有效时,将两个单字长(16位)的符号整数IN1和IN2相乘,产生一个32位双整数结果OUT。 在LAD和FBD中,以指令盒形式编程,执行结果:IN1*IN2=OUT。 OUT的寻址范围:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。 本指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出);SM1.2(负);SM1.3(被0除)。 指令格式: MUL IN1,OUT 例: MUL AC0,VD10
85
3. 双整数乘法 *D,双整数乘法指令。使能输入有效时,将两个双字长(32位)的符号整数IN1和IN2相乘,产生一个32位双整数结果OUT。
在STL中,执行结果:IN1*OUT=OUT。 IN1和IN2的寻址范围:VD、ID、QD、MD、SD、SMD、LD、HC、AC、*VD、*AC、*LD和常数。 OUT的寻址范围:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。 本指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出);SM1.2(负);SM1.3(被0除)。 指令格式: *D IN1,OUT 例: *D VD0,AC0
86
4. 实数乘法 *R,实数乘法指令。使能输入有效时,将两个双字长(32位)的实数IN1和IN2相乘,产生一个32位实数结果OUT。
在LAD和FBD中,以指令盒形式编程,执行结果:IN1*IN2=OUT。 在STL中,执行结果:IN1*OUT=OUT。 IN1和IN2的寻址范围:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD和常数。 OUT的寻址范围:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。 本指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出);SM1.2(负);SM1.3(被0除)。 指令格式: *R IN1,OUT 例: *R VD0,AC0 返回本节
87
4.2.4 除法 在LAD和FBD中,以指令盒形式编程,执行结果:IN1/IN2=OUT。
4.2.4 除法 在LAD和FBD中,以指令盒形式编程,执行结果:IN1/IN2=OUT。 在STL中,执行结果: OUT/ IN2=OUT。 指令格式:/I IN2, OUT (整数除法) DIV IN2, OUT (整数完全除法) /D IN2, OUT (双整数除法) /R IN2, OUT (实数除法)
88
例: DIV VW10, VD100 /I VW20, VW200 两条指令的编程及执行情况比较如图4.26所示。 图4.26 除法指令应用
89
对于完全除法指令: 对于除法指令: 返回本节
90
数学函数指令 1. 平方根 2. 自然对数 3. 指数 4. 正弦、余弦、正切
91
1. 平方根 SQRT,平方根指令。把一个双字长(32位)的实数IN开平方,得到32位的实数结果。
1. 平方根 SQRT,平方根指令。把一个双字长(32位)的实数IN开平方,得到32位的实数结果。 在LAD和FBD中,以指令盒形式编程,执行结果:SQRT(IN)=OUT。 在STL中,执行结果:SQRT(IN)=OUT。 本指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出和非法值);SM1.2(负)。 使能流输出ENO断开的出错条件:SM1.1(溢出);SM4.3(运行时间);0006(间接寻址)。 指令格式: SQRT IN,OUT 例: SQRT VD0,AC0
92
2. 自然对数 图4.27 自然对数的应用 LN,自然对数指令。将一个双字长(32位)的实数IN取自然对数,得到32位的实数结果。
应用实例: 求以10为底的50(存于VD0)的常用对数,结果放到AC0。 本运算程序如图4.27所示。 图4.27 自然对数的应用
93
3. 指数 EXP,指数指令。将一个双字长(32位)的实数IN取以e为底的指数,得到32位的实数结果OUT。
在LAD和FBD中,以指令盒形式编程,执行结果:EXP(IN)=OUT。 在STL中,执行结果:EXP(IN)=OUT。 指令格式: EXP IN, OUT 例: EXP VD0, AC0
94
4. 正弦、余弦、正切 SIN、COS、TAN,即正弦、余弦、正切指令。将一个双字长(32位)的实数弧度值IN分别取正弦、余弦、正切,各得到32位的实数结果。 如果已知输入值为角度,要先将角度值转化为弧度值,方法:使用(*R)MUL_R指令用角度值乘以π/180°即可。
95
例: TAN VD0, AC0 应用实例:求COS160o的值。如图4.28所示。 图4.28 三角函数应用例 返回本节
96
4.2.6 增减 1. 字节增和字节减 2. 字增和字减 3. 双字增和双字减 4. 应用实例
97
1. 字节增和字节减 INCB,字节增指令。使能输入有效时,把一字节长的无符号输入数(IN)加1,得到一 字节的无符号输出结果OUT。
DECB,字节减指令。使能输入有效时,把一字节长的无符号输入数(IN)减1,得到一字节的无符号输出结果OUT。
98
2. 字增和字减
99
3. 双字增和双字减 INCD,双字增指令。使能输入有效时,把双字长(32位)的有符号输入数(IN)加1,得到双字长的有符号输出结果OUT。
DECD,双字减指令。使能输入有效时,把双字长的有符号输入数(IN)减1,得到双字长的有符号输出结果OUT。
100
4. 应用实例 控制要求: 食品加工厂对饮料生产线上的盒装饮料进行计数,每24盒为一箱,要求能记录生产的箱数。 程序及说明:
程序如图4.29所示。 图4.29 增减指令的应用 返回本节
101
逻辑运算 1. 字节逻辑运算 2. 字逻辑运算 3. 双字逻辑运算
102
1. 字节逻辑运算 字节逻辑运算包括字节与、字节或、字节异或、字节取反。
103
2. 字逻辑运算 字节逻辑运算包括字节与、字节或、字节异或、字节取反。
104
3. 双字逻辑运算 字逻辑运算包括双字与、双字或、双字异或、双字取反。 返回本节
105
4.3 其他数据处理指令 4.3.1 传送类指令 4.3.2 移位指令 4.3.3 字节交换指令 4.3.4 填充指令 返回本章首页
106
4.3.1 传送类指令 1. 单一传送 (1)MOVB,字节传送指令 (2)BIR,传送字节立即读指令 (3)BIW,传送字节立即写指令
4.3.1 传送类指令 1. 单一传送 (1)MOVB,字节传送指令 (2)BIR,传送字节立即读指令 (3)BIW,传送字节立即写指令 (4)MOVW,字传送指令 (5)MOVD,双字传送指令 (6)MOVR,实数传送指令 2. 块传送 (1)BMB,字节块传送指令 (2)BMW,字块传送指令 (3)BMD,双字块传送指令
107
1. 单一传送 (1)MOVB,字节传送指令 使能输入有效时,把一个单字节无符号数据由IN传送到OUT所指的字节存储单元。
IN的寻址范围:VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD和常数。 OUT的寻址范围:VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD。 指令格式: MOVB IN1, OUT 例: MOVB VB0, QB0
108
(2)BIR,传送字节立即读指令 使能输入有效时,立即读取单字节物理输入区数据IN,并传送到OUT所指的字节存储单元。 IN的寻址范围:IB OUT的寻址范围:VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD。 指令格式: BIR IN1, OUT 例: BIR IB0, VB10
109
2. 块传送 指令可用来进行一次多个(最多255个)数据的传送,数据块类型可以是字节块、字块、双字块。
三条指令中N的寻址范围都是:VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD和常数。 使ENO断开的出错条件:SM4.3(运行时间);0006(间接寻址);0091(数超界)。 返回本节
110
4.3.2 移位指令 1. 左移和右移 2. 循环左移、循环右移 3. 寄存器移位
111
1. 左移和右移 (1)字节左移和字节右移 SLB和SRB,字节左移和字节右移。使能输入有效时,把字节型输入数据IN左移或右移N位后,再将结果输出到OUT所指的字节存储单元。最大实际可移位次数为8。
112
以第一条指令为例,指令执行情况如表4.16所示。
表4.16 指令SLB执行结果
113
SLW和SRW,字左移和字右移。指令盒与字节移位比较,只有名称变为SHR_W和SHR_W。使能输入有效时,把字型输入数据IN左移或右移N位后,再将结果输出到OUT所指的字存储单元。最大实际可移位次数为16。 指令格式: SLW OUT, N (字左移) SRW OUT, N (字右移) 例: SLW MW0, 2 SRW LW0, 3 以第二条指令为例,指令执行情况如表4.17所示。
115
(3)双字左移和双字右移 SLD和SRD,双字左移和双字右移。指令盒与字节移位比较,只有名称变为SHL_DW和SHR_DW,其他部分完全相同。使能输入有效时,把双字型输入数据IN左移或右移N位后,再将结果输出到OUT所指的双字存储单元。最大实际可移位次数为32。 指令格式: SLD OUT, N (双字左移) SRD OUT, N (双字右移) 例: SLD MD0, 2 SRD LD0, 3
116
2. 循环左移、循环右移 循环左移和循环右移根据所循环移位的数的长度分别又可分为字节型、字型、双字型。 循环移位特点:
移位数据存储单元的移出端与另一端相连,同时又与SM1.1(溢出)相连,所以最后被移出的位被移到另一端的同时,也被放到SM1.1位存储单元。例如在循环右移时,移位数据的最右端位移入最左端,同时又进入SM1.1。SM1.1始终存放最后一次被移出的位。
117
循环移位的类型 (1)字节循环左移和字节循环右移 (2)字循环左移和字循环右移 (3)双字循环左移和双字循环右移
表4.18 指令RRW执行结果
118
3. 寄存器移位 SHRB,寄存器移位指令。 该指令在梯形图中有3个数据输入端:DATA为数值输入, 将该位的值移入移位寄存器;S_BIT为移位寄存器的最低位端;N指定移位寄存器的长度。每次使能输入有效时,整个移位寄存器移动1位。 移位特点: 移位寄存器长度在指令中指定,没有字节型、字型、双字型之分。可指定的最大长度为64位,可正也可负。
119
表4.19 指令SHRB执行结果 返回本节
120
4.3.3 字节交换指令 SWAP,字节交换指令。使能输入有效时,将字型输入数据IN的高字节和低字节进行交换。
4.3.3 字节交换指令 SWAP,字节交换指令。使能输入有效时,将字型输入数据IN的高字节和低字节进行交换。 本指令只对字型数据进行处理,指令的执行不影响的特殊存储器位。 使能流输出ENO断开的出错条件:SM4.3(运行时间);0006(间接寻址)。 指令格式: SWAP IN (字节交换) 例: SWAP VW10 以第本指令为例,指令执行情况如表4.20所示。 返回本节
121
4.3.4 填充指令 FILL,存储器填充指令。使能输入有效时,用字型输入数据IN填充从输出OUT所指的单元开始的N个字存储单元。
4.3.4 填充指令 FILL,存储器填充指令。使能输入有效时,用字型输入数据IN填充从输出OUT所指的单元开始的N个字存储单元。 填充指令只对字型数据进行处理,N值为字节型,可取从1~255的整数。指令的执行不影响的特殊存储器位。 使能流输出ENO断开的出错条件:SM4.3(运行时间);0006(间接寻址);0091(操作数超界)。 指令格式: FILL IN, OUT, N (填充指令) 例: FILL 10, VW100, 12 本条指令的执行结果是:将数据10填充到从VW100到VW122共12个字存储单元。 返回本节
122
4.4 表功能指令 4.4.1 表存数指令 4.4.2 表取数指令 4.4.3 表查找指令 返回本章首页
123
表只对字型数据存储,表的格式例如表4.21所示。
124
4.4.1 表存数指令 ATT,表存数指令。 该指令在梯形图中有2个数据输入端:DATA为数值输入,指出将被存储的字型数据或其地址;TBL表格的首地址,用以指明被访问的表格。当使能输入有效时,将输入字型数据添加到指定的表格中。 表存数特点: 表存数时,新存的数据添加在表中最后一个数据的后面。每向表中存一个数据,实际填表数EC会自动加1。
125
表4.22 指令ATT执行结果 返回本节
126
4.4.2 表取数指令 1. FIFO,先进先出指令 2. LIFO,后进先出指令
127
1. FIFO,先进先出指令 当使能输入有效时,从TBL指明的表中移出第一个字型数据并将其输出到DATA所指定的字单元。
取数时,移出的数据总是最先进入表中的数据。每次从表中移出一个数据,剩余数据依次上移一个字单元位置,同时实际填表数EC会自动减1。 指令格式: FIFO TBL, DATA 例: FIFO VW100, AC0 如果仍是对表4.21存取,则指令执行情况如表4.23所示。
128
表4.23 指令FIFO执行结果
129
2. LIFO,后进先出指令 当使能输入有效时,从TBL指明的表中移出最后一个字型数据并将其输出到DATA所指定的字单元。
取数时,移出的数据是最后进入表中的数据。每次从表中取出一个数据,剩余数据位置保持不变,实际填表数EC会自动减1。 指令格式: LIFO TBL, DATA 例: LIFO VW100, AC0 如果仍是对表4.21存取,则指令执行情况如表4.24所示。
130
表4.24 指令LIFO执行结果 返回本节
131
4.4.3 表查找指令 FND?,表查找指令。通过表查找指令可以从字型数表中找出符合条件的数据所在的表中数据编号,编号范围为0~99。
4.4.3 表查找指令 FND?,表查找指令。通过表查找指令可以从字型数表中找出符合条件的数据所在的表中数据编号,编号范围为0~99。 在梯形图中有4个数据输入端:TBL表格的首地址,用以指明被访问的表格;PTN是用来描述查表条件时进行比较的数据;CMD是比较运算符“?”的编码,它是一个1~4的数值,分别代表=、<>、<和>运算符;INDX用来指定表中符合查找条件的数据的地址。
132
表4.25 表查找指令执行结果 返回本节
133
4.5 转换指令 4.5.1 数据类型转换 4.5.2 编码和译码 4.5.3 七段码 4.5.4 字符串转换 返回本章首页
134
4.5.1 数据类型转换 1. 字节与整数 (1)字节到整数 (2)整数到字节 2. 整数与双整数 3. 双整数与实数 (1)双整数到整数
4.5.1 数据类型转换 1. 字节与整数 (1)字节到整数 (2)整数到字节 2. 整数与双整数 (1)双整数到整数 (2)整数到双整数 3. 双整数与实数 (1)实数到双整数 (2)双整数到实数 4. 整数与BCD码 (1)BCD码到整数 (2)整数到BCD码 5. 程序实例
135
1. 字节与整数 (1)字节到整数 BTI,字节转换为整数指令。使能输入有效时,将字节输入数据IN转换成整数类型,并将结果送到OUT输出。字节型是无符号的,所以没有符号扩展。 使能流输出ENO断开的出错条件:SM4.3(运行时间);0006(间接寻址)。 指令格式: BTI IN, OUT 例: BTI VB0, AC0
136
(2)整数到字节 ITB,整数转换字节指令。使能输入有效时,将整数输入数据IN转换成字节类型,并将结果送到OUT输出。输入数据超出字节范围(0~255)则产生溢出。 移位指令影响的特殊存储器位:SM1.1(溢出)。 使能流输出ENO断开的出错条件:SM1.1(溢出);SM4.3(运行时间);0006(间接寻址)。 指令格式: ITB IN, OUT 例: ITB AC0, VB10
137
2. 整数与双整数 (1)双整数到整数 DTI,双整数转换为整数指令。使能输入有效时,将双整数输入数据IN转换成整数类型,并将结果送到OUT输出。输入数据超出整数范围则产生溢出。 移位指令影响的特殊存储器位:SM1.1(溢出)。 使能流输出ENO断开的出错条件:SM1.1(溢出);SM4.3(运行时间);0006(间接寻址)。 指令格式: DTI IN, OUT 例: DTI AC0, VW20
138
(2)整数到双整数 ITD,整数转换为双整数指令。使能输入有效时,将整数输入数据IN转换成双整数类型(符号进行扩展),并将结果送到OUT输出。 使能流输出ENO断开的出错条件:SM4.3(运行时间);0006(间接寻址)。 指令格式: ITD IN, OUT 例: ITD VW0, AC0
139
3. 双整数与实数 (1)实数到双整数
140
(2)双整数到实数 DTR,双整数转换实数指令。使能输入有效时,将双整数输入数据IN转换成实型,并将结果送到OUT输出。 使能流输出ENO断开的出错条件:SM4.3(运行时间);0006(间接寻址)。 指令格式:DTR IN, OUT 例: DTR AC0, VD100
141
4. 整数与BCD码 (1)BCD码到整数 BCDI,BCD码转换为整数指令。使能输入有效时,将BCD码输入数据IN转换成整数类型,并将结果送到OUT输出。输入数据IN的范围为0~9999。 指令格式:BCDI OUT 例: BCDI AC0
142
(2)整数到BCD码 IBCD,整数转换为BCD码指令。使能输入有效时,将整数输入数据IN转换成BCD码类型,并将结果送到OUT输出。输入数据IN的范围为0~9999。 指令格式:IBCD OUT 例: IBCD AC0
143
5. 程序实例 功能: 模拟量控制程序中的数据类型转换。将模拟量输入端采样值由整数转换为双整数,然后由双整数转换为实数,再除以一个比例因子得到PLC可以处理的范围内的值。 程序实现: 本程序如图4.30所示。 返回本节
144
4.5.2 编码和译码 1. 编码 ENCO,编码指令。使能输入有效时,将字型输入数据IN的最低有效位(值为1的位)的位号输出到OUT所指定的字节单元的低4位。即用半个字节来对一个字型数据16位中的1位有效位进行编码。 使能流输出ENO断开的出错条件:SM4.3(运行时间);0006(间接寻址)。 指令格式: ENCO IN, OUT 例: ENCO AC0, VB0
145
以本指令为例,指令执行情况如表4.26所示。 表4.26 编码指令执行结果
146
2. 译码 DECO,译码指令。使能输入有效时,将字节型输入数据IN的低4位所表示的位号对OUT所指定的字单元的对应位置1,其他位置0。即对半个字节的编码进行译码来选择一个字型数据16位中的1位。 使能流输出ENO断开的出错条件:SM4.3(运行时间);0006(间接寻址)。 指令格式: DECO IN, OUT 例: DECO VB0, AC0 本指令执行情况如表4.27所示。
147
返回本节
148
4.5.3 七段码 SEG,七段码指令。使能输入有效时,将字节型输入数据IN的低4位有效数字产生相应的七段码,并将其输出到OUT所指定的字节单元。 返回本节
149
4.5.4 字符串转换 1. 指令种类 (1)ASCII码转换16进制指令 (2)16进制到ASCII码 (3)整数到ASCII码
4.5.4 字符串转换 1. 指令种类 (1)ASCII码转换16进制指令 (2)16进制到ASCII码 (3)整数到ASCII码 (4)双整数到ASCII码 (5)实数到ASCII码
150
2. 指令介绍 下面仅以ASCII码转换16进制指令为例说明字符串与其他数据类型之间的转换。 ATH,ASCII码转换16进制指令。指令盒中有3个操作数:IN,开始字符的字节地址,字节类型;LEN,字符串的长度,字节类型,最大长度为255;OUT,输出目的开始字节地址,字节类型。使能输入有效时,把从IN开始的长度为LEN的ASCII码转换为16进制数,并将结果送到OUT开始的字节进行输出。
151
以上面的指令为例,条指令的执行结果如表4.28所示,程序如图4.31所示。
3. 程序实例 以上面的指令为例,条指令的执行结果如表4.28所示,程序如图4.31所示。 表4.28 指令ATH执行结果
152
图4.31 字符串转换 返回本节
153
THANK YOU VERY MUCH ! 本章到此结束, 谢谢您的光临! 结 束 返回本章首页
Similar presentations