aggiunta gestione posizione assi
This commit is contained in:
@@ -18,12 +18,20 @@ namespace MTC_Adapter
|
||||
/// Area di memoria "Top" che contiene le informazioni principali x adpter (da scompattare), dato overhead lettura la leggiamo sempre tutta poi alla bisogna processamento...
|
||||
/// </summary>
|
||||
public byte[] MemBlockTop = new byte[284];
|
||||
/// <summary>
|
||||
/// Vettore posizione assi (MAX 16...)
|
||||
/// </summary>
|
||||
public uint[] axisPosData = new uint[16];
|
||||
|
||||
/// <summary>
|
||||
/// Area di memoria base x MTConnect con SIEMENS (DB1499)
|
||||
/// </summary>
|
||||
protected int baseMemDb = 1499;
|
||||
/// <summary>
|
||||
/// Area di memoria base x dati ASSI (241)
|
||||
/// </summary>
|
||||
protected int baseMemAx = 241;
|
||||
/// <summary>
|
||||
/// Area di memoria base x dati UTENSILE (DB253)
|
||||
/// </summary>
|
||||
protected int baseMemUT = 253;
|
||||
@@ -951,19 +959,6 @@ namespace MTC_Adapter
|
||||
{
|
||||
// mostro assi in DataMonitor......
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
#if false
|
||||
inizio = DateTime.Now;
|
||||
CMSCncLib.Focas1.ODBPOS posAssi = SIEMENS_ref.getAllAxisPos();
|
||||
if (utils.CRB("recTime")) TimingData.addResult("R-AXIS_POS", DateTime.Now.Subtract(inizio).Ticks);
|
||||
|
||||
inizio = DateTime.Now;
|
||||
CMSCncLib.Focas1.ODBSVLOAD loadAssi = SIEMENS_ref.getAllAxisLoad();
|
||||
if (utils.CRB("recTime")) TimingData.addResult("R-AXIS_LOAD", DateTime.Now.Subtract(inizio).Ticks);
|
||||
|
||||
CMSCncLib.Focas1.LOADELM valLoad = new CMSCncLib.Focas1.LOADELM();
|
||||
CMSCncLib.Focas1.POSELMALL valPos = new CMSCncLib.Focas1.POSELMALL();
|
||||
|
||||
// nuova posizione (per calcoli)
|
||||
double newPos = 0;
|
||||
double distPerc = 0;
|
||||
@@ -971,155 +966,34 @@ namespace MTC_Adapter
|
||||
string tipoAsse = "";
|
||||
string direzione = "";
|
||||
|
||||
// leggo le posizioni SINO ai 16 assi permessi...
|
||||
|
||||
int memIndex = 0;
|
||||
// leggo TUTTI i primi 284 byte...
|
||||
inizio = DateTime.Now;
|
||||
SIEMENSMemRW_DWord(R, baseMemAx, memIndex, ref axisPosData);
|
||||
if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-AXIS_POS", MemBlockTop.Length), DateTime.Now.Subtract(inizio).Ticks);
|
||||
|
||||
for (int i = 0; i < currAdpConf.nAxis; i++)
|
||||
{
|
||||
// per sicurezza try-catch
|
||||
try
|
||||
{
|
||||
// in base a indice scelgo valore posizione e load
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
valPos = posAssi.p1;
|
||||
valLoad = loadAssi.svload1;
|
||||
break;
|
||||
case 1:
|
||||
valPos = posAssi.p2;
|
||||
valLoad = loadAssi.svload2;
|
||||
break;
|
||||
case 2:
|
||||
valPos = posAssi.p3;
|
||||
valLoad = loadAssi.svload3;
|
||||
break;
|
||||
case 3:
|
||||
valPos = posAssi.p4;
|
||||
valLoad = loadAssi.svload4;
|
||||
break;
|
||||
case 4:
|
||||
valPos = posAssi.p5;
|
||||
valLoad = loadAssi.svload5;
|
||||
break;
|
||||
case 5:
|
||||
valPos = posAssi.p6;
|
||||
valLoad = loadAssi.svload6;
|
||||
break;
|
||||
case 6:
|
||||
valPos = posAssi.p7;
|
||||
valLoad = loadAssi.svload7;
|
||||
break;
|
||||
case 7:
|
||||
valPos = posAssi.p8;
|
||||
valLoad = loadAssi.svload8;
|
||||
break;
|
||||
case 8:
|
||||
valPos = posAssi.p9;
|
||||
valLoad = loadAssi.svload9;
|
||||
break;
|
||||
case 9:
|
||||
valPos = posAssi.p10;
|
||||
valLoad = loadAssi.svload10;
|
||||
break;
|
||||
case 10:
|
||||
valPos = posAssi.p11;
|
||||
valLoad = loadAssi.svload11;
|
||||
break;
|
||||
case 11:
|
||||
valPos = posAssi.p12;
|
||||
valLoad = loadAssi.svload12;
|
||||
break;
|
||||
case 12:
|
||||
valPos = posAssi.p13;
|
||||
valLoad = loadAssi.svload13;
|
||||
break;
|
||||
case 13:
|
||||
valPos = posAssi.p14;
|
||||
valLoad = loadAssi.svload14;
|
||||
break;
|
||||
case 14:
|
||||
valPos = posAssi.p15;
|
||||
valLoad = loadAssi.svload15;
|
||||
break;
|
||||
case 15:
|
||||
valPos = posAssi.p16;
|
||||
valLoad = loadAssi.svload16;
|
||||
break;
|
||||
case 16:
|
||||
valPos = posAssi.p17;
|
||||
valLoad = loadAssi.svload17;
|
||||
break;
|
||||
case 17:
|
||||
valPos = posAssi.p18;
|
||||
valLoad = loadAssi.svload18;
|
||||
break;
|
||||
case 18:
|
||||
valPos = posAssi.p19;
|
||||
valLoad = loadAssi.svload19;
|
||||
break;
|
||||
case 19:
|
||||
valPos = posAssi.p20;
|
||||
valLoad = loadAssi.svload20;
|
||||
break;
|
||||
case 20:
|
||||
valPos = posAssi.p21;
|
||||
valLoad = loadAssi.svload21;
|
||||
break;
|
||||
case 21:
|
||||
valPos = posAssi.p22;
|
||||
valLoad = loadAssi.svload22;
|
||||
break;
|
||||
case 22:
|
||||
valPos = posAssi.p23;
|
||||
valLoad = loadAssi.svload23;
|
||||
break;
|
||||
case 23:
|
||||
valPos = posAssi.p24;
|
||||
valLoad = loadAssi.svload24;
|
||||
break;
|
||||
case 24:
|
||||
valPos = posAssi.p25;
|
||||
valLoad = loadAssi.svload25;
|
||||
break;
|
||||
case 25:
|
||||
valPos = posAssi.p26;
|
||||
valLoad = loadAssi.svload26;
|
||||
break;
|
||||
case 26:
|
||||
valPos = posAssi.p27;
|
||||
valLoad = loadAssi.svload27;
|
||||
break;
|
||||
case 27:
|
||||
valPos = posAssi.p28;
|
||||
valLoad = loadAssi.svload28;
|
||||
break;
|
||||
case 28:
|
||||
valPos = posAssi.p29;
|
||||
valLoad = loadAssi.svload29;
|
||||
break;
|
||||
case 29:
|
||||
valPos = posAssi.p30;
|
||||
valLoad = loadAssi.svload30;
|
||||
break;
|
||||
case 30:
|
||||
valPos = posAssi.p31;
|
||||
valLoad = loadAssi.svload31;
|
||||
break;
|
||||
case 31:
|
||||
valPos = posAssi.p32;
|
||||
valLoad = loadAssi.svload32;
|
||||
break;
|
||||
default:
|
||||
// 2017.03.01 suggerimento Fabio: in CMS_SIEMENS in advanced compiler options mettere FS30D=1,SIEMENS=1 x leggere + assi?!?
|
||||
valPos = posAssi.p1;
|
||||
valLoad = loadAssi.svload1;
|
||||
break;
|
||||
}
|
||||
// popolo valori... ipotesi CENTESIMI di mm...
|
||||
newPos = axisPosData[i] / 100;
|
||||
|
||||
// popolo valori...
|
||||
// manca LOAD assi
|
||||
#if false
|
||||
vettAxis[i].mAxLoad.Value = (double)(valLoad.data) / Math.Pow(10, valLoad.dec);
|
||||
newPos = (double)(valPos.abs.data) / Math.Pow(10, valPos.abs.dec);
|
||||
newPos = (double)(valPos.abs.data) / Math.Pow(10, valPos.abs.dec);
|
||||
#endif
|
||||
vettAxis[i].mAxPosAct.Value = newPos;
|
||||
|
||||
// manca pos TGT...
|
||||
#if false
|
||||
vettAxis[i].mAxPosTgt.Value = newPos + (double)(valPos.dist.data) / Math.Pow(10, valPos.dist.dec);
|
||||
|
||||
#endif
|
||||
vettAxis[i].mAxFeedAct.Value = FeedRate;
|
||||
|
||||
// calcolo distanza e salvo valore...
|
||||
@@ -1152,7 +1026,8 @@ namespace MTC_Adapter
|
||||
|
||||
if (utils.CRB("verbose"))
|
||||
{
|
||||
sb.AppendLine(string.Format("Asse {0}: PosAct:{1:N3}, ToGo:{2:N3}{3} | {4}", valPos.abs.name, (double)(valPos.abs.data) / Math.Pow(10, valPos.abs.dec), valPos.dist.name, (double)(valPos.dist.data) / Math.Pow(10, valPos.dist.dec), direzione));
|
||||
sb.AppendLine(string.Format("Asse {0}: PosAct:{1:N3}, ToGo:{2:N3}{3} | {4}", i, newPos, 0, "-", direzione));
|
||||
//sb.AppendLine(string.Format("Asse {0}: PosAct:{1:N3}, ToGo:{2:N3}{3} | {4}", valPos.abs.name, (double)(valPos.abs.data) / Math.Pow(10, valPos.abs.dec), valPos.dist.name, (double)(valPos.dist.data) / Math.Pow(10, valPos.dist.dec), direzione));
|
||||
}
|
||||
|
||||
// salvo valori vettore prec...
|
||||
@@ -1165,6 +1040,9 @@ namespace MTC_Adapter
|
||||
vettAxis[i].mAxFeedOver.Value = FeedRateOver;
|
||||
//vettAxis[i].mAxAccelAct.Value = AxData.AxisAccel;
|
||||
//vettAxis[i].mAxBattery.Value = AxData.AxisBattery;
|
||||
|
||||
|
||||
|
||||
}
|
||||
catch
|
||||
{
|
||||
@@ -1172,6 +1050,10 @@ namespace MTC_Adapter
|
||||
}
|
||||
}
|
||||
|
||||
#if false
|
||||
inizio = DateTime.Now;
|
||||
CMSCncLib.Focas1.ODBSVLOAD loadAssi = SIEMENS_ref.getAllAxisLoad();
|
||||
if (utils.CRB("recTime")) TimingData.addResult("R-AXIS_LOAD", DateTime.Now.Subtract(inizio).Ticks);
|
||||
#endif
|
||||
parentForm.dataMonitor_3 += sb.ToString();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user