302 lines
8.6 KiB
C#
302 lines
8.6 KiB
C#
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Converters;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace GWMS.Data
|
|
{
|
|
public class IobObjects
|
|
{
|
|
#region Public Classes
|
|
|
|
/// <summary>
|
|
/// Struttura conf tipo dati
|
|
/// </summary>
|
|
public class dataConf
|
|
{
|
|
#region Public Properties
|
|
|
|
/// <summary>
|
|
/// DESCRIZIONE parametro
|
|
/// </summary>
|
|
public string description { get; set; } = "";
|
|
|
|
/// <summary>
|
|
/// Fattore per eventuale divisione (es leggo 1234 --> 12,34 con factor=100)
|
|
/// </summary>
|
|
public decimal factor { get; set; } = 1;
|
|
|
|
/// <summary>
|
|
/// Indice nell'area di memoria (da valore iniziale = 0)
|
|
/// </summary>
|
|
public int index { get; set; } = 0;
|
|
|
|
/// <summary>
|
|
/// Valore massimo ammesso (ove usato, es simulazione)
|
|
/// </summary>
|
|
public int maxVal { get; set; } = 9999;
|
|
|
|
/// <summary>
|
|
/// Nome "assoluto" della posizione nell'area di memoria (anche diverso da indice)
|
|
/// </summary>
|
|
public string memAddr { get; set; } = "";
|
|
|
|
/// <summary>
|
|
/// Valore minimo ammesso (ove usato, es simulazione)
|
|
/// </summary>
|
|
public int minVal { get; set; } = 0;
|
|
|
|
/// <summary>
|
|
/// NOME parametro
|
|
/// </summary>
|
|
public string name { get; set; } = "none";
|
|
|
|
/// <summary>
|
|
/// Size in byte
|
|
/// </summary>
|
|
public int size { get; set; } = 0;
|
|
|
|
/// <summary>
|
|
/// Tipo di dato
|
|
/// </summary>
|
|
[JsonConverter(typeof(StringEnumConverter))]
|
|
public plcDataType tipoMem { get; set; } = plcDataType.Int;
|
|
|
|
/// <summary>
|
|
/// Unità di misura del parametro
|
|
/// </summary>
|
|
public string unit { get; set; } = "";
|
|
|
|
/// <summary>
|
|
/// Valore parametro (come stringa, decimali con ",", default VUOTO), poi LETTO da PLC (o appena scritto)
|
|
/// </summary>
|
|
public string value { get; set; } = "";
|
|
|
|
#endregion Public Properties
|
|
}
|
|
|
|
/// <summary>
|
|
/// Struttura conf tipo dati
|
|
/// </summary>
|
|
public class dataConfTSVC : dataConf
|
|
{
|
|
#region Public Properties
|
|
|
|
/// <summary>
|
|
/// Tipo di funzione da applicare al dato
|
|
/// </summary>
|
|
[JsonConverter(typeof(StringEnumConverter))]
|
|
public VC_func func { get; set; } = VC_func.MAX;
|
|
|
|
/// <summary>
|
|
/// Periodo campionamento
|
|
/// </summary>
|
|
public int period { get; set; } = 60;
|
|
|
|
#endregion Public Properties
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tracciato InputEvents in formato JSON valido
|
|
/// Derivato da input realtime valore=3&dtEve=20181206180600000&dtCurr=20181206180600000&cnt=999
|
|
/// </summary>
|
|
public class evData
|
|
{
|
|
#region Public Properties
|
|
|
|
/// <summary>
|
|
/// Contatore incrementale x riordino invio (opzionale)
|
|
/// </summary>
|
|
public int cnt { get; set; } = 0;
|
|
|
|
/// <summary>
|
|
/// DataOra corrente della trasmissione
|
|
/// </summary>
|
|
public DateTime dtCurr { get; set; } = DateTime.Now;
|
|
|
|
/// <summary>
|
|
/// DataOra evento
|
|
/// </summary>
|
|
public DateTime dtEve { get; set; } = DateTime.Now;
|
|
|
|
/// <summary>
|
|
/// Valore del dato di flusso registrato
|
|
/// </summary>
|
|
public string valore { get; set; } = "-";
|
|
|
|
#endregion Public Properties
|
|
}
|
|
|
|
/// <summary>
|
|
/// Array valori tipo evData inviati come JSon
|
|
/// </summary>
|
|
public class evJsonPayload
|
|
{
|
|
#region Public Properties
|
|
|
|
public List<evData> eventList { get; set; }
|
|
|
|
#endregion Public Properties
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tracciato FluxLog in formato JSON valido
|
|
/// </summary>
|
|
public class flogData : evData
|
|
{
|
|
#region Public Properties
|
|
|
|
/// <summary>
|
|
/// nome del flusso
|
|
/// </summary>
|
|
public string flux { get; set; } = "ND";
|
|
|
|
#endregion Public Properties
|
|
}
|
|
|
|
/// <summary>
|
|
/// Array valori tipo flogData inviati come JSon
|
|
/// </summary>
|
|
public class flogJsonPayload
|
|
{
|
|
#region Public Properties
|
|
|
|
public List<flogData> fluxData { get; set; }
|
|
|
|
#endregion Public Properties
|
|
}
|
|
|
|
/// <summary>
|
|
/// Classe gestione ITEM di un OBJ (machine) generico (read/write)
|
|
/// </summary>
|
|
public class objItem
|
|
{
|
|
#region Public Properties
|
|
|
|
/// <summary>
|
|
/// Ultimo messaggio associato (conferma scrittura, errore, ...)
|
|
/// </summary>
|
|
public string lastMessage { get; set; } = "";
|
|
|
|
/// <summary>
|
|
/// DataOra ultima lettura
|
|
/// </summary>
|
|
public DateTime lastRead { get; set; } = DateTime.Now.AddHours(-1);
|
|
|
|
/// <summary>
|
|
/// DataOra ultima richiesta scrittura
|
|
/// </summary>
|
|
public DateTime lastRequest { get; set; } = DateTime.Now.AddDays(-1);
|
|
|
|
/// <summary>
|
|
/// NOME item
|
|
/// </summary>
|
|
public string name { get; set; } = "";
|
|
|
|
/// <summary>
|
|
/// Wrapper valore richiesto come decimal
|
|
/// </summary>
|
|
public decimal reqValDec
|
|
{
|
|
get
|
|
{
|
|
decimal answ = 0;
|
|
decimal.TryParse(reqValue, out answ);
|
|
return answ;
|
|
}
|
|
set
|
|
{
|
|
reqValue = $"{value}";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Wrapper valore richiesto come INT
|
|
/// </summary>
|
|
public int reqValInt
|
|
{
|
|
get
|
|
{
|
|
int answ = 0;
|
|
int.TryParse(reqValue, out answ);
|
|
return answ;
|
|
}
|
|
set
|
|
{
|
|
reqValue = $"{value}";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Indica il NUOVO valore richiesto x l'item
|
|
/// </summary>
|
|
public string reqValue { get; set; } = "";
|
|
|
|
/// <summary>
|
|
/// UID univoco
|
|
/// </summary>
|
|
public string uid { get; set; } = "";
|
|
|
|
/// <summary>
|
|
/// Unità Misura parametro
|
|
/// </summary>
|
|
public string UM { get; set; }
|
|
|
|
/// <summary>
|
|
/// Valore MASSIMO (SE impostato)
|
|
/// </summary>
|
|
public double valMax { get; set; }
|
|
|
|
/// <summary>
|
|
/// Valore minimo (SE impostato)
|
|
/// </summary>
|
|
public double valMin { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ordinamento
|
|
/// </summary>
|
|
public int displOrdinal { get; set; } = 0;
|
|
|
|
/// <summary>
|
|
/// Valore parametro (come stringa, decimali con ",", default VUOTO), sul CNC/PLC
|
|
/// </summary>
|
|
public string value { get; set; } = "";
|
|
|
|
/// <summary>
|
|
/// Descrizione valore
|
|
/// </summary>
|
|
public string description { get; set; } = "";
|
|
|
|
/// <summary>
|
|
/// Indica se sia abilitato in scrittura (WRITE)
|
|
/// </summary>
|
|
public bool writable { get; set; } = false;
|
|
|
|
#endregion Public Properties
|
|
}
|
|
|
|
/// <summary>
|
|
/// Struttura conf memorie PLC (inizialmente SIEMENS)
|
|
/// </summary>
|
|
public class plcMemMap
|
|
{
|
|
#region Public Properties
|
|
|
|
/// <summary>
|
|
/// Parametri ammessi per IOB x lettura
|
|
/// = new Dictionary<string, dataConfTSVC>();
|
|
/// </summary>
|
|
public Dictionary<string, dataConfTSVC> mMapRead { get; set; }
|
|
|
|
/// <summary>
|
|
/// Parametri ammessi per IOB x scrittura
|
|
/// = new Dictionary<string, dataConf>();
|
|
/// </summary>
|
|
public Dictionary<string, dataConf> mMapWrite { get; set; }
|
|
|
|
#endregion Public Properties
|
|
}
|
|
|
|
#endregion Public Classes
|
|
}
|
|
} |