在STEP7(TIAPortal)里,对于S7-1200/S7-1500可以使用“指令”库里的转换功能将变量转换为所选的数据类型。
描述
下表(图.1)给出了常用转换功能的概览。

图.1
INT,DINT,REAL和BCD数据类型之间的转换
STEP7(TIAPortal)提供了“CONV”(转换)指令可以用于INT,DINT,REAL和BCD数据类型之间的转换。可以在块编辑器中按下表的步骤进行插入和参数化操作。
1.在块编辑器中,打开“指令”库,再打开“基本指令转换操作”目录。使用拖拽方式将“CONVERT”指令插入到网络段中。
2.插入指令块后,指令的数据类型还没有定义,在"CONV"下显示的是通配符"???to???"。将鼠标指针放在左侧的三角形上时,会显示下拉箭头。
4.重复上面步骤可以为输出参数“OUT”从右侧的下拉菜单中选择想要转换的数据类型(例如,REAL)。这个例子就是将一个数据类型为INT的数据转换为数据类型为REAL的数据(“InttoReal”)。
注意
如果直接通过变量为指令指定输入输出参数,那么步骤2到步骤4不是必须的,因为转换指令自动将数据类型设置为变量的数据类型。
5。给转换指令的输入和输出分配所选择的变量。为输入输出指定参数后,就可以完成下面的数据转换,例如:
从Int到Int,DInt,Real,Bcd16,USint,UInt,UDint,SInt,LReal和Char
从DInt到Int,DInt,Real,Bcd32,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。
更多的信息可以参见STEP7(TIAPortal)在线帮助CONVERT:Convertvalue。

图.2
实数取整
下面的指令可以将实数类型的数据取整为一个整数(INT或DINT),这些指令也在上面描述的“Converters”目录中。
“CEIL”:上取整。
“FLOOR”:下取整。
“ROUND”:舍入取整。
“TRUNC”:截尾取整。
字符串数据类型转换
下表包含转换字符串数据类型的说明。指令的编程过程如表中的描述。
高级指令
描述
S_CONV
字符串转换
STRG_VAL
将字符串转换为数值
VAL_STRG
将数值转换为字符串
Strg_TO_Char
将字符串转换为字符
Char_TO_Strg
将字符转换为字符串
ATH
将ASCII字符串转换为十六进制数
HTA
将十六进制数转换为ASCII字符串
转换为TIME数据类型
使用高级指令“T_CONV”将INT类型的数据转换为一个时间值(TIME)和进行反向转换。在转换为TIME数据类型之前必须将所有数据类型(INT,REAL,BCD等)转换为DINT。“T_CONV”指令在块编辑器的“扩展指令日期和时间”指令卡中。
图3给出了一个将INT和REAL转换为TIME格式的例子。

图.3
硬件数据类型HW_IO的转换
硬件数据类型HW_IO是STEP7(TIAPortal)访问模板信息时用来识别硬件模板的。这个识别码是自动分配的,在创建设备时保存在设备的硬件配置中。模块名作为系统常量放在"PLCvariables"表中。在相应功能块中通过模块名可以直接使用该模块。
另外,使用"IO2MOD"功能可以从模块的逻辑输入地址"InAddress"()确定模块的硬件标识符"HWIO"。直接在功能块的"LADDR"参数直接输入硬件标识符"HWIO"。"LADDR"参数无需做转换,因为可以填写"HW_IO"参数,也可以填写UINT数据类型变量。

图.4
在图4中是一个SCL的程序例子,调用指令"IO2MOD"。如果功能块分配参数不正确,变量"ChangeHWIO"会显示报错代码。





