第3章 SIMATIC S7-200的指令系统与基本程序 联系客服

发布时间 : 星期日 文章第3章 SIMATIC S7-200的指令系统与基本程序更新完毕开始阅读702db514f18583d04964591a

第3章 SIMATIC S7-200的指令系统与基本程序 数据的下一个数据开始查找。

影响允许输出ENO正常工作的出错条件:SM4.3(运行时间),0006(间接寻址错误),0091(操作数超界)。

3. 表取数指令

在S7-200 PLC中,可以将表中的字型数据按先进先出或后进先出的方式取出,送到指定的存储单元)。

表取数指令在梯形图上都有2个数据端:输入端TBL为表格的首地址,用以指明表格的位置,输出端DATA指明数值取出后要存放的目标位置。两种表取数指令从TBL指定的表中取数的位置不同,表内剩余数据变化的方式也不同。但指令执行后,实际填表数EC值都自动减1。表取数指令都会影响特殊存储器标志位SMl.5的内容。影响允许输出 ENO正常工作的出错条件:SM4.3(运行时间),0006(间接寻址错误),0091(操作数超界)。

4. 表功能指令示例

图3.18给出了一个表功能指令的示例,例中程序创建一个包含20条数据的表。存储区中的第一个数据为表的长度(在本例中为20)。存储区中的第二个数据为表中数据的实际个数。其他存储区单元为数据。一个表可以有最多100条数据。其中不包括定义表长度和实际数据个数的两个单元(在本例中为VW0和VW2)。当CPU执行第一条指令时,表中的实际数据个数(VW2)会自动增或减。在使用表之前,必须为表指定数据的最多个数。否则将无法在表中插入数据。同时,要确保使用边沿触发来激活读写指令。在查表之前,INDX(VW106)必须清0。如果找到匹配的数据,INDX中会存入表中的条目号;如果没有找到,INDX中为实际数据个数(VW2)。

·108·

第3章 SIMATIC S7-200的指令系统与基本程序 Network 1 LD SM0.1

从VW4开始创建一个20条数据的表。

用I0.0将表清0。

当I0.0产生上升沿时,从VW2开始清0。

用I0.1向表中写数据。

当I0.1产生上升沿时,将VW100的数据写入表中。

用I0.2读表中的最后一个数据。将表最后一个数据值移入VW102中。这会减少条目的数量。 后一个数据移入VW102中。 用I0.3读表中的第一个数据。将表中第一个数据值移入VW104中。这会减少条目的数量。 一个数据移入VW104中。

在表中搜索是否有数据为10。 1. 当I0.4产生上升沿时,将INDX指针清0。

MOVW +20, VW0 在首次扫描定义表的最大长度。 Network 2 LD I0.0 EU

FILL +0, VW2, 21 Network 3 LD I0.1 EU

Network 4 LD I0.2 EU

Network 5 LD I0.3 EU

Network 6 LDI0.4 EU

FND = VW2,+10,VW106

(b) STL

图3.23 表功能指令示例

ATT VW100, VW0

LIFO VW0, VW102 当I0.2产生上升沿时,将表中最

FIFO VW0, VW104 当I0.3产生上升沿时,将表中第

MOVW +0,VW106 2. 在表中搜索等于10的数据。

(a) LAD

3.3.8 数据转换指令

转换指令是对操作数的类型进行转换,并输出到指定的目标地址中去。S7-200指令有很

强的数据转换功能:有BCD码与整数之间的转换;实数与双字整数之间的转换(取整)等,

·109·

第3章 SIMATIC S7-200的指令系统与基本程序 还有译码、编码和段码指令。利用段码指令,可直接令七段数码管显示数据。

1.

BCD码与整数之间的转换

BCD码与整数之间的类型转换是双向的。BCD码与整数类型转换的指令格式见表3.10。 IN、OUT为字数据。梯形图中,IN和OUT可指定同一元件,以节省元件。若IN和OUT操作数地址指的是不同元件,在执行转换指令时,分成两条指令来操作: MOV IN OUT

