Dans le domaine de la conception de systèmes embarqués, la fiabilité et la robustesse des systèmes sont des critères primordiaux. La fiabilité désigne la probabilité qu'un système ou une composante fonctionne sans défaillance pendant un certain temps, tandis que la robustesse se réfère à la capacité d'un système à continuer de fonctionner en dépit de l'apparition d'erreurs ou de circonstances imprévues. Ces deux concepts sont interconnectés, car un système robuste est un système fiable qui peut également gérer des situations imprévues sans compromettre la sécurité ou les performances.

Prenons un exemple simple pour illustrer l'impact des déviations sur la fiabilité d'un système. Supposons qu'une déviation standard soit faible, par exemple 100. Dans ce cas, une très grande proportion des composants d'un système fonctionneraient correctement pendant 9900 heures ou plus. En revanche, si la déviation standard était plus importante, disons 2000, un nombre significatif de composants échouerait dès 8000 heures. Cette différence devient particulièrement critique lorsqu'on considère les conséquences d'une défaillance, comme le montre l'exemple des ponts et des avions. Tandis qu'un taux de défaillance de 1/10 sur 10 ans pourrait être acceptable pour un pont, il ne l'est pas pour un avion, où la sécurité est cruciale.

Les équipes de conception doivent toujours prendre en compte les conséquences d'une défaillance et les comparer avec les données de fiabilité et de durée de fonctionnement afin de prendre des décisions éclairées. Cela inclut le choix de la conception de base et la nécessité de rendre le système plus robuste. Un manque de robustesse pourrait entraîner des défaillances catastrophiques, mais une planification proactive pourrait permettre d'intégrer des solutions telles que l'ajustement des performances ou l'isolement de certaines fonctions.

La robustesse, bien qu'ayant une définition théorique plus floue, est un aspect essentiel dans la conception de systèmes complexes. Elle fait référence à la capacité d'un système à continuer à fonctionner malgré les erreurs ou les événements imprévus, ou à défaut, à échouer de manière contrôlée, sans causer de dommages importants. Dans le contexte des systèmes embarqués, ces erreurs peuvent être de diverses natures : des paramètres environnementaux inhabituels, un volume de demandes plus élevé que prévu, des entrées incorrectes ou des séquences d'entrées erronées provenant des utilisateurs, ou encore des pannes de composants. Les réponses possibles à ces erreurs peuvent inclure l'émission d'avertissements, la réduction de la vitesse de traitement des demandes, la mise en pause de certaines fonctionnalités moins cruciales, ou encore l'arrêt du système de manière à éviter des dommages graves.

Lors de la conception, il est crucial d'anticiper ces situations anormales, même si elles semblent improbables, afin d'intégrer les mécanismes nécessaires pour gérer ces scénarios. Par exemple, dans un pont équipé de moteurs pour faire varier la position de son tablier, il peut se produire des événements inattendus, comme un incendie près du pont qui augmente la température à l'intérieur du compartiment moteur au-delà de la limite de fonctionnement de celui-ci. L'équipe de conception pourrait alors proposer d'arrêter toutes les activités maritimes sur le pont ou de faire fonctionner le moteur à une vitesse réduite pour éviter toute surchauffe. De telles solutions sont des exemples de « dégradation gracieuse » de service, où la fonctionnalité du système est réduite, mais la sécurité est maintenue.

Un autre exemple concerne les comportements des utilisateurs, parfois imprévisibles ou incorrects. Imaginons des piétons qui franchissent les barrières de sécurité du pont alors que le tablier est en train de se soulever. Bien que cette situation soit rare, elle illustre l'importance de prévoir des réponses appropriées. Le système pourrait, par exemple, arrêter la montée du tablier ou le redescendre pour éviter des blessures. Une solution alternative pourrait être de diffuser un avertissement sonore aux piétons ou d'alerter les autorités locales. De telles solutions nécessitent l'ajout de fonctionnalités supplémentaires comme des haut-parleurs ou des caméras pour identifier les responsables et prendre des mesures légales si nécessaire.

