资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第六章,S7-200PLC,功能指令,主讲:李宏伟,1,、表功能指令,2,、数据转换功能指令,3,、实时时钟功能,4,、子程序,5,、中断程序,6,、高速计数器功能,7,、高速脉冲输出功能,第一节 表功能指令,梯 形 图,指 令,描 述,AD_T_TBL,TBL_FIND,TBL_FIND,TBL_FIND,TBL_FIND,FIFO,LIFO,ATT DATA,,,TBL,FND=TBL,,,PTN,,,INDX,FND TBL,,,PTN,,,INDX,FND TBL,,,PTN,,,INDX,FIFO TBL,,,DATA,LIFO TBL,,,DATA,填表,查表,查表,查表,查表,先入先出,后入先出,在,S7-200,中的表格中,数据类型为,字型,数据,数据在表格中的存储形式如下表所示。,存储单元,数 据,存储说明,VW10,0 005,VW10,为表格的首地址,数据,TL=0 005,为该表格的最大填表数,VW12,0 003,数据,EC=0 003,(,EC,100,)为该表中的实际填表数,VW14,1 234,数据,0,VW16,5 678,数据,1,VW18,9 012,数据,2,VW20,xxxx,无效数据,VW22,xxxx,无效数据,一,填表指令,填表(,ATT,)指令,向表(,TBL,)中填入,DATA,端的数据。,TBL,指明表格的首地址,表中第一个数是最大填表数(,TL,),第二个数是实际填表数(,EC,),指出已填入表的数据个数。新的数据填加在表的末尾。每向表中填加一个新的数据,,EC,会自动加,1,。最多可向表中填入,100,个数据。,DATA,数据类型是,INT,型,,TBL,为,WORD,型。,ATT DATA,,,TBL,LD SM0.1,MOVW 6,VW200,/,表的最大长度,LD I0.0,ATT VW100,VW200,二,表中取数指令,在,S7-200,中,可以将表中的字型数据按照先进先出或后进先出的方式取出,送到指定的存储单元。每次取出一个数据,实际填表数,EC,自动减,1,。,1,、先进先出指令,FIFO,FIFO TABLE,,,DATA,指令移除表格(,TBL,)中的第一个条目,并将数值移至,DATA,指定位置,该指令移动表格中的最早(或第一个)条目。表格中的所有其他条目均向上移动一个位置。每次执行指令时,表格中的条目数减,1,。,输入,/,输出 操作数 数据类型,TBLVW,IW,QW,MW,SW,SMW,LW,T,C,*VD,*LD,*AC,字,DATAVW,IW,QW,MW,SW,SMW,LW,AC,T,C,AQW,*VD,*LD,*AC,整数,特殊内存位:,如果尝试从空表中移除条目,,SM1.5,被设为,1,。,LD I4.1,FIFO VW200,,,VW400,2,、后进先出指令,LIFO,LIFO TABLE,,,DATA,指令将表格中的最新(或最后)一个条目移至输出内存地址,方法是移除表中的最后一个条目,并将数值移至,DATA,指定的位置。每次执行指令时,表格中的条目数减,1,。,输入,/,输出 操作数 数据类型,TBLVW,IW,QW,MW,SW,SMW,LW,T,C,*VD,*LD,*AC,字,DATAVW,IW,QW,MW,SW,SMW,LW,AC,T,C,AQW,*VD,*LD,*AC,整数,特殊内存位:,如果尝试从空表中移除条目,,SM1.5,被设为,1,。,LD I0.1,LIFO VW200,,,VW300,三、查表指令,查找条件,=PIN,的指令格式:,FND,TBL,,,PIN,,,INDX,查找条件,PIN,的指令格式:,FND TBL,,,PIN,,,INDX,查找条件,TBL,,,PIN,,,INDX,查找条件,PIN,的指令格式:,FND TBL,,,PIN,,,INDX,查表指令从指针,INDX,所指的地址开始查表,TBL,,搜索与数据,PTN,的关系满足,CMD,定义的条件的数据。命令参数(,CMD,)被指定一个,1,至,4,的数值,分别代表,=,、,、,。,注意,第二节 数据转换功能指令,一,BCD,码与整数的转换,BCDI OUT,IBCD OUT,BCD,至整数指令将二进制编码的十进制数值转换成整数,将结果载入,OUT,指定的变量。,IN,的有效范围是,0,至,9999 BCD,。,整数至,BCD,指令将整数值转换成二进制编码的十进制数,将结果载入,OUT,指定的变量。,IN,的有效范围是,0,至,9999 BCD,。,输入,/,输出 操作数 数据类型,IN VW,IW,QW,MW,SW,SMW,LW,字,T,C,AIW,AC,常量,*VD,*AC,*LD,OUT VW,IW,QW,MW,SW,SMW,LW,字,T,C,AC,*VD,*LD,*AC,BCD,格式的有效范围,数据尺寸:最小数值:,十进制数字,BCD,十六进制数字,字,0 0000 0000 0000 0000 0000,数据尺寸:最大数值:,十进制数字,BCD,十六进制数字,Word 9999 1001 1001 1001 1001 9999,BCD,码与整数的转换指令均为无符号数操作。,指令影响的特殊存储器位:,SM1.6,(非法,BCD,码),当输入数据,IN,超过,BCD,码的表示范围,09999,时,,SM1.6,置位。,例,1,:指令应用说明。,例,2,:利用拨码器改变定时器、计数器设定值。,二字节与整数的转换,ITB,IN,,,OUT,B,TI,IN,,,OUT,字节转换成整数指令,把输入端指定的字节型数据转换成整数型数据,并存入,OUT,。由于字节型数据是无符号的,无需进行符号扩展。,整数转换为字节型指令,把输入端的无符号整数,转换成一个字节型数据,并送入,OUT,。被转换的值应是有效整数。,对于整数转换为字节型数据指令,当输入数据,IN,超过字节型数据表示范围(,0255,)时,会产生溢出,影响特殊继电器,SM1.1,(溢出),,SM1.1,被置位。,三双字整数与整数的转换,ITD,IN,,,OUT,D,TI,IN,,,OUT,双字整数转换成整数指令,把输入端的有符号双字整数转换成整数型数据,并存入,OUT,单元。被转换的输入值应是有效的双字整数,否则溢出位,SM1.1,被置位。,整数转换为双字整数指令,把输入端的整数,转换成一个双字整数,并送入,OUT,单元。此时要进行符号扩展。,四双字整数与实数的转换,ROUND,IN,,,OUT,D,TR,IN,,,OUT,双字整数转换成实数指令,将输入端指定的,32,位有符号双字整数转换成实数,并将结果存放到输出端指定的存储单元中去。,TRUNC,IN,,,OUT,实数转换成双字整数指令,可分为四舍五入取整(,ROUND,)和舍去尾数后取整(,TRUNC,)。,四双字整数与实数的转换,ROUND,IN,,,OUT,D,TR,IN,,,OUT,ROUND,取整指令:将输入端指定的实数转换成有符号双字整数,并将结果存放到输出端指定的存储单元中去。转换时实数的小数部分四舍五入。,TRUNC,IN,,,OUT,TRUNC,取整指令:将输入端指定的实数舍去小数部分后,再转换成,32,位有符号双字整数,结果存放到,OUT,指定的存储单元中。,四双字整数与实数的转换,ROUND,IN,,,OUT,D,TR,IN,,,OUT,取整指令被转换的输入值应是有效的实数,如果实数值太大,使输出无法表示,那么溢出位(,SM1.1,)被置位。,TRUNC,IN,,,OUT,欲将整数转换为实数,可先用,ITD,指令把整数转换为双整数,然后再用,DTR,指令把双整数转换为实数。,例,3,:实现将英寸值转换成厘米且结果取整的计算。,LD I0.0,ITD C10,AC1,DTR AC1,AC1,*R 2.54,AC1,ROUND AC1,VD4,C10=101,AC1=101,AC1=101.0,AC1=256.54,VD4=257,五七段显示译码指令,七段(,Segment,)译码指令,SEG,根据输入字节(,IN,)低,4,位确定的有效十六进制数(,16#0,F,)产生点亮,7,段显示器各段的代码(七段显示码),并送到输出,OUT,字节单元。,输入输出 操作数 数据类型,IN VB,IB,QB,MB,SB,SMB,LB,字节,AC,常量,*VD,*AC,*LD,OUTVB,IB,QB,MB,SMB,LB,AC,字节,*,VD,*AC,SB,*LD,例,4,:利用数码管显示数字。,六译码和编码指令,DECO,IN,,,OUT,ENCO,IN,,,OUT,译码指令(,DECO,):将字节型输入数据的低,4,位内容译成位号(,015,),并将输出字的该位置,1,,其余位置,0,。,编码指令(,ENCO,):将字型输入数据最低有效位(值为,1,)的位号编码后,送到输出(,OUT,)字节的低,4,位。,LD I1.0,DECO AC0,VW40,LD I1.0,ENCO VW10,VB20,AC0,VW40,0005,0000 0000 0010 0000,15 5 0,VW10,VB20,05,0000 0000 0010 0000,15 5 0,第三节 实时时钟功能指令,一设定实时时钟指令,设定实时时钟指令(,TODW,):当使能输入有效时,通过首地址为,T,的连续,8,字节的时钟缓冲区将正确的时间和日期数据写入实时时钟。,T,为字节型数据。缓冲区格式如下:,TODW,T,二读实时时钟指令,读实时时钟指令(,TODR,):当使能输入有效时,系统读当前日期和时间,并把它装入一个首地址为,T,的,8,字节的缓冲区。,T,为字节型数据。缓冲区格式如下:,TODR,T,星期的取值范围为,17,,分别表示星期日,星期一,星期六。,三实时时钟指令使用注意事项,(,1,)所有日期和时间数据必须用,BCD,码格式。,(,2,),CPU,不会根据日期核实星期是否正确,也不检查输入的日期和时间数据是否合法,如,2,月,30,日,系统仍然认为是有效日期,所以要保证输入数据的正确性。,(,3,)请勿在主程序和中断例行程序中使用,TODR/TODW,指令。当一条,TODR/TODW,指令正在执行时,若尝试执行中断例行程序中的,TODR/TODW,指令,则该指令不会被执行。,SM4.3,被设置为显示对此时钟曾有两个同时访问尝试(非重要错误,0007,)。,(,4,),S7-200,中的实时时钟仅使用年份的最低两位有效数字,例如:,2000,年表示为,00,(,16#00,)。,S7-200 PLC,不以任何方式使用年份信息。但是,使用算术或与年份值相比较的用户程序必须考虑两位数的表示法和世纪变化。,(,5,)长时间掉电或内存丢失后,实时时钟会被初始化为以下日期和时间:,日期:,90,年,1,月,1,日,时间:,00:00:00,星期:星期日,例,5,:编写一段程序,实现读实时时钟,并以,BCD,码显示分钟。时钟缓冲区从,VB100,开始。,
展开阅读全文