functionalities

This commit is contained in:
2024-06-27 11:12:33 +02:00
parent 88aced27bf
commit 2e59700bfa
18 changed files with 84 additions and 27 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+10 -1
View File
@@ -1,6 +1,5 @@
from modele.exceptions import NonPolariseException, Dir
class Composant(object):
def __init__(self, conf, nom):
"""
@@ -38,6 +37,10 @@ class Composant(object):
def etat(self):
raise NotImplementedError
def pause_simulation(self):
pass
class Contact(Composant):
@@ -117,6 +120,8 @@ class Relais(Composant):
self._contacts_repos = []
self._contacts_double = []
self.haut = False
self.etat_precedent = False #etat precedent du relais
self.est_point_arret = False #indicateur de point d'arret
def add_travail(self, nom):
self._contacts_travail.append(nom)
@@ -150,12 +155,16 @@ class Relais(Composant):
self.graphe[nom].desactive()
def update(self):
etat_precedent = self.haut
super().update()
if self.branche.i() >= self.SEUIL:
self.monte()
else:
self.chute()
if self.est_point_arret and etat_precedent != self.haut:
self.graphe.flag_arret_simulation = True
def etat(self):
return self.haut
+2 -1
View File
@@ -13,7 +13,8 @@
"RES_RELAIS": 100.0,
"SEUIL_RELAIS": 0.05,
"SEUIL_TEMPO": 0.05,
"PULSE_PERIODE": 1.0
"PULSE_PERIODE": 1.0,
"TOLERANCE_COURANT": 1e6
},
"ui": {
"DT": 0.13,
+20
View File
@@ -138,6 +138,26 @@ class Noeud(Element):
def etat(self):
return self.u() >= self.conf['USEUIL']
def verifier_loi_des_noeuds(self):
"""Dans cette méthode, self._voisins contient les branches connectées au nœud, et polarite indique si le courant est entrant (-1) ou sortant (+1).
La variable courant_total accumule la somme des courants, et self.conf['TOLERANCE_COURANT'] est une petite valeur seuil pour tolérer des imprécisions
numériques (par exemple, 1e-6)."""
courant_total = 0
for voisin, polarite, _ in self._voisins:
if polarite == -1:
courant_total -= voisin.i()
else:
courant_total += voisin.i()
if abs(courant_total) > self.conf['TOLERANCE_COURANT']:
raise Exception(f"La loi des nœuds n'est pas respectée pour le noeud {self.nom}. Total courant: {courant_total}")
class Branche(Element):
+2 -1
View File
@@ -38,6 +38,7 @@ class Graphe(object):
self.elements = None
self.composants = None
self.vecteur = None
self.flag_arret_simulation = False
def load_data_from_schema_reader(self, reader):
self.elements = {}
@@ -168,4 +169,4 @@ class Graphe(object):
[elt.update() for elt in self.elements.values()]
def coherence(self):
[x.coherence() for x in self.elements.values()]
[x.coherence() for x in self.elements.values()]