diff --git a/CMS_CORE_Library/NcThermo.cs b/CMS_CORE_Library/NcThermo.cs
index e3d1156..4526bb2 100644
--- a/CMS_CORE_Library/NcThermo.cs
+++ b/CMS_CORE_Library/NcThermo.cs
@@ -657,13 +657,19 @@ namespace CMS_CORE_Library
///
///
///
- public abstract CmsError PLC_WWarmerChSetpoints(Dictionary currWarmerChannelList);
+ public abstract CmsError PLC_WWarmerChSetpHmi(Dictionary newData);
+ ///
+ /// Set current Warmers Channels setpoints
+ ///
+ ///
+ ///
+ public abstract CmsError PLC_WWarmerChSetpTCam(Dictionary newData);
///
/// Set current Warmers Channels setup data
///
///
///
- public abstract CmsError PLC_WWarmerChData(Dictionary currWarmerChannelList);
+ public abstract CmsError PLC_WWarmerSetupData(Dictionary currWarmerChannelList);
///
/// Read power gauge data
///
diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs
index f6c30a9..7ae03ad 100644
--- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs
+++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs
@@ -2200,11 +2200,16 @@ namespace CMS_CORE_Library.S7Net
// update oggetto thermoParamList...
if (ThermoModuleList.ContainsKey(currModBlock.Id))
{
- ThermoModuleList[currModBlock.Id].Visible = currModBlock.Visible;
- ThermoModuleList[currModBlock.Id].Running = currModBlock.Running;
- ThermoModuleList[currModBlock.Id].HasError = currModBlock.HasError;
- ThermoModuleList[currModBlock.Id].ActualDuration = currModBlock.ActualDuration;
- ThermoModuleList[currModBlock.Id].ActualDelay = currModBlock.ActualDelay;
+ try
+ {
+ ThermoModuleList[currModBlock.Id].Visible = currModBlock.Visible;
+ ThermoModuleList[currModBlock.Id].Running = currModBlock.Running;
+ ThermoModuleList[currModBlock.Id].HasError = currModBlock.HasError;
+ ThermoModuleList[currModBlock.Id].ActualDuration = currModBlock.ActualDuration;
+ ThermoModuleList[currModBlock.Id].ActualDelay = currModBlock.ActualDelay;
+ }
+ catch
+ { }
}
else
{
@@ -2386,6 +2391,8 @@ namespace CMS_CORE_Library.S7Net
double currVal = 0;
for (int i = 0; i < RISC_CHP_DATA.Size / 4; i++)
{
+ // FIXME TODO
+#if false
currVal = S7.Net.Types.Double.FromByteArray(memArray.Skip(4 * i).Take(4).ToArray());
// cerco id + 1 (su memoria รจ base 0)
if (ThermoWarmChannels.ContainsKey(i + 1))
@@ -2399,25 +2406,12 @@ namespace CMS_CORE_Library.S7Net
IdChannel = i + 1,
SetpointPLC = currVal
});
- }
+ }
+#endif
}
}
}
- ///
- /// 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
///
@@ -2561,13 +2555,47 @@ namespace CMS_CORE_Library.S7Net
///
/// Write Warmers channels load data
///
- ///
+ ///
///
- public override CmsError PLC_WWarmerChSetpoints(Dictionary updtCh)
+ public override CmsError PLC_WWarmerChSetpHmi(Dictionary newData)
{
// memory area
- List newMem = new List();
+ byte[] newMem = new byte[newData.Count];
+ List currMem = new List();
+ // read actual data on memory...
+ CmsError cmsError = MEM_RWByteList(R, 0, RISC_CHP_DATA.MemType, RISC_CHP_DATA.Address, RISC_CHP_DATA.SubAddress, 0, RISC_CHP_DATA.Size, ref currMem);
+ if (cmsError.IsError())
+ return cmsError;
+
+ newMem = currMem.ToArray();
+
+ // update only given data...
+ foreach (var item in newData)
+ {
+ newMem[item.Key - 1] = (byte)item.Value;
+ }
+ // return as list...
+ currMem = newMem.ToList();
+ // scrivo sul PLC array di byte...
+ cmsError = MEM_RWByteList(W, 0, RISC_CHP_DATA.MemType, RISC_CHP_DATA.Address, RISC_CHP_DATA.SubAddress, 0, RISC_CHP_DATA.Size, ref currMem);
+ if (cmsError.IsError())
+ return cmsError;
+
+ return NO_ERROR;
+ }
+ ///
+ /// Write Warmers channels termocam data
+ ///
+ ///
+ ///
+ public override CmsError PLC_WWarmerChSetpTCam(Dictionary newData)
+ {
+ // memory area
+ byte[] newMem = new byte[newData.Count];
+ List currMem = new List();
+
+#if false
// per fare swapt faccio 2 alla volta e inverto ordine...
for (int i = 0; i < RISC_CHP_DATA.Size / 2; i++)
{
@@ -2577,6 +2605,18 @@ namespace CMS_CORE_Library.S7Net
newMem.Add((byte)updtCh[i * 2]);
}
+#endif
+ // converto a blocchi di 2 byte...
+ for (int i = 0; i < RISC_CHP_DATA.Size; i++)
+ {
+ //newMem.Add(ThermoWarmChannels[i].SetpointPLC);
+ newMem[i] = (byte)newData[i];
+ }
+ // converto
+ currMem = newMem.ToList();
+ // 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);
+
// error in write WARM area...
#if false
// write!
@@ -2592,7 +2632,7 @@ namespace CMS_CORE_Library.S7Net
///
///
///
- public override CmsError PLC_WWarmerChData(Dictionary updtCh)
+ public override CmsError PLC_WWarmerSetupData(Dictionary updtCh)
{
// FIXME TODO
#if false
@@ -3150,15 +3190,7 @@ namespace CMS_CORE_Library.S7Net
// try/catch
try
{
- 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());
+ currPLC.WriteBytes(DataType.DataBlock, MemTable, MemIndex, Values.ToArray());
}
catch
{
@@ -3170,18 +3202,11 @@ namespace CMS_CORE_Library.S7Net
// Prevent some exceptions
if (Number == 0)
return NO_ERROR;
-
Values.Clear();
try
{
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();
+ Values = memByteRead.ToList();
}
catch
{
@@ -4636,7 +4661,7 @@ namespace CMS_CORE_Library.S7Net
// riscaldi
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_CHP_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 614, 0, 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);
diff --git a/SiemensS7/Siemens-S7-Test/TestMainForm.cs b/SiemensS7/Siemens-S7-Test/TestMainForm.cs
index b8af922..216d58f 100644
--- a/SiemensS7/Siemens-S7-Test/TestMainForm.cs
+++ b/SiemensS7/Siemens-S7-Test/TestMainForm.cs
@@ -223,7 +223,7 @@ namespace Siemens_S7_Test
{
memByteRead = currPLC.ReadBytes(DataType.DataBlock, memoria.DbNum, memoria.indiceMem, numByte);
}
- catch(Exception exc)
+ catch (Exception exc)
{
lg.Error(exc);
}
@@ -658,15 +658,26 @@ namespace Siemens_S7_Test
break;
case "byte":
default:
- // attenzione: byte sono GIRATI x cui DEVO invertire lettura pari/dispari...
- for (int i = 0; i < memByteRead.Length / 2; i++)
+ if (true)
{
- // dispari
- byteVal = Convert.ToString(memByteRead[i * 2 + 1], 2).PadLeft(8, '0');
- contenuto += string.Format("B{0:000}: {1} | {2}{3}", i * 2, byteVal, memByteRead[i * 2 + 1], Environment.NewLine);
- // pari
- byteVal = Convert.ToString(memByteRead[i * 2], 2).PadLeft(8, '0');
- contenuto += string.Format("B{0:000}: {1} | {2}{3}", i * 2 + 1, byteVal, memByteRead[i * 2], Environment.NewLine);
+ for (int i = 0; i < memByteRead.Length; i++)
+ {
+ byteVal = Convert.ToString(memByteRead[i], 2).PadLeft(8, '0');
+ contenuto += string.Format("B{0:000}: {1} | {2}{3}", i, byteVal, memByteRead[i], Environment.NewLine);
+ }
+ }
+ else
+ {
+ // attenzione: byte sono GIRATI x cui DEVO invertire lettura pari/dispari...
+ for (int i = 0; i < memByteRead.Length / 2; i++)
+ {
+ // dispari
+ byteVal = Convert.ToString(memByteRead[i * 2 + 1], 2).PadLeft(8, '0');
+ contenuto += string.Format("B{0:000}: {1} | {2}{3}", i * 2, byteVal, memByteRead[i * 2 + 1], Environment.NewLine);
+ // pari
+ byteVal = Convert.ToString(memByteRead[i * 2], 2).PadLeft(8, '0');
+ contenuto += string.Format("B{0:000}: {1} | {2}{3}", i * 2 + 1, byteVal, memByteRead[i * 2], Environment.NewLine);
+ }
}
break;
}
@@ -704,7 +715,8 @@ namespace Siemens_S7_Test
byte[] DB_Byte = new byte[1];
DB_Byte[0] = num2write;
// attenzione endianness! invertire byte...
- int fixIndex = memoria.indiceMem % 2 == 0 ? memoria.indiceMem + 1 : memoria.indiceMem - 1;
+ int fixIndex = memoria.indiceMem;
+ //int fixIndex = memoria.indiceMem % 2 == 0 ? memoria.indiceMem + 1 : memoria.indiceMem - 1;
currPLC.WriteBytes(DataType.DataBlock, memoria.DbNum, fixIndex, DB_Byte);
titolo = string.Format("WRITE BLOCK MEM: {0}", txtWriteAddr1.Text);
contenuto = "";