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
+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>