diff --git a/src/main.rs b/src/main.rs index 9473a75769e3..4e6276bfdb57 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,10 +5,12 @@ use profirust::phy; mod tester_io; mod valve_terminal; -// Bus Parameters -const MASTER_ADDRESS: u8 = 1; +// Muss auf den passenden USB-RS485 Port abgeändert werden! const BUS_DEVICE: &'static str = "/dev/ttyUSB0"; -const BAUDRATE: profirust::Baudrate = profirust::Baudrate::B19200; + +// Bus Parameters +const MASTER_ADDRESS: u8 = 3; +const BAUDRATE: profirust::Baudrate = profirust::Baudrate::B500000; fn main() -> ! { env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")) @@ -23,19 +25,18 @@ fn main() -> ! { let mut tester_io = tester_io::TesterIo::new(&mut dp_master, BAUDRATE); let mut valve_terminal = valve_terminal::ValveTerminal::new(&mut dp_master, BAUDRATE); + // Bus-Parameter für USB-RS485 Converter sind hier beschrieben: https://docs.rs/profirust/latest/profirust/phy/struct.SerialPortPhy.html let mut fdl = fdl::FdlActiveStation::new( fdl::ParametersBuilder::new(MASTER_ADDRESS, BAUDRATE) - // We use a rather large T_slot time because USB-RS485 converters - // can induce large delays at times. - .slot_bits(960) + .slot_bits(4000) + .max_retry_limit(3) // 2 Sekunden Watchdog Timeout .watchdog_timeout(profirust::time::Duration::from_secs(2)) .build_verified(&dp_master), ); - // We must not poll() too often or to little. T_slot / 2 seems to be a good compromise. - let sleep_time: std::time::Duration = (fdl.parameters().slot_time() / 2).into(); + let sleep_time = std::time::Duration::from_micros(3500); - log::info!("Verbindung mit dem Bus wird aufgebaut..."); + log::info!("Verbindung mit dem Bus {BUS_DEVICE:?} wird aufgebaut..."); let mut phy = phy::SerialPortPhy::new(BUS_DEVICE, fdl.parameters().baudrate); fdl.set_online();