/// <summary>
/// 联营板卡
/// </summary>
public class UWC : AxisModel
{
//public UWC() { }
public UWC() { }
public override bool Home()
{
double speed = Param.HomevelL;//回零低速
int rtn = UWC7000.uwc7000_go_home(AxisNum, speed);
WaitMoveDone();
Thread.Sleep(200);
IsHomed = true;
// UWC7000.uwc7000_set_coordinate(AxisNum, 0); // 设置机械坐标
// UWC7000.uwc7000_set_command_count(AxisNum, 0); // 设置指令坐标
return true;
}
private void Home(object sender, EventArgs e) // 回零运动
{
int[] status = new int[1];
int rtn = UWC7000.uwc7000_check_axis_done(0, status);
if (0 == status[0])
{
MainWindow.ShowMsg("该轴处于运动状态,回零失败!");
}
else
{
rtn = UWC7000.uwc7000_go_home(0, 10);
if (0 != rtn)
{
MainWindow.ShowMsg("回零失败!");
}
}
}
/// <summary>
/// 获取移动完成状态
/// </summary>
/// <returns></returns>
public bool GetMoveDone()
{
int[] status = new int[1]; // 轴状态
int rtn = UWC7000.uwc7000_check_axis_done(AxisNum, status);
return status[0] == 0;
}
/// <summary>
/// 等待移动完成
/// </summary>
/// <returns>完成为true</returns>
public override bool WaitMoveDone()
{
while (true)
{
if (GetMoveDone())
{
Thread.Sleep(10);
continue;
}
else
{
return true;
}
}
}
/// <summary>
/// 根据位置名称 获取位置 点位值
/// </summary>
/// <param name="axisPosType">位置名称</param>
/// <returns>点位值</returns>
public override double GetAxisPosList(string axisPosType)
{
double position = 0;
if (PosList != null && PosList.Count > 0)
{
var posObj = PosList.FirstOrDefault(t => t.Name.Equals(axisPosType));
if (posObj != null)
{
position = posObj.Position;
}
}
return position;
}
/// <summary>
/// 绝对运动
/// </summary>
/// <param name="pos">运动位置</param>
/// <returns></returns>
public override bool MoveAbs(double pos)
{
try
{
double speed = Param.Vel_Run;
if (speed > 5) speed = 5;
UWC7000.uwc7000_single_move_to(AxisNum, speed, pos);
return true;
}
catch (Exception)
{
return false;
}
}
/// <summary>
/// 获取当前坐标
/// </summary>
/// <returns></returns>
public override double GetCurPos()
{
double[] position = new double[64];
double curPos = 0;
int rtn = UWC7000.uwc7000_get_coordinate(position); // 机械坐标
if (0 == rtn)
{
curPos = position[AxisNum];
}
return curPos;
}
/// <summary>
/// 点动
/// </summary>
/// <param name="pos"></param>
/// <returns></returns>
public override bool MoveInc(double pos)
{
double dis = GetCurPos()+pos;
double speed = Param.Vel_Run;
UWC7000.uwc7000_single_move_to(AxisNum, speed, dis);
return true;
}
/// <summary>
/// 移动到指定位置
/// </summary>
/// <param name="posname">位置名称</param>
/// <returns></returns>
public override bool MoveAbs(string posname)
{
try
{
double dis = (double)(GetAxisPosList(posname));
double speed = Param.Vel_Run;
//单轴点位运动命令,使指定轴按照指定的速度移动到指定位置。
//speed:此次点位运动速度
//target_pos:此次点位运动的目标位置
UWC7000.uwc7000_single_move_to(AxisNum, speed, dis);
return true;
}
catch (Exception)
{
return false;
}
}
public override bool Jog( double speed)
{
try
{
UWC7000.uwc7000_jog_move(AxisNum, speed);
return true;
}
catch (Exception)
{
return false;
}
}
/// <summary>
/// 减速停止
/// </summary>
/// <returns></returns>
public override bool Stop()
{
return UWC7000.uwc7000_stop(AxisNum ,0)== 0; //减速停止
}
/// <summary>
/// 复位
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BTnReset_Click(object sender, EventArgs e)//复位
{
int rtn =UWC7000.uwc7000_clean_buf(0);
if (0 != rtn)
{
MainWindow.ShowMsg("清空缓存区失败!");
}
}
/// <summary>
/// 坐标清零
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnClear_Click(object sender, EventArgs e) // 坐标清零
{
int rtn = 0;
rtn = UWC7000.uwc7000_set_coordinate(0, 0); // 设置机械坐标
rtn = UWC7000.uwc7000_set_command_count(0, 0); // 设置指令坐标
if (0 != rtn)
{
MainWindow.ShowMsg("坐标清零失败!");
}
}
}