内容较长请耐心阅读(全是干货哦)
在上一期|分享| S7-200SMART常用指令(一)的加法指令后,接着减法指令也是一样,都有为零 、溢出及结果为负的特殊寄存器,同样分别是SM1.0 /SM1.1 /SM1.2 三个
减法指令
减法指令分别有整数型、双整数型及实数型,如下图所示
乘法指令乘法指令同样可以使用常数,也可以使用寄存器;对于乘法指令来说,MUL指令表示两个16位存储空间的数相乘得到一个32位的结果
MUL_DI表示两个32位存储空间的数相乘得到一个32位的结果MDL_I表示两个16位存储空间的数相乘得到一个16位的结果MUL_R表示两个实数相乘得到一个实数的结果MUL表示两个16位存储空间的数相乘得到一个32位的结果除法指令除法指令和乘法指令一样,有实数型、整数型、双整数型
DIV表示两个16位数相除,结果为32位的存储空间;其中商存储在高16位中,余数在低16位中DIV_I表示两个16位数相除,结果为16位的存储空间DIV_DI表示两个32位数相除,结果为32位的存储空间DIV_R表示两个实数相除,结果为实数递增、递减指令递增和递减指令在IN端加1或减1 ,并将结果存储在OUT端;常和比较指令及传送指令配合使用。需要注意的是EN端最好采用沿脉冲检测
(5)逻辑运算指令
逻辑运算对逻辑数进行处理,在这是指无符号数;根据运算性质可分为逻辑与、或、异或及取反等;根据数据类型可分为字节、字、双字的运算逻辑取反指令
是把参与运算的数据分别转换成二进制按位取反,若位为0 则变为1 ,若位为1 则变为0 注意:取反结果的输入输出为同一个地址时,则在EN端应使用沿脉冲检测触发,不然会出现一个扫描周期内取反多次的情况!另外此指令和递增指令INC类似,切勿混淆
逻辑与指令简单的说就是把参与运算的数据分别转换成二进制后进行位与位的逻辑与运算,只有两个数均为1时,输出结果才会为1
逻辑或运算指令
把参与运算的数据分别转换成二进制后进行位与位的逻辑与运算,只要有一个数为1时输出结果为1,两个数为1 时,输出也为1;两个数为0 时,输出为0,也就是有1为1 ,有0为0
逻辑异或运算指令把参与运算的数据分别转换成二进制后进行位与位的逻辑异或运算,只有两个数不同时输出结果为1,反之为0 ;也就是同为0 ,异为1
(6)移位循环指令
移位循环指令分为三种:分别是左移位指令(SHL)/右移位指令(SHR)、循环左移位指令(ROL)/循环右移位指令(ROR)、及移位寄存器指令(SHRB),对于移位指令来说,根据移位的方向分为左右移位,根据数据类型的不同,可分为字节、字和双字的方式
左/右移位指令字节型移位指令为无符号数,字及双字型指令当为有符号数时,符号位也会一并移动,另一端移出的位自动补零;如果移位次数大于0 ,则将溢出特殊寄存器SM1.1会置位为移出的最后一位的值;如果移位操作的结果为0 ,则SM1.0标志位将置位
循环移位指令循环移位指令是将IN端数中各位的值向左或右移循环移动N位后,传送至OUT端指定的地址中;如果执行循环移位指令,则溢出标志位SM1.1将置位为循环移出的最后一个位的值
移位寄存器指令
移位寄存器指令可参考我们原来分享的内容,这里不再阐述。可点击→【干货】S7-200SMART 功能指令应用
(7)表格指令
注意:表格指令针对的是16位的存储空间,也就是所有的表格指令管脚只能是16位的存储空间填表指令(AD_T_TBL) 添表指令向表格 TBL 中添加字值 DATA。表格中的第一个值为最大表格长度 TL(最大行/列数)第二个值是条目计数 EC,用于存储表格中的条目数,并自动更新;新数据填加到表格中最后一个条目之后;每次向表格中填加新数据时,条目计数将加 1。当条目计数等于最大表格长度时则无法再进行数据的存储,只要当数据读取后腾出空间后才能继续存储数据;一个表格最多可有 100 个数据条目;填表指令通常配合先进先出或后进先出指令一起使用。DATA端只能是16位的存储空间,不能是实数、32位的数据等
图中VW200表示表格的最大行/列数,自行设定最大数;所需地址为VW200的值+2VW202表示当前表格存储数量,无需设定(已使用的表格数量);VW204后为实际存储数据地址(剩余表格空间大小)
先进先出指令(FIFO)
先进先出指令将表中的最早(或第一个)条目移动到输出存储器地址(指令中DATA端的地址),具体操作是移走指定表格 (TBL) 中的第一个条目并将该值移动到 DATA 指定的位置。表格中的所有其它条目向上移动一个位置。每次执行 FIFO 指令时,表中的条目计数值减 1。当再次执行填表指令后,数据会存储在第一个条目中
后进先出指令(LIFO)
后进先出指令将表中的最新(或最后一个)条目移动到输出存储器地址,具体操作是移走表格 (TBL) 中的最后一个条目并将该值移动到 DATA 指定的位置。每次执行 LIFO 指令时,表中的条目计数值减 1。当再次执行填表指令后,数据会存储在最后一个条目中
填充存储器指令(FILL_N)存储器填充指令使用地址 IN 中存储的字值填充从地址 OUT 开始的 N 个连续字;N 取值范围是 1 到 255
表示把10 填充到vw10开始的16个存储地址中,常用于初始化的使用,IN可为常数也允许是变量查表指令(TBL_FIND) 用于从表格内查找与我们定义条件相同的数据 查表指令在表格中搜索与搜索条件匹配的数据。查表指令由表格条目 INDX 开始,在表格 TBL 中搜索与 CMD 定义的搜索标准相匹配的数据值或模式 PTN。指令参数 CMD 的 1 到 4 的数字值分别对应于 =、<>、< 和 >(没有≥及≤)。 如果找到匹配条目,INDX 将指向表中的该匹配条目,显示查找和定义相同条件数据的条目数。 只要查找到和条件相符的值后就不会再往下查找,要查找下一个匹配条目值,在再次调用查表指令之前,必须先使 INDX 增加 1。如果未找到匹配的条目值,则 INDX 值等于条目总数。 一个表格最多可有 100 个数据条目。数据条目(搜索区域)编号为 0 到 99(最大值)。
TBL表示表格的起始地址,就是最大表格长度的地址(指定对哪个表格的数据进行查找)PTN表示需要和表格内数据进行搜索对比的值,此管脚可使用常数或16位存储空间的存储器,注意不能用BYTEINDX表示的是显示查找和定义相同条件数据的条目数CMD表示表格内数据和PTN指定数值的比较方式;1表示=,2表示≠ 3表示<,4 表示>指令表示从表格(VW0开始)中查找与VW100的值相等的数据,相符数据在表格中的位置存储在VW200中