技术文章

西门子 S7-200SMARTPLC数据转换指令详细介绍

西门子plc模块代理商

2024/8/20 16:21:13

转换指令是对操作数的类型进行转换,并输出到的目标地址中去西门子 S7-200SMARTPLC的转换指令包括数据类型转换数据的编码和译码ASCII转换等指令

数据类型转换指令

S7-200SMARTPLC中的数据类型主要有字节型整数型双整数型和实数型,使用了 BCD、ASCII十进制数和十六进制数不同功能的指令对操作数类型要求不同,因此,许多指令执行前需对操作数进行类型的转换

数据类型转换主要有 BCD码与整数之间的转换字节与整数之间的转换整数与双字整数之间的转换和双字整数与实数的转换等

(1)BCD码与整数之间的转换

在一些数字系统,如计算机和数字式仪器中,如数码开关设置数据,往往采用二进制码表示十进制数通常,把用一组四位二进制码来表示一位十进制数的编码方法称为 BCD

4位二进制码共有16种组合,可从中选取10种组合来表示0~910个数,根据不同的选取方法,可以编制出多种 BCD,其中8421BCD*常用十进制数与8421BCD码的对应关系如表5-10所示:十进制数1234化成8421BCD码为0001001000110100。

5-10 十进制数与8421BCD码对应表

图片

BCD码与整数之间的转换是对无符号操作数进行的,其转换指令如表5-11所示输入IN 和输出 OUT 的类型为字

使用 BCDI指令可将IN 端输入的 BCD 码转换成整数,产生结果送入 OUT 的变量。IN 输入的 BCD码范围为0~9999。

使用IBCD指令可将IN 端输入的整数转换成 BCD ,产生结果送入 OUT 的变量。IN 输入的整数范围为0~9999。

5-11 BCD码与整数之间的转换指令

图片

图片

若为无效BCD码时,特殊标志位SM1.6被置1。输入IN 和输出 OUT 操作数地址*相同,若不相同时,需使用指令:

MOV IN,OUT

BCDI OUT

5-6   使用BCD码与整数之间的转换指令,将 VW100中的BCD码转换成整数,并存放到 AC0;将 VW200中的整数转换成BCD,并存放到 AC1其程序如表5-12所示假设 VW100中 的 BCD 为 1001001000110101,执 行 BCDI指 令 后,转 换 的 整 数 为 9235;假 设VW200中的整数为5421,执行IBCD指令后,转换的BCD码为0101010000100001。

5-12 BCD码与整数之间的转换指令程序

图片

(2)字节与整数之间的转换

字节与整数之间的转换是对无符号操作数进行的,其转换指令如表5-13所示

5-13 字节与整数之间的转换指令

图片

使用 BTI指令可将IN 端输入的字节型数据转换成整数型数据,产生结果送入 OUT 的单元中使用ITB指令可将IN 端输入的整数型数据转换成字节型数据,产生结果送入OUT 的变量中被转换的值应为有效的整数,否则溢出位SM1.1被置1。

(3)整数与双字整数之间的转换

整数与双字整数之间的转换指令如表5-14所示

5-14 整数与双字整数之间的转换指令

图片

ITD指令是将输入IN 的整数型数据转换成双整数型数据,产生的结果送入 OUT 存储单元,输入为整数型数据,输出为双整数型数据,要进行符号扩展

DTI指令是将输入IN 的双整数型数据转换成整数型数据,产生的结果置入 OUT 存储单元,输入为双整数型数据,输出为整数型数据被转换的输入IN 值应为有效双整数,否则SM1.1被置1。

(4)双字整数与实数的转换

双字整数与实数的转换指令如表5-15所示

5-15 双字整数与实数的转换指令

图片

DTR指令是将输入IN 的双字整数型数据转换为实数型数据,产生的结果送入 OUT 的存储单元,IN 输入的为有符号的32位双字整数型数据

