Simulation temporelle
CODE | FONCTION |
---|---|
| Calcule les points (t en abscisse et s en ordonnée) pour le tracé de la réponse temporelle à un échelon unitaire, puis trace cette réponse temporelle. |
| Calcule les points (t en abscisse et s en ordonnée) pour le tracé de la réponse temporelle à un échelon de 3, puis trace cette réponse temporelle. |
| Précise la durée de simulation (alors que dans les cas précédents, elle est déterminée automatiquement). |
Fonction pour déterminer le temps de réponse
## Définition de la fonction temps de réponse
def tr(H) :
[t,s]=control.step_response(H)
sfinale=s[-1]
index_tr5_possible=np.where((s>1.05*sfinale)|( s<0.95*sfinale))[0] #identification des index pour lesquelles la réponse indicielle s>1.05×sfinale OU <0.95×sfinale
index_tr5=index_tr5_possible[-1] #récupération du dernier index
tr5=t[index_tr5] #recherche du temps (le tr5%) situé à l'index index_tr5
print("tr5% =",format(tr5, '.2g'),"s") #renvoie le temps de réponse avec 2 chiffres significatifs
Exemple d'utilisation de cette fonction :
F=control.tf([1],[83,5.5,1])
tr(F)
Fonction pour déterminer les dépassements
## Définition de la fonction dépassement
def Dep(H) :
[t,s]=control.step_response(H)
sfinale=s[-1]
# calcul des dépassements
index_dépassementmax=scipy.signal.argrelextrema(s, np.greater) #détermine les index des max
index_dépassementmin=scipy.signal.argrelextrema(s, np.less) #détermine les index des min
index_dépassement=index_dépassementmax[0].tolist()+index_dépassementmin[0].tolist() #convertit les 2 tableaux précédents en liste et les additionne
index_dépassement.sort() #trie la liste index.dépassement par ordre croissant
dépassementA=[]
dépassementR=[]
for i in index_dépassement:
dépassementA.append(abs(s[i]-sfinale)) #détermine la valeur des dépassements absolus
dépassementR.append(abs(s[i]-sfinale)/delta_s*100) #détermine la valeur des dépassements relatifs
#supprime les dépassements <1%
dépassementR=np.array(dépassementR) #convertit la liste en tableau
index_dépassement_faible=np.where(dépassementR<1)
dépassementR=dépassementR.tolist() #convertit le tableau en liste
del dépassementA[min(index_dépassement_faible[0]):]
del dépassementR[min(index_dépassement_faible[0]):]
print("Nombre de dépassement > 1%: ",len(dépassementR))
for k in range(len(dépassementR)):
print("D"+str(k+1),"=",format(dépassementA[k], '.2g')," D"+str(k+1),"% =",format(dépassementR[k], '.2g'),"%")
Exemple d'utilisation de cette fonction :
F=control.tf([1],[83,5.5,1])
Dep(F)