Prima release ok, ma trigger è TROPPO generico --> BIT
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
"DB700.DBB0": {
|
||||
"Column": "Trigger",
|
||||
"MemConf": "DB700.DBB0",
|
||||
"DataType": "byte",
|
||||
"DataType": "Byte",
|
||||
"memByteSize": 1,
|
||||
"TriggerVal": "01"
|
||||
}
|
||||
@@ -19,64 +19,57 @@
|
||||
"Column": "Valore 1",
|
||||
"Index": 1,
|
||||
"MemConf": "DB700.DBB8",
|
||||
"DataType": "word",
|
||||
"DataType": "Word",
|
||||
"memByteSize": 2
|
||||
},
|
||||
"DB700.DBB10": {
|
||||
"Column": "Valore 2",
|
||||
"Index": 2,
|
||||
"MemConf": "DB700.DBB10",
|
||||
"DataType": "word",
|
||||
"DataType": "Word",
|
||||
"memByteSize": 2
|
||||
},
|
||||
"DB700.DBB16": {
|
||||
"Column": "Valore 3",
|
||||
"Index": 3,
|
||||
"MemConf": "DB700.DBB16",
|
||||
"DataType": "dword",
|
||||
"DataType": "DWord",
|
||||
"memByteSize": 4
|
||||
},
|
||||
"DB700.DBB20": {
|
||||
"Column": "Valore 4",
|
||||
"Index": 4,
|
||||
"MemConf": "DB700.DBB20",
|
||||
"DataType": "dword",
|
||||
"DataType": "DWord",
|
||||
"memByteSize": 4
|
||||
},
|
||||
"DB700.DBB32": {
|
||||
"Column": "Valore 5",
|
||||
"Index": 5,
|
||||
"MemConf": "DB700.DBB32",
|
||||
"DataType": "real",
|
||||
"DataType": "Real",
|
||||
"memByteSize": 4
|
||||
},
|
||||
"DB700.DBB36": {
|
||||
"Column": "Valore 6",
|
||||
"Index": 6,
|
||||
"MemConf": "DB700.DBB36",
|
||||
"DataType": "real",
|
||||
"DataType": "Real",
|
||||
"memByteSize": 4
|
||||
},
|
||||
"DB700.DBB40": {
|
||||
"Column": "Valore 7",
|
||||
"Index": 7,
|
||||
"MemConf": "DB700.DBB40",
|
||||
"DataType": "real",
|
||||
"DataType": "Real",
|
||||
"memByteSize": 4
|
||||
},
|
||||
"DB700.DBB48": {
|
||||
"Column": "Valore 8",
|
||||
"Index": 8,
|
||||
"MemConf": "DB700.DBB48",
|
||||
"DataType": "string",
|
||||
"DataType": "String",
|
||||
"memByteSize": 20
|
||||
}
|
||||
//"parametersList": {
|
||||
// "DB701.DBD142": {
|
||||
// "Column": "Valore assoluto",
|
||||
// "Index": 7,
|
||||
// "MemConf": "DB701.DBD142",
|
||||
// "DataType": "real"
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
"DB999.DBB0": {
|
||||
"Column": "Trigger",
|
||||
"MemConf": "DB999.DBB0",
|
||||
"DataType": "byte",
|
||||
"DataType": "Byte",
|
||||
"memByteSize": 1,
|
||||
"TriggerVal": "01"
|
||||
}
|
||||
@@ -18,49 +18,49 @@
|
||||
"DB999.DBB8": {
|
||||
"Column": "Valore 1",
|
||||
"MemConf": "DB999.DBB8",
|
||||
"DataType": "word",
|
||||
"DataType": "Word",
|
||||
"memByteSize": 2
|
||||
},
|
||||
"DB999.DBB10": {
|
||||
"Column": "Valore 2",
|
||||
"MemConf": "DB999.DBB10",
|
||||
"DataType": "word",
|
||||
"DataType": "Word",
|
||||
"memByteSize": 2
|
||||
},
|
||||
"DB999.DBB16": {
|
||||
"Column": "Valore 3",
|
||||
"MemConf": "DB999.DBB16",
|
||||
"DataType": "dword",
|
||||
"DataType": "DWord",
|
||||
"memByteSize": 4
|
||||
},
|
||||
"DB999.DBB20": {
|
||||
"Column": "Valore 4",
|
||||
"MemConf": "DB999.DBB20",
|
||||
"DataType": "dword",
|
||||
"DataType": "DWord",
|
||||
"memByteSize": 4
|
||||
},
|
||||
"DB999.DBB32": {
|
||||
"Column": "Valore 5",
|
||||
"MemConf": "DB999.DBB32",
|
||||
"DataType": "real",
|
||||
"DataType": "Real",
|
||||
"memByteSize": 4
|
||||
},
|
||||
"DB999.DBB36": {
|
||||
"Column": "Valore 6",
|
||||
"MemConf": "DB999.DBB36",
|
||||
"DataType": "real",
|
||||
"DataType": "Real",
|
||||
"memByteSize": 4
|
||||
},
|
||||
"DB999.DBB40": {
|
||||
"Column": "Valore 7",
|
||||
"MemConf": "DB999.DBB40",
|
||||
"DataType": "real",
|
||||
"memByteSize": 4
|
||||
"MemConf": "DB999.DBB306",
|
||||
"DataType": "Word",
|
||||
"memByteSize": 2
|
||||
},
|
||||
"DB999.DBB48": {
|
||||
"Column": "Valore 8",
|
||||
"MemConf": "DB999.DBB48",
|
||||
"DataType": "string",
|
||||
"DataType": "String",
|
||||
"memByteSize": 20
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"DB999.DBB0": {
|
||||
"Column": "Trigger",
|
||||
"MemConf": "DB999.DBB0",
|
||||
"DataType": "byte",
|
||||
"DataType": "Byte",
|
||||
"memByteSize": 1,
|
||||
"TriggerVal": "01"
|
||||
}
|
||||
@@ -18,49 +18,49 @@
|
||||
"DB999.DBB8": {
|
||||
"Column": "Valore 1",
|
||||
"MemConf": "DB999.DBB8",
|
||||
"DataType": "word",
|
||||
"DataType": "Word",
|
||||
"memByteSize": 2
|
||||
},
|
||||
"DB999.DBB10": {
|
||||
"Column": "Valore 2",
|
||||
"MemConf": "DB999.DBB10",
|
||||
"DataType": "word",
|
||||
"DataType": "Word",
|
||||
"memByteSize": 2
|
||||
},
|
||||
"DB999.DBB16": {
|
||||
"Column": "Valore 3",
|
||||
"MemConf": "DB999.DBB16",
|
||||
"DataType": "dword",
|
||||
"DataType": "DWord",
|
||||
"memByteSize": 4
|
||||
},
|
||||
"DB999.DBB20": {
|
||||
"Column": "Valore 4",
|
||||
"MemConf": "DB999.DBB20",
|
||||
"DataType": "dword",
|
||||
"DataType": "DWord",
|
||||
"memByteSize": 4
|
||||
},
|
||||
"DB999.DBB32": {
|
||||
"Column": "Valore 5",
|
||||
"MemConf": "DB999.DBB32",
|
||||
"DataType": "real",
|
||||
"DataType": "Real",
|
||||
"memByteSize": 4
|
||||
},
|
||||
"DB999.DBB36": {
|
||||
"Column": "Valore 6",
|
||||
"MemConf": "DB999.DBB36",
|
||||
"DataType": "real",
|
||||
"DataType": "Real",
|
||||
"memByteSize": 4
|
||||
},
|
||||
"DB999.DBB40": {
|
||||
"Column": "Valore 7",
|
||||
"MemConf": "DB999.DBB40",
|
||||
"DataType": "real",
|
||||
"memByteSize": 4
|
||||
"MemConf": "DB999.DBB306",
|
||||
"DataType": "Word",
|
||||
"memByteSize": 2
|
||||
},
|
||||
"DB999.DBB48": {
|
||||
"Column": "Valore 8",
|
||||
"MemConf": "DB999.DBB48",
|
||||
"DataType": "string",
|
||||
"DataType": "String",
|
||||
"memByteSize": 20
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ namespace IOB.WIN.FileExp
|
||||
{
|
||||
Column = "Valore assoluto",
|
||||
MemConf = "DB701.DBD142",
|
||||
DataType = "real"
|
||||
DataType = S7DataType.Byte
|
||||
};
|
||||
Dictionary<string, dataConf> paramList = new Dictionary<string, dataConf>();
|
||||
paramList.Add(newParam.MemConf, newParam);
|
||||
@@ -307,6 +307,8 @@ namespace IOB.WIN.FileExp
|
||||
}
|
||||
// elimino ultimo separatore...
|
||||
fileContent = fileContent.Substring(0, fileContent.Length - 1);
|
||||
// aggiungo a capo...
|
||||
fileContent += Environment.NewLine;
|
||||
}
|
||||
// scrivo!
|
||||
File.WriteAllText(outFilePath, fileContent);
|
||||
@@ -340,27 +342,68 @@ namespace IOB.WIN.FileExp
|
||||
/// </summary>
|
||||
private void saveToFile()
|
||||
{
|
||||
// FIXME TODO salvare su file
|
||||
#if false
|
||||
// invio TUTTI i dati al PLC secondo configurazione...
|
||||
string nextRow = "";
|
||||
// leggo TUTTI i dati dal PLC secondo configurazione...
|
||||
if (testCncConn())
|
||||
{
|
||||
// decodifico memoria...
|
||||
// init
|
||||
memAddress memoria = null;
|
||||
double valore = -999;
|
||||
foreach (var item in currValues)
|
||||
int numByte = 0;
|
||||
List<string> newData = new List<string>();
|
||||
string outVal = "";
|
||||
foreach (var item in currDataProxy.parametersList)
|
||||
{
|
||||
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!
|
||||
lgInfo($"Value sent to PLC: {item.Key} | {valore}");
|
||||
memoria = new memAddress(item.Value.MemConf);
|
||||
numByte = item.Value.memByteSize;
|
||||
outVal = "";
|
||||
// leggo!
|
||||
var currMem = currPLC.ReadBytes(DataType.DataBlock, memoria.DbNum, memoria.indiceMem, numByte);
|
||||
|
||||
// conferto lettura secondo il tipo!
|
||||
switch (item.Value.DataType)
|
||||
{
|
||||
case S7DataType.Byte:
|
||||
outVal = S7.Net.Types.Byte.FromByteArray(currMem.ToArray()).ToString();
|
||||
break;
|
||||
case S7DataType.Word:
|
||||
outVal = S7.Net.Types.Word.FromByteArray(currMem.ToArray()).ToString();
|
||||
break;
|
||||
case S7DataType.DWord:
|
||||
outVal = S7.Net.Types.DWord.FromByteArray(currMem.ToArray()).ToString();
|
||||
//var dwordVal = S7.Net.Types.DWord.FromByteArray(currMem.ToArray());
|
||||
//newData.Add(dwordVal.ToString());
|
||||
break;
|
||||
case S7DataType.Real:
|
||||
outVal = S7.Net.Types.Double.FromByteArray(currMem.ToArray()).ToString();
|
||||
//var doubleVal = S7.Net.Types.Double.FromByteArray(currMem.ToArray());
|
||||
//newData.Add(doubleVal.ToString());
|
||||
break;
|
||||
case S7DataType.String:
|
||||
// prendo 2° valore (num max valori)
|
||||
int numChar = currMem[1];
|
||||
// poi prendo la stringa...
|
||||
for (int i = 2; i < numChar + 2; i++)
|
||||
{
|
||||
outVal += Char.ConvertFromUtf32(currMem[i]);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
outVal = BitConverter.ToString(currMem);
|
||||
break;
|
||||
}
|
||||
|
||||
newData.Add(outVal);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
// formatto lista come riga CSV
|
||||
nextRow = string.Join(utils.CRS("csvSeparator"), newData);
|
||||
// aggiungo a capo...
|
||||
nextRow += Environment.NewLine;
|
||||
}
|
||||
// e le schianta nella prox riga del file...
|
||||
if (!string.IsNullOrEmpty(nextRow))
|
||||
{
|
||||
File.AppendAllText(outFilePath, nextRow);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Effettua comparazioen dati vecchi/nuovi
|
||||
@@ -434,18 +477,21 @@ namespace IOB.WIN.FileExp
|
||||
/// </summary>
|
||||
protected void reloadTriggersFromPLC()
|
||||
{
|
||||
// init
|
||||
memAddress memoria = null;
|
||||
int numByte = 0;
|
||||
// leggo triggers dal PLC
|
||||
foreach (var item in currDataProxy.triggerList)
|
||||
if (testCncConn())
|
||||
{
|
||||
memoria = new memAddress(item.Value.MemConf);
|
||||
numByte = item.Value.memByteSize;
|
||||
// leggo!
|
||||
var currMem = currPLC.ReadBytes(DataType.DataBlock, memoria.DbNum, memoria.indiceMem, numByte);
|
||||
// salvo
|
||||
upsertValue(item.Value.MemConf, BitConverter.ToString(currMem));
|
||||
// init
|
||||
memAddress memoria = null;
|
||||
int numByte = 0;
|
||||
// leggo triggers dal PLC
|
||||
foreach (var item in currDataProxy.triggerList)
|
||||
{
|
||||
memoria = new memAddress(item.Value.MemConf);
|
||||
numByte = item.Value.memByteSize;
|
||||
// leggo!
|
||||
var currMem = currPLC.ReadBytes(DataType.DataBlock, memoria.DbNum, memoria.indiceMem, numByte);
|
||||
// salvo
|
||||
upsertValue(item.Value.MemConf, BitConverter.ToString(currMem));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -49,10 +49,19 @@ namespace IOB.WIN.FileExp
|
||||
/// <summary>
|
||||
/// Tipo di dati
|
||||
/// </summary>
|
||||
public string DataType { get; set; } = "";
|
||||
public S7DataType DataType { get; set; } = S7DataType.Byte;
|
||||
/// <summary>
|
||||
/// Dimensione memoria in Byte
|
||||
/// </summary>
|
||||
public int memByteSize { get; set; } = 1;
|
||||
}
|
||||
|
||||
public enum S7DataType
|
||||
{
|
||||
Byte=0,
|
||||
Word,
|
||||
DWord,
|
||||
Real,
|
||||
String
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user