235 lines
5.9 KiB
C#
235 lines
5.9 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
|
|
namespace IOB_MAN
|
|
{
|
|
// <Auto-Generated>
|
|
// This is here so CodeMaid doesn't reorganize this document
|
|
// </Auto-Generated>
|
|
public class iobAdapt
|
|
{
|
|
/// <summary>
|
|
/// Costruttore base senza init speciali
|
|
/// </summary>
|
|
public iobAdapt() { }
|
|
|
|
/// <summary>
|
|
/// Costruttore con init redis
|
|
/// </summary>
|
|
/// <param name="codServer">Cod server con cui comunica</param>
|
|
/// <param name="codIob">Cod IOB gestito</param>
|
|
/// <param name="appNameExt">Nome app gestita (es IOB-WIN-NEXT)</param>
|
|
public iobAdapt(string codServer, string codIob, string appNameExt)
|
|
{
|
|
redisMan = new RedisIobCache(codServer, codIob, appNameExt);
|
|
}
|
|
|
|
#region Protected Fields
|
|
|
|
/// <summary>
|
|
/// Scadenza status IOB
|
|
/// </summary>
|
|
protected DateTime scadIobStatus = DateTime.Now;
|
|
|
|
#endregion Protected Fields
|
|
|
|
#region Public Fields
|
|
|
|
/// <summary>
|
|
/// Gestore processi redis
|
|
/// </summary>
|
|
public RedisIobCache redisMan;
|
|
|
|
#endregion Public Fields
|
|
|
|
#region Protected Properties
|
|
|
|
/// <summary>
|
|
/// Status iob corrente da RAM (se entro 1 sec) o da redis (se scaduto)
|
|
/// </summary>
|
|
protected IobWinStatus currIobStatus
|
|
{
|
|
get
|
|
{
|
|
IobWinStatus answ = new IobWinStatus();
|
|
if (scadIobStatus > DateTime.Now && lastIobStatus != null)
|
|
{
|
|
answ = lastIobStatus;
|
|
}
|
|
else
|
|
{
|
|
answ = redisMan.iobStatus;
|
|
lastIobStatus = answ;
|
|
scadIobStatus = DateTime.Now.AddSeconds(1);
|
|
}
|
|
return answ;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ultimo status IOB letto
|
|
/// </summary>
|
|
protected IobWinStatus lastIobStatus { get; set; }
|
|
|
|
protected DateTime lastSeen { get; set; } = DateTime.Now;
|
|
|
|
#endregion Protected Properties
|
|
|
|
#region Public Properties
|
|
|
|
/// <summary>
|
|
/// Codice univoco macchina
|
|
/// </summary>
|
|
[DisplayName("IOB")]
|
|
public string CodIOB { get; set; }
|
|
|
|
/// <summary>
|
|
/// Nome del target obj avviato
|
|
/// </summary>
|
|
[DisplayName("Prog")]
|
|
public string TgtName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Tipo macchina/CNC/PLC
|
|
/// </summary>
|
|
[DisplayName("Tipo")]
|
|
public string IobType
|
|
{
|
|
get
|
|
{
|
|
return currIobStatus.IobType;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Identificativo univoco processo
|
|
/// </summary>
|
|
[DisplayName("pid")]
|
|
public int pID { get; set; }
|
|
|
|
/// <summary>
|
|
/// DataOra avvio dell'IOB
|
|
/// </summary>
|
|
[DisplayName("Started")]
|
|
public DateTime startTime { get; set; } = DateTime.Now;
|
|
|
|
/// <summary>
|
|
/// Calcola uptime processo...
|
|
/// </summary>
|
|
[DisplayName("Uptime Total")]
|
|
public string uptime
|
|
{
|
|
get
|
|
{
|
|
// in primis cerco SE sia running --> aggiorno lastSeen
|
|
if (isRunning)
|
|
{
|
|
lastSeen = DateTime.Now;
|
|
}
|
|
TimeSpan uptime = lastSeen.Subtract(startTime);
|
|
return utils.FormatTimeSpan(uptime);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Verifica se il processo sia in RUN
|
|
/// </summary>
|
|
[DisplayName("Run")]
|
|
public bool isRunning { get; set; }
|
|
|
|
/// <summary>
|
|
/// Determina se sia OK la comunicazione con il PLC, cioè non sia FERMO nella comunicazione per > 5 minuti
|
|
/// </summary>
|
|
[DisplayName("PlcOk")]
|
|
public bool plcOk
|
|
{
|
|
get
|
|
{
|
|
DateTime adesso = DateTime.Now;
|
|
bool plcOnline = Math.Abs(adesso.Subtract(currIobStatus.lastDataIn).TotalSeconds) < 300;
|
|
return plcOnline;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Stato online dell'IOB (rispetto server MP-IO)
|
|
/// </summary>
|
|
[DisplayName("Online")]
|
|
public bool iobOnline
|
|
{
|
|
get
|
|
{
|
|
return currIobStatus.online;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Counter dell'IOB
|
|
/// </summary>
|
|
[DisplayName("pz.IOB")]
|
|
public int iobCounter
|
|
{
|
|
get
|
|
{
|
|
return (int)currIobStatus.counterIOB;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Counter del CNC
|
|
/// </summary>
|
|
[DisplayName("pz.CNC")]
|
|
public int cncCounter
|
|
{
|
|
get
|
|
{
|
|
return (int)currIobStatus.counterMAC;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// lunghezza coda EVENTI
|
|
/// </summary>
|
|
[DisplayName("# EV")]
|
|
public int queueElLen
|
|
{
|
|
get
|
|
{
|
|
return currIobStatus.queueEvLen;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// lunghezza coda FLog
|
|
/// </summary>
|
|
[DisplayName("# FL")]
|
|
public int queueFlLen
|
|
{
|
|
get
|
|
{
|
|
return currIobStatus.queueFlLen;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ultima data-ora di comunicazione calida con PLC
|
|
/// </summary>
|
|
[DisplayName("Last PLC read")]
|
|
public DateTime lastPlcRead
|
|
{
|
|
get
|
|
|
|
{
|
|
return currIobStatus.lastDataIn;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Nome dell'EXE avviato
|
|
/// </summary>
|
|
[DisplayName("Exe")]
|
|
public string ExeName { get; set; }
|
|
|
|
#endregion Public Properties
|
|
}
|
|
} |