MOD

Instrucciones  �ndex 

Devuelve el resto de una división (acumulador / argumento)

Con un argumento

    MOD arg

El argumento puede ser una variable analógica o una constante.

Con dos argumentos

Devuelve el resto (parte no divisible) de la divisi�n de las variables arg1 y arg2, y el resultado queda en el acumulador aritm�tico AAcc. Con reales devuelve la parte decimal. Ambos argumentos deben ser del mismo tipo (entero, largo o real). La ejecuci�n es condicional. Disponible a partir del CP121 BIOS 2.60 hasta 2.64, CP122 BIOS 2.10 hasta 2.13, CP123 BIOS 2.20 hasta 2.23, IP1300 BIOS 1.00, IP1301 BIOS 1.00

  

 MOD arg1, arg2

  

Ejemplo:

   LD 1            ;Permiso de ejecuci�n
   MOD sng0, sng1  ;AAccR = parte decimal de la divisi�n sng0 / sng1
   MOD AAccR, sng2 ;AAccR = parte decimal de la divisi�n AAccR / sng2

  

   LD 1            ;Permiso de ejecuci�n
   MOD arg0, arg1  ;AAcc = ressto de la divisi�n arg0 / arg1
   MOD AAcc, arg2  ;AAcc = ressto de la divisi�n AAcc / arg2

  

 Es necesario comprobar los resultados de cada operaci�n para tener certeza de que no se superen los l�mites de los tipos de datos, pues esto resultar�a en valores err�neos. Supongamos un caso de tres variables con un valor de 30000:

   LD 1               ;Permiso de ejecuci�n

   MUL arg1, arg2     ;AAcc = 900000000, que es menor que 2147483648 (231)

   MUL AAcc, arg3     ;AAcc deber�a tener 2.7 x 1013, pero tiene cualquier

                       ;otro a causa del desbordamiento

Con tres argumentos

A partir del CP121 2.70, CP122 2.20, CP123 2.30, CP125 1.10, varias instrucciones de dos argumentos son reemplazadas por tres argumentos. El comportamiento de cada uno resulta en la siguiente forma:

MOD arg1, arg2, arg3              equivale a                arg1 = arg2 % arg3

El primer argumento (arg1) debe ser de 32bit mientras que el resto (arg2 y arg3) pueden combinarse 16bit, 32bit y constantes. Solo para el tipo real todos deben ser del mismo tipo. Ver tipo de dato.

La ejecuci�n es condicional.

Para CP220, CP127, CP128

Tiene mas combinaciones posibles. La regla es que el resultado (arg1) es de un tipo igual o mayor al mayor de los argumentos (arg2 y arg3). Ejemplo: si se suma un real con un entero, el resultado ser� en real. Las variantes son:

 arg1    arg2     arg3

int16 = int16  % int16
int16 = cte16  % int16
int16 = int16  % cte16
int32 = int16  % int16
int32 = cte16  % int16
int32 = int16  % int32
int32 = int32  % int32
int32 = int32  % int16
int32 = int16  % cte16
int32 = int16  % cte32
int32 = cte32  % int16
int32 = cte32  % int32
int32 = int32  % cte32
real = real   % real
real = real   % int16
real = int16  % real
real = real   % int32
real = int32  % real
real = real   % cte16
real = cte16  % real
real = real   % cte32
real = cte32  % real
real = real   % cteReal
real = cteReal % real

En Ladder el orden cambia, ya que el arg1 = arg2 + arg3 se representa como:

  arg2

arg3

  arg1

quedando el arg1 al final en vez de al principio. Esto ocurre con ADD, DIV, FAVG, FIFO, FILL, MOD, MUL, SCALE, STDVT y SUB.