四舍五入和舍去小数指令都是实数转换为双字整数的取整指令执行 ROUND 指令时,实数的小数部分四舍五入;执行 TRUNC 指令时,实数的小数部分舍去若输入的实数值太大,无法用双字整数表示时,SM1.1被置1。

5-7  用实数运算求直径为32mm 的圆面积,将结果转换为整数

分析:圆的面积=圆半径的平方×π,圆半径的平方可使用 EXP (2×LN (32/2)),编写的 PLC程序如表5-16所示

5-8  1英寸等于2.54cm,假设英尺数由数码开关通过IW0输入 (BCD ),则长度由英寸转换成厘米,且厘米数由 QW0用 BCD码输出时,其程序编写如表5-17所示

5-16 求圆面积的程序

图片

5-17 英寸与厘米的转换程序

图片

ASCII 字符数组转换指令

ASCII码 (AmericanStandardCodeforInformationInterchange)为美国标准信息交换,在计算机系统中使用泛西门子S7-200SMARTPLC的 ASCII字符数组转换指令包括整数转换为 ASCII码指令双整数转换为 ASCII码指令实数转换为 ASCII码指令十六进制整数与 ASCII码相互转换指令,指令如表5-18所示

5-18 ASCII字符数组转换指令

图片

(1)整数转换为 ASCII码指令ITA

整数转换为 ASCII码指令ITA (IntegertoASCII)把输入端IN 的有符号整数转换成ASCII字符串,其转换结果存入以 OUT 为起始字节地址的8个连续字节的缓冲区中,FMT小数点右侧的转换精度和小数点是使用逗号还是点号整数转 ASCII码指令的格式操作数如图5-2所示,输出缓冲区的大小始终是8个字节,nnn表示输出缓冲区中小数点右侧的数字位数,nnn的有效范围为0~5,若 nnn=0,小数右侧的位数为0,转换时数值没有小数点;nnn>5,输出缓冲区会被空格键的 ASCII码填充,此时无法输出。C整数和小数点的分隔符,当 C=1,分隔符为 “,”;当 C=0,分隔符为 “.”,FMT的高4位必须为0。

在图5-2中给出了一个数值的例子,其格式为使用点号 (C=0),小数点右侧有3位小

图片

5-2 整数转 ASCII码指令的 FMT操作数

数 (nnn=011),输出缓冲区格式符合以下规则:

① 正数值写入输出缓冲区没有符号位;

② 负数值写入输出缓冲区时以负号 (-)开头;

③ 小数点左侧开头的0 (除去靠近小数点的那个之外)被隐藏;

④ 数值在输出缓冲区 OUT 中是右对齐的

5-9  整数转 ASCII码指令的使用将 VW10中的整数转换为从 VB100开始的8ASCII码字符,使用 16#0B 的 格 式,用 逗 号 作 小 数 点,保 留 位 小 数,程 序 如 表 5-19所示

5-19 整数转 ASCII码指令程序

图片

(2)双整数转换为 ASCII码指令 DTA

双整数转换为 ASCII码指令 DTA (Double   Integer   to    ASCII )把输入端IN的有符号双字整数转换成 ASCII字符串,其转换结果存入以 OUT 起始字节地址的12个连续字节的缓冲区中除输入IN 为双整数输出为12字节外,其它方面与整数转 ASCII码指令相同双整数转换为 ASCII码指令的格式操作数如图5-3所示

图片

5-3 双整数转 ASCII码指令的 FMT操作数

(3)实数转换为 ASCII码指令 RTA

实数转换为 ASCII码指令 RTA (RealtoASCII)是将输入端IN 的实数转换成 ASCII字符串,其转换结果存入以 OUT 为起始字节地址的3~15个连续字节的缓冲区中实数转换为 ASCII码指令的格式操作数如图5-4所示

西门子S7-200SMARTPLC的实数格式最多支持7位小数,若显示7位以上的小数会

图片

5-4 实数转 ASCII码指令的 FMT操作数

