山西西门子S7-200SMART代理经销商
西门子S7-200 PLC数据类型转换指令及应用实例

在进行数据处理时,不同性质的操作指令需要不同数据类型的操作数。数据类型转换指令的功能是当使能端有效时(EN=1),将数据IN端的数据类型按操作指令要求转换成相应的数据类型存放到OUT中。S7-200的数据转换指令共有9种,包含:
①字节到整数的转换指令BTI( Byte To Integer)。
②整数到字节的转换指令ITB( Integer To Byte)。
③整数到双整数转换指令ITD(Integer To Double integer)。
④双整数到整数转换指令DTI( Double integer To Integer)。
⑤实数到双整数转换指令(小数部分4舍5入)ROUND。
⑥实数到双整数转换指令(小数部分舍去)TRUNC( Truncate)。
⑦双整数到实数转换指令DTR( Double integer To Real)。
⑧整数到BCD码转换指令IBCD。
⑨BCD码到整数转换指令BCDI。
9种指令的具体格式介绍如表4-18所示。
表4-18 数据类型转换指令
LAD | 指令名称 | 方块上 部的符号 | STL指令 | 指令说明 |

| 字节与整数转 换指令 | B _ I | BTI IN,OUT | 将字节型数据IN转换为整型数据OUT |
I _ B | ITB IN,OUT | 将整数IN转换为字节。当IN超过字 节表示范围(0~255)时,则产生溢出 |
整数与双整数 转换指令 | I _ D | ITD IN,OUT | 整型数据IN转换成双整型数据(包含 符号)送到OUT |
D _ I | DTI IN,OUT | 将32位整数IN转换成16位整数,当 IN超过16位整数范围时,则产生溢出 |
双整数与实数 转换指令 | ROUND | ROUND IN,OLTT | 将实型IN中的小数部分进行4舍5入 处理,转换成双整数型数据OUT |
TRUNC | TRUNC IN, OUT | 将实型IN中的小数部分舍去,转换成 双整数型数据OUT |
DI _ R | DTR IN,OUT | 将32位有符号整数IN转换成32位实 数OUT |
整数与BCD 码转换指令 | I _ BCD | IBCD OUT | 将整型数据IN转换成BCD码,送到 OUT。当输入数据IN超过BCD码的表示 范围(0~ 9999)时,SM1.6置位 |
BCD _ I | BCDI OUT | 将范围0~ 9999的BCD码IN转换成整 数OUT。当IN超过BCD码的表示范围 时,SM1.6置位 |

在转换指令中影响的特殊继电器:SM1.1(溢出)或SM1.6(BCD错误)。
影响允许输出ENO正常工作的出错条件为:SM1.1(溢出)或SM1.6(BCD错误)、SM4.3(运行时间),0006(间接寻址)。
【例】 某现场测量中,采用计数器(C10)的计数值来存储长度值,实际测量中以英寸( in)为单位,现在想把这个长度单位改为厘米(cm),且需要把该长度的整数部分保存。
分析:1in=2.54cm,故需要把C10的计数值乘以2.54,这是一个实数运算,需要先把整数( C10)转换成实数,再进行实数运算。这个乘积是一个实数,为了得到整数值,则需要进行实数到整数的转换。
查表指令FND?的功能是从首地址为TBL的字型数据表中,找出符合PTN及CMD条件的数据在表中的编号(编号范围为0—99),并将编号存放到INDX中。
FND?中的“?”是比较运算符号“=”、“<>”、“<”和“>”,查表指令格式如图4-42所示。
在梯形图中,查表指令以功能框的形式编程,指令名称为“TBL_FIND”。它共有5个数据输入端:
1) EN:查表允许信号端,EN =1时,查表。
2) TBL:表格的首地址,字型地址。
3) PTN:用于比较的数据,即给定值。
4) INDX:用来存放表中符合查表条件的数据的地址。
5) CMD:比较运算符号“?”的编码,1为=(等于);2为<>(不等于);3为<(小于);4为>(大于)。
在S7-200中,可以将表中的字型数据按照先进先出( FIFO)或后进先出(LIFO)的方式取出,送到指定的存储单元。每次取出一个数据,实际填表数EC自动减l。指令介绍见表4.16。
表4-16 表中取数指令
LAD | 指令名称 | 方块上部 的符号 | STL指令 | 指令说明 |

