01-06-2026, 05:35 PM
Pour revenir à Diretta et à sa mise en oeuvre avec désormais le DDS, je n'ai toujours pas (vraiment) saisi les objectifs à atteindre pour réduire au minimum le jitter en accordant host et target.
ex : est-ce qu'il vaut mieux un ou plusieurs paquets par cycle ? Comment gérer la fréquence de transfert (Transfer cycle) ..
Au final comment optimiser le fichier "setting.inf" ?
... en fonction de ses usages (ex pour moi : alimentation de la target en DSD 1028 et donc ethernet à 100Mb/s (MTU 16114 et 16112x1ppc)
Je vous mets en copie le script d'analyse log fait en python via IA .. fiable (??).
Il faut renseigner le path des log :
Script "diretta_info_rcv_analysis.py" :
ex : est-ce qu'il vaut mieux un ou plusieurs paquets par cycle ? Comment gérer la fréquence de transfert (Transfer cycle) ..
Au final comment optimiser le fichier "setting.inf" ?
... en fonction de ses usages (ex pour moi : alimentation de la target en DSD 1028 et donc ethernet à 100Mb/s (MTU 16114 et 16112x1ppc)
Je vous mets en copie le script d'analyse log fait en python via IA .. fiable (??).
Il faut renseigner le path des log :
Code :
LOG_FILES = [
"149_2x1.log",
"149_3x1.log",
"149_2x2.log"
]Script "diretta_info_rcv_analysis.py" :
Code :
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Diretta ASIO 'info rcv' Log Analyzer
-----------------------------------
Analyse jitter / stabilité pour Diretta (v1 / v2 / v3)
Compatible Windows / Linux
Requis : python >= 3.8
Libs : pandas, matplotlib
"""
import re
import sys
from pathlib import Path
import pandas as pd
import matplotlib.pyplot as plt
# =========================
# CONFIGURATION
# =========================
LOG_FILES = [
"149_2x1.log",
"149_3x1.log",
"149_2x2.log"
]
OUTPUT_DIR = "diretta_analysis"
JITTER_THRESHOLD = 0.002 # seuil v3 jugé critique
# =========================
# EXTRACTION
# =========================
def extract_info_rcv(path: Path) -> pd.DataFrame:
pattern = re.compile(
r"info rcv\s+\d+\s+([+-]?\d+\.\d+)\s+([+-]?\d+\.\d+)\s+([+-]?\d+\.\d+)"
)
rows = []
with path.open(encoding="utf-8", errors="ignore") as f:
for line in f:
m = pattern.search(line)
if m:
rows.append([float(m.group(1)),
float(m.group(2)),
float(m.group(3))])
return pd.DataFrame(rows, columns=["v1", "v2", "v3"])
# =========================
# ANALYSE
# =========================
def analyze(df: pd.DataFrame) -> dict:
return {
"samples": len(df),
"v3_rms": (df["v3"]**2).mean() ** 0.5,
"v3_peak_to_peak": df["v3"].max() - df["v3"].min(),
"v3_std": df["v3"].std(),
"unstable_events_%": 100.0 * (df["v3"].abs() > JITTER_THRESHOLD).sum() / len(df),
}
# =========================
# GRAPHIQUES
# =========================
def plot_time_series(dfs):
plt.figure(figsize=(14, 5))
for name, df in dfs.items():
plt.plot(df["v3"].values, label=name)
plt.title("Diretta – v3 (jitter) dans le temps")
plt.xlabel("Index")
plt.ylabel("v3")
plt.legend()
plt.tight_layout()
plt.show()
def plot_histograms(dfs):
plt.figure(figsize=(14, 5))
for name, df in dfs.items():
plt.hist(df["v3"], bins=60, alpha=0.5, label=name)
plt.title("Distribution du jitter (v3)")
plt.xlabel("v3")
plt.ylabel("Occurrences")
plt.legend()
plt.tight_layout()
plt.show()
def plot_boxplots(dfs):
plt.figure(figsize=(12, 5))
plt.boxplot([df["v3"] for df in dfs.values()],
tick_labels=list(dfs.keys()),
showfliers=True)
plt.title("Comparaison du jitter (v3) – Boxplot")
plt.ylabel("v3")
plt.tight_layout()
plt.show()
# =========================
# MAIN
# =========================
def main():
out = Path(OUTPUT_DIR)
out.mkdir(exist_ok=True)
dfs = {}
stats = []
for log in LOG_FILES:
path = Path(log)
if not path.exists():
print(f"[!] Fichier absent : {log}")
continue
df = extract_info_rcv(path)
dfs[log] = df
s = analyze(df)
s["log"] = log
stats.append(s)
# Résumé chiffré
summary = pd.DataFrame(stats).set_index("log")
print("\n=== Résumé jitter Diretta (v3) ===\n")
print(summary.round(6))
# Graphes
plot_time_series(dfs)
plot_histograms(dfs)
plot_boxplots(dfs)
if __name__ == "__main__":
main()
! Mon installation !
ROON + HQP / Hdplex H3-i5 > DST-00 Diretta > HOLO Spring 3 > SQM > Benchmark AHB2 / Wilson Benesch Square5
ROON + HQP / Hdplex H3-i5 > DST-00 Diretta > HOLO Spring 3 > SQM > Benchmark AHB2 / Wilson Benesch Square5
