Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumAggiungo ancora una considerazione a quanto detto precedentemente, se vuoi più precisione devi calcolare la velocità usando un numero maggiore di punti di campionamento, quindi o aumenti il tempo di campionamento o aumenti il numero di impulsi giro.
Se vuoi più “fluidità” nel valore, cioè avere una variazione di valore che non sia a scatti puoi utilizzare la FB Average sul valore di velocità (Vedi post). Naturalmente anche questo introduce un ritardo nella acquisizione ma media le variazioni di lettura.
Sergio Bertana
Amministratore del forumDa quanto mi dici immagino tu abbia modificato il calcolo velocità nel modo:
IF ((SysGetSysTime(TRUE)-TimeBf) < 1000000) THEN RETURN; END_IF;
TimeBf:=SysGetSysTime(TRUE); (* Time buffer (uS) *)
(* Ogni 1 secondo calcolo velocità, RPM=(Impulsi*60)/10. *)
MemoCtr:=Counter-MemoCtr; (* Memo counter *)
Speed:=(TO_REAL(MemoCtr)*60.0)/10.0; (* Velocità (RPM) *)
MemoCtr:=Counter; (* Memo counter *)Nel calcolo di Speed moltiplico per 60 per avere velocità in giri/min e divido per 10 perché la tua ruota genera 10 impulsi giro. Volendo si semplifica in Speed:=TO_REAL(MemoCtr)*6.0; Ora moltiplicando il numero di impulsi per 6 è evidente che la tua risoluzione è di 6 giri/min, basta la differenza di un impulso per avere +/- 6 giri. Per migliorare puoi:
Trasformare la linea IF (Pulse) THEN Counter:=Counter+1; END_IF; in Counter:=Counter+1; in questo modo conti sia il fronte di salita che quello di discesa ed hai 20 impulsi giro anziché 10 così moltiplicando per 3 avrai un errore di +/- 3 giri/min. Campioni ogni 2 o più secondi, l’errore si divide ad ogni multiplo di tempo, ma la lettura è più lenta.
Se utilizzi il doppio fronte e campioni ogni 3 secondi avrai Speed:=(TO_REAL(MemoCtr)*20.0)/20.0; in pratica la velocità è pari al numero di impulsi campionati, in questo modo la risoluzione è di +/- 1 giro.
Sergio Bertana
Amministratore del forumIntanto per realizzare una rete punto-punto ti consiglierei due antenne direttive (Esempio NanoStation o NanoStation Loco) piuttosto che due antenne omnidirezionali (PicoStation). Inoltre è da preferire la frequenza 5 GHz piuttosto che la 2.4 GHz proprio perché è meno utilizzata e quindi sicuramente più esente da disturbi di altre stazioni WiFi presenti nella zona.
Detto questo vediamo di capire meglio l’utility AirLink, con due antenne PicoStation posizionate in campo aperto a 3 metri di altezza ed a circa 500 metri tra di loro, come si vede dalla simulazione il campo tra le due antenne è completamente libero (AirLink comunque considera solo il livello altimetrico del terreno). Ma anche se la vista ottica è libera (Linea gialla) per la comunicazione occorre fare riferimento alla zona di Fresnel (Linea viola). Ma non mi spiego perchè anche se i testi dicono che in modulazione DSSS e OFDM è sufficiente avere il 60% della zona di Fresnel libera (Linea azzurra) per avere un buon link, AirLink mi dice che il link è ostruito.
Probabilmente i dati sono da interpretare, certo che per un link ottimo tutta la zona di Fresnel (Linea viola) deve essere libera. Ed è anche vero che il link funziona anche se vi è meno del 60% della zona di Fresnel libera ma in tal caso il throughput viene ridotto. Aggiungo che AirLink funziona bene solo se si utilizza come browser Chrome.
Gennaio 13, 2014 alle 3:31 pm in risposta a: Gestione pagine web dinamiche da parte dell’utente #37988Sergio Bertana
Amministratore del forumCorreggo quanto detto nel post precedente, come si vede in questo topic, tramite uno script java che viene da noi fornito è possibile gestire l’aggiornamento automatico delle variabili utilizzando la tecnica AJAX.
Gennaio 10, 2014 alle 5:25 pm in risposta a: Visualizzazione orologio analogico con EasyBuilder Pro #37987Sergio Bertana
Amministratore del forumAggiungo una nota su come ho gestito la lancetta delle ore perché può essere un valido spunto per meglio comprendere il funzionamento delle macro. In pratica nell’orologio a sinistra la lancetta delle ore si muove su di un grafico angolare il cui valore massimo è 12 (Span 12), mentre nell’orologio a destra la lancetta delle ore si muove su di un grafico angolare il cui valore massimo è 720 (Span 720).
Grazie ad una macro eseguita a tempo vado a calcolare il valore da passare alla lancetta delle ore, che è data dalla formula Angle=Hour*60+Minute //Valore angolo (0-720). Ecco come viene definita la macro in EasyBuilderPro (Screenshot).
Gennaio 10, 2014 alle 3:34 pm in risposta a: Blocco del termninale HMI con Pass-through attivo #37985Sergio Bertana
Amministratore del forumRettifico a correzione di quanto detto precedentemente che tramite i bits riservati è possibile eseguire un reboot del terminale (Topic).
Sergio Bertana
Amministratore del forumFacendo riferimento al Chapter 22 System Reserved Words/Bits del manuale programmazione puoi trovare due bits di sistema che gestiscono il reboot del terminale.
LB-9047 reboot HMI (set ON when LB9048 is on) (Only Write)
LB-9048 reboot-HMI protection (Read/Write)In pratica è possibile attivare il bit LB-9048 e poi attivando il bit LB-9047 si esegue il reboot del terminale. L’attivazione di questi bits può essere effettuata dal terminale stesso inserendo due oggetti Imposta bit in una delle pagine, oppure gestita dal PLC copiando in questi bit due variabili bit del PLC.
Se da remoto puoi accedere via VNC al pannello ecco che puoi attivare i bit di reboot, oppure lo puoi fare comandando da remoto il PLC. Ricordo anche la possibilità di alimentare il terminale con una uscita logica del PLC e disattivando e poi riattivando questa uscita è possibile spegnere e riaccendere il terminale.
Gennaio 10, 2014 alle 9:46 am in risposta a: Blocco del termninale HMI con Pass-through attivo #37983Sergio Bertana
Amministratore del forumAbbiamo avuto un caso simile al tuo con un cliente che lamentava un blocco nel programma Mitsubishi GX Developer, utilizzandolo per la programmazione remota con Pass-through, in pratica doveva chiudere il programma e farlo ripartire. Il problema si è risolto installando l’ultima versione del software EasyBuilder, ricompilando il progetto ed eseguendo il download dello stesso sul pannello.
Nel download seleziona l’opzione Firmware per eseguire l’aggiornamento del firmware sul pannello (Screenshot). In questo modo aggiorni sia l’agente Pass-through sul PC che il gestore dello stesso sul pannello.
Non vi è un comando per il reboot remoto, ma se hai un PLC puoi alimentare il pannello tramite una uscita del PLC in modo da poterlo spegnere e riaccendere. Questo però nel tuo caso è valido solo se hai un altro sistema per comunicare con il PLC da remoto alternativo al Pass-through.
Sergio Bertana
Amministratore del forumMi dici che stai appoggiando gli ingressi sui moduli slaves a partire da MX100.32 quindi deduco che nel programma RS485Network postato nel post precedente hai modificato l’indirizzo di lettura dai nodi slaves, nel case 0 del programma hai scritto MMdb.Address:=40016; (* Variable address *).
Siccome il comando Modbus per la lettura è il 16#04 (Andava bene anche 16#03) i due comandi sono uno l’alias dell’altro, sono letti registri a 16 bits quindi l’indirizzo Modbus deve essere l’indirizzo memoria diviso 2 (MX100.32 -> 40032, diviso 2 diventa 40016).
Ma se tu leggi registri word ed appoggi gli ingressi su bytes avrai quello che stai vedendo, ogni word è 2 bytes ed il byte sarà 16#00 se l’input non è attivo e 16#01 se l’input è attivo. Per avere quello che desideri ossia tutti gli ingressi compressi nei 16 bits della word devi usare come hai fatto nel programma master le funzioni di appoggio bits su word.
Facendo riferimento al programma master che ho postato precedentemente ecco la stampa del programma SlaveNode che è il suo complementare programma da trasferire sui nodi slave. Come vedi ho definito la struttura MODBUSDATA esattamente uguale a quella del master, poi ho allocato la variabile MdbCm di tipo MODBUSDATA ad indirizzo MX100.0 in modo da potervi accedere da Modbus.
Utilizzando le FB di appoggio bit ho appoggiato gli ingressi nella prima delle 16 WORD MdbCm.Rd[0] che sarà letta dal sistema master. Mentre la WORD scritta dal master MdbCm.Wr[0] viene appoggiata sulle uscite. Allego il programma per il download.
Sergio Bertana
Amministratore del forumTrattandosi di automazione di hotel immagino vi siano più camere da gestire ecco allora che può essere consigliabile distribuire l’automazione inserendo moduli SlimLine e/o Netsyst in ogni camera cui collegare i vari pulsanti e con cui comandare le uscite. I moduli possono essere tra di loro interconnessi in RS485 (Topic) e/o tramite rete Ethernet (Topic).
Utilizzando gli ingressi analogici oppure collegando dei sensori Modbus (Topic) puoi anche gestire la regolazione della temperatura nelle camere. Con un pannello operatore puoi gestire l’impostazione centralizzata e/o visualizzare lo stato delle camere e/o allarmi.
Sergio Bertana
Amministratore del forumI nostri sistemi PLC per la domotica consentono sicuramente di creare degli scenari, in un hotel posso immaginare…
Il cliente entra in camera utilizzando il suo badge magnetico, si attiva lo scenario ingresso, le luci della camera si accendono, la climatizzazione si stabilizza sulla temperatura ideale. Il cliente desidera guardare la TV, attiva lo scenario TV, le luci principali si spengono e si attivano le luci diffuse. E possiamo continuare con altri scenari da inventarsi a piacere.
Ecco un semplice progetto per la gestione di quello che mi hai richiesto, è possibile provarlo con il simulatore PLC (Topic). In pratica ho realizzato il blocco funzione CdoAttuatore che permette di attivare i vari attuatori (Luci, TV, Riscaldamento, ecc.) sia da selezione scenario sia da pulsante manuale. Ora combinando questi FB è possibile comandare gli attuatori per realizzare la tua automazione (Screenshot). Come si vede dalla stampa del programma, vi sono due programs, allego il programma sorgente per il download.
AttivazioneScenari: Provvede ad attivare gli scenari su pressione dei comandi di attivazione. Sono tutti pulsanti tranne lo scenario 1 che è attivato dal contatto di camera occupata, si attiva sia occupando la camera -]P[- che liberando la camera -]N[-. In questo modo quando il cliente libera la camera ci si riporta allo scenario 1.
GestioneAttuatori: Provvede a gestire i vari attuatori, come si vede ogni attuatore si può attivare da comando manuale od in base allo scenario a cui è collegato.
Sergio Bertana
Amministratore del forumIl programma PDMS (Poseidon & Damocles Monitoring System) può essere utilizzato in modo gratuito per gestire fino ad un massimo di 3 sensori mentre per un numero superiore di sensori è prevista una licenza. La licenza è sicuramente installabile in un solo PC e rimane legata alla installazione sul PC quindi non è spostabile. Per portare l’installazione su di un altro PC occorre chiedere l’autorizzazione alla HWgroup (Topic).
Per quanto riguarda l’utilizzo su macchina virtuale ti posso dire che lo stiamo utilizzando al nostro interno su macchina virtuale VMware senza alcun problema. Tutti i tests che noi facciamo li facciamo sempre utilizzando una infrastruttura basata su macchine virtuali. Sinceramente non sò cosa succede spostando l’immagine della macchina virtuale da una infrastruttura ad un’altra, può anche essere che l’immagine hardware del sistema rimanga inalterata e quindi la licenza continui ad essere valida.
Ora per la tua necesità di eseguire tests puoi utilizzare la licenza gratuita (Fino a 3 sensori), se invece vuoi testare tutti i 20 sensori puoi installare la versione e poi visto quanto detto nel topic indicato credo che non vi siano problemi ad effettuare uno spostamento di licenza. Diverso è se si vuole spostare la licenza molte volte.
Sergio Bertana
Amministratore del forumStrano messaggio di errore, vediamo alcune prove che puoi fare. La directory del progetto è mica troppo annidata dentro altre directories, prova a metterla nella root del disco, inoltre accertati che sia un percorso scrivibile. EasyBuilder è eseguito con i diritti di amministratore ?
Per escludere che sia il tuo progetto con dei problemi proverei ad utilizzare un nuovo progetto, o realizzandolo nuovo oppure utilizzando il progetto dimostrativo per il tuo pannello (Li trovi nella cartella C:Program Files (x86)EB8000project).
Nelle periferiche del PC il terminale compare (Screenshot) ?
Prova a cambiare cavo USB, accertandoti che faccia bene connessione con il connettore del pannello, alcuni cavi hanno una forma più grande e non entrano bene nella finestrella del pannello.
Sergio Bertana
Amministratore del forumL’operazione che riporta il pannello allo stato di default di fabbrica (Topic), esegue anche il reset di tutte le passwords. Per poter trasferire il programma devi reimpostare la password di download attivare le impostazioni di sistema ed accedere al TAB Security e provvedere alla impostazione di tutte le passwords con i valori desiderati (Screenshot).
Sergio Bertana
Amministratore del forumLa gestione dei break-points non è attivabile sul target reale, possono essere utilizzati solo all’interno di SimuLab, è quindi possibile eseguire il programma sul simulatore PLC con possibilità di gestire i break-points. Ecco lo screenshot del programma SineWave eseguito in SimuLab.
Come si vede attivando il modo debug è possibile rendere attivi i pulsanti di gestione dei break-points, basterà evidenziare la linea di codice dove si vuole inserire il break-point ed inserirlo e/o rimuoverlo. Quando viene eseguita la linea di codice dove è posto il break-point l’esecuzione si arresta (Download programma sorgente).
-
AutorePost