.

重载

.
.

提示!

如果类型转换运算符的操作数值超出目标数据类型的值范围,则结果输出取决于处理器类型,因此未定义。例如,当将负操作数值从LREAL 转换为目标数据类型UINT时,就是这种情况。

从较大的数据类型转换为较小的数据类型时,可能会丢失信息。

提示!

边界情况的舍入逻辑取决于目标系统或目标系统的FPU(浮点单元)。例如,可以在不同的控制器上以不同的方式转换-1.5的值。

捕获值范围在整个应用程序中溢出,与目标系统的程序代码无关。

 

IEC61131-3规范不提供重载功能。

如果要严格按照IEC61131-3进行编程,则应使用以下各节所述的语法 <type> _TO_ <another type>的运算符。

 

类型转换的规则在这里也适用于重载。

运算符将值转换为其他数据类型,显式仅指定目标数据类型,而不指定初始数据类型(操作数的数据类型)(“重载转换”)。重载不是IEC 61131-3规范的一部分。

.
调用语法

<变量名> := <TO 运算符> ( <操作数> );
<操作数> = <变量名> | <文字>
 

.运算符


TO___UXINT 
TO___XINT 
TO___XWORD 
TO_BIT 
TO_BYTE 
TO_BOOL 
TO_DATE 
TO_DINT 
TO_DT 
TO_DWORD 
TO_INT 
TO_LDATE
TO_LDT
TO_LINT 
TO_LREAL 
TO_LTIME 
TO_LTOD
TO_LWORD 
TO_REAL
TO_SINT 
TO_STRING 
TO_TIME 
TO_TOD 
TO_UDINT 
TO_UINT 
TO_ULINT 
TO_USINT 
TO_WORD 
TO_WSTRING
 
.
例子
.

.ST实现语言:


VAR
    iNumber_1 : INT;
    rNumber_2 : REAL := 123.456;
    iNumber_2 : INT;
    xIsTrue : BOOL;
    sOutputText : STRING;
    sText : STRING := 'Hello World!';
    wsText: WSTRING;
    dateEvent : DATE := D#2019-9-3;
    uiEvent : UINT;
    uxiData : __UXINT;
END_VAR

iNumber_1 := TO_INT(4.22);            (* Result:  4 *)
iNumber_2 := TO_INT(rNumber_2);        (* Result:  123 *)
xIsTrue := TO_BOOL(1);                (* Result: TRUE *)
sOutputText := TO_STRING(342);        (* Result: '342' *)
wsText := TO_WSTRING(sText);        (* Result: "Hello World!"*)
uiEvent := TO_UINT(dateEvent);        (* Result:  44288 *)
uxiData := TO___UXINT(iNumber_2);    (* Result:  123 *)