La robustesse d'un système peut également être améliorée en prenant en compte la gestion des entrées incorrectes. Par exemple, si un capteur de distance détecte un bateau trop éloigné, le système pourrait ignorer la lecture erronée ou demander au capteur de renvoyer une valeur correcte. Cette approche permet de maintenir la fiabilité du système tout en signalant toute défaillance potentielle au niveau du capteur.

Lors de la phase de conception, une telle prise en compte des situations anormales peut mener à l'ajout de nouvelles fonctionnalités et exigences pour le système. Cela pourrait inclure des exigences pour détecter des anomalies, comme la mesure de la température dans le cas d'un moteur, ou encore l'ajout d'une interface permettant à l'opérateur de vérifier visuellement la présence de piétons et d'envoyer un signal d'alerte. Ces modifications et ajouts vont au-delà du modèle de base et augmentent la robustesse du système en répondant aux erreurs et en anticipant les défaillances.

Il est essentiel que l'équipe de conception considère la robustesse dès les premières étapes du développement d'un système. En intégrant la gestion des erreurs, la détection des anomalies et des réponses appropriées dans les premiers modèles, on évite de grandes difficultés à long terme. L'objectif n'est pas seulement de créer un système fiable, mais aussi un système capable de faire face à l'imprévu sans compromettre la sécurité, la performance ou l'intégrité du produit.

Comment garantir l'autonomie des systèmes embarqués grâce à la gestion de l'énergie et au stockage des batteries ?

Les systèmes embarqués, qu'ils soient utilisés dans des environnements domestiques, industriels ou extérieurs, ont des exigences strictes en matière d'alimentation. L'une des principales préoccupations réside dans la gestion de l'énergie et le choix des sources d'alimentation appropriées pour assurer un fonctionnement fiable et continu. Plusieurs scénarios doivent être pris en compte lors de la conception de ces systèmes, chacun présentant ses propres défis en termes de durée d'autonomie et de méthode de recharge.

Lorsque l'on parle de sources d'alimentation fiables, il est essentiel de déterminer les tensions et les courants requis par les systèmes embarqués. Les convertisseurs de puissance, tels que les convertisseurs DC-DC, sont souvent utilisés pour adapter l'alimentation électrique disponible aux besoins spécifiques de l'appareil. Dans des situations où l'appareil est destiné à être connecté à un autre appareil, comme les souris USB ou autres périphériques destinés à être utilisés avec un ordinateur, la source d'énergie fiable est généralement fournie par le port USB de l'ordinateur ou du portable. Ce type de connexion garantit un approvisionnement constant en énergie tant que l'appareil est raccordé à une source d'alimentation.

Dans un deuxième cas, certains systèmes sont conçus pour fonctionner indépendamment d'une alimentation constante, mais ils doivent pouvoir se recharger de manière régulière. Les téléphones mobiles et les moniteurs portables de patients en sont des exemples. Ces appareils fonctionnent sans connexion directe à une prise secteur, mais nécessitent un retour périodique à une station de recharge, comme un chargeur portable ou une prise USB. Le défi réside dans la durée de fonctionnement de l'appareil avant qu'une recharge ne soit nécessaire, ce qui nécessite une gestion soigneuse de la batterie et des circuits pour maximiser l'autonomie sans compromettre la fonctionnalité. Les banques d'alimentation portables, par exemple, permettent de recharger plusieurs fois un appareil mobile avant de nécessiter une nouvelle charge.

Pour les systèmes qui ne peuvent être amenés à une station de recharge, comme les nœuds de capteurs environnementaux utilisés pour la surveillance agricole ou forestière, il est crucial d'optimiser l'autonomie des batteries. Ces dispositifs doivent fonctionner pendant des périodes prolongées sans intervention humaine. Si une intervention est nécessaire, elle doit être réduite au minimum. Dans ces cas, la durée de vie de la batterie doit être suffisamment longue pour limiter les déplacements des techniciens, et des solutions comme la possibilité de remplacer facilement les batteries ou d'ajouter des sources d'énergie externes comme des générateurs peuvent être envisagées.

