Développement d'un «générateur de tension simple» selon GOST R IEC 61508 (IEC 61508)

image

Cet article décrit les étapes nécessaires pour créer un périphérique qui répond aux exigences générales de sécurité fonctionnelle (FB). L'architecture du générateur de tension de «sécurité» le plus simple sera également proposée. Depuis le contrôle de la tension, vous pouvez contrôler presque n'importe quel appareil.
Le site contient de merveilleux articles ( un , deux ) sur ce sujet et un livre sur lequel j'ai grandi en tant qu'ingénieur sur FB.
Une série de normes GOST R CEI 61508 (CEI 61508) est la base des normes russes qui déterminent l'ordre de développement des appareils pour lesquels les exigences du FB sont imposées. Comme vous le savez, lors du développement de dispositifs liés au FB, il existe des normes de l'industrie qui régissent la procédure de développement (pour les chemins de fer, ce sont GOST R 52980-2015 "Software Requirements", GOST R 34012-2016 "General requirements for rail equipment", etc. e).
Selon les normes GOST R IEC 61508 et IEC 61508, les pannes sont divisées en 2 types: systématiques et aléatoires.

Les défaillances systématiques sont déterminées par des erreurs dans les spécifications, la conception, le codage des logiciels, la protection contre celles-ci est construite au moyen de l'organisation du cycle de vie, notamment: la vérification de la conformité à toutes les étapes du cycle de vie avec les exigences et la validation (tests de validation) du produit final.

Les défaillances aléatoires sont calculées comme la probabilité de défaillance matérielle, la protection contre celles-ci est généralement déterminée par des décisions architecturales.

Selon les normes, toutes les méthodes peuvent être divisées en deux groupes: organisationnelles et techniques. Les méthodes organisationnelles comprennent: la mise en œuvre du cycle de vie, l'application des normes de codage, la surveillance de la production de matériel. Les méthodes techniques comprennent: le sabotage (de la diversité anglaise - diversité), la redondance, la protection contre les influences environnementales, l'indépendance et la séparation des composants, l'autodiagnostic (chacune de ces méthodes doit être décrite dans des articles séparés).

Les principales méthodes organisationnelles de protection contre les erreurs systématiques sont décrites dans les annexes de GOST R CEI 61508. A titre d'exemple, nous considérons la composante systématique du logiciel. Lors de l'écriture de code, une grande attention doit être accordée aux règles et normes de codage utilisées dans le codage. MISRA-C est l'une des normes bien connues pour la programmation en langage SI; son utilisation améliore la sécurité du système. De plus, il existe des analyseurs statiques (il est généralement utile pour les analyseurs de vérifier tout code pour les erreurs) qui peuvent vérifier la conformité avec la norme MISRA-C, l'un d'eux est PVS-Studio .

Le détournement partiel de logiciels peut être obtenu grâce à l'utilisation de divers algorithmes de développement de logiciels. Un système complet de diversification des logiciels n'est atteint que lorsqu'il existe deux spécifications différentes des exigences logicielles, différentes équipes de programmeurs, différents moyens de programmation des appareils en production, c'est-à-dire ces programmes doivent être complètement différents et le processus de programmation des appareils doit également être différent. De plus, lors du développement d'outils logiciels, il est nécessaire de se protéger contre les erreurs d'outils. Le logiciel le plus critique en termes d'outils est le compilateur en conjonction avec la bibliothèque standard et l'éditeur de liens. Une variété d'outils peut être obtenue en utilisant les compilateurs ARMCC et GCC. Cependant, certaines versions d'ARMCC ont la certification TUV pour la conformité SIL-3 selon CEI 61508, et GCC est utilisé avec succès dans le développement du logiciel Falcon 9 .

Considérez les résultats de la compilation de la commande "Write to Port":
Commande en langage SI (ISO / IEC 9899): MDR_PORTE-> CLRTX = 0x0040
GCC"ARMCC"
LDR r3, [pc, # 20]MOVS r0, # 0x40
MOVS r2, # 64; 0x40LDR r1, [pc, # 16]; @ 0x0000072C
STR r2, [r3, # 36]STR r0, [r1, # 0x24]

Même par l'exemple d'une commande aussi simple (comme le montre le tableau), la séquence de commandes du microcontrôleur est différente et différents registres de travail sont utilisés. Ce qui, sous une forme ou une autre, nous confère une «diversité», réduisant ainsi la probabilité d'erreurs dues à la cause commune de la panne des outils.

Considérez les méthodes de protection contre les erreurs accidentelles sur l'exemple d'un appareil contrôlant un relais électromagnétique, illustré dans la figure. Afin de déterminer les méthodes de protection, il est nécessaire d'identifier les défaillances dangereuses des équipements. Comme vous le savez, le relais est contrôlé en fournissant une tension à son enroulement, dans ce cas, une défaillance dangereuse pour cet appareil sera l'occurrence non autorisée de tension suffisante pour que le relais fonctionne. Ce périphérique est basé sur l'architecture 2 sur 2. Dans cette architecture, MCU_A et MCU_B doivent recevoir des commandes sur des réseaux physiquement séparés.

image
Figure - Diagramme de couplage sécurisé

Dans le cadre de cet article, nous ne décrirons pas entièrement l'arbre de défaillance, par conséquent, nous considérons l'une des chaînes d'événements les plus probables conduisant à une défaillance dangereuse:

  1. L'optocoupleur U1 perce
  2. La clé K2 perce
  3. Transformateur perce

L'intensité du début des événements de ce type est déterminée par la formule image . Étant donné que les trois échecs sont liés, l'intensité de cette chaîne sera déterminée par la formule image . Dans des hypothèses approximatives, le taux de défaillance de cette chaîne est inférieur à (10e-15) 1 / h, en supposant que les défaillances peuvent s'accumuler en 24 heures.

Prenons un autre échec: l'échec de MCU_A et MCU_B afin qu'ils génèrent «de façon aléatoire» une séquence d'impulsions à la sortie.

«Aléatoire» signifie l'exécution d'au moins neuf commandes par le microcontrôleur (trois entrées sur le port), tandis que la tension de sortie sera détectée par deux microcontrôleurs et une erreur sera générée entre les commandes reçues et «émises». L'intensité de ces événements est extrêmement faible puisque: deux MKs devront exécuter 9 commandes simultanément (sans compter que les MKs devront écrire des valeurs opposées aux ports, à certains intervalles afin de générer la tension nécessaire au relais pour fonctionner en sortie).

En conclusion, il convient de noter qu'en tant que méthodes pour augmenter la sécurité fonctionnelle, il est recommandé d'appliquer:

  1. diversification des logiciels et du matériel;
  2. autodiagnostic de toutes les ressources du microcontrôleur (RAM, ROM, ALU, registres de travail, etc.), ainsi que des nœuds de périphérique;
  3. réduction des paramètres des éléments du circuit par rapport aux valeurs limites (déclassement), pour assurer de meilleures caractéristiques opérationnelles et réduire la probabilité de pannes.

Toutes ces méthodes peuvent être utilisées dans le développement d'appareils répondant aux exigences du FB.

P.S. Dans l'exemple considéré, pour réduire la probabilité de pannes dues à une raison commune, l'un des microcontrôleurs peut être remplacé par FPGA.

Merci à tous pour votre attention (c'est mon premier article)!

Source: https://habr.com/ru/post/fr481594/


All Articles