VAR
vf_Test : REAL;
vf_LongTest : LREAL;
vi_LongNum : DINT;
vs_Num : INT;
END_VAR
vf_LongTest := vf_Test; //将32位REAL数据赋值给64位浮点型数据
vf_Test := vf_LongTest; //将64位数据赋值给32位浮点型数据
vi_LongNum := vs_Num; //将16位整型数据赋值给32位整型数据
vs_Num := vi_LongNum; //将32位整型数据赋值给16位整型数据
这里就需要引入数据类型强制转换概念了。不同数据类型直接进行数据转换,很容易出现数据异常。Codesys编译器在编译的时候,就会提醒我们注意这些情况。这里我们就需要使用数据类型强制转换。下面列举出一些常用的数据类型转换,不常用的就不列举了
语法:<\TYPE1>TO<\TYPE2>
严禁将“较大的”数据类型隐含地转换为“较小的”数据类型使用,因当从较大数据类型转为较小数据类型时,有可能丢失信息。
如被转换的值超出目标数据类型的存储范围,则这个数的高字节将被忽略。
例:将INT 类型转
换为BYTE 类型,或将DINT 类型转换为WORD 类型。
BOOL_TO_<\TYPE> 布尔类型转换数据
功能:把布尔数据类型转换为其它数据类型。 支持数据类型 :BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、REAL、TIME、DATE、TOD、DT 和STRING。
输出为数字类型时 :如果输入是TRUE,则输出为1。如果输入是FALSE,则输出为0。输出为字符串类型时 :如果输入是TRUE,则输出字符串'TRUE'。如果输入是FALSE,则输出为字符串'FALSE'。
例子: i:=BOOL_TO_INT(TRUE);则i = 1; t:=BOOL_TO_TIME(TRUE);则t = T#1ms;
BYTE_TO_<\TYPE> 字节类型转换数据
功能:把字节类型转换为其它数据类型。 支持数据类型:BOOL、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、REAL、TIME、DATE、TOD、DT 和STRING。
输出为BOOL 时 :输入不等于0 时,输出为TRUE。输入等于0 时,输出为FALSE。输出为TIME 或TOD 时 :输入将以毫秒值进行转换。输出为DATE 或DT 时 :输入将以秒值进行转换。
例子: bVarbool:= BYTE_TO_BOOL(255); 所以bVarbool:= TRUE; iVarint:= BYTE_TO_INT(255); 所以iVarint := 255 tVartime:= BYTE_TO_TIME(255); 所以tVartime:= T#255ms
<\整型数据> _TO_<\TYPE>整数类型转换指令
功能:把整数类型数据转换为其它数据类型。 支持数据类型:BOOL、BYTE、SINT、WORD、DWORD、USINT、INT、UINT、DINT、UDINT、REAL、TIME、DATE、TOD、DT 和STRING。 输出为BOOL 时:输入不等于0 时,输出为TRUE。输入等于0 时,输出为FALSE。() 输出为TIME 或TOD 时,输入将以毫秒值进行转换。 输出为DATE 或DT 时 :输入将以秒值进行转换。
REAL_TO_<\TYPE>实数类型转换指令
功能:把浮点数转换为其它类型数据。把浮点数转换为其它类型数据时,先将值四舍五入成整数值,然后转成新的量类型。 支持数据类型:BOOL、BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、REAL、TIME、DATE、TOD、DT 和STRING。 输出为BOOL 时:输入不等于0 时,输出为TRUE。输入等于0 时,输出为FALSE。 输出为TIME 或TOD 时:输入将以毫秒值进行转换。 输出为DATE 或DT 时 :输入将以秒值进行转换。
例子: iVarsint:= REAL_TO_INT(1.5);输出值iVarsint:=2;
TIME_TO_ 时间类型转换指令
功能:把时间型数据转换为其它类型数据,时间在内部以毫秒为单位存储成DWORD 类型(对于TIME_OF_DAY 变量从凌晨00:00 开始)。 支持数据类型:BOOL、BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、REAL、TIME、DATE、TOD、DT 和STRING。 输出为BOOL 时:输入不等于0 时,输出为TRUE。输入等于0 时,输出为FALSE。