Skip to main content
Skip table of contents

Math Blocks

Math blocks are the most powerful Arbitrary Math and Logic Block available. The math block runs a language processor that can evaluate many C language operators and functions. The expression has a 40 character limit.

  • Math AND Logic expressions may be combined.

  • Many special functions are available. See the Math Block Expression Syntax guide below.

Math Block Configuration

Expression

A Math Block Expression Syntax. The value of parameters below may be referenced via the variables a, b, c and d

Status

Indicates the result of the Expression. For math expressions, the Status is a number. For logical expressions, the Status is reduced to the values 0, or 1.

Error

When the Error is not 0, the Expression has resulted in an error or cannot be computed. This happens most often when the expression is invalid.

Parameter A

the selected parameter value is stored in variable a

Parameter B

the selected parameter value is stored in variable b

Parameter C

the selected parameter value is stored in variable c

Parameter D

the selected parameter value is stored in variable d

Math Expression Viewer

Math and Logic Expressions can be viewed in a graphic form by clicking to the left of the expression input.

Each block represents a component of the expression and allows a visual overview of any expression

Math and Logic Expression viewer

Math Block Expression Syntax

All Math and Logic blocks support the following functions set.

  • Parameters a, b, c and d reflect the current value of any ECU runtime value.

  • The equation is calculated at a rate of 1kHz.

  • The equation may contain any combination of math functions, up to 20 characters.

  • Parameters are sampled at the time of calculation.

In the tables below:

  • param/param1/param2 may be set to any of parameters a, b, c or d.

  • param/param1/param2 may be set to any number value.

Logic Operators

Function

Syntax

Example

Description

! (not)

!param

!1 = 0

!100.1 = 0

!0 = 1

!a results in 0 if a is not zero, and 1 if a is zero.

& (and)

param1&param2

5&9 = 1

5&0 = 0

a&b results in 0 if either a or b is zero, otherwise 1.

 

| (or)

param1|param2

5|9 = 1

5|0 = 1

a|b results in 1 if either a or b is 1, otherwise 0.

^ (xor)

param1^param2

5^9 = 0

5^0 = 1

0^1 = 1

0^0 = 0

a^b results in 1 if one of a or b is non zero, otherwise 0 if a and b are both 0 or both non zero.

= (equal)

== (equal)

param1=param2 or

param1==param2

 

a=b results in 1 if a and b are equal

a==b is equivalent to a=b

!= (not equal)

param1!=param2

 

a!=b results in 1 if a and b are NOT equal

> (greater than)

param1>param2

5>9 = 0

5>0 = 1

a>b results in 1 if a is greater than b, otherwise 0.

 

< (less than)

param1<param2

5<9 = 1

5<0 = 0

a<b results in 1 if a is less than b, otherwise 0.

>= (greater than or equal)

param1>=param1

5>=5 = 1

5>=0 = 1

5>=6 = 0

a>=b results in 1 if a is greater than or equal b, otherwise 0.

 

<= (less than or equal)

param1<=param2

5<=5 = 1

5<=0 = 0

5<=6 = 1

a<=b results in 1 if a is less than or equal to b, otherwise 0.

Math Operators

Function

Syntax

Example

Description

  • (multiply)

param1*param2

5*9 = 45

a*b results in the multiplication of parameters a and b.

/ (divide)

param1/param2

5/9 = 0.556

a/b results in parameter a divided by parameter b.

 

% (modulus)

param1%param2

4%5 = 4

5%5 = 0

6%5 = 1

a%b results in the modulus of parameters a and b. Modulus computes the remainder of a divided by b.

  • Modulus is used to make a value count up, wrap around and start again.

if parameter a is counting up continuously, 0,1,2,3,4,5,6,7,8,9 ...

then a%4 results in 0,1,2,3,0,1,2,3,0,1,2,3 ...

the example (int(t)%4)+1 results in  1,2,3,4,1,2,3,4,1,2,3,4... on a count of 1 per second

 

+ (add)

param1+param2

5+9 = 14

a+b results in the addition of parameters a and b.

  • (subtract)

param1-param2

5-9 = -4

