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 decimal | Salida 1 | Salida 2 | Salida 3 |
|---|---|---|---|
| 0 | Off (0) | Off (0) | Off (0) |
| 1 | On (1) | Off (0) | Off (0) |
| 2 | Off (0) | On (1) | Off (0) |
| 3 | On (1) | On (1) | Off (0) |
| 4 | Off (0) | Off (0) | On (1) |
| 5 | On (1) | Off (0) | On (1) |
| 6 | Off (0) | On (1) | On (1) |
| 7 | On (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.