From ef1707b06d4f99b0b85e56d9b53bf0001d25c8b1 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Fri, 13 May 2016 11:04:32 +0200 Subject: [PATCH] Aggiunta gestione lettura status del SubMode... --- MTC_Sim/.vs/MTC_Sim/v14/.suo | Bin 237568 -> 138752 bytes MTC_Sim/MTC_Sim/AdapterFanuc.cs | 30 ++++++++++++++++----- MTC_Sim/MTC_Sim/AdapterGeneric.cs | 42 ++++++++++++++++++++++++++---- MTC_Sim/MTC_Sim/App.config | 5 ++-- MTC_Sim/MTC_Sim/MTC_Sim.csproj | 3 +++ MTC_Sim/MTC_Sim/SubMode.txt | 33 +++++++++++++++++++++++ 6 files changed, 99 insertions(+), 14 deletions(-) create mode 100644 MTC_Sim/MTC_Sim/SubMode.txt diff --git a/MTC_Sim/.vs/MTC_Sim/v14/.suo b/MTC_Sim/.vs/MTC_Sim/v14/.suo index 8017c151219c4c55be16e5ad0c6bdcb0bec9bfc6..699a045e7182ec3376fafee97bb24e6bf7ec333c 100644 GIT binary patch delta 5804 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 diff --git a/MTC_Sim/MTC_Sim/AdapterFanuc.cs b/MTC_Sim/MTC_Sim/AdapterFanuc.cs index 7b3c20a..ca34d9b 100644 --- a/MTC_Sim/MTC_Sim/AdapterFanuc.cs +++ b/MTC_Sim/MTC_Sim/AdapterFanuc.cs @@ -18,13 +18,18 @@ namespace MTC_Sim /// public AdapterFanuc(CMS_MachineSim caller, AdapterConf adpConf) : base(caller, adpConf) { + if (utils.CRB("verbose")) lg.Info("Start init Adapter FANUC"); Runtime.CreateNC(); FANUC_ref = (FANUC)Runtime.NC; - + if (utils.CRB("verbose")) lg.Info("FANUC_ref da CMSCncLib"); + // disconnetto e connetto... + if (utils.CRB("verbose")) lg.Info("FANUC: tryDisconnect"); tryDisconnect(); + if (utils.CRB("verbose")) lg.Info("FANUC: tryConnect"); tryConnect(); + if (utils.CRB("verbose")) lg.Info("End init Adapter FANUC"); } public override void tryDisconnect() @@ -496,14 +501,25 @@ namespace MTC_Sim vettPath[idxPath].mPathType.Value = "ASSERV"; } + // !!!FARE!!! verificare funzioni x status SUBMODE + // verifico sulla STRB_DW3 i submode che POTREBBERO tutti sovrapposti... + if (STRB_DW3 != StFlag32.NONE) + { + string SubMode = ""; + // cerco i bit alzati --> aggiungo relativo submode! + for (int i = 0; i < 32; i++) + { + // converto! e aggiungo allarmi sollevati al corretto controller allarmi... + if (STRB_DW3.HasFlag((StFlag32)Math.Pow(2, i))) + { + SubMode += string.Format("# {0} #", elencoSubMode[i.ToString()]); + } + } - // devo aver già in memoria come allarmi la lista dei SUBMODE (32) - - // leggo come allarmi i BIT attivi - - // per ogni BIT attivo aggiungo nell'event del PATH (forzato a 1) l'elenco separato da spazio dei submode attivi - + // se ho valori li salvo nell'event... + if (SubMode != "") vettPath[idxPath].mPathSubMode.Value = SubMode.Trim(); + } } public override void getConfigParam() diff --git a/MTC_Sim/MTC_Sim/AdapterGeneric.cs b/MTC_Sim/MTC_Sim/AdapterGeneric.cs index 6a774cd..0a73453 100644 --- a/MTC_Sim/MTC_Sim/AdapterGeneric.cs +++ b/MTC_Sim/MTC_Sim/AdapterGeneric.cs @@ -541,6 +541,8 @@ namespace MTC_Sim /// public allarme[] elencoAllarmi; + public Dictionary elencoSubMode; + ///

