Aller au contenu principal

Exemple 11 - Commande des DOUT du module MIO

Exemple 11a - Commuter toutes les sorties​

Tâche​

Les sorties numériques d'un module MIO doivent être activées ou désactivées en fonction d'une valeur limite.

Solution​

Code du module mathématique​

// 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;

Configuration du 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"
}

Fonctions utilisées​

Explication​

À l'aide de la fonction threshold, nous comparons le signal de mesure « CAN_Value » à la valeur limite définie précédemment. Si cette valeur limite est dépassée, nous écrivons le nombre 7 dans le canal de sortie « mio_set_do ». Si la valeur limite n'a pas été dépassée, nous écrivons un 0 dans le canal.
Le canal « mio_set_do » est ensuite envoyé au module MIO via le bus CAN à l'aide du module FMConsumer.

Le module MIO interprète le nombre contenu dans le message CAN d'après sa représentation binaire. Si, par exemple, le premier bit du nombre est positionné, la sortie 1 est activée ; il en va de même pour les deuxième et troisième bits et les sorties 2 et 3. On obtient ainsi la table de vérité suivante :

Nombre décimalSortie 1Sortie 2Sortie 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)

Exemple 11b - Commuter des sorties individuelles​

Tâche​

Commander les trois DOUT d'un module MIO à l'aide de trois valeurs limites.

Solution​

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;

Fonctions utilisées​

Explication​

À l'aide de la table de vérité décrite ci-dessus, nous voyons que les trois sorties sont activées respectivement avec une valeur de 1, 2 et 4. Si nous voulons maintenant activer par programme une combinaison des trois sorties, il suffit d'additionner ces trois nombres.
Pour déterminer quels nombres nous voulons ajouter à notre résultat, nous multiplions chaque nombre par son résultat de threshold associé. Si le résultat du threshold était « False », le nombre est multiplié par 0 et retiré de l'addition. Si le résultat du threshold était en revanche « True », le nombre est multiplié par 1 et reste donc dans l'addition.