|
@@ -196,6 +196,7 @@ namespace FurnaceRT.Devices
|
|
|
public string ErrorCode => $"{(_aiDriverErrorCode != null ? ((int)(_aiDriverErrorCode.FloatValue + 0.00001)).ToString("X") : "")}/{(_aiMotionErrorCode != null ? ((int)(_aiMotionErrorCode.FloatValue + 0.00001)).ToString("X") : "")}";
|
|
|
|
|
|
private bool _isFloatAioType = false;
|
|
|
+ public bool IsHomingState = false;
|
|
|
#endregion
|
|
|
|
|
|
#region properties
|
|
@@ -215,6 +216,7 @@ namespace FurnaceRT.Devices
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
+ public bool IsHomeing => _diHoming == null ? false : _diHoming.Value;
|
|
|
public bool IsHomeDone => _diHomeDone == null ? false : _diHomeDone.Value;
|
|
|
public bool IsInitDone => _diInitDone == null ? false : _diInitDone.Value;
|
|
|
public bool IsMoving => _diMoving == null ? false : _diMoving.Value;
|
|
@@ -250,7 +252,7 @@ namespace FurnaceRT.Devices
|
|
|
return _diServoOn.Value;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ private R_TRIG _homingTrig = new R_TRIG();
|
|
|
#endregion
|
|
|
|
|
|
public IoFurnaceMotor(string module, XmlElement node, string ioModule = "")
|
|
@@ -549,11 +551,16 @@ namespace FurnaceRT.Devices
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if (_diHomeDone != null && _diHomeDone.Value)
|
|
|
+ _homingTrig.CLK = !_diHoming.Value;
|
|
|
+ if (_homingTrig.Q)
|
|
|
{
|
|
|
- _doHome.SetValue(false, out _);
|
|
|
- _state = State.Idle;
|
|
|
- EV.PostInfoLog($"{Module}", $"{Name} Motor home finish");
|
|
|
+ if (_diHomeDone != null && _diHomeDone.Value)
|
|
|
+ {
|
|
|
+ _doHome.SetValue(false, out _);
|
|
|
+ _state = State.Idle;
|
|
|
+ IsHomingState = false;
|
|
|
+ EV.PostInfoLog($"{Module}", $"{Name} Motor home finish");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -710,6 +717,7 @@ namespace FurnaceRT.Devices
|
|
|
{
|
|
|
_doHome?.SetValue(true, out _);
|
|
|
_state = State.Homing;
|
|
|
+ IsHomingState = true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -894,6 +902,14 @@ namespace FurnaceRT.Devices
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
+ public bool CheckServoHomeDone()
|
|
|
+ {
|
|
|
+ if (IsHomeDone && IsReady)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
public bool ServoReset(out string reason)
|
|
|
{
|
|
|
reason = string.Empty;
|