From 0f7461f377aaffa7786d25c0282a3ab25293789b Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 12 Feb 2025 18:12:01 +0100 Subject: [PATCH] Completo riorganizzazione preliminare classe IobConfTree nuova x gestione IOB-WIN --- EgwConf.Iob/{CmdUri.cs => Base/CmdUriDto.cs} | 68 +---------- .../{CncConf.cs => Base/ConnectParamsDto.cs} | 30 ++--- .../InputSignalDto.cs} | 7 +- .../{RedisPub.cs => Base/IobManDto.cs} | 6 +- .../{ServerMapo.cs => Base/ServerMapoDto.cs} | 7 +- EgwConf.Iob/{TCData.cs => Base/TCDataDto.cs} | 4 +- EgwConf.Iob/EgwConf.Iob.csproj | 14 ++- EgwConf.Iob/EnumConf.cs | 110 +++++++++++++++--- EgwConf.Iob/IobConfTree.cs | 26 +++-- EgwConf.Iob/Special/SiemensDto.cs | 26 +++++ 10 files changed, 167 insertions(+), 131 deletions(-) rename EgwConf.Iob/{CmdUri.cs => Base/CmdUriDto.cs} (55%) rename EgwConf.Iob/{CncConf.cs => Base/ConnectParamsDto.cs} (53%) rename EgwConf.Iob/{BlinkSignal.cs => Base/InputSignalDto.cs} (76%) rename EgwConf.Iob/{RedisPub.cs => Base/IobManDto.cs} (73%) rename EgwConf.Iob/{ServerMapo.cs => Base/ServerMapoDto.cs} (85%) rename EgwConf.Iob/{TCData.cs => Base/TCDataDto.cs} (93%) create mode 100644 EgwConf.Iob/Special/SiemensDto.cs diff --git a/EgwConf.Iob/CmdUri.cs b/EgwConf.Iob/Base/CmdUriDto.cs similarity index 55% rename from EgwConf.Iob/CmdUri.cs rename to EgwConf.Iob/Base/CmdUriDto.cs index bfab4d6..676f992 100644 --- a/EgwConf.Iob/CmdUri.cs +++ b/EgwConf.Iob/Base/CmdUriDto.cs @@ -1,12 +1,12 @@ using System.Collections.Generic; using System.Linq; -namespace EgwConf.Iob +namespace EgwConf.Iob.Base { /// /// Set comandi URI x chiamate server /// - public class CmdUri + public class CmdUriDto { #region Public Constructors @@ -14,7 +14,7 @@ namespace EgwConf.Iob /// Init classe gestione comandi /// /// - public CmdUri(string baseURI) + public CmdUriDto(string baseURI) { BaseUri = baseURI; } @@ -39,7 +39,7 @@ namespace EgwConf.Iob #region Public Methods /// - /// Recupera path/URI comando richiesto (SE disponibile) + /// Recupera path/URI comando richiesto (SE disponibile) senno default /// /// /// @@ -81,65 +81,5 @@ namespace EgwConf.Iob protected Dictionary CurrSetup { get; set; } = new Dictionary(); #endregion Protected Properties - -#if false - /// - /// comando base x check ALIVE - /// - public string Alive { get; set; } = "IOB"; - - /// - /// Comando base x INPUT - /// - public string Base { get; set; } = "IOB/input/"; - - /// - /// comando base x INPUT in modalità JSON payload come lista - /// - public string BaseJson { get; set; } = "IOB/evListJson/"; - - /// - /// comando base x Raw Transf LOG - salvataggio valori generici in modalità JSON payload - /// come lista - /// - public string RawTransfJson { get; set; } = "IOB/rawTransfJson/"; - - /// - /// comando base x check ENABLED - /// - public string Enabled { get; set; } = "IOB/enabled/"; - - /// - /// comando base x LOG di FLUSSO generico - salvataggio parametri extra sistema MAPO - /// - public string Flog { get; set; } = "IOB/flog/"; - - /// - /// comando base x LOG di FLUSSO generico - salvataggio parametri extra sistema MAPO in - /// modalità JSON payload come lista - /// - public string FlogJson { get; set; } = "IOB/flogJson/"; - - /// - /// Comando base x ForceSplitODL (check avvio ODL) - /// - public string ForcleSplitOdl { get; set; } = "IOB/forceSplitOdlFull/"; - - /// - /// comando base x check IDLE time IOB - /// - public string IdleTime { get; set; } = "IOB/getIdlePeriod/"; - - /// - /// comando base x check avvio ODL - /// - public string OdlStarted { get; set; } = "IOB/getCurrOdlStart/"; - - /// - /// comando base x comando reboot - /// - public string Reboot { get; set; } = "sendReboot.aspx?idxMacchina="; - -#endif } } \ No newline at end of file diff --git a/EgwConf.Iob/CncConf.cs b/EgwConf.Iob/Base/ConnectParamsDto.cs similarity index 53% rename from EgwConf.Iob/CncConf.cs rename to EgwConf.Iob/Base/ConnectParamsDto.cs index 90ef665..59829e6 100644 --- a/EgwConf.Iob/CncConf.cs +++ b/EgwConf.Iob/Base/ConnectParamsDto.cs @@ -1,19 +1,17 @@ -using System; +using EgwConf.Iob.Special; +using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -namespace EgwConf.Iob +namespace EgwConf.Iob.Base { - public class CncConf + /// + /// Definizione parametri Macchina / CN / PLC + /// + public class ConnectParamsDto { - /// - /// Init classe default - /// - public CncConf() - { } - /// /// Indirizzo Ip del CNC Controllato /// @@ -30,18 +28,8 @@ namespace EgwConf.Iob public int pingMsTimeout { get; set; } = 500; /// - /// TipoCPU (es: Siemens) + /// Configurazione specifica Siemens (se applicabile) /// - public string CpuType { get; set; } = "ND"; - - /// - /// Rack (Siemens S7) - /// - public short Rack { get; set; } = 0; - - /// - /// Slot (Siemens S7) - /// - public short Slot { get; set; } = 0; + public SiemensDto SiemensCpu { get; set; } } } diff --git a/EgwConf.Iob/BlinkSignal.cs b/EgwConf.Iob/Base/InputSignalDto.cs similarity index 76% rename from EgwConf.Iob/BlinkSignal.cs rename to EgwConf.Iob/Base/InputSignalDto.cs index 12b66e4..ebcf426 100644 --- a/EgwConf.Iob/BlinkSignal.cs +++ b/EgwConf.Iob/Base/InputSignalDto.cs @@ -4,9 +4,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace EgwConf.Iob +namespace EgwConf.Iob.Base { - public class InputSignalProcess + /// + /// Configurazioni specifiche per segnali ingresso (tipicamente gestione blink) + /// + public class InputSignalDto { /// /// Maschera di filtro blink, INT corrispondente ai BIT da filtrare, ad es diff --git a/EgwConf.Iob/RedisPub.cs b/EgwConf.Iob/Base/IobManDto.cs similarity index 73% rename from EgwConf.Iob/RedisPub.cs rename to EgwConf.Iob/Base/IobManDto.cs index 2dde2f1..d623e85 100644 --- a/EgwConf.Iob/RedisPub.cs +++ b/EgwConf.Iob/Base/IobManDto.cs @@ -4,12 +4,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace EgwConf.Iob +namespace EgwConf.Iob.Base { /// - /// Classe setup comunicazione server REDIS + /// Classe setup comunicazione server REDIS per comunicazione con IOB-MAN /// - public class RedisPub + public class IobManDto { /// diff --git a/EgwConf.Iob/ServerMapo.cs b/EgwConf.Iob/Base/ServerMapoDto.cs similarity index 85% rename from EgwConf.Iob/ServerMapo.cs rename to EgwConf.Iob/Base/ServerMapoDto.cs index 1984cae..9879f90 100644 --- a/EgwConf.Iob/ServerMapo.cs +++ b/EgwConf.Iob/Base/ServerMapoDto.cs @@ -4,9 +4,9 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace EgwConf.Iob +namespace EgwConf.Iob.Base { - public class ServerMapo + public class ServerMapoDto { /// /// Indica il metodo di trasporto http/https @@ -26,8 +26,7 @@ namespace EgwConf.Iob /// /// Dizionario comandi configurati /// - public Dictionary Commands { get; set; } = new CmdUri("IOB").StdCommands(); - //public CmdUri Commands { get; set; } = new CmdUri(); + public Dictionary Commands { get; set; } = new CmdUriDto("IOB").StdCommands(); /// /// Installazione di riferimento diff --git a/EgwConf.Iob/TCData.cs b/EgwConf.Iob/Base/TCDataDto.cs similarity index 93% rename from EgwConf.Iob/TCData.cs rename to EgwConf.Iob/Base/TCDataDto.cs index be6a917..7380f80 100644 --- a/EgwConf.Iob/TCData.cs +++ b/EgwConf.Iob/Base/TCDataDto.cs @@ -4,12 +4,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace EgwConf.Iob +namespace EgwConf.Iob.Base { /// /// Classe gestione parametri legati a gestioen TempoCiclo /// - public class TCData + public class TCDataDto { /// /// Fattore Lambda (innovazione) per calcolo EWMA valore TCiclo corrente diff --git a/EgwConf.Iob/EgwConf.Iob.csproj b/EgwConf.Iob/EgwConf.Iob.csproj index 842ae76..2d72634 100644 --- a/EgwConf.Iob/EgwConf.Iob.csproj +++ b/EgwConf.Iob/EgwConf.Iob.csproj @@ -52,19 +52,21 @@ - - - + + + - - - + + + + + \ No newline at end of file diff --git a/EgwConf.Iob/EnumConf.cs b/EgwConf.Iob/EnumConf.cs index fb19c0c..da40adf 100644 --- a/EgwConf.Iob/EnumConf.cs +++ b/EgwConf.Iob/EnumConf.cs @@ -18,20 +18,12 @@ namespace EgwConf.Iob public enum ComLayer { ND = 0, - Beckhoff, - Fanuc, + Db, + Dll, File, - SqlServer, - IobPi, - Kawasaki, ModBus, - MtConnect, - Omron, - OpcUa, - Osai, - Ping, - Siemens, - WPS + Network, + Serial } /// @@ -40,11 +32,6 @@ namespace EgwConf.Iob [JsonConverter(typeof(StringEnumConverter))] public enum AdapterType { - /// - /// Adapter non specificato - /// - ND = 0, - /// /// Adapter SIMULAZIONE /// @@ -80,6 +67,16 @@ namespace EgwConf.Iob ///// //FILE_XYLOG, + /// + /// File Based Log file analisys per Soitaab + /// + FILE_SOITAAB, + + /// + /// Gestione sync FTP + /// + FTP, + /// /// Adapter KAWASAKI e-controller /// @@ -95,6 +92,16 @@ namespace EgwConf.Iob /// IcoelSoap, + /// + /// Adapter non specificato + /// + ND, + + /// + /// Adapter MITSUBISHI con EZCnc lib + /// + MITSUBISHI, + /// /// Adapter ModBus TCP generico /// @@ -110,6 +117,11 @@ namespace EgwConf.Iob /// MODBUS_TCP_CENTERFRIGO, + /// + /// Adapter modbus (+ file) x FIMAT (Tenditalia) + /// + MODBUS_TCP_FIMAT, + /// /// Adapter ModBus TCP versione HAM (Pizzaferri) /// @@ -125,6 +137,11 @@ namespace EgwConf.Iob /// MODBUS_TCP_IMAS_AEROMEC, + /// + /// Adapter Modubus TCP versione Rimor (IMI Remosa) + /// + MODBUS_TCP_RIMOR, + /// /// Adapter Modubus TCP versione Saim (Giacovelli) /// @@ -160,6 +177,11 @@ namespace EgwConf.Iob /// OpcUaEwon, + /// + /// Adapter OPC-UA per Ewon x Adige (BLM) / STIL + /// + OpcUaEwonAdige, + /// /// Adapter OPC-UA per Ewon x BLM / Mecart /// @@ -171,10 +193,20 @@ namespace EgwConf.Iob OpcUaEwonMonti, /// - /// Adapter OPC-UA per Ewon x Mecolpress / Stil + /// Adapter OPC-UA per Ewon x Mecolpress (BLM) / STIL /// OpcUaEwonMecolpress, + /// + /// Adapter OPC-UA per KeepWare + /// + OpcUaKwp, + + /// + /// Adapter OPC-UA per KeepWare, UnitechRama + /// + OpcUaKwpRama, + /// /// Adapter OPC-UA per IMAS Aeromec / Jetco /// @@ -215,6 +247,11 @@ namespace EgwConf.Iob /// OpcUaSiemensOMP, + /// + /// Adapter OPC-UA Siemens Rama + /// + OpcUaSiemensRama, + /// /// Adapter OPC-UA Ulma (packaging, Giacovelli) /// @@ -240,6 +277,21 @@ namespace EgwConf.Iob /// PingWatchdog, + /// + /// Adapter REST (base) + /// + REST, + + /// + /// Adapter REST Citizen + /// + REST_CITIZEN, + + /// + /// Shelly's Device (tipicamente PM series) + /// + Shelly, + /// /// Adapter SIEMENS /// @@ -256,10 +308,15 @@ namespace EgwConf.Iob SIEMENS_AT2001, /// - /// Adapter SIEMENS, interfaccia versione FAPE (punzonatrici) + /// Adapter SIEMENS, interfaccia versione FAPE (punzonatrici) vers 2018 /// SIEMENS_FAPE, + /// + /// Adapter SIEMENS, interfaccia versione FAPE (punzonatrici) vers 2024 + /// + SIEMENS_FAPE_2, + /// /// Adapter SIEMENS, interfaccia versione COMECA (impianti gestione GNL) /// @@ -315,6 +372,21 @@ namespace EgwConf.Iob /// SIEMENS_TORRI, + /// + /// Adapter SOAP x bilance Gomba + /// + SOAP_GOMBA, + + /// + /// Adapter basato su DB scambio Microsoft SqlServer, macchine LANTEK + /// + SQLSERVER_LANTEK, + + /// + /// Adapter basato su DB scambio Microsoft SqlServer, macchine PAMA + /// + SQLSERVER_PAMA, + /// /// Metodi di WPS WebPageScraping (es x compressori Atlas Copco) /// diff --git a/EgwConf.Iob/IobConfTree.cs b/EgwConf.Iob/IobConfTree.cs index 0d6fdf4..03d74d3 100644 --- a/EgwConf.Iob/IobConfTree.cs +++ b/EgwConf.Iob/IobConfTree.cs @@ -7,6 +7,7 @@ using System; using static EgwConf.Iob.EnumConf; using System.Collections.Generic; using System.Linq; +using EgwConf.Iob.Base; // // This is here so CodeMaid doesn't reorganize this document @@ -66,9 +67,13 @@ namespace EgwConf.Iob newConfObj.CncData.pingMsTimeout = fIni.ReadInteger("IOB", "PING_MS_TIMEOUT", 500); newConfObj.CncData.IpAddr = fIni.ReadString("CNC", "IP", "::1"); newConfObj.CncData.Port = fIni.ReadString("CNC", "PORT", "0"); - newConfObj.CncData.CpuType = fIni.ReadString("CNC", "CPUTYPE", ""); - newConfObj.CncData.Rack = (short)fIni.ReadInteger("CNC", "RACK", 0); - newConfObj.CncData.Slot = (short)fIni.ReadInteger("CNC", "SLOT", 0); + if (!string.IsNullOrEmpty(fIni.ReadString("CNC", "CPUTYPE", ""))) + { + newConfObj.CncData.SiemensCpu = new Special.SiemensDto(); + newConfObj.CncData.SiemensCpu.CpuType = fIni.ReadString("CNC", "CPUTYPE", ""); + newConfObj.CncData.SiemensCpu.Rack = (short)fIni.ReadInteger("CNC", "RACK", 0); + newConfObj.CncData.SiemensCpu.Slot = (short)fIni.ReadInteger("CNC", "SLOT", 0); + } // BLINK newConfObj.InputDataProc.BlinkMaxCounter = Convert.ToInt32(fIni.ReadString("BLINK", "MAX_COUNTER_BLINK", "1")); @@ -84,7 +89,7 @@ namespace EgwConf.Iob newConfObj.ServerMES.Transport = MpIp.StartsWith("https://") ? "https" : "http"; newConfObj.ServerMES.IpAddr = MpIp.Replace($"{newConfObj.ServerMES.Transport}://", ""); // tolgo http/https... } - + // Altro (versione, ...) newConfObj.ReleaseVers = $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Version}"; newConfObj.IobManConf.MinDeltaSec = fIni.ReadInteger("IOB", "MinDeltaSec", 6); @@ -195,7 +200,7 @@ namespace EgwConf.Iob public string ConfFileName { get; set; } = ""; /// - /// TIpologia generale dell'adapter + /// Tipologia generale dell'adapter /// public ComLayer GeneralCom { get; set; } = ComLayer.ND; @@ -207,27 +212,27 @@ namespace EgwConf.Iob /// /// Setup server MP da chiamare /// - public ServerMapo ServerMES { get; set; } = new ServerMapo(); + public ServerMapoDto ServerMES { get; set; } = new ServerMapoDto(); /// /// Setup info verso IOB-MAN /// - public RedisPub IobManConf { get; set; } = new RedisPub(); + public IobManDto IobManConf { get; set; } = new IobManDto(); /// /// Dati configurazione CNC /// - public CncConf CncData { get; set; } = new CncConf(); + public ConnectParamsDto CncData { get; set; } = new ConnectParamsDto(); /// /// Setup processing dati in ingresso (es: blink segnali) /// - public InputSignalProcess InputDataProc { get; set; } = new InputSignalProcess(); + public InputSignalDto InputDataProc { get; set; } = new InputSignalDto(); /// /// Dati relativi ai parametri gestione tempo ciclo /// - public TCData TempoCiclo { get; set; } = new TCData(); + public TCDataDto TempoCiclo { get; set; } = new TCDataDto(); /// /// Dizionario dei parametri opzionali @@ -258,6 +263,7 @@ namespace EgwConf.Iob /// public string GetYaml() { + // opzioni alternative: PascalCaseNamingConvention (iniziale masiucola) o lowerCaseNamingConvention var serializer = new SerializerBuilder() .WithNamingConvention(CamelCaseNamingConvention.Instance) .Build(); diff --git a/EgwConf.Iob/Special/SiemensDto.cs b/EgwConf.Iob/Special/SiemensDto.cs new file mode 100644 index 0000000..dd2766d --- /dev/null +++ b/EgwConf.Iob/Special/SiemensDto.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EgwConf.Iob.Special +{ + public class SiemensDto + { + /// + /// TipoCPU (es: 1500, 1200, 300) + /// + public string CpuType { get; set; } = "ND"; + + /// + /// Rack (Siemens S7) + /// + public short Rack { get; set; } = 0; + + /// + /// Slot (Siemens S7) + /// + public short Slot { get; set; } = 0; + } +}