diff --git a/IOB-UT-NEXT/Config/Base/DeviceDto.cs b/IOB-UT-NEXT/Config/Base/DeviceDto.cs index 31b91cbf..6f1509a1 100644 --- a/IOB-UT-NEXT/Config/Base/DeviceDto.cs +++ b/IOB-UT-NEXT/Config/Base/DeviceDto.cs @@ -27,6 +27,11 @@ namespace IOB_UT_NEXT.Config.Base /// public bool IsMulti { get; set; } = false; + /// + /// Indica se si voglia recuperare il PROG NAME dal CNC + /// + public bool GetProgName { get; set; } = false; + /// /// Dati configurazione CNC /// @@ -40,7 +45,7 @@ namespace IOB_UT_NEXT.Config.Base /// /// Configurazione specifica FANUC (se applicabile) /// - public FanucDto FanucConf { get; set; } + public MemoryDto MemoryConf { get; set; } /// /// Configurazione specifica Siemens (se applicabile) diff --git a/IOB-UT-NEXT/Config/IobConfTree.cs b/IOB-UT-NEXT/Config/IobConfTree.cs index 3b44b549..c36334db 100644 --- a/IOB-UT-NEXT/Config/IobConfTree.cs +++ b/IOB-UT-NEXT/Config/IobConfTree.cs @@ -142,6 +142,7 @@ namespace IOB_UT_NEXT.Config { Vendor = fIni.ReadString("MACHINE", "VENDOR", "STEAMWARE"), Model = fIni.ReadString("MACHINE", "MODEL", "ND"), + GetProgName = fIni.ReadBoolean("CNC", "GETPRGNAME", true), ConnectConf = new ConnectionDto() { IpAddr = fIni.ReadString("CNC", "IP", "::1"), @@ -181,11 +182,11 @@ namespace IOB_UT_NEXT.Config newConfObj.DeviceConf.SignalLUT.Add(item.Key, item.Value); } } - // cerco dati specifici x popolare l'area Fanuc - if (memDict.Where(x => x.Key.StartsWith("AREA") || x.Key.StartsWith("PAR")).Count() > 0) + // cerco dati specifici x popolare l'area Memoria (Fanuc/Mitsubischi/...) + if (memDict.Where(x => x.Key.StartsWith("AREA") || x.Key.StartsWith("PAR") || x.Key.StartsWith("SIGN")).Count() > 0) { // init fanuc... - newConfObj.DeviceConf.FanucConf = new FanucDto(); + newConfObj.DeviceConf.MemoryConf = new MemoryDto(); // inizio setup prendendo quelli con valori addrSize foreach (var item in memDict.Where(x => x.Key.EndsWith("SIZE"))) { @@ -206,13 +207,15 @@ namespace IOB_UT_NEXT.Config AddressStart = addrStart, AddressSize = addrSize }; - newConfObj.DeviceConf.FanucConf.MemConf.Add(mId, memArea); + newConfObj.DeviceConf.MemoryConf.AreaConf.Add(mId, memArea); } } } } } } + // salvo eventuale memTrace... + newConfObj.DeviceConf.MemoryConf.Mem2Trace = fIni.ReadString("OPTPAR", "MEM_2_TRACE", ""); // parametri opzionali Siemens if (!string.IsNullOrEmpty(fIni.ReadString("CNC", "CPUTYPE", ""))) diff --git a/IOB-UT-NEXT/Config/Special/FanucDto.cs b/IOB-UT-NEXT/Config/Special/FanucDto.cs deleted file mode 100644 index 36c035c8..00000000 --- a/IOB-UT-NEXT/Config/Special/FanucDto.cs +++ /dev/null @@ -1,20 +0,0 @@ -using IOB_UT_NEXT.Config.Mem; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace IOB_UT_NEXT.Config.Special -{ - /// - /// Configurazione specifica memoria per FANUC - /// - public class FanucDto - { - /// - /// Conf aree di memoria da gestire - /// - public Dictionary MemConf { get; set; } = new Dictionary(); - } -} diff --git a/IOB-UT-NEXT/Config/Special/MemoryDto.cs b/IOB-UT-NEXT/Config/Special/MemoryDto.cs new file mode 100644 index 00000000..14a41b14 --- /dev/null +++ b/IOB-UT-NEXT/Config/Special/MemoryDto.cs @@ -0,0 +1,25 @@ +using IOB_UT_NEXT.Config.Mem; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IOB_UT_NEXT.Config.Special +{ + /// + /// Configurazione memoria a banchi (es: Fanuc, Mitsubishi, ...) + /// + public class MemoryDto + { + /// + /// Conf aree di memoria da gestire + /// + public Dictionary AreaConf { get; set; } = new Dictionary(); + + /// + /// Valori dei bit di memoria da gestire con trace ad ogni check x debug + /// + public string Mem2Trace { get; set; } = ""; + } +} diff --git a/IOB-UT-NEXT/IOB-UT-NEXT.csproj b/IOB-UT-NEXT/IOB-UT-NEXT.csproj index 63c2ce4a..1ae80c86 100644 --- a/IOB-UT-NEXT/IOB-UT-NEXT.csproj +++ b/IOB-UT-NEXT/IOB-UT-NEXT.csproj @@ -169,7 +169,7 @@ - + diff --git a/IOB-WIN-BECKHOFF/AdapterFormNext.cs b/IOB-WIN-BECKHOFF/AdapterFormNext.cs index 44f662de..4b84a2ad 100644 --- a/IOB-WIN-BECKHOFF/AdapterFormNext.cs +++ b/IOB-WIN-BECKHOFF/AdapterFormNext.cs @@ -23,25 +23,25 @@ namespace IOB_WIN_BECKHOFF /// protected override void loadIobType() { - if (IOBConf != null) + if (IOBConfFull != null) { switch (tipoScelto) { case tipoAdapter.BECKHOFF: case tipoAdapter.BECKHOFF_CPA: - iobObj = new IobBeckhoff.BeckhoffCpa(this, IOBConf, IOBConfFull); + iobObj = new IobBeckhoff.BeckhoffCpa(this, IOBConfFull); btnStart.Enabled = true; break; case tipoAdapter.SIMULA: case tipoAdapter.ND: default: - iobObj = new IOB_WIN_FORM.Iob.Simula(this, IOBConf, IOBConfFull); + iobObj = new IOB_WIN_FORM.Iob.Simula(this, IOBConfFull); btnStart.Enabled = false; break; } - lblCncText = $"CNC: {IOBConf.tipoIob} [{IOBConf.cncIpAddr}:{IOBConf.cncPort}]"; - lblSrvUrlText = $"SRV: {IOBConf.serverData.MPIP} | URL: {IOBConf.serverData.MPURL}{IOBConf.serverData.CMDBASE}"; + lblCncText = $"CNC: {IOBConfFull.GenConf.IobType} [{IOBConfFull.DeviceConf.ConnectConf.IpAddr}:{IOBConfFull.DeviceConf.ConnectConf.Port}]"; + lblSrvUrlText = $"SRV: {IOBConfFull.MapoMesConf.IpAddr} | URL: {IOBConfFull.MapoMesConf.ApiUrl("")}"; // aggancio evento refresh iobObj.eh_refreshed += IobObj_eh_refreshed; diff --git a/IOB-WIN-BECKHOFF/Iob/GenericNext.cs b/IOB-WIN-BECKHOFF/Iob/GenericNext.cs index d6892c21..6efc4633 100644 --- a/IOB-WIN-BECKHOFF/Iob/GenericNext.cs +++ b/IOB-WIN-BECKHOFF/Iob/GenericNext.cs @@ -12,7 +12,7 @@ namespace IOB_WIN_BECKHOFF.Iob public class GenericNext : IOB_WIN_FORM.Iob.Generic { - public GenericNext(AdapterFormNext caller, IobConfiguration IOBConf, IobConfTree IobConfFull) : base((IOB_WIN_FORM.AdapterForm)caller, IOBConf, IobConfFull) + public GenericNext(AdapterFormNext caller, IobConfTree IobConfFull) : base((IOB_WIN_FORM.AdapterForm)caller, IobConfFull) { } diff --git a/IOB-WIN-BECKHOFF/IobBeckhoff/Beckhoff.cs b/IOB-WIN-BECKHOFF/IobBeckhoff/Beckhoff.cs index 0ec24dcd..04c6ef75 100644 --- a/IOB-WIN-BECKHOFF/IobBeckhoff/Beckhoff.cs +++ b/IOB-WIN-BECKHOFF/IobBeckhoff/Beckhoff.cs @@ -19,9 +19,8 @@ namespace IOB_WIN_BECKHOFF.IobBeckhoff /// Estende l'init della classe base /// /// Form chiamante - /// Configurazione (legacy) /// Configurazione (v 4.x) - public Beckhoff(AdapterFormNext caller, IobConfiguration IOBConf, IobConfTree IobConfFull) : base(caller, IOBConf, IobConfFull) + public Beckhoff(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull) { lgInfo("NEW IobBeckhoff Adapter"); // gestione invio ritardato contapezzi @@ -108,8 +107,8 @@ namespace IOB_WIN_BECKHOFF.IobBeckhoff if (!connectionOk) { int port = 851; - int.TryParse(cIobConf.cncPort, out port); - string addr = !string.IsNullOrEmpty(cIobConf.cncIpAddr) ? cIobConf.cncIpAddr : "local"; + int.TryParse(IOBConfFull.DeviceConf.ConnectConf.Port, out port); + string addr = !string.IsNullOrEmpty(IOBConfFull.DeviceConf.ConnectConf.IpAddr) ? IOBConfFull.DeviceConf.ConnectConf.IpAddr : "local"; lgInfo($"Parametri TC client | addr: {addr} | port: {port}"); // predispongo dataVal foreach (var item in memMap.mMapRead) diff --git a/IOB-WIN-BECKHOFF/IobBeckhoff/BeckhoffCpa.cs b/IOB-WIN-BECKHOFF/IobBeckhoff/BeckhoffCpa.cs index ccf92b57..e3ebc01c 100644 --- a/IOB-WIN-BECKHOFF/IobBeckhoff/BeckhoffCpa.cs +++ b/IOB-WIN-BECKHOFF/IobBeckhoff/BeckhoffCpa.cs @@ -14,9 +14,8 @@ namespace IOB_WIN_BECKHOFF.IobBeckhoff /// Estende l'init della classe base /// /// Form chiamante - /// Configurazione (legacy) /// Configurazione (v 4.x) - public BeckhoffCpa(AdapterFormNext caller, IobConfiguration IOBConf, IobConfTree IobConfFull) : base(caller, IOBConf, IobConfFull) + public BeckhoffCpa(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull) { lgInfo("START IobBeckhoffCPA Adapter specifico"); diff --git a/IOB-WIN-FORM/Iob/Generic.cs b/IOB-WIN-FORM/Iob/Generic.cs index 8394fc4d..032f026f 100644 --- a/IOB-WIN-FORM/Iob/Generic.cs +++ b/IOB-WIN-FORM/Iob/Generic.cs @@ -8525,7 +8525,7 @@ namespace IOB_WIN_FORM.Iob i_counters = new int[32]; lastPeriodicLog = DateTime.Now; // fix parametri generali... - enablePrgName = true; + enablePrgName = IOBConfFull.DeviceConf.GetProgName; // valore standard divieto accodamento segnali IN string VETO_QUEUE_IN = getOptPar("VETO_QUEUE_IN"); if (!string.IsNullOrEmpty(VETO_QUEUE_IN)) diff --git a/IOB-WIN-KAWASAKI/AdapterFormNext.cs b/IOB-WIN-KAWASAKI/AdapterFormNext.cs index 3f67cf05..9d77762d 100644 --- a/IOB-WIN-KAWASAKI/AdapterFormNext.cs +++ b/IOB-WIN-KAWASAKI/AdapterFormNext.cs @@ -17,20 +17,20 @@ namespace IOB_WIN_KAWASAKI /// protected override void loadIobType() { - if (IOBConf != null) + if (IOBConfFull != null) { switch (tipoScelto) { case tipoAdapter.KAWASAKI: - iobObj = new Iob.Kawasaki(this, IOBConf, IOBConfFull); + iobObj = new Iob.Kawasaki(this, IOBConfFull); btnStart.Enabled = true; break; case tipoAdapter.SIMULA: case tipoAdapter.ND: default: - iobObj = new IOB_WIN_FORM.Iob.Simula(this, IOBConf, IOBConfFull); + iobObj = new IOB_WIN_FORM.Iob.Simula(this, IOBConfFull); btnStart.Enabled = false; break; } diff --git a/IOB-WIN-KAWASAKI/Iob/GenericNext.cs b/IOB-WIN-KAWASAKI/Iob/GenericNext.cs index c41a233c..4dee35fc 100644 --- a/IOB-WIN-KAWASAKI/Iob/GenericNext.cs +++ b/IOB-WIN-KAWASAKI/Iob/GenericNext.cs @@ -15,7 +15,7 @@ namespace IOB_WIN_KAWASAKI.Iob /// Form chiamante /// Configurazione (legacy) /// Configurazione (v 4.x) - public GenericNext(AdapterFormNext caller, IobConfiguration IOBConf, IobConfTree IobConfFull) : base((IOB_WIN_FORM.AdapterForm)caller, IOBConf, IobConfFull) + public GenericNext(AdapterFormNext caller, IobConfTree IobConfFull) : base((IOB_WIN_FORM.AdapterForm)caller, IobConfFull) { } } diff --git a/IOB-WIN-KAWASAKI/Iob/Kawasaki.cs b/IOB-WIN-KAWASAKI/Iob/Kawasaki.cs index 55c8bfe6..10e5fcba 100644 --- a/IOB-WIN-KAWASAKI/Iob/Kawasaki.cs +++ b/IOB-WIN-KAWASAKI/Iob/Kawasaki.cs @@ -15,9 +15,8 @@ namespace IOB_WIN_KAWASAKI.Iob /// estende l'init della classe base... /// /// Form chiamante - /// Configurazione (legacy) /// Configurazione (v 4.x) - public Kawasaki(AdapterFormNext caller, IobConfiguration IOBConf, IobConfTree IobConfFull) : base(caller, IOBConf, IobConfFull) + public Kawasaki(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull) { // gestione invio ritardato contapezzi pzCountDelay = utils.CRI("pzCountDelay"); @@ -144,7 +143,7 @@ namespace IOB_WIN_KAWASAKI.Iob case taskType.stopSetup: // reset contapezzi fine setup // reset contapezzi fine setup SE // ESPLICITAMENTE IMPOSTATO - if (cIobConf.optPar.Count > 0 && getOptPar("ENABLE_PZ_RESET_stopSetup") == "TRUE") + if (getOptPar("ENABLE_PZ_RESET_stopSetup") == "TRUE") { resetContapezziPLC(); } @@ -212,7 +211,7 @@ namespace IOB_WIN_KAWASAKI.Iob contapezziPLC = pzCounter; // verifico quale modalità sia richiesta: STD (6711) oppure BIT (Custom, con // indicazione area) - if (cIobConf.optPar.Count > 0 && !string.IsNullOrEmpty(getOptPar("PZCOUNT_MODE"))) + if (!string.IsNullOrEmpty(getOptPar("PZCOUNT_MODE"))) { #if false string memAddr = getOptPar("PZCOUNT_MODE"); @@ -357,7 +356,7 @@ namespace IOB_WIN_KAWASAKI.Iob { bool answ = false; // ...SE abilitato da conf IOB - if (cIobConf.optPar.Count > 0 && getOptPar("ENABLE_PZ_RESET") == "TRUE") + if (getOptPar("ENABLE_PZ_RESET") == "TRUE") { // scrivo valore 0 x il contapezzi try @@ -402,7 +401,7 @@ namespace IOB_WIN_KAWASAKI.Iob { // ora provo connessione... parentForm.commPlcActive = true; - string connPar = string.Format("TCP {0}", cIobConf.cncIpAddr); + string connPar = $"TCP {IOBConfFull.DeviceConf.ConnectConf.IpAddr}"; KAWASAKI_ref.connect(connPar); parentForm.commPlcActive = false; lgInfo("szStatusConnection: " + KAWASAKI_ref.IsConnected); @@ -423,9 +422,9 @@ namespace IOB_WIN_KAWASAKI.Iob } catch (Exception exc) { - lgFatal(string.Format("Errore nella connessione all'adapter KAWASAKI: {0}{1}{2}", szStatusConnection, Environment.NewLine, exc)); + lgFatal($"Errore nella connessione all'adapter KAWASAKI: {szStatusConnection}{Environment.NewLine}{exc}"); connectionOk = false; - lgInfo(string.Format("Eccezione in TryConnect, Adapter KAWASAKI NON running, pausa di {0} msec prima di ulteriori tentativi di riconnessione", utils.CRI("waitRecMSec"))); + lgInfo($"Eccezione in TryConnect, Adapter KAWASAKI NON running, pausa di {utils.CRI("waitRecMSec")} msec prima di ulteriori tentativi di riconnessione"); } } else @@ -435,7 +434,7 @@ namespace IOB_WIN_KAWASAKI.Iob needRefresh = true; if (verboseLog || periodicLog) { - lgInfo(string.Format("Attenzione: KAWASAKI controllo PING fallito per IP {0}", cIobConf.cncPingAddr)); + lgInfo($"Attenzione: KAWASAKI controllo PING fallito per IP {IOBConfFull.DeviceConf.ConnectConf.PingIpAddr}"); } } } @@ -720,12 +719,7 @@ namespace IOB_WIN_KAWASAKI.Iob { // Creo oggetto connessione NC parentForm.commPlcActive = true; - lgInfoStartup("Start init Adapter KAWASAKI all'IP {0} | --> IOB {1}", cIobConf.cncIpAddr, cIobConf.codIOB); - - // inizializzo correttamente aree memoria secondo CONF - iniFileName - IniFile fIni = new IniFile(cIobConf.iniFileName); - // fix enable prgName - enablePrgName = fIni.ReadBoolean("CNC", "GETPRGNAME", true); + lgInfoStartup($"Start init Adapter KAWASAKI all'IP {IOBConfFull.DeviceConf.ConnectConf.IpAddr} | --> IOB {IOBConfFull.GenConf.CodIOB}"); // SE è necessario refresh... if (needRefresh) @@ -736,7 +730,7 @@ namespace IOB_WIN_KAWASAKI.Iob { try { - string connPar = string.Format("TCP {0}", cIobConf.cncIpAddr); + string connPar = $"TCP {IOBConfFull.DeviceConf.ConnectConf.IpAddr}"; KAWASAKI_ref = new KRcc.Commu(connPar); // disconnetto e connetto... if (isVerboseLog) @@ -765,7 +759,7 @@ namespace IOB_WIN_KAWASAKI.Iob { // verifico quale modalità sia richiesta: STD (6711) oppure BIT (Custom, con // indicazione area) - if (cIobConf.optPar.Count > 0 && !string.IsNullOrEmpty(getOptPar("PZCOUNT_MODE"))) + if (!string.IsNullOrEmpty(getOptPar("PZCOUNT_MODE"))) { if (getOptPar("PZCOUNT_MODE").StartsWith("STD")) { diff --git a/IOB-WIN-MITSUBISHI/AdapterFormNext.cs b/IOB-WIN-MITSUBISHI/AdapterFormNext.cs index e1c476f4..9cdf4e25 100644 --- a/IOB-WIN-MITSUBISHI/AdapterFormNext.cs +++ b/IOB-WIN-MITSUBISHI/AdapterFormNext.cs @@ -23,19 +23,19 @@ namespace IOB_WIN_MITSUBISHI /// protected override void loadIobType() { - if (IOBConf != null) + if (IOBConfFull != null) { switch (tipoScelto) { case tipoAdapter.MITSUBISHI: - iobObj = new Mitsubishi(this, IOBConf, IOBConfFull); + iobObj = new Mitsubishi(this, IOBConfFull); btnStart.Enabled = true; break; case tipoAdapter.SIMULA: case tipoAdapter.ND: default: - iobObj = new IOB_WIN_FORM.Iob.Simula(this, IOBConf, IOBConfFull); + iobObj = new IOB_WIN_FORM.Iob.Simula(this, IOBConfFull); btnStart.Enabled = false; break; } diff --git a/IOB-WIN-MITSUBISHI/Iob/GenericNext.cs b/IOB-WIN-MITSUBISHI/Iob/GenericNext.cs index 26f1de78..e5792ee9 100644 --- a/IOB-WIN-MITSUBISHI/Iob/GenericNext.cs +++ b/IOB-WIN-MITSUBISHI/Iob/GenericNext.cs @@ -10,9 +10,8 @@ namespace IOB_WIN_MITSUBISHI.Iob /// Adapter generico del progetto IOB specifico /// /// Form chiamante - /// Configurazione (legacy) /// Configurazione (v 4.x) - public GenericNext(AdapterFormNext caller, IobConfiguration IOBConf, IobConfTree IobConfFull) : base((IOB_WIN_FORM.AdapterForm)caller, IOBConf, IobConfFull) + public GenericNext(AdapterFormNext caller, IobConfTree IobConfFull) : base((IOB_WIN_FORM.AdapterForm)caller, IobConfFull) { } diff --git a/IOB-WIN-MITSUBISHI/Iob/Mitsubishi.cs b/IOB-WIN-MITSUBISHI/Iob/Mitsubishi.cs index 0c0daa10..a55e9019 100644 --- a/IOB-WIN-MITSUBISHI/Iob/Mitsubishi.cs +++ b/IOB-WIN-MITSUBISHI/Iob/Mitsubishi.cs @@ -17,9 +17,8 @@ namespace IOB_WIN_MITSUBISHI.Iob /// Estende l'init della classe base... /// /// Form chiamante - /// Configurazione (legacy) /// Configurazione (v 4.x) - public Mitsubishi(AdapterFormNext caller, IobConfiguration IOBConf, IobConfTree IobConfFull) : base(caller, IOBConf, IobConfFull) + public Mitsubishi(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull) { lgInfo("Start init Mitsubishi"); // gestione invio ritardato contapezzi @@ -27,25 +26,52 @@ namespace IOB_WIN_MITSUBISHI.Iob lastPzCountSend = DateTime.Now; lastWarnODL = DateTime.Now; - // inizializzo correttamente aree memoria secondo CONF - iniFileName - IniFile fIni = new IniFile(IOBConf.iniFileName); + // inizializzo correttamente aree memoria secondo CONF - da IobConfFull + IOB_UT_NEXT.Config.Mem.MemAreaDto currArea= new IOB_UT_NEXT.Config.Mem.MemAreaDto(); + string aName = "AREAV"; + if (IobConfFull.DeviceConf.MemoryConf.AreaConf.ContainsKey(aName)) + { + currArea = IobConfFull.DeviceConf.MemoryConf.AreaConf[aName]; + MemVarStart = currArea.AddressStart; + MemVarSize = currArea.AddressSize; + } + else + { + MemVarStart = 500; + MemVarSize = 1; + } + aName = "PAR"; + if (IobConfFull.DeviceConf.MemoryConf.AreaConf.ContainsKey(aName)) + { + currArea = IobConfFull.DeviceConf.MemoryConf.AreaConf[aName]; + ParamStart = currArea.AddressStart; + ParamSize = currArea.AddressSize; + } + else + { + ParamStart = 8001; + ParamSize = 1; + } + aName = "SIGN"; + if (IobConfFull.DeviceConf.MemoryConf.AreaConf.ContainsKey(aName)) + { + currArea = IobConfFull.DeviceConf.MemoryConf.AreaConf[aName]; + SignStart = currArea.AddressStart; + SignSize = currArea.AddressSize; + } + else + { + SignStart = 10096; + SignSize = 1; + } - // inizializzo aree di memoria correnti... - MemVarStart = fIni.ReadInteger("MEMORY", "AREAV_START", 500); - MemVarSize = fIni.ReadInteger("MEMORY", "AREAV_SIZE", 1); - ParamStart = fIni.ReadInteger("MEMORY", "PAR_START", 8001); - ParamSize = fIni.ReadInteger("MEMORY", "PAR_SIZE", 1); - SignStart = fIni.ReadInteger("MEMORY", "SIGN_START", 10096); - SignSize = fIni.ReadInteger("MEMORY", "SIGN_SIZE", 1); // loggo aree di memoria avviate... lgInfo($"Avviata area di memoria Var: {MemVarSize} vars"); lgInfo($"Avviata area di memoria Param: {ParamSize} params"); - // fix enable prgName - enablePrgName = fIni.ReadBoolean("CNC", "GETPRGNAME", true); - // effettuo lettura della conf sigLUT... cercando 1:1 i bit... +#if false string currBit = ""; string memArea = ""; for (int i = 0; i < 8; i++) @@ -57,7 +83,10 @@ namespace IOB_WIN_MITSUBISHI.Iob { signLUT.Add(currBit, memArea); } - } + } +#endif + // 2025.02.25 da verificare assegnazione DA CONF + signLUT = new Dictionary(IOBConfFull.DeviceConf.SignalLUT); // recupero sysType del controllo, sennò default M700L... string sEZNC_SYS = getOptPar("EZNC_SYS"); @@ -85,19 +114,26 @@ namespace IOB_WIN_MITSUBISHI.Iob } // leggo conf x ricerca valori memoria da tracciare in log di continuo... - mem2trace = fIni.ReadString("OPTPAR", "MEM_2_TRACE", ""); +#if false + mem2trace = fIni.ReadString("OPTPAR", "MEM_2_TRACE", ""); +#endif + mem2trace = IOBConfFull.DeviceConf.MemoryConf.Mem2Trace; // è little endian (NON serve conversione) hasBigEndian = false; - lgInfoStartup($"Start init Adapter MITSUBISHI | IP {IOBConf.cncIpAddr}:{IOBConf.cncPort} per IOB {IOBConf.codIOB}"); + lgInfoStartup($"Start init Adapter MITSUBISHI | IP {IOBConfFull.DeviceConf.ConnectConf.IpAddr}:{IOBConfFull.DeviceConf.ConnectConf.Port} per IOB {IOBConfFull.GenConf.CodIOB}"); // Creo oggetto connessione NC parentForm.commPlcActive = true; // init oggetto oEZNcAutCom = new EZNCAUTLib.DispEZNcCommunication(); + int.TryParse(IOBConfFull.DeviceConf.ConnectConf.Port, out ezPort); + ipAddr = IOBConfFull.DeviceConf.ConnectConf.IpAddr; +#if false int.TryParse(IOBConf.cncPort, out ezPort); - ipAddr = IOBConf.cncIpAddr; + ipAddr = IOBConf.cncIpAddr; +#endif parentForm.commPlcActive = false; @@ -111,7 +147,7 @@ namespace IOB_WIN_MITSUBISHI.Iob { // verifico quale modalità sia richiesta: STD (6711) oppure BIT (Custom, con // indicazione area) - if (cIobConf.optPar.Count > 0 && !string.IsNullOrEmpty(getOptPar("PZCOUNT_MODE"))) + if (!string.IsNullOrEmpty(getOptPar("PZCOUNT_MODE"))) { if (getOptPar("PZCOUNT_MODE").StartsWith("STD")) { @@ -394,7 +430,7 @@ namespace IOB_WIN_MITSUBISHI.Iob case taskType.stopSetup: // reset contapezzi fine setup SE ESPLICITAMENTE IMPOSTATO - if (cIobConf.optPar.Count > 0 && getOptPar("ENABLE_PZ_RESET_stopSetup") == "TRUE") + if (IOBConfFull.OptParConf.Count > 0 && getOptPar("ENABLE_PZ_RESET_stopSetup") == "TRUE") { taskOk = resetContapezziPLC(); } @@ -568,7 +604,7 @@ namespace IOB_WIN_MITSUBISHI.Iob } if (utils.CRB("recTime")) { - TimingData.addResult(cIobConf.codIOB, string.Format("SYS-INFO"), sw.ElapsedTicks); + TimingData.addResult(IOBConfFull.GenConf.CodIOB, string.Format("SYS-INFO"), sw.ElapsedTicks); } return outVal; } @@ -591,7 +627,7 @@ namespace IOB_WIN_MITSUBISHI.Iob // lettura parametri per procedere ReadMitsubParams(); // controllo di AVERE parametri opzionali x conteggi vari - if (cIobConf.optPar.Count > 0) + if (IOBConfFull.OptParConf.Count > 0) { // contapezzi ATTUALE string memAddr = getOptPar("PZCOUNT_MODE"); @@ -648,7 +684,7 @@ namespace IOB_WIN_MITSUBISHI.Iob ReadMitsubParams(); // controllo di AVERE parametri opzionali x conteggi vari - if (cIobConf.optPar.Count > 0) + if (IOBConfFull.OptParConf.Count > 0) { // gestione con ricerca in memoria Write / optPar... if (string.IsNullOrEmpty(memAddrPzReq)) @@ -753,7 +789,7 @@ namespace IOB_WIN_MITSUBISHI.Iob { bool answ = false; // ...SE abilitato da conf IOB - if (cIobConf.optPar.Count > 0 && getOptPar("ENABLE_PZ_RESET") == "TRUE") + if (getOptPar("ENABLE_PZ_RESET") == "TRUE") { // scrivo valore 0 x il contapezzi try @@ -793,7 +829,7 @@ namespace IOB_WIN_MITSUBISHI.Iob bool answ = false; string memAddr = memAddrArt; lgTrace($"INIT setNumArt | memAddr: {memAddr}"); - if (cIobConf.optPar.Count > 0 && !string.IsNullOrEmpty(memAddr)) + if (IOBConfFull.OptParConf.Count > 0 && !string.IsNullOrEmpty(memAddr)) { // scrivo valore richiesto in area configurata try @@ -818,7 +854,7 @@ namespace IOB_WIN_MITSUBISHI.Iob // verifico quale modalità sia richiesta string memAddr = memAddrCom; lgTrace($"INIT setNumCom | memAddr: {memAddr}"); - if (cIobConf.optPar.Count > 0 && !string.IsNullOrEmpty(memAddr)) + if (IOBConfFull.OptParConf.Count > 0 && !string.IsNullOrEmpty(memAddr)) { lgTrace($"setNumCom | memAddr: {memAddr} | valReq: {valReq}"); // scrivo valore richiesto in area configurata @@ -843,7 +879,7 @@ namespace IOB_WIN_MITSUBISHI.Iob { bool answ = false; // ...SE abilitato da conf IOB - if (cIobConf.optPar.Count > 0 && getOptPar("ENABLE_PZ_REQ") == "TRUE") + if (IOBConfFull.OptParConf.Count > 0 && getOptPar("ENABLE_PZ_REQ") == "TRUE") { // scrivo valore 0 x il contapezzi try @@ -880,7 +916,7 @@ namespace IOB_WIN_MITSUBISHI.Iob // ora PING!!! Ping pingSender = new Ping(); IPAddress address = IPAddress.Loopback; - IPAddress.TryParse(cIobConf.cncIpAddr, out address); + IPAddress.TryParse(IOBConfFull.DeviceConf.ConnectConf.PingIpAddr, out address); PingReply reply; try { @@ -891,7 +927,7 @@ namespace IOB_WIN_MITSUBISHI.Iob } else { - reply = pingSender.Send(cIobConf.cncIpAddr, 100); + reply = pingSender.Send(IOBConfFull.DeviceConf.ConnectConf.IpAddr, 100); } } catch @@ -944,7 +980,7 @@ namespace IOB_WIN_MITSUBISHI.Iob connectionOk = false; if (verboseLog || periodicLog) { - lgInfo(string.Format("Attenzione: controllo PING fallito per IP {0} - {1}", cIobConf.cncPingAddr, reply.Status)); + lgInfo($"Attenzione: controllo PING fallito per IP {IOBConfFull.DeviceConf.ConnectConf.PingIpAddr} - {reply.Status}"); } } } @@ -1840,7 +1876,7 @@ namespace IOB_WIN_MITSUBISHI.Iob // recording tempi if (utils.CRB("recTime")) { - TimingData.addResult(cIobConf.codIOB, $"Sign{SignSize}-R", sw.ElapsedTicks); + TimingData.addResult(IOBConfFull.GenConf.CodIOB, $"Sign{SignSize}-R", sw.ElapsedTicks); } sw.Stop(); } @@ -1868,7 +1904,7 @@ namespace IOB_WIN_MITSUBISHI.Iob int iRet = oEZNcAutCom.Parameter_GetData3(0, ParamStart, ParamSize, lAxis, out parValue); if (utils.CRB("recTime")) { - TimingData.addResult(cIobConf.codIOB, $"R{ParamSize}-PAR", sw.ElapsedTicks); + TimingData.addResult(IOBConfFull.GenConf.CodIOB, $"R{ParamSize}-PAR", sw.ElapsedTicks); } // converto in array di string... string[] rawData = (string[])parValue; @@ -1910,7 +1946,7 @@ namespace IOB_WIN_MITSUBISHI.Iob } if (utils.CRB("recTime")) { - TimingData.addResult(cIobConf.codIOB, $"R{MemVarSize}-VAR", sw.ElapsedTicks); + TimingData.addResult(IOBConfFull.GenConf.CodIOB, $"R{MemVarSize}-VAR", sw.ElapsedTicks); } } else @@ -2013,7 +2049,7 @@ namespace IOB_WIN_MITSUBISHI.Iob lgTrace($"VAR | {memName} Write 02 | memAddr: {memAddr} | valReq: {valReq}"); if (utils.CRB("recTime")) { - TimingData.addResult(cIobConf.codIOB, "VAR-W", sw.ElapsedTicks); + TimingData.addResult(IOBConfFull.GenConf.CodIOB, "VAR-W", sw.ElapsedTicks); } answ = iRet == 0; // se successo --> rileggo! @@ -2042,7 +2078,7 @@ namespace IOB_WIN_MITSUBISHI.Iob lgTrace($"PAR | {memName} Write 02 | memAddr: {memAddr} | valReq: {valReq}"); if (utils.CRB("recTime")) { - TimingData.addResult(cIobConf.codIOB, "PAR-W", sw.ElapsedTicks); + TimingData.addResult(IOBConfFull.GenConf.CodIOB, "PAR-W", sw.ElapsedTicks); } answ = iRet == 0; // se successo --> rileggo! diff --git a/IOB-WIN-PING/AdapterFormNext.cs b/IOB-WIN-PING/AdapterFormNext.cs index 56a1a985..8bb1d773 100644 --- a/IOB-WIN-PING/AdapterFormNext.cs +++ b/IOB-WIN-PING/AdapterFormNext.cs @@ -29,19 +29,19 @@ namespace IOB_WIN_SHELLY /// protected override void loadIobType() { - if (IOBConf != null) + if (IOBConfFull != null) { switch (tipoScelto) { case tipoAdapter.PingWatchdog: - iobObj = new IOB_WIN_FORM.Iob.PingWatchDog(this, IOBConf, IOBConfFull); + iobObj = new IOB_WIN_FORM.Iob.PingWatchDog(this, IOBConfFull); btnStart.Enabled = true; break; case tipoAdapter.SIMULA: case tipoAdapter.ND: default: - iobObj = new IOB_WIN_FORM.Iob.Simula(this, IOBConf, IOBConfFull); + iobObj = new IOB_WIN_FORM.Iob.Simula(this, IOBConfFull); btnStart.Enabled = false; break; } diff --git a/IOB-WIN-SHELLY/DATA/CONF/SHELLY_01.ini b/IOB-WIN-SHELLY/DATA/CONF/SHELLY_01.ini index 27a1fd6f..49efd039 100644 --- a/IOB-WIN-SHELLY/DATA/CONF/SHELLY_01.ini +++ b/IOB-WIN-SHELLY/DATA/CONF/SHELLY_01.ini @@ -30,6 +30,19 @@ CMD_FORCLE_SPLIT_ODL=/IOB/forceSplitOdlFull/ CMD_IDLE_TIME=/IOB/getIdlePeriod/ [MEMORY] +; Green Y62=10098 | Red: Y60=10096 | Yellow: Y61=10097 | Blue Y63=10099 | Emerg: ??? (negata???)| +;BIT0=CONN +BIT1=10098 +;BIT2=PZCOUNT.PAR.8002 +BIT3=10096 +BIT4=10097 +;BIT5=!X8.4 +AREAV_START=500 +AREAV_SIZE=3 +PAR_START=8001 +PAR_SIZE=3 +SIGN_START=10096 +SIGN_SIZE=4 [BLINK] MAX_COUNTER_BLINK = 15 @@ -73,6 +86,8 @@ EnabelPodlManFull=true CodGruppoIob=STEAMWARE-SIM-FASE-01 ; invio flux alla lettura file sendFluxOnRead=true +; bit da scrivere come trace ad ogni check +MEM_2_TRACE=|BIT3|BIT4|BIT5| [BRANCH] NAME=master