图. 01
INT,DINT,REAL 和 BCD 数据类型之间的转换
STEP 7 V11 提供了“CONV” (转换)指令可以用于 INT,DINT,REAL 和 BCD 数据类型之间的转换。可以在块编辑器中按下表的步骤进行插入和参数化操作。
1。在块编辑器中,打开“Instructions” 指令卡并打开“Converters” 目录,然后使用拖拽方式插入“CONVERT” 指令到网络段中。
2。插入指令块后,指令的数据类型还没有定义,在"CONV"下显示的是通配符 "??? to ???"。 当将鼠标指针放在左侧的三角形上时,会显示下拉箭头。
3。点击左侧的箭头,从下拉菜单中可以给输入参数“IN” 选择想要的数据类型(比如,INT)。
4。重复上面步骤可以为输出参数“OUT” 从右侧的下拉菜单中选择想要转换为的数据类型(比如,REAL)。例子中将一个数据类型为 INT 的数据转换为数据类型为 REAL 的数据(“Int to Real” )
注意
如果直接通过变量为“CONVERT” 指令指定输入输出参数,那么步骤 2 到步骤 4 不是必须的,因为转换指令自动将数据类型设置为变量的数据类型。
5。给转换指令的输入和输出分配变量。为输入输出指定完参数后,就可以完成下面的数据转换,比如:
从 INT 到 INT, DINT, REAL, BCD16, USINT, UINT,UDINT,SINT, LREAL 和 CHAR。
从 DINT 到 INT, DINT, REAL, BCD16, USINT, UINT,UDINT,SINT, LREAL 和 CHAR。
从 REAL 到 INT, DINT, REAL, USINT, UINT, UDINT, SINT 和 LREAL 。
从 USint 到 Int, DInt, Real, USint, UInt, UDint, SInt, LReal 和 Char
从 UINT 到 INT, DINT, REAL, USINT, UINT, UDINT, SINT, LREAL 和 CHAR。
从 UDINT 到 INT, DINT, REAL, USINT, UINT, UDINT, SINT, LREAL 和 CHAR。
从 SInt 到 Int, DInt, Real, USint, UInt, UDint, SInt, LReal 和 Char
从 LREAL 到 INT, DINT, REAL, USINT, UINT, UDINT, SINT 和 LREAL。
从 CHAR 到 INT, DINT, USINT, UINT, UDINT, SINT 和 CHAR。
从 BCD16 (16 bit) 到 INT 。
从 BCD32 (32 bit) 到 DINT。
转换指令注释:
图. 2 展示了BCD 格式到 Real 和 Byte 到 SInt 的数据格式转换。
BCD格式的数据必须先转换为 Int 或 DInt格式才能转换为REAL格式,如例子。
如要实现数据类型 Byte 到 SInt 或 从 Byte 到 USInt, CONVERT 指令需要手动设置 input 和 output 数据类型为SInt 或 USInt 。
图. 2
实数取整
下面的指令可以将实数类型的数据取整为一个整数( INT 或 DINT ),这些指令也在上面描述的“Converters” 目录中。
“CEIL ” :上取整
“FLOOR ”: 下取整
“ ROUND ”:舍入取整
“ TRUNC ”: 截尾取整
字符串数据类型转换
下表包含转换字符串数据类型的说明。指令的编程过程如表中的描述 。
转换为 TIME 数据类型
使用gaoji指令“T_CONV ” 将 DINT 类型的数据转换为一个时间值(TIME)或进行反向转换。在转换为 TIME 数据类型之前必须将所有数据类型(INT,REAL,BCD 等)转换为DINT。“T_CONV ” 指令在块编辑器的“Advanced Instructions >Date and Time” 指令卡中。
图 03 给出了一个将 INT 和 REAL 转换为 TIME 格式的例子。
图. 03
硬件数据类型 HW_IO 到 数据类型 Int 或 Word 的转换
硬件数据类型 HW_IO 是 STEP 7 (TIA Portal) 访问模板信息时用来识别硬件模板的。这个识别码是自动分配的,在创建设备时保存在设备的硬件配置中。
将硬件数据类型 HW_IO 转换为数据类型 Int 或 Word ,需要使用位于"Instructions"选项卡下的 "Advanced Instructions > Addressing" 下的 "IO2MOD" 指令。将要使用 "WORD_TO_INT" 指令来转换为数据类型 Int 。