264 lines
7.4 KiB
C#
264 lines
7.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.ComponentModel;
|
|
|
|
|
|
namespace Project
|
|
{
|
|
public class System_MotParameter
|
|
{
|
|
|
|
string filename;
|
|
public DSSetup.MotionParamDataTable dt;
|
|
public int MotaxisCount
|
|
{
|
|
get
|
|
{
|
|
if (this.dt.Rows.Count < 1) return 0;
|
|
var maxid = this.dt.Max(t => t.idx);
|
|
return maxid + 1;
|
|
}
|
|
}
|
|
|
|
|
|
double[] _maxspeed;
|
|
public double MaxSpeed(int idx)
|
|
{
|
|
var dr = dt.Where(t => t.idx == idx).FirstOrDefault();
|
|
if (dr == null) return 0;
|
|
else return dr.MaxSpeed;
|
|
}
|
|
public double[] GetMaxSpeed
|
|
{
|
|
get
|
|
{
|
|
if (MotaxisCount < 1) return null;
|
|
|
|
if (_maxspeed == null || _maxspeed.Length != MotaxisCount)
|
|
{
|
|
_maxspeed = new double[MotaxisCount];
|
|
for (int i = 0; i < MotaxisCount; i++)
|
|
{
|
|
_maxspeed[i] = MaxSpeed(i);
|
|
}
|
|
}
|
|
|
|
return _maxspeed;
|
|
}
|
|
}
|
|
|
|
public void ClearCache()
|
|
{
|
|
_maxspeed = null;
|
|
_maxacc = null;
|
|
}
|
|
|
|
double[] _maxacc;
|
|
|
|
public double MaxAcc(int idx)
|
|
{
|
|
var dr = dt.Where(t => t.idx == idx).FirstOrDefault();
|
|
if (dr == null) return 0;
|
|
else return dr.MaxAcc;
|
|
}
|
|
|
|
public double[] GetMaxAcc
|
|
{
|
|
get
|
|
{
|
|
if (MotaxisCount < 1) return null;
|
|
|
|
if (_maxacc == null || _maxacc.Length != MotaxisCount)
|
|
{
|
|
_maxacc = new double[MotaxisCount];
|
|
for (int i = 0; i < MotaxisCount; i++)
|
|
{
|
|
_maxacc[i] = MaxAcc(i);
|
|
}
|
|
}
|
|
return _maxacc;
|
|
}
|
|
}
|
|
|
|
public double HomeSpeedHigh(int idx)
|
|
{
|
|
var dr = dt.Where(t => t.idx == idx).FirstOrDefault();
|
|
if (dr == null) return 30;
|
|
else return dr.HomeHigh;
|
|
}
|
|
public double[] GetHomeSpeedHigh
|
|
{
|
|
get
|
|
{
|
|
if (MotaxisCount < 1) return null;
|
|
var retval = new double[MotaxisCount];
|
|
for (int i = 0; i < MotaxisCount; i++)
|
|
{
|
|
retval[i] = HomeSpeedHigh(i);
|
|
}
|
|
return retval;
|
|
}
|
|
}
|
|
public double HomeSpeedLow(int idx)
|
|
{
|
|
var dr = dt.Where(t => t.idx == idx).FirstOrDefault();
|
|
if (dr == null) return 10;
|
|
else return dr.HomeLow;
|
|
}
|
|
public double[] GetHomeSpeedLow
|
|
{
|
|
get
|
|
{
|
|
if (MotaxisCount < 1) return null;
|
|
var retval = new double[MotaxisCount];
|
|
for (int i = 0; i < MotaxisCount; i++)
|
|
{
|
|
retval[i] = HomeSpeedLow(i);
|
|
}
|
|
return retval;
|
|
}
|
|
}
|
|
public double HomeSpeedAcc(int idx)
|
|
{
|
|
var dr = dt.Where(t => t.idx == idx).FirstOrDefault();
|
|
if (dr == null) return 50;
|
|
else return dr.HomeAcc;
|
|
}
|
|
public double[] GetHomeSpeedAcc
|
|
{
|
|
get
|
|
{
|
|
if (MotaxisCount < 1) return null;
|
|
var retval = new double[MotaxisCount];
|
|
for (int i = 0; i < MotaxisCount; i++)
|
|
{
|
|
retval[i] = HomeSpeedAcc(i);
|
|
}
|
|
return retval;
|
|
}
|
|
}
|
|
public Boolean UseEStopSignal(int idx)
|
|
{
|
|
var dr = dt.Where(t => t.idx == idx).FirstOrDefault();
|
|
if (dr == null) return false;
|
|
else return dr.UseEStop;
|
|
}
|
|
|
|
public Boolean UseOriginSignal(int idx)
|
|
{
|
|
var dr = dt.Where(t => t.idx == idx).FirstOrDefault();
|
|
if (dr == null) return false;
|
|
else return dr.UseOrigin;
|
|
}
|
|
|
|
public Boolean UseAxis(int idx)
|
|
{
|
|
var dr = dt.Where(t => t.idx == idx).FirstOrDefault();
|
|
if (dr == null) return false;
|
|
else return dr.Enable;
|
|
}
|
|
public double SWLimit(int idx)
|
|
{
|
|
var dr = dt.Where(t => t.idx == idx).FirstOrDefault();
|
|
if (dr == null) return 0;
|
|
else return dr.SWLimitP;
|
|
}
|
|
|
|
public double HomeSpeedDcc(int idx)
|
|
{
|
|
var dr = dt.Where(t => t.idx == idx).FirstOrDefault();
|
|
if (dr == null) return 50;
|
|
else return dr.HomeDcc;
|
|
}
|
|
|
|
|
|
public float INPAccurary(int idx)
|
|
{
|
|
var dr = dt.Where(t => t.idx == idx).FirstOrDefault();
|
|
if (dr == null) return 0.1f;
|
|
else return dr.InpositionAccr;
|
|
}
|
|
|
|
public double[] GetHomeSpeedDcc
|
|
{
|
|
get
|
|
{
|
|
if (MotaxisCount < 1) return null;
|
|
var retval = new double[MotaxisCount];
|
|
for (int i = 0; i < MotaxisCount; i++)
|
|
{
|
|
retval[i] = HomeSpeedDcc(i);
|
|
}
|
|
return retval;
|
|
}
|
|
}
|
|
public Boolean[] GetUseAxis
|
|
{
|
|
get
|
|
{
|
|
if (MotaxisCount < 1) return null;
|
|
var retval = new bool[MotaxisCount];
|
|
for (int i = 0; i < MotaxisCount; i++)
|
|
{
|
|
retval[i] = UseAxis(i);
|
|
}
|
|
return retval;
|
|
}
|
|
}
|
|
public Boolean[] GetUseOrigin
|
|
{
|
|
get
|
|
{
|
|
if (MotaxisCount < 1) return null;
|
|
var retval = new bool[MotaxisCount];
|
|
for (int i = 0; i < MotaxisCount; i++)
|
|
{
|
|
retval[i] = UseOriginSignal(i);
|
|
}
|
|
return retval;
|
|
}
|
|
}
|
|
|
|
public Boolean[] GetUseEStop
|
|
{
|
|
get
|
|
{
|
|
if (MotaxisCount < 1) return null;
|
|
var retval = new bool[MotaxisCount];
|
|
for (int i = 0; i < MotaxisCount; i++)
|
|
{
|
|
retval[i] = UseEStopSignal(i);
|
|
}
|
|
return retval;
|
|
}
|
|
}
|
|
public System_MotParameter(string filename)
|
|
{
|
|
this.filename = filename;
|
|
//if (string.IsNullOrEmpty(filename)
|
|
//this.filename = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "system_mot.xml");
|
|
dt = new DSSetup.MotionParamDataTable();
|
|
}
|
|
public void Save(DSSetup.MotionParamDataTable dt)
|
|
{
|
|
this.dt.Clear();
|
|
this.dt.Merge(dt);
|
|
this.dt.AcceptChanges();
|
|
if (string.IsNullOrEmpty(this.filename) == false)
|
|
this.dt.WriteXml(this.filename);
|
|
}
|
|
public void Load()
|
|
{
|
|
if (string.IsNullOrEmpty(this.filename) == false)
|
|
{
|
|
dt.Clear();
|
|
if (System.IO.File.Exists(this.filename))
|
|
dt.ReadXml(this.filename);
|
|
dt.AcceptChanges();
|
|
}
|
|
}
|
|
}
|
|
}
|