diff --git a/CMS_CORE_Library/Models/ThermoModels.cs b/CMS_CORE_Library/Models/ThermoModels.cs
index 324a9e4..e36fe40 100644
--- a/CMS_CORE_Library/Models/ThermoModels.cs
+++ b/CMS_CORE_Library/Models/ThermoModels.cs
@@ -47,6 +47,7 @@ namespace CMS_CORE_Library.Models
}
}
+
///
/// Recipe Parameters
///
@@ -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)
diff --git a/CMS_CORE_Library/NcThermo.cs b/CMS_CORE_Library/NcThermo.cs
index cc622b8..e3d1156 100644
--- a/CMS_CORE_Library/NcThermo.cs
+++ b/CMS_CORE_Library/NcThermo.cs
@@ -678,13 +678,13 @@ namespace CMS_CORE_Library
///
///
///
- public abstract CmsError PLC_RProdInfo(ref ThermoModels.ProdInfo currProdInfo);
+ public abstract CmsError PLC_RProdInfo(ref ThermoModels.ProdInfoModel currProdInfo);
///
/// Get current Production Cycle data
///
///
///
- public abstract CmsError PLC_RProdCycle(ref ThermoModels.ProdCycle currProdCycle);
+ public abstract CmsError PLC_RProdCycle(ref ThermoModels.ProdCycleModel currProdCycle);
#endregion THERMO high level data
diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs
index 53f2902..f6c30a9 100644
--- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs
+++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs
@@ -61,8 +61,8 @@ namespace CMS_CORE_Library.S7Net
private static Dictionary ThermoParamList;
private static Dictionary ThermoModuleList;
private static Dictionary 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();
ThermoModuleList = new Dictionary();
ThermoWarmChannels = new Dictionary();
- ThermoProdCycle = new ThermoModels.ProdCycle();
- ThermoProdInfo = new ThermoModels.ProdInfo();
+ ThermoProdCycle = new ThermoModels.ProdCycleModel();
+ ThermoProdInfo = new ThermoModels.ProdInfoModel();
}
///
/// Connessione al PLC
@@ -1952,7 +1952,7 @@ namespace CMS_CORE_Library.S7Net
///
///
///
- public override CmsError PLC_RProdInfo(ref ThermoModels.ProdInfo currProdInfo)
+ public override CmsError PLC_RProdInfo(ref ThermoModels.ProdInfoModel currProdInfo)
{
List currMem = new List();
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
///
///
///
- public override CmsError PLC_RProdCycle(ref ThermoModels.ProdCycle currProdCycle)
+ public override CmsError PLC_RProdCycle(ref ThermoModels.ProdCycleModel currProdCycle)
{
List currMem = new List();
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
///
private void refreshRiscSetpointPLC()
{
- // leggo DB500 x area Ich
+ // leggo DB514 x area Ich
List currMem = new List();
// leggo da PLC a array di byte di appoggio...
@@ -2398,12 +2403,62 @@ namespace CMS_CORE_Library.S7Net
}
}
}
+ ///
+ /// Write SetPoint PLC on CHp area
+ ///
+ private void PLC_WRiscSetpointPLC()
+ {
+ List currMem = new List();
+ // 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
+ ///
+ /// Write Board enabled on OCC area
+ ///
+ private void PLC_WRiscAbilitSch()
+ {
+ List currMem = new List();
+ // 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
+ ///
+ /// Write riflector on CFI area
+ ///
+ private void PLC_WRiscSetReflector()
+ {
+ List currMem = new List();
+ // 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
///
/// Refresh Canali Riscaldi: actual current PLC
///
private void refreshRiscActCurr()
{
- // leggo DB500 x area Ich
+ // leggo DB514 x area Ich
List currMem = new List();
// leggo da PLC a array di byte di appoggio...
@@ -2439,7 +2494,7 @@ namespace CMS_CORE_Library.S7Net
///
private void refreshRiscPerc()
{
- // leggo DB500 x area OVp
+ // leggo DB514 x area OVp
List currMem = new List();
// leggo da PLC a array di byte di appoggio...
@@ -2473,7 +2528,7 @@ namespace CMS_CORE_Library.S7Net
///
private void refreshRiscStatus()
{
- // leggo DB500 x area ESP
+ // leggo DB514 x area ESP
List currMem = new List();
// 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);
diff --git a/SiemensS7/Siemens-S7-Test/TestMainForm.cs b/SiemensS7/Siemens-S7-Test/TestMainForm.cs
index e139812..b8af922 100644
--- a/SiemensS7/Siemens-S7-Test/TestMainForm.cs
+++ b/SiemensS7/Siemens-S7-Test/TestMainForm.cs
@@ -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);