Le projet TCMS_Project vise à concevoir le firmware embarqué d'un système de contrôle et de gestion ferroviaire sur microcontrôleur STM32, assurant en temps réel la supervision de la traction, du freinage d'urgence et de la télémétrie. Conçu en C/C++ bare-metal et FreeRTOS, il respecte des normes de sûreté pour la gestion des sous-systèmes critiques. Ce dépôt contient le code source et les configurations d'émulation pour la simulation Wokwi.
Le TCMS (Train Control & Management System) est l'unité centrale de contrôle embarquée responsable de la supervision, du pilotage de la sécurité et de la télémétrie d'une rame ferroviaire. Ce système critique gère l'intégration temps réel des sous-systèmes de traction, de freinage d'urgence, de surveillance de tension caténaire et de communication intra-rame.
Ce firmware est conçu selon les principes de sûreté de fonctionnement de la norme EN 50128 (SIL 2/3).
Le logiciel TCMS s'articule autour des briques fonctionnelles suivantes :
- VCU (Vehicle Control Unit) : Machine à états globale de la rame et boucle de contrôle.
- Safety & Emergency Brake (EXTI) : Traitement prioritaire et matériel de l'Arrêt d'Urgence.
- Traction & Speed Control (PWM / Encoder) : Modulation de la consigne de vitesse et mesure tachymétrique.
- Power Line Acquisition (ADC / DMA) : Monitoring continu et sous interruption de la tension caténaire.
- Telemetry & TCN Gateway (UART / CAN) : Envoi de la télémétrie et encodage des trames de diagnostic.
- Fail-Safe & Watchdog (IWDG) : Gestion des modes dégradés et réarmement périodique du chien de garde.
- Cible Matérielle : Microcontrôleur STM32 (ARM Cortex-M0+, carte ST Nucleo-L031K6).
- Environnement IDE : VS Code + extension PlatformIO.
- Émulation Virtuelle : Wokwi Simulator (
diagram.json). - Langages : C Bare-Metal (manipulation directe des registres CMSIS) & C++ / FreeRTOS (multitâche).
Pour compiler le binaire en appliquant les options de contrôle strictes (-Wall -Wextra -Werror) :
pio run