Dans certains systèmes, comme les capteurs de faune, l'accessibilité pour remplacer ou recharger les batteries est un défi majeur. Ces capteurs peuvent être attachés à des animaux, et il serait difficile de les retrouver pour effectuer des maintenances régulières. C'est pourquoi une planification minutieuse pour assurer le plus long temps de fonctionnement possible est essentielle. Dans ces cas, l'utilisation de processeurs en mode veille et la gestion intelligente de l'alimentation sont nécessaires pour prolonger la durée de vie des batteries. L'intégration de la récupération d'énergie, telle que l'énergie solaire ou le mouvement, peut également constituer une solution viable, même si ces sources sont intermittentes. L'énergie récupérée peut être stockée dans des batteries pour garantir que le système reste opérationnel jusqu'à ce qu'une recharge complète soit nécessaire.

L'un des aspects cruciaux à comprendre est que les batteries utilisées dans les systèmes embarqués peuvent être sensibles aux conditions environnementales. Des facteurs tels que la chaleur extrême, le froid ou l'humidité peuvent altérer les performances de la batterie. Il est donc important de tenir compte de ces conditions lors du choix de la batterie, en vérifiant les spécifications techniques fournies par le fabricant. Par ailleurs, pour les systèmes utilisés dans des environnements extrêmes, des tests en laboratoire doivent être effectués dans des conditions simulées qui reflètent au mieux les conditions réelles auxquelles l'appareil sera confronté. Si de tels tests ne sont pas possibles, des estimations basées sur les caractéristiques des composants du système peuvent être utilisées pour choisir une batterie adéquate.

En ce qui concerne la gestion de l'énergie dans les systèmes utilisant des sources d'énergie récupérée, l'un des principaux défis réside dans l'irrégularité de ces sources. L'énergie solaire, par exemple, dépend de l'ensoleillement et peut fluctuer en fonction de l'heure de la journée et des conditions météorologiques. De même, l'énergie éolienne ou la récupération d'énergie par le mouvement peuvent ne pas être disponibles de manière constante. Dans ces cas, il est crucial d'intégrer des systèmes de stockage d'énergie, tels que des batteries rechargeables, qui permettent de compenser l'intermittence de la source d'énergie. Lorsque la récupération d'énergie est insuffisante, des mécanismes doivent être mis en place pour garantir que le système puisse se mettre en veille ou fonctionner à faible consommation d'énergie jusqu'à ce que la capacité de la batterie soit rétablie.

Un autre aspect fondamental pour garantir le bon fonctionnement d'un système embarqué est la gestion du processus de recharge et de remplacement des batteries. Dans des situations où les batteries doivent être remplacées ou rechargées à distance, la conception du système doit permettre un remplacement rapide et facile sans perturber le fonctionnement global. Les solutions telles que les stations de recharge mobiles ou les générateurs à petite échelle peuvent offrir une alternative lorsque l'accès direct à l'alimentation est difficile.

Comment réduire l'ensemble des choix de solutions pour un système embarqué ?

Lorsqu'il s'agit de résoudre un problème de conception pour un système embarqué, la question n'est pas seulement de maximiser une caractéristique unique, comme c'est souvent le cas dans la Programmation Linéaire Entière (ILP), mais plutôt de prendre en compte un ensemble arbitraire de critères d'évaluation. Cette approche multi-critères permet d'étudier de manière plus complète les différentes options possibles.

Soit S={s1,,sm}S = \{s_1, \dots, s_m\} l'ensemble des solutions possibles à un problème de conception pour un système embarqué. Chaque solution dans SS est évaluée selon un ensemble de caractéristiques F={f1,,fn}F = \{f_1, \dots, f_n\}, que l'équipe de conception souhaite optimiser pour sélectionner la meilleure option. Ces caractéristiques peuvent inclure le coût, la consommation d'énergie, le temps de calcul total, la taille physique, les coûts de communication, et bien d'autres encore. Pour chaque solution ss dans SS, une fonction hh assigne un vecteur de valeurs dans un espace nn-dimensionnel déterminé par les critères FF. En d'autres termes, pour chaque ss dans SS, h(s)=(a1,,an)h(s) = (a_1, \dots, a_n), où aia_i est la valeur de l'attribut fif_i pour la solution ss.