产生一个四舍五入的错误5-4,SSSS表示输出缓冲区 OUT 的大小,它的范围为3~15个字节输出缓冲区的大小应大于输入实数小数点右边的位数,如实数-3.89546,小数点右边有5,SSS应大于5,至少为6。与整数转 ASCII码指令相比,实数转 ASCII码的输出缓冲区的格式还具有以下规则:

① 小数点右侧的数值按照的小数点右侧的数字位数被四舍五入;

出缓冲区的大小应至少小数点右侧数字位多3个字

5-10  实数转ASCII指令的使用VD10中的实数转换成从VB100开始的10ASCII码字符,使用16#A3的格式,用点号作小数点,后面跟3位小数,程序如表5-20所示

5-20 实数转 ASCII码指令程序


(4)十六进制整数与 ASCII码相互转换指令

ASCII30~3941~46与十六进制数为0~9和 A~F相对应,使用 HTA 指令可将十六进制整数转换为 ASCII码字符串;使用 ATH 指令可将 ASCII码字符串转换为相应的十六进制整数

ATH 指令将一个长度为 LEN IN 开始的 ASCII码字符串转换成从 OUT 开始的十六进制整数;HTA 指令将从输入字节IN 开始的长度为 LEN 的十六进制整数转换成从 OUT开始的 ASCII码字ASCII码和十六进制数的有效范围为0~255

5-11  ASCII码转换成十六进制整数指令的使用将 VB100~VB102中存放的3ASCII34、42、38转换成十六进制数程序及运行结果如表5-21所示表中 “x”为半字节,表示 VB11的低4位值未改变

5-21 ASCII码转换成十六进制整数指令程序



编码与译码指令

编码指令 ENCO (Encode)是将输入的字型数据IN 中为1的有效位的位数写入输出字节 OUT 4,即用半字节对一个字型数据16位中的 “1”位有效位进行编码它的输入IN 为字型数据,输出 OUT 为字节型数据,其指令如表5-22所示

5-22 编码指令


译码指令 DECO (Decode)是 将 输 入 的 字 节 型 数 据IN 的 低 位 表 示 的 位 号 输 出 到OUT 所的单元对应位置1,而其它位清0。即对半字节的编码进行译码,以选择一个字型数据16位中的 “1”它的输入IN 为字节型数据,输出 OUT 为字型数据,其指令如5-23所示

5-23 译码指令


5-12  编码和译码指令的举例,其程序如表5-24所示I0.1常开触点为 OFF I0.0触点为 ON,执行 ENCO 指令进行编码操作后,VB100中的值为0;执行 DECO 指令进行译码操作后,VW10中的值也为16#00。I0.1常开触点为 ON,I0.0触点也为 ON,执行 ENCO 指令进行编码操作后,VB100中的值为3;执行 DECO 指令进行译码操作后,VW10中的值为16#0008,即二进制数0000000000001000。

5-24 编码和译码指令程序



七段显示译码指令

S7-200SMARTPLC七段显示译码指令SEG (Segment)据输入字节IN 4定的十六进制 数 (16#0~16#F) 产 生 点 亮 七 段 显 示 器 各 段 的,并 送 到 输 出 字OUT。七段显示器的abcdefg (D0~D6)段分别对应于输出字节的第0~6,若输出字节的某位为1,其对应的段显;出字节的某位为0,其对应的段不亮符显示与各段的关系如表5-25所示例如要显示数字 “2”,D0、D1、D3、D4、D61,其余为0。

5-25 字符显示与各段关系


七段显示译码指令如表5-26所示

5-26 七段显示译码指令


5-13  PLCI0.0外接按钮SB0,QB0外接1LED共阴极数码管,要求每按1次按钮时,共阴极数码管显示的数字加1,其显示数字为0~9。

分析:可以使用 C0增计数器对按钮次数进行统计,再将 C0中的整数转换为相应 BCD码后送入 MB0,最后将 MB0中的数值转换为相应的段码即可编写的程序如表5-27所示

5-27 七段显示译码程序




相关产品

猜你喜欢

当前客户在线交流已关闭
请电话联系他 :