版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、5-3 数据处理与算术运算指令数据处理与算术运算指令 S7-300PLC可以按字节(可以按字节(B)、字()、字(W)、双字()、双字(DW)访问)访问存储器。数据处理与算术运算指令包括数据装入与传送指令、数据存储器。数据处理与算术运算指令包括数据装入与传送指令、数据类型转换指令、比较指令、算术运算指令、移位指令、累加器操作类型转换指令、比较指令、算术运算指令、移位指令、累加器操作指令和地址寄存器的加指令。指令和地址寄存器的加指令。一、数据装入与传送指令一、数据装入与传送指令 应用装入应用装入(L, Load)指令和传送(指令和传送(T,Transfer)指令可以在输入)指令可以在输入或输出与
2、存储器之间,或存储器与存储器之间交换数据。或输出与存储器之间,或存储器与存储器之间交换数据。 数据交换的方法一般是通过累加器进行的,即装入指令数据交换的方法一般是通过累加器进行的,即装入指令(L)和传和传送指令(送指令(T)必须通过累加器进行数据交换。)必须通过累加器进行数据交换。S7-300PLC有两个有两个32位的累加器,即累加器位的累加器,即累加器1和累加器和累加器2。L指令将源数据装入累加器指令将源数据装入累加器1(累加器(累加器1原有数据移入累加器原有数据移入累加器2,累加器,累加器2原有数据被覆盖)。然原有数据被覆盖)。然后后T指令将累加器指令将累加器1中的内容写入目的存储区,累加
3、器的内容保持中的内容写入目的存储区,累加器的内容保持不变。不变。装入指令和传送指令如表装入指令和传送指令如表5-14所示。所示。 装入指令和传送指令有三种寻址方式:立即寻址、直接寻址和间装入指令和传送指令有三种寻址方式:立即寻址、直接寻址和间接寻址。接寻址。 1.立即寻址的装入与传送指令立即寻址的装入与传送指令 操作数是指令操作或运算的对象,寻址方式是指令取得操作数的操作数是指令操作或运算的对象,寻址方式是指令取得操作数的方式,操作数可以直接给出或间接给出。立即寻址的操作数直接在方式,操作数可以直接给出或间接给出。立即寻址的操作数直接在指令中,下面是使用立即寻址的例子。指令中,下面是使用立即寻
4、址的例子。 2. 直接寻址的装入与传送指令直接寻址的装入与传送指令 直接寻址在指令中直接给出存储器或寄存器的区域、长度和位直接寻址在指令中直接给出存储器或寄存器的区域、长度和位置,例如用置,例如用MW200 指定位存储区中的字,地址为指定位存储区中的字,地址为200;MBl00表示表示以字节方式存取,以字节方式存取,MW100 表示存取表示存取MBl00 、MW101 组成的字,组成的字,MD100表示存取表示存取MBl00 MB103 组成的双字。下面是直接寻址的程组成的双字。下面是直接寻址的程序实例:序实例: 3.存储器间接寻址存储器间接寻址 在存储器间接寻址指令中,给出一个作为地址指针的
5、存储器在存储器间接寻址指令中,给出一个作为地址指针的存储器,该该存储器的内容是操作数所在存储单元的地址。使用存储器间接寻址存储器的内容是操作数所在存储单元的地址。使用存储器间接寻址可以改变操作数的地址,在循环程序中经常使用存储器间接寻址。可以改变操作数的地址,在循环程序中经常使用存储器间接寻址。 地址指针可以是字或双字。当定时器地址指针可以是字或双字。当定时器(T )、计数器、计数器(C)、数据块、数据块(OB)、功能块、功能块(FB)和功能和功能(FC)的编号范围小于的编号范围小于65535 时时,使用字指针使用字指针就够了。就够了。 其它地址要使用双字指针其它地址要使用双字指针,如果要用双
6、字格式的指针访问一个字、如果要用双字格式的指针访问一个字、字节或双字存储器字节或双字存储器,必须保证指针的位编号为必须保证指针的位编号为0,例如例如P#Q20.0 。双字。双字指针的格式如图指针的格式如图5-54所示。位所示。位02 为被寻址地址中位的编号(为被寻址地址中位的编号(0 7 ) ,位位3 18 为被寻址的字节的编号为被寻址的字节的编号(0 65535 )。只有双字。只有双字MD、LD、DBD 和和DID 能作地址指针。能作地址指针。 下面是存储器间接寻址的例子:下面是存储器间接寻址的例子: 4.寄存器间接寻址寄存器间接寻址 S7中有两个地址寄存器中有两个地址寄存器AR1和和AR2
7、。通过它们可以对各存储区的。通过它们可以对各存储区的存储器内容作寄存器间接寻址。地址寄存器的内容加上偏移量形成存储器内容作寄存器间接寻址。地址寄存器的内容加上偏移量形成地址指针,后者指向数值所在的存储单元。地址指针,后者指向数值所在的存储单元。 地址寄存器存储的双字地址指针格如图地址寄存器存储的双字地址指针格如图5-55所示所示 。其中第。其中第02 位位(xxx )为被寻址地址中位的编号()为被寻址地址中位的编号(0 7 ) ,第第3 18 位(位(bbbb bbbb bbbb bbbb )为被寻址地址的字节的编号()为被寻址地址的字节的编号(0 65535)。第)。第24 26 位(位(r
8、 r r)为被寻址地址的区域标识号,第)为被寻址地址的区域标识号,第31 位位x = 0为区域内的间为区域内的间接寻址,第接寻址,第31 位位x = l为区域间的间接寻址。为区域间的间接寻址。 第一种地址指针格式包括被寻址数值所在存储单元地址的字节第一种地址指针格式包括被寻址数值所在存储单元地址的字节编号和位编号编号和位编号,存储区的类型在指令中给出存储区的类型在指令中给出,例如例如L DBBAR1,P#6.0。这种指针格式适用于在某一存储区内寻址,即这种指针格式适用于在某一存储区内寻址,即区内寄存器间接寻址。区内寄存器间接寻址。第第24 26 位(位(r r r)应为)应为0。 第二种地址指
9、针格式的第第二种地址指针格式的第2426 位还包含了说明数值所在存储位还包含了说明数值所在存储区的存储区域标识符的编号区的存储区域标识符的编号r r r ,用这几位可实现跨区寻址,这种指用这几位可实现跨区寻址,这种指针格式用于针格式用于区域间寄存器间接寻址区域间寄存器间接寻址。 如果要用寄存器指针访问一个字节、字或双字,必须保证指针如果要用寄存器指针访问一个字节、字或双字,必须保证指针中的位地址编号为中的位地址编号为0。 指针常数指针常数P5.0 对应的二进制数为对应的二进制数为2 # 0000 0000 0000 0000 0000 0000 0010 1000。下面是区内间接寻址的例子:。
10、下面是区内间接寻址的例子:下面是区域间间接寻址的例子:下面是区域间间接寻址的例子: P#M6.0对应的二进制数对应的二进制数2#1000 0011 0000 0000 0000 0000 0011 0000。因为地址指针。因为地址指针P#M6.0 中己经包含有区域信息,使用间中己经包含有区域信息,使用间接寻址的指令接寻址的指令TW AR1 , P#50中没有必要再用地址标识符中没有必要再用地址标识符M。 寄存器间接寻址的区域标识位如表寄存器间接寻址的区域标识位如表5-15所示。所示。5.读取或传送状态字指令读取或传送状态字指令指令格式如下:指令格式如下: L STW /将状态字装入累加器将状态
11、字装入累加器1中,即将状态字中的中,即将状态字中的1、4、5、6、7、 8位装入累加器位装入累加器1低字中的相应位中,但不能装入状态字的低字中的相应位中,但不能装入状态字的 (0位)、位)、STA(2位)和位)和OR(3位)三个状态字位,而累位)三个状态字位,而累 加器加器1的的931位则清零。该指令的执行与状态位无关,而位则清零。该指令的执行与状态位无关,而 且对状态字没有任何影响。且对状态字没有任何影响。 T STW /将累加器将累加器1中的中的08位传送到状态字的相应位位传送到状态字的相应位。6.地址寄存器内容的装入和传送指令地址寄存器内容的装入和传送指令 S7-300PLC有两个地址寄
12、存器,即有两个地址寄存器,即AR1和和AR2。对于地址寄存。对于地址寄存器可以不经过累加器器可以不经过累加器1而直接将操作数装入和传送,或直接交换两而直接将操作数装入和传送,或直接交换两个地址寄存器的内容。个地址寄存器的内容。指令示例如表指令示例如表5-16、表、表5-17所示所示。 使用使用CAR指令可以交换地址寄存器指令可以交换地址寄存器AR1 和地址寄存器和地址寄存器AB2的内的内容,指令不需要指定操作数。指令的执行与状态位无关,而且对状容,指令不需要指定操作数。指令的执行与状态位无关,而且对状态字没有任何影响。态字没有任何影响。 7.装入时间值或计数值装入时间值或计数值装入定时器当前剩
13、余时间指令有直接装载和装入定时器当前剩余时间指令有直接装载和BCD 装载两种。如:装载两种。如: L T10 /将定时器将定时器T10中当前剩余时间以二进制数格式装人累加器中当前剩余时间以二进制数格式装人累加器1 的低字中(不带时基)的低字中(不带时基) LC T10 /将定时器将定时器Tl0当前剩余时向以当前剩余时向以BCD 码格式装人累加器码格式装人累加器l 低字低字 中(带时基)中(带时基) 装入计数器当前计数值指令也有直接装载和装入计数器当前计数值指令也有直接装载和BCD 装载两种。如:装载两种。如: L C10 /将计数器将计数器C10 中二进制格式的计数值直接装入累加器中二进制格式
14、的计数值直接装入累加器1的低的低 字中字中 L C C 10 /将计数器将计数器C10 中二进制格式的计数值以中二进制格式的计数值以BCD 码格式装入累码格式装入累 加器加器1低字中低字中 8.梯形图方块传送指令梯形图方块传送指令(MOVE指令指令) 图图5-57、图、图5-58 分别为传送方块及其使用示例。图中输入位分别为传送方块及其使用示例。图中输入位I0.0 闭合,则执行传送操作,将存储字闭合,则执行传送操作,将存储字MW20 的内容传送至数据字的内容传送至数据字DBW10 ,输出,输出Q4.0 为为l ;若输入位;若输入位I0.0 断开,则不执行传送操作,断开,则不执行传送操作,输出输
15、出Q4.0 为为0。二、数据转换指令二、数据转换指令 数据转换指令是将累加器数据转换指令是将累加器1中的数据进行数据类型转换中的数据进行数据类型转换,转换的结转换的结果仍放在累加器果仍放在累加器1 中。在中。在STEP7 中中,可以实现可以实现BCD 码与整数、整数码与整数、整数与双整数(长整数)、双整数与实数间的转换,还可以实现整数的与双整数(长整数)、双整数与实数间的转换,还可以实现整数的反码、整数的补码、实数求反等数据转换操作。反码、整数的补码、实数求反等数据转换操作。 下面先回顾一下数据格式,然后再介绍数据转换指令的使用方法。下面先回顾一下数据格式,然后再介绍数据转换指令的使用方法。(
16、一)数据格式(一)数据格式PLC 中常用到的数据格式如下:中常用到的数据格式如下: 1.十进制数(十进制数(BCD 码数)格式码数)格式 十进制数的每一位用十进制数的每一位用4 个二进制位表示,因为最大的数是个二进制位表示,因为最大的数是9,所,所以需要以需要4 位才能表示位才能表示(1001)。从)。从0到到9 的的BCD 码数与二进制数表示码数与二进制数表示是相同的。是相同的。 2.整数(整数(INT )、双整数()、双整数(DINT )格式)格式 整数或双整数的二进制数格式分为整数或双整数的二进制数格式分为16 位整数和位整数和32 位整数(又称位整数(又称长整数或双整数);正数和负数。
17、在二进制格式中,整数的负数形长整数或双整数);正数和负数。在二进制格式中,整数的负数形式用正数的二进制补码表示。二进制补码利用正数取反加式用正数的二进制补码表示。二进制补码利用正数取反加1得到。得到。 3.实数(实数(REAL)格式。)格式。STEP7中的实数是按照中的实数是按照IEEE标准表示的标准表示的,例如例如+0.75(定点数)或(定点数)或+7.5E-1(浮点数)。(浮点数)。 在存储器中,实数占用两个字(在存储器中,实数占用两个字(32位)位),即存放实数(浮点数)即存放实数(浮点数)需要一个双字(需要一个双字(32位)位),最高的最高的31位是符号位,位是符号位,0表示正数,表示
18、正数,1表示负表示负数。可以表示的数的范围是数。可以表示的数的范围是1.17549510-38 3.4028231038。 (二)(二)BCD 数和整数间的转换数和整数间的转换 BCD 数可转换为整数、双整数,反之亦可。为了需要,还可将整数可转换为整数、双整数,反之亦可。为了需要,还可将整数转换成双整数。指令表示格式示例如表数转换成双整数。指令表示格式示例如表5-18 所示。所示。 对表对表5-18 执行的说明:执行的说明: (1)在执行在执行BCD 码转换为整数或双整数指令时,如果码转换为整数或双整数指令时,如果BCD 数是无数是无效数(如其中一位值在效数(如其中一位值在A F 即即1015
19、 范围内),将得不到正确的转范围内),将得不到正确的转换结果,并导致系统出现换结果,并导致系统出现“BCDF”错误。在这种情况下,程序的正错误。在这种情况下,程序的正常运行顺序被终止。常运行顺序被终止。 (2)在执行整数转换为)在执行整数转换为BCD 数时数时,由于由于3位位BCD 数所能表示的范数所能表示的范围围(-999 999)小于小于16 位整数的数值范围(位整数的数值范围(-32 768 32 767),),如果整数超出了如果整数超出了BCD 码所能表示的范围,便得不到正确的转换结码所能表示的范围,便得不到正确的转换结果,称为溢出。此时果,称为溢出。此时ENO 输出为输出为0 。 (
20、3)在编程时,因为运算或比较等原因,需将整数转换成双整数,)在编程时,因为运算或比较等原因,需将整数转换成双整数,可用表可用表5-18 中第中第5 条指令。条指令。 下面举一个使用的例子,如图下面举一个使用的例子,如图5-65 所示。图中绘出了梯形图方块及所示。图中绘出了梯形图方块及对应语句表程序。对应语句表程序。(三)双整数和实数间的转换(三)双整数和实数间的转换 用户程序中有时需要整数相除,相除的结果可能小于用户程序中有时需要整数相除,相除的结果可能小于0 ,由于这些,由于这些值只能用实数表示,所以需要转换到实数。此外,其他实数运算和值只能用实数表示,所以需要转换到实数。此外,其他实数运算
21、和比较也会用到实数转换,实数是比较也会用到实数转换,实数是32 位数,位数,一般整数要转换为实数时,一般整数要转换为实数时,须先将整数转换为双整数后再进行。须先将整数转换为双整数后再进行。1.双整数(双整数(32 位)转换为实数(位)转换为实数(32 位)位) 梯形图方块指令(梯形图方块指令(DI _ R )和语句表指令()和语句表指令(DTR )均列于表)均列于表5-18 中最后一条。中最后一条。 2.实数(实数(32 位)转换为双整数(位)转换为双整数(32 位)位) 为简化介绍,用图为简化介绍,用图5-66 统一表示转换方块,方块中上部字符如表统一表示转换方块,方块中上部字符如表5-19
22、所示。所示。 执行表执行表5-19 的指令,就是在将累加器的指令,就是在将累加器l 中的实数转换为中的实数转换为32 位整数。位整数。但化整的规则不相同,同一实数,执行不同转换指令,所得结果有但化整的规则不相同,同一实数,执行不同转换指令,所得结果有些区别。些区别。RND 指令中将实数转换为最接近的整数是指:实数的小指令中将实数转换为最接近的整数是指:实数的小数部分执行小于数部分执行小于5 舍,大于舍,大于5 入,等于入,等于5 则选择偶数结果。如则选择偶数结果。如100.5 化整为化整为100 ,而,而101 .5 化整为化整为102 。如表如表5-20所示。所示。 数据转换指令简单应用:要
23、求将一个数据转换指令简单应用:要求将一个16 位整数转换成实数(位整数转换成实数(32 位)。先要将位)。先要将16 位整数转换成位整数转换成32 位整数,然后再从位整数,然后再从32 位整数转换位整数转换到到32 位实数。此实数便可用于带有实数的运算程序,转换程序如图位实数。此实数便可用于带有实数的运算程序,转换程序如图5-67 所示。所示。(四)求反、求补指令(四)求反、求补指令 对整数、双整数的二进制数求反码,即逐位将对整数、双整数的二进制数求反码,即逐位将0变为变为l , l 变为变为0 。对整数、双整数求补码,即逐位取反后再加对整数、双整数求补码,即逐位取反后再加1。实数的求反则只是
24、实数的求反则只是将符号位取反,求补只对整数或双整数才有意义。将符号位取反,求补只对整数或双整数才有意义。 求反、求补梯形图方块指令的图形与图求反、求补梯形图方块指令的图形与图5-66相同,求反、求补梯相同,求反、求补梯形图方块指令中上部字符表示法和形图方块指令中上部字符表示法和STL指令如表指令如表5-21所示。所示。 下面举例说明其用法。下面举例说明其用法。 例如,整数求补,其程序和转换过程如图例如,整数求补,其程序和转换过程如图5-68所示。所示。 又例如,实数求反,如图又例如,实数求反,如图5-69所示所示整数的二进制求反整数的二进制求反,实际上是对原整数用实际上是对原整数用FFFF (
25、 H )FFFFFFFF (H)进行进行“异或异或”操作操作,因此每一位都变为其相反的值。因此每一位都变为其相反的值。从从STL指令看出,指令看出,求反、求补操作均在累加器中进行。求反、求补操作均在累加器中进行。三、数据比较指令三、数据比较指令 在编程时有时需要对两个量进行比较。在编程时有时需要对两个量进行比较。比较指令只能在两个同类比较指令只能在两个同类型数据间进行。型数据间进行。被比较的两个数可以是:被比较的两个数可以是:I 两个整数(两个整数(16 位定点位定点数);数);D两个双整数(两个双整数(32 位定点数)位定点数); R两个实数(两个实数(32 位的位的IEEE 格式浮点数)。
26、格式浮点数)。若比较的结果为若比较的结果为“真真”,则令,则令RLO=1 ,否则,否则RLO =0 。 比较类型有等于、不等于等比较类型有等于、不等于等6 种,用比较符表示。种,用比较符表示。3种数据的种数据的6 种种比较如表比较如表5-22 所示。它实际上是所示。它实际上是STL比较指令的格式。在比较指令比较指令的格式。在比较指令的梯形图方块的上部也采用了表的梯形图方块的上部也采用了表5-22 所列出的符号,同一符号在两所列出的符号,同一符号在两种语言格式(种语言格式(STL,LAD )中均使用,对读者记忆更为方便。下面)中均使用,对读者记忆更为方便。下面举例说明比较指令的用法。举例说明比较
27、指令的用法。 例如,两个整数进行大于等于比较,其程序如图例如,两个整数进行大于等于比较,其程序如图5-70所示。所示。 由上例看出,由上例看出,方块比较指令在逻辑串中,可等效于一个常开触点。方块比较指令在逻辑串中,可等效于一个常开触点。如果比较结果为如果比较结果为“真真”,则该常开触点闭合(意味着电流可流过),则该常开触点闭合(意味着电流可流过),否则触点断开。由于比较指令的使用与触点类似,可以与其它触点否则触点断开。由于比较指令的使用与触点类似,可以与其它触点串联或并联,因此比较指令不能放在逻辑串的最后。串联或并联,因此比较指令不能放在逻辑串的最后。 梯形图方块指令的输入和输出均为梯形图方块
28、指令的输入和输出均为BOOL 数数,可以取自可以取自I、Q 、M 、D 、L 。被比较数。被比较数IN1和和IN2的数据类型与指令类型有关的数据类型与指令类型有关,且只且只能在二个同类型数据间比较。能在二个同类型数据间比较。 四、算术运算指令四、算术运算指令 现代现代PLC实际上是一台工业控制计算机,一般都有很强的运算能实际上是一台工业控制计算机,一般都有很强的运算能力。对力。对S7-300PLC,算术运算指令有两大类,即基本算术运算指令,算术运算指令有两大类,即基本算术运算指令(四则运算指令四则运算指令)和扩展算术运算指令(数学函数指令)。和扩展算术运算指令(数学函数指令)。1. 基本算术运
29、算指令基本算术运算指令 基本算术运算指令可完成基本算术运算指令可完成整数、双整数和实数(整数、双整数和实数(32位浮位浮点数)的加、减、乘、除和双点数)的加、减、乘、除和双整数除法取余等运算。整数除法取余等运算。 S7-300PLC的基本算术运算指令有相同的格式,其梯形图方块的基本算术运算指令有相同的格式,其梯形图方块指令如图指令如图5-71所示。现对其用法作如下说明:所示。现对其用法作如下说明:(1)方框上部)方框上部_为运算符号(如表为运算符号(如表5-27所示),它表明进所示),它表明进行的是哪种算术运算。行的是哪种算术运算。(2)如果在允许输入端)如果在允许输入端EN的的RLO=1,就
30、执行运算。如果运算没有,就执行运算。如果运算没有出现错误,则允许输出端出现错误,则允许输出端ENO=1;如果运算结果超出了数据类型的;如果运算结果超出了数据类型的表示范围或有错误,允许输出端表示范围或有错误,允许输出端ENO=0。ENO连接的其它功能梯连接的其它功能梯形图部分将不能继续执行。形图部分将不能继续执行。(3)IN1端为第端为第1运算数(被加数、被减数、被乘数、被除数),运算数(被加数、被减数、被乘数、被除数),IN2端为第端为第2运算数(加数、减数、乘数、除数)。运算数(加数、减数、乘数、除数)。除除“整数乘法整数乘法”运算外,运算外,IN1、IN2和和OUT三端的数据类型必须相同
31、!三端的数据类型必须相同!对对“整数乘整数乘法法”运算,运算,IN1、IN2两端的运算数用两端的运算数用16位(位(W,字)整数,字)整数,OUT端的运算结果(乘积)为端的运算结果(乘积)为32位的双整数(位的双整数(DW,双字)。,双字)。 (4)实际上,算术)实际上,算术运算都是在累加器运算都是在累加器1(ACCU1)和累加)和累加器器2(ACCU2)中进)中进行,如图行,如图5-72所示。所示。算术运算时,第算术运算时,第1运运算数存累加器算数存累加器2,第,第2运算数存累加器运算数存累加器1,算术运算结果保存在算术运算结果保存在累加器累加器1中(原存的中(原存的第第2运算数被覆盖)。运
32、算数被覆盖)。(5)算术运算时,算术运算不受)算术运算时,算术运算不受RLO控制,对控制,对RLO也不产生影响。也不产生影响。但算术运算对状态字中的但算术运算对状态字中的CC1和和CC0、OV、OS有影响,如表有影响,如表5-23表表5-26所示。故所示。故可以用位操作指令或条件跳转指令对状态字中可以用位操作指令或条件跳转指令对状态字中的标志位进行判断操作。的标志位进行判断操作。(6)表)表5-27列出了算术运算的列出了算术运算的STL指令及梯形图方块上部所标的运指令及梯形图方块上部所标的运算字符,可供选用或组成算术运算的梯形图方块指令时用。算字符,可供选用或组成算术运算的梯形图方块指令时用。
33、算算 术术运运 算算STL指令指令梯形图方块上部运算字符梯形图方块上部运算字符整数整数双整数双整数实数实数整数整数双整数双整数实数实数加加+I+D+RADD_ _IADD_ _DIADD_ _R减减IDRSUB_ _ISUB_ _DISUB_ _R乘乘* *I * *D* *RMUL_ _I MUL_ _DI MUL_ _R除除/ /I / /D / /RDIV_ _I DIV_ _DI DIV_ _R除法取余除法取余MOD MOD_ _DI 加整数加整数 常数常数+ +32 表表5-27 基本算术运算指令基本算术运算指令 算术运算指令的一般规定已如上述,对一些特殊之处(表算术运算指令的一般规
34、定已如上述,对一些特殊之处(表5-27 中中 )说明如下:)说明如下: 整数乘法运算时,第整数乘法运算时,第1 、2 运算数(被乘数、乘数)用运算数(被乘数、乘数)用16 位位(字),相乘结果即(字),相乘结果即“乘积乘积”用用32 位(双字)。位(双字)。 整数除法运算时,用方块指令(整数除法运算时,用方块指令(DIV_I)在)在OUT 处输出处输出“商商”(舍去余数),用(舍去余数),用STL 指令(指令(/ I ) 时时,“商商”存累加器存累加器l 低字中,低字中,“余余数数”存累加器存累加器1 高字中。高字中。 双整数除法运算时,方块图指令双整数除法运算时,方块图指令“商商”(舍去余数
35、)在(舍去余数)在OUT 处输出(处输出(32 位值),而用位值),而用STL指令时,商则是保留在累加器指令时,商则是保留在累加器l 中。中。 MOD 为双整数为双整数“除法取余除法取余”指令。指令。执行方块指令时执行方块指令时,在在OUT 处输出的是两个双整数相除所得的处输出的是两个双整数相除所得的“余数余数”(小数,(小数,32 位值),执位值),执行行STL 指令时指令时,“余数余数”作为结果保存于累加器作为结果保存于累加器l 中。中。 执行执行“+”或或“+”指令时,累加器指令时,累加器1的的内容与内容与16位或位或32位整数常数相加,运算结果保存到累加器位整数常数相加,运算结果保存到
36、累加器1中。该中。该指令只有指令只有STL形式,无梯形图方块形式。形式,无梯形图方块形式。 下面举例说明基本算术运算指令的用法。下面举例说明基本算术运算指令的用法。 1)整数加法与双整数减法)整数加法与双整数减法 整数加法的用法如图整数加法的用法如图5-73a所示所示, 双整数减法如图双整数减法如图5-73b所示。所示。 2)整数乘法)整数乘法整数乘法的用法如图整数乘法的用法如图5-74所示。所示。 3)双整数除法(舍去余数)双整数除法(舍去余数)双整数除法(舍去余数)的用法如图双整数除法(舍去余数)的用法如图5-75所示。所示。4)双整数除法取余)双整数除法取余 求输入双字求输入双字ID10
37、的内容与常数的内容与常数32相除相除的余数的余数,结果保存到结果保存到MD20中。中。 对应的对应的LAD程序如图程序如图5-76所示所示,当当I0.1信号状态为信号状态为1时时,开始执行求开始执行求余运算余运算,并用并用Q4.0指示运算结果是否有效指示运算结果是否有效(0表示有效表示有效,1表示无效表示无效).5)整数除法()整数除法(STL形式)。下面是整数除法运算的例子:形式)。下面是整数除法运算的例子: L IW10 /IW10的内容装入累加器的内容装入累加器1的低字中的低字中 L MW14 /累加器累加器1的内容装入累加器的内容装入累加器2,MW14的内容装入累加器的内容装入累加器1
38、的的 低字中低字中 /I /累加器累加器2低字的值除以累加器低字的值除以累加器1低字的值,结果(商)存放在低字的值,结果(商)存放在 累加器累加器1的低字中,余数存放在累加器的低字中,余数存放在累加器1的高字中的高字中 T MW10 /累加器累加器1低字中的运算结果传送到低字中的运算结果传送到MW10中中 扩展算术运算指令可完成扩展算术运算指令可完成32 位浮点数的平方、平方根、自然对位浮点数的平方、平方根、自然对数、基于数、基于e 的指数运算、三角函数及取绝对值等运算指令格式及的指数运算、三角函数及取绝对值等运算指令格式及说明见表说明见表5-28 。2.扩展算术运算指令扩展算术运算指令 使用
39、扩展算术运算指令还需注意以下问题:使用扩展算术运算指令还需注意以下问题:浮点数开平方指令浮点数开平方指令SQRT的输入值应大于等于的输入值应大于等于0,其运算结果为正或,其运算结果为正或0。求以求以10为底的对数时为底的对数时,应将自然对数值除以应将自然对数值除以2.302585(10的自然对数值的自然对数值)。例如。例如 lg100 = ln100/2.302585 = 4.605170/2.302585 = 2浮点数三角函数指令的输入值如果是以角度为单位的浮点数,求三角函数之浮点数三角函数指令的输入值如果是以角度为单位的浮点数,求三角函数之前应先将角度值乘以前应先将角度值乘以/180,转换
40、为弧度值。,转换为弧度值。浮点数反正弦函数指令浮点数反正弦函数指令ASIN和浮点数反余弦函数指令和浮点数反余弦函数指令ACOS的取值范围为的取值范围为 -1输入值输入值+1 -/2运算结果运算结果+/2浮点数反正切函数指令浮点数反正切函数指令ATAN的取值范围为的取值范围为:-/2运算结果运算结果+/2下面举例说明扩展算术运算指令的用法。下面举例说明扩展算术运算指令的用法。1)求平方运算)求平方运算2)求余弦运算)求余弦运算3)求反正切运算)求反正切运算 3.算术运算指令应用举例算术运算指令应用举例例例1 使用加法指令扩展计数器的计数范围使用加法指令扩展计数器的计数范围 计数器的计数范围是计数
41、器的计数范围是0999,显然不能满足生产的要求。,显然不能满足生产的要求。要扩大要扩大计数的范围,可以把二个及以上计数器串联起来,也可以使用加法计数的范围,可以把二个及以上计数器串联起来,也可以使用加法指令来扩展加法计数器的计数范围。指令来扩展加法计数器的计数范围。例如,使用整数加法指令最大例如,使用整数加法指令最大计数值可达计数值可达32767,如果使用双整数加法指令,则最大计数值可达,如果使用双整数加法指令,则最大计数值可达2147483647。同理,。同理,使用减法指令也可以实现减法计数器功能。使用减法指令也可以实现减法计数器功能。 在图在图5-77 所示的程序中所示的程序中,当当I0.
42、1 的状态为的状态为“l”时时,程序段程序段2 将整数将整数0 赋予赋予MW10 中中,当当I0.1 的状态为的状态为“0”时时,可以进行计数操作。程序段可以进行计数操作。程序段1中,中,I0.0 节点后的上升沿检测指令是必不可少的节点后的上升沿检测指令是必不可少的,它可以防止它可以防止I0.1抖抖动而使计数错误。动而使计数错误。当当I0.0 的状态有的状态有“0 ”到到“1 ”的变化时的变化时,上升沿检上升沿检测指令的输出为测指令的输出为“l”,执行加法指令,将执行加法指令,将MW10 的内容加的内容加1后再送回后再送回到到MW10 中。执行完以后中。执行完以后,MW10中的内容将被新的值所
43、代替。中的内容将被新的值所代替。五、移位与循环移位指令五、移位与循环移位指令 移位指令将累加器移位指令将累加器1的低字(的低字(16位字)或累加器位字)或累加器1的全部内容(的全部内容(32位位双字)左移或右移若干位。移动的位数由双字)左移或右移若干位。移动的位数由n决定。左移决定。左移n位相当于乘位相当于乘以以2n,例如将十进制数,例如将十进制数3对应的二进制数对应的二进制数2#11左移左移2位,相当于乘以位,相当于乘以4,左移后得到的二进制数,左移后得到的二进制数2#1100对应于十进制数对应于十进制数12。右移。右移n位相当位相当于除以于除以2n,例如将十进制数,例如将十进制数24对应的
44、二进制数对应的二进制数2#11000右移右移3位,相位,相当于除以当于除以8,右移后得到的二进制数,右移后得到的二进制数2#11对应于十进制数对应于十进制数3。 移位与循环移位指令如表移位与循环移位指令如表5-29所示,梯形图方块指令格式如图所示,梯形图方块指令格式如图5-80所示。所示。 下面举例说明移位和循环移位指令的用法。下面举例说明移位和循环移位指令的用法。 1)有符号整数右移(用)有符号整数右移(用STL指令)指令) L MW4 /将将MW4的内容装入累加器的内容装入累加器1的低字中的低字中 SSI 4 /累加器累加器1低字中的有符号整数右移低字中的有符号整数右移4位,结果仍存在累加
45、器位,结果仍存在累加器1 低字中低字中 T MW8 /累加器累加器1的低字中的移位结果传送到的低字中的移位结果传送到MW8中中 设设MW4的内容为一个负数,图的内容为一个负数,图5-81给出了移位前后的累加器给出了移位前后的累加器1中的中的二进制数值。因为累加器二进制数值。因为累加器1低字中是一个负数,右移后,其低字的低字中是一个负数,右移后,其低字的高位添了高位添了4个个1。移位前后累加器。移位前后累加器1的高字内容没有变化。的高字内容没有变化。2)有符号整数右移(用)有符号整数右移(用LAD指令)指令) 其用法如图其用法如图5-83所示。所示。六、累加器操作指令六、累加器操作指令 累加器是
46、累加器是PLC 中的一个重要元件,在数据处理和数字运算中都使中的一个重要元件,在数据处理和数字运算中都使用了累加器。直接对累加器进行操作,有助于处理程序中的一些问用了累加器。直接对累加器进行操作,有助于处理程序中的一些问题,表题,表5-30 列出了对累加器进行直接操作的主要指令。对累加器内列出了对累加器进行直接操作的主要指令。对累加器内容的求反、求补、移位、循环移位等操作指令在前面已经介绍,此容的求反、求补、移位、循环移位等操作指令在前面已经介绍,此处不再赘述。指令的执行与处不再赘述。指令的执行与RLO(逻辑操作结果)无关,也不会对(逻辑操作结果)无关,也不会对RLO 产生影响。产生影响。 T
47、AK 、PUSH 、POP 是对两个累加器直接操作的指令,是对两个累加器直接操作的指令,其工作情其工作情况如图况如图5-88 所示。所示。CAW 、CAD 是对一个累加器即累加器是对一个累加器即累加器1 直接操直接操作的指令,执行时其内部字节变化如图作的指令,执行时其内部字节变化如图5-89 所示。所示。七、地址寄存器加指令七、地址寄存器加指令 地址寄存器中已装入地址数据后,也可对其中的地址数据进行适地址寄存器中已装入地址数据后,也可对其中的地址数据进行适当的增加处理,其结果还存在该地址寄存器中,这就是地址寄存器当的增加处理,其结果还存在该地址寄存器中,这就是地址寄存器加指令。加指令。使用使用
48、“加指令加指令”如用到累加器如用到累加器1或指针常数时,应保证其或指针常数时,应保证其格式正确(符合地址表示形式)。地址寄存器加指令有以下格式正确(符合地址表示形式)。地址寄存器加指令有以下4条:条: +AR1 /指令中没有明确操作数,把累加器指令中没有明确操作数,把累加器1的低字内容加的低字内容加 至地址寄存器至地址寄存器AR1 +AR2 /指令中没有明确操作数,把累加器指令中没有明确操作数,把累加器1的低字内容加的低字内容加 至地址寄存器至地址寄存器AR2 +AR1 P#Byte.Bit /把一个指针常数加至地址寄存器把一个指针常数加至地址寄存器AR1,指针常数,指针常数 范围:范围:0.
49、04095.7 +AR2 P#Byte.Bit /把一个指针常数加至地址寄存器把一个指针常数加至地址寄存器AR2,指针常数,指针常数 范围:范围:0.04095.7下面举例说明其用法。例如:下面举例说明其用法。例如: L P#250.7 /把指针常数把指针常数250.7装入累加器装入累加器1中中 +AR1 /把把250.7加至地址寄存器加至地址寄存器AR1 +AR2 P#126.7 /把指针常数把指针常数126.7加至地址寄存器加至地址寄存器AR25-4 程序执行控制指令程序执行控制指令 控制指令主要指控制程序执行的顺序和控制程序结构的有关控制指令主要指控制程序执行的顺序和控制程序结构的有关指
50、令。包括跳转指令、循环指令、块调用指令和主控继电器指令。指令。包括跳转指令、循环指令、块调用指令和主控继电器指令。一、跳转指令一、跳转指令 PLC的程序一般是各条语句按从上到下顺序逐条执行的,这种执的程序一般是各条语句按从上到下顺序逐条执行的,这种执行方式称为线性扫描。但有时因某种原因,如因控制或运算的需要,行方式称为线性扫描。但有时因某种原因,如因控制或运算的需要,需中断程序的线性扫描,跳过程序中的某一部分再继续按线性扫描需中断程序的线性扫描,跳过程序中的某一部分再继续按线性扫描方式向下执行,则要用到跳转指令。跳转指令分无条件跳转指令和方式向下执行,则要用到跳转指令。跳转指令分无条件跳转指令
51、和条件跳转指令二种。条件跳转指令二种。1、无条件跳转指令、无条件跳转指令无条件跳转指令无条件跳转指令JU的指令格式如下:的指令格式如下:STL指令:指令: JU 程序执行过程中程序执行过程中,扫描到无条件跳转指令扫描到无条件跳转指令JU,就立即无条件终止正就立即无条件终止正常程序的顺序执行,使程序跳转到指定目标处(地址标号)继续执常程序的顺序执行,使程序跳转到指定目标处(地址标号)继续执行。跳转目标用指令中的行。跳转目标用指令中的“地址标号地址标号”来指明。来指明。地址标号最多为地址标号最多为4个字符个字符,第一个字符必须是字母(或第一个字符必须是字母(或_),其余字符可为字母或数字。其余字符
52、可为字母或数字。 跳转指令只能用在跳转指令只能用在FB、FC和和OB中,但跳转指令和跳转目标必中,但跳转指令和跳转目标必须在同一个逻辑块内,不能跳转到别的须在同一个逻辑块内,不能跳转到别的FB、FC和和OB中去。中去。在一个在一个逻辑块中,同一个跳转目标的地址标号只能出现一次,不能重名逻辑块中,同一个跳转目标的地址标号只能出现一次,不能重名(不同逻辑块中的目标标号地址可以重名)。(不同逻辑块中的目标标号地址可以重名)。最长的跳转距离为程最长的跳转距离为程序代码中的序代码中的64K字节(字节(-32768或或+32767个字)个字)。在跳转指令和地址。在跳转指令和地址标号之间,任何指令和程序段在
53、跳转时都不执行。标号之间,任何指令和程序段在跳转时都不执行。 图图5-90表示出无条件跳转指令的使用方法。当程序执行到无条件跳表示出无条件跳转指令的使用方法。当程序执行到无条件跳转指令时,将直接跳转到转指令时,将直接跳转到L1处执行。处执行。 地址标号标志着程序继续执行的地点。地址标号标志着程序继续执行的地点。在在STL程序中地址标号标在程序中地址标号标在指令的左边,用冒号与指令分隔。在梯形图中,地址标号在一个网指令的左边,用冒号与指令分隔。在梯形图中,地址标号在一个网络的开始。络的开始。在编程器上在编程器上,从梯形逻辑浏览中选择从梯形逻辑浏览中选择LABEL(标号标号),出现出现空方块,将标
54、号名填入方块中。空方块,将标号名填入方块中。2、多分支跳转指令(跳转表格指令)、多分支跳转指令(跳转表格指令) 多分支跳转指令只有多分支跳转指令只有STL指令,它是一系列无条件跳转到某分支指令,它是一系列无条件跳转到某分支的指令。的指令。多分支跳转指令多分支跳转指令JL的指令格式如下:的指令格式如下: JL 地址标号地址标号 多分支指令多分支指令JL必须与无条件跳转指令必须与无条件跳转指令JU 配合使用,配合使用,可根据累加可根据累加器器1低字中低字节的内容及低字中低字节的内容及JL 所指定的标号实现最多所指定的标号实现最多255个分支个分支(目目的地的地)的跳转。的跳转。跳转分支(目的地)列
55、表必须位于跳转分支(目的地)列表必须位于JL指令和由指令和由JL 指指令所指定的标号之间,每个跳转分支(目的地)都由一个无条件跳令所指定的标号之间,每个跳转分支(目的地)都由一个无条件跳转指令转指令JU 组成,组成,JU 指令紧随指令紧随JL 指令之后。指令之后。 如果累加器如果累加器l 低字中低字节的内容小于低字中低字节的内容小于JL指令和由指令和由JL指令所指定指令所指定的标号之间的的标号之间的JU指令的数量,指令的数量,JL指令就会跳转到其中一条指令就会跳转到其中一条JU处执处执行,并由行,并由JU指令进一步跳转到目标地址;指令进一步跳转到目标地址;如果累加器如果累加器1 低字中低字低字
56、中低字节的内容为节的内容为0 ,则直接执行,则直接执行JL指令下面的第一条指令下面的第一条JU 指令;如果累指令;如果累加器加器1 低字中低字节的内容为低字中低字节的内容为1 ,则直接执行,则直接执行JL指令下面的第二条指令下面的第二条JU 指令;如果跳转的目的地的数量太大,则指令;如果跳转的目的地的数量太大,则JL指令跳转到目的地指令跳转到目的地列表中最后一个列表中最后一个JU指令之后的第一个指令。指令之后的第一个指令。 图图5-91表示出无条件跳转指令的使用方法。表示出无条件跳转指令的使用方法。3、条件跳转指令、条件跳转指令 条件跳转指令先要判断跳转的条件是否满足,若满足,程序跳转条件跳转
57、指令先要判断跳转的条件是否满足,若满足,程序跳转到指定的目标标号处继续执行;若不满足,程序不跳转顺序执行。到指定的目标标号处继续执行;若不满足,程序不跳转顺序执行。其程序流程图如图其程序流程图如图5-92所示。所示。 条件跳转指令主要是语句表(条件跳转指令主要是语句表(STL)指令,根据跳转条件的不同)指令,根据跳转条件的不同它共有它共有15条。条件跳转梯形图指令只有条。条件跳转梯形图指令只有2条,下面分别介绍。条,下面分别介绍。 1 )条件跳转语句表(条件跳转语句表(STL )指令)指令。状态寄存器(状态字)中的逻辑。状态寄存器(状态字)中的逻辑操作结果位(操作结果位(RLO )、二进制结果
58、位()、二进制结果位(BR )、溢出位()、溢出位(OV)等)等均可以是跳转的条件。表均可以是跳转的条件。表5-31 列出了这列出了这15 条指令。条指令。 (1)根据)根据RLO状态对程序进行跳转控制的应用状态对程序进行跳转控制的应用 程序要求如图程序要求如图5-93所示的流程图,满足这一要求的所示的流程图,满足这一要求的STL程序列在程序列在图旁。图旁。 (2)根据算术运算结果对程序进行跳转控制的应用)根据算术运算结果对程序进行跳转控制的应用程序要求如图程序要求如图5-94所示的流程图,满足其要求的所示的流程图,满足其要求的STL程序列在图旁。程序列在图旁。 2 )条件跳转梯形图(条件跳转
59、梯形图(LAD)指令)指令 梯形图跳转指令只有两条,如表梯形图跳转指令只有两条,如表5-32 所示。其中所示。其中JMP 也可用也可用于无条件跳转(对应于无条件跳转(对应STL 指令为指令为JU )。)。 下面介绍条件跳转梯形图指令的用法下面介绍条件跳转梯形图指令的用法 (1)一般用法。一般用法。 如图如图5-95 所示,如果输入所示,如果输入I0.0 与与I0.1 均为均为l ,则执,则执行跳转指令,程序转移至标号行跳转指令,程序转移至标号CAS1 处执行。跳转指令与标号之间处执行。跳转指令与标号之间的不执行,也就是说即使的不执行,也就是说即使I0.3为为l ,也不令,也不令Q4 .0 置位
60、。置位。 (2)用状态字的位做跳转条件的用法。在)用状态字的位做跳转条件的用法。在S7 中,没有根据算术中,没有根据算术运算结果直接跳转的梯形图指令。但用反映状态字中各位状态的常运算结果直接跳转的梯形图指令。但用反映状态字中各位状态的常开、常闭触点作为跳转条件,配用上面两条跳转指令,即可编出根开、常闭触点作为跳转条件,配用上面两条跳转指令,即可编出根据运算结果进行跳转的梯形图。与状态字中位有关的触点如表据运算结果进行跳转的梯形图。与状态字中位有关的触点如表5-33 所示。所示。 表表5-33 中的中的 LAD 单元符号可以用在各种梯形图程序中单元符号可以用在各种梯形图程序中, 影响影响 RLO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年投资项目管理师之宏观经济政策考试题库300道及答案(历年真题)
- 2026年一级建造师之一建水利水电工程实务考试题库500道附完整答案(全优)
- 2026年二级注册建筑师之法律法规经济与施工考试题库500道附完整答案(历年真题)
- 2026年公安机关理论考试题库300道及答案【典优】
- 2026年国家电网招聘之人力资源类考试题库300道附参考答案【能力提升】
- 2026年苏州工艺美术职业技术学院单招综合素质笔试备考题库附答案详解
- 2026年新疆石河子职业技术学院单招职业技能考试备考试题附答案详解
- 2026年长春金融高等专科学校单招综合素质考试备考题库附答案详解
- 2026年苏州健雄职业技术学院单招职业技能考试参考题库附答案详解
- 2025年杭州万向职业技术学院单招综合素质考试模拟测试卷附答案
- GB/T 13460-2025再生橡胶通用规范
- 人情世故培训课件
- 商品混凝土实验室操作手册
- 资金调拨拆借管理制度
- 装饰装修工程监理月报
- 超星尔雅学习通《美的历程:美学导论(中国社会科学院)》2025章节测试附答案
- 教学课件-积极心理学(第2版)刘翔平
- 2019人教版高中物理必修第一册《第二章 匀变速直线运动的研究》大单元整体教学设计2020课标
- DGTJ 08-2176-2024 沥青路面预防养护技术标准(正式版含条文说明)
- DB33 802-2013 铝合金铸件可比单位综合能耗限额及计算方法
- 移植后免疫监测技术-洞察分析
评论
0/150
提交评论