step7数据类型转换

如何实现整形数(INT)与字符串(String)、S5TIME、BCD 码以及实数等数据类型之间的数据转换?

说明:
应用转换功能可以在累加器 1 中实现数据转换。不同的转换可以只对累加器 1 的低16位(位0-15)或者所有位产生影响。其它累加器的内容不会改变。在连续多次转换时,每一次转换累加器 1 的值都会随之而改变 ,所以并不需要将中间转换值临时存储。图 01 所示为本条目中所涉及数据转换的总览。


图 01

下面表格介绍了一些在累加器1 中进行数据转换的例子。
序号 在累加器1 中进行数据转换的例子:
1 整数,双整数,实数及 BCD 码之间的数据转换:
STEP 7 提供以下命令来实现整数,双整数,实数及 BCD 码之间的数据转换。
整数,双整数的转换:

ITD: 整数转换成双整数
ITB: 整数转换成 BCD 码
DTB:双整数转换成 BCD 码
DTR:双整数转换成实数
BCD 码的转换:

BTI: BCD 码转换成整数
BTD:BCD 码转换成双整数
实数的转换:

RND+: 取整为较大的双整数(向上取整)
RND-: 取整为较小的双整数(向下取整)
RND: 取整为最近的双整数(取整)
TRUNC: 截尾取整
图 02 所示为将 BCD 码数值转换为实数的例子。从图 01 中可知 BCD 类型的数据需要先转换成整数或者双整数后才能再转换为实数。


图 02

注意事项:
下述手册可提供更多信息:

S7-300 Instruction List CPU Specifications CPUs 312 IFM to 318-2 DP (章节“Data Type Conversion Instructions”) 条目号: 8861817。
S7-400 Instruction List CPU 412, 414, 416, 417 (章节“Data Type Conversion Instructions”) 条目号:1117645。

2 将整数和实数转换成 S5TIME 格式的数据:
这里所要求的时间值单位是毫秒。转换程序分为两步:
首先将所要转换的数据转换为双整数并存储于数据格式为“TIME”的临时变量中。如将整数通过命令“ITD”转换为双整,通过“RND”将实数转换为双整。
调用 STEP 7 标准库中 IEC 功能库中的 FC40(TIM_S5TI)功能块将上步存储的“TIME”格式的数据转换为 “ S5TIME”数据格式的数值。
图 03 所示为整数到 “S5TIME” 数据的转换例程。


图 03

3 将 ASCII 码转换成整数:
STEP 7“Char_Int”项目包含将一个四位 ASCII 码转换为一个整数的 FC 1 块。对于输入参数,块要求ASCII 字符为“Char”型,并且满足:
IN 变量:Char1 = 个位,
IN 变量:Char2 = 十位,
IN 变量:Char3 = 百位,
IN 变量:Char4 = 千位。
在 OB 1 中调用 FC 1 功能,输出变量“Result”即为整数。用户可用变量表“VAT_1”监视结果。


图 04

注意事项:
如果 ASCII 字符不包含任何数字,则 FC 1 将输出变量“Error”(出错位)置

位为 True。这种情况下,“Result”输出为“0”。

Char_ ( 299 KB )

将“Char_”文件复制到一个单独的目录,然后双击打开此文件。 STEP 7 项目解压并生成所有相关子目录。然后用户可以使用 SIMATIC Manager 打开和处理解压后的项目。

4 将十进制数转换成 ASCII 码:
用户可以使用 ICE 库中的 FC 5 功能将十进制数转换成 ASCII 字符。FC 5 功能完成转换操作。通过两个传输参数来设置该块:
参数“i”:
要转换的双字格式的数字
参数“RetVal”:
存储转换完的 ASCII 码的数据类型为字符串(String)的变量
在 OB 1 中调用 FC 5 功能,并提供相应的参数。转换结果出现在 DB 1 中从数据块字节 2 开始的位置。用户可用变量表监视结果。

( 135 KB )

将“”文件复制到一个单独的目录,然后双击打开文件。STEP 7 项目解压并生成所有相关子目录。然后用户可以使用 SIMATIC Manager 打开和处理解压后的项目。

5 字符串变量数据转换的相关一些 IEC 的标准功能:
使用 IEC 的标准功能 FC5, FC16, FC30, FC37, FC38 和 FC39 这些功能块可以实现字符串与其它数据类型(例如双整数)之间的相互的转换。
FC5 DI_STRNG: 将双整数转换为字符串
FC16 I_STRNG: 将整数转换为字符串
FC30 R_STRNG: 将实数转换为字符串
FC37 STRNG_DI: 将字符串转换为双整数
FC38 STRNG_I: 将字符串转换为整数
FC39 STRNG_R: 将字符串转换为实数

相关文档
最新文档