Cambio gestione con invio continuo, PUBBLICO e testo in JETCO...

This commit is contained in:
Samuele E. Locatelli
2017-11-22 10:40:54 +01:00
parent 05b919ad81
commit 2c0d7998f2
4 changed files with 36 additions and 22 deletions
+2 -1
View File
@@ -23,7 +23,8 @@
<add key="verySlowCount" value="1000" />
<add key="sampleMemCount" value="6000" />
<add key="waitEndCycle" value="0" />
<!--5 sec-->
<!-- watchdog -->
<add key="watchdogMaxSec" value="59" />
<!--Modalità DEMO: DemoOUT indica che NON invia davvero al server e DemoIN che simula e NON legge da PLC-->
<add key="DemoIn" value="false" />
<add key="DemoInSample" value="false" />
+1 -15
View File
@@ -161,21 +161,7 @@ namespace IOB_WIN
{
lg.Fatal(string.Format("Errore nella connessione all'adapter FANUC: {0}{1}{2}", szStatusConnection, Environment.NewLine, exc));
connectionOk = false;
/*
* rifare meglio: manca
* - gestione contatore corretto (conda signalIN)
* - gestione invio
* - refresh vari display
* - gestione LAST BYTE in modo che quando va a zero NON continua ad inviare se non una volta ogni minuto (implementare...) ora invia ogni 5 sec...
*/
// resetto raw input!!!
RawInput = new byte[6];
// invio POWEROFF... è ZERO valore IN --> accodo (valore già formattato)!
QueueIN.Enqueue(qEncodeIN);
// invio
svuotaCodaSignIN();
// update display
displayInData();
processMemoryDiscon();
// processo semafori ed invio...
lg.Info(string.Format("Segnalo Adapter NON running, pausa di {0} msec prima di ulteriori tentativi di riconnessione", utils.CRI("waitRecMSec")));
}
+31 -4
View File
@@ -50,6 +50,10 @@ namespace IOB_WIN
/// </summary>
public DateTime lastPeriodicLog;
/// <summary>
/// dataOra ultimo segnale inviato...
/// </summary>
public DateTime lastWatchDog;
/// <summary>
/// Oggetto della coda degli elementi letti (e non ancora trasmessi)
/// </summary>
public Queue<string> QueueIN = new Queue<string>();
@@ -83,10 +87,6 @@ namespace IOB_WIN
/// </summary>
public bool adpTryRestart;
/// <summary>
/// Ultimo valore watchdog rilevato
/// </summary>
public bool lastWatchDog = false;
/// <summary>
/// Verifica se sia in modalità DEMO x dati INPUT
/// </summary>
public bool DemoIn
@@ -337,6 +337,7 @@ namespace IOB_WIN
parentForm.commPlcActive = false;
adpRunning = true;
dtAvvioAdp = DateTime.Now;
lastWatchDog = dtAvvioAdp;
TimingData.resetData();
// aggiungo altri defaults
setDefaults();
@@ -1300,6 +1301,30 @@ namespace IOB_WIN
}
}
/// <summary>
/// Processa gestione memoria x invio dati QUANDO IOB è disconensso da CNC...
/// </summary>
public void processMemoryDiscon()
{
// sono disconensso... x prima cosa RESETTO A ZERO VALORI...
RawInput = new byte[6];
// controllo contatore invio "keepalive"... invio solo a scadenza
if (DateTime.Now.Subtract(lastWatchDog).TotalSeconds > utils.CRI("watchdogMaxSec"))
{
// accodo nuovo valore
// invio POWEROFF... è ZERO valore IN --> accodo (valore già formattato)!
QueueIN.Enqueue(qEncodeIN);
// aggiorno counters
nReadFilt++;
if (nReadFilt > int.MaxValue - 1) nReadFilt = 0; // per evitare buffer overflow...
counterSigIN++;
if (counterSigIN > 9999) counterSigIN = 0; // se supera 10k resetto...
// update display
displayInData();
//// invio svuotando...
//svuotaCodaSignIN();
}
}
/// <summary>
/// Esegue filtraggio dati x bit blinking!!!
/// </summary>
private void filterData()
@@ -1588,6 +1613,8 @@ namespace IOB_WIN
nSendOut++;
// riporto cosa inviato
displayOutData();
// aggiorno data ultimo watchdog...
lastWatchDog = DateTime.Now;
}
/// <summary>
/// Effettua processing contapezzi (ed eventualmente alza il bit di contapezzo...)
+2 -2
View File
@@ -463,6 +463,8 @@ namespace IOB_WIN
}
private void gather_Tick(object sender, EventArgs e)
{
// check esecuzione SendTask (VHF) COMUNQUE...
checkSendTask();
// eseguo cicli attivi SOLO se adapter è in EFFETTIVO running...
if (iobObj.adpRunning)
{
@@ -490,8 +492,6 @@ namespace IOB_WIN
checkSlowTask();
// check esecuzione AlarmSync
checkVerySlowData();
// check esecuzione SendTask (VHF)
checkSendTask();
if (utils.CRI("waitEndCycle") > 0)
{
Thread.Sleep(utils.CRI("waitEndCycle"));