Commit e002c0f5 authored by 潘栩锋's avatar 潘栩锋 🚴

优化 AD盒脉冲3秒不变化。 状态设置为手动停止

parent f64acccb
......@@ -348,14 +348,17 @@ namespace FlyADBase
/// 用于检测当 为IsRunning时,脉冲是否停了很久。
/// </summary>
int last_position = int.MinValue;
/// <summary>
/// 脉冲不变化次数
/// </summary>
int position_no_changed_cnt = 0;
TimeSpan NoTGridTimeOut = TimeSpan.FromSeconds(60);
Stopwatch stopwatch_noTGrid = new Stopwatch();
IsReadyContext isReadyContext = new IsReadyContext();
SysTickContext sysTickContext = new SysTickContext();
......@@ -366,7 +369,8 @@ namespace FlyADBase
string jsonDbPath;
DateTime lastTimeGridTime;
static FlyAD7() {
static FlyAD7()
{
propertyName_save = FlyAD7JsonDb.GetMemberNames();
}
/// <summary>
......@@ -456,17 +460,33 @@ namespace FlyADBase
() =>
{
if (!IsConnected)
{
position_no_changed_cnt = 0;
return;
}
if (DriveStatus != DRIVE_MAN_STATUS.RUNNING)
{
position_no_changed_cnt = 0;
return;
}
if (Position != last_position)
{
last_position = Position;
position_no_changed_cnt = 0;
return;
}
if (driveman_wait.CheckMark(TimeSpan.FromSeconds(3)))//每3秒检查一次
position_no_changed_cnt++;
if (position_no_changed_cnt >= 3)
{
//连续3秒,脉冲一样
//异常
DriveStatus = DRIVE_MAN_STATUS.STOP_MANUAL;
position_no_changed_cnt = 0;
return;
}
if (driveman_wait.CheckMark(TimeSpan.FromSeconds(2)))//每2秒检查一次
{
driveman_wait.Mark();
CurrObjSys.GetValueEx(
......@@ -593,7 +613,8 @@ namespace FlyADBase
ID,
FLYAD7_OBJ_INTERFACE.SYS_DATA_INTERFACE.GET_ZERO_POS);
}
else {
else
{
//参数不保存在设备中, 保存在电脑。
//参数写入到设备。
NotifyPropertyChanged(nameof(MotorType));
......@@ -658,7 +679,7 @@ namespace FlyADBase
ID,
FLYAD7_OBJ_INTERFACE.FLYIO_OBJ_INTERFACE.GET_IO);
NotifyPropertyChanged(nameof(Pos1LCShift));//写入到AD盒
NotifyPropertyChanged(nameof(Pos2LCShift));//写入到AD盒
......@@ -908,7 +929,7 @@ namespace FlyADBase
Position = pack.pos1;
DateTime dt = sysTickContext.ToDateTime(pack.systick);
Now = dt;
PositionChangedEvent?.Invoke(this, new PositionChangedEventArgs() { Time = dt, Position = Position });
}
calSpeed.SetPos1(Now, Position);
......@@ -933,7 +954,7 @@ namespace FlyADBase
Position2 = pack.pos2;
DateTime dt = sysTickContext.ToDateTime(pack.systick);
Now = dt;
Position2ChangedEvent?.Invoke(this, new PositionChangedEventArgs() { Time = dt, Position = Position });
}
calSpeed.SetPos2(Now, Position2);
......@@ -1158,7 +1179,7 @@ namespace FlyADBase
}
break;
}
_end_push_info:
_end_push_info:
bShieldSetValueEx = false;
}
......@@ -1183,7 +1204,7 @@ namespace FlyADBase
ID,
FLYAD7_OBJ_INTERFACE.DRIVE_MAN_INTERFACE.CALL_PXX,
new FLYAD7_OBJ_INTERFACE.DRIVE_MAN_INTERFACE.Pack_CallRunto() { to = TargetPos }.ToBytes());
}
break;
case DRIVE_MAN_ORDER.ORIGIN:
......@@ -1256,9 +1277,9 @@ namespace FlyADBase
bool ret = FlyAD7JsonDb.Load(jsonDbPath, this);
bShieldSetValueEx = false;
this.PropertyChanged += FlyAD7_PropertyChanged2;
return ret;
}
......@@ -1454,7 +1475,7 @@ namespace FlyADBase
/// <param name="velocity"></param>
public void SetVelocity(UInt32 velocity)
{
SetPosParam(velocity,UInt32.MaxValue, UInt32.MaxValue, UInt32.MaxValue, UInt32.MaxValue, UInt32.MaxValue);
SetPosParam(velocity, UInt32.MaxValue, UInt32.MaxValue, UInt32.MaxValue, UInt32.MaxValue, UInt32.MaxValue);
}
/// <summary>
......@@ -1477,7 +1498,7 @@ namespace FlyADBase
FLYAD7_OBJ_INTERFACE.SYS_DATA_INTERFACE.GET_SYSINFO);
}
/// <summary>
/// 初始化系统信息区
/// </summary>
......@@ -1789,12 +1810,12 @@ namespace FlyADBase
//备份参数
public bool IsDevParamValid = false;
public MOTORTYPE MotorType = MOTORTYPE.SERVO;
public MOTORTYPE MotorType = MOTORTYPE.SERVO;
public UInt16 PosOfGrid = 10;
public UInt16 Ratio01 = 4;
public UInt16 Ratio02 = 1;
public Int16 PosOffset = 0;
public UInt32 JogVelocity = 1000;
public UInt32 JogVelocity = 1000;
/// <summary>
/// 硬件版本
......@@ -1805,8 +1826,9 @@ namespace FlyADBase
public int HardwareVersion = 2;
public static string[] GetMemberNames() {
var type = typeof(FlyAD7JsonDb);
public static string[] GetMemberNames()
{
var type = typeof(FlyAD7JsonDb);
return type.GetMembers().Select(mi => mi.Name).ToArray();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment