aggiunta gestione posizione assi

This commit is contained in:
Samuele E. Locatelli
2017-05-29 18:01:54 +02:00
parent 7f1fffb6d0
commit 51a1ef98ec
+35 -153
View File
@@ -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();
}