Saltar al contenido principal

Ejemplo 11 - Controlar las DOUT del módulo MIO

Ejemplo 11a - Conmutar todas las salidas​

Tarea​

Las salidas digitales de un módulo MIO deben activarse o desactivarse en función de un valor límite.

Solución​

Código del módulo matemático​

// 0 = kein DO aktiv,
// 1 = DO1 aktiv,
// 2 = DO2 aktiv,
// 3 = DO1 und D02 aktiv,
// 4 = DO3 aktiv,
// 5 = DO1 und DO3 aktiv,
// 6 = DO2 und DO3 aktiv,
// 7 = Alle DOs aktiv,

Grenzwert = 80.0;
$"Math.Trigger_Thresh" = threshold($'CAN_Value', Grenzwert, -0.1, {delayOn: 0.5});

mio_set_do = $"Math.Trigger_Thresh" ? 7 : 0;

Configuración de Fmconsumer​

{
"config": {
"fmd": "canbus1",
"messages": [
{
"channels": [
{
"bitLength": 16,
"bitOffset": 0,
"name": "mio_set_do"
}
],
"defaultMessage": "0000000000000000",
"messageKey": 83,
"sendIntervalMs": 1000,
"sendMode": "OnTimer"
}
]
},
"module": "fmconsumer_mio",
"factory": "fmconsumer"
}

Funciones utilizadas​

Explicación​

Con ayuda de la función Threshold comparamos la señal de medición "CAN_Value" con el valor límite definido previamente. Si se supera este valor límite, escribimos el número 7 en el canal de salida "mio_set_do". Si no se ha superado el valor límite, escribimos un 0 en el canal.
El canal "mio_set_do" se envía después al módulo MIO por el bus CAN con ayuda del módulo FMConsumer.

El módulo MIO interpreta el número del mensaje CAN según su representación binaria. Si, por ejemplo, está activado el primer bit del número, se activa la salida 1; lo mismo ocurre con el segundo y el tercer bit y las salidas 2 y 3. De ahí resulta la siguiente tabla de verdad:

Número decimalSalida 1Salida 2Salida 3
0Off (0)Off (0)Off (0)
1On (1)Off (0)Off (0)
2Off (0)On (1)Off (0)
3On (1)On (1)Off (0)
4Off (0)Off (0)On (1)
5On (1)Off (0)On (1)
6Off (0)On (1)On (1)
7On (1)On (1)On (1)

Ejemplo 11b - Conmutar salidas individuales​

Tarea​

Controlar las tres DOUT de un módulo MIO a partir de tres valores límite.

Solución​

Grenzwert1 = 80.0;
Grenzwert2 = 51.5;
Grenzwert3 = 42.42;

Thresh1 = threshold($'CAN_Value1', Grenzwert1, -0.1, {delayOn: 0.5});
Thresh2 = threshold($'CAN_Value2', Grenzwert2, -0.1, {delayOn: 0.5});
Thresh3 = threshold($'CAN_Value3', Grenzwert3, -0.1, {delayOn: 0.5});

mio_set_do = 1 * Thresh1 + 2 * Thresh2 + 4 * Thresh3;

Funciones utilizadas​

Explicación​

Con ayuda de la tabla de verdad descrita arriba podemos ver que las tres salidas se activan respectivamente con un valor de 1, 2 y 4. Si ahora queremos activar por programa una combinación de las tres salidas, basta con sumar entre sí estos tres números.
Para determinar qué números queremos añadir a nuestro resultado, multiplicamos cada número por su resultado de Threshold correspondiente. Si el resultado del Threshold era "False", el número se multiplica por 0 y desaparece de la suma. Si, en cambio, el resultado del Threshold era "True", el número se multiplica por 1 y, por tanto, permanece en la suma.