Merge branch 'release/FanucAddNumArt03'

This commit is contained in:
Samuele Locatelli
2024-11-07 10:47:55 +01:00
2 changed files with 147 additions and 14 deletions
+2 -2
View File
@@ -72,8 +72,8 @@ ENABLE_SEND_PZC_BLOCK=TRUE
MIN_SEND_PZC_BLOCK=0
MAX_SEND_PZC_BLOCK=100
; conf cablata set Art/Commessa
SET_NUM_ART=MACRO.966
SET_NUM_COM=MACRO.965
SET_NUM_ART=STD.MACRO.966
SET_NUM_COM=STD.MACRO.965
; conf parametri memoria READ/WRITE
PARAM_CONF=VL27.json
DISABLE_SEND_WDST=TRUE
+145 -12
View File
@@ -184,6 +184,7 @@ namespace IOB_WIN_NEXT.Iob
bool taskOk = false;
string taskVal = "";
string newVal = "";
string memAddr = "";
int newValInt = 0;
// cerco task specifici: se ho startSetup --> imposto bit DBB701.DBB0.4
foreach (var item in task2exe)
@@ -204,7 +205,7 @@ namespace IOB_WIN_NEXT.Iob
if (memMap.mMapWrite.ContainsKey(item.Key))
{
dataConf currMem = memMap.mMapWrite[item.Key];
string addr = currMem.memAddr;
memAddr = currMem.memAddr;
taskVal = $"SET task: {item.Key} --> {newVal} | mem: {currMem.memAddr} - {currMem.size} byte";
// salvo il nuovo valore nella memoria... così prox invio lo trasmetterà
memMap.mMapWrite[item.Key].value = newVal;
@@ -219,7 +220,7 @@ namespace IOB_WIN_NEXT.Iob
taskVal = $"NO MemMap found, SET task: {item.Key} --> {newVal} ({item.Value})";
}
// salvo in currProd..
saveProdData(new KeyValuePair<string, string>(item.Key, newVal));
saveProdData(new KeyValuePair<string, string>(item.Key, item.Value));
break;
case taskType.nihil:
@@ -251,7 +252,7 @@ namespace IOB_WIN_NEXT.Iob
if (memMap.mMapWrite.ContainsKey(item.Key))
{
dataConf currMem = memMap.mMapWrite[item.Key];
string addr = currMem.memAddr;
memAddr = currMem.memAddr;
taskVal = $"SET task: {item.Key} --> {newVal} | mem: {currMem.memAddr} - {currMem.size} byte";
// salvo il nuovo valore nella memoria... così prox invio lo trasmetterà
memMap.mMapWrite[item.Key].value = newVal;
@@ -271,14 +272,15 @@ namespace IOB_WIN_NEXT.Iob
//se ho successo rileggo ed eventualmente sistemo valore
if (taskOk)
{
var rVal = getValByParam("SET_NUM_ART");
//var rVal = getValByParam("SET_NUM_ART");
var rVal = getValByMemAddr(memAddr);
if (rVal == newVal)
{
lgInfo("All OK");
}
else
{
lgError($"Error | rVal: {rVal} | newVal: {newVal}");
lgError($"Error | memAddr: {memAddr} | rVal: {rVal} | newVal: {newVal}");
}
}
else
@@ -299,7 +301,7 @@ namespace IOB_WIN_NEXT.Iob
if (memMap.mMapWrite.ContainsKey(item.Key))
{
dataConf currMem = memMap.mMapWrite[item.Key];
string addr = currMem.memAddr;
memAddr = currMem.memAddr;
taskVal = $"SET task: {item.Key} --> {newVal} | mem: {currMem.memAddr} - {currMem.size} byte";
// salvo il nuovo valore nella memoria... così prox invio lo trasmetterà
memMap.mMapWrite[item.Key].value = newVal;
@@ -316,7 +318,24 @@ namespace IOB_WIN_NEXT.Iob
// invio a controller...
taskOk = setNumCom(newValInt);
//se ho successo rileggo ed eventualmente sistemo valore
if (taskOk)
{
//var rVal = getValByParam("SET_NUM_COM");
var rVal = getValByMemAddr(memAddr);
if (rVal == newVal)
{
lgInfo("All OK");
}
else
{
lgError($"Error | memAddr: {memAddr} | rVal: {rVal} | newVal: {newVal}");
}
}
else
{
lgError("Errore in scrittura SetNumCom");
}
// salvo in currProd..
saveProdData(new KeyValuePair<string, string>(item.Key, newVal));
break;
@@ -1928,8 +1947,8 @@ namespace IOB_WIN_NEXT.Iob
/// <returns></returns>
private string getValByParam(string varName)
{
#if false
string answ = "";
// verifico quale modalità sia richiesta: STD (6711) oppure BIT (Custom, con indicazione area)
string memAddr = getOptPar(varName);
if (memAddr.StartsWith("STD"))
{
@@ -1956,20 +1975,134 @@ namespace IOB_WIN_NEXT.Iob
// 2022.05.23 gestione MACRO da testare (Jetco)
else if (memAddr.StartsWith("MACRO."))
{
double macroVal = 0;
// recupero parametro...
int.TryParse(memAddr.Replace("MACRO.", ""), out cntAddr);
lgTrace($"MACRO | Read 01 | memAddr: {memAddr} | idx: {cntAddr}");
lgTrace($"MACRO | Read 01 | memAddr: {memAddr} | idx: {cntAddr} | macroVal: {macroVal}");
// processo parametro
stopwatch.Restart();
double macroVal = 0;
bool esitoMacro = FANUC_ref.F_Read_macro(cntAddr, ref macroVal);
FANUC_ref.F_Read_macro(cntAddr, ref macroVal);
if (utils.CRB("recTime"))
{
TimingData.addResult(cIobConf.codIOB, "R-MACRO", stopwatch.ElapsedTicks);
}
// salvo valore
answ = macroVal.ToString();
lgTrace($"MACRO | Read 02 | memAddr: {memAddr} | idx: {cntAddr} | esito: {esitoMacro} | macroVal: {macroVal}");
lgTrace($"MACRO | Read 02 | memAddr: {memAddr} | idx: {cntAddr} | macroVal: {macroVal}");
}
// altrimenti se legge da area memoria specifica leggo da li... formto tipo STD.D.1604.DW
else
{
memAddressFanuc areaCounter = new memAddressFanuc(memAddr);
if (isVerboseLog)
{
lgInfo("getValByParam [0] area memoria: {0}.{1}.{2}", areaCounter.mType, areaCounter.mPos, areaCounter.vType);
}
// leggo!
stopwatch.Restart();
// switch x tipo dati --> tipo lettura... e salvo ultimo conteggio rilevato
switch (areaCounter.vType)
{
case "B":
byte valB = 0;
FANUC_ref.F_RW_Byte(false, areaCounter.mType, areaCounter.mPos, ref valB);
outputVal = valB;
break;
case "D":
ushort valW = 0;
FANUC_ref.F_RW_Word(false, areaCounter.mType, areaCounter.mPos, ref valW);
outputVal = valW;
break;
case "DW":
uint valDW = 0;
FANUC_ref.F_RW_DWord(false, areaCounter.mType, areaCounter.mPos, ref valDW);
if (isVerboseLog)
{
lgInfo("[1] valDW PAR: {0}", valDW);
}
outputVal = valDW;
if (isVerboseLog)
{
lgInfo("[2] outputVal PAR: {0}", outputVal);
}
break;
default:
break;
}
if (utils.CRB("recTime"))
{
TimingData.addResult(cIobConf.codIOB, string.Format("R-{0}.{1}.{2}", areaCounter.mType, areaCounter.mPos, areaCounter.vType), stopwatch.ElapsedTicks);
}
// salvo...
answ = outputVal.ToString();
if (isVerboseLog)
{
lgInfo("[3] PAR letto: {0} | {1}", varName, answ);
}
}
stopwatch.Stop();
}
#endif
string memAddr = getOptPar(varName);
string answ =getValByMemAddr(memAddr);
return answ;
}
/// <summary>
/// Recupera il valore INT dal nome del parametro per successivo processing
/// </summary>
/// <param name="varName"></param>
/// <returns></returns>
private string getValByMemAddr(string memAddr)
{
string answ = "";
// verifico quale modalità sia richiesta: STD (6711) oppure BIT (Custom, con indicazione area)
if (memAddr.StartsWith("STD"))
{
// inizio verifica area memoria/parametro levando prima parte codice
memAddr = memAddr.Replace("STD.", "");
// var di appoggio
int cntAddr = 0;
object outputVal = new object();
// verifico se si tratta di lettura parametro... formato tipo STD.PAR.6711
if (memAddr.StartsWith("PAR."))
{
// recupero parametro...
int.TryParse(memAddr.Replace("PAR.", ""), out cntAddr);
// processo parametro
stopwatch.Restart();
FANUC_ref.F_RW_Param_Integer(false, cntAddr, 3, ref outputVal);
if (utils.CRB("recTime"))
{
TimingData.addResult(cIobConf.codIOB, string.Format("R{0}-PAR", 4), stopwatch.ElapsedTicks);
}
// salvo valore
answ = outputVal.ToString();
}
// 2022.05.23 gestione MACRO da testare (Jetco)
else if (memAddr.StartsWith("MACRO."))
{
double macroVal = 0;
// recupero parametro...
int.TryParse(memAddr.Replace("MACRO.", ""), out cntAddr);
lgTrace($"MACRO | Read 01 | memAddr: {memAddr} | idx: {cntAddr} | macroVal: {macroVal}");
// processo parametro
stopwatch.Restart();
FANUC_ref.F_Read_macro(cntAddr, ref macroVal);
if (utils.CRB("recTime"))
{
TimingData.addResult(cIobConf.codIOB, "R-MACRO", stopwatch.ElapsedTicks);
}
// salvo valore
answ = macroVal.ToString();
lgTrace($"MACRO | Read 02 | memAddr: {memAddr} | idx: {cntAddr} | macroVal: {macroVal}");
}
// altrimenti se legge da area memoria specifica leggo da li... formto tipo STD.D.1604.DW
else