| 先进先出 | FIFO | FIFO TBL, DATA | 从TBL中取入表中的数据, 送到DATA字型存储单元。剩余数据依 次上移一位 |
后进先出 | LIFO | LIFO TBL, DATA | 从TBL中取出进入表中的数据, 送到DATA字型存储单元 |
表中取数指令影响的特殊继电器为SM1.5(表空)。
影响允许输出ENO正常工作的出错条件为:SM4.3(运行时间),0006(间接寻址),0091(操作数超界)。
【例】 对表4-15,执行“FIFO VW100,AC0”指令,执行结果见表4-17。
表4-17 FIFO指令执行结果
操作数 | 存储单元 | 执行前数据 | 执行后数据 | 说 明 |
DATA | AC0 | 空 | 1234 | 从表中取出的个数据 |
TBL | VW100 | 0004 | 0004 | TL =4,填表数不变 |
VW102 | 0002 | 0001 | 实际填表数由2自动变为1 |
VW104 | 1234 | 5678 | 数据0 |
VW106 | 5678 | **** | 数据1变为无效数据 |
VW108 | **** | **** | 无效数据 |
VW110 | **** | **** | 无效数据 |

在执行查表指令前,应先对INDX的内容清0。当允许输入EN有效时,从INDX开始搜索TBL,查找符合给定值(PTN)和条件( CMD)的数据,如果没有发现符合条件的数据,则将表的实际长度(EC)存放到INDX中。如果找到一个符合条件的数据,则将该数据的表中地址(数据编号)存放到INDX中。如果想继续查找符合条件的数据,则必须先对INDX加1,并重新激活查表指令,继续查找同样符合条件的数据在表中所处的位置。
影响允许输出ENO正常工作的出错条件为:SM4.3(运行时间),0006(间接寻址),0091(操作数超界)。
【例】 图4-43给出了一个查表指令的编程例子。
当10.0=1时,FND指令开始查找数据表中等于16#1020的数据。TBL的数据为VW40,表明从VW44开始即为表中数据,实际表中共有4项数据(EC=4)。
如将AC1置0,则表示从表头查找。当I0.0=1时,从VW44开始搜索等于16#1020的数据项,搜索完后AC1的数据等于0(不是4),表明找到一个数据其位置为VW44。如果想继续查找,则可以令AC1的数据加1,再次接通I0.0,再执行一次搜索,查找完之后AC1的数据等于2,表明又找到一个。如想继续,重复上述过程,直到ACl的数据等于4(即AC1=4=EC)为止,表明查找结束。
填表指令ATT( Add To Table)的功能是将字型数据DATA填加到首地址为TBL的表格中,指令格式如图4-40所示。
在梯形图中,填表指令以功能框的形式编程,指令名称为“AD_T_TBL”。输入端DATA为字型数据输入端,TBL为表格的首地址。当允许输入EN有效时,将输入的字型数据填写到指定的表格中。在填表时,新数据填写到表格中一个数据的后面,每填写一个数据,实际填表数EC将自动加1。

图4-40 填表指令
【例】 建立一个如表4-15所示的表格。
分析:向已经存在的表格中填写数据非常简单,可以使用ATT指令;如果表格还没有建立起来,必须先用传送指令向表格的首地址中传送填表数(TL),建立起表格,再使用填表指令完成数据的填充。具体的程序如图4-41所示。=-
填表指令影响特殊继电器SM1.4(表溢出)。

影响允许输出ENO的出错条件为:SM4.3(运行时间),0006(间接寻址),0091(操作数超界)。
山西西门子S7-200SMART代理经销商