Rust EtherCAT : Comment définir l'heure d'application DC à partir de l'horloge système
Voici comment définir l’heure d’application des horloges distribuées (DC) dans une application Rust EtherCAT à l’aide de la crate ethercat.
ethercat_time.rs
use chrono::TimeZone;
use std::time::{SystemTime, UNIX_EPOCH, Duration};
// requiert `chrono = "0.4"` dans Cargo.toml
let epoch_2000_secs = chrono::Utc.with_ymd_and_hms(2000, 1, 1, 0, 0, 0).unwrap().timestamp() as u64;
let epoch_2000 = UNIX_EPOCH + Duration::from_secs(epoch_2000_secs);
let app_time_ns = SystemTime::now()
.duration_since(epoch_2000)? // Result<Duration, _>
.as_nanos() as u64;
// La définir pour le maître EtherCAT
master.set_application_time(app_time_ns)?;Ce code garantit que, conformément à la spécification EtherCAT, l’heure d’application est définie par rapport à l’époque commençant le 2000-01-01, et non à l’époque Unix du 1970-01-01.
Dépendance Cargo.toml correspondante :
Cargo.toml
[dependencies]
chrono = "0.4"
ethercat = "*"Si cet article vous a aidé, pensez à m'offrir un café ou à faire un don via PayPal pour soutenir la recherche et la publication de nouveaux articles sur TechOverflow