L'objectif est de trouver une solution, ou un sous-ensemble de solutions, qui minimise chacune de ces caractéristiques. Si l'un des critères doit être maximisé, il peut être converti en un critère à minimiser en soustrayant la valeur du critère maximisé à une valeur de référence NN, plus grande que toutes les solutions réalisables. Par exemple, si l'on souhaite maximiser la distance DD à laquelle un bateau peut entendre un avertissement sonore, on pourrait plutôt minimiser MDM - D, où MM est une valeur supérieure à la distance maximale souhaitée.

Les concepts de domination et d'indifférence entre solutions sont cruciaux pour comprendre comment explorer cet espace de solutions. Si x=(x1,,xn)x = (x_1, \dots, x_n) et y=(y1,,yn)y = (y_1, \dots, y_n) sont deux points distincts dans cet espace nn-dimensionnel, on dit que xx domine yy si xiyix_i \leq y_i pour tous les ii, et xi<yix_i < y_i pour au moins un ii. Si ce n'est pas le cas, les deux points sont dits indifférents l'un à l'autre.

Dans un contexte bidimensionnel, comme illustré dans une figure représentant le coût sur l'axe horizontal et la consommation d'énergie sur l'axe vertical, cette relation de domination permet de diviser l'espace des solutions en quatre régions : celles dominées par un point donné, celles qui dominent ce point, et celles qui sont indifférentes. Par exemple, si un point xx correspond à une solution s1s_1, et qu'une autre solution s2s_2 correspond à un point yy, si s1s_1 est mieux dans tous les critères (moins coûteux et moins énergivore), alors s2s_2 est éliminée de l'examen.

De même, si deux solutions s1s_1 et s3s_3 ne sont pas directement dominantes l'une sur l'autre, mais sont indifférentes par rapport à leurs compromis, elles nécessitent une analyse plus poussée avant de faire un choix définitif. Ainsi, l'analyse de Pareto devient essentielle, car elle permet de réduire l'ensemble des solutions potentielles à un sous-ensemble pertinent, celui qui ne peut pas être dominé par d'autres solutions dans l'espace des critères.

Les solutions qui ne sont pas sur le "front de Pareto" peuvent être éliminées car elles sont dominées par d'autres points. Un "front de Pareto" représente un ensemble de points qui ne sont dominés par aucune autre solution et constitue un sous-ensemble optimal des solutions possibles. En se concentrant sur ce front, l'équipe de conception peut restreindre l'espace de solutions à un ensemble suffisamment petit pour procéder à une sélection manuelle ou à un choix fondé sur d'autres critères qualitatifs, comme les préférences des utilisateurs, les études ethnographiques, la familiarité avec les composants, ou des critères non quantitatifs.

L'utilisation de méthodes comme l'ILP ou l'analyse de Pareto est cruciale dans la conception des systèmes embarqués, car elles permettent de réduire l'espace de recherche de manière systématique tout en intégrant une diversité de critères. Cependant, une fois l'espace de solutions réduit, l'intervention humaine reste nécessaire pour effectuer le choix final, prenant en compte des éléments plus subjectifs ou spécifiques au projet en question.

Enfin, une équipe de conception pourrait décider de réévaluer les critères quantitatifs non pris en compte initialement ou d'inclure des critères supplémentaires. Cela pourrait inclure des caractéristiques humaines, comme la convivialité ou la facilité d'implémentation, qui ne peuvent être simplement réduites à des équations mathématiques. Ces considérations permettent de transformer des solutions purement techniques en choix réellement adaptés au contexte humain et au besoin spécifique du projet.