6ES7307-1BA01-0AA0现货供应
1.比较指令
比较指令包括cmp(比较)和zcp(区间比较)二条。
(1)比较指令cmp(d)cmp(p)指令的编号为fnc10,是将源操作数[s1.]和源操作数[s2.]的数据进行比较,比较结果用目标元件[d.]的状态来表示。如图1所示,当x1为接通时,把常数100与c20的当前值进行比较,比较的结果送入m0~m2中。x1为off时不执行,m0~m2的状态也保持不变。
图1 比较指令的使用
(2)区间比较指令zcp(d)zcp(p)指令的编号为fnc11,指令执行时源操作数[s.]与[s1.]和[s2.]的内容进行比较,并比较结果送到目标操作数[d.]中。如图2所示,当x0为on时,把c30当前值与k100和k120相比较,将结果送m3、m4、m5中。x0为off,则zcp不执行,m3、m4、m5不变。
图2 区间比较指令的使用
使用比较指令cmp/zcp时应注意:
1)[s1.]、[s2.]可取任意数据格式,目标操作数[d.]可取y、m和s。
2)使用zcp时,[s2.]的数值不能小于[s1.]
3) 所有的源数据都被看成二进制值处理;
2.传送类指令
(1)传送指令mov(d)mov(p)指令的编号为fnc12,该指令的功能是将源数据传送到指定的目标。如图3所示,当x0为on时,则将[s.]中的数据k100传送到目标操作元件[d.]即d10中。在指令执行时,常数k100会自动转换成二进制数。当x0为off时,则指令不执行,数据保持不变。
图3 传送指令的使用
使用应用mov指令时应注意:
1)源操作数可取所有数据类型,标操作数可以是kny、knm、kns、t、c、d、v、z。
2)16位运算时占5个程序步,32位运算时则占9个程序步。
(2)移位传送指令smovsmov(p)指令的编号为fnc13。该指令的功能是将源数据(二进制)自动转换成4位bcd码,再进行移位传送,传送后的目标操作数元件的bcd码自动转换成二进制数。如图4所示,当x1为on时,将d1中右起第4位(m1=4)开始的2位(m2=2)bcd码移到目标操作数d2的右起第3位(n=3)和第2位。d2中的bcd码会自动转换为二进制数,而d2中的第1位和第4位bcd码不变。
图4 移位传送指令的使用
使用移位传送指令时应该注意:
1)源操作数可取所有数据类型,目标操作数可为kny、knm、kns、t、c、d、v、z。
2)smov指令只有16位运算,占11个程序步。
(3)取反传送指令cml(d)cml(p)指令的编号为fnc14。它是将源操作数元件的数据逐位取反并传送到指定目标。如图5所示,当x0为on时,执行cml,将d0的低4位取反向后传送到y3~y0中。
图5 取反传送指令的使用
使用取反传送指令cml时应注意:
1)源操作数可取所有数据类型,目标操作数可为kny、knm、kns、t、c、d、v、z.,若源数据为常数k,则该数据会自动转换为二进制数。
2)16位运算占5个程序步,32位运算占9个程序步。
(4)块传送指令bmovbmov(p)指令的alce编号为fnc15,是将源操作数指定元件开始的n个数据组成数据块传送到指定的目标。如图6所示,传送顺序既可从高元件号开始,也可从低元件号开始,传送顺序自动决定。若用到需要指定位数的位元件,则源操作数和目标操作数的指定位数应相同。
图6 块传送指令的使用
使用块传送指令时应注意:
1)源操作数可取knx、 kny、knm、kns、t、c、d和文件寄存器,目标操作数可取.knt、knm、kns、t、c和d;
2)只有16位操作,占7个程序步;
3)如果元件号超出允许范围,数据则仅传送到允许范围的元件。
(5)多点传送指令fmov(d)fmov(p)指令的编号为fnc16。它的功能是将源操作数中的数据传送到指定目标开始的n个元件中,传送后n个元件中的数据完全相同。如图7所示,当x0为on时,把k0传送到d0~d9中。
图7 多点传送指令应用
使用多点传送指令fmov时应注意:
1)源操作数可取所有的数据类型,目标操作数可取knx、knm、kns、t、c、和d,n小等于512;
2)16位操作占7的程序步,32位操作则占13个程序步;
3)如果元件号超出允许范围,数据仅送到允许范围的元件中。
3.数据交换指令
数据交换指令(d)xch(p)的编号为fnc17,它是将数据在指定的目标元件之间交换。如图8所示,当x0为on时,将d1和d19中的数据相互交换。
图8 数据交换指令的使用
使用数据交换指令应该注意:
1)操作数的元件可取kny、knm、kns、t、c、d、v和z.。
2)交换指令一般采用脉冲执行方式,否则在每一次扫描周期都要交换一次。
3)16位运算时占5个程序步,32位运算时占9个程序步。
4.数据变换指令
(1)bcd变换指令bcd(d)bcd(p)指令的alce编号为fnc18。它是将源元件中的二进制数转换成bcd码送到目标元件中,如图9所示。
如果指令进行16位操作时,执行结果超出0~9999范围将会出错;当指令进行32位操作时,执行结果超过0~99999999范围也将出错。中内部的运算为二进制运算,可用bcd指令将二进制数变换为bcd码输出到七段显示器。
(2)bin变换指令bin(d)bin(p)指令的编号为fnc19。它是将源元件中的bcd数据转换成二进制数据送到目标元件中,如图9所示。常数k不能作为本指令的操作元件,因为在任何处理之前它们都会被转换成二进制数。
图9 数据变换指令的使用
使用bcd/bin指令时应注意:
1)源操作数可取knk、kny、knm、kns、t、c、d、v和z,目标操作数可取kny、knm、kns、t、c、d、v和z;
2)16位运算占5个程序步,32位运算占9个程序步。
1.算术运算指令
(1)加法指令add(d)add(p)指令的编号为fnc20。它是将指定的源元件中的二进制数相加结果送到指定的目标元件中去。如图1所示,当x0为on时,执行(d10)+(d12)→(d14)。
图1 加法指令的使用
(2)减法指令sub(d)sub(p)指令的编号为fnc21。它是将[s1.]指定元件中的内容以二进制形式减去[s2.]指定元件的内容,其结果存入由[d.]指定的元件中。如图2所示,当x0为on时,执行(d10)—(d12)→(d14)。
图2 减法指令的使用
使用加法和减法指令时应该注意:
1) 操作数可取所有数据类型,目标操作数可取kny、knm、kns、t、c、d、v和z.。
2) 16位运算占7个程序步,32位运算占13个程序步。
3)数据为有符号二进制数,*高位为符号位(0为正,1为负)。
4)加法指令有三个标志:零标志(m8020)、借位标志(m8021)和进位标志(m8022)。当运算结果超过32767(16位运算)或2147483647(32位运算)则进位标志置1;当运算结果小于-32767(16位运算)或-2147483647(32位运算),借位标志就会置1。
(3)乘法指令mul (d) mul(p)指令的编号为fnc22。数据均为有符号数。如图3所示,当x0为on时,将二进制16位数[s1.]、[s2.]相乘,结果送[d.]中。d为32位,即(d0)×(d2)→(d5,d4)(16位乘法);当x1为on时,(d1,d0)×(d3,d2)→(d7,d6,d5,d4)(32位乘法)。
图3 乘法指令的使用
(4)除法指令div (d) div(p)指令的编号为为fnc23。其功能是将[s1.]指定为被除数,[s2.]指定为除数,将除得的结果送到[d.]指定的目标元件中,余数送到[d.]的下一个元件中。如图4所示,当x0为on时(d0)÷(d2)→(d4)商,(d5)余数(16位除法);当x1为on时(d1,d0)÷(d3,d2)→(d5,d4)商,(d7,d6)余数(32位除法)。
图4 除法指令的使用
使用乘法和除法指令时应注意:
1)源操作数可取所有数据类型,目标操作数可取kny、knm、kns、t、c、d、v和z.,要注意z只有16位乘法时能用,32位不可用。
2)16位运算占7程序步,32位运算为13程序步。
3)32位乘法运算中,如用位元件作目标,则只能得到乘积的低32位,高32位将丢失,这种情况下应先将数据移入字元件再运算;除法运算中将位元件指定为[d.],则无法得到余数,除数为0时发生运算错误。www.diangon.com
4)积、商和余数的*高位为符号位。
(5)加1和减1指令 加1指令(d) inc (p)的编号为fnc24;减1指令 (d) dec(p)的编号为fnc25。inc和dec指令分别是当条件满足则将指定元件的内容加1或减1。如图5所示,当x0为on时,(d10)+1→(d10);当x1为on时,(d11)+1→(d11)。若指令是连续指令,则每个扫描周期均作一次加1或减1运算。
图5 加1和减1指令的使用
使用加1和减1指令时应注意:
1)指令的操作数可为kny、knm、kns、t、c、d、v、z;。
2)当进行16位操作时为3个程序步,32位操作时为5个程序步。
3)在inc运算时,如数据为16位,则由+32767再加1变为-32768,但标志不置位;同样,32位运算由+2147483647再加1就变为-2147483648时,标志也不置位。
4)在dec运算时,16位运算-32768减1变为+32767,且标志不置位;32位运算由-2147483648减1变为=2147483647,标志也不置位。
2.逻辑辑运算类指令
(1)逻辑与指令wand (d)wand(p)指令的编号为fnc26。是将两个源操作数按位进行与操作,结果送指定元件。
(2)逻辑或指令wor (d) wor(p)指令的编号为fnc27。它是对二个源操作数按位进行或运算,结果送指定元件。如图4-48所示,当x1有效时,(d10)∨(d12)→(d14)
(3)逻辑异或指令wxor (d) wxor (p)指令的编号为fnc28。它是对源操作数位进行逻辑异或运算。
(4)求补指令neg (d) neg(p)指令的编号为fnc29。其功能是将[d.]指定的元件内容的各位先取反再加1,将其结果再存入原来的元件中。
wand、wor、wxor和neg指令的使用如图6所示。
图6 逻辑运算指令的使用
使用逻辑运算指令时应该注意:
1)wand、wor和wxor指令的[s1.]和[s2.]均可取所有的数据类型,而目标操作数可取kny、knm、kns、t、c、d、v和z。
2)neg指令只有目标操作数,其可取kny、knm、kns、t、c、d、v和z。
3)wand、wor、wxor指令16位运算占7个程序步,32位为13个程序步,而neg分别占3步和5步。