continuo bonifica aree V, allarmi (rimaste) e command...

This commit is contained in:
Samuele E. Locatelli
2017-03-17 09:52:06 +01:00
parent 050df2e005
commit cee2bcb729
5 changed files with 3 additions and 201 deletions
+2 -127
View File
@@ -834,33 +834,7 @@ namespace MTC_Adapter
{
lg.Error("Errore connessione mancante in getGlobalData");
}
// dati override feed/speed...
Byte v82 = ncDevice.PLC_MemoryAreaV[14];
Byte v83 = ncDevice.PLC_MemoryAreaV[15];
// 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);
// lista allarmi PLC/CNC
Byte v87 = ncDevice.PLC_MemoryAreaV[19]; // Allarme CN (almeno 1?!?)
// -------------------------------------------
// recupero dati Feed/Speed/override
// FeedOver: 100% = 213 (il pannello è 0-120 --> 0-255, quindi 100% è 100/120*255=213)
FeedRateOver = Convert.ToInt16((decimal)(v82 * 100) / 213);
sb.AppendLine(string.Format("FeedRateOver: {0} %", FeedRateOver));
// SpeedOver: 50% = 128
SpeedRateOver = Convert.ToInt16((decimal)(v83 * 100) / 255);
sb.AppendLine(string.Format("SpeedRateOver: {0} %", SpeedRateOver));
// Speed S5000 OK!!!
SpeedRate = v84;
sb.AppendLine(string.Format("SpeedRate: {0} rpm", SpeedRate));
// -------------------------------------------
// da recuperare da qualche parte?!?
UnOpLoad = 0;
sb.AppendLine(string.Format("Load: {0}", UnOpLoad));
// -------------------------------------------
bool needSave = false;
@@ -888,10 +862,6 @@ namespace MTC_Adapter
// salvo se necessario!
if (needSave) parentForm.persistData();
// -------------------------------------------
// copio allarmi in vettore generale AlarFlags (dove lo gestisce)...
Buffer.BlockCopy(ncDevice.PLC_MemoryAreaAllarmi, 0, AlarmFlags, 0, ncDevice.PLC_MemoryAreaAllarmi.Length);
parentForm.dataMonitor = sb.ToString();
}
@@ -1060,102 +1030,7 @@ namespace MTC_Adapter
getAxis();
lg.Info("DONE processAllMemory");
}
/// <summary>
/// Processo stti macchina...
/// </summary>
public override void processStatus()
{
// HARD CODE: forzo path 1 (indice 0...)
int idxPath = 0;
// accodo dati path in DataMonitor......
StringBuilder sb = new StringBuilder();
// verifica macchina accesa...
Byte V73 = ncDevice.PLC_MemoryAreaV[5];
if (((StFlag8)V73).HasFlag(StFlag8.B2))
{
mPower.Value = "ON";
}
else
{
mPower.Value = "OFF";
}
// switch su EXE mode...
/*
* MODO_X V[70/71] --> byte (2-3)
* V70.2 = Modo RUN 
* V70.3 = Modo FeedHold
* V71.5 = Ready
* */
Byte V70 = ncDevice.PLC_MemoryAreaV[2];
Byte V71 = ncDevice.PLC_MemoryAreaV[3];
if (((StFlag8)V70).HasFlag(StFlag8.B3))
{
vettPath[idxPath].mPathExeMode.Value = "FEED_HOLD"; //"FEEDHOLD";
}
else if (((StFlag8)V70).HasFlag(StFlag8.B2))
{
vettPath[idxPath].mPathExeMode.Value = "ACTIVE";
}
else if (((StFlag8)V71).HasFlag(StFlag8.B5))
{
vettPath[idxPath].mPathExeMode.Value = "READY";
}
//// appunto: modi da creare
//STOPPED/HOLD(da creare)
//INTERRUPTED(da creare)
//OPTIONAL_STOP(da creare)
//PROGRAM_STOPPED(da creare)
//PROGRAM_COMPLETED(da creare)
// switch su run mode...
/*
* MODO_X V[74].W --> byte (6)
* 0 = Modo NESSUNO 
* 1 = Modo MANUALE 
* 2 = Modo AUTOMATICO 
* 3 = Modo POM 
* 4 = Modo MDI 
* 5 = Modo SEMIAUTOMATICO 
* 6 = Modo RAP 
* 7 = Modo TES
* */
uint V74 = ncDevice.PLC_MemoryAreaV[6];
switch (V74)
{
case 1:
vettPath[idxPath].mPathRunMode.Value = "EDIT";
break;
case 2:
vettPath[idxPath].mPathRunMode.Value = "AUTOMATIC";
break;
case 3:
vettPath[idxPath].mPathRunMode.Value = "MANUAL";
break;
case 4:
vettPath[idxPath].mPathRunMode.Value = "MANUAL_DATA_INPUT";
break;
case 5:
vettPath[idxPath].mPathRunMode.Value = "SEMI_AUTOMATIC"; //"SEMIAUTO";
break;
case 6:
vettPath[idxPath].mPathRunMode.Value = "MANUAL"; //"RAP";
break;
case 7:
vettPath[idxPath].mPathRunMode.Value = "MANUAL"; //"TES";
break;
case 0:
default:
vettPath[idxPath].mPathRunMode.Value = "NA";
break;
}
}
/// <summary>
/// Recupera la speed override x i mandrini (UnOp)
/// </summary>
@@ -53,18 +53,6 @@ StatusNumber=401
; indirizzo di memoria del primo byte di scrittura dati
CommandsAddress=SIMREAD[0]
CommandsNumber=10
; indirizzo di memoria AreaV
VAreaAddress=V
VAreaNumber=10
; area EOK
EOKAreaAddress=EOK
EOKAreaNumber=10
; area ETK
ETKAreaAddress=ETK
ETKAreaNumber=10
; indirizzo di memoria AreaV
PlcErrAreaAddress=V
PlcErrAreaNumber=10
; offset del registro per l'indice di collisione
CollisionIndex=6.L
; ritardo nella lettura dal plc
@@ -53,18 +53,6 @@ StatusNumber=401
; indirizzo di memoria del primo byte di scrittura dati
CommandsAddress=SIMREAD[0]
CommandsNumber=10
; indirizzo di memoria AreaV
VAreaAddress=V
VAreaNumber=10
; area EOK
EOKAreaAddress=EOK
EOKAreaNumber=10
; area ETK
ETKAreaAddress=ETK
ETKAreaNumber=10
; indirizzo di memoria AreaV
PlcErrAreaAddress=V
PlcErrAreaNumber=10
; offset del registro per l'indice di collisione
CollisionIndex=6.L
; ritardo nella lettura dal plc
@@ -53,18 +53,6 @@ StatusNumber=401
; indirizzo di memoria del primo byte di scrittura dati
CommandsAddress=SIMREAD[0]
CommandsNumber=10
; indirizzo di memoria AreaV
VAreaAddress=V
VAreaNumber=10
; area EOK
EOKAreaAddress=EOK
EOKAreaNumber=10
; area ETK
ETKAreaAddress=ETK
ETKAreaNumber=10
; indirizzo di memoria AreaV
PlcErrAreaAddress=V
PlcErrAreaNumber=10
; offset del registro per l'indice di collisione
CollisionIndex=6.L
; ritardo nella lettura dal plc
+1 -38
View File
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
//using System.Windows.Threading;
using System.Threading;
using System.Runtime.InteropServices;
using System.Linq;
@@ -33,7 +32,6 @@ namespace SCMCncLib
{
private UInt16 ReadNumber;
private UInt16 WriteNumber;
private UInt16 AlarmByteSize;
private UInt16 IOT_ByteAreaByteSize;
private UInt16 IOT_WordAreaByteSize;
@@ -53,10 +51,6 @@ namespace SCMCncLib
private string CommandsAddressName;
private TS_REG CommandsAddress;
private string PlcErrAreaAddressName;
private TS_REG PlcErrAreaAddress;
private string IOT_ByteAreaAddressName;
private TS_REG IOT_ByteAreaAddress;
@@ -81,19 +75,6 @@ namespace SCMCncLib
public UInt32[] PLC_MemoryRead;
public UInt32[] PLC_MemoryWrite;
/// <summary>
/// Area Allarmi: memoria temp di UINT di 4 byte (32 bit)
/// </summary>
public UInt32[] PLC_MemAreaAlarm_tmp;
/// <summary>
/// memorie a 4 byte (32 bit) x area V (status e valori vari)
/// </summary>
public Byte[] PLC_MemoryAreaV;
/// <summary>
/// memorie a 1 byte (8 bit) x area Allarmi (V[300] - 256 bit)
/// </summary>
public Byte[] PLC_MemoryAreaAllarmi;
#region memorie IOT NUOVE
/// <summary>
@@ -210,7 +191,6 @@ namespace SCMCncLib
ReadNumber = 265;
WriteNumber = 265;
AlarmByteSize = 32;
// nuove aree: da init mi passa le dimensioni delle memorie
IOT_ByteAreaByteSize = Convert.ToUInt16(IAS_Byte);
@@ -219,7 +199,6 @@ namespace SCMCncLib
IOT_String_AreaByteSize = Convert.ToUInt16(IAS_String);
CommandsAddressName = fIni.ReadString("NC", "CommandsAddress", "SIMREAD[0]");
PlcErrAreaAddressName = fIni.ReadString("NC", "PlcErrAreaAddress", "V");
StatusAddressName = fIni.ReadString("NC", "StatusAddress", "SIMWRITE[0]");
// indirizzo area IOT...
@@ -242,11 +221,6 @@ namespace SCMCncLib
// creazione buffers a 32bit
PLC_MemAreaAlarm_tmp = new UInt32[(int)Math.Ceiling((decimal)AlarmByteSize / 4)];
// creo array duali in bytes...
PLC_MemoryAreaAllarmi = new Byte[AlarmByteSize];
// creo array x aree memoria IOT...
PLC_MemoryAreaIOT_Byte_tmp = new UInt32[(int)Math.Ceiling((decimal)IOT_ByteAreaByteSize / 4)];
PLC_MemoryAreaIOT_Byte = new Byte[IOT_ByteAreaByteSize];
@@ -385,18 +359,9 @@ namespace SCMCncLib
/// </summary>
public void ReadBuffer()
{
// leggo da posizione memorie V/allarmi come TS_REG
iError = read_regbuffer(ref PlcErrAreaAddress, 300, AlarmByteSize, PLC_MemAreaAlarm_tmp);
// lettura buffer dal CN
iError = read_regbuffer(ref StatusAddress, 0, ReadNumber, PLC_MemoryRead);
try
{
Buffer.BlockCopy(PLC_MemAreaAlarm_tmp, 0, PLC_MemoryAreaAllarmi, 0, AlarmByteSize);
}
catch
{ }
}
/// <summary>
@@ -411,8 +376,6 @@ namespace SCMCncLib
// inizializzo i registri di lettura e scrittura
if (iError == 0)
iError = get_reg_by_name(CommandsAddressName, ref CommandsAddress);
if (iError == 0)
iError = get_reg_by_name(PlcErrAreaAddressName, ref PlcErrAreaAddress);
if (iError == 0)
iError = get_reg_by_name(StatusAddressName, ref StatusAddress);