BCDI OUT

若IN指定的源数据格式不正确,则SMl.6置1。

表3.10 BCD码与整数之间的转换指令

LAD BCD码转为整数 BCD_I EN ENO IN OUT BCD码转为整数 I_BCD EN ENO IN OUT IBCD OUT BCDI OUT STL 说 明 将BCD码输入数据IN转换成整数类型,并将结果送到OUT输出 数据类型及操作数 IN(WORD): IW、QW、VW、MW、SMW、SW、T、C、LW、输入IN的范围:0~9999。 AIW、AC、*VD、*LD、*AC、常数 将整数输入数据IN转换成BCD码类型,并将结果送到OUT输出。 OUT(WORD): IW、QW、VW、MW、SMW、SW、T、C、LW、输入IN的范围:0~9999。 AC、*VD、*LD、*AC 2. 字节与整数之间的转换

字节型数据是无符号数,字节型数据与字整数之间转换的指令格式见表3.11。

整数转换到字节指令ITB中,输人数据的大小为0~255,若超出这个范围,则会造成溢出,使SMl.1=1。影响允许输出ENO正常工作的出错条件:SM4.3(运行时间),0006(间接寻址错误)。

表3.11 字节与整数之间的转换指令

LAD 字节转为整数 B_I EN ENO IN OUT BTI IN, OUT STL 说 明 将字节型输入数据数据类型及操作数 IN(BYTE): IB、QB、VB、MB、SMB、SB、LB、IN转换成整数类型,AC、*VD、*LD、*AC、常数 并将结果送到OUTOUT(WORD): 输出。 IW、QW、VW、MW、SMW、SW、·110·

第3章 SIMATIC S7-200的指令系统与基本程序 T、C、LW、AC、*VD、*LD、*AC IN(WORD): 整数转为字节 将整数输入数据INI_B EN ENO IN OUT ITB IN, OUT 转换成字节类型,并将结果送到OUT输出。 OUT(BYTE): IB、QB、VB、MB、SMB、SB、LB、AC、*VD、*LD、*AC IW、QW、VW、MW、SMW、SW、T、C、LW、AIW、AC、*VD、*LD、*AC、常数 3. 整数与双字之间的转换

整数与双字之间的转换指令格式见表3.12。双整数转换为字整数时,输入数据超出范围则产生溢出。影响允许输出 ENO 正常工作的出错条件:SM1.1(溢出),SM4.3(运行时间),0006(间接寻址错误)。

表3.12 整数与双字之间的转换指令

LAD 双字转为整数 将双字型输入数据DI_I EN ENO IN OUT DTI IN, OUT 并将结果送到OUT输出。 STL 说 明 数据类型及操作数 IN(DINT): ID、QD、VD、MD、SMD、SD、LD、IN转换成整数类型,HC、AC、*VD、*LD、*AC、常数 OUT(WORD): IW、QW、VW、MW、SMW、SW、T、C、LW、AC、*VD、*LD、*AC IN(WORD): 整数转为字节 将整数输入数据INI_DI EN ENO IN OUT ITD IN, OUT 转换成双字类型,并将结果送到OUT输出。 OUT(DINT): ID、QD、VD、MD、SMD、SD、LD、AC、*VD、*LD、*AC IW、QW、VW、MW、SMW、SW、T、C、LW、AIW、AC、*VD、*LD、*AC、常数 4. 双字与实数之间的转换

双字与实数之间的转换指令格式见表3.13。ROUND和TRUNC都能将实数转换成双字整数。但前者将小数部分四舍五入,转换为整数,而后者将小数部分直接舍去取整。

将实数转换成双字整数的过程中,会出现溢出现象。影响允许输出 ENO 正常工作的出错条件:SM1.1(溢出),SM4.3(运行时间),0006(间接寻址错误)

表3.13 双字与实数之间的转换指令

·111·