Added method for prodInfo reset and setup

This commit is contained in:
Samuele Locatelli
2020-06-17 18:27:12 +02:00
parent fbaa46b9a8
commit f5ec10a691
3 changed files with 78 additions and 0 deletions
+48
View File
@@ -2191,6 +2191,54 @@ namespace CMS_CORE_Library.S7Net
MouldEnergyIN = S7.Net.Types.Double.FromByteArray(currMem.Skip(46).Take(4).ToArray())
};
return NO_ERROR;
}
/// <summary>
/// Set ProdInfo data
/// </summary>
/// <param name="numTarget">Qty requested (target)</param>
/// <param name="doReset">Reset counter (actual counter)</param>
/// <returns></returns>
public override CmsError PLC_WProdInfo(short numTarget, bool doReset)
{
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);
if (cmsError.IsError())
return cmsError;
// converto!
var 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()),
// cicli preriscaldo? FIXME TODO
TimeWarm = S7.Net.Types.DInt.FromByteArray(currMem.Skip(6).Take(4).ToArray()),
TimeVent = S7.Net.Types.DInt.FromByteArray(currMem.Skip(10).Take(4).ToArray()),
TimeVacuum = S7.Net.Types.DInt.FromByteArray(currMem.Skip(14).Take(4).ToArray()),
TimeCycleGross = S7.Net.Types.DInt.FromByteArray(currMem.Skip(18).Take(4).ToArray()),
TimeCycleNet = S7.Net.Types.DInt.FromByteArray(currMem.Skip(22).Take(4).ToArray()),
MaterialTempEndWarm = S7.Net.Types.Double.FromByteArray(currMem.Skip(26).Take(4).ToArray()),
MaterialTempEndVent = S7.Net.Types.Double.FromByteArray(currMem.Skip(30).Take(4).ToArray()),
MoldTemp = S7.Net.Types.Double.FromByteArray(currMem.Skip(34).Take(4).ToArray()),
VacuumReadVal = S7.Net.Types.Double.FromByteArray(currMem.Skip(38).Take(4).ToArray()),
MouldEnergyOUT = S7.Net.Types.Double.FromByteArray(currMem.Skip(42).Take(4).ToArray()),
MouldEnergyIN = S7.Net.Types.Double.FromByteArray(currMem.Skip(46).Take(4).ToArray())
};
// aggiorno...
currProdInfo.NumTarget = numTarget;
if(doReset)
{
currProdInfo.NumDone = 0;
}
// converto a byte...
List<byte> newMem = currProdInfo.convertToByte().ToList();
// riscrivo!!!!
cmsError = MEM_RWByteList(W, 0, PROCESS_PROD_INFO.MemType, PROCESS_PROD_INFO.Address, PROCESS_PROD_INFO.SubAddress, 0, PROCESS_PROD_INFO.Size, ref newMem);
if (cmsError.IsError())
return cmsError;
return NO_ERROR;
}
/// <summary>