diff --git a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs
index 8143e19..0d71e97 100644
--- a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs
+++ b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs
@@ -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...
///
public byte[] MemBlockTop = new byte[284];
+ ///
+ /// Vettore posizione assi (MAX 16...)
+ ///
+ public uint[] axisPosData = new uint[16];
///
/// Area di memoria base x MTConnect con SIEMENS (DB1499)
///
protected int baseMemDb = 1499;
///
+ /// Area di memoria base x dati ASSI (241)
+ ///
+ protected int baseMemAx = 241;
+ ///
/// Area di memoria base x dati UTENSILE (DB253)
///
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();
}