diff --git a/Libs/CMS_CORE_Library.dll b/Libs/CMS_CORE_Library.dll index 9872c26b..650e33b5 100644 Binary files a/Libs/CMS_CORE_Library.dll and b/Libs/CMS_CORE_Library.dll differ diff --git a/Step.NC/NcHandler.cs b/Step.NC/NcHandler.cs index 0dd66486..7ab3417f 100644 --- a/Step.NC/NcHandler.cs +++ b/Step.NC/NcHandler.cs @@ -239,15 +239,8 @@ namespace Step.NC return cmsError; genericData.UnitOfMeasurement = tmpInfo; - Version v = Assembly.GetEntryAssembly()?.GetName().Version; - if (v != null) - { - // Get first 2 number of the version - var tmp = v.ToString().Split('.').Take(3).ToArray(); - - // Get Server version - genericData.ServerVersion = $"{string.Join(".", tmp)} ({SupportFunctions.GetLinkerTime(Assembly.GetEntryAssembly(), null).ToString("d")})"; - } + // Get Server version + genericData.ServerVersion = SupportFunctions.GetSoftwareVersionAndBuildDate(); return cmsError; } @@ -1038,7 +1031,7 @@ namespace Step.NC Id = layer.Images[i].Id, IsVisible = negate ? !Convert.ToBoolean(val) : Convert.ToBoolean(val) }); - } + } if (layer.ProgressBars.ElementAtOrDefault(i) != null) { @@ -1059,11 +1052,6 @@ namespace Step.NC { if (layer.Inputs.ElementAtOrDefault(i) != null && layer.Inputs[i].Status.Action.ToLower() == "read") { - // Read isVisible from PLC - //cmsError = numericalControl.PLC_RScadaValue(layer.Inputs[i].Status.MemEnabledIndex, SCADA_MEM_TYPE.BOOL, ref val); - //if (cmsError.IsError()) - // return cmsError; - SCADA_MEM_TYPE type = SupportFunctions.GetMemTypeFromString(layer.Inputs[i].Status.Type); // Read value from PLC cmsError = numericalControl.PLC_RScadaValue(layer.Inputs[i].Status.MemValueIndex, type, ref val2); @@ -1182,8 +1170,11 @@ namespace Step.NC public CmsError SetActiveLanguage(CultureInfo language) { - // Set to true power on data by id - return numericalControl.NC_WLanguage(language); + //if(NC_VENDOR.OSAI) + //// Set to true power on data by id + //return numericalControl.NC_WLanguage(language); + + return NO_ERROR; } public CmsError SetActiveScreen(short screen) @@ -1223,52 +1214,43 @@ namespace Step.NC public CmsError ManageCandies() { - CmsError cmsError; - int NcCandy = 0; - int NCMatr, PCMatr; - long NCParam, PCParam; - long NCLic, PcPLic; - bool bNC_OK, bPC_OK; - bool bNC_VALID, bPC_VALID; - String strMachNumber = "0"; - int machNumber; - bool bRewrite, bNcCandy=false, bNewCandy = false; - DateTime newDate; - - //Check if i have to Manage it - if(!CandiesController.IsTimeToMangeCandies()) + // Check if i have to Manage it + if (!CandiesController.IsTimeToMangeCandies()) return NO_ERROR; - - //Read Machine ID - cmsError = numericalControl.NC_RMachineNumber(ref strMachNumber); + // Read Machine ID + string strMachNumber = "0"; + CmsError cmsError = numericalControl.NC_RMachineNumber(ref strMachNumber); if (cmsError.IsError()) return cmsError; - machNumber = Int32.Parse(strMachNumber); + int machNumber = int.Parse(strMachNumber); - //Read Data from NC & elaborate it + // Read Data from NC & elaborate it + int NcCandy = 0; cmsError = numericalControl.PLC_RCandy(ref NcCandy); if (cmsError.IsError()) return cmsError; - bNC_OK = CandiesController.GetDataFromLincense(NcCandy, out NCLic, out NCMatr, out NCParam); - bNC_VALID = machNumber == NCMatr && bNC_OK; + + bool bNC_OK = CandiesController.GetDataFromLincense(NcCandy, out long NCLic, out int NCMatr, out long NCParam); + bool bNC_VALID = machNumber == NCMatr && bNC_OK; - //Read Data from PC - bPC_OK = CandiesController.GetPCLincense(out PcPLic, out PCMatr, out PCParam); - bPC_VALID = machNumber == PCMatr && bPC_OK; + // Read Data from PC + bool bPC_OK = CandiesController.GetPCLincense(out long PcPLic, out int PCMatr, out long PCParam); + bool bPC_VALID = machNumber == PCMatr && bPC_OK; - //Elaborate Licence and write it - CandiesController.ElaborateLincense(bPC_VALID, bNC_VALID, PCParam, NCParam, PcPLic, NCLic, out newDate, out bRewrite); + // Elaborate Licence and write it + CandiesController.ElaborateLincense(bPC_VALID, bNC_VALID, PCParam, NCParam, PcPLic, NCLic, out DateTime newDate, out bool bRewrite); if (bRewrite) WriteCandy(newDate, machNumber); - - //Read Expired Lincense Bit on NC + + // Read Expired Lincense Bit on NC + bool bNcCandy = false; cmsError = numericalControl.PLC_RExpiredCandy(ref bNcCandy); if (cmsError.IsError()) return cmsError; - //Manage Expired Lincense Bit - if(CandiesController.ElaborateExpiredBit(newDate, bNcCandy, out bNewCandy)) + // Manage Expired Lincense Bit + if(CandiesController.ElaborateExpiredBit(newDate, bNcCandy, out bool bNewCandy)) { //Write Expired Lincense Bit on NC cmsError = numericalControl.PLC_WExpiredCandy(bNewCandy); @@ -1330,30 +1312,5 @@ namespace Step.NC return true; } - - - //DTOScadaModel scada = new DTOScadaModel - //{ - // Layers = prodScada.Layers.Select(x => new DTOScadaLayerModel() - // { - // Id = x.Id, - // Buttons = x.Buttons.Select(y => new DTOScadaButtonModel() - // { - // Id = y.Id - // }).ToList(), - // Images = x.Images.Select(y => new DTOScadaImageModel() - // { - // Id = y.Id - // }).ToList(), - // ProgressBars = x.ProgressBars.Select(y => new DTOScadaProgressBarModel() - // { - // Id = y.Id - // }).ToList(), - // Inputs = x.Inputs.Select(y => new DTOScadaInputModel() - // { - // Id = y.Id - // }).ToList() - // }).ToList() - //}; } } \ No newline at end of file diff --git a/Step.NC/NcToolTableHandler.cs b/Step.NC/NcToolTableHandler.cs index 8423e8ea..d5e85b04 100644 --- a/Step.NC/NcToolTableHandler.cs +++ b/Step.NC/NcToolTableHandler.cs @@ -760,7 +760,7 @@ namespace Step.NC { List magazineMountedTools = toolsManager.GetMountedTools(); - // Check if there is a tool already mounted in magazineId and positionId + // Check if there is a tool already mounted the selected position (magazineId, positionId) var toolAlreadyMounted = magazineMountedTools.FirstOrDefault(x => x.Shank.MagazineId == magazineId && x.Shank.PositionId == positionId); if (toolAlreadyMounted != null) return MAGAZINE_POSITION_OCCUPIED_ERROR; diff --git a/Step.UI/ServerControlWindow.cs b/Step.UI/ServerControlWindow.cs index 364e936d..be0c0137 100644 --- a/Step.UI/ServerControlWindow.cs +++ b/Step.UI/ServerControlWindow.cs @@ -54,16 +54,9 @@ namespace Step.UI LISTThreadStatus.Items.Add(new ListViewItem(new string[] { "TryNcConnection", "---" })); //End the update LISTThreadStatus.EndUpdate(); - - Version v = Assembly.GetEntryAssembly()?.GetName().Version; - if (v != null) - { - var tmp = v.ToString().Split('.').Take(3).ToArray(); - this.Text = "Active Control Window"; - - TXTVersion.Text = "V" + String.Join(".", tmp) + " (" + SupportFunctions.GetLinkerTime(Assembly.GetEntryAssembly(), null).ToString("d") + ")"; - } - + // Set software version + TXTVersion.Text = SupportFunctions.GetSoftwareVersionAndBuildDate(); + PswForm = new PasswordForm(); ResSpForm = new ResetSpindleForm(); ResCouForm = new ResetCountersForm(); diff --git a/Step.Utils/supportFunctions.cs b/Step.Utils/supportFunctions.cs index 325ecbea..b7a0d700 100644 --- a/Step.Utils/supportFunctions.cs +++ b/Step.Utils/supportFunctions.cs @@ -348,7 +348,7 @@ namespace Step.Utils return SCADA_MEM_TYPE.WORD; case "INT": - return SCADA_MEM_TYPE.INT; + return SCADA_MEM_TYPE.INT; case "REAL": return SCADA_MEM_TYPE.REAL; @@ -380,5 +380,24 @@ namespace Step.Utils return localTime; } + + public static string GetSoftwareVersionAndBuildDate() + { + Version v = Assembly.GetEntryAssembly()?.GetName().Version; + if (v != null) + { + // Get first 2 number of the version + var tmp = v.ToString().Split('.').Take(3).ToArray(); + + // Get Server version + return $"" + + $"{string.Join(".", tmp)} (" + + $"{GetLinkerTime(Assembly.GetEntryAssembly(), null).ToString("d")}" + + $")"; + } + + return ""; + } + } } \ No newline at end of file diff --git a/Step/Controllers/WebApi/ApiAlarmController.cs b/Step/Controllers/WebApi/ApiAlarmController.cs index 151360d2..76dd89dc 100644 --- a/Step/Controllers/WebApi/ApiAlarmController.cs +++ b/Step/Controllers/WebApi/ApiAlarmController.cs @@ -17,6 +17,7 @@ using System.Threading.Tasks; using System.Web.Http; using static Step.Model.Constants; using static Step.Config.ServerConfig; +using Step.Listeners; namespace Step.Controllers.WebApi { @@ -128,6 +129,10 @@ namespace Step.Controllers.WebApi { alarmController.EmptyAlarms(); + // Clean active alarms, if they are active in the next thread reading, they will be shown and stored + SignalRStaticObjects.LastAlarms = new DTOAlarmsModel(); + SignalRStaticObjects.AlarmDifferences = new DTOAlarmsModel(); + return Ok(); } } diff --git a/Step/Controllers/WebApi/LanguageController.cs b/Step/Controllers/WebApi/LanguageController.cs index 203c05f5..578b65fc 100644 --- a/Step/Controllers/WebApi/LanguageController.cs +++ b/Step/Controllers/WebApi/LanguageController.cs @@ -25,11 +25,12 @@ namespace Step.Controllers.WebApi using (NcHandler ncHandler = new NcHandler()) { ICollection cultureInfos = new List(); + + // Get nc available language CmsError cmsError = ncHandler.numericalControl.NC_GetAvailableLanguages(ref cultureInfos); if (cmsError.IsError()) return BadRequest(cmsError.localizationKey); - - + // Filter available language with availableLanguages = availableLanguages.Where(x => cultureInfos.Any(y => y.TwoLetterISOLanguageName == x.IsoId)).ToList(); } diff --git a/Step/Controllers/WebApi/NcApiController.cs b/Step/Controllers/WebApi/NcApiController.cs index 26b5d266..b9b8e3c4 100644 --- a/Step/Controllers/WebApi/NcApiController.cs +++ b/Step/Controllers/WebApi/NcApiController.cs @@ -22,7 +22,7 @@ namespace Step.Controllers.WebApi if (libraryError.errorCode == CMS_ERROR_CODES.NOT_CONNECTED) return Ok(genericData); else - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(genericData); } @@ -37,7 +37,7 @@ namespace Step.Controllers.WebApi ncHandler.Connect(); CmsError libraryError = ncHandler.SetActiveLanguage(CultureInfo.CreateSpecificCulture(language)); - if (libraryError.errorCode == CMS_ERROR_CODES.NOT_CONNECTED) + if (libraryError.errorCode != CMS_ERROR_CODES.NOT_CONNECTED && libraryError.errorCode != CMS_ERROR_CODES.OK) return BadRequest(); else return Ok(); diff --git a/Step/Controllers/WebApi/NcToolManagerController.cs b/Step/Controllers/WebApi/NcToolManagerController.cs index 5fcf3dc3..0358ca90 100644 --- a/Step/Controllers/WebApi/NcToolManagerController.cs +++ b/Step/Controllers/WebApi/NcToolManagerController.cs @@ -597,9 +597,9 @@ namespace Step.Controllers.WebApi // Check if shank exists shank = toolsManager.FindShankWithTools(shankId.ShankId); if (shank == null) - - return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS); - // Check if shank is already loaded somewhere + return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS); + + // Check if shank is already loaded somewhere if (shank.MagazineId != null) return BadRequest(API_ERROR_KEYS.TOOL_IS_MOUNTED); @@ -607,10 +607,14 @@ namespace Step.Controllers.WebApi DbNcMagazinePositionModel magPos = toolsManager.FindMagazinePosition(magazineId, positionId); if (magPos == null) return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS); + // Check position type + //if (shank.Tools.FirstOrDefault().Family.ToolType != magPos.Type) + // return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS); + // Check if the mag pos is disabled if (magPos.Disabled == true) return BadRequest(API_ERROR_KEYS.MAG_POS_DISABLED); - + using (NcToolTableHandler ncHandler = new NcToolTableHandler()) { // Get Configuration @@ -620,7 +624,7 @@ namespace Step.Controllers.WebApi CmsError cmsError = ncHandler.CheckIfShankCanFit( magazineId, positionId, - shank // Get mounted tools + shank // mounted tools ); if (cmsError.IsError()) @@ -748,7 +752,7 @@ namespace Step.Controllers.WebApi using (NcToolTableHandler ncHandler = new NcToolTableHandler()) { ncHandler.Connect(); - + CmsError cmsError = ncHandler.StartEditTooling(magazineId); if (cmsError.IsError()) return BadRequest(cmsError.localizationKey); diff --git a/Step/Controllers/WebApi/ScadaController.cs b/Step/Controllers/WebApi/ScadaController.cs index eb483669..7c24c429 100644 --- a/Step/Controllers/WebApi/ScadaController.cs +++ b/Step/Controllers/WebApi/ScadaController.cs @@ -117,31 +117,28 @@ namespace Step.Controllers.WebApi { // Find button var button = layer.Buttons.Where(x => x.Id == elementId).FirstOrDefault(); - if (button == null) - return NotFound(); - // Set index - memIndex = button.Status.MemClickIndex; + if (button != null) + // Set index + memIndex = button.Status.MemClickIndex; } break; case SCADA_ELEMENT_TYPE.IMAGE: { // Find button var image = layer.Images.Where(x => x.Id == elementId).FirstOrDefault(); - if (image == null) - return NotFound(); - - memIndex = image.Status.MemClickIndex; + if (image != null) + memIndex = image.Status.MemClickIndex; } break; case SCADA_ELEMENT_TYPE.INPUT: { // Find button - var image = layer.Inputs.Where(x => x.Id == elementId).FirstOrDefault(); - if (image == null) - return NotFound(); - - memIndex = image.Status.MemValueIndex; - memType = SupportFunctions.GetMemTypeFromString(image.Status.Type); + var input = layer.Inputs.Where(x => x.Id == elementId).FirstOrDefault(); + if (input != null) + { + memIndex = input.Status.MemValueIndex; + memType = SupportFunctions.GetMemTypeFromString(input.Status.Type); + } } break; } @@ -150,6 +147,9 @@ namespace Step.Controllers.WebApi using (NcHandler ncHandler = new NcHandler()) { ncHandler.Connect(); + if (memIndex == "") + return BadRequest(INCORRECT_PARAMETERS_ERROR.localizationKey); + CmsError cmsError = ncHandler.WriteScada(memIndex, memType, value); if (cmsError.IsError()) return BadRequest(cmsError.localizationKey); diff --git a/Step/Listeners/Database/SignalRDatabaseHandler.cs b/Step/Listeners/Database/SignalRDatabaseHandler.cs index 84a4bf50..fbc1fd15 100644 --- a/Step/Listeners/Database/SignalRDatabaseHandler.cs +++ b/Step/Listeners/Database/SignalRDatabaseHandler.cs @@ -7,7 +7,7 @@ using Step.NC; using System.Collections.Generic; using System.Linq; using static CMS_CORE_Library.Models.DataStructures; -using static Step.Listeners.SignalRStaticObjects; +using static Step.Listeners.SignalRStaticObjects; using static Step.Model.Constants; namespace Step.Listeners.Database @@ -44,7 +44,7 @@ namespace Step.Listeners.Database .FirstOrDefault(); if (tmp != null) - updatedTools.Add(tmp); + updatedTools.Add(tmp); } foreach (var status in data.UpdatedStatus) @@ -115,7 +115,6 @@ namespace Step.Listeners.Database } } - private static DTOAlarmsModel AlmDifferences = new DTOAlarmsModel(); public static void UpdateAlarms(object alarmsObj) { @@ -124,9 +123,9 @@ namespace Step.Listeners.Database { // Intersect old alarms data with new data DTOAlarmsModel differences = LastAlarms.GetDifferences(alarms); - if (!AlmDifferences.Equals(differences)) + if (!AlarmDifferences.Equals(differences)) { - AlmDifferences = differences; + AlarmDifferences = differences; // Add nc alarms List alarmNewOccurrences = differences.NcAlarms.Select(x => new AlarmOccurrencesModel() diff --git a/Step/Listeners/SignalRStaticObjects.cs b/Step/Listeners/SignalRStaticObjects.cs index bdd0feaf..4fcf8fa6 100644 --- a/Step/Listeners/SignalRStaticObjects.cs +++ b/Step/Listeners/SignalRStaticObjects.cs @@ -9,6 +9,8 @@ namespace Step.Listeners public static class SignalRStaticObjects { public static DTOAlarmsModel LastAlarms = new DTOAlarmsModel(); + public static DTOAlarmsModel AlarmDifferences = new DTOAlarmsModel(); + public static List LastRuntimeFunctionality = new List(); public static List LastExpiredMaintenances = new List(); public static DTOPowerOnDataModel LastPowerOnData = new DTOPowerOnDataModel(); diff --git a/Step/Properties/AssemblyInfo.cs b/Step/Properties/AssemblyInfo.cs index 5c10691e..f1edfae4 100644 --- a/Step/Properties/AssemblyInfo.cs +++ b/Step/Properties/AssemblyInfo.cs @@ -31,4 +31,4 @@ using System.Runtime.InteropServices; // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("1.2.1")] +[assembly: AssemblyVersion("1.2.2")] diff --git a/Step/wwwroot/src/app_modules/scada/components/scada.vue b/Step/wwwroot/src/app_modules/scada/components/scada.vue index b48940a9..028c62e1 100644 --- a/Step/wwwroot/src/app_modules/scada/components/scada.vue +++ b/Step/wwwroot/src/app_modules/scada/components/scada.vue @@ -107,7 +107,7 @@ :style="{ top: `${item.position.y + topShift}px`, left: `${item.position.x + leftShift}px`, - width: `${item.size.x - item.size.y}px`, + width: `${item.size.x - (item.status.action == 'WRITE' ? item.size.y : 0)}px`, height: `${item.size.y}px`, textAlign: item.label.textAlign, backgroundColor: item.label.backgroundColor, diff --git a/Step/wwwroot/src/app_modules/tooling/components/tooling-depot.ts b/Step/wwwroot/src/app_modules/tooling/components/tooling-depot.ts index 20b7a868..f8066b86 100644 --- a/Step/wwwroot/src/app_modules/tooling/components/tooling-depot.ts +++ b/Step/wwwroot/src/app_modules/tooling/components/tooling-depot.ts @@ -632,7 +632,6 @@ export default class depot extends Vue { public openModalLoadDepot(action, positionId, positionType) { if(action == 'UNLOAD') { // Unload case - ModalHelper.AskConfirm(this.$options.filters.localize("modal_confirm_title", "Richiesta di conferma"), this.$options.filters.localize("modal_confirm_start_unload", "Vuoi scaricare l'utensile?"), () => { diff --git a/Step/wwwroot/src/components/loader.ts b/Step/wwwroot/src/components/loader.ts index c2b599fb..ccc93da2 100644 --- a/Step/wwwroot/src/components/loader.ts +++ b/Step/wwwroot/src/components/loader.ts @@ -93,5 +93,13 @@ export default class Loader extends Vue { return "--"; } } + GetRoundNumber(){ + if(this.CNCumeas === "inches"){ + return 4; + } + else { + return 3; + } + } } diff --git a/Step/wwwroot/src/components/loader.vue b/Step/wwwroot/src/components/loader.vue index 77c4f08d..7572bce0 100644 --- a/Step/wwwroot/src/components/loader.vue +++ b/Step/wwwroot/src/components/loader.vue @@ -14,8 +14,8 @@ {{a.name}}
- {{a.value.toFixed(3)}} - {{a.umeas}} + {{a.value.toFixed(GetRoundNumber())}} +
diff --git a/Step/wwwroot/src/store/tooling.store.ts b/Step/wwwroot/src/store/tooling.store.ts index 8fb5b8f4..ecc15fd5 100644 --- a/Step/wwwroot/src/store/tooling.store.ts +++ b/Step/wwwroot/src/store/tooling.store.ts @@ -192,11 +192,7 @@ export const toolingStore = { return null } }, - positionCompatible : (state) => (id, posType) : boolean =>{ - - if(!posType || posType==0) - return true; - + positionCompatible : (state) => (id, posType) : boolean =>{ var isSiemens = machineInfoStore.state.isSiemens; if(isSiemens) { // Find tool