Merge branch 'feature/S7Net' into develop
This commit is contained in:
@@ -47,6 +47,7 @@ namespace CMS_CORE_Library.Models
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Recipe Parameters
|
||||
/// </summary>
|
||||
@@ -147,12 +148,14 @@ namespace CMS_CORE_Library.Models
|
||||
public class WarmerChannel
|
||||
{
|
||||
public int IdChannel { get; set; } = 0;
|
||||
public double SetpointRecipe { get; set; } = 0;
|
||||
public double SetpointThermoCam { get; set; } = 0;
|
||||
public double SetpointPLC { get; set; } = 0;
|
||||
public byte IdRefl { get; set; } = 0;
|
||||
public byte SetpointRecipe { get; set; } = 0;
|
||||
public byte SetpointThermoCam { get; set; } = 0;
|
||||
public byte SetpointPLC { get; set; } = 0;
|
||||
public byte ChStatus { get; set; } = 0;
|
||||
public double CurrAct { get; set; } = 0;
|
||||
public byte PercAct { get; set; } = 0;
|
||||
public int MaxPower { get; set; } = 0;
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
@@ -184,7 +187,7 @@ namespace CMS_CORE_Library.Models
|
||||
}
|
||||
|
||||
|
||||
public class ProdInfo
|
||||
public class ProdInfoModel
|
||||
{
|
||||
public short NumTarget { get; set; } = 0;
|
||||
public short NumDone { get; set; } = 0;
|
||||
@@ -203,7 +206,7 @@ namespace CMS_CORE_Library.Models
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
// Object is not a GaugeModel instance
|
||||
if (!(obj is ProdInfo item))
|
||||
if (!(obj is ProdInfoModel item))
|
||||
return false;
|
||||
|
||||
if (NumTarget != item.NumTarget)
|
||||
@@ -241,7 +244,7 @@ namespace CMS_CORE_Library.Models
|
||||
}
|
||||
}
|
||||
|
||||
public class ProdCycle
|
||||
public class ProdCycleModel
|
||||
{
|
||||
public ushort Status { get; set; } = 0;
|
||||
public ushort MessageId { get; set; } = 0;
|
||||
@@ -251,7 +254,7 @@ namespace CMS_CORE_Library.Models
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
// Object is not a GaugeModel instance
|
||||
if (!(obj is ProdCycle item))
|
||||
if (!(obj is ProdCycleModel item))
|
||||
return false;
|
||||
|
||||
if (Status != item.Status)
|
||||
|
||||
@@ -678,13 +678,13 @@ namespace CMS_CORE_Library
|
||||
/// </summary>
|
||||
/// <param name="currProdInfo"></param>
|
||||
/// <returns></returns>
|
||||
public abstract CmsError PLC_RProdInfo(ref ThermoModels.ProdInfo currProdInfo);
|
||||
public abstract CmsError PLC_RProdInfo(ref ThermoModels.ProdInfoModel currProdInfo);
|
||||
/// <summary>
|
||||
/// Get current Production Cycle data
|
||||
/// </summary>
|
||||
/// <param name="currProdCycle"></param>
|
||||
/// <returns></returns>
|
||||
public abstract CmsError PLC_RProdCycle(ref ThermoModels.ProdCycle currProdCycle);
|
||||
public abstract CmsError PLC_RProdCycle(ref ThermoModels.ProdCycleModel currProdCycle);
|
||||
|
||||
#endregion THERMO high level data
|
||||
|
||||
|
||||
@@ -61,8 +61,8 @@ namespace CMS_CORE_Library.S7Net
|
||||
private static Dictionary<int, ThermoModels.RecipeParam> ThermoParamList;
|
||||
private static Dictionary<int, ThermoModels.ModuleBlock> ThermoModuleList;
|
||||
private static Dictionary<int, ThermoModels.WarmerChannel> ThermoWarmChannels;
|
||||
private static ThermoModels.ProdInfo ThermoProdInfo;
|
||||
private static ThermoModels.ProdCycle ThermoProdCycle;
|
||||
private static ThermoModels.ProdInfoModel ThermoProdInfo;
|
||||
private static ThermoModels.ProdCycleModel ThermoProdCycle;
|
||||
|
||||
// connessione S7
|
||||
private CpuType tipoCpu = CpuType.S71500;
|
||||
@@ -136,8 +136,8 @@ namespace CMS_CORE_Library.S7Net
|
||||
ThermoParamList = new Dictionary<int, ThermoModels.RecipeParam>();
|
||||
ThermoModuleList = new Dictionary<int, ThermoModels.ModuleBlock>();
|
||||
ThermoWarmChannels = new Dictionary<int, ThermoModels.WarmerChannel>();
|
||||
ThermoProdCycle = new ThermoModels.ProdCycle();
|
||||
ThermoProdInfo = new ThermoModels.ProdInfo();
|
||||
ThermoProdCycle = new ThermoModels.ProdCycleModel();
|
||||
ThermoProdInfo = new ThermoModels.ProdInfoModel();
|
||||
}
|
||||
/// <summary>
|
||||
/// Connessione al PLC
|
||||
@@ -1952,7 +1952,7 @@ namespace CMS_CORE_Library.S7Net
|
||||
/// </summary>
|
||||
/// <param name="currProdInfo"></param>
|
||||
/// <returns></returns>
|
||||
public override CmsError PLC_RProdInfo(ref ThermoModels.ProdInfo currProdInfo)
|
||||
public override CmsError PLC_RProdInfo(ref ThermoModels.ProdInfoModel currProdInfo)
|
||||
{
|
||||
List<byte> currMem = new List<byte>();
|
||||
CmsError cmsError = MEM_RWByteList(R, 0, PROCESS_PROD_INFO.MemType, PROCESS_PROD_INFO.Address, PROCESS_PROD_INFO.SubAddress, 0, PROCESS_PROD_INFO.Size, ref currMem);
|
||||
@@ -1960,7 +1960,7 @@ namespace CMS_CORE_Library.S7Net
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
// converto!
|
||||
currProdInfo = new ThermoModels.ProdInfo()
|
||||
currProdInfo = new ThermoModels.ProdInfoModel()
|
||||
{
|
||||
NumTarget = S7.Net.Types.Int.FromByteArray(currMem.Skip(0).Take(2).ToArray()),
|
||||
NumDone = S7.Net.Types.Int.FromByteArray(currMem.Skip(2).Take(2).ToArray()),
|
||||
@@ -1985,7 +1985,7 @@ namespace CMS_CORE_Library.S7Net
|
||||
/// </summary>
|
||||
/// <param name="currProdCycle"></param>
|
||||
/// <returns></returns>
|
||||
public override CmsError PLC_RProdCycle(ref ThermoModels.ProdCycle currProdCycle)
|
||||
public override CmsError PLC_RProdCycle(ref ThermoModels.ProdCycleModel currProdCycle)
|
||||
{
|
||||
List<byte> currMem = new List<byte>();
|
||||
CmsError cmsError = MEM_RWByteList(R, 0, PROCESS_PROD_CYCLE.MemType, PROCESS_PROD_CYCLE.Address, PROCESS_PROD_CYCLE.SubAddress, 0, PROCESS_PROD_CYCLE.Size, ref currMem);
|
||||
@@ -1993,7 +1993,7 @@ namespace CMS_CORE_Library.S7Net
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
// converto!
|
||||
currProdCycle = new ThermoModels.ProdCycle()
|
||||
currProdCycle = new ThermoModels.ProdCycleModel()
|
||||
{
|
||||
Status = S7.Net.Types.Word.FromByteArray(currMem.Skip(0).Take(2).ToArray()),
|
||||
MessageId = S7.Net.Types.Word.FromByteArray(currMem.Skip(2).Take(2).ToArray()),
|
||||
@@ -2078,7 +2078,12 @@ namespace CMS_CORE_Library.S7Net
|
||||
}
|
||||
else
|
||||
{
|
||||
ThermoParamList.Add(currParam.Id, new ThermoModels.RecipeParam() { Id = currParam.Id, SetpointHMI = currParam.SetpointHMI, SetpointPLC = currParam.SetpointPLC, ValMax = currParam.ValMax, ValMin = currParam.ValMin, UnitMeasure = currParam.UnitMeasure });
|
||||
try
|
||||
{
|
||||
ThermoParamList.Add(currParam.Id, new ThermoModels.RecipeParam() { Id = currParam.Id, SetpointHMI = currParam.SetpointHMI, SetpointPLC = currParam.SetpointPLC, ValMax = currParam.ValMax, ValMin = currParam.ValMin, UnitMeasure = currParam.UnitMeasure });
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2367,7 +2372,7 @@ namespace CMS_CORE_Library.S7Net
|
||||
/// </summary>
|
||||
private void refreshRiscSetpointPLC()
|
||||
{
|
||||
// leggo DB500 x area Ich
|
||||
// leggo DB514 x area Ich
|
||||
List<byte> currMem = new List<byte>();
|
||||
|
||||
// leggo da PLC a array di byte di appoggio...
|
||||
@@ -2398,12 +2403,62 @@ namespace CMS_CORE_Library.S7Net
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Write SetPoint PLC on CHp area
|
||||
/// </summary>
|
||||
private void PLC_WRiscSetpointPLC()
|
||||
{
|
||||
List<byte> currMem = new List<byte>();
|
||||
// converto a blocchi di 2 byte...
|
||||
for (int i = 0; i < RISC_CHP_DATA.Size / 2; i++)
|
||||
{
|
||||
currMem.Add(ThermoWarmChannels[i + 1].SetpointPLC);
|
||||
currMem.Add(ThermoWarmChannels[i].SetpointPLC);
|
||||
}
|
||||
// scrivo sul PLC array di byte...
|
||||
CmsError cmsError = MEM_RWByteList(W, 0, RISC_CHP_DATA.MemType, RISC_CHP_DATA.Address, RISC_CHP_DATA.SubAddress, 0, RISC_CHP_DATA.Size, ref currMem);
|
||||
}
|
||||
// FIXME TODO : devo farla o legge da conf il PLC?
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Write Board enabled on OCC area
|
||||
/// </summary>
|
||||
private void PLC_WRiscAbilitSch()
|
||||
{
|
||||
List<byte> currMem = new List<byte>();
|
||||
// converto a blocchi di 2 byte...
|
||||
for (int i = 0; i < RISC_OCC_DATA.Size / 2; i++)
|
||||
{
|
||||
currMem.Add(ThermoWarmChannels[i + 1].SetpointPLC);
|
||||
currMem.Add(ThermoWarmChannels[i].SetpointPLC);
|
||||
}
|
||||
// scrivo sul PLC array di byte...
|
||||
CmsError cmsError = MEM_RWByteList(W, 0, RISC_CHP_DATA.MemType, RISC_CHP_DATA.Address, RISC_CHP_DATA.SubAddress, 0, RISC_CHP_DATA.Size, ref currMem);
|
||||
}
|
||||
#endif
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Write riflector on CFI area
|
||||
/// </summary>
|
||||
private void PLC_WRiscSetReflector()
|
||||
{
|
||||
List<byte> currMem = new List<byte>();
|
||||
// converto a blocchi di 2 byte...
|
||||
for (int i = 0; i < RISC_CFI_DATA.Size / 2; i++)
|
||||
{
|
||||
currMem.Add(RiskChannelConfig[i + 1].SetpointPLC);
|
||||
currMem.Add(RiskChannelConfig[i].SetpointPLC);
|
||||
}
|
||||
// scrivo sul PLC array di byte...
|
||||
CmsError cmsError = MEM_RWByteList(W, 0, RISC_CFI_DATA.MemType, RISC_CFI_DATA.Address, RISC_CFI_DATA.SubAddress, 0, RISC_CFI_DATA.Size, ref currMem);
|
||||
}
|
||||
#endif
|
||||
/// <summary>
|
||||
/// Refresh Canali Riscaldi: actual current PLC
|
||||
/// </summary>
|
||||
private void refreshRiscActCurr()
|
||||
{
|
||||
// leggo DB500 x area Ich
|
||||
// leggo DB514 x area Ich
|
||||
List<byte> currMem = new List<byte>();
|
||||
|
||||
// leggo da PLC a array di byte di appoggio...
|
||||
@@ -2439,7 +2494,7 @@ namespace CMS_CORE_Library.S7Net
|
||||
/// </summary>
|
||||
private void refreshRiscPerc()
|
||||
{
|
||||
// leggo DB500 x area OVp
|
||||
// leggo DB514 x area OVp
|
||||
List<byte> currMem = new List<byte>();
|
||||
|
||||
// leggo da PLC a array di byte di appoggio...
|
||||
@@ -2473,7 +2528,7 @@ namespace CMS_CORE_Library.S7Net
|
||||
/// </summary>
|
||||
private void refreshRiscStatus()
|
||||
{
|
||||
// leggo DB500 x area ESP
|
||||
// leggo DB514 x area ESP
|
||||
List<byte> currMem = new List<byte>();
|
||||
|
||||
// leggo da PLC a array di byte di appoggio...
|
||||
@@ -3095,7 +3150,15 @@ namespace CMS_CORE_Library.S7Net
|
||||
// try/catch
|
||||
try
|
||||
{
|
||||
currPLC.WriteBytes(DataType.DataBlock, MemTable, MemIndex, Values.ToArray());
|
||||
byte[] memByteSwap = new byte[Values.Count];
|
||||
// faccio swap a 2 byte x volta...
|
||||
for (int i = 0; i < Values.Count / 2; i++)
|
||||
{
|
||||
memByteSwap[2 * i] = Values.ElementAt(2 * i + 1);
|
||||
memByteSwap[2 * i + 1] = Values.ElementAt(2 * i);
|
||||
}
|
||||
currPLC.WriteBytes(DataType.DataBlock, MemTable, MemIndex, memByteSwap);
|
||||
//currPLC.WriteBytes(DataType.DataBlock, MemTable, MemIndex, Values.ToArray());
|
||||
}
|
||||
catch
|
||||
{
|
||||
@@ -3111,8 +3174,14 @@ namespace CMS_CORE_Library.S7Net
|
||||
Values.Clear();
|
||||
try
|
||||
{
|
||||
var memByteRead = currPLC.ReadBytes(DataType.DataBlock, MemTable, MemIndex, Number);
|
||||
Values = memByteRead.ToList();
|
||||
byte[] memByteRead = currPLC.ReadBytes(DataType.DataBlock, MemTable, MemIndex, Number);
|
||||
// faccio swap a 2 byte x volta...
|
||||
for (int i = 0; i < memByteRead.Length / 2; i++)
|
||||
{
|
||||
Values.Add(memByteRead[2 * i + 1]);
|
||||
Values.Add(memByteRead[2 * i]);
|
||||
}
|
||||
//Values = memByteRead.ToList();
|
||||
}
|
||||
catch
|
||||
{
|
||||
@@ -4566,14 +4635,14 @@ namespace CMS_CORE_Library.S7Net
|
||||
internal static MEMORY_CELL MODULE_RT_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 603, 12, 1536);
|
||||
|
||||
// riscaldi
|
||||
internal static MEMORY_CELL RISC_OCC_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 500, 64, 64);
|
||||
internal static MEMORY_CELL RISC_CHP_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 500, 128, 1024);
|
||||
internal static MEMORY_CELL RISC_CFI_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 500, 2176, 1024);
|
||||
internal static MEMORY_CELL RISC_ICH_MIN_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 500, 3200, 4096);
|
||||
internal static MEMORY_CELL RISC_OCS_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 500, 9472, 64);
|
||||
internal static MEMORY_CELL RISC_ESP_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 500, 9728, 1024);
|
||||
internal static MEMORY_CELL RISC_OVP_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 500, 10752, 1024);
|
||||
internal static MEMORY_CELL RISC_ICH_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 500, 11776, 4096);
|
||||
internal static MEMORY_CELL RISC_OCC_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 64, 64);
|
||||
internal static MEMORY_CELL RISC_CHP_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 128, 1024);
|
||||
internal static MEMORY_CELL RISC_CFI_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 2176, 1024);
|
||||
internal static MEMORY_CELL RISC_ICH_MIN_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 3200, 4096);
|
||||
internal static MEMORY_CELL RISC_OCS_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 9472, 64);
|
||||
internal static MEMORY_CELL RISC_ESP_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 9728, 1024);
|
||||
internal static MEMORY_CELL RISC_OVP_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 10752, 1024);
|
||||
internal static MEMORY_CELL RISC_ICH_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 11776, 4096);
|
||||
|
||||
// produzione
|
||||
internal static MEMORY_CELL PROCESS_PROD_INFO = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 606, 0, 50);
|
||||
|
||||
@@ -223,8 +223,10 @@ namespace Siemens_S7_Test
|
||||
{
|
||||
memByteRead = currPLC.ReadBytes(DataType.DataBlock, memoria.DbNum, memoria.indiceMem, numByte);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
catch(Exception exc)
|
||||
{
|
||||
lg.Error(exc);
|
||||
}
|
||||
sw.Stop();
|
||||
// salvo risultati
|
||||
PerfStats.addValue((double)sw.ElapsedMilliseconds);
|
||||
|
||||
Reference in New Issue
Block a user