Mitsubishi
- lerttura VAR da verificare (NON tiene Art/Comm)
This commit is contained in:
@@ -55,10 +55,7 @@ BLINK_FILT=0
|
||||
[OPTPAR]
|
||||
EZNC_SYS=EZNC_SYS_MELDAS700L
|
||||
ENABLE_PZCOUNT=TRUE
|
||||
;PZCOUNT_MODE=STD|BIT
|
||||
;PZCOUNT_MODE=STD.PAR.6711
|
||||
;PZGTOT_MODE=STD.PAR.6712
|
||||
;;PZREQ_MODE=STD.PAR.6713
|
||||
ENABLE_DYN_DATA=TRUE
|
||||
PZCOUNT_MODE=STD.PAR.8002
|
||||
PZGTOT_MODE=STD.PAR.8001
|
||||
PZREQ_MODE=STD.PAR.8003
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"setArt": {
|
||||
"name": "setArt",
|
||||
"description": "Articolo",
|
||||
"memAddr": "NONE.01",
|
||||
"memAddr": "",
|
||||
"tipoMem": "String",
|
||||
"index": 0,
|
||||
"size": 20,
|
||||
@@ -12,29 +12,29 @@
|
||||
"setArtNum": {
|
||||
"name": "setArtNum",
|
||||
"description": "# Num Articolo",
|
||||
"memAddr": "MACRO.966",
|
||||
"memAddr": "VAR.501",
|
||||
"tipoMem": "Int",
|
||||
"index": 966,
|
||||
"size": 4,
|
||||
"displOrdinal": 1
|
||||
"displOrdinal": 2
|
||||
},
|
||||
"setComm": {
|
||||
"name": "setComm",
|
||||
"description": "Commessa",
|
||||
"memAddr": "NONE.02",
|
||||
"memAddr": "",
|
||||
"tipoMem": "String",
|
||||
"index": 0,
|
||||
"size": 20,
|
||||
"displOrdinal": 2
|
||||
"displOrdinal": 3
|
||||
},
|
||||
"setCommNum": {
|
||||
"name": "setCommNum",
|
||||
"description": "# NumCommessa",
|
||||
"memAddr": "MACRO.965",
|
||||
"memAddr": "VAR.500",
|
||||
"tipoMem": "Int",
|
||||
"index": 965,
|
||||
"size": 4,
|
||||
"displOrdinal": 2
|
||||
"displOrdinal": 4
|
||||
},
|
||||
"setPzComm": {
|
||||
"name": "setPzComm",
|
||||
@@ -43,7 +43,16 @@
|
||||
"tipoMem": "Int",
|
||||
"index": 8003,
|
||||
"size": 4,
|
||||
"displOrdinal": 3
|
||||
"displOrdinal": 5
|
||||
},
|
||||
"setPzCommOdl": {
|
||||
"name": "setPzCommOdl",
|
||||
"description": "Qta ODL",
|
||||
"memAddr": "VAR.502",
|
||||
"tipoMem": "Int",
|
||||
"index": 502,
|
||||
"size": 4,
|
||||
"displOrdinal": 6
|
||||
}
|
||||
},
|
||||
"mMapRead": {
|
||||
@@ -82,10 +91,23 @@
|
||||
"period": 60,
|
||||
"factor": 1,
|
||||
"displOrdinal": 9
|
||||
},
|
||||
"DYNDATA": {
|
||||
"name": "DYNDATA",
|
||||
"description": "DynData check",
|
||||
"memAddr": "",
|
||||
"tipoMem": "String",
|
||||
"index": 0,
|
||||
"size": 4,
|
||||
"func": "POINT",
|
||||
"period": 60,
|
||||
"factor": 1,
|
||||
"displOrdinal": 20
|
||||
}
|
||||
},
|
||||
"mMapWriteLink": {
|
||||
"setArt": "setArtNum",
|
||||
"setComm": "setCommNum"
|
||||
"setComm": "setCommNum",
|
||||
"setPzComm": "setPzCommOdl"
|
||||
}
|
||||
}
|
||||
+182
-137
@@ -400,50 +400,75 @@ namespace IOB_WIN_NEXT.Iob
|
||||
// processo SOLO SE connected...
|
||||
if (connectionOk)
|
||||
{
|
||||
#if false
|
||||
if (MITSUBISHI_ref.Connected)
|
||||
{
|
||||
stopwatch.Restart();
|
||||
EgwProxy.MultiCncLib.Focas1.ODBDY2_1 answ = MITSUBISHI_ref.getAllDynData();
|
||||
if (utils.CRB("recTime"))
|
||||
{
|
||||
TimingData.addResult(cIobConf.codIOB, string.Format("PROC-DYN-DATA"), stopwatch.ElapsedTicks);
|
||||
}
|
||||
// leggo i valori Var
|
||||
ReadMitsubVars();
|
||||
|
||||
try
|
||||
// cerco tra tutte le aree write le VARS...
|
||||
foreach (var item in memMap.mMapWrite)
|
||||
{
|
||||
if(item.Value.memAddr.StartsWith("VAR"))
|
||||
{
|
||||
string actf = answ.actf.ToString();
|
||||
string acts = answ.acts.ToString();
|
||||
//string numAlarm = memName.alarm.ToString();
|
||||
// preparo i singoli valori dell'array...
|
||||
//outVal.Add("DYNDATA", string.Format("{0}#{1}#{2}", actf, acts, numAlarm));
|
||||
outVal.Add("DYNDATA", string.Format("FEED {0}#SPEED_RPM {1}", actf, acts));
|
||||
if (utils.CRB("SendFeedSpeed"))
|
||||
// certo in dict ed accodo...
|
||||
int iVar = 0;
|
||||
string sVar = item.Value.memAddr.Replace("VAR.", "");
|
||||
int.TryParse(sVar, out iVar);
|
||||
if(iVar>0)
|
||||
{
|
||||
outVal.Add("FEED", actf);
|
||||
outVal.Add("SPEED_RPM", acts);
|
||||
//outVal.Add("NUM_ALARM", numAlarm);
|
||||
}
|
||||
if (utils.CRB("SendAxPos"))
|
||||
{
|
||||
// salvo le posizioni...
|
||||
EgwProxy.MultiCncLib.Focas1.FAXIS posAx = answ.pos;
|
||||
int[] currPosAbs = posAx.absolute;
|
||||
int i = 0;
|
||||
foreach (var item in currPosAbs)
|
||||
// cerco in dizionario...
|
||||
if(DictVar.ContainsKey(iVar))
|
||||
{
|
||||
i++;
|
||||
outVal.Add(string.Format("POS_{0:00}", i), item.ToString());
|
||||
outVal.Add(item.Key, $"{DictVar[iVar]}");
|
||||
upsertKey(item.Key, $"{DictVar[iVar]}");
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgError(exc, "Errore in getDynData");
|
||||
}
|
||||
stopwatch.Stop();
|
||||
}
|
||||
#endif
|
||||
// cerco tra tutte le aree read le VARS...
|
||||
foreach (var item in memMap.mMapRead)
|
||||
{
|
||||
if (item.Value.memAddr.StartsWith("VAR"))
|
||||
{
|
||||
// certo in dict ed accodo...
|
||||
int iVar = 0;
|
||||
string sVar = item.Value.memAddr.Replace("VAR.", "");
|
||||
int.TryParse(sVar, out iVar);
|
||||
if (iVar > 0)
|
||||
{
|
||||
// cerco in dizionario...
|
||||
if (DictVar.ContainsKey(iVar))
|
||||
{
|
||||
outVal.Add(item.Key, $"{DictVar[iVar]}");
|
||||
upsertKey(item.Key, $"{DictVar[iVar]}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// aggiungo DynData... calcolato come variazione pezzi e lampade...
|
||||
if (outVal.ContainsKey("DYNDATA"))
|
||||
{
|
||||
outVal.Remove("DYNDATA");
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
// inserisco i segnali
|
||||
sb.Append("SIGN_[");
|
||||
foreach (var item in DictSign)
|
||||
{
|
||||
sb.Append($"{item.Key}:{item.Value}|");
|
||||
}
|
||||
// inserisco parametri
|
||||
sb.Append("]_PAR_[");
|
||||
foreach (var item in DictParam)
|
||||
{
|
||||
sb.Append($"{item.Key}:{item.Value}|");
|
||||
}
|
||||
// inserisco le variabili
|
||||
sb.Append("]_VAR_[");
|
||||
foreach (var item in outVal)
|
||||
{
|
||||
sb.Append($"{item.Value},");
|
||||
}
|
||||
sb.Append("]");
|
||||
outVal.Add("DYNDATA", sb.ToString());
|
||||
}
|
||||
return outVal;
|
||||
}
|
||||
@@ -687,26 +712,7 @@ namespace IOB_WIN_NEXT.Iob
|
||||
}
|
||||
|
||||
currDispData.semIn = Semaforo.SV;
|
||||
// in primis: leggo i valor in sequenza e salvo in dizionario...
|
||||
object pvRead = "bbb";
|
||||
// sezione segnali: cablata 53...
|
||||
int sec = 53;
|
||||
// Start da Y60 (Hex) --> 10000+96
|
||||
for (int i = SignStart; i < SignStart + SignSize; i++)
|
||||
{
|
||||
oEZNcAutCom.Generic_ReadData(0, sec, i, ref pvRead);
|
||||
UpsertSign(i, $"{pvRead}");
|
||||
if (verboseLog)
|
||||
{
|
||||
lgTrace($"Sign | {i} : {pvRead}");
|
||||
}
|
||||
}
|
||||
// recording tempi
|
||||
if (utils.CRB("recTime"))
|
||||
{
|
||||
TimingData.addResult(cIobConf.codIOB, $"Sign{SignSize}-R", stopwatch.ElapsedTicks);
|
||||
}
|
||||
stopwatch.Stop();
|
||||
ReadMitsubGenData();
|
||||
// salvo il solo BYTE dell'input decifrando il semaforo...
|
||||
decodeToBitmap();
|
||||
reportRawInput(ref currDispData);
|
||||
@@ -843,41 +849,6 @@ namespace IOB_WIN_NEXT.Iob
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Override salvataggio valori in memoria...
|
||||
/// </summary>
|
||||
/// <param name="tipo">tipo di DUMP</param>
|
||||
public override void saveMemDump(dumpType tipo)
|
||||
{
|
||||
#if false
|
||||
// se l'area ha una size > 0...
|
||||
if (areaD.arraySize > 0)
|
||||
{
|
||||
dump_MemArea(tipo, MITSUBISHI.MemType.D, areaD.startIdx, areaD.arraySize);
|
||||
}
|
||||
// se l'area ha una size > 0...
|
||||
if (areaR.arraySize > 0)
|
||||
{
|
||||
dump_MemArea(tipo, MITSUBISHI.MemType.R, areaR.startIdx, areaR.arraySize);
|
||||
}
|
||||
// se l'area ha una size > 0...
|
||||
if (areaX.arraySize > 0)
|
||||
{
|
||||
dump_MemArea(tipo, MITSUBISHI.MemType.X, areaX.startIdx, areaX.arraySize);
|
||||
}
|
||||
// se l'area ha una size > 0...
|
||||
if (areaY.arraySize > 0)
|
||||
{
|
||||
dump_MemArea(tipo, MITSUBISHI.MemType.Y, areaY.startIdx, areaY.arraySize);
|
||||
}
|
||||
// se l'area ha una size > 0...
|
||||
if (areaPAR.arraySize > 0)
|
||||
{
|
||||
dump_ParArea(tipo, areaPAR.startIdx, areaPAR.arraySize);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua impostazione del valore numerico ARTICOLO (specifico MITSUBISHI)
|
||||
/// </summary>
|
||||
@@ -1163,6 +1134,7 @@ namespace IOB_WIN_NEXT.Iob
|
||||
|
||||
// Open communication
|
||||
int iRet = 0;
|
||||
oEZNcAutCom = new EZNCAUTLib.DispEZNcCommunication();
|
||||
iRet = oEZNcAutCom.SetTCPIPProtocol(ipAddr, ezPort);
|
||||
iRet = oEZNcAutCom.Open3((int)sysType, 1, 10, hostName);
|
||||
parentForm.commPlcActive = false;
|
||||
@@ -1244,53 +1216,8 @@ namespace IOB_WIN_NEXT.Iob
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Internal Fields
|
||||
|
||||
/// <summary>
|
||||
/// LookUpTable di decodifica da CNC a segnali tipo bitmap MAPO
|
||||
/// </summary>
|
||||
internal Dictionary<string, string> signLUT = new Dictionary<string, string>();
|
||||
|
||||
#endregion Internal Fields
|
||||
|
||||
#region Internal Enums
|
||||
|
||||
internal enum MemType
|
||||
{
|
||||
/// <summary>
|
||||
/// Valori generico (es Y60 )x60, hex) --> 10'000 + 96 = 10'096
|
||||
/// </summary>
|
||||
GenData,
|
||||
|
||||
/// <summary>
|
||||
/// Parametri #
|
||||
/// </summary>
|
||||
Param,
|
||||
|
||||
/// <summary>
|
||||
/// Var100
|
||||
/// </summary>
|
||||
Var100,
|
||||
|
||||
/// <summary>
|
||||
/// Var500
|
||||
/// </summary>
|
||||
Var500
|
||||
}
|
||||
|
||||
internal enum PROGRAMTYPE
|
||||
{
|
||||
/// <summary>
|
||||
/// Main Program メインプログラム
|
||||
/// </summary>
|
||||
EZNC_MAINPRG = 0,
|
||||
|
||||
/// <summary>
|
||||
/// Sub Program サブプログラム
|
||||
/// </summary>
|
||||
EZNC_SUBPRG = 1,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Controllo specifico da gestire
|
||||
/// </summary>
|
||||
@@ -1381,7 +1308,9 @@ namespace IOB_WIN_NEXT.Iob
|
||||
#region Private Fields
|
||||
|
||||
private DateTime lastParRefr = DateTime.Now;
|
||||
|
||||
private DateTime lastSigRefr = DateTime.Now;
|
||||
|
||||
private DateTime lastVarRefr = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
@@ -1409,6 +1338,11 @@ namespace IOB_WIN_NEXT.Iob
|
||||
/// </summary>
|
||||
private int ParamStart = 8000;
|
||||
|
||||
/// <summary>
|
||||
/// LookUpTable di decodifica da CNC a segnali tipo bitmap MAPO
|
||||
/// </summary>
|
||||
private Dictionary<string, string> signLUT = new Dictionary<string, string>();
|
||||
|
||||
/// <summary>
|
||||
/// Num celle Signal da leggere
|
||||
/// </summary>
|
||||
@@ -1426,6 +1360,26 @@ namespace IOB_WIN_NEXT.Iob
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Enums
|
||||
|
||||
/// <summary>
|
||||
/// Tipo program
|
||||
/// </summary>
|
||||
private enum PROGRAMTYPE
|
||||
{
|
||||
/// <summary>
|
||||
/// Main Program メインプログラム
|
||||
/// </summary>
|
||||
EZNC_MAINPRG = 0,
|
||||
|
||||
/// <summary>
|
||||
/// Sub Program サブプログラム
|
||||
/// </summary>
|
||||
EZNC_SUBPRG = 1,
|
||||
}
|
||||
|
||||
#endregion Private Enums
|
||||
|
||||
#region Private Properties
|
||||
|
||||
/// <summary>
|
||||
@@ -1441,7 +1395,7 @@ namespace IOB_WIN_NEXT.Iob
|
||||
/// <summary>
|
||||
/// Dictionary contenuto memorie Var
|
||||
/// </summary>
|
||||
private Dictionary<int, string> DictVar { get; set; } = new Dictionary<int, string>();
|
||||
private Dictionary<int, double> DictVar { get; set; } = new Dictionary<int, double>();
|
||||
|
||||
private string memAddrArt
|
||||
{
|
||||
@@ -2022,6 +1976,45 @@ namespace IOB_WIN_NEXT.Iob
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Lettura dati generici (es var Y)
|
||||
/// </summary>
|
||||
private void ReadMitsubGenData()
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
int parSPeriod = samplePeriod;
|
||||
// controllo se sia passato il samplePeriod minimo...
|
||||
if (adesso.Subtract(lastSigRefr.AddMilliseconds(parSPeriod)).TotalSeconds > 0)
|
||||
{
|
||||
lastSigRefr = adesso;
|
||||
stopwatch.Restart();
|
||||
// in primis: leggo i valor in sequenza e salvo in dizionario...
|
||||
object pvRead = "bbb";
|
||||
// sezione segnali: cablata 53...
|
||||
int sec = 53;
|
||||
// Start da Y60 (Hex) --> 10000+96
|
||||
for (int i = SignStart; i < SignStart + SignSize; i++)
|
||||
{
|
||||
oEZNcAutCom.Generic_ReadData(0, sec, i, ref pvRead);
|
||||
UpsertSign(i, $"{pvRead}");
|
||||
if (verboseLog)
|
||||
{
|
||||
lgTrace($"Sign | {i} : {pvRead}");
|
||||
}
|
||||
}
|
||||
// recording tempi
|
||||
if (utils.CRB("recTime"))
|
||||
{
|
||||
TimingData.addResult(cIobConf.codIOB, $"Sign{SignSize}-R", stopwatch.ElapsedTicks);
|
||||
}
|
||||
stopwatch.Stop();
|
||||
}
|
||||
else
|
||||
{
|
||||
lgTrace($"Saltata ReadMitsubGenData x periodo minimo {parSPeriod} ms");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Lettura area parametri mitsubishi come configurato
|
||||
/// </summary>
|
||||
@@ -2056,6 +2049,41 @@ namespace IOB_WIN_NEXT.Iob
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Lettura area Var100/Var500 mitsubishi come configurato
|
||||
/// </summary>
|
||||
private void ReadMitsubVars()
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
int parSPeriod = samplePeriod * 5;
|
||||
// controllo se sia passato il samplePeriod minimo...
|
||||
if (adesso.Subtract(lastVarRefr.AddMilliseconds(parSPeriod)).TotalSeconds > 0)
|
||||
{
|
||||
lastVarRefr = adesso;
|
||||
// per prima cosa processo la lettura Variabili e li salvo in DICT
|
||||
double pData = 0;
|
||||
int pType = 0;
|
||||
stopwatch.Restart();
|
||||
for (int i = MemVarStart; i < MemVarStart + MemVarSize; i++)
|
||||
{
|
||||
oEZNcAutCom.CommonVariable_Read2(i, out pData, out pType);
|
||||
UpsertVar(i, pData);
|
||||
if (verboseLog)
|
||||
{
|
||||
lgTrace($"Var | {i} : {pData}");
|
||||
}
|
||||
}
|
||||
if (utils.CRB("recTime"))
|
||||
{
|
||||
TimingData.addResult(cIobConf.codIOB, $"R{MemVarSize}-VAR", stopwatch.ElapsedTicks);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lgTrace($"Saltata ReadMitsubVars x periodo minimo {parSPeriod} ms");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Upsert info in DICT dei Params (es 8001..8003 contatori pezzi)
|
||||
/// </summary>
|
||||
@@ -2090,6 +2118,23 @@ namespace IOB_WIN_NEXT.Iob
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Upsert info in DICT dei VAR (es Var100, Var500)
|
||||
/// </summary>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="value"></param>
|
||||
private void UpsertVar(int key, double value)
|
||||
{
|
||||
if (DictVar.ContainsKey(key))
|
||||
{
|
||||
DictVar[key] = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
DictVar.Add(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -146,9 +146,9 @@ namespace Mitsubishi
|
||||
oEZNcAutCom.CommonVariable_SetName(502, "NumPz");
|
||||
oEZNcAutCom.CommonVariable_SetName(503, "");
|
||||
|
||||
oEZNcAutCom.CommonVariable_Write2(500, 104, 1);
|
||||
oEZNcAutCom.CommonVariable_Write2(501, 204, 1);
|
||||
oEZNcAutCom.CommonVariable_Write2(502, 304, 1);
|
||||
oEZNcAutCom.CommonVariable_Write2(500, 105, 1);
|
||||
oEZNcAutCom.CommonVariable_Write2(501, 205, 1);
|
||||
oEZNcAutCom.CommonVariable_Write2(502, 305, 1);
|
||||
oEZNcAutCom.CommonVariable_Write2(503, 0, 1);
|
||||
DoLog("CommonVariable 500..503 Write Done!");
|
||||
DoLog(sep);
|
||||
|
||||
Reference in New Issue
Block a user