From 0fba8fadd9971bffe638e54ba86b7d0d5bb15918 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Fri, 20 May 2016 17:07:03 +0200 Subject: [PATCH] Completata gestione allarmi CNC (non definiti su quale asse...) --- MTC_Sim/CMSCncLib/CNC/CNC.FANUC/CNC.FANUC.vb | 38 ++++++++ MTC_Sim/MTC_Sim/AdapterFanuc.cs | 91 ++++++++++++++++---- MTC_Sim/MTC_Sim/AdapterGeneric.cs | 1 - 3 files changed, 114 insertions(+), 16 deletions(-) diff --git a/MTC_Sim/CMSCncLib/CNC/CNC.FANUC/CNC.FANUC.vb b/MTC_Sim/CMSCncLib/CNC/CNC.FANUC/CNC.FANUC.vb index 6d18ebb..c330a6f 100644 --- a/MTC_Sim/CMSCncLib/CNC/CNC.FANUC/CNC.FANUC.vb +++ b/MTC_Sim/CMSCncLib/CNC/CNC.FANUC/CNC.FANUC.vb @@ -719,6 +719,8 @@ Namespace CNC ' leggo tutto!!! nReturn = Focas1.cnc_rddynamic2(nLibHandle(nPathIdx), 1, 28 + 4 * (4 * 1), allData) + '!!!FARE!!! LEGGE 1 SOLO ASSE!!! + 'nReturn = Focas1.cnc_rddynamic2(nLibHandle(nPathIdx), -1, 28 + 4 * (4 * nNumAxisRead), allData) If F_CheckRetError_Cnc(nReturn, "cnc_rddynamic2 RefreshAllData CNC.FANUC.CMS_CncLib") Then Throw New CmsNcException("ERR cnc_rddynamic2 RefreshAllData CNC.FANUC.CMS_CncLib") @@ -729,6 +731,42 @@ Namespace CNC End Function + Public Function getCncAlarm() As Focas1.ODBALMMSG2 + ' RIFERIMENTO: + ' C:\Users\samuele\Documents\FOCAS A02B-0207-K737_04.20\Document\SpecE\Misc\cnc_rdalmmsg2.htm + + Dim nPathIdx As Integer + Dim nNumAxisRead As Integer + Dim nReturn As Integer + + Dim allData As Focas1.ODBALMMSG2 + ' inizializzo + allData = New Focas1.ODBALMMSG2 + + 'leggo il numero del processo attivo + nPathIdx = GetActivePath() + 'leggo num max assi dal cn + nNumAxisRead = Focas1.MAX_AXIS + + ' vettore num allarmi MAX da leggere...... + Dim numAllarmi As Int16 + numAllarmi = 512 + + If Is30Series Then + + ' leggo tutto!!! + nReturn = Focas1.cnc_rdalmmsg2(nLibHandle(nPathIdx), -1, numAllarmi, allData) + + If F_CheckRetError_Cnc(nReturn, "cnc_rdalmmsg2 GetCncAlarm CNC.FANUC.CMS_CncLib") Then + Throw New CmsNcException("ERR cnc_rdalmmsg2 GetCncAlarm CNC.FANUC.CMS_CncLib") + End If + End If + + Return allData + + End Function + + Public Function getPathGCodeMod() As Focas1.ODBGCD ' RIFERIMENTO: ' C:\Users\samuele\Documents\FOCAS A02B-0207-K737_04.20\Document\SpecE\Misc\cnc_rdgcode.htm diff --git a/MTC_Sim/MTC_Sim/AdapterFanuc.cs b/MTC_Sim/MTC_Sim/AdapterFanuc.cs index baa3cee..b3aebaf 100644 --- a/MTC_Sim/MTC_Sim/AdapterFanuc.cs +++ b/MTC_Sim/MTC_Sim/AdapterFanuc.cs @@ -17,6 +17,10 @@ namespace MTC_Sim /// C:\Users\samuele\Documents\FOCAS A02B-0207-K737_04.20\Document\SpecE\Position\cnc_rddynamic2.htm /// protected CMSCncLib.Focas1.ODBDY2_1 allDynData; + /// + /// Vettore degli allarmi CNC attivi + /// + public CMSCncLib.Focas1.ODBALMMSG2 allarmiCNC; /// /// estende l'init della classe base... @@ -460,7 +464,7 @@ namespace MTC_Sim } } } - + // SE non ho giĆ  tornato un ACK... if (!ackReturned) { @@ -626,18 +630,75 @@ namespace MTC_Sim FeedRate = allDynData.actf; - // se ho allarmi li accodo... - if(allDynData.alarm!=0) - { - sb.AppendLine(string.Format("Allarmi CNC: {0}", allDynData.alarm)); - } - - sb.AppendLine(string.Format("FeedRate: {0} mm/min", FeedRate)); + + // se ho allarmi li accodo... + //if (allDynData.alarm != 0) + //{ + sb.AppendLine(string.Format("Allarmi CNC: {0}", allDynData.alarm)); + + inizio = DateTime.Now; + allarmiCNC = FANUC_ref.getCncAlarm(); + if (utils.CRB("recTime")) TimingData.addResult("R-CNC-ALARMS", DateTime.Now.Subtract(inizio).Ticks); + checkCNCAlarms(); + //} + //else + //{ + // mAlarmCNC.Normal(); + //} + parentForm.dataMonitor = sb.ToString(); } + public override void processAlarm() + { + base.processAlarm(); + + // ggiungo gestione allarmi CNC + checkCNCAlarms(); + } + + /// + /// Verifica i 10 allarmi CNC SE presenti + /// + private void checkCNCAlarms() + { + // faccio parse allarmi: se ci sono invio e presento + sendAlarmIfPresent(allarmiCNC.msg1); + sendAlarmIfPresent(allarmiCNC.msg2); + sendAlarmIfPresent(allarmiCNC.msg3); + sendAlarmIfPresent(allarmiCNC.msg4); + sendAlarmIfPresent(allarmiCNC.msg5); + sendAlarmIfPresent(allarmiCNC.msg6); + sendAlarmIfPresent(allarmiCNC.msg7); + sendAlarmIfPresent(allarmiCNC.msg8); + sendAlarmIfPresent(allarmiCNC.msg9); + sendAlarmIfPresent(allarmiCNC.msg10); + } + + /// + /// Invia singolo allarme CNC se presente + /// + /// + protected void sendAlarmIfPresent(CMSCncLib.Focas1.ODBALMMSG2_data allarme) + { + // controllo valore... + if (allarme.alm_no > 0) + { + //if (utils.CRB("verbose")) sb.AppendLine(string.Format("Allarmi CNC: NUM {0} | MESS: {1} | ASSE: {2} | TYPE: {3}", allarme.alm_no, allarme.alm_msg, allarme.axis, allarme.type)); + + // se ho asse accodo ad asse altrimenti no... + //if (allarme.axis == 0) + //{ + string codAllarme = string.Format("T{0}-N{1}", allarme.type, allarme.alm_no); + mAlarmCNC.Add(MTConnect.Condition.Level.FAULT, allarme.alm_msg, codAllarme, "", ""); + //} + //else + //{ } + } + } + public override void getUnOp() { base.getUnOp(); @@ -680,7 +741,7 @@ namespace MTC_Sim StringBuilder sb = new StringBuilder(); - sb.AppendLine(string.Format("SpeedRate UnOp_{0}: {1} rpm", i+1, SpeedRate)); + sb.AppendLine(string.Format("SpeedRate UnOp_{0}: {1} rpm", i + 1, SpeedRate)); parentForm.dataMonitor += sb.ToString(); } @@ -768,17 +829,17 @@ namespace MTC_Sim //vettPath[i].mPathRapidOver.Value = PtData.PathRapidOver; //vettPath[i].mPathPartId.Value = PtData.PartId; //vettPath[i].mPathPartCount.Value = PtData.pzTot; - vettPath[i].mPathCurrProg.Value = string.Format("{0}-{1}-{2}",allDynData.prgmnum, allDynData.prgnum, allDynData.seqnum); + vettPath[i].mPathCurrProg.Value = string.Format("{0}-{1}-{2}", allDynData.prgmnum, allDynData.prgnum, allDynData.seqnum); //vettPath[i].mPathCurrProgRowNum.Value = PtData.ProgrRow; //vettPath[i].mPathActiveAxes.Value = PtData.ActiveAxes; sb.AppendLine(string.Format("Path {0}, PROG: {1}", i + 1, vettPath[i].mPathCurrProg.Value)); - sb.AppendLine(string.Format("Path {0}, Asse 1: {1:N3}", i+1, ((decimal)vettTTCoord.data1) / utils.CRI("fattdecimale"))); - sb.AppendLine(string.Format("Path {0}, Asse 2: {1:N3}", i+1, ((decimal)vettTTCoord.data2) / utils.CRI("fattdecimale"))); - sb.AppendLine(string.Format("Path {0}, Asse 3: {1:N3}", i+1, ((decimal)vettTTCoord.data3) / utils.CRI("fattdecimale"))); - sb.AppendLine(string.Format("Path {0}, Cent 1: {1:N3}", i+1, ((decimal)vettTTCoord.c1) / utils.CRI("fattdecimale"))); - sb.AppendLine(string.Format("Path {0}, Cent 2: {1:N3}", i+1, ((decimal)vettTTCoord.c2) / utils.CRI("fattdecimale"))); + sb.AppendLine(string.Format("Path {0}, Asse 1: {1:N3}", i + 1, ((decimal)vettTTCoord.data1) / utils.CRI("fattdecimale"))); + sb.AppendLine(string.Format("Path {0}, Asse 2: {1:N3}", i + 1, ((decimal)vettTTCoord.data2) / utils.CRI("fattdecimale"))); + sb.AppendLine(string.Format("Path {0}, Asse 3: {1:N3}", i + 1, ((decimal)vettTTCoord.data3) / utils.CRI("fattdecimale"))); + sb.AppendLine(string.Format("Path {0}, Cent 1: {1:N3}", i + 1, ((decimal)vettTTCoord.c1) / utils.CRI("fattdecimale"))); + sb.AppendLine(string.Format("Path {0}, Cent 2: {1:N3}", i + 1, ((decimal)vettTTCoord.c2) / utils.CRI("fattdecimale"))); parentForm.dataMonitor += sb.ToString(); } diff --git a/MTC_Sim/MTC_Sim/AdapterGeneric.cs b/MTC_Sim/MTC_Sim/AdapterGeneric.cs index 597055c..966fe8a 100644 --- a/MTC_Sim/MTC_Sim/AdapterGeneric.cs +++ b/MTC_Sim/MTC_Sim/AdapterGeneric.cs @@ -1036,7 +1036,6 @@ namespace MTC_Sim mAlarmSystem.Normal(); mAlarmCNC.Normal(); mAlarmPLC.Normal(); - mAlarmCNC.Normal(); mAlarmGeneral.Normal(); lg.Info("Adapter Started!"); }