Il runtime di sicurezza mostra gli errori di temporizzazione nel file di registro.
Preparazioni:
Stai gestendo un CODESYS Safe Control SL o CODESYS Virtual Safe Control SL combinato con CODESYS Safe Time Provider.
Risoluzione dei problemi
Se si riscontrano problemi segnalati dal CODESYS Safe Control Ambiente di runtime SL e menziona i problemi di temporizzazione (da CmpSIL3
componente), allora potreste avere problemi di temporizzazione nella rete Safe Time che dovreste esaminare.
#### Exception: ID: 0x40000066 <p0>0xb633</p0> <p1>0xbcdd</p1> <p2>0xbce1</p2> <p3>0xb2fd</p3> <p4>0x0</p4>
0x40000065
: Canale di eccezione x: verifica della plausibilità del timestamp locale per il tempo di ciclo0x40000066
: Canale di eccezione x: verifica della plausibilità del timestamp remoto rispetto al tempo di ciclo0x40000067
: Canale di eccezione x: verifica della plausibilità del timestamp remoto rispetto al timestamp locale
Avviso
La rete del tempo sicuro (tra CODESYS Safe Time Provider e il CODESYS Safe Control ambiente di runtime) ha gli stessi elevati requisiti di stabilità e tempo reale di una rete fieldbus (ad esempio, EtherCAT o Profinet).
Tracciamento con tcpdump
È possibile creare facilmente una traccia sulla riga di comando di Linux utilizzando tcpdump
strumento. Se conosci già Wireshark o un dispositivo di tracciamento hardware, puoi utilizzarlo anche per creare
Determina la scheda di rete che desideri tracciare.
Scopri cosa vuoi tracciare (contenuto, tipo di pacchetto, registro, ecc.) per ridurre la traccia.
Comandi utili
Installare tcpdump
(a seconda della distribuzione o della gestione dei pacchetti software)
Ad esempio, basato su Debian/Ubuntu «apt»:
sudo apt install tcpdump
Basato su Red Hat «YUM/DNF»:
sudo yum install tcpdump
Puoi vedere tutti gli adattatori di rete disponibili che tcpdump
può monitorare:
> tcpdump -D 1.eno1 [Up, Running, Connected] 2.any (Pseudo-device that captures on all interfaces) [Up, Running] 3.lo [Up, Running, Loopback]
Avviso
È possibile correre tcpdump
come utente normale. Se vuoi farlo, leggi il tcpdump
documentazione per maggiori dettagli.
argomenti della riga di comando tcpdump
Dettagli su tutti i comandi possibili con tcpdump
può essere trovato in tcpdump
pagina man: https://www.tcpdump.org/manpages/tcpdump.1.html
Oppure chiama tcpdump
:
> tcpdump --help tcpdump version 4.99.3 libpcap version 1.10.3 (with TPACKET_V3) OpenSSL 3.0.15 3 Sep 2024 Usage: tcpdump [-AbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [--count] [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ] [ -i interface ] [ --immediate-mode ] [ -j tstamptype ] [ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ] [ -r file ] [ -s snaplen ] [ -T type ] [ --version ] [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ] [ --time-stamp-precision precision ] [ --micro ] [ --nano ] [ -z postrotate-command ] [ -Z user ] [ expression ]
Bandiera (corta/lunga) | Descrizione |
---|---|
| Restituisce l'elenco delle interfacce di rete disponibili sul sistema e in cui |
| Interroga l'interfaccia e restituisce le seguenti informazioni:
|
| Termina la query dopo aver ricevuto o letto un numero di pacchetti |
| Impedisce la conversione degli indirizzi (indirizzi host, numeri di porta, ecc.) in nomi |
| Emette ogni pacchetto (meno l'intestazione a livello di collegamento) in formato ASCII |
| Durante l'analisi, oltre alle intestazioni di ciascun pacchetto, stampa i dati di ciascun pacchetto (meno le intestazioni a livello di collegamento) in formato esadecimale |
| Utilizza |
| Scrive i pacchetti di dati grezzi in un file invece di analizzarli e stamparli |
| Impedisce l'emissione di un timestamp in ogni riga di dump |
| Restituisce il timestamp, in secondi dal 1° gennaio 1970, 00:00:00, UTC e frazioni di secondo da quel momento, in ogni riga di dump |
| Stampa una risoluzione delta (microsecondi o nanosecondi), a seconda |
| Stampa un timestamp, in ore, minuti, secondi e frazioni di secondo dalla mezzanotte, su ogni riga di dump. L'output è preceduto dalla data |
| Fornisce informazioni aggiuntive (dettagliate) |
Tracciamento del pacco
Acquisizione e output semplici sulla console:
> sudo tcpdump -i <interfacename> # e.g. with interface "eno1": > sudo tcpdump -i eno1
Acquisizione e riproduzione come file compatibile con Wireshark
> sudo tcpdump -i <interfacename> -w <file> # e.g. > sudo tcpdump -i eno1 -w myfirsttrace.pcap
Quindi il file myfirsttrace.pcap
può essere aperto in Wireshark. (.pcap
è l'estensione di file predefinita per i file di traccia di Wireshark.)
> sudo tcpdump -i eno1 -w myfirsttrace.cap -s 200 udp port 60000
Indagine/analisi
Registra la traccia sull'host del Safe Control SL (lato ricevente della comunicazione timeprovider), come mostrato nell'esempio precedente.
Quindi apri il file *.pcap con Wireshark. Assomiglierà a questo
Noterai che i pacchi vengono normalmente inviati con un intervallo di 1 millisecondo (la differenza di tempo tra i pacchi). (Vedi pacchetto numero 58
Una tipica situazione problematica in cui CODESYS Safe Control SL emetterà un'eccezione/problema dovuto alla tempistica, visibile nel pacchetto numero 74: questo pacchetto viene ricevuto ~2 ms dopo il pacchetto precedente, quindi il ritardo è di ~1 ms. Questo non è accettabile per CODESYS Safe Control SL come timestamp affidabile e in tempo reale.
. Azioni per ridurre il ritardoScopri se il problema è visibile sul lato ricevente o mittente. È necessario considerare sia il lato ricevente (CODESYS Safe Control Host) e il lato mittente (CODESYS Safe Time Provider Host).
Migliora le funzionalità in tempo reale e la robustezza di questa comunicazione con timestamp in generale. Puoi farlo rimuovendo le altre comunicazioni e il carico che interferiscono da questa rete (utilizzalo esclusivamente
Migliora le prestazioni di invio e ricezione configurando la priorità di processo dell'IRQ corrispondente (del driver di rete).
Se non riesci a migliorare ulteriormente e se il tuo processo di sicurezza lo consente, puoi aumentare il tempo di ciclo del CODESYS Safe Time Provider (invio del timestamp).