1、第第3 3章章 S7-200 PLCS7-200 PLC的基本指令的基本指令 PLC的基本逻辑指令的基本逻辑指令3.1 定时器与计数器指令定时器与计数器指令3.2 算术、逻辑运算指令算术、逻辑运算指令3.3 程序控制指令程序控制指令3.4 基本逻辑指令是指构成基本逻辑运算基本逻辑指令是指构成基本逻辑运算功能的指令集合,包括基本位操作指令、功能的指令集合,包括基本位操作指令、置位置位/复位指令、边沿触发指令、定时器复位指令、边沿触发指令、定时器/计计数器指令等逻辑指令。数器指令等逻辑指令。3.1.1 基本位操作指令 1指令格式指令格式 梯形图指令由触点或线圈符号和直接梯形图指令由触点或线圈符号和
2、直接位地址两部分组成,含有直接位地址的指位地址两部分组成,含有直接位地址的指令又称位操作指令,基本位操作指令操作令又称位操作指令,基本位操作指令操作数寻址范围:数寻址范围:I,Q,M,SM,T,C,V,S,L等。等。指令格式及功能如表指令格式及功能如表3-1所示。所示。梯形图的触点代表梯形图的触点代表CPU对存储器的读对存储器的读操作,因为计算机系统读操作的次数不受操作,因为计算机系统读操作的次数不受限制,所以在用户程序中常开、常闭触点限制,所以在用户程序中常开、常闭触点使用的次数不受限制。使用的次数不受限制。梯形图的线圈符号代表梯形图的线圈符号代表CPU对存储器对存储器的写操作,因为的写操作
3、,因为PLC采用自上而下的扫描采用自上而下的扫描方式工作,所以在用户程序中同一个线圈方式工作,所以在用户程序中同一个线圈只能使用一次,多于一次时,只有最后一只能使用一次,多于一次时,只有最后一次有效。次有效。语句表的基本逻辑指令由指令助记符语句表的基本逻辑指令由指令助记符和操作两部分组成,操作数由可以进行位和操作两部分组成,操作数由可以进行位操作的寄存器元件及地址组成,如操作的寄存器元件及地址组成,如LD I0.0。常用指令助记符的定义如下所述。常用指令助记符的定义如下所述。LD(Load)指令:装载指令,用)指令:装载指令,用于常开触点与左母线连接,每一个以常开于常开触点与左母线连接,每一个
4、以常开触点开始的逻辑行都要使用这一指令。触点开始的逻辑行都要使用这一指令。LDN(Load Not)指令:装载指)指令:装载指令,用于常闭触点与左母线连接,每一个令,用于常闭触点与左母线连接,每一个以常闭触点开始的逻辑行都要使用这一指以常闭触点开始的逻辑行都要使用这一指令。令。A(And)指令:与操作指令,用)指令:与操作指令,用于常开触点的串联。于常开触点的串联。AN(And Not)指令:与操作指令,)指令:与操作指令,用于常闭触点的串联。用于常闭触点的串联。O(Or)指令:或操作指令,用于)指令:或操作指令,用于常开触点的并联。常开触点的并联。ON(Or Not):或操作指令,用):或操
5、作指令,用于常闭触点的并联。于常闭触点的并联。=(Out)指令:置位指令,用于)指令:置位指令,用于线圈输出。线圈输出。位操作指令程序的应用如图位操作指令程序的应用如图3-1所示。所示。梯形图分析:梯形图分析:图图3-1 位操作指令程序的应用位操作指令程序的应用2STL指令对较复杂梯形图的描指令对较复杂梯形图的描述方法述方法在较复杂梯形图中,触点的串、并联在较复杂梯形图中,触点的串、并联关系不能全部用简单的与、或、非逻辑关关系不能全部用简单的与、或、非逻辑关系描述。系描述。在语句表指令系统中设计了电路块的在语句表指令系统中设计了电路块的与操作和电路块的或操作指令,以及栈操与操作和电路块的或操作
6、指令,以及栈操作指令,下面对这类指令进行分析。作指令,下面对这类指令进行分析。(1)栈装载与指令)栈装载与指令栈装载为(栈装载为(ALD)指令,用于两个或)指令,用于两个或两个以上触点并联连接的电路之间的串联,两个以上触点并联连接的电路之间的串联,称之为并联电路块的串联连接指令。称之为并联电路块的串联连接指令。ALD指令的应用如图指令的应用如图3-2所示。所示。图图3-2 ALD指令的应用指令的应用并联电路块与前面的电路串联时,使并联电路块与前面的电路串联时,使用用ALD指令。并联电路块的开始用指令。并联电路块的开始用LD或或LDN指令,并联电路块结束后使用指令,并联电路块结束后使用ALD指指
7、令与前面的电路串联。令与前面的电路串联。(2)栈装载或指令)栈装载或指令栈装载或(栈装载或(OLD)指令用于两个或两)指令用于两个或两个以上的触点串联连接的电路之间的并联,个以上的触点串联连接的电路之间的并联,称之为串联电路块的并联连接指令。称之为串联电路块的并联连接指令。OLD指令的应用如图指令的应用如图3-3所示。所示。图图3-3 OLD指令的应用指令的应用3栈操作指令栈操作指令逻辑入栈(逻辑入栈(Logic Push,LPS)指令)指令复制栈顶的值并将其压入栈的下一层,栈复制栈顶的值并将其压入栈的下一层,栈中原来的数据依次向下一层推移,栈底值中原来的数据依次向下一层推移,栈底值被推出丢失
8、,如图被推出丢失,如图3-4所示。所示。图图3-4 栈操作栈操作逻辑读栈(逻辑读栈(Logic Read,LRD)指令)指令将栈中第将栈中第2层的数据复制到栈顶,第层的数据复制到栈顶,第27层层的数据不变,但是原栈顶值消失。的数据不变,但是原栈顶值消失。逻辑出栈(逻辑出栈(Logic Pop,LPP)指令使)指令使栈中各层的数据向上移动一层,第栈中各层的数据向上移动一层,第2层的数层的数据成为栈新的栈顶值,栈顶原来的数据从据成为栈新的栈顶值,栈顶原来的数据从栈内消失。栈内消失。使用一层栈和使用多层栈的应用举例使用一层栈和使用多层栈的应用举例如图如图3-5和图和图3-6所示。每一条所示。每一条L
9、PS指令必须指令必须有一条对应的有一条对应的LPP指令,中间支路都用指令,中间支路都用LRD指令,最后一条支路必须使用指令,最后一条支路必须使用LPP指指令。在一块独立电路中,用令。在一块独立电路中,用LPS指令同时指令同时保存在栈中的中间运算结果不能超过保存在栈中的中间运算结果不能超过8个。个。用编程软件将梯形图转换为语句表程用编程软件将梯形图转换为语句表程序时,编程软件会自动加入序时,编程软件会自动加入LPS、LRD和和LPP指令。而写入语句表程序时,必须由指令。而写入语句表程序时,必须由用户来写入用户来写入LPS、LRD和和LPP指令。指令。图图3-5 栈指令的应用栈指令的应用图图3-6
10、 双重栈指令的应用双重栈指令的应用4立即触点指令和立即输出指令立即触点指令和立即输出指令(1)立即触点指令)立即触点指令立即触点指令只能用于输入信号立即触点指令只能用于输入信号I,执行立即触点指令时,立即读入执行立即触点指令时,立即读入PLC输入输入点的值,根据该值决定触点的接通点的值,根据该值决定触点的接通/断开状断开状态,但是并不更新态,但是并不更新PLC输入点对应的输入输入点对应的输入映像寄存器的值。映像寄存器的值。在语句表中分别用在语句表中分别用LDI、AI、OI来表来表示开始、串联和并联的常开立即触点,用示开始、串联和并联的常开立即触点,用LDNI、ANI、ONI来表示开始、串联和并
11、来表示开始、串联和并联的常闭立即触点,如表联的常闭立即触点,如表3-2所示。所示。触点符号中间的触点符号中间的“I”和和“/I”用来表示用来表示立即常开触点和立即常闭触点,如图立即常开触点和立即常闭触点,如图3-7所所示示。图图3-7 立即触点指令与立即输出指令的应用立即触点指令与立即输出指令的应用(2)立即输出指令)立即输出指令执行立即输出指令时,将栈顶的值立执行立即输出指令时,将栈顶的值立即写入即写入PLC输出位对应的输出映像寄存器。输出位对应的输出映像寄存器。该指令只能用于输出位,线圈符号中的该指令只能用于输出位,线圈符号中的“I”用来表示立即输出,如图用来表示立即输出,如图3-7所示。
12、所示。3.1.2 置位与复位指令置位与复位指令1置位与复位指令置位与复位指令置位置位/复位指令则是将线圈设计成置位复位指令则是将线圈设计成置位线圈和复位线圈两大部分,将存储器的置线圈和复位线圈两大部分,将存储器的置位、复位功能分离开来。位、复位功能分离开来。S(Set)指令是置位指令,)指令是置位指令,R(Reset)指令是复位指令,指令的格式及功能如表指令是复位指令,指令的格式及功能如表3-3所示。所示。执行置位(置执行置位(置1)/复位(置复位(置0)指令时,)指令时,从指定的位地址开始的从指定的位地址开始的N个连续的位地址个连续的位地址都被置位或复位,都被置位或复位,N=1255。当置位
13、、复。当置位、复位输入同时有效时,复位优先。置位位输入同时有效时,复位优先。置位/复位复位指令的应用如图指令的应用如图3-8所示,图中所示,图中N=1。编程时,置位、复位线圈之间间隔的编程时,置位、复位线圈之间间隔的网络个数可以任意。置位、复位线圈通常网络个数可以任意。置位、复位线圈通常成对使用,也可以单独使用或与指令盒配成对使用,也可以单独使用或与指令盒配合使用。合使用。图图3-8 置位置位/复位指令的应用复位指令的应用2立即置位与复位指令立即置位与复位指令 执行立即置位(执行立即置位(SI)与立即复位()与立即复位(RI)指令时,从指定位地址开始的指令时,从指定位地址开始的N个连续的个连续
14、的输出点将被立即置位或复位,输出点将被立即置位或复位,N=128,线,线圈中的圈中的I表示立即。该指令只能用于输出位,表示立即。该指令只能用于输出位,新值被同时写入输出点和输出映像寄存器,新值被同时写入输出点和输出映像寄存器,如图如图3-8所示。所示。3.1.3 其他指令1边沿触发指令边沿触发指令边沿触发指令分为正跳变触发(上升边沿触发指令分为正跳变触发(上升沿)和负跳变触发(下降沿)两种类型。沿)和负跳变触发(下降沿)两种类型。正跳变触发是指输入脉冲的上升沿使正跳变触发是指输入脉冲的上升沿使触点闭合触点闭合1个扫描周期。负跳变触发是指输个扫描周期。负跳变触发是指输入脉冲的下降沿使触点闭合入脉
15、冲的下降沿使触点闭合1个扫描周期,个扫描周期,常用作脉冲整形。边沿触发指令格式及功常用作脉冲整形。边沿触发指令格式及功能如表能如表3-4所示。所示。指令的应用如图指令的应用如图3-9所示。所示。图图3-9 边沿触发指令的应用及时序图边沿触发指令的应用及时序图2取反和空操作指令取反和空操作指令 取反和空操作指令格式及功能如表取反和空操作指令格式及功能如表3-5所示。所示。(1)取反指令)取反指令取反(取反(NOT)指令指对存储器位的取)指令指对存储器位的取反操作,用来改变能流的状态。取反指令反操作,用来改变能流的状态。取反指令在梯形图中用触点形式表示,触点左侧为在梯形图中用触点形式表示,触点左侧
16、为1时,右侧则为时,右侧则为0,能流不能到达右侧,输出,能流不能到达右侧,输出无效。反之触点左侧为无效。反之触点左侧为0时,右侧则为时,右侧则为1,能流可以通过触点向右传递。能流可以通过触点向右传递。(2)空操作指令)空操作指令空操作指令(空操作指令(NOP)起增加程序容量)起增加程序容量的作用。使能输入有效时,执行空操作指的作用。使能输入有效时,执行空操作指令,将稍微延长扫描期长度,不影响用户令,将稍微延长扫描期长度,不影响用户程序的执行,不会使能流输出断开。程序的执行,不会使能流输出断开。操作数操作数N为执行空操作指令的次数,为执行空操作指令的次数,N=0255。取反指令和空操作指令的应用
17、如图取反指令和空操作指令的应用如图3-10所示。所示。图图3-10 取反指令和空操作指令的应用取反指令和空操作指令的应用3.2.1 定时器指令S7-200 PLC的定时器为增量型定时器,的定时器为增量型定时器,用于实现时间控制,可以按照工作方式和用于实现时间控制,可以按照工作方式和时间基准(时基)分类,时间基准又称为时间基准(时基)分类,时间基准又称为定时精度或分辨率。定时精度或分辨率。1工作方式工作方式按照工作方式,定时器可分为接通延按照工作方式,定时器可分为接通延时定时器(时定时器(TON)、保持型接通延时定时)、保持型接通延时定时器(器(TONR)、断开延时定时器()、断开延时定时器(T
18、OF)3种。种。2时间基准时间基准按照时间基准,定时器又分为按照时间基准,定时器又分为1 ms、10 ms、100 ms 3种类型,不同的时间基准,种类型,不同的时间基准,定时范围和定时器的刷新方式不同。定时范围和定时器的刷新方式不同。(1)定时精度)定时精度定时器的工作原理是定时器使能输入定时器的工作原理是定时器使能输入有效后,当前值寄存器对有效后,当前值寄存器对PLC内部的时基内部的时基脉冲增脉冲增1计数,最小计时单位为时基脉冲的计数,最小计时单位为时基脉冲的宽度。故时间基准代表着定时器的定时精宽度。故时间基准代表着定时器的定时精度,又称为定时器的分辨率。度,又称为定时器的分辨率。(2)定
19、时范围)定时范围定时器使能输入有效后,当前值寄存定时器使能输入有效后,当前值寄存器对时基脉冲递增计数,当计数值大于或器对时基脉冲递增计数,当计数值大于或等于定时器的设定值后,状态位置等于定时器的设定值后,状态位置1。从定。从定时器输入有效,到状态位输出有效经过的时器输入有效,到状态位输出有效经过的时间为定时时间。定时时间时间为定时时间。定时时间T等于时基乘等于时基乘设定值,时基越大,定时时间越长,但精设定值,时基越大,定时时间越长,但精度越差。度越差。(3)定时器的刷新方式)定时器的刷新方式1 ms定时器每隔定时器每隔1 ms定时器刷新一次,定时器刷新一次,定时器刷新与扫描周期和程序处理无关。
20、定时器刷新与扫描周期和程序处理无关。扫描周期较长时,定时器一个周期内可能扫描周期较长时,定时器一个周期内可能多次被刷新(多次改变当前值)。多次被刷新(多次改变当前值)。10 ms定时器在每个扫描周期开始时定时器在每个扫描周期开始时刷新,每个扫描周期之内,当前值不变。刷新,每个扫描周期之内,当前值不变。100 ms定时器是定时器指令执行时被定时器是定时器指令执行时被刷新,下一条执行的指令即可使用刷新后刷新,下一条执行的指令即可使用刷新后的结果,但应当注意,如果该定时器的指的结果,但应当注意,如果该定时器的指令不是每个周期都执行(如条件跳转时),令不是每个周期都执行(如条件跳转时),定时器就不能及
21、时刷新,可能会导致出错。定时器就不能及时刷新,可能会导致出错。CPU 22X系列系列PLC的的256个定时器分个定时器分为为TON(TOF)和)和TONR工作方式,以及工作方式,以及3种时间基准,种时间基准,TOF与与TON共享同一组定时共享同一组定时器,不能重复使用。定时器的分辨率和编器,不能重复使用。定时器的分辨率和编号范围如表号范围如表3-6所示。所示。使用定时器时应参照表使用定时器时应参照表3-6的时间基准的时间基准和工作方式合理选择定时器编号,同时要和工作方式合理选择定时器编号,同时要考虑刷新方式对程序执行的影响。考虑刷新方式对程序执行的影响。3定时器指令格式定时器指令格式定时器指令
22、格式及功能如表定时器指令格式及功能如表3-7所示。所示。IN是使能输入端,编程范围是使能输入端,编程范围T0T255;PT是设定值输入端,最大设定值是设定值输入端,最大设定值32 767。(1)接通延时定时器)接通延时定时器当使能端输入有效(接通)时,定时当使能端输入有效(接通)时,定时器开始计时,当前值从器开始计时,当前值从0开始递增,大于或开始递增,大于或等于设定值时,定时器输出状态位置为等于设定值时,定时器输出状态位置为1(输出触点有效),当前值的最大值为(输出触点有效),当前值的最大值为32 767。使能输入端无效(断开)时,定时器使能输入端无效(断开)时,定时器复位(当前值清零,输出
23、状态位置为复位(当前值清零,输出状态位置为0)。)。通电延时型定时器应用程序如图通电延时型定时器应用程序如图3-11所示。所示。图图3-11 通电延时型定时器应用程序通电延时型定时器应用程序(2)保持型接通延时定时器)保持型接通延时定时器使能端输入有效时,定时器开始计时,使能端输入有效时,定时器开始计时,当前值递增,当前值大于或等于设定值时,当前值递增,当前值大于或等于设定值时,输出状态位置为输出状态位置为1。使能端输入无效(断开)时,当前值使能端输入无效(断开)时,当前值保持(记忆),使能端再次接通有效时,保持(记忆),使能端再次接通有效时,在原记忆值的基础上递增计时。在原记忆值的基础上递增
24、计时。TONR采采用线圈的复位指令进行复位操作,当复位用线圈的复位指令进行复位操作,当复位线圈有效时,定时器当前值清零,输出状线圈有效时,定时器当前值清零,输出状态位置为态位置为0。保持型接通延时定时器应用程序如图保持型接通延时定时器应用程序如图3-12所示。所示。图图3-12保持型接通延时定时器应用程序保持型接通延时定时器应用程序(3)断电延时定时器)断电延时定时器使能端输入有效时,定时器输出状态使能端输入有效时,定时器输出状态位立即置位立即置1,当前值复位为,当前值复位为0。使能端断开。使能端断开时,开始计时,当前值从时,开始计时,当前值从0递增,当前值达递增,当前值达到设定值时,定时器状
25、态位复位置到设定值时,定时器状态位复位置0,并停,并停止计时,当前值保持。止计时,当前值保持。断电延时定时器应用程序如图断电延时定时器应用程序如图3-13所所示。示。图图3-13 断电延时定时器应用程序断电延时定时器应用程序3.2.2 计数器指令 S7-200系列系列PLC有加计数器(有加计数器(CTU)、)、减计数器(减计数器(CTD)、加)、加/减计数器(减计数器(CTUD)3种计数器指令。种计数器指令。1指令格式指令格式计数器的梯形图指令符号为指令盒形计数器的梯形图指令符号为指令盒形式,指令格式及功能如表式,指令格式及功能如表3-8所示。所示。梯形图指令符号中梯形图指令符号中CU为加为加
26、1计数脉冲计数脉冲输入端;输入端;CD为减为减1计数脉冲输入端;计数脉冲输入端;R为为复位脉冲输入端;复位脉冲输入端;LD为减计数器的复位脉为减计数器的复位脉冲输入端;编程范围为冲输入端;编程范围为C0C255;PV设设定值最大范围为定值最大范围为32 767;PV数据类型:数据类型:INT。2工作原理工作原理(1)加计数器指令)加计数器指令当加计数器的复位输入端电路断开,当加计数器的复位输入端电路断开,而计数输入端(而计数输入端(CU)有脉冲信号输入时,)有脉冲信号输入时,计数器的当前值加计数器的当前值加1计数。计数。当前值大于或等于设定值时,计数器当前值大于或等于设定值时,计数器状态位置状
27、态位置1,当前值累加的最大值为,当前值累加的最大值为32 767。当计数器的复位输入端电路接通时,计数当计数器的复位输入端电路接通时,计数器的状态位复位(置器的状态位复位(置0),当前计数值为零,),当前计数值为零,加计数器的应用如图加计数器的应用如图3-14所示。所示。图图3-14 加计数器的应用加计数器的应用(2)减计数器指令)减计数器指令在减计数器在减计数器CD脉冲输入信号的上升脉冲输入信号的上升沿(从沿(从OFF变为变为ON),从设定值开始,计),从设定值开始,计数器的当前值减数器的当前值减1,当前值等于,当前值等于0时,停止时,停止计数,计数器位被置计数,计数器位被置1,如图,如图3
28、-15所示。所示。当减计数器的复位输入端有效时,计当减计数器的复位输入端有效时,计数器把设定值装入当前值存储器,计数器数器把设定值装入当前值存储器,计数器状态位复位(置状态位复位(置0)。)。减计数器指令应用程序及时序图如图减计数器指令应用程序及时序图如图3-15所示。所示。图图3-15 减计数器指令应用程序及时序图减计数器指令应用程序及时序图减计数器在计数脉冲减计数器在计数脉冲I2.0的上升沿减的上升沿减1计数,当前值从设定值开始减至计数,当前值从设定值开始减至0时,计数时,计数器输出状态位置器输出状态位置1,Q0.0通电(置通电(置1),在),在复位脉冲复位脉冲I1.0的上升沿,定时器状态
29、位复的上升沿,定时器状态位复位(置位(置0),当前值等于设定值,为下次计),当前值等于设定值,为下次计数工作做好准备。数工作做好准备。(3)加)加/减计数器指令减计数器指令加加/减计数器有两个脉冲输入端,其中减计数器有两个脉冲输入端,其中CU用于加计数,用于加计数,CD用于减计数,执行加用于减计数,执行加/减计数时,减计数时,CU/CD的计数脉冲上升沿加的计数脉冲上升沿加1/减减1计数。计数。当前值大于或等于计数器设定值时,当前值大于或等于计数器设定值时,计数器状态位置位。复位输入有效或执行计数器状态位置位。复位输入有效或执行复位指令时,计数器状态位复位,当前值复位指令时,计数器状态位复位,当
30、前值清零。达到计数最大值(清零。达到计数最大值(32 767)后,下)后,下一个一个CU输入上升沿将使计数值变为最小值输入上升沿将使计数值变为最小值(32 768)。)。同样,达到最小值后,下一个同样,达到最小值后,下一个CD输输入上升沿将使计数值变为最大值。加入上升沿将使计数值变为最大值。加/减计减计数器应用程序及时序图如图数器应用程序及时序图如图3-16所示。所示。图图3-16 加加/减计数器应用程序及时序图减计数器应用程序及时序图3.3.1 算术运算指令算术运算指令1加加/减运算减运算加加/减运算指令是对符号数的加减运算指令是对符号数的加/减运减运算操作,包括整数加算操作,包括整数加/减
31、、双整数加减、双整数加/减和实减和实数加数加/减运算。减运算。梯形图加梯形图加/减运算指令采用功能块格式,减运算指令采用功能块格式,功能块由指令类型,使能输入端(功能块由指令类型,使能输入端(EN),),操作数(操作数(IN1、IN2)输入端,运算结果输)输入端,运算结果输出端(出端(OUT),使能输出端(),使能输出端(ENO)等组)等组成。成。加加/减运算减运算6种指令的梯形图指令格式种指令的梯形图指令格式及功能如表及功能如表3-9所示。所示。(1)指令类型和运算关系)指令类型和运算关系 整数加整数加/减运算。当使能输入有效减运算。当使能输入有效时,将两个单字长(时,将两个单字长(16位)
32、符号整数位)符号整数IN1和和IN2相加相加/减,将运算结果送到减,将运算结果送到OUT指定指定的存储器单元输出。的存储器单元输出。语句表及运算结果如下。语句表及运算结果如下。整数加法:整数加法:MOVW IN1,OUT /IN1OUT +I IN2,OUT /OUT+IN2=OUT整数减法:整数减法:MOVW IN1,OUT /IN1OUT I IN2,OUT /OUTIN2=OUT从语句表可以看出,从语句表可以看出,IN1、IN2和和OUT操作数的地址不相同时,操作数的地址不相同时,STL将将LAD的加的加/减运算分别用两条指令描述。减运算分别用两条指令描述。IN1或或IN2=OUT时整数
33、加法:时整数加法:+I IN2,OUT/UT+IN2=OUTIN1或或IN2=OUT时,加法指令节省一时,加法指令节省一条数据传送指令,本规律适用于所有算术条数据传送指令,本规律适用于所有算术运算指令。运算指令。双整数加双整数加/减运算。当使能输入有减运算。当使能输入有效时,将两个双字长(效时,将两个双字长(32位)符号整数位)符号整数IN1和和IN2相加、减,将运算结果送到相加、减,将运算结果送到OUT指定的存储器单元输出。指定的存储器单元输出。语句表及运算结果如下。语句表及运算结果如下。双整数加法:双整数加法:MOVD IN1,OUT /IN1OUT +D IN2,OUT /OUT+IN2
34、=OUT双整数减法:双整数减法:MOVD IN1,OUT /IN1OUT D IN2,OUT /OUTIN2=OUT 实数加实数加/减运算。当使能输入有效减运算。当使能输入有效时,将两个双字长(时,将两个双字长(32位)的有符号实数位)的有符号实数IN1和和IN2相加相加/减,然后将运算结果送到减,然后将运算结果送到OUT指定的存储器单元输出。指定的存储器单元输出。语句表及运算结果如下。语句表及运算结果如下。实数加法:实数加法:MOVR IN1,OUT /IN1OUT +R IN2,OUT /OUT+IN2=OUT实数减法:实数减法:MOVR IN1,OUT /IN1OUT R IN2,OUT
35、 /OUTIN2=OUT 加加/减运算减运算IN1、IN2、OUT操作数操作数的数据类型分别为的数据类型分别为INT、DINT、REAL。寻址范围参见附表寻址范围参见附表4。(2)对标志位的影响)对标志位的影响算术运算指令影响特殊标志的算术状算术运算指令影响特殊标志的算术状态位态位SM1.0SM1.3,并建立指令功能块使,并建立指令功能块使能输出能输出ENO。特殊标志位特殊标志位 SM1.0(零),(零),SM1.1(溢出),(溢出),SM1.2(负)。(负)。SM1.1用来指示溢出错误和非法值。用来指示溢出错误和非法值。如果如果SM1.1置位,置位,SM1.0和和SM1.2的状态无的状态无效
36、,原始操作数不变。如果效,原始操作数不变。如果SM1.1不置位,不置位,SM1.0和和SM1.2的状态反映算术运算结果。的状态反映算术运算结果。ENO。当使能输入有效,运算结。当使能输入有效,运算结果无错时,果无错时,ENO=1,否则,否则ENO=0(出错或(出错或无效)。使能输出断开的出错条件:无效)。使能输出断开的出错条件:SM1.1=1(溢出),(溢出),0006(间接寻址(间接寻址错误),错误),SM4.3(运行时间)。(运行时间)。加法运算应用举例如图加法运算应用举例如图3-17所示。所示。求求1 000加加200的和,的和,1 000在在VW100中,中,结果存入结果存入VW200
37、。图图3-17 加法运算应用举例加法运算应用举例2乘乘/除法运算除法运算乘乘/除法运算是对符号数的乘法和除法除法运算是对符号数的乘法和除法运算,包括整数乘运算,包括整数乘/除运算,双整数乘除运算,双整数乘/除运除运算,整数乘算,整数乘/除双整数输出运算,实数乘除双整数输出运算,实数乘/除除运算等。运算等。(1)乘)乘/除运算指令格式除运算指令格式乘乘/除运算指令格式及功能如表除运算指令格式及功能如表3-10所所示。示。乘乘/除运算指令采用同加除运算指令采用同加/减运算相类减运算相类似的功能块指令格式。指令分为似的功能块指令格式。指令分为MUL I/DIV I(整数乘(整数乘/除运算),除运算)
38、,MUL DI/DIV DI(双整数乘(双整数乘/除运算),除运算),MUL/DIV(整(整数乘数乘/除双整数输出),除双整数输出),MUL R/DIV R(实(实数乘数乘/除运算)除运算)8种类型。种类型。(2)指令功能分析)指令功能分析 整数乘整数乘/除指令。当使能输入端有除指令。当使能输入端有效时,将两个单字长(效时,将两个单字长(16位)符号整数位)符号整数IN1和和IN2相乘相乘/除,产生一个单字长(除,产生一个单字长(16位)位)整数结果,从整数结果,从OUT指定的存储器单元输出。指定的存储器单元输出。语句表格式及功能如下。语句表格式及功能如下。整数乘法:整数乘法:MOVW IN1
39、,OUT /IN1OUT *I IN2,OUT /OUT*IN2=OUT整数除法:整数除法:MOVW IN1,OUT /IN1OUT /I IN2,OUT /OUT/IN2=OUT 双整数乘双整数乘/除指令。当使能输入除指令。当使能输入有效时,将两个双字长(有效时,将两个双字长(32位)符号位)符号整数整数IN1和和IN2相乘相乘/除,产生一个双字除,产生一个双字长(长(32位)整数结果,从位)整数结果,从OUT指定的指定的存储单元输出。存储单元输出。语句表格式及功能如下。语句表格式及功能如下。双整数乘法:双整数乘法:MOVD IN1,OUT /IN1OUT *D IN2,OUT /OUT*I
40、N2=OUT双整数除法:双整数除法:MOVD IN1,OUT /IN1OUT /D IN2,OUT /OUT/IN2=OUT 整数乘整数乘/除双整数输出指令。当使除双整数输出指令。当使能输入有效时,将两个单字长(能输入有效时,将两个单字长(16位)符位)符号整数号整数IN1和和IN2相乘相乘/除,产生一个双字长除,产生一个双字长(32位)整数结果,从位)整数结果,从OUT指定的存储单指定的存储单元输出。整数除双整数输出产生的元输出。整数除双整数输出产生的32位结位结果中低果中低16位是商,高位是商,高16位是余数。位是余数。语句表格式及功能如下。语句表格式及功能如下。整数乘法产生双整数:整数乘
41、法产生双整数:MOVW IN1,OUT /IN1OUT MUL IN2,OUT /OUT*IN2=OUT整数除法产生双整数:整数除法产生双整数:MOVW IN1,OUT /IN1OUT DIV IN2,OUT /OUT/IN2=OUT 实数乘实数乘/除指令。当使能输入有效除指令。当使能输入有效时,将两个双字长(时,将两个双字长(32位)符号整数位)符号整数IN1和和IN2相乘相乘/除,产生一个双字长(除,产生一个双字长(32位)位)实数结果,从实数结果,从OUT指定的存储单元输出。指定的存储单元输出。语句表格式及功能如下。语句表格式及功能如下。实数乘法:实数乘法:MOVR IN1,OUT /I
42、N1OUT *R IN2,OUT /OUT*IN2=OUT实数除法:实数除法:MOVR IN1,OUT /IN1OUT /R IN2,OUT /OUT/IN2=OUT(3)操作数寻址范围)操作数寻址范围IN1、IN2、OUT操作数的数据类型操作数的数据类型根据乘根据乘/除运算指令功能分为除运算指令功能分为INT(WORD)、)、DINT、REAL。IN1、IN2、OUT操作数寻址范围参见附表操作数寻址范围参见附表4。(4)乘)乘/除运算对标志位的影响除运算对标志位的影响 乘乘/除运算指令执行的结果影响特除运算指令执行的结果影响特殊标志的算术状态位:殊标志的算术状态位:SM1.0(零),(零),
43、SM1.1(溢出),(溢出),SM1.2(负),(负),SM1.3(被(被0除)。除)。乘法运算过程中乘法运算过程中SM1.1(溢出)被置(溢出)被置位,就不写出了,并且所有其他的算术状位,就不写出了,并且所有其他的算术状态位置为态位置为0(整数乘产生双整数指令输出不(整数乘产生双整数指令输出不会产生溢出)。会产生溢出)。除法运算过程中除法运算过程中SM1.3置位(被置位(被0除),除),其他的算术状态位保留不变,原始输入操其他的算术状态位保留不变,原始输入操作数不变。作数不变。SM1.3不被置位,所有有关的不被置位,所有有关的算术状态位都是算术操作的有效状态。算术状态位都是算术操作的有效状态
44、。使能流输出使能流输出ENO=0断开的出错条断开的出错条件是:件是:SM1.1=1(溢出),(溢出),0006(间接寻(间接寻址错误),址错误),SM4.3(运行时间)。(运行时间)。乘乘/除指令的应用举例如图除指令的应用举例如图3-18所示。所示。图图3-18 乘乘/除指令的应用除指令的应用3.3.2 加1/减1指令加加1/减减1指令用于自加指令用于自加/自减的操作,自减的操作,以实现累加计数和循环控制等程序的编写,以实现累加计数和循环控制等程序的编写,其梯形图为指令盒格式。操作数的长度为其梯形图为指令盒格式。操作数的长度为字节(无符号数)、字或双字(有符号字节(无符号数)、字或双字(有符号
45、数),数),IN和和OUT操作数寻址范围见附表操作数寻址范围见附表4。指令格式及功能如表指令格式及功能如表3-11所示。所示。1字节加字节加1/减减1指令指令字节加字节加1/减减1(INC B/DEC B)指令,)指令,用于使能输入有效时,将一个字节的无符用于使能输入有效时,将一个字节的无符号数号数IN加加1/减减1,得到一个字节的运算结果,得到一个字节的运算结果,通过通过OUT指定的存储器单元输出。指定的存储器单元输出。2字加字加1/减减1指令指令字加字加1/减减1(INC W/DEC W)指令,)指令,用于使能输入有效时,将单字长符号输入用于使能输入有效时,将单字长符号输入数数IN加加1/
46、减减1,得到一个字的运算结果,通,得到一个字的运算结果,通过过OUT指定的存储器单元输出。指定的存储器单元输出。3双字加双字加1/减减1指令指令 双字加双字加1/减减1(INC DW/DEC DW)指令,用于使能输入有效时,将双字长符指令,用于使能输入有效时,将双字长符号输入数号输入数IN加加1/减减1,得到一个双字的运算,得到一个双字的运算结果,通过结果,通过OUT指定的存储器单元输出。指定的存储器单元输出。加加1/减减1指令的应用如图指令的应用如图3-19所示。所示。LD I0.1EUINCB AC0DECB VB100图图3-19 加加1/减减1指令的应用指令的应用3.3.3 逻辑运算指
47、令逻辑运算是对无符号数进行的逻辑处逻辑运算是对无符号数进行的逻辑处理,主要包括逻辑与、逻辑或、逻辑异或理,主要包括逻辑与、逻辑或、逻辑异或和取反等运算指令。按操作长度可分为字和取反等运算指令。按操作长度可分为字节、字和双字逻辑运算。其中字操作运算节、字和双字逻辑运算。其中字操作运算指令格式及功能如表指令格式及功能如表3-12所示。所示。1逻辑与指令逻辑与指令逻辑与(逻辑与(WAND)指令有字节、字、)指令有字节、字、双字双字3种数据长度的与操作指令。种数据长度的与操作指令。逻辑与指令操作功能:当使能输入有逻辑与指令操作功能:当使能输入有效时,把两个字节(字、双字)长的输入效时,把两个字节(字、
48、双字)长的输入逻辑数按位相与,得到的一个字节(字、逻辑数按位相与,得到的一个字节(字、双字)逻辑运算结果,传送到双字)逻辑运算结果,传送到OUT指定的指定的存储器单元输出。存储器单元输出。语句表指令格式分别为语句表指令格式分别为MOVB IN1,OUT;MOVW IN1,OUT;MOVD IN1,OUTANDB IN2,OUT;ANDW IN2,OUT;ANDD IN2,OUT2逻辑或指令逻辑或指令逻辑或(逻辑或(WOR)指令有字节、字、)指令有字节、字、双字双字3种数据长度的或操作指令。种数据长度的或操作指令。逻辑或指令操作功能:当使能输入有逻辑或指令操作功能:当使能输入有效时,把两个字节(
49、字、双字)长的输入效时,把两个字节(字、双字)长的输入逻辑数按位相或,得到的一个字节(字、逻辑数按位相或,得到的一个字节(字、双字)逻辑运算结果,传送到双字)逻辑运算结果,传送到OUT指定的指定的存储器单元输出。存储器单元输出。语句表指令格式分别为语句表指令格式分别为MOVB IN1,OUT;MOVW IN1,OUT;MOVD IN1,OUTORB IN2,OUT;ORW IN2,OUT;ORD IN2,OUT3逻辑异或指令逻辑异或指令 逻辑异或(逻辑异或(WXOR)指令有字节、字、)指令有字节、字、双字双字3种数据长度的异或操作指令。种数据长度的异或操作指令。逻辑异或指令操作功能:当使能输入
50、逻辑异或指令操作功能:当使能输入有效时,把两个字节(字、双字)长的输有效时,把两个字节(字、双字)长的输入逻辑数按位相异或,得到的一个字节入逻辑数按位相异或,得到的一个字节(字、双字)逻辑运算结果,传送到(字、双字)逻辑运算结果,传送到OUT指定的存储器单元输出。指定的存储器单元输出。语句表指令格式分别为语句表指令格式分别为MOVB IN1,OUT;MOVW IN1,OUT;MOVD IN1,OUTXORB IN2,OUT;XORW IN2,OUT;XORD IN2,OUT4取反指令取反指令取反(取反(INV)指令包括字节、字、双)指令包括字节、字、双字字3种数据长度的取反操作指令。种数据长度