S7Net: forced process status (unmanaged)
This commit is contained in:
@@ -825,7 +825,7 @@ namespace CMS_CORE_Library.S7Net
|
||||
|
||||
// need byte swap!
|
||||
List<int> fixValues = new List<int>();
|
||||
foreach(var item in readValues)
|
||||
foreach (var item in readValues)
|
||||
{
|
||||
fixValues.Add(SwapBytes(item));
|
||||
}
|
||||
@@ -1725,39 +1725,56 @@ namespace CMS_CORE_Library.S7Net
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
|
||||
int readValue = 0;
|
||||
// Read processes status from memory
|
||||
libraryError = MEM_RWInteger(R, 0, PROCESS_STATUS.MemType, PROCESS_STATUS.Address, PROCESS_STATUS.SubAddress + ((procNumber - 1) * 2), ref readValue);
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
// FIXME TODO --> forzato tutto a true... eventualmente rivedere in futuro x processo caricatore vs processo principale
|
||||
bool forceValues = true;
|
||||
|
||||
byte[] bytes = BitConverter.GetBytes(readValue);
|
||||
|
||||
// Convert Byte into true/false array
|
||||
BitArray bits = new BitArray(new byte[] { bytes[0] }); // 1st byte -> 0 : Proccess type (AUX-WORK), 1: Process in alarm status, 2: Run, 3: Hold, 4: Read, 5: PartProgramVisible
|
||||
|
||||
// Get part program info visibility
|
||||
processData.Visible = bits[0];
|
||||
|
||||
// Populate response structure
|
||||
processData.Type = bits[1] ? "WORK" : "AUX";
|
||||
processData.IsSelected = bits[2];
|
||||
processData.IsInAlarm = bits[3];
|
||||
processData.CanLoadProgram = bits[4];
|
||||
|
||||
// Choose process status
|
||||
if (bytes[1] == 1)
|
||||
processData.Status = "HOLD";
|
||||
if (forceValues)
|
||||
{
|
||||
processData.Visible = true;
|
||||
processData.Type = "WORK" ;
|
||||
processData.IsSelected = true;
|
||||
processData.IsInAlarm = false;
|
||||
processData.CanLoadProgram = true;
|
||||
processData.Status = "RUN";
|
||||
processData.Reps = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (bytes[1] == 2)
|
||||
processData.Status = "RUN";
|
||||
else
|
||||
processData.Status = "READY";
|
||||
}
|
||||
int readValue = 0;
|
||||
|
||||
// Get Reps from 3nd-4th byte
|
||||
processData.Reps = BitConverter.ToUInt16(bytes, 2);
|
||||
// Read processes status from memory
|
||||
libraryError = MEM_RWInteger(R, 0, PROCESS_STATUS.MemType, PROCESS_STATUS.Address, PROCESS_STATUS.SubAddress + ((procNumber - 1) * 2), ref readValue);
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
|
||||
byte[] bytes = BitConverter.GetBytes(readValue);
|
||||
|
||||
// Convert Byte into true/false array
|
||||
BitArray bits = new BitArray(new byte[] { bytes[0] }); // 1st byte -> 0 : Proccess type (AUX-WORK), 1: Process in alarm status, 2: Run, 3: Hold, 4: Read, 5: PartProgramVisible
|
||||
|
||||
// Get part program info visibility
|
||||
processData.Visible = bits[0];
|
||||
|
||||
// Populate response structure
|
||||
processData.Type = bits[1] ? "WORK" : "AUX";
|
||||
processData.IsSelected = bits[2];
|
||||
processData.IsInAlarm = bits[3];
|
||||
processData.CanLoadProgram = bits[4];
|
||||
|
||||
// Choose process status
|
||||
if (bytes[1] == 1)
|
||||
processData.Status = "HOLD";
|
||||
else
|
||||
{
|
||||
if (bytes[1] == 2)
|
||||
processData.Status = "RUN";
|
||||
else
|
||||
processData.Status = "READY";
|
||||
}
|
||||
|
||||
// Get Reps from 3nd-4th byte
|
||||
processData.Reps = BitConverter.ToUInt16(bytes, 2);
|
||||
}
|
||||
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user