a-b results in the subtraction of parameters a and b.

() (braces)

param1*(param2+param3)

10*(287+1000) = 12870

10*287+1000 = 3870

Controls the order of precedence in calculations.

Special Functions

Function

Syntax

Example

Description

if

if(param, then, else)

if(a>4, b, b*5)

= b if a>4

=b*5 otherwise

returns the "then" value if the "param" value is true, otherwise results in the "else" value.

Any number of if() statements can be added to an expression.

peak

pk(param, timeout)

pk(a, 1.0)

Holds the peak value of parameter a. if the value of parameter a.

does not change within the timeout (in seconds) the peak is set to the current value of a. If the timeout is 0, the peak is held indefinitely.

  • Only one 'pk' function may be used per equation.

delta

dt(param, time)

dt(a, 1.0)

Holds the delta value of parameter a, taken over the time specified (in seconds).

  • Only one 'dt' function may be used per Math Channel.

average

av(param, time)

av(a, 1.0)

Holds the average value of parameter a, taken for 20 evenly spaced samples over the time specified (in seconds).

  • Only one 'av' function may be used per Math Channel.

time

t

 

Holds the value of time in seconds since PDM startup.

Counter

cnt(param)

cnt(a)

Tree running time counter. Starts counting up, once per 10 milliseconds, as long as parameter a is not 0. When parameter a is 0, the counter is reset to 0.

  • Only one 'cnt' function may be used per Math Channel.

edge

ed(param1, param2)

ed(a, b)

Edge counter. Counts rising edges on parameter a, as it passes from less than 1 to greater than or equal to 1. When parameter b is 0, the counter is reset to 0.

  • Only one 'ed' function may be used per Math Channel.

Numeric Functions

Function

Syntax

Example

Description

integer

int(param)

int(1.1) = 1

int(t) = time in seconds (without decimal)

removes the decimal places from parameter, resulting in an integer.

bool

bool(param)

bool(2.5) = 1

bool(0) = 0

Forces any number or result value that is not 0, to 1. otherwise returns 0.

min

min(param1, param2)

min(a, b)

results in the value of a or b, whichever is smallest.

max

max(param1, param2)

max(a, b)

results in the value of a or b, whichever is largest.

compare

cmp(param1, param2)

cmp(a, b)

results in:  -1 if a < b, 1 if a > b, 0 if a = b

round

round(param, decimals)

round(1.01258, 2) = 1.01

results in the value of the parameter, rounded to the number of decimals specified.

Absolute value

abs(param)

abs(-25.6) = 25.6

abs(25.6) = 25.6

abs(a) results in a positive number no matter if a is positive or negative.

ceiling

ceil(param)

ceil(-25.6) = -25

ceil(25.6) = 26

ceil(a) results in the smallest integer that is greater than or equal to a (i.e : rounds up to the nearest integer).

floor

floor(param)

floor(-25.6) = -26

floor(25.6) = 25

floor(a) results in the smallest integer that is smaller than or equal to a (i.e : rounds down to the nearest integer).

exponential

exp(param)

exp(6) = 403.428

exp(a) results in the value of e (Euler's number), to the power of a.

logarithm, natural

ln(param)

ln(2) = 0.693

ln(a) results in the natural log of a.

logarithm, base 10

log(param)

log(2) = 0.301

log(a) results in the log base 10 of a.

power

pow(param1, param2)

pow(6, 2) = 36

pow(a, 2) results in a to the power of 2.

square root

sqrt(param)

sqrt(25) = 5

sqrt(a) results in the square root of a.

cosine

cos(param)

cos(pi) = -1

cos(a) results in the trigonometric cosine of a.

sine

sin(param)

sin(pi) = 0

sin(a) results in the trigonometric sine of a.

tangent

tan(param)

tan(pi) = 0

tan(a) results in the trigonometric tangent of a.

power

pow(a, b)

pow(a, 2)

pow(a, 2) results in the value of parameter a being raised to the power of 2. If a=4, the result would be 16.

constant, e

e

e = 2.71828

Euler's number, a special constant

constant, pi

pi

pi = 3.14159

Pi, a special constant.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.