Appearance
Reference
This reference summarizes all built-in functions and standard blocks of the Coldwave Script-VM.
It is intended for users who are familiar with the basics of the language and want to look things up directly.
The tables show internally used type codes such as VT_DINT or VT_TOD. They correspond to the data types described in the documentation:
VT_BOOL→ BOOLVT_SINT,VT_INT,VT_DINT,VT_LINT→ Signed integer typesVT_USINT,VT_UDINT,VT_ULINT→ Unsigned integer typesVT_DWORD→ DWORDVT_LREAL→ LREALVT_TIME,VT_DATE,VT_TOD,VT_DT→ Time and date types
Note: Signatures reflect the metadata used by the VM’s builtin registry. Variadic functions accept additional arguments beyond the listed minimum.
Functions
| Name | Short Description | Parameters (IEC-style) | Return |
|---|---|---|---|
| ABS | Absolute value. | X: DINT | VT_DINT |
| ACOS | Math function (radians for trig). | X: LREAL | VT_LREAL |
| ADD | Addition. | IN1: DINT, IN2: DINT, ... | VT_DINT |
| ADD_DT_TIME | Date/time arithmetic. | DT: DT, T: TIME | VT_DT |
| ADD_TIME | Date/time arithmetic. | T1: TIME, T2: TIME | VT_TIME |
| AND | Bitwise AND (variadic). | IN1: DWORD, IN2: DWORD, ... | VT_DWORD |
| ASIN | Math function (radians for trig). | X: LREAL | VT_LREAL |
| ATAN | Math function (radians for trig). | X: LREAL | VT_LREAL |
| CEIL | Rounding/truncation. | X: LREAL | VT_LREAL |
| COS | Math function (radians for trig). | X: LREAL | VT_LREAL |
| CURRENT_TIME | Current time-of-day (TOD). | — | VT_TOD |
| DATE_TO_DT | Convert DATE to DT (TOD = 0). | DATE: DATE | VT_DT |
| DIV | Division. | A: DINT, B: DINT | VT_DINT |
| DT_TO_DATE | Extract DATE part from DT. | DT: DT | VT_DATE |
| DT_TO_TOD | Extract TOD part from DT. | DT: DT | VT_TOD |
| EQ | Chain comparison: IN1 == IN2 == ... (variadic). | IN1: LREAL, IN2: LREAL, ... | VT_BOOL |
| EXP | Math function (radians for trig). | X: LREAL | VT_LREAL |
| EXPT | Power function. | X: LREAL, Y: LREAL | VT_LREAL |
| FLOOR | Rounding/truncation. | X: LREAL | VT_LREAL |
| GE | Chain comparison: IN1 >= IN2 >= ... (variadic). | IN1: LREAL, IN2: LREAL, ... | VT_BOOL |
| GT | Chain comparison: IN1 > IN2 > ... (variadic). | IN1: LREAL, IN2: LREAL, ... | VT_BOOL |
| LE | Chain comparison: IN1 <= IN2 <= ... (variadic). | IN1: LREAL, IN2: LREAL, ... | VT_BOOL |
| LIMIT | Clamp X to [LO, HI]. | LO: DINT, X: DINT, HI: DINT | VT_DINT |
| LN | Math function (radians for trig). | X: LREAL | VT_LREAL |
| LOG | Math function (radians for trig). | X: LREAL | VT_LREAL |
| LT | Chain comparison: IN1 < IN2 < ... (variadic). | IN1: LREAL, IN2: LREAL, ... | VT_BOOL |
| MAKE_DT | Combine DATE and TOD into DT. | DATE: DATE, TOD: TOD | VT_DT |
| MAX | Maximum (variadic). | IN1: DINT, IN2: DINT, ... | VT_DINT |
| MIN | Minimum (variadic). | IN1: DINT, IN2: DINT, ... | VT_DINT |
| MOD | Remainder (modulo). | A: DINT, B: DINT | VT_DINT |
| MOVE | Pass-through (identity). | IN: DINT | VT_DINT |
| MUL | Multiplication. | IN1: DINT, IN2: DINT, ... | VT_DINT |
| MUX | Select one of IN0..INn by index K (variadic). | K: DINT, IN0: LREAL, IN1: LREAL, ... | VT_LREAL |
| NE | Pairwise comparison: IN1 != IN2 (binary). | IN1: LREAL, IN2: LREAL | VT_BOOL |
| NOT | Bitwise NOT. | IN: DWORD | VT_DWORD |
| OR | Bitwise OR (variadic). | IN1: DWORD, IN2: DWORD, ... | VT_DWORD |
| POW | Power function. | X: LREAL, Y: LREAL | VT_LREAL |
| ROL | Rotate left. | X: DWORD, N: DINT | VT_DWORD |
| ROR | Rotate right. | X: DWORD, N: DINT | VT_DWORD |
| ROUND | Rounding/truncation. | X: LREAL | VT_LREAL |
| SEL | Select A or B based on G. | G: BOOL, A: DINT, B: DINT | VT_DINT |
| SGN | Sign function. | X: LREAL | VT_DINT |
| SHL | Shift left. | X: DWORD, N: DINT | VT_DWORD |
| SHR | Shift right. | X: DWORD, N: DINT | VT_DWORD |
| SIN | Math function (radians for trig). | X: LREAL | VT_LREAL |
| SQRT | Math function (radians for trig). | X: LREAL | VT_LREAL |
| SUB | Subtraction. | A: DINT, B: DINT | VT_DINT |
| SUB_DT_TIME | Date/time arithmetic. | DT: DT, T: TIME | VT_DT |
| SUB_TIME | Date/time arithmetic. | T1: TIME, T2: TIME | VT_TIME |
| TAN | Math function (radians for trig). | X: LREAL | VT_LREAL |
| TIME_TO_INT | Convert TIME (ms) to DINT. | T: TIME | VT_DINT |
| TIME_TO_REAL | Convert TIME (ms) to LREAL. | T: TIME | VT_LREAL |
| TOD_TO_DT | Convert TOD to DT (DATE = 0). | TOD: TOD | VT_DT |
| TO_BOOL | Type conversion to BOOL. | X: LREAL | VT_BOOL |
| TO_DINT | Type conversion to DINT. | X: LREAL | VT_DINT |
| TO_INT | Type conversion to INT. | X: LREAL | VT_DINT |
| TO_LINT | Type conversion to LINT. | X: LREAL | VT_LINT |
| TO_LREAL | Type conversion to LREAL. | X: LREAL | VT_LREAL |
| TO_REAL | Type conversion to REAL. | X: LREAL | VT_LREAL |
| TO_SINT | Type conversion to SINT. | X: LREAL | VT_SINT |
| TO_TIME | Type conversion to TIME. | X: LREAL | VT_TIME |
| TO_UDINT | Type conversion to UDINT. | X: LREAL | VT_UDINT |
| TO_UINT | Type conversion to UINT. | X: LREAL | VT_UDINT |
| TO_ULINT | Type conversion to ULINT. | X: LREAL | VT_ULINT |
| TO_USINT | Type conversion to USINT. | X: LREAL | VT_USINT |
| TRUNC | Rounding/truncation. | X: LREAL | VT_DINT |
| XOR | Bitwise XOR (variadic). | IN1: DWORD, IN2: DWORD, ... | VT_DWORD |
Blocks
CTD – Down Counter
Down counter (decrements CV on rising edge of CD).
Input
| Name | Type | Meaning |
|---|---|---|
| CD | VT_BOOL | Count-down; rising edge decrements CV. |
| LD | VT_BOOL | Load; loads PV into CV. |
| PV | VT_INT | Preset value. |
Output
| Name | Type | Meaning |
|---|---|---|
| Q | VT_BOOL | Counter output. |
| CV | VT_INT | Current value. |
CTU – Up Counter
Up counter (increments CV on rising edge of CU).
Input
| Name | Type | Meaning |
|---|---|---|
| CU | VT_BOOL | Count-up; rising edge increments CV. |
| R | VT_BOOL | Reset; sets CV := 0. |
| PV | VT_INT | Preset value. |
Output
| Name | Type | Meaning |
|---|---|---|
| Q | VT_BOOL | Counter output. |
| CV | VT_INT | Current value. |
CTUD – Up/Down Counter
Up/down counter.
Input
| Name | Type | Meaning |
|---|---|---|
| CU | VT_BOOL | Count-up; rising edge increments CV. |
| CD | VT_BOOL | Count-down; rising edge decrements CV. |
| R | VT_BOOL | Reset; sets CV := 0. |
| LD | VT_BOOL | Load; loads PV into CV. |
| PV | VT_INT | Preset value. |
Output
| Name | Type | Meaning |
|---|---|---|
| QU | VT_BOOL | TRUE if CV >= PV. |
| QD | VT_BOOL | TRUE if CV <= 0. |
| CV | VT_INT | Current value. |
F_TRIG – Falling Edge Trigger
Falling edge trigger.
Input
| Name | Type | Meaning |
|---|---|---|
| CLK | VT_BOOL | Clock input; edge detection. |
Output
| Name | Type | Meaning |
|---|---|---|
| Q | VT_BOOL | TRUE for one cycle on detected edge. |
RS – Reset/Set Latch
Reset/Set latch (implemented with S priority).
Input
| Name | Type | Meaning |
|---|---|---|
| R | VT_BOOL | Reset. |
| S | VT_BOOL | Set (priority). |
Output
| Name | Type | Meaning |
|---|---|---|
| Q | VT_BOOL | Latch output. |
R_TRIG – Rising Edge Trigger
Rising edge trigger.
Input
| Name | Type | Meaning |
|---|---|---|
| CLK | VT_BOOL | Clock input; edge detection. |
Output
| Name | Type | Meaning |
|---|---|---|
| Q | VT_BOOL | TRUE for one cycle on detected edge. |
SR – Set/Reset Latch
Set/Reset latch (implemented with R priority).
Input
| Name | Type | Meaning |
|---|---|---|
| S | VT_BOOL | Set. |
| R | VT_BOOL | Reset (priority). |
Output
| Name | Type | Meaning |
|---|---|---|
| Q | VT_BOOL | Latch output. |
TOF – Off-delay Timer
Off-delay timer (Q stays TRUE for PT after IN becomes FALSE).
Input
| Name | Type | Meaning |
|---|---|---|
| IN | VT_BOOL | Enable/trigger input. |
| PT | VT_TIME | Preset time. |
Output
| Name | Type | Meaning |
|---|---|---|
| Q | VT_BOOL | Timer output. |
| ET | VT_TIME | Elapsed time. |
TON – On-delay Timer
On-delay timer (Q becomes TRUE after IN has been TRUE for PT).
Input
| Name | Type | Meaning |
|---|---|---|
| IN | VT_BOOL | Enable/trigger input. |
| PT | VT_TIME | Preset time. |
Output
| Name | Type | Meaning |
|---|---|---|
| Q | VT_BOOL | Timer output. |
| ET | VT_TIME | Elapsed time. |
TP – Pulse Timer
Pulse timer (Q becomes TRUE for PT on rising edge of IN).
Input
| Name | Type | Meaning |
|---|---|---|
| IN | VT_BOOL | Enable/trigger input. |
| PT | VT_TIME | Preset time. |
Output
| Name | Type | Meaning |
|---|---|---|
| Q | VT_BOOL | Timer output. |
| ET | VT_TIME | Elapsed time. |