Added API
WIP Thread
This commit is contained in:
Binary file not shown.
@@ -32,8 +32,8 @@ namespace Step.Config
|
||||
public static AreasConfigModel JobEditorConfig;
|
||||
|
||||
|
||||
public static List<ScadaSchemaModel> ProductionScada = new List<ScadaSchemaModel>();
|
||||
public static List<ScadaSchemaModel> Scadas = new List<ScadaSchemaModel>();
|
||||
public static List<ScadaSchemaModel> ProductionScadaSchema = new List<ScadaSchemaModel>();
|
||||
public static List<ScadaSchemaModel> ConfiguredScadaSchema = new List<ScadaSchemaModel>();
|
||||
|
||||
public static List<string> MacrosConfig;
|
||||
}
|
||||
|
||||
@@ -197,9 +197,9 @@ namespace Step.Config
|
||||
.ToArray();
|
||||
|
||||
if (schema.IsInProductionPage == true)
|
||||
ProductionScada.Add(schema);
|
||||
ProductionScadaSchema.Add(schema);
|
||||
else
|
||||
Scadas.Add(schema);
|
||||
ConfiguredScadaSchema.Add(schema);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using Step.Core;
|
||||
using Step.Model.DTOModels;
|
||||
using Step.Model.DTOModels.AlarmModels;
|
||||
using Step.Model.DTOModels.Scada;
|
||||
using Step.Model.DTOModels.ToolModels;
|
||||
using Step.NC;
|
||||
using System.Collections.Generic;
|
||||
@@ -26,7 +27,6 @@ public static class ThreadsFunctions
|
||||
private static long ReadToolDataTimer = 0, ReadToolDataTimes = 0;
|
||||
private static long WatchdogTimer = 0, WatchdogTimes = 0;
|
||||
|
||||
|
||||
private static Thread ConnThread;
|
||||
|
||||
#region Functions
|
||||
@@ -715,6 +715,45 @@ public static class ThreadsFunctions
|
||||
}
|
||||
}
|
||||
|
||||
public static void ReadScadaData()
|
||||
{
|
||||
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();
|
||||
|
||||
// Check if client is connected
|
||||
if (ncHandler.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Get new data from PLC
|
||||
libraryError = ncHandler.ReadScadaData(out List<DTOScadaModel> scadas);
|
||||
if (libraryError.IsError())
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
// MessageServices.Current.Publish(NC_MAGAZINE_IS_ACTIVE, null, status);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
sw.Stop();
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500 , (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Functions
|
||||
|
||||
#region SupportFunctions
|
||||
|
||||
@@ -24,7 +24,8 @@ namespace Step.Core
|
||||
ThreadsFunctions.ReadActiveProgramData,
|
||||
ThreadsFunctions.UpdateToolsData,
|
||||
ThreadsFunctions.ReadNcMagazineActive,
|
||||
ThreadsFunctions.ReadPartProgramQueueData
|
||||
ThreadsFunctions.ReadPartProgramQueueData,
|
||||
ThreadsFunctions.ReadScadaData
|
||||
// ThreadsFunctions.ReadNcSoftKeysData,
|
||||
};
|
||||
|
||||
|
||||
@@ -195,8 +195,8 @@ namespace Step.Model.DTOModels.Scada
|
||||
|
||||
public class ScadaSchemaInputDataModel
|
||||
{
|
||||
[XmlElement("memVisibleIndex")]
|
||||
public string MemVisibleIndex { get; set; }
|
||||
[XmlElement("memEnabledIndex")]
|
||||
public string MemEnabledIndex { get; set; }
|
||||
|
||||
[XmlElement("memValueIndex")]
|
||||
public string MemValueIndex { get; set; }
|
||||
|
||||
+33
-10
@@ -2378,13 +2378,13 @@ namespace Step.NC
|
||||
|
||||
#endregion Osai/Fanuc Tools
|
||||
|
||||
public CmsError ReadScadaData()
|
||||
public CmsError ReadScadaData(out List<DTOScadaModel> scadas)
|
||||
{
|
||||
CmsError cmsError = NO_ERROR;
|
||||
List <DTOScadaModel> scadas = new List<DTOScadaModel>();
|
||||
scadas = new List<DTOScadaModel>();
|
||||
|
||||
DTOScadaModel scada = new DTOScadaModel();
|
||||
foreach (var prodScada in ProductionScada)
|
||||
foreach (var prodScada in ProductionScadaSchema)
|
||||
{
|
||||
scada = new DTOScadaModel()
|
||||
{
|
||||
@@ -2404,7 +2404,7 @@ namespace Step.NC
|
||||
if(layer.Buttons.ElementAt(i) != null)
|
||||
{
|
||||
// Read enabled from PLC
|
||||
cmsError = numericalControl.PLC_RScadaValue(layer.Buttons[i].Status.MemEnabledIndex, ref val);
|
||||
cmsError = numericalControl.PLC_RScadaValue(layer.Buttons[i].Status.MemEnabledIndex, SCADA_MEM_TYPE.BOOL, ref val);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
// Populate & add new object into scada model
|
||||
@@ -2419,7 +2419,7 @@ namespace Step.NC
|
||||
if (layer.Images.ElementAt(i) != null)
|
||||
{
|
||||
// Read isVisible from PLC
|
||||
cmsError = numericalControl.PLC_RScadaValue(layer.Images[i].Status.MemVisibleIndex, ref val);
|
||||
cmsError = numericalControl.PLC_RScadaValue(layer.Images[i].Status.MemVisibleIndex, SCADA_MEM_TYPE.BOOL, ref val);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
// Populate & add new object into scada model
|
||||
@@ -2434,7 +2434,7 @@ namespace Step.NC
|
||||
if(layer.ProgressBars.ElementAt(i) != null)
|
||||
{
|
||||
// Read value from PLC
|
||||
cmsError = numericalControl.PLC_RScadaValue(layer.ProgressBars[i].MemValueIndex, ref val);
|
||||
cmsError = numericalControl.PLC_RScadaValue(layer.ProgressBars[i].MemValueIndex, SCADA_MEM_TYPE.BYTE, ref val);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
// Populate & add new object into scada model
|
||||
@@ -2445,15 +2445,15 @@ namespace Step.NC
|
||||
});
|
||||
}
|
||||
|
||||
if (layer.Inputs.ElementAt(i) != null)
|
||||
if (layer.Inputs.ElementAt(i) != null && layer.Inputs[i].Status.Action == "read")
|
||||
{
|
||||
// Read isVisible from PLC
|
||||
cmsError = numericalControl.PLC_RScadaValue(layer.Inputs[i].Status.MemVisibleIndex, ref val);
|
||||
cmsError = numericalControl.PLC_RScadaValue(layer.Inputs[i].Status.MemEnabledIndex, SCADA_MEM_TYPE.BOOL, ref val);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
return cmsError;
|
||||
|
||||
// Read value from PLC
|
||||
cmsError = numericalControl.PLC_RScadaValue(layer.Inputs[i].Status.MemValueIndex, ref val2);
|
||||
cmsError = numericalControl.PLC_RScadaValue(layer.Inputs[i].Status.MemValueIndex, GetMemTypeFromString(layer.Inputs[i].Status.Type), ref val2);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
|
||||
@@ -2470,11 +2470,34 @@ namespace Step.NC
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scadas.Add(scada);
|
||||
}
|
||||
|
||||
return cmsError;
|
||||
}
|
||||
|
||||
private SCADA_MEM_TYPE GetMemTypeFromString(string memType)
|
||||
{
|
||||
switch (memType)
|
||||
{
|
||||
case "BOOL":
|
||||
return SCADA_MEM_TYPE.BOOL;
|
||||
|
||||
case "BYTE":
|
||||
return SCADA_MEM_TYPE.BYTE;
|
||||
|
||||
case "WORD":
|
||||
return SCADA_MEM_TYPE.WORD;
|
||||
|
||||
case "INT":
|
||||
return SCADA_MEM_TYPE.INT;
|
||||
|
||||
default:
|
||||
return SCADA_MEM_TYPE.BOOL;
|
||||
}
|
||||
}
|
||||
|
||||
//DTOScadaModel scada = new DTOScadaModel
|
||||
//{
|
||||
// Layers = prodScada.Layers.Select(x => new DTOScadaLayerModel()
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
using CMS_CORE_Library.Models;
|
||||
using Step.Model.DTOModels.Scada;
|
||||
using Step.NC;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web.Http;
|
||||
using static Step.Config.ServerConfig;
|
||||
|
||||
namespace Step.Controllers.WebApi
|
||||
{
|
||||
[RoutePrefix("api/scada")]
|
||||
public class ScadaController : ApiController
|
||||
{
|
||||
[Route("list")]
|
||||
public IHttpActionResult GetScadaList()
|
||||
{
|
||||
using (NcHandler ncHandler = new NcHandler())
|
||||
{
|
||||
ncHandler.Connect();
|
||||
CmsError cmsError = ncHandler.ReadScadaData(out List<DTOScadaModel> values);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
|
||||
|
||||
ScadaDataAndSchema data = new ScadaDataAndSchema()
|
||||
{
|
||||
schemes = ConfiguredScadaSchema,
|
||||
values = values
|
||||
};
|
||||
|
||||
return Ok(data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Route("production/list")]
|
||||
public IHttpActionResult GetProductionPageList()
|
||||
{
|
||||
using(NcHandler ncHandler = new NcHandler())
|
||||
{
|
||||
ncHandler.Connect();
|
||||
CmsError cmsError = ncHandler.ReadScadaData(out List<DTOScadaModel> values);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
|
||||
|
||||
ScadaDataAndSchema data = new ScadaDataAndSchema()
|
||||
{
|
||||
schemes = ProductionScadaSchema,
|
||||
values = values
|
||||
};
|
||||
|
||||
return Ok(data);
|
||||
}
|
||||
}
|
||||
|
||||
public class ScadaDataAndSchema
|
||||
{
|
||||
public List<ScadaSchemaModel> schemes;
|
||||
public List<DTOScadaModel> values;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -178,6 +178,7 @@
|
||||
<Compile Include="Controllers\WebApi\ApiMaintenanceController.cs" />
|
||||
<Compile Include="Controllers\WebApi\NcFileController.cs" />
|
||||
<Compile Include="Controllers\WebApi\NcToolManagerController.cs" />
|
||||
<Compile Include="Controllers\WebApi\ScadaController.cs" />
|
||||
<Compile Include="Controllers\WebApi\SiemensToolManagerController.cs" />
|
||||
<Compile Include="Controllers\WebApi\UserController.cs" />
|
||||
<Compile Include="Controllers\WebApi\NcApiController.cs" />
|
||||
|
||||
Reference in New Issue
Block a user