MOD / MODR / MODLRPLCopen motion icon

FunctionClosed A function calculates a result according to the current value of its inputs. A function has no internal data and is not linked to declared instances. - Calculation of modulo.

The modulo is calculated as follows:

Q = IN – Trunc(IN/BASE) * BASE

where Trunc(x) calculates the truncated (rounded toward zero) value of x.


  • If BASE = 0, then Q will return 0.
    If IN = 0, then Q will return 0.

Inputs Function Description
MOD MODR MODLR
IN DINT REAL LREAL Input value
BASE DINT REAL LREAL Base of the modulo
Output Function Description Range
MOD MODR MODLR
Q DINT REAL LREAL Modulo result (-BASE, BASE)

Examples

Remarks

The MOD family of functions can return negative numbers. By adding BASE to the result, the modulo value may be forced to a positive number if the range is required to be [0, BASE). An example of how to accomplish this in ST code follows.

q := MOD(x, base);
IF q < 0 THEN
   q := q + base;
END_IF;

In FFLD language, the input rung (EN) enables the operation, and the output rung keeps the state of the input rung. In ILClosed "Instruction list" This is a low-level language and resembles assembly language, the first input must be loaded before the function call. The second input is the operand of the function.

ST Language

Q := MOD (IN, BASE);

FBD Language

ModFbd.gif (1274 octets)

FFLD Language

(* The comparison is executed only if EN is TRUE *)
(* ENO has the same value as EN *)
ModLd.gif (1523 octets)

IL Language

Op1: LDClosed "Ladder diagram" Ladder logic is a method of drawing electrical logic schematics. It is now a very popular graphical language for programming Programmable Logic Controllers (PLCs). It was originally invented to describe logic made from relays. The name is based on the observation that programs in this language resemble ladders, with two vertical "rails" and a series of horizontal "rungs" between them  IN
     MOD BASE
     ST  Q    (* Q is the rest of integer division: IN / BASE *)

See also

MIN   MAX   LIMIT   ODD