From 92b4fd50d460617f4904213b32c808acdd90bfdb Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Wed, 7 Jun 2017 17:07:18 +0200 Subject: [PATCH] continuo scrittura procedura x lettura in blocco dati UT SIEMENS --- .../CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb | 98 +++++++++++++++++++ MTC_Adapter/MTC_Adapter/AdapterGeneric.cs | 35 ++++--- MTC_Adapter/MTC_Adapter/AdapterSiemens.cs | 3 + 3 files changed, 125 insertions(+), 11 deletions(-) diff --git a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb index 98855f6..96af68f 100644 --- a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb +++ b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb @@ -906,7 +906,40 @@ Namespace CNC Public Speed As Single End Structure + ''' + ''' Struttura dati UT + ''' + Public Structure UtData + ''' + ''' Vettore elenco UT (DB254.DBI280) + ''' + Public elencoUtMem As UShort() + ''' + ''' Tabella UT (DB253.DBI2500) + ''' + Public tabUt_UT As UShort() + ''' + ''' Tabella IdFamigliaUt (DB253.DBI2900) + ''' + Public tabIdFamUt As UShort() + ''' + ''' Tabella Famiglie Utensili (DB253.DBI100) + ''' + Public tabFamUt As UShort() + ''' + ''' Tabella TIPO Vita Residua Famiglie Utensili (DB253.DBI1900) + ''' + Public tabTipoVitaRes As UShort() + ''' + ''' Tabella Vita Residua Famiglie Utensili (DB253.DBI4300) + ''' + Public tabVitaRes As UShort() + End Structure + ''' + ''' Restituisce tutti i dati assi insieme + ''' + ''' Public Function getAllAxisPos() As AxData() ' RIFERIMENTO: ' txt Giuseppe @@ -947,6 +980,71 @@ Namespace CNC End Function + ''' + ''' recupera (e formatta) tutti i dati riferiti alle tabelle della gestione UT + ''' + ''' + ''' + Public Function getAllUtData(ByVal numVal As Short) As UtData + ' RIFERIMENTO: + ' txt Giuseppe + + ReDim itemRead(5) + itemRead(0) = New Item("DB254.DBI280:[" & numVal & "]") 'elencoUtMem + itemRead(1) = New Item("DB253.DBI2500:[" & numVal & "]") 'tabUt_UT + itemRead(2) = New Item("DB253.DBI2900:[" & numVal & "]") 'IdFamigliaUt + itemRead(3) = New Item("DB253.DBI100:[" & numVal & "]") 'tabFamUt + itemRead(4) = New Item("DB253.DBI1900:[" & numVal & "]") 'tabTipoVitaRes + itemRead(5) = New Item("DB253.DBI4300:[" & numVal & "]") 'tabVitaRes + + Do + Try + m_DataSvcRW.Read(itemRead) + Exit Do + Catch ex As DataSvcBusyException + Debug.Print(ex.Message) + Catch ex As DataSvcException + Throw New CmsNcException("ERR GetStaticData CNC.SIEMENS DataSvcException", ex) + End Try + Loop + + ' variabili di appoggio + Dim datiUT As New UtData + Dim _elencoUtMem(numVal) As UShort + Dim _tabUt_UT(numVal) As UShort + Dim _tabIdFamUt(numVal) As UShort + Dim _tabFamUt(numVal) As UShort + Dim _tabTipoVitaRes(numVal) As UShort + Dim _tabVitaRes(numVal) As UShort + + ' faccio copia valori! + For i As Integer = 0 To numVal + '_elencoUtMem(i) = itemRead(0).Value(i) + _elencoUtMem(i) = UIntegerToSingle(itemRead(0).Value(i)) + Next i + For i As Integer = 0 To numVal + _tabUt_UT(i) = itemRead(1).Value(i) + '_tabUt_UT(i) = UIntegerToSingle(itemRead(1).Value(i)) + Next i + For i As Integer = 0 To numVal + _tabIdFamUt(i) = itemRead(2).Value(i) + '_tabIdFamUt(i).Load = UIntegerToSingle(itemRead(2).Value(i)) + Next i + ' !!!FARE!!! + + ' copio in oggetto OUT... + datiUT.elencoUtMem = _elencoUtMem + datiUT.tabUt_UT = _tabUt_UT + datiUT.tabFamUt = _tabFamUt + datiUT.tabIdFamUt = _tabIdFamUt + datiUT.tabTipoVitaRes = _tabTipoVitaRes + datiUT.tabVitaRes = _tabVitaRes + + ' rendo i dati! + Return datiUT + + End Function + #End Region End Class diff --git a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs index cfd479a..9b347d6 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs @@ -3624,7 +3624,7 @@ namespace MTC_Adapter // altre variabili ushort[] idUtMontato = new ushort[maxNumOp]; ushort[] idFamUt = new ushort[maxNumOp]; - ushort[] idTipoVitaUt = new ushort[maxNumOp]; + int[] idTipoVitaUt = new int[maxNumOp]; uint[] valVitaUtRes = new uint[maxNumOp]; ushort[] tabUt = new ushort[maxMemAddr]; ushort[] tabFamUt = new ushort[maxMemAddr]; @@ -3640,10 +3640,12 @@ namespace MTC_Adapter for (int i = 0; i < maxNumOp; i++) { idUtMontato[i] = BitConverter.ToUInt16(elencoUtMem, 2 * i); +#if false if (hasBigEndian) { idUtMontato[i] = Endian.SwapUInt16(idUtMontato[i]); - } + } +#endif } // step 2a: leggo vettore memoria dei maxMemAddr(200) UT in Tabella Utensili @@ -3652,10 +3654,12 @@ namespace MTC_Adapter for (int i = 0; i < maxMemAddr; i++) { tabUt[i] = BitConverter.ToUInt16(tabUt_UT, 2 * i); +#if false if (hasBigEndian) { tabUt[i] = Endian.SwapUInt16(tabUt[i]); - } + } +#endif } // step 2b: devo cercare l'UT di ogni UnOp nella Tabella Utensili for (int i = 0; i < maxNumOp; i++) @@ -3672,10 +3676,12 @@ namespace MTC_Adapter memIndex = getDatiUt_step2b(ref int16Mem, j); // step 2b: leggo puntualmente la FamUt dal suo indice... idFamUt[i] = BitConverter.ToUInt16(int16Mem, 0); +#if false if (hasBigEndian) { idFamUt[i] = Endian.SwapUInt16(idFamUt[i]); - } + } +#endif found = true; } } @@ -3688,10 +3694,12 @@ namespace MTC_Adapter for (int i = 0; i < maxMemAddr; i++) { tabFamUt[i] = BitConverter.ToUInt16(tabFam_FamUt, 2 * i); +#if false if (hasBigEndian) { tabFamUt[i] = Endian.SwapUInt16(tabFamUt[i]); - } + } +#endif } // step 3b: devo cercare la famiglia dell'UT di ogni UnOp nella Tabella Famiglie for (int i = 0; i < maxNumOp; i++) @@ -3708,16 +3716,19 @@ namespace MTC_Adapter memIndex = getDatiUt_step3b(ref int8Mem, j); // step 3b: leggo puntualmente il TIPO DI vita UT dal suo indice... idTipoVitaUt[i] = int8Mem; - if (hasBigEndian) - { - idTipoVitaUt[i] = Endian.SwapUInt16(idTipoVitaUt[i]); - } +#if false + // non serve: 8 bit... + //if (hasBigEndian) + //{ + // idTipoVitaUt[i] = Endian.SwapUInt16(idTipoVitaUt[i]); + //} +#endif found = true; } } } - // step 4: recupero la vita residua dell'utente + // step 4: recupero la vita residua dell'utensile for (int i = 0; i < maxNumOp; i++) { // poiché potrei trovarlo replicato dopo la prima volta che lo trovo evito di ricontrollare... @@ -3732,10 +3743,12 @@ namespace MTC_Adapter memIndex = getDatiUt_step4(ref int32Mem, j); // leggo puntualmente valore della vita ut residua da indice utensile... valVitaUtRes[i] = BitConverter.ToUInt32(int32Mem, 0); +#if false if (hasBigEndian) { valVitaUtRes[i] = Endian.SwapUInt32(valVitaUtRes[i]); - } + } +#endif found = true; } } diff --git a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs index bb367a2..12e5a68 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs @@ -894,6 +894,7 @@ 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... // DB254.DBI280 int memIndex = 280; inizio = DateTime.Now; @@ -902,6 +903,8 @@ namespace MTC_Adapter return memIndex; } + + public override void getPath() { base.getPath();