All checks were successful
Build & Deploy docs / build-deploy (push) Successful in 2m49s
119 lines
4.8 KiB
Markdown
119 lines
4.8 KiB
Markdown
# Gabarit des blocs — schémas ETM-PowerSync
|
||
|
||
Règles pour dessiner un bloc dans Inkscape de façon à ce que l'assembleur
|
||
(`stack2.py`) le place et le relie sans routage. Tout est porté par le SVG.
|
||
|
||
## 1. Modèle géométrique
|
||
|
||
- **viewBox = corps + pattes.** Le corps du symbole est inséré de **8 px** de
|
||
chaque côté où il y a des ports. Les pastilles tombent **sur le bord de la
|
||
viewBox**, reliées au corps par une **patte de 8 px**.
|
||
- Conséquence : la boîte englobante (viewBox) est ce qui s'aligne à
|
||
l'empilement, mais visuellement le fil se raccorde à distance du dessin.
|
||
- Pastille = `<circle r="2.6">`. Patte = `<line stroke-width="1.2">` de la
|
||
couleur du signal.
|
||
|
||
```
|
||
┌───── viewBox ─────┐
|
||
│ <20>· patte (8px) │ ← pastille sur le bord, corps en retrait
|
||
│ ┌─────────────┐ │
|
||
│ │ CORPS │ │
|
||
│ └─────────────┘ │
|
||
└───────────────────┘
|
||
```
|
||
|
||
## 2. Placement des ports
|
||
|
||
Un port sort **du côté qui fait face à ce qu'il relie** :
|
||
|
||
| Côté | Usage |
|
||
|---|---|
|
||
| Haut / Bas (sur l'axe) | Puissance (l'empilement vertical) |
|
||
| Gauche / Droite | Comms & signaux, face à l'équipement relié |
|
||
| Bas | Relais / sorties vers les charges en aval |
|
||
|
||
- **Entraxe DC = 68 px** (ports à `centre ± 34`). À respecter pour que
|
||
`cof_dc.OUT1/OUT2` ↔ `onduleur.PV1/PV2` s'alignent en deux verticales droites.
|
||
- Pour empiler des blocs identiques sans écart (ex. blocs batterie), viewBox
|
||
serrée + ports haut/bas → `GAP=0` les fait se toucher.
|
||
|
||
**Empilement série (blocs batterie)** : `DC_IN` en haut, `DC_OUT` en bas, sur
|
||
le même axe vertical. La mise en série se câble en chaîne :
|
||
|
||
```
|
||
BMS.DC_BAT → BAT1.DC_IN
|
||
BAT1.DC_OUT → BAT2.DC_IN
|
||
BAT2.DC_OUT → BAT3.DC_IN (dernier DC_OUT libre)
|
||
```
|
||
|
||
Le `COM` reste sur le côté (gauche) et chaîne en parallèle vers le BMS.
|
||
|
||
## 3. Code couleur
|
||
|
||
| Signal | Couleur | Trait |
|
||
|---|---|---|
|
||
| Puissance | `#0d2b3b` (navy) | plein |
|
||
| CAN / BMS | `#31a3dd` (bleu) | pointillé |
|
||
| RS485 | `#e69500` (orange) | pointillé |
|
||
| Ethernet | `#00b4d8` (cyan) | pointillé |
|
||
| Relais | pastille `#fec113`, patte/fil `#caa000` | pointillé fin |
|
||
| PWR (alim) | `#e6194b` (rouge) | plein |
|
||
| PE (terre) | `#00ff00` (vert) | plein |
|
||
|
||
## 4. Dictionnaire des noms de ports (`term:…`)
|
||
|
||
| Type | Terminaux |
|
||
|---|---|
|
||
| `compteur` | `L_IN`, `L_OUT`, `BUS` (= smartmeter, tête TGBT) |
|
||
| `linky` | `L_OUT` (point de livraison, en amont) |
|
||
| `disjoncteur` / `differentiel` | `L_IN`, `L_OUT` |
|
||
| `tgbt` | `IN`, `SECOURS`, `CONSO`, `OUT1`–`OUT3`, `PE` |
|
||
| `cof_dc` | `IN1`, `IN2`, `OUT1`, `OUT2`, `PE` |
|
||
| `cof_ac` | `AC_IN`, `AC_OUT`, `PE` |
|
||
| `cof_backup` | `OND`, `RESEAU`, `SECOURU`, `CONSO`, `PE` |
|
||
| `onduleur` | `PV1`, `PV2`, `BAT`, `OND` (départ TGBT) (+ `BMS`, `RS485`, `ETH` ; `AC_IN` si backup) |
|
||
| `string_pv` | `DC` (1 string) / `DC1`, `DC2` (2 strings) |
|
||
| `microonduleur` | `AC_IN`, `OND` |
|
||
| `bcu` (ex-BMS) | `DC_INV`, `DC_BAT`, `COM` |
|
||
| `bloc_batterie` | `DC_IN`, `DC_OUT`, `COM` (empilable en série) |
|
||
| `hems` | `C1`–`C4`, `RS485_1`, `RS485_2`, `ETH`, `USB1`, `USB2`, `PWR` |
|
||
| `switch_eth` | `SW1`–`SW4` |
|
||
| `dgt` | `PE` (collecte, non numérotée), `TERRE` (vers piquet) |
|
||
| `prise_terre` | `TERRE` (symbole ⏚) |
|
||
|
||
Noms : MAJUSCULES, underscore, sans accent. Numérotation à partir de 1.
|
||
|
||
## 5. Zones texte injectables (`lbl:…`)
|
||
|
||
| Nom | Exemple | Types |
|
||
|---|---|---|
|
||
| `repere` | `-U1`, `-A1` | tous (injecté depuis l'`id` de la scène) |
|
||
| `puissance` | `10 kW`, `<10kVA`, `15kVA` | onduleur, cof_ac, tgbt |
|
||
| `courbe_calibre` | `C 50A` | disjoncteur |
|
||
| `sensibilite` | `30 mA` | differentiel |
|
||
| `tension` | `DC 1000V` | cof_dc |
|
||
| `string_desc` | `8 × 425Wc` | string_pv |
|
||
| `capacite` | `9,6 kWh` | bloc_batterie |
|
||
|
||
## 6. Encodage dans le SVG
|
||
|
||
- En-tête : déclarer les namespaces
|
||
`xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"` et
|
||
`xmlns:etm="https://etm-powersync.fr/ns/schema"`.
|
||
- Type : `<metadata><etm:component type="onduleur"/></metadata>`.
|
||
- Terminal : sur la pastille, `inkscape:label="term:AC_OUT"`
|
||
(réglable dans Inkscape via *Propriétés de l'objet → Étiquette*).
|
||
- Zone texte : sur le `<text>`, `inkscape:label="lbl:puissance"`.
|
||
|
||
`inkscape:label` survit au round-trip Inkscape. **Ne pas** utiliser `etm:` sur
|
||
les éléments dessinés (Inkscape les efface quand on les édite).
|
||
|
||
## 7. Workflow
|
||
|
||
1. Dupliquer `block-template.svg` comme base.
|
||
2. Dessiner le corps (inséré de 8 px), poser les pattes + pastilles aux bords.
|
||
3. Étiqueter chaque pastille `term:…`, chaque texte injectable `lbl:…`,
|
||
renseigner le `type`.
|
||
4. Lancer l'extracteur → `library.json` se met à jour.
|
||
5. L'assembleur consomme une scène (`blocks` + `links` typés) → schéma SVG.
|