pub struct AxisConfig {
pub jog_speed: f64,
pub jog_accel: f64,
pub jog_decel: f64,
pub home_position: f64,
pub homing_speed: f64,
pub homing_accel: f64,
pub homing_decel: f64,
pub enable_max_position_limit: bool,
pub enable_min_position_limit: bool,
pub max_position_limit: f64,
pub min_position_limit: f64,
/* private fields */
}Expand description
Configuration for a single motion axis.
Stores encoder resolution, user-unit scaling, jog defaults,
and position limits. Used by Axis internally
and also available for direct use (e.g. logging, HMI display).
§Examples
use autocore_std::motion::AxisConfig;
// ClearPath with 12,800 counts/rev, user units = degrees
let cfg = AxisConfig::new(12_800).with_user_scale(360.0);
assert!((cfg.to_counts(45.0) - 1600.0).abs() < 0.01);
assert!((cfg.to_user(1600.0) - 45.0).abs() < 0.01);
// mm on a 5 mm/rev ballscrew
let mm = AxisConfig::new(12_800).with_user_scale(5.0);
assert!((mm.to_counts(5.0) - 12800.0).abs() < 0.01);Fields§
§jog_speed: f64Jog speed in user units/s.
jog_accel: f64Jog acceleration in user units/s².
jog_decel: f64Jog deceleration in user units/s².
home_position: f64User-unit position assigned at the home reference point.
homing_speed: f64Homing search speed in user units/s.
homing_accel: f64Homing acceleration in user units/s².
homing_decel: f64Homing deceleration in user units/s².
enable_max_position_limit: boolEnable the maximum (positive) software position limit.
enable_min_position_limit: boolEnable the minimum (negative) software position limit.
max_position_limit: f64Maximum position limit in user units.
min_position_limit: f64Minimum position limit in user units.
Implementations§
Source§impl AxisConfig
impl AxisConfig
Sourcepub fn new(counts_per_rev: u32) -> Self
pub fn new(counts_per_rev: u32) -> Self
Create a new configuration from encoder resolution.
Default user units are revolutions (1.0 user unit = 1 revolution).
Call with_user_scale to change.
Sourcepub fn with_user_scale(self, user_per_rev: f64) -> Self
pub fn with_user_scale(self, user_per_rev: f64) -> Self
Set user-units-per-revolution.
- Degrees:
.with_user_scale(360.0) - mm on 5 mm/rev ballscrew:
.with_user_scale(5.0)
Sourcepub fn to_counts(&self, user_units: f64) -> f64
pub fn to_counts(&self, user_units: f64) -> f64
Convert user units to encoder counts (f64).
to_counts(45.0) on a 12800 cpr / 360° config → 1600.0
Sourcepub fn to_user(&self, counts: f64) -> f64
pub fn to_user(&self, counts: f64) -> f64
Convert encoder counts to user units (f64).
to_user(1600.0) on a 12800 cpr / 360° config → 45.0
Sourcepub fn counts_per_user(&self) -> f64
pub fn counts_per_user(&self) -> f64
Encoder counts per user unit (scale factor).
For 12800 cpr / 360°: counts_per_user() ≈ 35.556
Trait Implementations§
Source§impl Clone for AxisConfig
impl Clone for AxisConfig
Source§fn clone(&self) -> AxisConfig
fn clone(&self) -> AxisConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more