+ Added functions access

* Change db and added PLC_ID
This commit is contained in:
Lucio Maranta
2018-02-06 17:36:12 +01:00
parent e8623a5cbd
commit 6cc4d8290e
19 changed files with 180 additions and 22 deletions
Binary file not shown.
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using Step.Model.DatabaseModels;
using Step.Model.DTOModels;
using static CMS_CORE_Library.DataStructures;
namespace Step.Database.Controllers
{
@@ -43,7 +44,31 @@ namespace Step.Database.Controllers
CanRead = f.ReadLevelMin < roleLevel,
CanWrite = f.WriteLevelMin < roleLevel
})
.ToList() ;
.ToList();
}
public List<DTORuntimeFunctionAccessModel> GetFunctionsMappedWithPlc(List<FunctionalityModel> functionalityList)
{
return dbCtx
.FunctionsAccess
.ToList() // Find all function access
.Select(f => new DTORuntimeFunctionAccessModel()
{
Id = f.FunctionAccessId,
Name = f.Name,
Area = f.Area,
Enabled = GetIfFunctionalityIsActive(functionalityList, f.PlcId, f.Enabled) // Get new enabled data
})
.ToList();
}
private bool GetIfFunctionalityIsActive(List<FunctionalityModel> functionalityList, int id, bool functionAccessIsEnabled)
{
// If id is not mapped or function is false by database config return
if (id == 0 || !functionAccessIsEnabled)
return functionAccessIsEnabled;
// Return PLC data
return functionalityList[id - 1].isActive;
}
}
}
@@ -21,7 +21,7 @@ namespace Step.Database.Controllers
dbCtx.Dispose();
}
public MachineModel GetMachineById(int id)
public MachineModel FindById(int id)
{
return dbCtx
.Machines
@@ -29,7 +29,7 @@ namespace Step.Database.Controllers
.SingleOrDefault();
}
public MachineModel GetMachineByUniqueId(string uniqueId)
public MachineModel FindMachineByUniqueId(string uniqueId)
{
return dbCtx
.Machines
+1 -1
View File
@@ -116,7 +116,7 @@ namespace Step.Database
// Set machine info into static server config
using (MachinesController machinesController = new MachinesController())
{
MachineConfig = machinesController.GetMachineByUniqueId(uniqueId);
MachineConfig = machinesController.FindMachineByUniqueId(uniqueId);
if (MachineConfig == null)
{
MachineConfig = machinesController.Create(uniqueId);
@@ -13,7 +13,7 @@ namespace Step.Database.Migrations
string IMigrationMetadata.Id
{
get { return "201801291142206_InitCreate"; }
get { return "201802051555548_InitCreate"; }
}
string IMigrationMetadata.Source
@@ -17,6 +17,7 @@ namespace Step.Database.Migrations
read_level_min = c.Int(nullable: false),
area = c.String(unicode: false),
enabled = c.Boolean(nullable: false),
plc_id = c.Int(nullable: false),
})
.PrimaryKey(t => t.id);
@@ -118,7 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Target" xml:space="preserve">
<value>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</value>
<value>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</value>
</data>
<data name="DefaultSchema" xml:space="preserve">
<value>dbo</value>
+8 -5
View File
@@ -34,6 +34,9 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="CMS_CORE_Library">
<HintPath>..\Libs\CMS_CORE_Library.dll</HintPath>
</Reference>
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll</HintPath>
</Reference>
@@ -73,9 +76,9 @@
<Compile Include="Controllers\UsersController.cs" />
<Compile Include="Controllers\MachinesUsersController.cs" />
<Compile Include="DatabaseContext.cs" />
<Compile Include="Migrations\201801291142206_InitCreate.cs" />
<Compile Include="Migrations\201801291142206_InitCreate.Designer.cs">
<DependentUpon>201801291142206_InitCreate.cs</DependentUpon>
<Compile Include="Migrations\201802051555548_InitCreate.cs" />
<Compile Include="Migrations\201802051555548_InitCreate.Designer.cs">
<DependentUpon>201802051555548_InitCreate.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\Configuration.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
@@ -111,8 +114,8 @@
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Migrations\201801291142206_InitCreate.resx">
<DependentUpon>201801291142206_InitCreate.cs</DependentUpon>
<EmbeddedResource Include="Migrations\201802051555548_InitCreate.resx">
<DependentUpon>201802051555548_InitCreate.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+2 -2
View File
@@ -10,12 +10,12 @@ namespace Step.Model.DTOModels
public class DTOProcessDataModel
{
public bool isRunning;
public List<ProcessData> processes;
public List<ProcessDataModel> processes;
public DTOProcessDataModel()
{
isRunning = false;
processes = new List<ProcessData>();
processes = new List<ProcessDataModel>();
}
}
}
@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Step.Model.DTOModels
{
public class DTORuntimeFunctionAccessModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Area { get; set; }
public bool Enabled { get; set; }
}
}
@@ -26,5 +26,7 @@ namespace Step.Model.DatabaseModels
public string Area { get; set; }
[Column("enabled")]
public bool Enabled { get; set; }
[Column("plc_id")]
public int PlcId { get; set; }
}
}
+1
View File
@@ -82,6 +82,7 @@
<Compile Include="DTOModels\DTONcGenericDataModel.cs" />
<Compile Include="DTOModels\DTOProcessDataModel.cs" />
<Compile Include="DTOModels\DTORoleModel.cs" />
<Compile Include="DTOModels\DTORuntimeFunctionAccessModel.cs" />
<Compile Include="DTOModels\DTOStartupConfigurationModel.cs" />
<Compile Include="DTOModels\DTOUserModel.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
+46 -9
View File
@@ -13,6 +13,8 @@ using static Step.Utils.ExceptionManager;
using static CMS_CORE.Nc;
using static CMS_CORE_Library.DataStructures;
using System.Reflection;
using Step.Database.Controllers;
using Step.Model.DatabaseModels;
namespace Step.NC
{
@@ -248,10 +250,12 @@ namespace Step.NC
public CmsError GetPowerOnData(out PreAndPostPowerOnModel powerOnData)
{
powerOnData = new PreAndPostPowerOnModel();
powerOnData.postPowerOn = new PostPowerOnModel();
powerOnData.prePowerOn = new PrePowerOnModel();
CmsError cmsError = numericalControl.Nc_RPowerOnData(ref powerOnData);
powerOnData = new PreAndPostPowerOnModel
{
postPowerOn = new PostPowerOnModel(),
prePowerOn = new PrePowerOnModel()
};
CmsError cmsError = numericalControl.PLC_RPowerOnData(ref powerOnData);
return cmsError;
}
@@ -269,11 +273,23 @@ namespace Step.NC
// For each process get info
for (ushort i = 1; i <= maxProcNumber; i++)
{
ProcessData tmpProcPP = new ProcessData();
cmsError = numericalControl.PROC_RStatus(i, ref tmpProcPP);
if (tmpProcPP.Status == "RUN")
processesData.isRunning = true;
ProcessDataModel tmpProcPP = new ProcessDataModel();
// Get process status
cmsError = numericalControl.PROC_RStatusAndData(i, ref tmpProcPP);
// if at least one process is in run, NC is running
// Add to list
processesData.processes.Add(tmpProcPP);
// Check if there are running process
if (!processesData.isRunning)
{
PROC_STATUS status = PROC_STATUS.IDLE;
// Get process status
cmsError = numericalControl.PROC_RStatus(i, ref status);
if (status == PROC_STATUS.RUN)
processesData.isRunning = true;
}
}
return cmsError;
@@ -281,7 +297,28 @@ namespace Step.NC
public CmsError PutPowerOnData(uint id)
{
CmsError cmsError = numericalControl.Nc_WPowerOnData(id, true);
// Set to true power on data by id
CmsError cmsError = numericalControl.PLC_WPowerOnData(id, true);
return cmsError;
}
public CmsError GetFunctionsMappedWithNC(out List<DTORuntimeFunctionAccessModel> functionsAccessList)
{
functionsAccessList = new List<DTORuntimeFunctionAccessModel>();
// Read plc functionality
List<FunctionalityModel> functionalityList = null;
CmsError cmsError = numericalControl.PLC_RFunctionAccess(ref functionalityList);
// If empty return
if (functionalityList == null || functionalityList.Count == 0)
return cmsError;
using (FunctionsAccessController functionsAccessController = new FunctionsAccessController())
{
// Map plc and database data
functionsAccessList = functionsAccessController.GetFunctionsMappedWithPlc(functionalityList);
}
return cmsError;
}
+4
View File
@@ -71,6 +71,10 @@
<Project>{3f5c2483-fc87-43ef-92a8-66ff7d0e440f}</Project>
<Name>Step.Config</Name>
</ProjectReference>
<ProjectReference Include="..\Step.Database\Step.Database.csproj">
<Project>{357D5EE1-FFC8-489B-9232-22CF474D9A6F}</Project>
<Name>Step.Database</Name>
</ProjectReference>
<ProjectReference Include="..\Step.Model\Step.Model.csproj">
<Project>{631375DD-06D3-49BB-8130-D9DDB34C429D}</Project>
<Name>Step.Model</Name>
+52
View File
@@ -18,6 +18,7 @@ public static class ThreadsFunctions
private static long ReadAxesTimer = 0, ReadAxesTimes = 0;
private static long ReadPowerOnTimer = 0, ReadPowerOnTimes = 0;
private static long ReadProcPPTimer = 0, ReadProcPPTimes = 0;
private static long ReadFunctionTimer = 0, ReadFunctionTimes = 0;
private static Thread ConnThread;
@@ -238,6 +239,51 @@ public static class ThreadsFunctions
}
}
public static void ReadRuntimeFunctionAccess()
{
NcHandler ncHandler = new NcHandler();
Stopwatch sw = new Stopwatch();
try
{
// Try connection
CmsError libraryError = ncHandler.Connect();
if (libraryError.errorCode != 0)
ManageLibraryError(libraryError);
while (true)
{
sw.Restart();
if (ncHandler.numericalControl.NC_IsConnected())
{
// Get Data from NC
libraryError = ncHandler.GetFunctionsMappedWithNC(out List<DTORuntimeFunctionAccessModel> functionsAccessList);
if (libraryError.errorCode != 0)
ManageLibraryError(libraryError);
else
// Send through signalR
MessageServices.Current.Publish(SEND_FUNCTIONALITY_DATA, null, functionsAccessList);
}
else
TryNcConnection();
sw.Stop();
//Send to the UI the time
ReadFunctionTimer += sw.ElapsedMilliseconds;
ReadFunctionTimes++;
// Wait
Thread.Sleep(200);
}
}
catch (ThreadAbortException)
{
ncHandler.Dispose();
}
}
#endregion
#region SupportFunctions
@@ -364,6 +410,12 @@ public static class ThreadsFunctions
ReadProcPPTimer = 0;
ReadProcPPTimes = 0;
}
if (ThreadsHandler.RunningThreadStatus.ContainsKey("ReadRuntimeFunctionAccess") && ReadFunctionTimes != 0)
{
ThreadsHandler.RunningThreadStatus["ReadRuntimeFunctionAccess"] = (ReadFunctionTimer / ReadFunctionTimes) + " mS";
ReadFunctionTimer = 0;
ReadFunctionTimes = 0;
}
MessageServices.Current.Publish(SEND_THREADS_STATUS, null, ThreadsHandler.RunningThreadStatus);
+1
View File
@@ -27,6 +27,7 @@ namespace Step.Core
ThreadsFunctions.ReadPowerOnData,
ThreadsFunctions.StatThread,
ThreadsFunctions.ReadProcessesPPStatus,
ThreadsFunctions.ReadRuntimeFunctionAccess
};
private volatile static List<Thread> RunningThreadsList = new List<Thread>();
internal volatile static Dictionary<String, String> RunningThreadStatus = new Dictionary<String, String>();
+2
View File
@@ -74,5 +74,7 @@ namespace Step.Utils
public const string SEND_GENERIC_DATA = "SEND_GENERIC_DATA";
public const string SEND_AXES = "SEND_AXES";
public const string SEND_PROCESSES_DATA = "SEND_PROCESSES_STATUS";
public const string SEND_FUNCTIONALITY_DATA = "SEND_FUNCTION_DATA";
}
}
+5
View File
@@ -52,6 +52,11 @@ namespace Step.Listeners
{
SignalRListener.SendProcessesData(a);
}));
infos.Add(MessageServices.Current.Subscribe(SEND_FUNCTIONALITY_DATA, async (a, b) =>
{
SignalRListener.SendProcessesData(a);
}));
}
public static void Stop()
@@ -53,5 +53,11 @@ namespace Step.Listeners.SignalR
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").processesData(processesStatus);
}
public static void SendFunctionalityData(object functionalityData)
{
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").functionalityData(functionalityData);
}
}
}