/// Prima word di strobe da array flag completo @@ -889,7 +891,7 @@ namespace MTC_Sim /// protected void loadAllarmi() { - lg.Info("Inizio caricamento vettore allarmi"); + if (utils.CRB("verbose")) lg.Info("Inizio caricamento vettore allarmi"); int totRighe = 0; string fileName = string.Format(@"{0}\{1}", Application.StartupPath, utils.CRS("AlarmList")); string linea; @@ -917,7 +919,36 @@ namespace MTC_Sim // inizializzo a zero il vettore allarmi... int numByte = (int)Math.Ceiling(Convert.ToDecimal(rumRiga) / 8); AlarmFlags = new byte[numByte]; - + if (utils.CRB("verbose")) lg.Info("Fine caricamento vettore allarmi"); + } + /// + /// caricamento allarmi da file + /// + protected void loadSubMode() + { + if (utils.CRB("verbose")) lg.Info("Inizio caricamento vettore SubMode"); + int totRighe = 0; + string fileName = string.Format(@"{0}\{1}", Application.StartupPath, utils.CRS("SubMode")); + string linea; + totRighe = File.ReadLines(fileName).Count(); + // inizializzo + elencoSubMode.Clear(); + // carica da file... + System.IO.StreamReader file = new System.IO.StreamReader(fileName); + // leggo 1 linea alla volta... + string[] valori; + while ((linea = file.ReadLine()) != null) + { + // SE non è un commento... + if (linea.Substring(0, 1) != "#") + { + valori = linea.Split(':'); + elencoSubMode.Add(valori[0], valori[1]); + } + } + // chiudo file + file.Close(); + if (utils.CRB("verbose")) lg.Info("Fine caricamento vettore SubMode"); } /// /// Decodifica file allarme @@ -942,7 +973,8 @@ namespace MTC_Sim lg.Info("Starting adapter..."); // inizializzo vettori di utility.. loadAllarmi(); - + loadSubMode(); + // Start the adapter lib with the port number in the text box mAdapter.Port = port; mAdapter.Start(); @@ -1008,7 +1040,7 @@ namespace MTC_Sim { // parte che eseguo SEMPRE: RECUPERO stato di tutti gli strobe/status e degli ack attualmente noti getStrobeAndAckStatus(); - + // faccio refresh degli allarmi segnalati (da strobe su vettore locale) refreshAlarmState(STRB_DW0, true); // acquisizione degli status @@ -1405,7 +1437,7 @@ namespace MTC_Sim break; } } - + /// /// recupera primo elemento codaM /// diff --git a/MTC_Sim/MTC_Sim/App.config b/MTC_Sim/MTC_Sim/App.config index 4658f05..4d07d7d 100644 --- a/MTC_Sim/MTC_Sim/App.config +++ b/MTC_Sim/MTC_Sim/App.config @@ -23,7 +23,8 @@ - - + + + \ No newline at end of file diff --git a/MTC_Sim/MTC_Sim/MTC_Sim.csproj b/MTC_Sim/MTC_Sim/MTC_Sim.csproj index 48347c7..cb10d0c 100644 --- a/MTC_Sim/MTC_Sim/MTC_Sim.csproj +++ b/MTC_Sim/MTC_Sim/MTC_Sim.csproj @@ -88,6 +88,9 @@ SetupAdapter.cs + + Always + Always diff --git a/MTC_Sim/MTC_Sim/SubMode.txt b/MTC_Sim/MTC_Sim/SubMode.txt new file mode 100644 index 0000000..1e4e70f --- /dev/null +++ b/MTC_Sim/MTC_Sim/SubMode.txt @@ -0,0 +1,33 @@ +# Commenti con "#", elenco tipo codice:valore delle label dei SUB_MODE di FANUC +0:DNC +1:Blk/Blk +2:BlkDel +3:OpStop +4:Teach +5:Prg Test +6:MLock +7:DryRun +8:Restart +9:x1 +10:x10 +11:x100 +12:x1000 +13: +14: +15: +16: +17: +18: +19: +20:Asse selezionato 1 +21:Asse selezionato 2 +22:Asse selezionato 3 +23:Asse selezionato 4 +24:Asse selezionato 5 +25:Asse selezionato 6 +26:Asse selezionato 7 +27:Asse selezionato 8 +28:Asse selezionato 9 +29:Asse selezionato 10 +30:Asse selezionato 11 +31:Asse selezionato 12 \ No newline at end of file