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