Capet externe bac + 3 section sciences industrielles de l'ingénieur option ingénierie informatique - Sujet de la seconde épreuve écrite de la session 2026
Section : SCIENCES INDUSTRIELLES DE L'INGÉNIEUR Option : INGÉNIERIE INFORMATIQUE
ADMISSIBILITÉ : ÉPREUVE 2
L'épreuve consiste en une résolution de problème.
L'épreuve vise à apprécier la capacité du candidat, à partir de l'exploitation de ressources et documents techniques, à résoudre un problème technique posé et à établir des éléments de conception préliminaire.
Durée : 4 heures
Calculatrice autorisée selon les modalités de la circulaire du 17 juin 2021 publiée au BOEN du 29 juillet 2021.
L'usage de tout ouvrage de référence, de tout dictionnaire et de tout autre matériel électronique est rigoureusement interdit.
Il appartient au candidat de vérifier qu'il a reçu un sujet complet et correspondant à l'épreuve à laquelle il se présente.
Si vous repérez ce qui vous semble être une erreur d'énoncé, vous devez le signaler très lisiblement sur votre copie, en proposer la correction et poursuivre l'épreuve en conséquence. De même, si cela vous conduit à formuler une ou plusieurs hypothèses, vous devez la (ou les) mentionner explicitement.
NB : Conformément au principe d'anonymat, votre copie ne doit comporter aucun signe distinctif, tel que nom, signature, origine, etc. Si le travail qui vous est demandé consiste notamment en la rédaction d'un projet ou d'une note, vous devrez impérativement vous abstenir de la signer ou de l'identifier.
Le fait de rendre une copie blanche est éliminatoire.
INFORMATION AUX CANDIDATS
Vous trouverez ci-après les codes nécessaires vous permettant de compléter les rubriques figurant en en-tête de votre copie. Ces codes doivent être reportés sur chacune des copies que vous remettrez.
-Concours externe du CAPET de l'enseignement public :
Définition de l'épreuve
L'épreuve consiste en une résolution de problème.
L'épreuve vise à apprécier la capacité du candidat, à partir de l'exploitation de ressources et documents techniques, à résoudre un problème technique posé et à établir des éléments de conception préliminaire.
L'épreuve est constituée de deux études indépendantes, elles sont à traiter obligatoirement.
Conseils aux candidats
Il est demandé aux candidats :
-de rédiger les réponses aux différentes études sur des feuilles de copie séparées et clairement repérées ;
-de numéroter chaque feuille de copie et indiquer le numéro de la question traitée ;
-de rendre tous les documents réponses, même non complétés ;
-d'utiliser exclusivement les notations indiquées dans le sujet lors de la rédaction des réponses ;
-de justifier clairement les réponses ;
-d'encadrer ou souligner les résultats ;
-de présenter lisiblement les applications numériques, sans omettre les unités, après avoir explicité les expressions littérales des calculs ;
-de formuler les hypothèses nécessaires à la résolution des problèmes posés si celles-ci ne sont pas indiquées dans le sujet.
Sommaire
Page
Sommaire 1
Présentation du support 2
ÉTUDE A (à traiter obligatoirement) 4
ÉTUDE B (à traiter obligatoirement) 7
DOCUMENTS TECHNIQUES DE L'ÉTUDE A 9
DOCUMENTS TECHNIQUES DE L'ÉTUDE B 17
Les études A et B sont à traiter obligatoirement par tous les candidats.
Présentation du support
Système de supervision de microgrid
Afin de tendre vers la neutralité carbone, on observe la multiplication d'installations de production d'énergie électrique, notamment solaire et le développement des dispositifs de stockage. Cela entraîne la création de microgrids, ou micro-réseaux, qui sont des réseaux électriques de petite taille, conçus pour fournir un approvisionnement électrique fiable à un petit nombre de consommateurs.
Ils agrègent de multiples installations de production locales et diffuses (panneaux photovoltaïques, mini-éoliennes, petite hydraulique...), des installations de consommation, des installations de stockage et des outils de supervision et de gestion de la demande.
Figure 1 : L'architecture d'un microgrid (Source : CRE)
Dans le cadre de ce sujet, l'étude porte sur la supervision d'un microgrid installé dans une entreprise qui a pour objectif de rendre l'entreprise quasiment autonome en électricité.
D'un point de vue puissance, le microgrid étudié est constitué :
-de 230 m^2 de panneaux voltaïques sur les toits de la société pour une puissance crête de 40 kW crête.
-de 8 bornes de recharge de véhicules électriques gérées par un système de gestion de recharge EVLink LMS de Schneider.
-de batteries de stockage d'une capacité de 40 kW.h, permettant de stocker l'énergie électrique lorsque la production photovoltaïque est excédentaire.
Afin de contrôler les flux de puissances et s'assurer du bon fonctionnement des installations, la société Naiobee a mis en place un système de supervision du microgrid, articulé autour d'un composant central : la Naiobox.
La Naiobox regroupe essentiellement :
-une application SCADA (système de contrôle et d'acquisition de données en temps réel) ;
-un programme de gestion centrale avec Node-RED (outil de développement low code) ;
-une base de données.
En plus de collecter les puissances des différentes installations, la Naiobox doit surveiller les conditions environnementales du local batteries afin de s'assurer que les batteries ne subissent pas de dysfonctionnement.
Pour cela, un module IOT M5Stack, basé sur le microcontrôleur d'architecture ESP32, récupère les mesures de température, humidité et présence de gaz (COVT et H_2 ) dans le local de batteries afin de déclencher une alerte et d'activer la ventilation forcée en cas d'anomalie. Les données récoltées par le M5Stack sont également envoyées à la Naiobox par protocole MQTT afin d'être ensuite stockées dans une base de données.
Le synoptique simplifié de l'installation est donné à la figure 2 .
Figure 2 : Architecture simplifiée du Microgrid étudié
Contrôle du taux d'humidité du local batteries
Afin de prolonger la durée de vie des batteries, il est préconisé de contrôler la température et le taux d'humidité du local dans lequel sont stockées les batteries. Pour s'en assurer, une sonde relève la température et l'humidité toutes les 30 secondes et une ventilation forcée est activée lorsque la température dépasse 30°C ou que le taux d'humidité atteint 70 %.
Objectif : Gérer les erreurs de mesure du taux d'humidité dans le local batteries.
La sonde utilisée est basée sur un capteur SHT 45 de Sensirion dont un extrait de documentation technique est donné en DTA1. Les informations du capteur sont gérées par la carte à microcontrôleur M5Stack.
Communication I2C entre M5Stack et SHT 45
Ce capteur communique ses informations avec le module M5Stack via une liaison I2C. Le fonctionnement de cette liaison et les données transmises lors des communications sont décrits dans le document technique DTA1.
Grâce à un analyseur logique, on a relevé en DTA2 une trame de réponse, renvoyée par le capteur suite à une commande de mesure à haute précision.
Question A1 Donner les bits correspondant aux données de température et ceux correspondant au CRC associé.
Question A2 En déduire la valeur décimale brute correspondant aux bits de données de température puis calculer la température en °C mesurée par le capteur.
Mise en œuvre logicielle du capteur
D'un point de vue logiciel, le capteur est géré par une classe nommée SHT4x. On donne en DTA3 le fichier d'en tête SHT4x.h où est déclarée la classe SHT4x. Les acquisitions des valeurs de taux d'humidité et de température dans le local batteries se font directement par appel de la méthode read dont le code est donné en DRA1. Les valeurs de température et taux d'humidité sont stockées respectivement dans les variables globales temperature et humidity .
Dans la méthode read, on utilise un objet nommé Wire , instance de la classe twoWire, qui gère la communication 12C. En DTA4, on fournit un extrait de diagramme de classe correspondant uniquement aux classes SHT4x et twoWire.
Question A3 En DRA1, donner en ligne 3, l'instruction qui démarre la transmission I2C avec le capteur SHT45 à partir de l'objet Wire.
Dans la méthode read, on récupère les 6 octets de la trame I2C de réponse, puis on les stocke dans un tableau d'entiers non signés sur 8 bits, nommé bytes_frame, dans l'ordre suivant : 2 octets de données température (octet de poids fort en premier), 1 octet CRC température, 2 octets de données humidité, 1 octet CRC humidité.
Question A4 À partir de la variable bytes_frame, écrire sur les lignes 26 et 27 de DRA1, les instructions permettant d'obtenir la valeur brute complète de température codée sur un entier de 16 bits, que l'on stockera dans la variable rawTemp.
Afin de garder une trace des dernières mesures effectuées, on a créé une variable globale humidityBuffer qui contiendra les 6 dernières valeurs du taux d'humidité en %. Ce tableau devra stocker les grandeurs dans l'ordre suivant :
[mh0,mh1,mh2,mh3, ... ] avec mh0 : dernière mesure , mh1 avant-dernière mesure....
On donne en DTA5 l'extrait du programme de la boucle de mesure gérant uniquement les mesures de température et de taux d'humidité.
Question A5 Compléter sur copie la fonction updateHumidityBuffer , (exécutée après l'appel de la méthode SHT4x :: read) qui met à jour le tableau humidityBuffer avec la variable humidity, dernière valeur de taux d'humidité lue.
void updateHumidityBuffer(float humidity)
{ ...
...
...
}
Gestion des incohérences de mesure du taux d'humidité
Lors du fonctionnement du capteur, il s'est avéré que les mesures de taux d'humidité présentaient quelquefois des incohérences et provoquaient des déclenchements intempestifs de la ventilation forcée.
Exemples de séquences relevées pour le taux d'humidité (en pourcentage ) :
Séquence 1 :
45.1
45.4
45.3
45.3
88.9
45.5
45.4
45.3
Séquence 2 :
51.5
51.4
51.2
83.5
75.7
62.3
51.5
51,1
La liaison I2C permettant de communiquer avec le capteur SHT45 inclut un champ CRC qui permet de détecter s'il y a eu des erreurs dans la transmission de données.
Question A6 Citer un mécanisme de détection des erreurs de transmission autre que CRC-8 et donner son principe.
Dans sa version actuelle, la méthode read donnée en DRA1 ne prend pas en charge le CRC. La documentation technique DTA6 précise le principe de CRC-8.
On donne en DRA2 la fonction calculerCRC8 (définie dans le fichier SHT4x.cpp) qui permet de calculer le code CRC correspondant aux données fournies en argument de la fonction.
Question A7 Compléter en DRA2 les données manquantes dans la fonction calculerCRC8 avec les caractéristiques de la liaison I2C du capteur SHT45 données en DTA1.
Question A8 Compléter la méthode read en DRA1, à partir de la ligne 18, avec les instructions qui permettent de calculer le CRC des données d' humidité à partir du tableau bytes_frame puis de renvoyer faux si une erreur de transmission a été détectée sur les données du taux d'humidité (le contrôle des données de température n'est pas demandé).
Question A9 Dans la boucle de mesure (cf. DTA5), coder la vérification de la valeur de retour de la méthode read et proposer une stratégie simple de gestion des éventuelles erreurs de transmission. Modifier et écrire sur copie le nouveau code de la boucle de mesure permettant la mise en œuvre de cette stratégie.
Les valeurs "aberrantes" du taux d'humidité et donc les déclenchements intempestifs de ventilation en résultant peuvent être dues à des problèmes de transmission, mais peuvent aussi avoir d'autres origines ( erreur de mesure du capteur en lui-même, "goutte d'eau" locale et ponctuelle au niveau du capteur ...).
Question A10
Proposer une méthode logicielle permettant d'éviter le déclenchement intempestif de la ventilation due à une erreur ponctuelle de mesure (d'origine autre qu'erreur de transmission).
La mettre en œuvre en donnant le code des éventuelles fonctions nécessaires et des modifications à apporter dans le code de la boucle de mesure.
ÉTUDE B (à traiter obligatoirement)
Intégration du microgrid au réseau informatique
Le réseau de supervision du microgrid s'appuie sur l'infrastructure réseau déjà existante dans la société. Celle-ci est pleinement fonctionnelle.
Objectif: Identifier une faille de sécurité du réseau existant puis la supprimer en paramétrant des réseaux privés virtuels (VLAN).
Dans sa politique de sécurité, la société utilise des réseaux qu'elle segmente en fonction des services (vente, sécurité, direction...) afin de limiter le nombre de postes de chaque sous-réseau.
Question B1 Donner le masque de sous-réseau minimal pour un réseau pouvant contenir jusqu'à 6 machines (client). Justifier la réponse.
Question B2 Compléter le plan d'adressage partiel du document réponse DRB1. Le masque de sous-réseau sera choisi pour accueillir un nombre d'hôtes au plus proche du nombre de machines du réseau. La passerelle occupe l'adresse IP du dernier hôte (client) de chaque sous-réseau.
Question B3 La direction des services informatiques souhaite automatiser l'adressage IP des machines. Indiquer quel service ou protocole il faut activer sur le switch central (voir figure 2) ?
Question B4 Expliquer comment un employé malintentionné du service vente peut accéder au réseau de supervision du microgrid s'il connaît le plan d'adressage. Donner un exemple d'acte malveillant pouvant résulter de cette faille.
La société veut intégrer tous les équipements du microgrid à son réseau informatique. Pour cela, elle achète un switch possédant 8 ports Fast Ethernet et 2 ports Gigabit Ethernet.
Question B5 Compléter le schéma de câblage du document réponse DRB2 en ajoutant le matériel et les connexions nécessaires à l'intégration des équipements de supervision au réseau, comme indiqué sur la figure 2. Compléter le tableau d'affectation de port du document réponse DRB3 (s'appuyer notamment sur la manière dont les autres switches sont connectés au switch central).
Le VLAN du réseau de supervision de la smartgrid aura le numéro 80 . Les switches déjà présents possèdent 24 ports Fast Ethernet et 2 ports Gigabit Ethernet.
Question B6 Proposer une autre solution de câblage plus économique qui sera nommée solution 2 et indiquer, à l'aide du document technique DTB1, en quoi une liaison Trunk (trunk link) serait utile dans cette configuration.
Pour la suite des questions, la solution 1 correspondant au schéma de la figure 2 sera utilisée.
Question B7 À l'aide des documents techniques DTB2 et DTB3, donner les commandes qui ont permis le paramétrage du switch du réseau de supervision comme indiqué dans le document DTB8.
Le dirigeant de la société se plaint, tout comme son secrétaire, de ne pas pouvoir accéder à l'interface de supervision du microgrid. Un technicien lance une série de commandes de diagnostic sur plusieurs équipements. Ces commandes sont présentées dans les documents techniques DTB6, DTB7, DTB8, DTB9 et DTB10.
Question B8 Interpréter les résultats pour chaque commande lancée dans les documents techniques DTB6, DTB7, DTB8, DTB9, DTB10 puis conclure sur l'origine du problème dans une conclusion générale.
Question B9 Proposer deux solutions pour résoudre le problème tout en maintenant un niveau de sécurité maximal.
Question B10 Des deux solutions proposées dans la question B9, il est choisi la moins couteuse. Indiquer les commandes qui permettent de paramétrer correctement l'équipement. Pour cela utiliser les documents techniques DTB4 et DTB5.
DOCUMENTS TECHNIQUES DE L'ÉTUDE A
DOCUMENT TECHNIQUE DTA1
Documentation partielle capteur SHT 45
Datasheet - SHT4x 4^(th) Gen. Relative Humidity and Temperature Sensor
SENSIRION
Highlights
-Accuracies ΔRH = ± 1.0%RH, ΔT = ± 0.1^∘C
-VDD = 1.08 V…3.6 V
-Avg. current: 0.4μ A, Idle current: 80 nA
-I2C FM+, CRC checksum, multip. I2C addr.
-Patented protection options [1], PTFE membrane and removable protective cover
-Operating range: 0 ... 100 %RH, -40...125 °C
-Fully functional in a condensing environment
-Power heater, true NIST-traceability
-JEDEC JESD47 qualification
-Sensor-specific calibration certificate acc. to ISO 17025: 2017, 3-point temp. calibration
SHT4x is a digital sensor platform for measuring relative humidity and temperature at different accuracy classes. Its I2C interface provides several preconfigured 12C addresses while maintaining an ultra-low power budget (0.4μ W). The power-trimmed internal heater can be used at three heating levels thus enabling sensor operation in demanding environments. The four-pin dual-flat-no-leads package is suitable for surface mount technology (SMT) processing and comprises an optional on-package patented PTFE [1] membrane or a removable protective cover. Sensor specific calibration certificates according to ISO17025, identifiable through unique serial numbers, are available.
Device Overview
Product
Details
SHT40-xD1B
base RH&T accur., possible 12C addr.: 0x44, 0x45, 0x46
SHT40-AD1F
SHT40-AD1B with PTFE membrane
SHT40-AD1P
SHT40-AD1B with protective cover
SHT41-AD1B
intermed. RH&T accur., 0x44 12C addr.
SHT43-ADCB
ISO17025 3-point calibration certificate
SHT45-AD1B
± 1.0%RH, ± 0.1^∘C accur., 0x44 12C addr.
Functional Block Diagram
Sensor Operation
12C Communication
I2C communication is based on NXP's I2C-bus specification and user manual UM10204 . Supported I2C modes are standard, fast mode, and fast mode plus. Data is transferred in multiples of 16-bit words. In order to increase reliability of data transfer, I 2 C glitch protection is offered in form of 8 -bit checksum (cyclic redundancy check = CRC ). All transfers must begin with a start condition ( S ) and terminate with a stop condition (P). To finish a read transfer, send not acknowledge (NACK) and stop condition (P).
Addressing a specific slave device is done by sending its 7-bit I2C address followed by an eighth bit, denoting the communication direction: "zero" indicates transmission to the slave, i.e. "write", a "one" indicates a "read" request. Schematics of the I2C transfer types are sketched in Figure 14. The sensor does not support clock-stretching. In case the sensor receives a read header and is still busy with e.g. measurement or heating, it will return a NACK. Measurement data can only be received once and will be deleted from the sensor's register after the first acknowledged I2C read header.
Figure 14. I2C transfer types: First a write header is sent to the I2C slave, followed by a command, for example "measure RH&T with highest precision". After the measurement is finished the read request directed to this I2C slave will be acknowledged and transmission of data will be started by the slave.
Exemple : trame de commande demandant la lecture du numéro de série du capteur
Table 7. Data checksum properties
Data type & length
I2C bus operates with 8-bit data packages. Information from the sensor to the master has a checksum after every second 8-bit data package.
Humidity and temperature data will always be transmitted in the following way: The first value is the temperature signal (2*8-bit data +8-bit CRC), the second is the humidity signal (2 * 8-bit data + 8-bit CRC).
Checksum Calculation (CRC)
For read transfers each 16-bit data is followed by a checksum with the following properties.
Property
Value
Name
CRC-8
Message Length
16-bit
Polynomial
0 × 31(x^8 + x^5 + x^4 + 1)
Initialization
0xFF
Reflect Input/Output
false/false
Final XOR
0x00
Examples
CRC(0 × BEEF) = 0 × 92
Table 7. Data checksum properties
Command Overview
Command (hex)
Response length incl. CRC (bytes)
Description [return values]
0xFD
6
measure T & RH with high precision (high repeatability) [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
0xF6
6
measure T & RH with medium precision (medium repeatability) [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
read serial number [2 * 8-bit data; 8-bit CRC; 2 * 8-bit data; 8-bit CRC]
0x94
-
soft reset [ACK]
0x39
6
activate heater with 200mW for 1s, including a high precision measurement just before deactivation [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
0x32
6
activate heater with 200mW for 0.1s including a high precision measurement just before deactivation [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
0x2F
6
activate heater with 110mW for 1s including a high precision measurement just before deactivation [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
0 × 24
6
activate heater with 110mW for 0.1s including a high precision measurement just before deactivation [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
0x1E
6
activate heater with 20mW for 1s including a high precision measurement just before deactivation [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
Conversion of Signal Output
The digital sensor signals correspond to following humidity and temperature values:
N.B.: The RH conversion formula (1) allows values to be reported which are outside of the range of 0%RH…100%RH. Relative humidity values which are smaller than 0%RH and larger than 100%RH are nonphysical; however these "uncropped" values might be found beneficial in some cases (e.g. when the distribution of the sensors at the measurement boundaries are of interest). For all who do not want to engage in evaluation of these non-physical values, cropping of the RH signal to the range of 0 %RH ... 100%RH is advised.
DOCUMENT TECHNIQUE DTA2
Trame de réponse mesure haute précision
Trame entière renvoyée par le capteur SHT45 suite à une demande de mesure de température et de taux d'humidité en mode haute précision
Zoom 1^(ère) partie de trame
Zoom 2^(ème) partie de trame
Fichier d'en tête bibliothèque SHT4x
#ifndef SHT4x_H
#define SHT4x_H
#include <Wire.h>
/* Définition de la classe SHT4x
Cette classe communique avec un capteur via I2C
et permet de lire la température et l'humidité avec un capteur SHT45.*/
class SHT4x {
public:
// Enumération pour la précision des mesures
enum sht4x_precision_t {
LOW_PRECISION = 0xE0,
MEDIUM_PRECISION = 0xF6,
HIGH_PRECISION = 0xFD
};
// Enumération pour les modes de chauffage
enum sht4x_heater_t {
NO_HEATER = 0x00,
HEATER_SHORT = 0x15,
HEATER_MEDIUM = 0x1E,
HEATER_LONG = 0x39
};
SHT4x();
/*
@brief Initialise le capteur.
@return true si l'initialisation réussit, false sinon.
*/
void begin();
// @brief modifie l'attribut precision_t précisant la précision de lecture.
void setPrecision(sht4x_precision_t newPrecision);
//@brief modifie l'attribut heater précisant de mode de chauffage du
capteur.
void setHeaterMode(sht4x_heater_t newHeaterMode);
/*
@brief Lit la température et le taux d'humidité actuelle
en modifiant les variables globales temperature et humidity.
@return true si lecture réussie, false sinon.
*/
bool read(float& temperature, float& humidity);
/*
@brief Lit le numéro de série du capteur.
@return numéro de série du capteur.
*/
uint32_t readSerial();
private:
static const uint8_t SHT4x_ADDRESS = 0x44; // adresse I2C du capteur SHT45
sht4x_precision_t precision_t; // précision de mesure demandée
sht4x_heater_t heater; // mode chauffage du capteur
DOCUMENT TECHNIQUE DTA5
Code simplifié boucle de mesure
Ligne
// variables globales et objet SHT4x
float humidityBuffer[6];
unsigned long lastMeasurementTime = 0;
SHT4x sht45;
// fonction d'affichage des mesures sur M5 Stack
void affichageMesure(temperature,humidity) {
M5.Lcd.clear();
M5.Lcd.setCursor(0, 0);
M5.Lcd.print("temp : ");
M5.Lcd.println(temperature);
M5.Lcd.print("humidité : ");
M5.Lcd.println(humidity); }
// boucle de mesure de température et humidité
void loop() {
unsigned long currentMillis = millis();
// Mesure toutes les 30 secondes
if (currentMillis - lastMeasurementTime >= 30000) {
float temperature, humidity;
sht45.read(temperature, humidity);
Serial.print("humidite : "); Serial.println(humidity);
// mise à jour du tableau des 6 derniers taux d'humidité
updateHumidityBuffer(humidity);
//affichage des données mesurées sur l'écran du M5 Stack
affichageMesure(temperature,humidity);
// Envoi des données du SHT45 à la Naiobox par MQTT
sendMQTT(temperature, humidity);
// Gestion de la ventilation
if ((temperature > 30.0 || humidity > 70.0 )) {
triggerVentilation();
}
Else
{ stopVentilation();}
lastMeasurementTime = currentMillis;
}
}
DOCUMENT TECHNIQUE DTA6
Contrôle d'intégrité par CRC-8
Le CRC-8 (Cyclic Redundancy Check, 8 bits) est une méthode de contrôle d'intégrité utilisée lors des transmissions de données ( I^2 C, UART, bus industriels, stockage...). Il permet de détecter des erreurs de transmission (bit inversé, trame corrompue...).
Principe :
-A partir de données à transmettre ( ex : température codée sur 16 bits), on génère un code de redondance cyclique codée sur 8 bits pour CRC-8.
-On ajoute ce code de redondance aux données pour constituer le message à transmettre
-A la réception du message, le destinataire refait le calcul du CRC à partir des bits de données ( ex les 16 bits de température) :
○Si le CRC calculé est identique au CRC transmis, les données valides
○Sinon, le message a été corrompue
Calcul du CRC :
Le CRC-8 traite les données comme un polynôme binaire, appelé polynôme générateur et effectue une division modulo-2 par un polynôme générateur prédéfini. Le reste de cette division devient le CRC.
Le calcul du CRC se fait suivant le pseudo-code ci-dessous :
function CRC8(data[], length):
crc = valeur_initiale // initialisation du registre CRC
for i = 0 to length-1: // parcourir chaque octet des données
crc = crc XOR data[i] // mélange avec l'octet courant
for bit = 0 to 7: // traiter chaque bit de l'octet
if (crc & 0x80) != 0: // si le bit le plus significatif (MSB) = 1
crc = (crc << 1) XOR polynome_generateur
else:
crc = (crc << 1) // sinon simple décalage
crc = crc & 0xFF // conserver uniquement 8 bits
return crc
où data[] représente le tableau de données, length : le nombre d'octets des données
Suivant le protocole utilisé dans la liaison, on peut trouver des polynômes générateurs différents, exemples courants :
-CRC-8 : x^∧8 + x^∧2 + x + 1 (valeur hexadécimale : 0 x 07 )
La valeur initiale est souvent prise à 0x00 ou 0xFF.
Avantages et limites du CRC-8
CRC-8 permet une détection fiable des erreurs mais ne détecte pas absolument toutes les combinaisons d'erreurs possibles. Son faible coût en calcul et sa faible surcharge ( 1 seul octet) en fait une méthode adaptée à de nombreux protocoles (1-wire, I2C, SPI, modbus....)
DOCUMENTS TECHNIQUES DE L'ÉTUDE B
DOCUMENT TECHNIQUE DTB1
source : fr.wikipedia.org/wiki/Réseau_local_virtuel
Un réseau local virtuel, communément appelé VLAN (pour Virtual LAN), est un réseau informatique logique indépendant. De nombreux VLAN peuvent coexister sur un même commutateur réseau ou « switch ».
Exemple de cloisonnement d'un réseau en deux VLAN, VLAN1 pour l'équipe d'ingénierie et VLAN2 pour l'équipe marketing.
Intérêts des VLAN
Les VLAN permettent :
-de séparer les flux ;
-de segmenter le réseau : réduire la taille d'un domaine de collision ;
-d'améliorer la sécurité : permet de créer un ensemble logique isolé pour améliorer la sécurité. Le seul moyen pour communiquer entre des machines appartenant à des VLAN différents est alors de passer par un routeur.
Par conséquent, les VLAN permettent aussi d'améliorer la gestion du réseau et d'optimiser la bande passante.
Lien marqué
Un « lien marqué » (tagged link) est une interconnexion entre deux commutateurs qui préserve l'appartenance aux VLAN de chaque trame.
Pour interconnecter deux commutateurs qui ont 3 VLAN communs, il faudrait 3 câbles et sacrifier 3 ports sur chaque commutateur. Pour éviter cela, il existe le lien marqué. Un seul câble d'interconnexion sur lequel plusieurs VLAN passeront, mais les trames sont marquées (taggées) pour que les commutateurs sachent à quel VLAN elles appartiennent. Ceci est accompli en encapsulant chaque trame de façon à conserver son numéro de VLAN. L'IEEE a développé la norme 802.1Q (dot1q).
IEEE 802.1Q qui succède au protocole ISL de Cisco est aujourd'hui le protocole prédominant.
CISCO et d'autres constructeurs utilisent le terme « lien tronc » (trunk link) pour parler d'un lien marqué.
VXLAN offre une plus grande évolutivité - jusqu'à 16 millions, par rapport à une limite de 4096 pour 802.1Q.
Assignation des VLAN
La manière la plus courante de configurer les VLAN est de le faire de manière statique en spécifiant pour chacun des ports du commutateur à quel VLAN il appartient.
Il est également possible de modifier dynamiquement la configuration d'un port. Cela peut se faire de manière sûre avec un mécanisme tel que 802.1X ou sur base de l'adresse MAC voire IP de l'équipement. Cette dernière solution est toutefois très peu sécurisée, les adresses MAC ou IP étant très facilement modifiables.
DOCUMENT TECHNIQUE DTB2
Commande de création d'un VLAN
Commande
Objectif
enable
Passer en mode privilège
conft
Passer en mode de configuration globale
vlan [VLAN ID]
Créer le VLAN dont le numéro est VLAN ID
exit
Quittez le mode de configuration
Exemple : Création du VLAN 10 sur le switch
Switch>enable
Switch#conf t
Switch(config)#vlan 10
Switch(config-vlan)#exit
Association d'un port à un VLAN
Commande
Objectif
Interface [nom interface]
Configure le port [Nom interface] du switch. Exemples d'interface fa0/1, fa0/24, gig0/1 ...
Interface range [nom interface]-[numéro de fin]
Configure les ports de [nom interface] à numéro de la dernière interface du switch
Switchport mode {access, hybrid, trunk}
Configure le port en mode access (assignation du port à un seul VLAN), hybrid (autorise la circulation de trames taguées et non taguées) ou trunk (autorise la circulation de tous les VLAN)
Switchport access vlan [vlan ID]
Assigne le port du switch configuré au vlan [vlan ID]
exit
Quitte le mode de configuration de l'interface
La configuration des interfaces du switch nécessite d'être en mode privilège et en mode configuration globale.
Exemple : Configuration des ports Fast Ethernet 5 à 10 en mode access et association de ces interfaces au vlan 10
Switch(config)#interface range fastethernet0/5-10
Switch(config-if)# switchport mode access
Switch(config-if)#switchport access vlan 10
Switch(config-if)#exit
Exemple : Configuration du port Gigabit Ethernet 0/1 en mode trunk :
Switch(config)# interface gigabitethernet0/1
Switch(config-if)# switchport mode trunk
Switch(config-if)#exit
Activation d'un port du routeur
Par défaut, les ports du routeur ne sont pas activés.
Commande
Objectif
No shutdown
Active le port qui est configuré
Exemple : Active le port fa0/1
Router(config)# interface fa0/1
Router(config-if)#no shutdown
Router(config-if)#exit
Créer une sous-interface dédiée à un VLAN
La configuration des sous-interfaces du routeur nécessite d'être en mode privilège et en mode configuration globale.
Commande
Objectif
interface gigabitethernet0/0.10
crée une sous-interface dédiée 0/0.10 pour le VLAN 10 sur l'interface physique gigabitethernet 0/0.
encapsulation dot1q [VLAN ID]
indique au routeur de reconnaître les trames du VLAN [VLAn ID] en utilisant le protocole d'encapsulation 802.1Q
ip address [Adrresse_IP] [Masque de sous-réseau]
attribue une adresse IP et un masque à la sous-interface, qui servira de passerelle pour les appareils des VLANs
Exemple : Configuration de l'interface Gigabit Ethernet 0/0
Router(config)# interface gigabitethernet0/0.10
Router(config-subif)# encapsulation dot1q 10
Router(config-subif)# ip address 192.168.10.254 255.255.255.0
Router(config-subif)#exit
Commandes de diagnostic du problème de connexion
Commande lancée depuis le poste du dirigeant (@192.168.3.1) :
C:l>ping 192.168.3.2
Pinging 192.168.3.2 with 32 bytes of data:
Reply from 192.168.3.2: bytes=32 time<1ms TTL=128
Reply from 192.168.3.2: bytes=32 time<1ms TTL=128
Reply from 192.168.3.2: bytes=32 time<1ms TTL=128
Reply from 192.168.3.2: bytes=32 time<1ms TTL=128
Ping statistics for 192.168.3.2:
Packets: Sent = 4, Received = 4, Lost = 0(0% loss ),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:>ping 192.168.8.1
Pinging 192.168.8.1 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 192.168.8.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
C:|> ping orange.fr
Pinging orange.fr [193.252.148.46] with 32 bytes of data:
Reply from 193.252.148.46 : bytes =32 time =28 ms TTL=245
Reply from 193.252.148.46 : bytes =32 time =25 ms TTL=245
Reply from 193.252.148.46 : bytes =32 time =25 ms TTL=245
Reply from 193.252.148.46 : bytes = 32 time = 26 ms TTL=245
Ping statistics for 193.252.148.46:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 25ms, Maximum = 28ms, Average = 26ms
C:|>
1 default active Fa0/7, Fa0/8, Fa0/9, Fa0/10, Fa0/11, Fa0/12, Fa0/13, Fa0/14, Fa0/15, Fa0/16 Fa0/17, Fa0/18, Fa0/19, Fa0/20, Fa0/21 Fa0/22, Fa0/23, Fa0/24, Gig0/2 Fa0/22, Fa0/23, Fa0/24, GIg0/2 active active active active active active active active 1002 fddi-default active active 1004 fddinet-default active active Switch>
Commandes de diagnostic du problème de connexion
Commande show interface lancée depuis le routeur. Le résultat étant très long, seul les 4 dernières interfaces sont affichées ci-dessous. Les interfaces sont affichées dans l'ordre alphanumérique.
GigabitEthernet0/0.50 is up, line protocol is up (connected)
Hardware is PQUICC_FEC, address is 0001.c9c7.d401 (bia 0001.c9c7.d401)
Internet address is 192.168.5.30/27
MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation 802.1Q Virtual LAN, Vlan ID 50
ARP type: ARPA, ARP Timeout 04:00:00,
Last clearing of "show interface" counters never
GigabitEthernet0/0.60 is up, line protocol is up (connected)
Hardware is PQUICC_FEC, address is 0001.c9c7.d401 (bia 0001.c9c7.d401)
Internet address is 192.168.6.6/29
MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation 802.1Q Virtual LAN, Vlan ID 60
ARP type: ARPA, ARP Timeout 04:00:00,
Last clearing of "show interface" counters never
GigabitEthernet0/0.70 is up, line protocol is up (connected)
Hardware is PQUICC_FEC, address is 0001.c9c7.d401 (bia 0001.c9c7.d401)
Internet address is 192.168.7.14/28
MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation 802.1Q Virtual LAN, Vlan ID 70
ARP type: ARPA, ARP Timeout 04:00:00,
Last clearing of "show interface" counters never
GigabitEthernet0/1 is administratively down, line protocol is down (disabled)
Hardware is CN Gigabit Ethernet, address is 0001.c9c7.d402 (bia 0001.c9c7.d402)
MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Full-duplex, 100Mb/s, media type is RJ45
output flow-control is unsupported, input flow-control is unsupported
ARP type: ARPA, ARP Timeout 04:00:00,
Last input 00:00:08, output 00:00:05, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0 (size/max/drops); Total output drops: 0
Queueing strategy: fifo
Router#
NE RIEN ECRIRE DANS CE CADRE
DOCUMENT RÉPONSE DRA1 (Question A3, A4 et A8)
Méthode read de SHT4x
Ligne
bool SHT4x::read(float &temperature, float &humidity) {
// debut de transmission, à compléter
. . . . . . . . . . . . . . . . . . . .
Wire.write(precision_t);
if (Wire.endTransmission() != 0) {
return false; }
delay(10); // Délai de conversion des données
Wire.requestFrom(SHT4x_address, (uint8_t)6);
if (Wire.available() != 6) {
return false;}
uint8_t bytes_frame[6];
for (int i = 0; i < 6; i++) {
bytes_frame[i] = Wire.read();
}
// contrôle d'intégrité par CRC pour les données d'humidité
//calcul des valeurs brutes de température et humidité sur 16 bits
uint16_t rawTemp = . . . . . . . . . . . . . . . . . . // à compléter
uint16_t rawHum = . . . . . . . . . . . . . . . . . . // à compléter
temperature = -45.0f + 175.0f * ((float)rawTemp / 65535.0f);
humidity = 100.0f * ((float)rawHum / 65535.0f);
return true;
}
DOCUMENT RÉPONSE DRA2 (Question A7 et A8)
Fonction calculerCRC8
Code de la fonction calculerCRC8 qui permet de calculer le CRC8 de n octets données en arguments de la fonction
Ligne Code C++
// Fonction permettant de calculer le CRC-8
static uint8_t calculerCRC8(uint8_t *data, size_t length) {
uint8_t crc = . . . . . . . ; // à compléter
for (size_t i = 0; i < length; i++)
{crc ^= data[i];
for (uint8_t j = 0; j < 8; j++) {
if (crc & 0x80 ) {
crc = (crc << 1) ^ . . . . . . .; // à compléter
}
else {
crc <<= 1;
}
}
}
return crc;
}
NE RIEN ECRIRE DANS CE CADRE
DOCUMENT RÉPONSE DRB1 (Question B2)
Pour rappel :
-Le masque de sous-réseau sera choisi pour accueillir un nombre d'hôtes au plus proche du nombre de machines du réseau.
-La passerelle occupe l'adresse IP du dernier hôte (client) de chaque sous-réseau.
Service
Direction
Vente
Microgrid
Étage
RC
1
Toit du bâtiment
Nombre de postes
2
29
7
Adresse de réseau
192.168.3.0
192.168.4.0
192.168.8.0
Masque de sousréseau
Adresse IP du premier hôte
Adresse IP du dernier hôte
Adresse de broadcast
Passerelle
NE RIEN ECRIRE DANS CE CADRE
DOCUMENT RÉPONSE DRB3 (Question B5)
Le routeur 2911 est connecté au switch central via son interface gig 0/0.
Les switches utilisés sont des switches de niveau 2 .