diff --git a/Libs/CMS_CORE_Library.dll b/Libs/CMS_CORE_Library.dll index 09dc6b1f..3b8a02f8 100644 Binary files a/Libs/CMS_CORE_Library.dll and b/Libs/CMS_CORE_Library.dll differ diff --git a/Step.Core/ThreadsFunctions.cs b/Step.Core/ThreadsFunctions.cs index 7453559c..c0b3dfdc 100644 --- a/Step.Core/ThreadsFunctions.cs +++ b/Step.Core/ThreadsFunctions.cs @@ -480,6 +480,49 @@ public static class ThreadsFunctions ncHandler.Dispose(); } } + + public static void UpdateToolsData() + { + NcHandler ncHandler = new NcHandler(); + Stopwatch sw = new Stopwatch(); + + try + { + CmsError libraryError = ncHandler.Connect(); + if (libraryError.errorCode != 0) + ManageLibraryError(libraryError); + + while (true) + { + sw.Restart(); + // Check if client is connected + if (ncHandler.numericalControl.NC_IsConnected()) + { + // Get new data from PLC + libraryError = ncHandler.GetNcAlarms(out DTOAlarmsModel alarms); + if (libraryError.errorCode != 0) + ManageLibraryError(libraryError); + else + // Send through signalR + MessageServices.Current.Publish(UPDATE_TOOLS_DATA, null, alarms); + } + else + TryNcConnection(); + sw.Stop(); + + //Update thread timer + ReadAlarmsTimer += sw.ElapsedMilliseconds; + ReadAlarmsTimes++; + + // Wait + Thread.Sleep(CalcSleepTime(200, (int)sw.ElapsedMilliseconds)); + } + } + catch (ThreadAbortException) + { + ncHandler.Dispose(); + } + } #endregion Nc threads #region SupportFunctions diff --git a/Step.Model/Constants.cs b/Step.Model/Constants.cs index e48f8abe..2add83ef 100644 --- a/Step.Model/Constants.cs +++ b/Step.Model/Constants.cs @@ -153,6 +153,7 @@ namespace Step.Model public const string SEND_HEADS_DATA = "SEND_HEADS_DATA"; public const string SEND_AXIS_NAMES_DATA = "SEND_AXIS_NAMES_DATA"; public const string SEND_MAGAZINES_STATUS = "SEND_MAGAZINES_STATUS"; + public const string UPDATE_TOOLS_DATA = "UPDATE_TOOLS_DATA"; public const string BROADCAST_DATA = "BROADCAST_DATA"; diff --git a/Step.NC/NcHandler.cs b/Step.NC/NcHandler.cs index a0acdfa4..845b6e38 100644 --- a/Step.NC/NcHandler.cs +++ b/Step.NC/NcHandler.cs @@ -858,7 +858,7 @@ namespace Step.NC { dtoTools = new List(); - CmsError cmsError = new CmsError(CMS_ERROR_CODES.OK, ""); + CmsError cmsError = NO_ERROR; using (NcToolManagerController toolsManager = new NcToolManagerController()) { @@ -882,7 +882,7 @@ namespace Step.NC dtoTool = (DTONcToolModel)tool; OffsetModel offset = new OffsetModel(); - CmsError cmsError = new CmsError(CMS_ERROR_CODES.OK, ""); + CmsError cmsError = NO_ERROR; if (tool.OffsetId1 != null && tool.OffsetId1 != 0) { @@ -1100,7 +1100,7 @@ namespace Step.NC } } - public DTONcToolModel UpdateTool(int toolId, DTONewNcToolModel newTool) + public CmsError UpdateTool(int toolId, DTONewNcToolModel newTool, out DTONcToolModel toolWithOffsets) { using (NcToolManagerController toolsManager = new NcToolManagerController()) { @@ -1108,11 +1108,15 @@ namespace Step.NC { // Update Tool DbNcToolModel dbTool = toolsManager.UpdateTool(toolId, newTool); - - DTONcToolModel toolWithOffsets = new DTONcToolModel(); + toolWithOffsets = new DTONcToolModel(); // Populate tool offset - GetToolData(dbTool, ref toolWithOffsets); + CmsError cmsError = GetToolData(dbTool, ref toolWithOffsets); + if (cmsError.IsError()) + { + dbContextTransaction.Rollback(); + return cmsError; + } if (dbTool.ShankId != null) { @@ -1121,12 +1125,14 @@ namespace Step.NC if (shank.MagazineId != null) { // Update tool - CmsError cmsError = UpdateNcTools(toolsManager); + cmsError = UpdateNcTools(toolsManager); ManageToolManagerError(cmsError, dbContextTransaction); + + return cmsError; } } - return toolWithOffsets; + return NO_ERROR; } } } @@ -1184,20 +1190,20 @@ namespace Step.NC } } - public DTONcFamilyModel UpdateFamily(int familyId, DTONewNcFamilyModel family) + public CmsError UpdateFamily(int familyId, DTONewNcFamilyModel family, out DTONcFamilyModel newFamily) { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - StartEditData(); + CmsError cmsError = StartEditData(); using (var dbContextTransaction = toolsManager.dbCtx.Database.BeginTransaction()) { // Update db family - DTONcFamilyModel newFamily = (DTONcFamilyModel)toolsManager.UpdateFamily(familyId, family); + newFamily = (DTONcFamilyModel)toolsManager.UpdateFamily(familyId, family); // Update nc families - CmsError cmsError = UpdateNcFamily(toolsManager); + cmsError = UpdateNcFamily(toolsManager); ManageToolManagerError(cmsError, dbContextTransaction); - return newFamily; + return cmsError; } } } @@ -1250,22 +1256,23 @@ namespace Step.NC } } - public DTONcShankModel UpdateShank(int shankId, DTONewNcShankModel dtoShank) + public CmsError UpdateShank(int shankId, DTONewNcShankModel dtoShank, out DTONcShankModel shank) { using (NcToolManagerController toolsManager = new NcToolManagerController()) { using (var dbContextTransaction = toolsManager.dbCtx.Database.BeginTransaction()) { // Update db data - DTONcShankModel shank = (DTONcShankModel)toolsManager.UpdateShank(shankId, dtoShank); + shank = (DTONcShankModel)toolsManager.UpdateShank(shankId, dtoShank); if (shank.MagazineId != null) { // Update nc data CmsError cmsError = UpdateNcShank(toolsManager); ManageToolManagerError(cmsError, dbContextTransaction); + return cmsError; } - return shank; + return NO_ERROR; } } } @@ -1299,13 +1306,14 @@ namespace Step.NC return numericalControl.TOOLS_WUpdateShanks(shanks); } - public DTONcMagazinePositionModel UpdateMagazinePosition(DbNcMagazinePositionModel dbPos, DTONcMagazinePositionModel dtoPos) + public CmsError UpdateMagazinePosition(DbNcMagazinePositionModel dbPos, DTONcMagazinePositionModel dtoPos, out DTONcMagazinePositionModel magPos) { using (NcToolManagerController toolsManager = new NcToolManagerController()) { + CmsError cmsError = StartEditData(); using (DbContextTransaction dbContextTransaction = toolsManager.dbCtx.Database.BeginTransaction()) { - DTONcMagazinePositionModel magPos = (DTONcMagazinePositionModel)toolsManager.UpdatePosition(dbPos, dtoPos); + magPos = (DTONcMagazinePositionModel)toolsManager.UpdatePosition(dbPos, dtoPos); // Get magazine positions List positions = toolsManager.FindMagazinePositions() @@ -1313,10 +1321,10 @@ namespace Step.NC .ToList(); // Update nc data - CmsError cmsError = numericalControl.TOOLS_WUpdateMagazinePositions(positions); + cmsError = numericalControl.TOOLS_WUpdateMagazinePositions(positions); ManageToolManagerError(cmsError, dbContextTransaction); - return magPos; + return cmsError; } } } @@ -1383,7 +1391,7 @@ namespace Step.NC return UpdateMagazinePositionConf(); } - return new CmsError(CMS_ERROR_CODES.OK, ""); + return NO_ERROR; } public CmsError UpdateMagazinePositionConf() @@ -1423,12 +1431,10 @@ namespace Step.NC return cmsError; } - return new CmsError(CMS_ERROR_CODES.OK, ""); + return NO_ERROR; } } - - public CmsError StartEditData() { return numericalControl.TOOLS_WStartEditData(); @@ -1448,8 +1454,6 @@ namespace Step.NC { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - Stopwatch sw = new Stopwatch(); - sw.Start(); // Get mounted shanks List shanks = toolsManager .FindShanks() @@ -1490,13 +1494,18 @@ namespace Step.NC cmsError = numericalControl.TOOLS_WUpdateFamilies(families); if (cmsError.IsError()) return cmsError; - - Console.WriteLine(sw.ElapsedMilliseconds); } return numericalControl.TOOLS_WStopEditTooling(magazineId); } + public CmsError GetUpdatedToolsData(out Dictionary updatedStatus,out Dictionary updatedLives) + { + updatedStatus = new Dictionary(); + updatedLives = new Dictionary(); + return numericalControl.TOOLS_RUpdatedToolsData(ref updatedStatus,ref updatedLives); + } + #endregion Osai/Fanuc Tools #endregion Write data diff --git a/Step/Controllers/WebApi/NcToolManagerController.cs b/Step/Controllers/WebApi/NcToolManagerController.cs index 2ff625e1..3c457522 100644 --- a/Step/Controllers/WebApi/NcToolManagerController.cs +++ b/Step/Controllers/WebApi/NcToolManagerController.cs @@ -103,7 +103,9 @@ namespace Step.Controllers.WebApi { ncHandler.Connect(); // Update - DTONcToolModel newTool = ncHandler.UpdateTool(toolId, dtoTool); + CmsError cmsError = ncHandler.UpdateTool(toolId, dtoTool, out DTONcToolModel newTool); + if (cmsError.IsError()) + return BadRequest(cmsError.localizationKey); return Ok(newTool); } @@ -185,7 +187,9 @@ namespace Step.Controllers.WebApi { ncHandler.Connect(); // Update shank - DTONcShankModel newShank = ncHandler.UpdateShank(shankId, dtoShank); + CmsError cmsError = ncHandler.UpdateShank(shankId, dtoShank, out DTONcShankModel newShank); + if (cmsError.IsError()) + return BadRequest(cmsError.localizationKey); return Ok(newShank); } @@ -260,7 +264,9 @@ namespace Step.Controllers.WebApi { ncHandler.Connect(); // Update into db and NC - DTONcFamilyModel newFamily = ncHandler.UpdateFamily(familyId, dtoFamily); + CmsError cmsError = ncHandler.UpdateFamily(familyId, dtoFamily, out DTONcFamilyModel newFamily); + if (cmsError.IsError()) + return BadRequest(cmsError.localizationKey); return Ok(newFamily); } @@ -329,7 +335,10 @@ namespace Step.Controllers.WebApi using (NcHandler ncHandler = new NcHandler()) { - DTONcMagazinePositionModel newPos = ncHandler.UpdateMagazinePosition(pos, dtoPos); + CmsError cmsError = ncHandler.UpdateMagazinePosition(pos, dtoPos, out DTONcMagazinePositionModel newPos); + if (cmsError.IsError()) + return BadRequest(cmsError.localizationKey); + return Ok(newPos); } } @@ -471,36 +480,36 @@ namespace Step.Controllers.WebApi } } - [Route("start_edit_data"), HttpPut] - public IHttpActionResult StartEditData() - { - using (NcHandler ncHandler = new NcHandler()) - { - ncHandler.Connect(); + //[Route("start_edit_data"), HttpPut] + //public IHttpActionResult StartEditData() + //{ + // using (NcHandler ncHandler = new NcHandler()) + // { + // ncHandler.Connect(); - CmsError cmsError = ncHandler.StartEditData(); - if (cmsError.IsError()) - return BadRequest(cmsError.localizationKey); + // CmsError cmsError = ncHandler.StartEditData(); + // if (cmsError.IsError()) + // return BadRequest(cmsError.localizationKey); - return Ok(); - } - } + // return Ok(); + // } + //} - [Route("stop_edit_data"), HttpPut] - public IHttpActionResult StopEdit() - { - using (NcHandler ncHandler = new NcHandler()) - { - ncHandler.Connect(); + //[Route("stop_edit_data"), HttpPut] + //public IHttpActionResult StopEdit() + //{ + // using (NcHandler ncHandler = new NcHandler()) + // { + // ncHandler.Connect(); - CmsError cmsError = ncHandler.StopEditData(); - if (cmsError.IsError()) - return BadRequest(cmsError.localizationKey); + // CmsError cmsError = ncHandler.StopEditData(); + // if (cmsError.IsError()) + // return BadRequest(cmsError.localizationKey); - return Ok(); - } - } + // return Ok(); + // } + //} [Route("start_edit_tooling/{magazineId:int}"), HttpPut] public IHttpActionResult StartEditTooling(int magazineId)