Merge branch 'release/CitizenRest09'
This commit is contained in:
@@ -698,7 +698,7 @@ namespace IOB_UT_NEXT
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Classe conf x decodifica stsatus
|
||||
/// Classe conf x decodifica status
|
||||
/// </summary>
|
||||
public class StatusItem : DynDataItem
|
||||
{
|
||||
|
||||
@@ -723,7 +723,6 @@ namespace IOB_UT_NEXT
|
||||
#endregion Public Properties
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Classe gestione configurazione parametri specifici Rest Client da BaseParamConf
|
||||
/// </summary>
|
||||
@@ -744,18 +743,6 @@ namespace IOB_UT_NEXT
|
||||
/// </summary>
|
||||
public Dictionary<string, CallStruc> CallList { get; set; } = new Dictionary<string, CallStruc>();
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Dizionario "tampone" di variabili da poter reimpiegare in chiamate successive (es token)
|
||||
/// </summary>
|
||||
public Dictionary<string, string> TempVars { get; set; } = new Dictionary<string, string>();
|
||||
|
||||
/// <summary>
|
||||
/// Elenco delle chiamate VIETATE (con nota opzionale sul motivo)
|
||||
/// </summary>
|
||||
public Dictionary<string, string> CallVeto { get; set; } = new Dictionary<string, string>();
|
||||
#endif
|
||||
|
||||
public class CallStruc
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -30,7 +30,13 @@ namespace IOB_UT_NEXT
|
||||
/// impiegato tipicamente per poter gestire scritture valori INT su CNC/PLC che non accettano stringhe (es FANUC)
|
||||
/// </summary>
|
||||
public Dictionary<string, string> mMapWriteLink { get; set; } = new Dictionary<string, string>();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Dizionario di dizionari di decodifica, chiave è nome/tipo dizionario e poi dizionario da impiegare
|
||||
/// Usato ad esempio x decodifica stati da valore intero o degli step di esecuzione di un ciclo (es Fape v2+)
|
||||
/// </summary>
|
||||
public Dictionary<string, Dictionary<string, string>> DataDecodMap { get; set; } = new Dictionary<string, Dictionary<string, string>>();
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Base del NameSpace usato per le funzionalità di translate (parametri ACT-SET), da inserire come PRE
|
||||
|
||||
@@ -51,6 +51,9 @@ BLINK_FILT=0
|
||||
;BLINK_FILT=28
|
||||
|
||||
[OPTPAR]
|
||||
;Fape vers: 1 originale, 2 = stato + ciclo, 3 = semafoto + stato + ciclo
|
||||
FAPE_VERS=2
|
||||
;FAPE_VERS=3
|
||||
PZCOUNT_MODE=STD.DB17.DBDW6
|
||||
PZ_GTOT_MADDR=STD.DB17.DBDW10
|
||||
PZ_REQ_MADDR=STD.DB16.DBDW64
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"period": 60,
|
||||
"factor": 1,
|
||||
"displOrdinal": 13
|
||||
},
|
||||
}
|
||||
},
|
||||
"mMapWrite": {
|
||||
"setArt": {
|
||||
@@ -86,5 +86,117 @@
|
||||
"factor": 1,
|
||||
"displOrdinal": 3
|
||||
}
|
||||
},
|
||||
"DataDecodMap": {
|
||||
"StatoMacchina": {
|
||||
"0": "COMUNICAZIONE ASSENTE",
|
||||
"5": "5 EMERGENZA RIPRISTINATA",
|
||||
"10": "10 MACCHINA IN POTENZA",
|
||||
"15": "15 MACCHINA PRONTA PER CICLO LOCALE",
|
||||
"20": "20 MACCHINA PRONTA PER CICLO CON ROBOT",
|
||||
"25": "25 MACCHINA IN MANUALE",
|
||||
"30": "30",
|
||||
"35": "35",
|
||||
"50": "50 CICLO RESET ATTIVO",
|
||||
"55": "55 CICLO AUTOMATICO LOCALE ATTIVO",
|
||||
"60": "60 CICLO AUTOMATICO CON ROBOT ATTIVO",
|
||||
"65": "65",
|
||||
"70": "70",
|
||||
"100": "100 MANCANZA OLIO LUBRIFICAZIONE PEZZO",
|
||||
"105": "105 MANCANZA OLIO LUBRIFICAZIONE CILINDRO",
|
||||
"110": "110 ATTESA BARRIERE LIBERE",
|
||||
"111": "111 ATTESA BLOCCAGGIO PORTELLO ANTERIORE",
|
||||
"115": "115 ATTESA RILASCIO PULSANTE RESET",
|
||||
"120": "120 ATTESA ASSE PUNZONATURA ALTO",
|
||||
"125": "125 ATTESA BLOCCAGGIO PEZZO ALTO",
|
||||
"126": "126 ATTESA BLOCCAGGIO PEZZO",
|
||||
"130": "130 ATTESA CONTRASTO PEZZO DISINSERITO",
|
||||
"135": "135 ATTESA CARRO IN POSIZIONE 1",
|
||||
"140": "140 ATTESA CHIUSURA PORTELLO ROBOT",
|
||||
"145": "145 ATTESA ROBOT FUORI INGOMBRO",
|
||||
"150": "150 ATTESA TERMINE CICLO RESET",
|
||||
"155": "155 TIMEOUT LUBRIFICAZIONE CILINDRO",
|
||||
"160": "160 LIVELLO OLIO BASSO LUBRIFICA PEZZO",
|
||||
"165": "165 LIVELLO OLIO BASSO LUBRIFICA CILINDRO",
|
||||
"170": "170 ATTESA AREA TRASLAZIONE LIBERA",
|
||||
"175": "175",
|
||||
"200": "200",
|
||||
"205": "205 ANOMALIA POSIZIONE PER CARICO ROBOT",
|
||||
"210": "210 SOVRAPRESSIONE PUNZONATURA 1",
|
||||
"215": "215 OLTRE QUOTA MASSIMA PUNZONATURA 1",
|
||||
"220": "220 SOVRAPRESSIONE PUNZONATURA 2",
|
||||
"225": "225 OLTRE QUOTA MASSIMA PUNZONATURA 1",
|
||||
"230": "230 SOVRAPRESSIONE TRASLAZIONE CARRO",
|
||||
"235": "235 TIMEOUT AVVIO DRIVE POMPA IDRAULICA",
|
||||
"240": "240 SOVRAPRESSIONE MOVIMENTO PUNZONE",
|
||||
"245": "245 ALLARME DRIVE POMPA IDRAULICA",
|
||||
"250": "250 ANOMALIA ALIMENTAZIONE PNEUMATICA",
|
||||
"255": "255 APERTURA ANOMALA PORTELLO ROBOT",
|
||||
"260": "260 APERTURA ANOMALA PORTELLO ANTERIORE",
|
||||
"265": "265 INTRUSIONE ANOMALA BARRIERE",
|
||||
"270": "270 MACCHINA NON ATTIVA",
|
||||
"275": "275 ALLARME AREA TRASLAZIONE NON LIBERA",
|
||||
"280": "280",
|
||||
"301": "301 ANOMALIA SALITA PUNZONATORE",
|
||||
"302": "302",
|
||||
"303": "303 ANOMALIA TRASLAZIONE CARRO",
|
||||
"304": "304",
|
||||
"305": "305 ANOMALIA ARRETRAMENTO CONTRASTO",
|
||||
"306": "306",
|
||||
"307": "307 ANOMALIA APERTURA STAFFAGGIO",
|
||||
"403": "403 ANOMALIA STAFFAGGIO PEZZO",
|
||||
"405": "405 ANOMALIA POSIZIONE CONTRASTO",
|
||||
"407": "407 ANOMALIA PUNZONATURA 1",
|
||||
"409": "409 ANOMALI TRASLAZIONE IN POSIZIONE 2",
|
||||
"411": "411 ANOMALIA PUNZONATURA 2",
|
||||
"413": "413 ANOMALIA ARRETRAMENTO CONTRASTO",
|
||||
"415": "415 ANOMALIA SALITA STAFFAGGIO",
|
||||
"417": "417 ANOMALI TRASLAZIONE IN POSIZIONE 1",
|
||||
"419": "419 ANOMALIA DISATTIVAZIONE DRIVE POMPA"
|
||||
},
|
||||
"StepCiclo": {
|
||||
"0": "CICLO NON ATTIVO",
|
||||
"5": "CONTROLLO TIPO CARICO",
|
||||
"10": "APERTURA PORTELLO ACCESSO AREA ROBOT",
|
||||
"15": "ATTESA SCARICO CARICO PEZZO DA ROBOT",
|
||||
"20": "ATTESA ROBOT FUORI AREA",
|
||||
"25": "ATTESA CADUTA SEGNALE ROBOT FUORI AREA",
|
||||
"30": "CHIUSURA PORTELLO ACCESSO AREA ROBOT",
|
||||
"50": "FASE 1 STAFFAGGIO PEZZO",
|
||||
"60": "FASE 2 POSIZIONAMENTO CONTRASTO PEZZO",
|
||||
"69": "FASE 3 PUNZONATURA 1 LUBRIFICAZIONE PUNZONE",
|
||||
"70": "FASE 3 PUNZONATURA 1 DISCESA RAPIDA",
|
||||
"74": "FASE 3 PUNZONATURA 1 DISCESA LENTA",
|
||||
"75": "FASE 3 PUNZONATURA 1 DISCESA LENTISSIMA",
|
||||
"79": "FASE 3 PUNZONATURA 1 ARRESTO AZIONAMENTO",
|
||||
"80": "FASE 3 PUNZONATURA 1 RITARDO PER RISALITA",
|
||||
"85": "FASE 3 PUNZONATURA 1 SALITA LENTA",
|
||||
"90": "FASE 3 PUNZONATURA 1 SALITA RAPIDA",
|
||||
"95": "FASE 3 PUNZONATURA 1 SALITA FINALE",
|
||||
"96": "FASE 3 PUNZONATURA 1 ARRESTO AZIONAMENTO",
|
||||
"105": "FASE 4 TRASLAZIONE 1 RITARDO AVVIO",
|
||||
"110": "FASE 4 TRASLAZIONE 1 MOVIMENTO SU PUNZONATURA 2",
|
||||
"114": "FASE 4 TRASLAZIONE 1 ARRESTO AZIONAMENTO",
|
||||
"115": "FASE 5 PUNZONATURA 2 RITARDO AVVIO",
|
||||
"119": "FASE 5 PUNZONATURA 2 LUBRIFICAZIONE PUNZONE",
|
||||
"120": "FASE 5 PUNZONATURA 2 DISCESA RAPIDA",
|
||||
"124": "FASE 5 PUNZONATURA 2 DISCESA LENTA",
|
||||
"125": "FASE 5 PUNZONATURA 2 DISCESA LENTISSIMA",
|
||||
"126": "FASE 5 PUNZONATURA 2 ARRESTO AZIONAMENTO",
|
||||
"130": "FASE 5 PUNZONATURA 2 RITARDO PER RISALITA",
|
||||
"135": "FASE 5 PUNZONATURA 2 SALITA LENTA",
|
||||
"140": "FASE 5 PUNZONATURA 2 SALITA RAPIDA",
|
||||
"145": "FASE 5 PUNZONATURA 2 SALITA FINALE",
|
||||
"146": "FASE 5 PUNZONATURA 2 ARRESTO AZIONAMENTO",
|
||||
"155": "INCREMENTO CONTATORI PEZZI ESEGUITI",
|
||||
"156": "FASE 6 TRASLAZIONE 2 RITARDO AVVIO",
|
||||
"160": "FASE 6 TRASLAZIONE 2 MOVIMENTO SU PUNZONATURA 1",
|
||||
"161": "FASE 6 TRASLAZIONE 2 ARRESTO AZIONAMENTO",
|
||||
"165": "FASE 7 DISINSERIMENTO CONTRASTO",
|
||||
"170": "FASE 8 DESTAFFAGGIO PEZZO",
|
||||
"180": "DISATTIVAZIONE AZIONAMENTO",
|
||||
"190": "VERIFICA RIAVVIO CICLO CON CARICO DA ROBOT",
|
||||
"300": "CICLO TERMINATO"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,18 @@
|
||||
"factor": 1,
|
||||
"displOrdinal": 6
|
||||
},
|
||||
"qtyReq": {
|
||||
"name": "qtyReq",
|
||||
"description": "Qty Richiesta",
|
||||
"memAddr": "",
|
||||
"tipoMem": "Int",
|
||||
"index": 0,
|
||||
"size": 4,
|
||||
"func": "POINT",
|
||||
"period": 60,
|
||||
"factor": 1,
|
||||
"displOrdinal": 4
|
||||
},
|
||||
"gLamp": {
|
||||
"name": "gLamp",
|
||||
"description": "Lamp G",
|
||||
@@ -122,18 +134,6 @@
|
||||
}
|
||||
},
|
||||
"mMapWrite": {
|
||||
"qtyReq": {
|
||||
"name": "qtyReq",
|
||||
"description": "Qty Richiesta",
|
||||
"memAddr": "",
|
||||
"tipoMem": "Int",
|
||||
"index": 0,
|
||||
"size": 4,
|
||||
"func": "POINT",
|
||||
"period": 60,
|
||||
"factor": 1,
|
||||
"displOrdinal": 4
|
||||
},
|
||||
"setArt": {
|
||||
"name": "setArt",
|
||||
"description": "Articolo",
|
||||
@@ -268,10 +268,10 @@
|
||||
"OutVarName": "",
|
||||
"ListPrevCall": [ "GetToken" ]
|
||||
},
|
||||
"SetNeededQuantity": {
|
||||
"SetNeededQuantity_disab": {
|
||||
"Method": "Post",
|
||||
"Url": "SetNeededQuantity",
|
||||
"Name": "Invio Qty Richiesta",
|
||||
"Name": "Invio Qty Richiesta (disabilitato)",
|
||||
"OutVarName": "",
|
||||
"ListPrevCall": [ "GetToken" ]
|
||||
},
|
||||
|
||||
@@ -3,20 +3,50 @@
|
||||
NAME=master
|
||||
|
||||
[SERVER]
|
||||
MPIP=192.168.1.64
|
||||
|
||||
; Server Steamware
|
||||
MPIP=10.74.82.218
|
||||
MPURL=/MP/IO
|
||||
CMDREBO=/IOB/sendRebootGateway?GWIP=
|
||||
CMDIOB2CALL=/IOB/getIob2call?GWIP=
|
||||
|
||||
;Client Install
|
||||
CLI_INST=SteamWareSim
|
||||
|
||||
[IOB]
|
||||
;--- TEST SIMULAZIONE
|
||||
STARTLIST=SIMUL_00
|
||||
;--- TEST sul campo
|
||||
; SIMULAZIONE verso server ufficio
|
||||
;STARTLIST=SIMUL_01,SIMUL_02,SIMUL_03,SIMUL_04
|
||||
;STARTLIST=PIZ09
|
||||
;STARTLIST=VL25
|
||||
;STARTLIST=SIMUL_03
|
||||
;STARTLIST=GIACO_CEDAX_001
|
||||
;STARTLIST=GIACO_ICOEL_002
|
||||
;STARTLIST=GIACO_CENTERFRIGO
|
||||
;STARTLIST=GIACO_NWSE
|
||||
;STARTLIST=SIM_DP_01
|
||||
;STARTLIST=WPS
|
||||
;STARTLIST=FINASSI_HELPI_01
|
||||
;STARTLIST=FINASSI_OMP_01
|
||||
;STARTLIST=BAGLIETTO_CIMOLAI_01
|
||||
;STARTLIST=GIACO_SAIM_003
|
||||
;STARTLIST=PIZ09
|
||||
;STARTLIST=IMI_RIMOR_SAB_01
|
||||
;STARTLIST=IMI_RIMOR_SAB_02
|
||||
;STARTLIST=IMI_RIMOR_VER_01
|
||||
;STARTLIST=IMI_RIMOR_VER_02
|
||||
;STARTLIST=IMI_PAMA_392
|
||||
;STARTLIST=Tend_FIMAT_01
|
||||
;STARTLIST=PIZ10
|
||||
;STARTLIST=IMI_SOITAAB_Z2342_02
|
||||
;STARTLIST=IMI_GOMBA
|
||||
;STARTLIST=PING
|
||||
;STARTLIST=SIMUL_02
|
||||
;STARTLIST=SIM_DP_01
|
||||
|
||||
MAXCNC=10
|
||||
;NB: mettere copy always ai file di conf x fare test...
|
||||
;STARTLIST=FTP_SONATEST
|
||||
;STARTLIST=SIMUL_01
|
||||
STARTLIST=L020
|
||||
|
||||
; Tags manuali
|
||||
[TAGS]
|
||||
Customer=LVF
|
||||
HostOS=WIN
|
||||
HostName=Server-MAPO-IOB
|
||||
HostAddr=192.168.1.208
|
||||
MAXCNC=10
|
||||
@@ -87,13 +87,20 @@ namespace IOB_WIN_NEXT.IobRest
|
||||
// faccio chiamata POST x invio
|
||||
var rawResp = ExecuteCallPost(GetUrlResource("SetJobData"), jobPayload);
|
||||
bool.TryParse(rawResp, out answ);
|
||||
// se andata invio anche la qty richiesta...
|
||||
// se andatae se ho la chaive x invio abilitata invio anche la qty richiesta...
|
||||
if (answ)
|
||||
{
|
||||
jobPayload = JsonConvert.SerializeObject(qtyReq);
|
||||
var rawRespQty = ExecuteCallPost(GetUrlResource("SetNeededQuantity"), jobPayload);
|
||||
string urlNeedQty = GetUrlResource("SetNeededQuantity");
|
||||
if (string.IsNullOrEmpty(urlNeedQty))
|
||||
{
|
||||
lgInfo($"Set NeedQty NON abilitato, non invio");
|
||||
}
|
||||
else
|
||||
{
|
||||
jobPayload = JsonConvert.SerializeObject(qtyReq);
|
||||
var rawRespQty = ExecuteCallPost(GetUrlResource("SetNeededQuantity"), jobPayload);
|
||||
}
|
||||
}
|
||||
//answ = true;
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
|
||||
@@ -38,12 +38,12 @@ namespace IOB_WIN_NEXT.IobSiemens
|
||||
|
||||
#endregion Public Constructors
|
||||
|
||||
#region Public Enums
|
||||
#region private enums
|
||||
|
||||
/// <summary>
|
||||
/// Posizione sequenza ciclo standard punzonatrice
|
||||
/// </summary>
|
||||
public enum posizioneSequenza
|
||||
private enum posSeq2018
|
||||
{
|
||||
CICLO_AUTOMATICO_FERMO = 0,
|
||||
CONTROLLO_MODO_OPERATIVO = 5,
|
||||
@@ -73,7 +73,7 @@ namespace IOB_WIN_NEXT.IobSiemens
|
||||
/// <summary>
|
||||
/// Enum degli stati macchina (B0)
|
||||
/// </summary>
|
||||
public enum statoMacchina
|
||||
private enum stMacc2018
|
||||
{
|
||||
COMUNICAZIONE_ASSENTE = 0,
|
||||
EMERGENZA_INSERITA = 1,
|
||||
@@ -93,7 +93,7 @@ namespace IOB_WIN_NEXT.IobSiemens
|
||||
LIBERO = 15
|
||||
}
|
||||
|
||||
#endregion Public Enums
|
||||
#endregion private enums
|
||||
|
||||
#region Public Methods
|
||||
|
||||
@@ -106,8 +106,8 @@ namespace IOB_WIN_NEXT.IobSiemens
|
||||
Dictionary<string, string> outVal = new Dictionary<string, string>();
|
||||
ushort valStatus = S7.Net.Types.Word.FromByteArray(RawInput.Skip(0).Take(2).ToArray());
|
||||
ushort valPosit = S7.Net.Types.Word.FromByteArray(RawInput.Skip(2).Take(2).ToArray());
|
||||
outVal.Add("CURR_STATO", ((statoMacchina)valStatus).ToString());
|
||||
outVal.Add("CURR_POSIT", ((posizioneSequenza)valPosit).ToString());
|
||||
outVal.Add("CURR_STATO", ((stMacc2018)valStatus).ToString());
|
||||
outVal.Add("CURR_POSIT", ((posSeq2018)valPosit).ToString());
|
||||
return outVal;
|
||||
}
|
||||
|
||||
@@ -132,8 +132,8 @@ namespace IOB_WIN_NEXT.IobSiemens
|
||||
// FAPE: leggo i primi 2 WORD x decodifica stato e posizione...
|
||||
ushort valStatus = S7.Net.Types.Word.FromByteArray(RawInput.Skip(0).Take(2).ToArray());
|
||||
ushort valPosit = S7.Net.Types.Word.FromByteArray(RawInput.Skip(2).Take(2).ToArray());
|
||||
statoMacchina _stMacch = ((statoMacchina)valStatus);
|
||||
posizioneSequenza _posSeq = ((posizioneSequenza)valPosit);
|
||||
stMacc2018 _stMacch = ((stMacc2018)valStatus);
|
||||
posSeq2018 _posSeq = ((posSeq2018)valPosit);
|
||||
|
||||
/* -----------------------------------------------------
|
||||
* bitmap MAPO
|
||||
@@ -150,41 +150,41 @@ namespace IOB_WIN_NEXT.IobSiemens
|
||||
// controllo stato macchina x impostare altri bit...
|
||||
switch (_stMacch)
|
||||
{
|
||||
case statoMacchina.EMERGENZA_INSERITA:
|
||||
case stMacc2018.EMERGENZA_INSERITA:
|
||||
B_input += (1 << 5);
|
||||
break;
|
||||
|
||||
case statoMacchina.AVARIA_ARIA:
|
||||
case statoMacchina.AVARIA_PRESSIONE_OLIO:
|
||||
case statoMacchina.AVARIA_LIVELLO_OLIO:
|
||||
case statoMacchina.AVARIA_TEMPERATURA_OLIO:
|
||||
case stMacc2018.AVARIA_ARIA:
|
||||
case stMacc2018.AVARIA_PRESSIONE_OLIO:
|
||||
case stMacc2018.AVARIA_LIVELLO_OLIO:
|
||||
case stMacc2018.AVARIA_TEMPERATURA_OLIO:
|
||||
B_input += (1 << 3);
|
||||
B_input += (1 << 6);
|
||||
break;
|
||||
|
||||
case statoMacchina.AVARIA_MOTORE_POMPA_IDRAULICA:
|
||||
case statoMacchina.AVARIA_MOTORE_RAFFREDDO_IDRAULICA:
|
||||
case statoMacchina.COMUNICAZIONE_ASSENTE:
|
||||
case statoMacchina.AVARIA_SINCRONISMO_PORTE:
|
||||
case statoMacchina.AVARIA_LIBERA:
|
||||
case statoMacchina.ATTIVAZIONE_IN_CORSO:
|
||||
case stMacc2018.AVARIA_MOTORE_POMPA_IDRAULICA:
|
||||
case stMacc2018.AVARIA_MOTORE_RAFFREDDO_IDRAULICA:
|
||||
case stMacc2018.COMUNICAZIONE_ASSENTE:
|
||||
case stMacc2018.AVARIA_SINCRONISMO_PORTE:
|
||||
case stMacc2018.AVARIA_LIBERA:
|
||||
case stMacc2018.ATTIVAZIONE_IN_CORSO:
|
||||
B_input += (1 << 3);
|
||||
break;
|
||||
|
||||
case statoMacchina.MODO_MANUALE_ATTREZZAGGIO:
|
||||
case stMacc2018.MODO_MANUALE_ATTREZZAGGIO:
|
||||
B_input += (1 << 4);
|
||||
break;
|
||||
|
||||
case statoMacchina.CICLO_IN_CORSO:
|
||||
case stMacc2018.CICLO_IN_CORSO:
|
||||
B_input += (1 << 1);
|
||||
break;
|
||||
|
||||
case statoMacchina.MODO_AUTOMATICO_LOCALE:
|
||||
case statoMacchina.MODO_AUTOMATICO_ROBOT:
|
||||
case stMacc2018.MODO_AUTOMATICO_LOCALE:
|
||||
case stMacc2018.MODO_AUTOMATICO_ROBOT:
|
||||
B_input += (1 << 7);
|
||||
break;
|
||||
|
||||
case statoMacchina.LIBERO:
|
||||
case stMacc2018.LIBERO:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -10,23 +10,41 @@ namespace IOB_WIN_NEXT.IobSiemens
|
||||
* Controlli SIEMENS FAPE (es punzonatrice Tecnomeccanica di LVF)
|
||||
* - basasto su SIEMENS
|
||||
* - S7 vers 1200
|
||||
* - V2.0 (2024): abilitata 1 area in lettura DB17 ed 1 in scrittura DB16
|
||||
* - x poter funzionare --> protezione: meccanismi di collegamento / consenti put/get
|
||||
* - lettura/scrittura aree di 2 DB cablate
|
||||
*
|
||||
* Versione 2024
|
||||
* DB17 | Read seguenti byte:
|
||||
* - B0, WORD, Stato Macchina Generale
|
||||
* - B2, WORD, Posizione sequenza contatore
|
||||
* - B4, WORD, contatore cicli eseguiti per lubrifica
|
||||
* - B6, DWORD, contapezzi azzerabile da operatore
|
||||
* - B10, DWORD, contapezzi ASSOLUTO
|
||||
*
|
||||
* DB16 | Write seguenti byte:
|
||||
* - B0, STRING(30), Commessa
|
||||
* - B32, STRING(30), Articolo
|
||||
* - B64, DWORD, NumPezzi
|
||||
* - B68, BOOL, Reset Contapezzi Parziale(autoresetta)
|
||||
*
|
||||
* V1.0 (2018):
|
||||
* - abilitata 1 area in lettura DB15
|
||||
* DB15 | Read seguenti byte:
|
||||
* - B0, WORD, Stato Macchina Generale
|
||||
* - B2, WORD, Posizione sequenza contatore
|
||||
* - B4, WORD, contatore cicli eseguiti per lubrifica
|
||||
* - B40, DWORD, contapezzi azzerabile da operatore
|
||||
* - B44, DWORD, contapezzi ASSOLUTO
|
||||
* - abilitata 1 area in scrittura DB16 (NON la usano)
|
||||
*
|
||||
* V2.0 (2024):
|
||||
* - abilitata 1 area in lettura DB17
|
||||
* DB17 v.2 | Read seguenti byte:
|
||||
* - B0, WORD, Stato Macchina Generale
|
||||
* - B2, WORD, Posizione sequenza contatore
|
||||
* - B4, WORD, contatore cicli eseguiti per lubrifica
|
||||
* - B6, DWORD, contapezzi azzerabile da operatore
|
||||
* - B10, DWORD, contapezzi ASSOLUTO
|
||||
*
|
||||
* DB17 v.3 | Read seguenti byte:
|
||||
* - B0, WORD, Semaforo Macchina
|
||||
* - B2, WORD, Stato Macchina Generale
|
||||
* - B4, WORD, Posizione sequenza contatore
|
||||
* - B6, WORD, contatore cicli eseguiti per lubrifica
|
||||
* - B8, DWORD, contapezzi azzerabile da operatore
|
||||
* - B12, DWORD, contapezzi ASSOLUTO
|
||||
*
|
||||
* - abilitata 1 area in scrittura DB16
|
||||
* DB16 | Write seguenti byte:
|
||||
* - B0, STRING(30), Commessa
|
||||
* - B32, STRING(30), Articolo
|
||||
* - B64, DWORD, NumPezzi
|
||||
* - B68, BOOL, Reset Contapezzi Parziale(autoresetta)
|
||||
*
|
||||
* -------------------------------------------------------------------------------- */
|
||||
|
||||
@@ -39,126 +57,45 @@ namespace IOB_WIN_NEXT.IobSiemens
|
||||
/// <param name="adpConf"></param>
|
||||
public SiemensFapeV2(AdapterForm caller, IobConfiguration IOBConf) : base(caller, IOBConf)
|
||||
{
|
||||
lgInfo("NEW IOB SIEMENS versione FAPE v2.0 - 2024+");
|
||||
string sFapeVers = getOptPar("FAPE_VERS");
|
||||
if (!string.IsNullOrEmpty(sFapeVers))
|
||||
{
|
||||
int.TryParse(sFapeVers, out FapeVers);
|
||||
}
|
||||
int yRef = FapeVers == 1 ? 2018 : 2024;
|
||||
// inizializzo dizionari decodifica da conf json...
|
||||
// cerco nella conf specifica...
|
||||
if (memMap.DataDecodMap != null && memMap.DataDecodMap.Count > 0)
|
||||
{
|
||||
if (memMap.DataDecodMap.ContainsKey("StatoMacchina"))
|
||||
{
|
||||
DictState = memMap.DataDecodMap["StatoMacchina"];
|
||||
}
|
||||
else
|
||||
{
|
||||
lgError("Errore: missing DataDecodMap.StatoMacchina dict");
|
||||
}
|
||||
if (memMap.DataDecodMap.ContainsKey("StepCiclo"))
|
||||
{
|
||||
DictStCic = memMap.DataDecodMap["StepCiclo"];
|
||||
}
|
||||
else
|
||||
{
|
||||
lgError("Errore: missing DataDecodMap.StepCiclo dict");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lgInfo("Attenzione. non ho trovcato dizionari di decodifica (DataDecodMap) nel file json!");
|
||||
}
|
||||
lgInfo($"NEW IOB SIEMENS versione FAPE v.{FapeVers} - {yRef}");
|
||||
}
|
||||
|
||||
private Dictionary<string, string> DictState = new Dictionary<string, string>();
|
||||
private Dictionary<string, string> DictStCic = new Dictionary<string, string>();
|
||||
|
||||
#endregion Public Constructors
|
||||
|
||||
#region Public Enums
|
||||
|
||||
/// <summary>
|
||||
/// Posizione sequenza ciclo standard punzonatrice
|
||||
/// </summary>
|
||||
public enum posizioneSequenza
|
||||
{
|
||||
CICLO_NON_ATTIVO_0 = 0,
|
||||
CONTROLLO_TIPO_CARICO_5 = 5,
|
||||
APERTURA_PORTELLO_ACCESSO_AREA_ROBOT_10 = 10,
|
||||
ATTESA_SCARICO_CARICO_PEZZO_DA_ROBOT_15 = 15,
|
||||
ATTESA_ROBOT_FUORI_AREA_20 = 20,
|
||||
ATTESA_CADUTA_SEGNALE_ROBOT_FUORI_AREA_25 = 25,
|
||||
CHIUSURA_PORTELLO_ACCESSO_AREA_ROBOT_30 = 30,
|
||||
FASE_1_STAFFAGGIO_PEZZO_50 = 50,
|
||||
FASE_2_POSIZIONAMENTO_CONTRASTO_PEZZO_60 = 60,
|
||||
FASE_3_PUNZONATURA_1_LUBRIFICAZIONE_PUNZONE_69 = 69,
|
||||
FASE_3_PUNZONATURA_1_DISCESA_RAPIDA_70 = 70,
|
||||
FASE_3_PUNZONATURA_1_DISCESA_LENTA_74 = 74,
|
||||
FASE_3_PUNZONATURA_1_DISCESA_LENTISSIMA_75 = 75,
|
||||
FASE_3_PUNZONATURA_1_ARRESTO_AZIONAMENTO_79 = 79,
|
||||
FASE_3_PUNZONATURA_1_RITARDO_PER_RISALITA_80 = 80,
|
||||
FASE_3_PUNZONATURA_1_SALITA_LENTA_85 = 85,
|
||||
FASE_3_PUNZONATURA_1_SALITA_RAPIDA_90 = 90,
|
||||
FASE_3_PUNZONATURA_1_SALITA_FINALE_95 = 95,
|
||||
FASE_3_PUNZONATURA_1_ARRESTO_AZIONAMENTO_96 = 96,
|
||||
FASE_4_TRASLAZIONE_1_RITARDO_AVVIO_105 = 105,
|
||||
FASE_4_TRASLAZIONE_1_MOVIMENTO_SU_PUNZONATURA_2_110 = 110,
|
||||
FASE_4_TRASLAZIONE_1_ARRESTO_AZIONAMENTO_114 = 114,
|
||||
FASE_5_PUNZONATURA_2_RITARDO_AVVIO_115 = 115,
|
||||
FASE_5_PUNZONATURA_2_LUBRIFICAZIONE_PUNZONE_119 = 119,
|
||||
FASE_5_PUNZONATURA_2_DISCESA_RAPIDA_120 = 120,
|
||||
FASE_5_PUNZONATURA_2_DISCESA_LENTA_124 = 124,
|
||||
FASE_5_PUNZONATURA_2_DISCESA_LENTISSIMA_125 = 125,
|
||||
FASE_5_PUNZONATURA_2_ARRESTO_AZIONAMENTO_126 = 126,
|
||||
FASE_5_PUNZONATURA_2_RITARDO_PER_RISALITA_130 = 130,
|
||||
FASE_5_PUNZONATURA_2_SALITA_LENTA_135 = 135,
|
||||
FASE_5_PUNZONATURA_2_SALITA_RAPIDA_140 = 140,
|
||||
FASE_5_PUNZONATURA_2_SALITA_FINALE_145 = 145,
|
||||
FASE_5_PUNZONATURA_2_ARRESTO_AZIONAMENTO_146 = 146,
|
||||
INCREMENTO_CONTATORI_PEZZI_ESEGUITI_155 = 155,
|
||||
FASE_6_TRASLAZIONE_2_RITARDO_AVVIO_156 = 156,
|
||||
FASE_6_TRASLAZIONE_2_MOVIMENTO_SU_PUNZONATURA_1_160 = 160,
|
||||
FASE_6_TRASLAZIONE_2_ARRESTO_AZIONAMENTO_161 = 161,
|
||||
FASE_7_DISINSERIMENTO_CONTRASTO_165 = 165,
|
||||
FASE_8_DESTAFFAGGIO_PEZZO_170 = 170,
|
||||
DISATTIVAZIONE_AZIONAMENTO_180 = 180,
|
||||
VERIFICA_RIAVVIO_CICLO_CON_CARICO_DA_ROBOT_190 = 190,
|
||||
CICLO_TERMINATO_300 = 300
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enum degli stati macchina (B0)
|
||||
/// </summary>
|
||||
public enum statoMacchina
|
||||
{
|
||||
COMUNICAZIONE_ASSENTE = 0,
|
||||
EMERGENZA_RIPRISTINATA = 5,
|
||||
MACCHINA_IN_POTENZA = 10,
|
||||
MACCHINA_PRONTA_PER_CICLO_LOCALE = 15,
|
||||
MACCHINA_PRONTA_PER_CICLO_CON_ROBOT = 20,
|
||||
MACCHINA_IN_MANUALE = 25,
|
||||
CICLO_RESET_ATTIVO = 50,
|
||||
CICLO_AUTOMATICO_LOCALE_ATTIVO = 55,
|
||||
CICLO_AUTOMATICO_CON_ROBOT_ATTIVO = 60,
|
||||
MANCANZA_OLIO_LUBRIFICAZIONE_PEZZO = 100,
|
||||
MANCANZA_OLIO_LUBRIFICAZIONE_CILINDRO = 105,
|
||||
ATTESA_BARRIERE_LIBERE = 110,
|
||||
ATTESA_BLOCCAGGIO_PORTELLO_ANTERIORE = 111,
|
||||
ATTESA_RILASCIO_PULSANTE_RESET = 115,
|
||||
ATTESA_ASSE_PUNZONATURA_ALTO = 120,
|
||||
ATTESA_BLOCCAGGIO_PEZZO_ALTO = 125,
|
||||
ATTESA_BLOCCAGGIO_PEZZO = 126,
|
||||
ATTESA_CONTRASTO_PEZZO_DISINSERITO = 130,
|
||||
ATTESA_CARRO_IN_POSIZIONE_1 = 135,
|
||||
ATTESA_CHIUSURA_PORTELLO_ROBOT = 140,
|
||||
ATTESA_ROBOT_FUORI_INGOMBRO = 145,
|
||||
ATTESA_TERMINE_CICLO_RESET = 150,
|
||||
TIMEOUT_LUBRIFICAZIONE_CILINDRO = 155,
|
||||
LIVELLO_OLIO_BASSO_LUBRIFICA_PEZZO = 160,
|
||||
LIVELLO_OLIO_BASSO_LUBRIFICA_CILINDRO = 165,
|
||||
ATTESA_AREA_TRASLAZIONE_LIBERA = 170,
|
||||
ANOMALIA_POSIZIONE_PER_CARICO_ROBOT = 205,
|
||||
SOVRAPRESSIONE_PUNZONATURA_1 = 210,
|
||||
OLTRE_QUOTA_MASSIMA_PUNZONATURA_1 = 215,
|
||||
SOVRAPRESSIONE_PUNZONATURA_2 = 220,
|
||||
OLTRE_QUOTA_MASSIMA_PUNZONATURA_1_225 = 225,
|
||||
SOVRAPRESSIONE_TRASLAZIONE_CARRO = 230,
|
||||
TIMEOUT_AVVIO_DRIVE_POMPA_IDRAULICA = 235,
|
||||
SOVRAPRESSIONE_MOVIMENTO_PUNZONE = 240,
|
||||
ALLARME_DRIVE_POMPA_IDRAULICA = 245,
|
||||
ANOMALIA_ALIMENTAZIONE_PNEUMATICA = 250,
|
||||
APERTURA_ANOMALA_PORTELLO_ROBOT = 255,
|
||||
APERTURA_ANOMALA_PORTELLO_ANTERIORE = 260,
|
||||
INTRUSIONE_ANOMALA_BARRIERE = 265,
|
||||
MACCHINA_NON_ATTIVA = 270,
|
||||
ALLARME_AREA_TRASLAZIONE_NON_LIBERA = 275,
|
||||
ANOMALIA_SALITA_PUNZONATORE = 301,
|
||||
ANOMALIA_TRASLAZIONE_CARRO = 303,
|
||||
ANOMALIA_ARRETRAMENTO_CONTRASTO = 305,
|
||||
ANOMALIA_APERTURA_STAFFAGGIO = 307,
|
||||
ANOMALIA_STAFFAGGIO_PEZZO = 403,
|
||||
ANOMALIA_POSIZIONE_CONTRASTO = 405,
|
||||
ANOMALIA_PUNZONATURA_1 = 407,
|
||||
ANOMALI_TRASLAZIONE_IN_POSIZIONE_2 = 409,
|
||||
ANOMALIA_PUNZONATURA_2 = 411,
|
||||
ANOMALIA_ARRETRAMENTO_CONTRASTO_413 = 413,
|
||||
ANOMALIA_SALITA_STAFFAGGIO = 415,
|
||||
ANOMALI_TRASLAZIONE_IN_POSIZIONE_1 = 417,
|
||||
ANOMALIA_DISATTIVAZIONE_DRIVE_POMPA = 419,
|
||||
|
||||
}
|
||||
|
||||
#endregion Public Enums
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
@@ -168,10 +105,55 @@ namespace IOB_WIN_NEXT.IobSiemens
|
||||
public override Dictionary<string, string> getDynData()
|
||||
{
|
||||
Dictionary<string, string> outVal = new Dictionary<string, string>();
|
||||
ushort valStatus = S7.Net.Types.Word.FromByteArray(RawInput.Skip(0).Take(2).ToArray());
|
||||
ushort valPosit = S7.Net.Types.Word.FromByteArray(RawInput.Skip(2).Take(2).ToArray());
|
||||
outVal.Add("CURR_STATO", ((statoMacchina)valStatus).ToString());
|
||||
outVal.Add("CURR_POSIT", ((posizioneSequenza)valPosit).ToString());
|
||||
ExtractFapeData();
|
||||
string curState = "";
|
||||
string curPosiz = "";
|
||||
// rivedere da conf estesa decodifica?!?
|
||||
if (FapeVers == 3)
|
||||
{
|
||||
// stato
|
||||
curState = $"{valState}";
|
||||
// cerco nella conf specifica...
|
||||
if (DictState.Count > 0 && DictState.ContainsKey($"{valState}"))
|
||||
{
|
||||
curState = DictState[$"{valState}"];
|
||||
}
|
||||
|
||||
// posizione
|
||||
curPosiz = $"{valStepCic}";
|
||||
// cerco nella conf specifica...
|
||||
if (DictStCic.Count > 0 && DictStCic.ContainsKey($"{valStepCic}"))
|
||||
{
|
||||
curPosiz = DictStCic[$"{valStepCic}"];
|
||||
}
|
||||
}
|
||||
// se non trovato ancora..
|
||||
if (string.IsNullOrEmpty(curState) || string.IsNullOrEmpty(curPosiz))
|
||||
{
|
||||
if (FapeVers == 1)
|
||||
{
|
||||
curState = ((stMacc2018)valState).ToString();
|
||||
curPosiz = ((posSeq2018)valStepCic).ToString();
|
||||
//outVal.Add("CURR_STATO", ((stMacc2018)valState).ToString());
|
||||
//outVal.Add("CURR_POSIT", ((posSeq2018)valStepCic).ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
curState = ((stMacc2024)valState).ToString();
|
||||
curPosiz = ((posSeq2024)valStepCic).ToString();
|
||||
//outVal.Add("CURR_STATO", ((stMacc2024)valState).ToString());
|
||||
//outVal.Add("CURR_POSIT", ((posSeq2024)valStepCic).ToString());
|
||||
}
|
||||
}
|
||||
// salvo valori!
|
||||
outVal.Add("CURR_STATO", curState);
|
||||
outVal.Add("CURR_POSIT", curPosiz);
|
||||
|
||||
// aggiungo main state se disponibile...
|
||||
if (FapeVers > 2)
|
||||
{
|
||||
outVal.Add("CURR_LAMP", ((mainState)valMain).ToString());
|
||||
}
|
||||
return outVal;
|
||||
}
|
||||
|
||||
@@ -184,6 +166,25 @@ namespace IOB_WIN_NEXT.IobSiemens
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
/// <summary>
|
||||
/// Stato impianto codificato come valore mainState
|
||||
/// </summary>
|
||||
protected ushort valMain = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Posizione corrente ciclo
|
||||
/// </summary>
|
||||
protected ushort valStepCic = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Stato Dettagliato macchina
|
||||
/// </summary>
|
||||
protected ushort valState = 0;
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
/// <summary>
|
||||
@@ -194,10 +195,12 @@ namespace IOB_WIN_NEXT.IobSiemens
|
||||
// init a zero...
|
||||
B_input = 0;
|
||||
// FAPE: leggo i primi 2 WORD x decodifica stato e posizione...
|
||||
ushort valStatus = S7.Net.Types.Word.FromByteArray(RawInput.Skip(0).Take(2).ToArray());
|
||||
ushort valPosit = S7.Net.Types.Word.FromByteArray(RawInput.Skip(2).Take(2).ToArray());
|
||||
statoMacchina _stMacch = ((statoMacchina)valStatus);
|
||||
posizioneSequenza _posSeq = ((posizioneSequenza)valPosit);
|
||||
ExtractFapeData();
|
||||
#if false
|
||||
mainState _stMain = ((mainState)valMain);
|
||||
stMacc2024 _stMacch = ((stMacc2024)valStatus);
|
||||
posSeq2024 _posSeq = ((posSeq2024)valPosit);
|
||||
#endif
|
||||
|
||||
/* -----------------------------------------------------
|
||||
* bitmap MAPO - 47
|
||||
@@ -211,72 +214,22 @@ namespace IOB_WIN_NEXT.IobSiemens
|
||||
|
||||
// bit 0 (poweron) imposto a 1 SE connected...
|
||||
B_input = currPLC.IsConnected ? 1 : 0;
|
||||
// controllo stato macchina x impostare altri bit...
|
||||
switch (_stMacch)
|
||||
|
||||
// verifico versione decodifica da + recente a + vecchia...
|
||||
if (FapeVers == 3)
|
||||
{
|
||||
// emergenza? poweroff?
|
||||
case statoMacchina.COMUNICAZIONE_ASSENTE:
|
||||
case statoMacchina.EMERGENZA_RIPRISTINATA:
|
||||
B_input += (1 << 5);
|
||||
break;
|
||||
|
||||
case statoMacchina.MACCHINA_NON_ATTIVA:
|
||||
case statoMacchina.MACCHINA_IN_POTENZA:
|
||||
case statoMacchina.MACCHINA_PRONTA_PER_CICLO_LOCALE:
|
||||
case statoMacchina.MACCHINA_PRONTA_PER_CICLO_CON_ROBOT:
|
||||
case statoMacchina.CICLO_RESET_ATTIVO:
|
||||
B_input = 1;
|
||||
break;
|
||||
|
||||
case statoMacchina.CICLO_AUTOMATICO_LOCALE_ATTIVO:
|
||||
case statoMacchina.CICLO_AUTOMATICO_CON_ROBOT_ATTIVO:
|
||||
B_input += (1 << 1);
|
||||
break;
|
||||
|
||||
case statoMacchina.ALLARME_DRIVE_POMPA_IDRAULICA:
|
||||
case statoMacchina.ALLARME_AREA_TRASLAZIONE_NON_LIBERA:
|
||||
case statoMacchina.ANOMALIA_ALIMENTAZIONE_PNEUMATICA:
|
||||
case statoMacchina.ANOMALIA_APERTURA_STAFFAGGIO:
|
||||
case statoMacchina.ANOMALIA_ARRETRAMENTO_CONTRASTO:
|
||||
case statoMacchina.ANOMALIA_ARRETRAMENTO_CONTRASTO_413:
|
||||
case statoMacchina.ANOMALIA_DISATTIVAZIONE_DRIVE_POMPA:
|
||||
case statoMacchina.ANOMALIA_POSIZIONE_CONTRASTO:
|
||||
case statoMacchina.ANOMALIA_POSIZIONE_PER_CARICO_ROBOT:
|
||||
case statoMacchina.ANOMALIA_PUNZONATURA_1:
|
||||
case statoMacchina.ANOMALIA_PUNZONATURA_2:
|
||||
case statoMacchina.ANOMALIA_SALITA_PUNZONATORE:
|
||||
case statoMacchina.ANOMALIA_SALITA_STAFFAGGIO:
|
||||
case statoMacchina.ANOMALIA_STAFFAGGIO_PEZZO:
|
||||
case statoMacchina.LIVELLO_OLIO_BASSO_LUBRIFICA_CILINDRO:
|
||||
case statoMacchina.LIVELLO_OLIO_BASSO_LUBRIFICA_PEZZO:
|
||||
case statoMacchina.SOVRAPRESSIONE_MOVIMENTO_PUNZONE:
|
||||
case statoMacchina.SOVRAPRESSIONE_PUNZONATURA_1:
|
||||
case statoMacchina.SOVRAPRESSIONE_PUNZONATURA_2:
|
||||
case statoMacchina.SOVRAPRESSIONE_TRASLAZIONE_CARRO:
|
||||
case statoMacchina.TIMEOUT_AVVIO_DRIVE_POMPA_IDRAULICA:
|
||||
case statoMacchina.TIMEOUT_LUBRIFICAZIONE_CILINDRO:
|
||||
B_input += (1 << 3);
|
||||
break;
|
||||
|
||||
case statoMacchina.MACCHINA_IN_MANUALE:
|
||||
case statoMacchina.ATTESA_AREA_TRASLAZIONE_LIBERA:
|
||||
case statoMacchina.ATTESA_ASSE_PUNZONATURA_ALTO:
|
||||
case statoMacchina.ATTESA_BARRIERE_LIBERE:
|
||||
case statoMacchina.ATTESA_BLOCCAGGIO_PEZZO:
|
||||
case statoMacchina.ATTESA_BLOCCAGGIO_PEZZO_ALTO:
|
||||
case statoMacchina.ATTESA_BLOCCAGGIO_PORTELLO_ANTERIORE:
|
||||
case statoMacchina.ATTESA_CARRO_IN_POSIZIONE_1:
|
||||
case statoMacchina.ATTESA_CHIUSURA_PORTELLO_ROBOT:
|
||||
case statoMacchina.ATTESA_CONTRASTO_PEZZO_DISINSERITO:
|
||||
case statoMacchina.ATTESA_RILASCIO_PULSANTE_RESET:
|
||||
case statoMacchina.ATTESA_ROBOT_FUORI_INGOMBRO:
|
||||
case statoMacchina.ATTESA_TERMINE_CICLO_RESET:
|
||||
B_input += (1 << 4);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
DecodeV3(ref B_input);
|
||||
}
|
||||
else if (FapeVers == 2)
|
||||
{
|
||||
DecodeV2(ref B_input);
|
||||
}
|
||||
else
|
||||
{
|
||||
DecodeV1(ref B_input);
|
||||
}
|
||||
|
||||
// FIXME ToDo !!! verificare da qui...
|
||||
|
||||
// procedo SOLO SE è enabled IOB
|
||||
if (IobOnline)
|
||||
@@ -376,6 +329,352 @@ namespace IOB_WIN_NEXT.IobSiemens
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esegue decodificada stati in modalità "classica" (2018)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected void DecodeV1(ref int B_input)
|
||||
{
|
||||
// Guardo SOLO stato macchina V1 (2018)
|
||||
stMacc2018 _stMacch = ((stMacc2018)valState);
|
||||
// controllo stato macchina x impostare altri bit...
|
||||
switch (_stMacch)
|
||||
{
|
||||
case stMacc2018.EMERGENZA_INSERITA:
|
||||
B_input += (1 << 5);
|
||||
break;
|
||||
|
||||
case stMacc2018.AVARIA_ARIA:
|
||||
case stMacc2018.AVARIA_PRESSIONE_OLIO:
|
||||
case stMacc2018.AVARIA_LIVELLO_OLIO:
|
||||
case stMacc2018.AVARIA_TEMPERATURA_OLIO:
|
||||
B_input += (1 << 3);
|
||||
B_input += (1 << 6);
|
||||
break;
|
||||
|
||||
case stMacc2018.AVARIA_MOTORE_POMPA_IDRAULICA:
|
||||
case stMacc2018.AVARIA_MOTORE_RAFFREDDO_IDRAULICA:
|
||||
case stMacc2018.COMUNICAZIONE_ASSENTE:
|
||||
case stMacc2018.AVARIA_SINCRONISMO_PORTE:
|
||||
case stMacc2018.AVARIA_LIBERA:
|
||||
case stMacc2018.ATTIVAZIONE_IN_CORSO:
|
||||
B_input += (1 << 3);
|
||||
break;
|
||||
|
||||
case stMacc2018.MODO_MANUALE_ATTREZZAGGIO:
|
||||
B_input += (1 << 4);
|
||||
break;
|
||||
|
||||
case stMacc2018.CICLO_IN_CORSO:
|
||||
B_input += (1 << 1);
|
||||
break;
|
||||
|
||||
case stMacc2018.MODO_AUTOMATICO_LOCALE:
|
||||
case stMacc2018.MODO_AUTOMATICO_ROBOT:
|
||||
B_input += (1 << 7);
|
||||
break;
|
||||
|
||||
case stMacc2018.LIBERO:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esegue decodificada stati in modalità "v2" (2024) con 2 valori senza macro stato
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected void DecodeV2(ref int B_input)
|
||||
{
|
||||
// Guardo SOLO stato macchina V2 (2024)
|
||||
stMacc2024 _stMacch = ((stMacc2024)valState);
|
||||
|
||||
// controllo stato macchina x impostare altri bit... semplificato sui VALORI interi val status...
|
||||
|
||||
// da 00..50 -> pronta NON faccio nulla
|
||||
if (valState < 51)
|
||||
{
|
||||
//B_input = 1;
|
||||
}
|
||||
// lavora
|
||||
else if (valState >= 51 && valState < 100)
|
||||
{
|
||||
B_input += (1 << 1);
|
||||
}
|
||||
// manuale/warning
|
||||
else if (valState >= 100 && valState < 199)
|
||||
{
|
||||
B_input += (1 << 3);
|
||||
}
|
||||
// allarme
|
||||
else if (valState >= 200)
|
||||
{
|
||||
B_input += (1 << 4);
|
||||
}
|
||||
|
||||
// controllo COMUNQUE emergenza premuta...
|
||||
if (_stMacch == stMacc2024.MACCHINA_NON_ATTIVA)
|
||||
{
|
||||
B_input += (1 << 5);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esegue decodificada stati in modalità "v3" (2024) con 3 valori guardando SOLO macro stato
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected void DecodeV3(ref int B_input)
|
||||
{
|
||||
// Guardo SOLO stato MAIN V3 (2024)
|
||||
mainState _stMain = ((mainState)valMain);
|
||||
stMacc2024 _stMacch = ((stMacc2024)valState);
|
||||
|
||||
// controllo stato macchina x impostare altri bit...
|
||||
switch (_stMain)
|
||||
{
|
||||
case mainState.Pronta:
|
||||
break;
|
||||
|
||||
case mainState.Lavora:
|
||||
B_input += (1 << 1);
|
||||
break;
|
||||
|
||||
case mainState.Warning:
|
||||
B_input += (1 << 4);
|
||||
break;
|
||||
|
||||
case mainState.Allarme:
|
||||
B_input += (1 << 3);
|
||||
break;
|
||||
|
||||
case mainState.ND:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// controllo COMUNQUE emergenza premuta...
|
||||
if (_stMacch == stMacc2024.MACCHINA_NON_ATTIVA)
|
||||
{
|
||||
B_input += (1 << 5);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private int FapeVers = 1;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Enums
|
||||
|
||||
/// <summary>
|
||||
/// Enum degli stati macchina (B0)
|
||||
/// </summary>
|
||||
private enum mainState
|
||||
{
|
||||
ND = 0,
|
||||
Pronta = 1,
|
||||
Lavora = 2,
|
||||
Warning = 3,
|
||||
Allarme = 4
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Posizione sequenza ciclo standard punzonatrice
|
||||
/// </summary>
|
||||
private enum posSeq2018
|
||||
{
|
||||
CICLO_AUTOMATICO_FERMO = 0,
|
||||
CONTROLLO_MODO_OPERATIVO = 5,
|
||||
MODO_ATTIVO_CON_ROBOT = 8,
|
||||
SBLOCCAGGIO_PEZZO = 10,
|
||||
APERTURA_PORTELLO_ROBOT = 11,
|
||||
CONSENSO_ACCESSO_AL_ROBOT = 12,
|
||||
CARICO_ROBOT_IN_CORSO = 14,
|
||||
CARICO_ROBOT_CONCLUSO = 16,
|
||||
CHIUSURA_PORTELLO_ROBOT = 18,
|
||||
VERIFICA_POSIZIONE_CARRI = 20,
|
||||
BLOCCAGGIO_PEZZO = 22,
|
||||
ATTESA_CARRO_A_DESTRA = 24,
|
||||
DISCESA_RAPIDO_BROCCIATURA = 25,
|
||||
CICLO_DI_BROCCIATURA = 26,
|
||||
RITORNO_BROCCIATRICE = 28,
|
||||
COMANDO_CARRO_A_SINISTRA = 30,
|
||||
CICLO_DI_ALESATURA = 32,
|
||||
RITORNO_CARRO_ALESATURA = 34,
|
||||
COMANDO_CARRO_A_DESTRA = 36,
|
||||
INCREMENTO_CONTAPEZZI = 38,
|
||||
CONTROLLO_TIME_OUT_CICLO = 40,
|
||||
RILANCIO_CICLO_F42 = 42,
|
||||
ATTESA_FINE_CICLO = 45
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Posizione sequenza ciclo standard punzonatrice
|
||||
/// </summary>
|
||||
private enum posSeq2024
|
||||
{
|
||||
CICLO_NON_ATTIVO_0 = 0,
|
||||
CONTROLLO_TIPO_CARICO_5 = 5,
|
||||
APERTURA_PORTELLO_ACCESSO_AREA_ROBOT_10 = 10,
|
||||
ATTESA_SCARICO_CARICO_PEZZO_DA_ROBOT_15 = 15,
|
||||
ATTESA_ROBOT_FUORI_AREA_20 = 20,
|
||||
ATTESA_CADUTA_SEGNALE_ROBOT_FUORI_AREA_25 = 25,
|
||||
CHIUSURA_PORTELLO_ACCESSO_AREA_ROBOT_30 = 30,
|
||||
FASE_1_STAFFAGGIO_PEZZO_50 = 50,
|
||||
FASE_2_POSIZIONAMENTO_CONTRASTO_PEZZO_60 = 60,
|
||||
FASE_3_PUNZONATURA_1_LUBRIFICAZIONE_PUNZONE_69 = 69,
|
||||
FASE_3_PUNZONATURA_1_DISCESA_RAPIDA_70 = 70,
|
||||
FASE_3_PUNZONATURA_1_DISCESA_LENTA_74 = 74,
|
||||
FASE_3_PUNZONATURA_1_DISCESA_LENTISSIMA_75 = 75,
|
||||
FASE_3_PUNZONATURA_1_ARRESTO_AZIONAMENTO_79 = 79,
|
||||
FASE_3_PUNZONATURA_1_RITARDO_PER_RISALITA_80 = 80,
|
||||
FASE_3_PUNZONATURA_1_SALITA_LENTA_85 = 85,
|
||||
FASE_3_PUNZONATURA_1_SALITA_RAPIDA_90 = 90,
|
||||
FASE_3_PUNZONATURA_1_SALITA_FINALE_95 = 95,
|
||||
FASE_3_PUNZONATURA_1_ARRESTO_AZIONAMENTO_96 = 96,
|
||||
FASE_4_TRASLAZIONE_1_RITARDO_AVVIO_105 = 105,
|
||||
FASE_4_TRASLAZIONE_1_MOVIMENTO_SU_PUNZONATURA_2_110 = 110,
|
||||
FASE_4_TRASLAZIONE_1_ARRESTO_AZIONAMENTO_114 = 114,
|
||||
FASE_5_PUNZONATURA_2_RITARDO_AVVIO_115 = 115,
|
||||
FASE_5_PUNZONATURA_2_LUBRIFICAZIONE_PUNZONE_119 = 119,
|
||||
FASE_5_PUNZONATURA_2_DISCESA_RAPIDA_120 = 120,
|
||||
FASE_5_PUNZONATURA_2_DISCESA_LENTA_124 = 124,
|
||||
FASE_5_PUNZONATURA_2_DISCESA_LENTISSIMA_125 = 125,
|
||||
FASE_5_PUNZONATURA_2_ARRESTO_AZIONAMENTO_126 = 126,
|
||||
FASE_5_PUNZONATURA_2_RITARDO_PER_RISALITA_130 = 130,
|
||||
FASE_5_PUNZONATURA_2_SALITA_LENTA_135 = 135,
|
||||
FASE_5_PUNZONATURA_2_SALITA_RAPIDA_140 = 140,
|
||||
FASE_5_PUNZONATURA_2_SALITA_FINALE_145 = 145,
|
||||
FASE_5_PUNZONATURA_2_ARRESTO_AZIONAMENTO_146 = 146,
|
||||
INCREMENTO_CONTATORI_PEZZI_ESEGUITI_155 = 155,
|
||||
FASE_6_TRASLAZIONE_2_RITARDO_AVVIO_156 = 156,
|
||||
FASE_6_TRASLAZIONE_2_MOVIMENTO_SU_PUNZONATURA_1_160 = 160,
|
||||
FASE_6_TRASLAZIONE_2_ARRESTO_AZIONAMENTO_161 = 161,
|
||||
FASE_7_DISINSERIMENTO_CONTRASTO_165 = 165,
|
||||
FASE_8_DESTAFFAGGIO_PEZZO_170 = 170,
|
||||
DISATTIVAZIONE_AZIONAMENTO_180 = 180,
|
||||
VERIFICA_RIAVVIO_CICLO_CON_CARICO_DA_ROBOT_190 = 190,
|
||||
CICLO_TERMINATO_300 = 300
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enum degli stati macchina (B0)
|
||||
/// </summary>
|
||||
private enum stMacc2018
|
||||
{
|
||||
COMUNICAZIONE_ASSENTE = 0,
|
||||
EMERGENZA_INSERITA = 1,
|
||||
AVARIA_ARIA = 2,
|
||||
AVARIA_PRESSIONE_OLIO = 3,
|
||||
AVARIA_LIVELLO_OLIO = 4,
|
||||
AVARIA_TEMPERATURA_OLIO = 5,
|
||||
AVARIA_MOTORE_POMPA_IDRAULICA = 6,
|
||||
AVARIA_MOTORE_RAFFREDDO_IDRAULICA = 7,
|
||||
AVARIA_SINCRONISMO_PORTE = 8,
|
||||
AVARIA_LIBERA = 9,
|
||||
ATTIVAZIONE_IN_CORSO = 10,
|
||||
MODO_MANUALE_ATTREZZAGGIO = 11,
|
||||
MODO_AUTOMATICO_LOCALE = 12,
|
||||
MODO_AUTOMATICO_ROBOT = 13,
|
||||
CICLO_IN_CORSO = 14,
|
||||
LIBERO = 15
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enum degli stati macchina (B0)
|
||||
/// </summary>
|
||||
private enum stMacc2024
|
||||
{
|
||||
COMUNICAZIONE_ASSENTE = 0,
|
||||
EMERGENZA_RIPRISTINATA = 5,
|
||||
MACCHINA_IN_POTENZA = 10,
|
||||
MACCHINA_PRONTA_PER_CICLO_LOCALE = 15,
|
||||
MACCHINA_PRONTA_PER_CICLO_CON_ROBOT = 20,
|
||||
MACCHINA_IN_MANUALE = 25,
|
||||
CICLO_RESET_ATTIVO = 50,
|
||||
CICLO_AUTOMATICO_LOCALE_ATTIVO = 55,
|
||||
CICLO_AUTOMATICO_CON_ROBOT_ATTIVO = 60,
|
||||
MANCANZA_OLIO_LUBRIFICAZIONE_PEZZO = 100,
|
||||
MANCANZA_OLIO_LUBRIFICAZIONE_CILINDRO = 105,
|
||||
ATTESA_BARRIERE_LIBERE = 110,
|
||||
ATTESA_BLOCCAGGIO_PORTELLO_ANTERIORE = 111,
|
||||
ATTESA_RILASCIO_PULSANTE_RESET = 115,
|
||||
ATTESA_ASSE_PUNZONATURA_ALTO = 120,
|
||||
ATTESA_BLOCCAGGIO_PEZZO_ALTO = 125,
|
||||
ATTESA_BLOCCAGGIO_PEZZO = 126,
|
||||
ATTESA_CONTRASTO_PEZZO_DISINSERITO = 130,
|
||||
ATTESA_CARRO_IN_POSIZIONE_1 = 135,
|
||||
ATTESA_CHIUSURA_PORTELLO_ROBOT = 140,
|
||||
ATTESA_ROBOT_FUORI_INGOMBRO = 145,
|
||||
ATTESA_TERMINE_CICLO_RESET = 150,
|
||||
TIMEOUT_LUBRIFICAZIONE_CILINDRO = 155,
|
||||
LIVELLO_OLIO_BASSO_LUBRIFICA_PEZZO = 160,
|
||||
LIVELLO_OLIO_BASSO_LUBRIFICA_CILINDRO = 165,
|
||||
ATTESA_AREA_TRASLAZIONE_LIBERA = 170,
|
||||
ANOMALIA_POSIZIONE_PER_CARICO_ROBOT = 205,
|
||||
SOVRAPRESSIONE_PUNZONATURA_1 = 210,
|
||||
OLTRE_QUOTA_MASSIMA_PUNZONATURA_1 = 215,
|
||||
SOVRAPRESSIONE_PUNZONATURA_2 = 220,
|
||||
OLTRE_QUOTA_MASSIMA_PUNZONATURA_2 = 225,
|
||||
SOVRAPRESSIONE_TRASLAZIONE_CARRO = 230,
|
||||
TIMEOUT_AVVIO_DRIVE_POMPA_IDRAULICA = 235,
|
||||
SOVRAPRESSIONE_MOVIMENTO_PUNZONE = 240,
|
||||
ALLARME_DRIVE_POMPA_IDRAULICA = 245,
|
||||
ANOMALIA_ALIMENTAZIONE_PNEUMATICA = 250,
|
||||
APERTURA_ANOMALA_PORTELLO_ROBOT = 255,
|
||||
APERTURA_ANOMALA_PORTELLO_ANTERIORE = 260,
|
||||
INTRUSIONE_ANOMALA_BARRIERE = 265,
|
||||
MACCHINA_NON_ATTIVA = 270,
|
||||
ALLARME_AREA_TRASLAZIONE_NON_LIBERA = 275,
|
||||
ANOMALIA_SALITA_PUNZONATORE = 301,
|
||||
ANOMALIA_TRASLAZIONE_CARRO = 303,
|
||||
ANOMALIA_ARRETRAMENTO_CONTRASTO_305 = 305,
|
||||
ANOMALIA_APERTURA_STAFFAGGIO = 307,
|
||||
ANOMALIA_STAFFAGGIO_PEZZO = 403,
|
||||
ANOMALIA_POSIZIONE_CONTRASTO = 405,
|
||||
ANOMALIA_PUNZONATURA_1 = 407,
|
||||
ANOMALI_TRASLAZIONE_IN_POSIZIONE_2 = 409,
|
||||
ANOMALIA_PUNZONATURA_2 = 411,
|
||||
ANOMALIA_ARRETRAMENTO_CONTRASTO_413 = 413,
|
||||
ANOMALIA_SALITA_STAFFAGGIO = 415,
|
||||
ANOMALI_TRASLAZIONE_IN_POSIZIONE_1 = 417,
|
||||
ANOMALIA_DISATTIVAZIONE_DRIVE_POMPA = 419,
|
||||
}
|
||||
|
||||
#endregion Private Enums
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// recupero dati specifici FAPE da struttura array memoria e versione adapter
|
||||
/// </summary>
|
||||
private void ExtractFapeData()
|
||||
{
|
||||
/* ----------------------------------------------
|
||||
* NOTA:
|
||||
* - v1 (2018): 2 blocchi memoria, area DB15
|
||||
* - v2 (2024): 2 blocchi area DB17
|
||||
* - v3 (2024): 3 blocchi area DB17 (MacroStato, stato, ciclo)
|
||||
*
|
||||
* decodifico secondo conf
|
||||
* ----------------------------------------------*/
|
||||
// leggo secondo versione adapter 1/2/3...
|
||||
if (FapeVers <= 2)
|
||||
{
|
||||
valState = S7.Net.Types.Word.FromByteArray(RawInput.Skip(0).Take(2).ToArray());
|
||||
valStepCic = S7.Net.Types.Word.FromByteArray(RawInput.Skip(2).Take(2).ToArray());
|
||||
}
|
||||
else
|
||||
{
|
||||
valMain = S7.Net.Types.Word.FromByteArray(RawInput.Skip(0).Take(2).ToArray());
|
||||
valState = S7.Net.Types.Word.FromByteArray(RawInput.Skip(2).Take(2).ToArray());
|
||||
valStepCic = S7.Net.Types.Word.FromByteArray(RawInput.Skip(4).Take(2).ToArray());
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user