Completato giro con scrittura REAL

This commit is contained in:
Samuele E. Locatelli
2020-05-11 15:27:30 +02:00
parent 4ef9d8c29f
commit 2c6b71dee1
3 changed files with 65 additions and 13 deletions
+61 -9
View File
@@ -56,7 +56,7 @@ namespace MHT_Siemens
/// <summary>
/// Ultimi valori registrati da file
/// </summary>
protected Dictionary<string, string> lastValues;
protected Dictionary<string, string> prevValues;
/// <summary>
/// valori correntemente letti dal file
/// </summary>
@@ -75,7 +75,7 @@ namespace MHT_Siemens
{
lg = LogManager.GetCurrentClassLogger();
tsslApp.Text = $"{utils.CRS("appName")}";
lastValues = new Dictionary<string, string>();
prevValues = new Dictionary<string, string>();
currValues = new Dictionary<string, string>();
loadMemConf();
loadPlc();
@@ -260,7 +260,21 @@ namespace MHT_Siemens
private void saveToPLC()
{
// invio TUTTI i dati al PLC secondo configurazione...
if (testCncConn())
{
// decodifico memoria...
memAddress memoria = null;
double valore = -999;
foreach (var item in currValues)
{
memoria = new memAddress(item.Key);
double.TryParse(item.Value, out valore);
// hard coded REAL!!!
byte[] DB_Byte = new byte[4];
S7.Net.Types.Double.ToByteArray(valore).CopyTo(DB_Byte, 0);
currPLC.WriteBytes(DataType.DataBlock, memoria.DbNum, memoria.indiceMem, DB_Byte);
}
}
// loggo invio al PLC!
lg.Info("New Value sent to PLC");
}
@@ -272,20 +286,19 @@ namespace MHT_Siemens
{
bool answ = false;
// se i 2 vettori sono diversi
if (currValues.Count != lastValues.Count)
if (currValues.Count != prevValues.Count)
{
// salvo ed esco subito
lastValues = currValues;
resetPrevVal();
return true;
}
// verifico ogni singolo valore...
foreach (var item in currValues)
{
// cerco...
if (lastValues.ContainsKey(item.Key))
if (prevValues.ContainsKey(item.Key))
{
// verifico se diversi --> trovato cambio!
answ = currValues[item.Key] != lastValues[item.Key];
answ = currValues[item.Key] != prevValues[item.Key];
}
else
{
@@ -295,12 +308,24 @@ namespace MHT_Siemens
if (answ)
{
// salvo ed esco subito
lastValues = currValues;
resetPrevVal();
return true;
}
}
return answ;
}
/// <summary>
/// Refresh oggetto valori precedenti
/// </summary>
private void resetPrevVal()
{
// salvo ed esco subito
prevValues = new Dictionary<string, string>();
foreach (var item in currValues)
{
prevValues.Add(item.Key, item.Value);
}
}
/// <summary>
/// Effettua rilettura da file
@@ -389,6 +414,33 @@ namespace MHT_Siemens
answ = reply.Status;
return answ;
}
/// <summary>
/// Test connessione CNC
/// </summary>
/// <returns></returns>
private bool testCncConn()
{
bool answ = false;
IPStatus pingStatus = testPing();
// se passa il ping faccio il resto...
if (pingStatus != IPStatus.Success)
{
lg.Error("Errore ping");
}
else
{
if (!currPLC.IsConnected) currPLC.Open();
if (!currPLC.IsConnected)
{
lg.Error( "Errore connessione");
}
else
{
answ = true;
}
}
return answ;
}
#endregion
}
+2 -2
View File
@@ -9,10 +9,10 @@
"slot": 1
},
"parametersList": {
"DB701.DBD142": {
"DB999.DBD32": {
"Column": "Valore assoluto",
"Index": 7,
"MemConf": "DB701.DBD142",
"MemConf": "DB999.DBD32",
"DataType": "real"
}
}
+2 -2
View File
@@ -9,10 +9,10 @@
"slot": 1
},
"parametersList": {
"DB701.DBD142": {
"DB999.DBD32": {
"Column": "Valore assoluto",
"Index": 7,
"MemConf": "DB701.DBD142",
"MemConf": "DB999.DBD32",
"DataType": "real"
}
}