Attention
IronPLC can only run very simple programs. The steps described are accurate but many language features are not yet supported.
Type Conversions¶
IEC 61131-3 defines a set of type conversion functions that convert
values between data types. Each function follows the naming pattern
<source>_TO_<target>.
IEC 61131-3 |
Section 2.5.1.5.1 |
Support |
Supported (numeric conversions) |
Conversion Categories¶
Integer Widening¶
Conversions from a smaller integer type to a larger integer type. These conversions are always safe — no data is lost.
Function |
Description |
Support |
|---|---|---|
|
8-bit to 16-bit signed |
Supported |
|
8-bit to 32-bit signed |
Supported |
|
8-bit to 64-bit signed |
Supported |
|
16-bit to 32-bit signed |
Supported |
|
16-bit to 64-bit signed |
Supported |
|
32-bit to 64-bit signed |
Supported |
|
8-bit to 16-bit unsigned |
Supported |
|
8-bit to 32-bit unsigned |
Supported |
|
8-bit to 64-bit unsigned |
Supported |
|
16-bit to 32-bit unsigned |
Supported |
|
16-bit to 64-bit unsigned |
Supported |
|
32-bit to 64-bit unsigned |
Supported |
Integer Narrowing¶
Conversions from a larger integer type to a smaller integer type. These conversions may lose data if the value exceeds the range of the target type.
Function |
Description |
Support |
|---|---|---|
|
16-bit to 8-bit signed |
Supported |
|
32-bit to 8-bit signed |
Supported |
|
32-bit to 16-bit signed |
Supported |
|
64-bit to 8-bit signed |
Supported |
|
64-bit to 16-bit signed |
Supported |
|
64-bit to 32-bit signed |
Supported |
|
16-bit to 8-bit unsigned |
Supported |
|
32-bit to 8-bit unsigned |
Supported |
|
32-bit to 16-bit unsigned |
Supported |
|
64-bit to 8-bit unsigned |
Supported |
|
64-bit to 16-bit unsigned |
Supported |
|
64-bit to 32-bit unsigned |
Supported |
Signed/Unsigned Conversions¶
Conversions between signed and unsigned integer types of the same or different sizes.
Function |
Description |
Support |
|---|---|---|
|
Signed to unsigned 8-bit |
Supported |
|
Signed to unsigned 16-bit |
Supported |
|
Signed to unsigned 32-bit |
Supported |
|
Signed to unsigned 64-bit |
Supported |
|
Unsigned to signed 8-bit |
Supported |
|
Unsigned to signed 16-bit |
Supported |
|
Unsigned to signed 32-bit |
Supported |
|
Unsigned to signed 64-bit |
Supported |
Integer to Real¶
Conversions from integer types to floating-point types. Large integer
values may lose precision when converted to REAL.
Function |
Description |
Support |
|---|---|---|
|
8-bit signed to single-precision |
Supported |
|
16-bit signed to single-precision |
Supported |
|
32-bit signed to single-precision |
Supported |
|
64-bit signed to single-precision |
Supported |
|
8-bit signed to double-precision |
Supported |
|
16-bit signed to double-precision |
Supported |
|
32-bit signed to double-precision |
Supported |
|
64-bit signed to double-precision |
Supported |
Real to Integer¶
Conversions from floating-point types to integer types. The fractional part is truncated.
Function |
Description |
Support |
|---|---|---|
|
Single-precision to 8-bit signed |
Supported |
|
Single-precision to 16-bit signed |
Supported |
|
Single-precision to 32-bit signed |
Supported |
|
Single-precision to 64-bit signed |
Supported |
|
Double-precision to 8-bit signed |
Supported |
|
Double-precision to 16-bit signed |
Supported |
|
Double-precision to 32-bit signed |
Supported |
|
Double-precision to 64-bit signed |
Supported |
Real to Real¶
Conversions between floating-point types.
Function |
Description |
Support |
|---|---|---|
|
Single-precision to double-precision |
Supported |
|
Double-precision to single-precision |
Supported |
Boolean Conversions¶
Conversions between BOOL and integer types. FALSE converts
to 0, TRUE converts to 1. For the reverse direction, 0 converts
to FALSE and any non-zero value converts to TRUE.
Function |
Description |
Support |
|---|---|---|
|
Boolean to 8-bit signed |
Supported |
|
Boolean to 16-bit signed |
Supported |
|
Boolean to 32-bit signed |
Supported |
|
Boolean to 64-bit signed |
Supported |
|
Boolean to 8-bit unsigned |
Supported |
|
Boolean to 16-bit unsigned |
Supported |
|
Boolean to 32-bit unsigned |
Supported |
|
Boolean to 64-bit unsigned |
Supported |
|
8-bit signed to Boolean |
Supported |
|
16-bit signed to Boolean |
Supported |
|
32-bit signed to Boolean |
Supported |
|
64-bit signed to Boolean |
Supported |
|
8-bit unsigned to Boolean |
Supported |
|
16-bit unsigned to Boolean |
Supported |
|
32-bit unsigned to Boolean |
Supported |
|
64-bit unsigned to Boolean |
Supported |
Numeric to String¶
Conversions from numeric types to string representation.
Function |
Description |
Support |
|---|---|---|
|
8-bit signed to string |
Not yet supported |
|
16-bit signed to string |
Not yet supported |
|
32-bit signed to string |
Not yet supported |
|
64-bit signed to string |
Not yet supported |
|
Single-precision to string |
Not yet supported |
|
Double-precision to string |
Not yet supported |
String to Numeric¶
Conversions from string representation to numeric types. The string must contain a valid numeric literal for the target type.
Function |
Description |
Support |
|---|---|---|
|
String to 8-bit signed |
Not yet supported |
|
String to 16-bit signed |
Not yet supported |
|
String to 32-bit signed |
Not yet supported |
|
String to 64-bit signed |
Not yet supported |
|
String to single-precision |
Not yet supported |
|
String to double-precision |
Not yet supported |
Description¶
Type conversion functions explicitly convert values from one data type
to another. IEC 61131-3 does not perform implicit type conversions;
all conversions must use the appropriate *_TO_* function.
When a conversion may lose data (narrowing conversions), the behavior depends on the implementation. Values that exceed the range of the target type may be truncated or cause a runtime error.
Example¶
See Also¶
Data Types — data type reference