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')