diff --git a/MTC_Sim/MTC_Sim/AdapterESA.cs b/MTC_Sim/MTC_Sim/AdapterESA.cs index 47fb0a5..42706fd 100644 --- a/MTC_Sim/MTC_Sim/AdapterESA.cs +++ b/MTC_Sim/MTC_Sim/AdapterESA.cs @@ -139,10 +139,22 @@ namespace MTC_Adapter // 2 byte x speed da copiare... byte[] tmpByte = new byte[2]; Buffer.BlockCopy(ncDevice.PLC_MemoryAreaV, 16, tmpByte, 0, 2); - short v84 = BitConverter.ToInt16(tmpByte, 0); + short v84 = BitConverter.ToInt16(tmpByte, 0); // lista allarmi PLC/CNC - Byte v86 = ncDevice.PLC_MemoryAreaV[18]; // last alarm PLC +#if false + Byte v86 = ncDevice.PLC_MemoryAreaV[18]; // last alarm PLC: monotono incrementale (รจ un contatore da avvio?) --> non mi serve!!! +#endif Byte v87 = ncDevice.PLC_MemoryAreaV[19]; // Allarme CN (almeno 1?!?) +#if false + if (v86 != 0) + { + sb.AppendLine(string.Format("v86: {0}", v86)); + } +#endif + if (v87 != 0) + { + sb.AppendLine(string.Format("v87: {0}", v87)); + } // ------------------------------------------- // recupero dati Feed/Speed/override @@ -157,7 +169,8 @@ namespace MTC_Adapter sb.AppendLine(string.Format("SpeedRate: {0} rpm", SpeedRate)); // ------------------------------------------- - // check allarmi?!? + // copio allarmi in vettore generale AlarFlags (dove lo gestisce)... + Buffer.BlockCopy(ncDevice.PLC_MemAreaAlarm_tmp, 0, AlarmFlags, 0, ncDevice.PLC_MemAreaAlarm_tmp.Length); parentForm.dataMonitor = sb.ToString(); } diff --git a/MTC_Sim/SCMCncLib/thdNcEsaGvKvara.cs b/MTC_Sim/SCMCncLib/thdNcEsaGvKvara.cs index 60ed6bc..ec9a412 100644 --- a/MTC_Sim/SCMCncLib/thdNcEsaGvKvara.cs +++ b/MTC_Sim/SCMCncLib/thdNcEsaGvKvara.cs @@ -33,8 +33,9 @@ namespace SCMCncLib { private UInt16 ReadNumber; private UInt16 WriteNumber; - private UInt16 VAreaNumber; - private UInt16 ETKAreaNumber; + private UInt16 VAreaByteSize; + private UInt16 ETKAreaByteSize; + private UInt16 AlarmByteSize; private string SysLink = ""; @@ -42,6 +43,7 @@ namespace SCMCncLib private int iChannel; private int iError; + private string StatusAddressName; private TS_REG StatusAddress; @@ -50,10 +52,10 @@ namespace SCMCncLib private string VAreaAddressName; private TS_REG VAreaAddress; - - + private string ETKAreaAddressName; private TS_REG ETKAreaAddress; + /// /// Memorie a 4 byte (32 bit) /// @@ -61,15 +63,29 @@ namespace SCMCncLib public UInt32[] PLC_MemoryWrite; /// - /// memorie a 4 byte (32 bit) + /// Area V: memoria temp di UINT di 4 byte (32 bit) /// public UInt32[] PLC_MemAreaV_tmp; + /// + /// Area ETK: memoria temp di UINT di 4 byte (32 bit) + /// public UInt32[] PLC_MemAreaETK_tmp; /// - /// memorie a 1 byte (8 bit) + /// Area Allarmi: memoria temp di UINT di 4 byte (32 bit) + /// + public UInt32[] PLC_MemAreaAlarm_tmp; + /// + /// memorie a 1 byte (8 bit) x area V (status e valori vari) /// public Byte[] PLC_MemoryAreaV; + /// + /// memorie a 1 byte (8 bit) x area ETK (status e valori vari) + /// public Byte[] PLC_MemoryAreaETK; + /// + /// memorie a 1 byte (8 bit) x area Allarmi (V[300] - 256 bit) + /// + public Byte[] PLC_MemoryAreaAllarmi; // esa constants #region ESA_PLC_CONSTANTS @@ -156,8 +172,9 @@ namespace SCMCncLib //hack: metto fisso... OCCHIO son 4 byte x area SIM... ReadNumber = 265; WriteNumber = 265; - VAreaNumber = 8; - ETKAreaNumber = 8; + VAreaByteSize = 32; + ETKAreaByteSize = 32; + AlarmByteSize = 32; #if false // store read and write number of bytes ReadNumber = Convert.ToUInt16(mwEngine.MemoryManager.NrByteToRead / 4); @@ -171,19 +188,25 @@ namespace SCMCncLib CommandsAddressName = fIni.ReadString("NC", "CommandsAddress", "SIMREAD[0]"); VAreaAddressName= fIni.ReadString("NC", "VAreaAddress", "SIMREAD[0]"); - // create read buffer + /************************************************** + * Creazione buffers letture memoria + **************************************************/ + + // create read buffer 32bit PLC_MemoryRead = new UInt32[ReadNumber]; - // create write buffer + // create write buffer 32bit PLC_MemoryWrite = new UInt32[WriteNumber]; - // create VArea buffer - PLC_MemAreaV_tmp = new UInt32[VAreaNumber]; - // create ETKArea buffer - PLC_MemAreaETK_tmp = new UInt32[ETKAreaNumber]; + // creazione buffers a 32bit + PLC_MemAreaV_tmp = new UInt32[VAreaByteSize/4]; + PLC_MemAreaETK_tmp = new UInt32[ETKAreaByteSize/4]; + PLC_MemAreaAlarm_tmp = new UInt32[AlarmByteSize/4]; + // creo array duali in bytes... - PLC_MemoryAreaV = new Byte[4 * VAreaNumber]; - PLC_MemoryAreaETK = new Byte[4 * ETKAreaNumber]; - + PLC_MemoryAreaV = new Byte[VAreaByteSize]; + PLC_MemoryAreaETK = new Byte[ETKAreaByteSize]; + PLC_MemoryAreaAllarmi = new Byte[AlarmByteSize]; + if (!Connect()) Disconnect(); @@ -322,28 +345,20 @@ namespace SCMCncLib // lettura buffer dal CN iError = read_regbuffer(ref StatusAddress, 0, ReadNumber, PLC_MemoryRead); - // devo definire posizione memorie Vcome TS_REG - iError = read_regbuffer(ref VAreaAddress, 68, 32, PLC_MemAreaV_tmp); + // leggo da posizione memorie Vcome TS_REG + iError = read_regbuffer(ref VAreaAddress, 68, VAreaByteSize, PLC_MemAreaV_tmp); - //// !!!FARE!!! leggere ETK - //iError = read_regbuffer(ref ETKAreaAddress, 68, 32, PLC_MemAreaETK_tmp); + // leggo da posizione memorie ETK TS_REG + iError = read_regbuffer(ref ETKAreaAddress, 68, ETKAreaByteSize, PLC_MemAreaETK_tmp); + + + // leggo da posizione memorie Vcome TS_REG + iError = read_regbuffer(ref VAreaAddress, 300, AlarmByteSize, PLC_MemAreaAlarm_tmp); // copio in array a byte... - Buffer.BlockCopy(PLC_MemAreaV_tmp, 0, PLC_MemoryAreaV, 0, 4 * VAreaNumber); - Buffer.BlockCopy(PLC_MemAreaETK_tmp, 0, PLC_MemoryAreaETK, 0, 4 * ETKAreaNumber); - - -#if false - // se tutto ok leggo anche buffer V - if (iError == 0) - { - iError = read_regbuffer(ref StatusAddress, 0, ReadNumber, PLC_MemoryAreaV); - } -#endif - - //System.Buffer.BlockCopy(PLC_MemoryRead, 0, mwEngine.MemoryManager.ReadMemory, 0, mwEngine.MemoryManager.NrByteToRead); - // set flag to inform graphic engine that data have been read from device - //mwEngine.BufferRead = true; + Buffer.BlockCopy(PLC_MemAreaV_tmp, 0, PLC_MemoryAreaV, 0, VAreaByteSize); + Buffer.BlockCopy(PLC_MemAreaETK_tmp, 0, PLC_MemoryAreaETK, 0, ETKAreaByteSize); + Buffer.BlockCopy(PLC_MemAreaAlarm_tmp, 0, PLC_MemoryAreaAllarmi, 0, AlarmByteSize); } ///