您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > s7-300培训资料5
3.5.1装入指令与传送指令1.装入指令与传送指令装入(L,Load)指令将源操作数装入累加器1,而累加器1原有的数据移入累加器2。装入指令可以对字节(8位)、字(16位)、双字(32位)数据迸行操作。传送(T,Transfer)指令将累加器1中的内容写入目的存储区中,累加器1的内容不变。2.立即寻址的装入与传送指令立即寻址的操作数直接在指令中,下面是使用立即寻址的例子。L35//将16位十进制常数35装入累加器1的低字ACCU1-LLL#5//将32位常数5装入累加器1LB#16#5A//将8位十六进制常数装入累加器1最低字节ACCU1-LLLW#16#3E4F//将16位十六进制常数装入累加器1的低字ACCU1-LLDW#16#567A3DC8//将32位十六进制常数装入累加器1L2#0001_1001_1110_0010//将16位二进制常数装入累加器1的低字ACCU1-LL25.38//将32位浮点数常数(25.38)装入累加器1L‘ABCD’//将4个字符装入累加器1LTOD#12:30:3.0//将32位实时时间常数装入累加器1LD#2004-2-3//将16位日期常数装入累加器1的低字ACCU1-LLC#50//将16位计数器常数装入累加器1的低字ACCU1-LLT#1M20S//将16位定时器常数装入累加器1的低字ACCU1-LLS5T#2S//将16位定时器常数装入累加器1的低字ACCU1-LLP#M5.6//将指向M5.6的指针装入累加器1AWW#16#3A12//常数与累加器1的低字相“与”,运算结果在累加器1的低字中LB#(100,12,50,8)//装入4字节无符号常数3.直接寻址的装入与传送指令直接寻址在指令中直接给出存储器或寄存器的区域、长度和位置,例如用MW200指定位存储区中的字,地址为200;下面是直接寻址的程序实例:AI0.0//输入位I0.0的“与”(AND)操作LMB10//将8位存储器字节装入累加器1最低的字节ACCU1-LLLDIW15//将16位背景数据字装入累加器1的低字ACCU1-LLLD22//将32位局域数据双字装入累加器1TQB10//将ACCU1-LL中的数据传送到过程映像输出字节QB10TMW14//将ACCU1-L中的数据传送到存储器字MW14TDBD2//将ACCU1中的数据传送到数据双字DBD23.存储器间接寻址在存储器间接寻址指令中,给出一个作地址指针的存储器,该存储器的内容是操作数所在存储单元的地址。在循环程序中经常使用存储器间接寻址。地址指针可以是字或双字,定时器(T)、计数器(C)、数据块(DB)、功能块(FB)和功能(FC)的编号范围小于65535,使用字指针就够了。其它地址则要使用双字指针,如果要用双字格式的指针访问一个字、宇节或双字存储器,必须保证指针的位编号为0,例如P#Q20.0。LQB[DBD10]//将输出字节装入累加器1,输出字节的地址指针在数据双字DBD10中//如果DBD10的值为2#00000000000000000000000000100000,装入的是QB4AM[LD4]//对存储器位作“与”运算,地址指针在数据双字LD4中//如果LD4的值为2#00000000000000000000000000100011,则是对M4.3进行操作bxxxbbbbbbbbbbbb0bbb0000000000000781516232431bxxxbbbbbbbbbbbb0bbb00000rrrx0000781516232431图3-10存储器间接寻址的双字指针格式图3-11寄存器间接寻址的指针格式4.寄存器间接寻址地址寄存器AR1和AR2,的内容加上偏移量形成地址指针,指向数值所在的存储单元。其中第0~2位(xxx)为被寻址地址中位的编号(0~7),第3~18位为被寻址地址的字节的编号(0~65535)。第24~26位(rrr)为被寻址地址的区域标识号,第31位x=0为区域内的间接寻址,第31位x=1为区域间的间接寻址。第一种地址指针格式存储区的类型在指令中给出,例如LDBB[AR1,P#6.0]。在某一存储区内寻址。第24~26位(rrr)应为0。第二种地址指针格式的第24~26位还包含存储区域标识符rrr,区域间寄存器间接寻址。如果要用寄存器指针访问一个字节、字或双字,必须保证指针中的位地址编号为0。指针常数#P5.0对应的二进制数为2#00000000000000000000000000101000。下面是区内间接寻址的例子:LP#5.0//将间接寻址的指针装入累加器1LAR1//将累加器1中的内容送到地址寄存器1AM[AR1,P#2.3]//AR1中的P#5.0加偏移量P#2.3,实际上是对M7.3进行操作=Q[AR1,P#0.2]//逻辑运算的结果送Q5.2LDBW[AR1,P#18.0]//将DBW23装入累加器1下面是区域间间接寻址的例子:LP#M6.0//将存储器位M6.0的双字指针装入累加器1LAR1//将累加器1中的内容送到地址寄存器1TW[AR1,P#50.0]//将累加器1的内容传送到存储器字MW56P#M6.0对应的二进制数为2#10000011000000000000000000110000。因为地址指针P#M6.0中已经包含有区域信息,使用间接寻址的指令TW[AR1,P#50]中没有必要再用地址标识符M。表3-6寄存器间接寻址的区域标识位区域标识符存储区位26~24P外设输入输出000I输入过程映像001Q输出过程映像010M位存储区011DBX共享数据块100DIX背景数据块101L块的局域数据1115.装入时间值或计数值LT5//将定时器T5中的二进制时间值装入累加器1的低字中LCT5//将定时器T5中的BCD码格式的时间值装入累加器1低字中LC3//将计数器C3中的二进制计数值装入累加器1的低字中LCC16//将计数器C16中的BCD码格式的值装入累加器1的低字中6.地址寄存器的装入与传送指令可以不经过累加器1,与地址寄存器AR1和AR2交换数据。下面是应用实例:LAR1DBD20//将数据双字DBD20中的指针装入AR1LAR2LD180//将局域数据双字LD180中的指针装入AR2LAR1P#M10.2//将带存储区标识符的32位指针常数装入AR1LAR2P#24.0//将不带存储区标识符32位指针常数装入AR2TAR1DBD20//AR1中的内容传送到数据双字DBD20TAR2MD24//AR2中的内容传送到存储器双字MD24梯形图中的传送指令:Q4.1ENINENOMOVEOUTMW4MW2I0.1图3-50传送指令ENINENOMOVEOUTMB8IB2能流AI1.0JNB_001//如果I1.0=0,则跳转到标号_001处LMW2//MW2的值装入累加器1的低字TMW4//累加器1低字的内容传送到MW4SET//将RLO置为1SAVE//将RLO保存到BR位CLR//将RLO置为0_001:ABR……如果功能被正确执行,BR位为1,ENO也为1。3.5.2比较指令比较指令用于比较累加器1与累加器2中的数据大小,被比较的两个数的数据类型应该相同。如果比较的条件满足,则RLO为1,否则为0。状态字中的CC0和CC1位用来表示两个数的大于、小于和等于关系(见表3-7)。表3-7指令执行后的CC1和CC0CC1CC0比较指令移位和循环移位指令字逻辑指令00累加器2=累加器1移出位为0结果为001累加器2累加器1--10累加器2累加器1-结果不为011非法的浮点数移出位为1-表3-8比较指令语句表指令梯形图中的符号说明?I?D?RCMP?ICMP?DCMP?R比较累加器2和累加器1低字中的整数,如果条件满足,RLO=1比较累加器2和累加器1中的双整数,如果条件满足,RLO=1比较累加器2和累加器1中的浮点数,如果条件满足,RLO=1?可以是==,,,,=,=。下面是比较两个浮点数的例子:LMD4//MD4中的浮点数装入累加器1L2.345E+02//浮点数常数装入累加器1,MD4装入累加器2R//比较累加器1和累加器2的值=Q4.2//如果MD42.345E+02,则Q4.2为1梯形图中的方框比较指令可以比较整数(I)、双整数(D)和浮点数(R)。方框比较指令在梯形图中相当于一个常开触点,可以与其他触点串连和并联。IN1IN2CMP=II0.6Q4.1MW2MW4图3-51比较指令SI0.3表3-9数据转换指令语句表梯形图说明BTIITBBTDDTBDTRITDRNDRND+RND-TRUNCBCD_II_BCDBCD_DIDI_BCDDI_RI_DIROUNDCEILFLOORTRUNC将累加器1中的3位BCD码转换成整数将累加器1中的整数转换成3位BCD码将累加器1中的7位BCD码转换成双整数将累加器1中的双整数转换成7位BCD码将累加器1中的双整数转换成浮点数将累加器1中的整数转换成双整数将浮点数转换为四舍五入的双整数将浮点数转换为大于等于它的最小双整数将浮点数转换为小于等于它的最大双整数将浮点数转换为截位取整的双整数CAWCAD--交换累加器1低字中两个字节的位置交换累加器1中4个字节的顺序sxxx0161531图3-537位BCD码的格式个位十位百位千位万位十万位百万位符号位1111015图3-523位BCD码的格式个位十位百位符号位100001100010下面是双整数转换为BCD码的例子:AI0.2//如果I0.2为1LMD10//将MD10中的双整数装入累加器1DTB//将累加器1中的数据转换为BCD码,结果仍在累加器1中JOOVER//运算结果超出允许范围(OV=1)则跳转到标号OVER处TMD20//将转换结果传送到MD20AM4.0RM4.0//复位溢出标志JUNEXT//无条件跳转到标号NEXT处OVER:ANM4.0SM4.0//置位溢出标志NEXT:……【例3-5】将101英寸转换为以厘米为单位的整数,送到MW0中。L101//将16位常数101(65H)装入累加器1ITD//转换为32位双整数DTR//转换为浮点数101.0L2.54//浮点数常数2.54装入累加器1,累加器1的内容装入累加器2*R//101.0乘以2.54,转换为256.54厘米RND//四舍五入转换为整数257(101H)TMW307.取反与求补指令表3-12取反与求补指令语句表指令梯形图指令说明INVIINVDNEGINEGDNEGRINV_IINV_DINEG_INEG_DINEG_R求累加器1低字中的16位整数的反码求累加器1中双整数的反码求累加器1低字中的16位整数的补码求累加器1中双整数的补码将累加器1中的浮点数的符号位取反图3-55取反与求补指令ENINENOINV_DIOUTENINENONEG_IOUTLMD20//将32位双整数装入累加器1NEGD//求补TMD30//运算结果传送到MD30表3-13取反与求补内容累加器1的低字变换前的数0101110100111000取反的结果1010001011000111求补的结果10100010110010003.6.1整数数学运算指令ACCU1ACCU2操作数2操作数1数学运算运算结果图3-56数学运算中的累加器LIW10//IW10的内容装入累加器1的低字LMW14//累加器1的内容装入累加器2,MW14的值装入累加器1的低字/I//累加器2低字的值除以累加器1低字的值,结果在累加器1的低字TDB1.DBW2//累加器1低字中的运算结果传送到数据块DB1的DBW2中表3-16整数数学运算指令语句表梯形图描述+II*I/I++DD*D/DMODADD_ISUB_IMUL_IDIV_I——ADD_DISUB_DIMUL_DIDIV_DIMOD_DI将累加器1,2低字中的整数相加,运算结果在累加器1的低字中累加器2中的整数减去累加器1中的整数,运算结果在累加器1的低字将累加器1,2低字中的整数相乘,32
本文标题:s7-300培训资料5
链接地址:https://www.777doc.com/doc-2848869 .html