Caractéristiques d’une FT
Soit une fonction H déjà définie.
Caractéristiques temporelles
info = control.step_info(H, SettlingTimeThreshold=0.05) # correspond au critère utilisé pour calculer le temps de réponse
K = control.dcgain(H) # Gain statique
# =========================
# Stabilité - Dépassement
if info['Peak'] <= K:
premier_depassement = 0
else:
premier_depassement = ((info['Peak'] - K) / K) * 100
# =========================
# Précision - Erreur statique
valeur_finale_reponse_indicielle = K
erreur_statique = (1 - K) * 100
# =========================
# Rapidité
temps_de_montee = info['RiseTime']
temps_de_reponse_a_5_pourcent = info['SettlingTime']
# =========================
# Affichage des résultats
print("\n--- Performances du système ---")
print(f"Valeur finale de la réponse indicielle : {valeur_finale_reponse_indicielle:.4f}")
print(f"Premier dépassement : {premier_depassement:.2f} %")
print(f"Erreur statique : {erreur_statique:.2f} %")
print(f"Temps de montée : {temps_de_montee:.4f} s")
print(f"Temps de réponse à 5 % : {temps_de_reponse_a_5_pourcent:.4f} s")
Caractéristiques fréquentielles
# =========================
# Pulsation de coupure à -3 dB
w_moins_3_dB = control.bandwidth(H)
# =========================
# Marges de stabilité
marge_gain, marge_phase, pulsation_moins180_deg, pulsation_0_dB = control.margin(FTBO)
# =========================
# Affichage des résultats
print('\n--- Analyse fréquentielle ---')
print(f'Pulsation de coupure à -3 dB : {w_moins_3_dB:.4f} rad/s')
print(f'Marge de gain : {20*np.log10(marge_gain):.4f} dB')
print(f'Marge de phase : {marge_phase:.4f} deg')
print(f'Pulsation à -180 deg : {pulsation_moins180_deg:.4f} rad/s')
print(f'Pulsation à 0 dB : {pulsation_0_dB:.4f} rad/s')