From 63a73c8457896d20c88949aaa9e026c300befe7b Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Mon, 29 May 2017 17:06:58 +0200 Subject: [PATCH] riorganizzate letture memoria e rallentata letture mtz/var analogiche --- MTC_Adapter/MTC_Adapter/AdapterGeneric.cs | 9 +- MTC_Adapter/MTC_Adapter/AdapterSiemens.cs | 91 ++++++++++++++----- .../MTC_Adapter/App.CMS-SIEMENS.config | 6 +- MTC_Adapter/MTC_Adapter/App.config | 9 +- 4 files changed, 80 insertions(+), 35 deletions(-) diff --git a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs index f6b0f83..982c781 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs @@ -2049,10 +2049,6 @@ namespace MTC_Adapter } parentForm.dataMonitor_2 = sb2.ToString(); - // gestisco lettura dati manutenzione da PLC... - getMtzDataFromPlc(); - // gestisco lettura dati analogici da PLC... - getAnalogDataFromPlc(); // gestisco lettura dati status da PLC... getStatusDataFromPlc(); } @@ -3166,6 +3162,11 @@ namespace MTC_Adapter { // dati da PC mClock.Value = string.Format("{0:yyyy-MM-dd} {0:HH:mm:ss}", DateTime.Now); + + // gestisco lettura dati manutenzione da PLC... + getMtzDataFromPlc(); + // gestisco lettura dati analogici da PLC... + getAnalogDataFromPlc(); // reload dati da file... reloadDataFromFile(); diff --git a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs index 81e31ae..85b36e2 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs @@ -14,6 +14,10 @@ namespace MTC_Adapter /// Oggetto MAIN x connessione SIEMENS /// protected SIEMENS SIEMENS_ref; + /// + /// 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]; /// /// Area di memoria base x MTConnect con SIEMENS (DB1499) @@ -264,17 +268,31 @@ namespace MTC_Adapter base.getStrobeAndAckStatus(); if (connectionOk) { - // leggo TUTTO ack e strobe, - byte[] MemBlock = new byte[Strobes.Length + Acknowl.Length]; int memIndex = 0; + if (utils.CRB("readAllTop")) + { + // leggo TUTTI i primi 284 byte... + inizio = DateTime.Now; + SIEMENSMemRW_Byte(R, baseMemDb, memIndex, ref MemBlockTop); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STROBES", MemBlockTop.Length), DateTime.Now.Subtract(inizio).Ticks); - inizio = DateTime.Now; - SIEMENSMemRW_Byte(R, baseMemDb, memIndex, ref MemBlock); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STROBES", MemBlock.Length), DateTime.Now.Subtract(inizio).Ticks); + // suddivido! (...la prima parte ack/strobe...) + Buffer.BlockCopy(MemBlockTop, 0, Acknowl, 0, Acknowl.Length); + Buffer.BlockCopy(MemBlockTop, Acknowl.Length, Strobes, 0, Strobes.Length); + } + else + { + // leggo TUTTO ack e strobe, + byte[] MemBlock = new byte[Strobes.Length + Acknowl.Length]; - // suddivido! - Buffer.BlockCopy(MemBlock, 0, Acknowl, 0, Acknowl.Length); - Buffer.BlockCopy(MemBlock, Acknowl.Length, Strobes, 0, Strobes.Length); + inizio = DateTime.Now; + SIEMENSMemRW_Byte(R, baseMemDb, memIndex, ref MemBlock); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STROBES", MemBlock.Length), DateTime.Now.Subtract(inizio).Ticks); + + // suddivido! (...la prima parte ack/strobe...) + Buffer.BlockCopy(MemBlock, 0, Acknowl, 0, Acknowl.Length); + Buffer.BlockCopy(MemBlock, Acknowl.Length, Strobes, 0, Strobes.Length); + } } else { @@ -355,10 +373,18 @@ namespace MTC_Adapter bool fatto = false; try { - // leggo tutto!!! - inizio = DateTime.Now; - SIEMENSMemRW_Word(R, baseMemDb, memIndexMST, ref MemBlock_W); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STRB_DW1-P{1:00}", MemBlock_W.Length, idxPath), DateTime.Now.Subtract(inizio).Ticks); + if (utils.CRB("readAllTop")) + { + // copio la memoria allarmi dalla memoria top... + Buffer.BlockCopy(MemBlockTop, memIndexMST, MemBlock_W, 0, MemBlock_W.Length); + } + else + { + // leggo tutto!!! + inizio = DateTime.Now; + SIEMENSMemRW_Word(R, baseMemDb, memIndexMST, ref MemBlock_W); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STRB_DW1-P{1:00}", MemBlock_W.Length, idxPath), DateTime.Now.Subtract(inizio).Ticks); + } fatto = true; } catch (Exception exc) @@ -388,7 +414,7 @@ namespace MTC_Adapter try { // leggo tutto!!! - int memIndex = 256; + int memIndex = 284; inizio = DateTime.Now; SIEMENSMemRW_DWord(R, baseMemDb, memIndex, ref MemBlockTestData); if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TEST_DATA", MemBlockTestData.Length), DateTime.Now.Subtract(inizio).Ticks); @@ -420,9 +446,19 @@ namespace MTC_Adapter /// public override bool readAllAlarms(ref uint[] MemBlock) { - // DB1499.DBW36 - int memIndex = 36; - return SIEMENSMemRW_DWord(R, baseMemDb, memIndex, ref MemBlock); + bool fatto = false; + if (utils.CRB("readAllTop")) + { + // copio la memoria allarmi dalla memoria top... + Buffer.BlockCopy(MemBlockTop, 36, MemBlock, 0, MemBlock.Length); + } + else + { + // DB1499.DBW36 + int memIndex = 36; + fatto = SIEMENSMemRW_DWord(R, baseMemDb, memIndex, ref MemBlock); + } + return fatto; } /// /// Legge vettore di TUTTE memorie tipo DWord dato indice di partenza e vettore memorie @@ -468,15 +504,22 @@ namespace MTC_Adapter bool fatto = false; try { - - // area path1/2: 7 WORD x ogni path... - int memIndex = 508; ushort[] PathData_mem = new ushort[14]; - parentForm.commPlcActive = true; - inizio = DateTime.Now; - SIEMENSMemRW_Word(R, baseMemDb, memIndex, ref PathData_mem); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-PathData", PathData_mem.Length * 2), DateTime.Now.Subtract(inizio).Ticks); - parentForm.commPlcActive = false; + if (utils.CRB("readAllTop")) + { + // copio la memoria allarmi dalla memoria top... + Buffer.BlockCopy(MemBlockTop, 256, PathData_mem, 0, PathData_mem.Length); + } + else + { + // area path1/2: 7 WORD x ogni path... + int memIndex = 256; + parentForm.commPlcActive = true; + inizio = DateTime.Now; + SIEMENSMemRW_Word(R, baseMemDb, memIndex, ref PathData_mem); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-PathData", PathData_mem.Length * 2), DateTime.Now.Subtract(inizio).Ticks); + parentForm.commPlcActive = false; + } // inizio indicando feed... sb1.AppendLine(string.Format("FeedRate: {0} mm/min", FeedRate)); diff --git a/MTC_Adapter/MTC_Adapter/App.CMS-SIEMENS.config b/MTC_Adapter/MTC_Adapter/App.CMS-SIEMENS.config index fc88d73..4f368ad 100644 --- a/MTC_Adapter/MTC_Adapter/App.CMS-SIEMENS.config +++ b/MTC_Adapter/MTC_Adapter/App.CMS-SIEMENS.config @@ -2,8 +2,8 @@ - - + + @@ -13,6 +13,6 @@ - + \ No newline at end of file diff --git a/MTC_Adapter/MTC_Adapter/App.config b/MTC_Adapter/MTC_Adapter/App.config index 091e0c4..065ad39 100644 --- a/MTC_Adapter/MTC_Adapter/App.config +++ b/MTC_Adapter/MTC_Adapter/App.config @@ -9,12 +9,12 @@ - + - - + + - + @@ -87,6 +87,7 @@ +