completata lettura allarmi

This commit is contained in:
Samuele E. Locatelli
2016-06-03 10:10:38 +02:00
parent bab35d86e9
commit 4fc970e06a
2 changed files with 67 additions and 39 deletions
+16 -3
View File
@@ -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();
}
+51 -36
View File
@@ -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;
/// <summary>
/// Memorie a 4 byte (32 bit)
/// </summary>
@@ -61,15 +63,29 @@ namespace SCMCncLib
public UInt32[] PLC_MemoryWrite;
/// <summary>
/// memorie a 4 byte (32 bit)
/// Area V: memoria temp di UINT di 4 byte (32 bit)
/// </summary>
public UInt32[] PLC_MemAreaV_tmp;
/// <summary>
/// Area ETK: memoria temp di UINT di 4 byte (32 bit)
/// </summary>
public UInt32[] PLC_MemAreaETK_tmp;
/// <summary>
/// memorie a 1 byte (8 bit)
/// Area Allarmi: memoria temp di UINT di 4 byte (32 bit)
/// </summary>
public UInt32[] PLC_MemAreaAlarm_tmp;
/// <summary>
/// memorie a 1 byte (8 bit) x area V (status e valori vari)
/// </summary>
public Byte[] PLC_MemoryAreaV;
/// <summary>
/// memorie a 1 byte (8 bit) x area ETK (status e valori vari)
/// </summary>
public Byte[] PLC_MemoryAreaETK;
/// <summary>
/// memorie a 1 byte (8 bit) x area Allarmi (V[300] - 256 bit)
/// </summary>
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);
}
/// <summary>