diff --git a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs index 7668eba..fb3c64b 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs @@ -598,7 +598,6 @@ namespace MTC_Adapter #endregion - public class AdapterGeneric { /// @@ -834,7 +833,10 @@ namespace MTC_Adapter /// Determina se sia encessario convertire valori little/big endian (SIEMENS=true, OSAI=FALSE) /// public bool hasBigEndian = false; - + /// + /// dimensione massima vettore memorie UT + /// + public short numMemUt = 200; /// /// adapter globale /// @@ -3616,7 +3618,7 @@ namespace MTC_Adapter public virtual void getDatiUt(int maxNumOp) { // variabili "Indice" utensile e famiglia da decodificare + utils - int maxMemAddr = 200; + int maxMemAddr = numMemUt; byte[] elencoUtMem = new byte[2 * maxNumOp]; byte[] tabUt_UT = new byte[2 * maxMemAddr]; byte[] tabFam_FamUt = new byte[2 * maxMemAddr]; diff --git a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs index 8c64cc8..c18d417 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs @@ -39,6 +39,10 @@ namespace MTC_Adapter /// Area di memoria base x dati TESTE (DB254) /// protected int baseMemUO = 254; + /// + /// Oggetto appoggio memorie dati UT + /// + protected SIEMENS.UtData ValUT; /// /// wrapper chiamata lettura/scrittura SINGOLO BYTE... @@ -822,12 +826,19 @@ namespace MTC_Adapter /// public override int getDatiUt_step4(ref byte[] int32Mem, int j) { + // restituisco dati richiesti... + int memIndex = 4300 + 4 * j; + Buffer.BlockCopy(ValUT.tabVitaRes, j, int32Mem, 0, int32Mem.Length); + return memIndex; + +#if false // DB253.DBI4300 int memIndex = 4300 + 4 * j; inizio = DateTime.Now; SIEMENSMemRW_Byte(R, baseMemUT, memIndex, ref int32Mem); if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabUT-VitaRes", int32Mem.Length * 4), DateTime.Now.Subtract(inizio).Ticks); - return memIndex; + return memIndex; +#endif } /// /// Procedura di processing lettura memoria x DatiUt - Step 3b @@ -837,12 +848,19 @@ namespace MTC_Adapter /// public override int getDatiUt_step3b(ref byte int8Mem, int j) { + // restituisco dati richiesti... + int memIndex = 1900 + 1 * j; + int8Mem = BitConverter.GetBytes(ValUT.tabTipoVitaRes[j])[0]; + return memIndex; + +#if false // DB253.DBI1900 int memIndex = 1900 + 1 * j; inizio = DateTime.Now; SIEMENSMemRW_Byte(R, baseMemUT, memIndex, ref int8Mem); if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabUT-FamUT", 1), DateTime.Now.Subtract(inizio).Ticks); - return memIndex; + return memIndex; +#endif } /// /// Procedura di processing lettura memoria x DatiUt - Step 3a @@ -851,12 +869,19 @@ namespace MTC_Adapter /// public override int getDatiUt_step3a(ref byte[] tabFam_FamUt) { + // restituisco dati richiesti... + int memIndex = 100; + Buffer.BlockCopy(ValUT.tabFamUt, 0, tabFam_FamUt, 0, tabFam_FamUt.Length); + return memIndex; + +#if false // DB253.DBI100 int memIndex = 100; inizio = DateTime.Now; SIEMENSMemRW_Byte(R, baseMemUT, memIndex, ref tabFam_FamUt); if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabFamUT-FamUT", tabFam_FamUt.Length), DateTime.Now.Subtract(inizio).Ticks); - return memIndex; + return memIndex; +#endif } /// /// Procedura di processing lettura memoria x DatiUt - Step 2b @@ -866,12 +891,19 @@ namespace MTC_Adapter /// public override int getDatiUt_step2b(ref byte[] int16Mem, int j) { + // restituisco dati richiesti... + int memIndex = 2900 + 2 * j; + Buffer.BlockCopy(ValUT.tabIdFamUt, j, int16Mem, 0, int16Mem.Length); + return memIndex; + +#if false // DB253.DBI2900 int memIndex = 2900 + 2 * j; inizio = DateTime.Now; SIEMENSMemRW_Byte(R, baseMemUT, memIndex, ref int16Mem); if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabUT-FamUT", int16Mem.Length), DateTime.Now.Subtract(inizio).Ticks); - return memIndex; + return memIndex; +#endif } /// /// Procedura di processing lettura memoria x DatiUt - Step 2a @@ -880,12 +912,19 @@ namespace MTC_Adapter /// public override int getDatiUt_step2a(ref byte[] tabUt_UT) { + // restituisco dati richiesti... + int memIndex = 2500; + Buffer.BlockCopy(ValUT.tabUt_UT, 0, tabUt_UT, 0, tabUt_UT.Length); + return memIndex; + +#if false // DB253.DBI2500 int memIndex = 2500; inizio = DateTime.Now; SIEMENSMemRW_Byte(R, baseMemUT, memIndex, ref tabUt_UT); if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabUT-UT", tabUt_UT.Length), DateTime.Now.Subtract(inizio).Ticks); - return memIndex; + return memIndex; +#endif } /// /// Procedura di processing lettura memoria x DatiUt - Step 1 @@ -894,13 +933,24 @@ namespace MTC_Adapter /// public override int getDatiUt_step1(ref byte[] elencoUtMem) { - // faccio un unica chiamata in blocco di TUTTE le aree e le salvo in variabili locali siemens... + // faccio un unica chiamata in blocco di TUTTE le aree che riguardano gli UT e le salvo in variabili locali siemens... + inizio = DateTime.Now; + ValUT = SIEMENS_ref.getAllUtData(numMemUt); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-UT_ALL", numMemUt * 6 * 2), DateTime.Now.Subtract(inizio).Ticks); + + // restituisco dati richiesti... + int memIndex = 280; + Buffer.BlockCopy(ValUT.elencoUtMem, 0, elencoUtMem, 0, elencoUtMem.Length); + return memIndex; + +#if false // DB254.DBI280 int memIndex = 280; inizio = DateTime.Now; SIEMENSMemRW_Byte(R, baseMemUO, memIndex, ref elencoUtMem); if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-NUMUT", elencoUtMem.Length), DateTime.Now.Subtract(inizio).Ticks); - return memIndex; + return memIndex; +#endif } @@ -996,7 +1046,9 @@ namespace MTC_Adapter } } - + /// + /// Override gestione caricamento dati assi + /// public override void getAxis() { // mostro assi in DataMonitor...... @@ -1008,10 +1060,10 @@ namespace MTC_Adapter string tipoAsse = ""; string direzione = ""; + // recupero in blocco dati assi... inizio = DateTime.Now; - // !!!FARE!!! test lettura di TUTTI i dati assi.... SIEMENS.AxData[] ValAssi = SIEMENS_ref.getAllAxisPos(); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-AXIS_ALL", ValAssi.Length * 3 * 2), DateTime.Now.Subtract(inizio).Ticks); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-AXIS_ALL", ValAssi.Length * 4 * 2), DateTime.Now.Subtract(inizio).Ticks); for (int i = 0; i < currAdpConf.nAxis; i++) @@ -1021,25 +1073,16 @@ namespace MTC_Adapter { // popolo valori... ipotesi MILLESIMI di mm... CONVERSIONE BigEndianness newPos = ValAssi[i].PosAct; - vettAxis[i].mAxLoad.Value = ValAssi[i].Load; - //vettAxis[i].mAxFeedAct.Value= ValAssi[i].Speed; -#if false - newPos = axisPosFloat[i];// axisPosData[i] / 1000; -#endif - - // 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); -#endif vettAxis[i].mAxPosAct.Value = newPos; + vettAxis[i].mAxLoad.Value = ValAssi[i].Load; - // manca pos TGT... -#if false - vettAxis[i].mAxPosTgt.Value = newPos + (double)(valPos.dist.data) / Math.Pow(10, valPos.dist.dec); - -#endif + // imposto feed "generale" per asse... si potrebbe usare velocità del singolo asse... !!!FARE!!! verificare vettAxis[i].mAxFeedAct.Value = FeedRate; + //vettAxis[i].mAxFeedAct.Value= ValAssi[i].Speed; + vettAxis[i].mAxFeedOver.Value = FeedRateOver; + + // verifica pos TGT... NON E' orrettamente letta lato area memoria... + vettAxis[i].mAxPosTgt.Value = ValAssi[i].PosTgt; // calcolo distanza e salvo valore... distPerc = newPos - prevPosAxis[i]; @@ -1065,29 +1108,24 @@ namespace MTC_Adapter { direzione = (newDir > 0) ? "CLOCKWISE" : "COUNTER_CLOCKWISE"; } - + // imposto direzione vettAxis[i].mAxDir.Value = direzione; - if (utils.CRB("verbose")) { 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... prevPosAxis[i] = newPos; prevDirAxis[i] = newDir; + // altri valori NON gestiti //vettAxis[i].mAxMainProc.Value = AxData.AxisMainProc; //vettAxis[i].mAxIsMaster.Value = AxData.AxisIsMaster; //vettAxis[i].mAxMastId.Value = AxData.AxisMastId; - vettAxis[i].mAxFeedOver.Value = FeedRateOver; //vettAxis[i].mAxAccelAct.Value = AxData.AxisAccel; //vettAxis[i].mAxBattery.Value = AxData.AxisBattery; - - - } catch { @@ -1095,11 +1133,6 @@ 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(); } } diff --git a/MTC_Adapter/MTC_Adapter/Readme/ToDos_Siemens.txt b/MTC_Adapter/MTC_Adapter/Readme/ToDos_Siemens.txt index 947b190..591ffab 100644 --- a/MTC_Adapter/MTC_Adapter/Readme/ToDos_Siemens.txt +++ b/MTC_Adapter/MTC_Adapter/Readme/ToDos_Siemens.txt @@ -26,3 +26,22 @@ DB241.dbd0 --> CMD_ACT (p412), dove actToolBasePos =pos act, mentre cmdToolBaseP +Elenco assi (16 + 2 mandrini...) +TAB[0]="X1" +TAB[1]="Y1" +TAB[2]="Z1" +TAB[3]="A1" +TAB[4]="C1" +TAB[5]="U1" +TAB[6]="" +TAB[7]="" +TAB[8]="" +TAB[9]="X2" +TAB[10]="Y2" +TAB[11]="Z2" +TAB[12]="A2" +TAB[13]="C2" +TAB[14]="U2" +TAB[15]="" +TAB[16]="SP1" +TAB[17]="SP2" \ No newline at end of file