# multiplexage

## pourquoi ?

- Pour rendre la quantité de connection linéaire par rapport au nombre de périphérique.
- Rendre le système extensible.
- Acheminer l'information le plus rapidement possible.

## Principes

- intégration : retrouper plusieurs fonctions dans un seul boitier plus intelligent
	 - gestion moteur : injection, allumage, dépollution, refroidissement

- spécialiser les boitiers
- passer par un réseau
- transmettre les données
- structurer les trames
- synchronisation
- arbitrage

### Modèle général

```
                             +-- Boitier intelligent --+
 +----------+ +----------+   | +---------------------+ |   +----------+ +-------------+
 | capteurs |-| étage d' |->-| | unité de traitement | |->-| étage de |-| actionneurs |
 +----------+ | entrée   |   | |  microprocesseur    | |   |  sortie  | +-------------+
              +----------+   | +---------------------+ |   +----------+
                             |            |            |
                             |    +--------------+     |
                             |    | interface de |     |
                             |    | multiplexage |     |
                             |    +--------------+     |
                             +------------|------------+
                                          |
                  ---------------------- bus -----------------------
```

## Tramme

```
+----+---------+
| id | données |
+----+---------+
```

## Architecture

### Maître-esclave

```
+--------+ +---------+ +---------+ +---------+
| maitre | | esclave | | esclave | | esclave |
+--------+ +---------+ +---------+ +---------+
     |          |           |           |
-----+----------+-----------+-----------+-----
```

### Multi-Maître

```
+----------+ +----------+ +----------+ +----------+ 
| services | | services | | services | | services | 
+----------+ +----------+ +----------+ +----------+ 
| maitre   | | maitre   | | maitre   | | maitre   |
+----------+ +----------+ +----------+ +----------+ 
     |            |            |             |
-----+------------+------------+-------------+-----
```

## Protocole de communication

> Note :
> Dans notre modèle, la seule opération sur le milieu (cable/bus) est l'interruption du signal actuel partagé.
> i.e. écrire 0 sur un signal qui est par défaut à 1.

### Arbitrage

L'arbitrage CSMA se fait en organisant des temps pour que les composants puissent déclarer vouloir envoyer un message.
Ils procèdent en écrivant leur ID sur le bus :
- Les ID se retrouvent confondus par et logique sur les bits.
- Un des composants détecte avoir envoyé l'ID le plus faible car l'ID résultant est le sien.
- Ce composant a la priorité pour écrire le message suivant.


```
          .     .          .
Noeud x : #_____##########________
          .     .          .
Noeud y : #####___________________
          .     .          .
Noeud z : #_____#__________######_
          .     .          .
Bus :     _####__#########__#####_
----------------------------------
          ^\    ^\         ^\_ bus disponible, début message z, id de moindre priorité
            \     \___________ bus disponible, début de message x, id_x < id_z
             \________________ bus disponible, début de message y, id_y < id_x
```

### Forme d'une trame

```
+-------+--------+-----------+-----+
| ZEROs | Header | Data      | UNs |
+-------+--------+-----------+-----+
  |       |        |           \_ mot entier de 1
  |       |        \_____________ donnée spécialisée du message
  |       \______________________ entête standard du message
  \______________________________ mot entier de 0
```

> Note :
> Le format du Header et de la Data doit prendre en compte
> qu'il ne peut pas contenir un mot entier de 1 ou bien de 0.

### Arbitrage des bits

Lors d'une mise en commun des bits de messages attendant d'être envoyé se fait par fusion des bits sur le bus :
```
Id message A : .....01001.......
Id message B : .....010001001000
Id message C : .....0100010011..
sur le bus   : 11111010001001000
--------------------------------
               ^^^^^\^^^^\    ^^\_ padding de ZEROs
                     \    \_______ ET logique des IDs
                      \___________ mot UNs du dernier message / maintient d'un état IDLE
```

### Synchronisation

Le signial de synchronisation peut être porté par le signal de donnée dans le cas de certains codages.
- ex : NRZ / Manchester

### Topologies

Les topologies usuelles sont appliquables.
- étoile
- anneau
- maillé
- bus : idéal
	- moins couteux
	- extensible

### Exemple : Trames CAN

```
       +---+----+---+---+---+---+------+--------+---+---+---+---+---+---
champ  |SOF| ID |RTR|IDE| r |DLC| DATA |checksum|DEL|ACK|DEL|EOF|ITM| /
       +---+----+---+---+---+---+------+--------+---+---+---+---+---+---
taile  | 1 | 11 | 1 | 1 | 1 | 4 | 0~64 |   15   | 1 | 1 | 1 | 7 | 3 | /
       +---+----+---+---+---+---+------+--------+---+---+---+---+---+---
nature |arbitration | control   | data | check      | aquit.| protocole
```

- DLC :            Description des données utiles.
- checksum / CRC : Code de vérification d'un message.
- ACK :            Aquitement d'un message.

## Synchronisation STUFF

Un bit est envoyé tout les N bits pour éviter des mots interdits (exemple : 11 × 0 / 11 × 1 ).
Cette responsabilité est celle de l'émetteur et du récepteur.

STUFF-ing à 4 bits :

```
donnée actuelle :          0100.0000.0111
donnée écrite sur le bus : 01001000010001
donnée dé-stuffé :         0100.0000.0111
                               ^\___^\____ bits STUFF-é
```

Selon le protocol, il est également possible d'avoir des bits de 'stuffing' alternant.

> Note :
> Le 'stuffing' peut servir de synchronisation d'horloge car il assure une alternance dans le signal.

## transmission des messages

Il est possible d'interfacer entre plusieurs bus grâce à un controlleur.
- exemple : VAN 1 -> CAN -> VAN 2

Les IDs doivent être traduits d'une manière cohérente aux deux protocoles interfaçés.

## Réseaux terrain

Les réseaux terrain permettent l'interconnexion entre plusieurs entités d'un même système.

Cette communication se déroule sur une zone limitée set sur laquelle on désire une réduction maximale de la longueur des liaisons entre les différents éléments grace à un médium commun den transmission.

Cette réduciton est liée à une volonté de sécurité (sur des automates d'usine par exemple).

---

L'utilisateur ne se soucie pas du chemin suivi par les informations, de la conversion des formats type de l'interlocuteur ou bien du type de constructeur d'un élément.
Les tecnhiques de réseaux facilitent grandement l'insertion ou la suppression d'élements au sein d'un même système.

Un bus de terrein permet de transférer das la plupart des cas les informations de maniere séquentielle, ou bien par paquet de bits.
Il faut savoir que le bus de terrain permet un échange de données qui serait difficile (voire impossibl) par un autre moyen.

Derrière ce concept technologique se cachent de réels protocoles de communications qui n'ont fait qu'évoluer depuis 15 ans.

Basés sur l'optimisation de place et de temps, on a vu apparaitre des controles-commandes de plus en plus perfectionnés.
Ces technologies ne cessent d'etre améliorées et sont de plus en plus utilisés pour des raisons de cout, de confort et de flexibilité.

### Le système OSI

Le multiplexage se fait selon les principes des couches du modèle OSI.

1. la couche physique
2. la couche de liaison

Les autres couches ne sont pas présentes dans une communication BUS.

### Temps réel

Un système est dit 'temps réel' lorsqu'il a besoin de s'exécuter en un temps maximal pour assurer sa fiabilité / intégrité.

Ce qui ressort est la notion de synchronisation entre le traitement de l'information et la génération issue du monde extérieur.
En effet, ce qui prete souvent à confusion est le temps de réponse de la macjine par rapport au temps effectif qui s'écoule par l'environnement.
Naturellement, on pense à des ordres de grandeurs infinitésimale, de l'ordre du millième de secondes.

Deux types de systèmes :

- Transactionnel, ou 'temps réel mou'
	- le système tolère des dépassements et les traitera comme des exception potentiellement récupérables. Cela ne déstabilisera par nécessairement le système.

- Commande, ou 'temps réel dur'
	- Les invariances du système dépendent du respect de la temporalité du programme, et un dépassement sera perçu comme une erreur fatale.
	- Nous cherchons à concevoir des systèmes déterministes et prévisible.

Différentes urgences vont devoir être gérées et priorisés (maintient de la synchronicité du BUS, attentes I/O, gestion d'erreurs)

Synchronisation des orloges :

- Différents calculateurs ne produirons pas les données à un débit égal. Mais la vitesse d'une transmission entre deux controleurs doit être unifiée / synchronisée.
- La vitesse de transfert dépends donc de la distance, mais aussi de la fréquence des horloges des partis.
- La synchronisation se fait au début du flux, mais elle doit également se faire en cas de resynchronisation en plein transfert de message.

