Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Ottobre 9, 2014 alle 6:10 am in risposta a: Lettura velocità vento con soglie programmabili da pagina web #38456
Sergio Bertana
Amministratore del forumIl mio esempio voleva spiegare come realizzare l’intera applicazione, con particolare focus sulla visualizzazione web. Per questo ho scelto di acquisire un anemometro con uscita analogica. Ma certo moltissimi anemometri hanno una uscita digitale in tal caso è anche molto più economico gestirne l’acquisizione in quanto basta utilizzare un comune ingresso digitale.
Tra tutti i programmi sviluppati ho trovato quello che avevo suggerito ad un cliente per la lettura proprio di un anemometro digitale ecco la stampa. Questo programma è eseguito nella task Fast (Ogni 1 Ms) quindi può acquisisre una frequenza massima di 400Hz.
Come vedi vengono conteggiati gli impulsi sull’ingresso digitale e ogni 30 secondi viene eseguito il calcolo della velocità del vento. Il valore letto viene poi mediato con la FB Average. La scelta del tempo di campionatura di 30 S era basata sul numero di impulsi generati dall’anemometro. Più veloce è la campionatura minore è la risoluzione in lettura della velocità.
Sergio Bertana
Amministratore del forumIntanto inizio con il suggerirti di utilizzare il nuovo FB ModbusMaster (Estratto manuale) di gestione protocollo modbus master, vediamo le nuove ed interessanti caratteristiche di questa FB.
Può essere gestita in sequenza, puoi cioè definire piu istanze della FB definendo per ogni istanza il comando modbus da eseguire, basta connettere il Done della FB precedente sull’Enable di quella successiva per effettuare tutti i comandi in sequenza (Vedi questo topic). Certo che se i registri da leggere e/o scrivere sono molti e non consecutivi, piuttosto che istanziare in LD o FBD molte FB conviene gestire una sola FB da ST gestendo una macchina a stati con l’operando CASE (Trovi un esempio di programma in questo topic).
Se poni a TRUE l’ingresso SpyOn ti sarà possibile attivare la procedura di spionaggio da connessione Telnet e vedere i dati trasmessi e ricevuti su porta seriale, questo ti permetterà di capire cosa risponde l’azionamento. Può essere che fai un indirizzamento fuori range, chiedi troppi registri contemporaneamente o utilizzi un comando modbus non supportato.
Ricordati che il protocollo Modbus ha un offset di 1 quindi se nella FB definisci indirizzo di lettura 100 sul pacchetto Modbus verrà inviato l’indirizzo 99 in quanto il dispositivo Slave dovrebbe in accordo allo standard sommare 1. In molti dispositivi Slave questo non viene fatto, quindi in tal caso devi sommare 1 tu all’indirizzo richiesto.
Ottobre 8, 2014 alle 8:24 am in risposta a: Come utilizzare la SDCard per il salvataggio di file di log #38453Sergio Bertana
Amministratore del forumSe esegui il download del programma che trovi in uno dei posts di questo topic hai già una buona base di partenza. Comunque partendo dal programma del post precedente ho preparato un programma che realizza quello che necessiti, ecco la stampa del programma WriteLog.
Come vedi ho definito un array di stringhe per la definizione dei giorni setimanali, così è possibile scrivere un file CSV per ogni giorno (Il file avrà il nome del giorno). Al cambio di giorno viene cancellato il file dello stesso giorno (Si tratta del file della settimana prima) e viene creato un nuovo file del giorno con i nuovi dati. In questo modo hai una settimana di tempo per eseguire il download in FTP dei file di log memorizzati.
Il record di log l’ho creato nel formato 2014-10-08 09:25:58;02.8;02.8;02.8;02.8, come vedi il campo data/ora è seguito dai 4 valori analogici. Nel mio esempio eseguo una sola acquisizione analogica per tutti e 4 i canali ma lascio a te il compito di effettuare le 4 acquisizioni e riportarle nel record.
Credo che con questo esempio insiene all’esempio precedente hai tutte le indicazioni per realizzare il tuo DataLogger. Ecco il programma sorgente.
Ottobre 8, 2014 alle 6:02 am in risposta a: Lettura velocità vento con soglie programmabili da pagina web #38449Sergio Bertana
Amministratore del forumIn questo topic dove si trovano altre informazioni su come gestire l’aggiornamento automatico delle pagine HTM con la tecnica AJAX.
Ottobre 7, 2014 alle 4:13 pm in risposta a: Lettura velocità vento con soglie programmabili da pagina web #38446Sergio Bertana
Amministratore del forumHo analizzato le tue necessità ed ipotizzando l’utilizzo di 2 anemometri analogici puoi utilizzare sia un modulo SlimLine compact che un modulo NetLogIII. Ho pensato di realizzare due pagine web una per la visualizzazione dei valori istantanei ed una per l’impostazione dei parametri. Nella pagina di visualizzazione valori ho utilizzato la tecnica AJAX per permettere la visualizzazione dei valori in tempo reale senza dover ricaricare la pagina nel browser.
Intanto vediamo il programma di cui allego la stampa, il cuore è nel program “WindSpeed” dove vengono acquisiti i valori analogici dei due anemometri e tramite la funzione ValueScale sono convertiti direttamente in velocità. Il FB Average esegue una media sul valore acquisito per stabilizzare la lettura. Di seguito viene eseguita la logica di gestione allarme in uscita (Per semplicità ho trattato un solo canale).
Come si può notare dalla allocazione delle variabili globali tutte le variabili che devono esserre visualizzate e/o impostate da pagina web sono allocate nella DB 100. Quelle di impostazione a partire dall’indirizzo 2048 per averle tamponate (RETAIN).
Come si vede dallo screenshot nella pagina Home sono visualizzate le due velocità del vento e lo stato di funzionamento del sistema, lo sfondo della visualizzazione cambia colore in base all’errore ed allo stato attuale. Per capire il funziomento della visualizzazione occorre visualizzare il codice sorgente della pagina di cui riporto la stampa.
Nella linea 28 vi è la funzione javascript di gestione AJAX (Non và toccata), nella linea 27 si arriva ad ogni esecuzione richiesta AJAX con i valori da visualizzare e si provvede a visualizzarli ed a gestire lo sfondo. La richiesta AJAX si attiva alla riga 64 dove sul caricamento pagina si esegue una chiamata AJAX per visualizzare immediatamente i valori e s i attiva uan richiesta ad intervallo per avere la visualizzazione automatica.
La richiesta AJAX non fà altro che caricare la pagina Values.htm che contiene indicazione degli indirizzi e della formattazione dei dati da visualizzare, ritornandoli in una stringa separati dal carattere “|”.
In testa alla pagina ho inserito 3 pulsanti fatti con dei div per navigare tra le varie pagine. Ma più utile delle spiegazioni allego il progetto completo con tutti i sorgenti sia del programma SlimLIne che delle pagine web (Download).
Sergio Bertana
Amministratore del forumIl termometro STE viene fornito in due versioni, una con alimentatore estrno (Compreso nella fornitura) ed una con alimentazione PoE. Entrambi i modelli presentano comunque il connettore Jack Ø3.5 x 1.35/10 [mm] di alimentazione.
Per alimentare il dispositivo dal connettore jack di alimentazione occorre fornire una tensione di 5Vdc 250mA con il polo positivo al centro ed il negativo sull’esterno.
Per la configurazione, attaccandolo direttamente ad un PC (Che come ovvio non fornisce alimentazione PoE) occorre provvedere anche alla alimentazione tramite l’alimentatore esterno. Rimando a questo topic per informazioni sulla configurazione.
Sergio Bertana
Amministratore del forumHo effettuato una prova diretta utilizzando un sensore Sensit NS700 connesso all’ingresso analogico di un modulo CPU compact ed ho realizzato un semplice programma in FBD (Vedi foto).
Come si vede dal programma in FBD con la FB SysGetAnaInp eseguo l’acquisizione del valore di tensione in uscita al sensore (Utilizzo uno degli ingressi del modulo CPU quindi Address 255 Channel 0). Il sensore NS700 ha una uscita in tensione da 0÷10 Volt con un range di temperatura da -30÷60 gradi centigradi, quindi utilizzando la funzione ValueScale eseguo la scalatura diretta dal valore di tensione al valore di temperatura.
Siccome il sensore esegue l’uscita del valore istanteneo di temperatura e l’acquisizione è molto veloce ho utilizzato la FB LRamp per integrare il valore di temperatura acquisito in modo da avere un valore stabile e poterne apprezzare la lettura anche dei numeri decimali. Il coefficente di rampa di 0.1 Step/Sec fà sì che ipotizzando uno step di temperatura da 0 a 25 gradi il valore in uscita impiegherà 250 secondi per raggiungere il valore. Occorre tenere presente che la temperatura è un fenomeno lento quindi è accettata una integrazione molto lenta (Allego programma sorgente).
Ottobre 6, 2014 alle 8:47 am in risposta a: Nuovo simulatore PLC, simulare programma PLC su PC #38440Sergio Bertana
Amministratore del forumIl problema è legato alla versione del sistema target definito il simulatore è disponibile solo a partire dai targtes versione 11.0. Quindi dal menù Project con la voce Select target imposta il modello di CPU che vuoi simulare scegliendo un XTarget 11.0 (Screenshot).
Ottobre 6, 2014 alle 7:20 am in risposta a: Acquisizione valori energia da gruppo di misura Enel #38438Sergio Bertana
Amministratore del forumAggiungo al post precedente che grazie al supporto nativo al protocollo Modbus sarà possibile appoggiare i vari contatori su locazioni di memoria che poi possono essere acquisite tramite Modbus.
Grazie alla possibilità di creare pagine web dinamiche (Topic) è anche possibile visualiozzare i contatori all’interno di pagine web consultabili con un comune browser.
Abbinando al modulo CPU un pannello operatore è possibile visualizzare i valori in tempo reale.
In questo topic trovate un programma di Calcolo potenza istantanea da lettura impulsi contatore.
In questo topic trovate un programma per il Computo e visualizzazione potenza istantanea da contatore.Ottobre 4, 2014 alle 9:51 am in risposta a: Acquisizione valori energia da gruppo di misura Enel #38437Sergio Bertana
Amministratore del forumIl gruppo di misura multiorario ha la possibilità di avere in opzione una scheda di uscita segnali (Di cui riporto lo schema di connessione). Come si vede vi sono 6 uscite logiche di cui 2 sono per la potenza (Attiva/Reattiva) prelevata e 2 sono per di cui 2 sono per la potenza (Attiva/Reattiva) immessa.
Ora utilizzando un nostro modulo SlimLine compact, è possibile collegare le uscite del gruppo di misura direttamente agli ingressi del modulo ed eseguire il conteggio degli impulsi. Come si vede dallo schema di principio del gruppo di misura le uscite sono indicate come dei realy ma avendo indicato la polarità sembrerebbe (Come d’altronde più ovvio) che siano delle uscite elettroniche Open Collector.
Il modulo SlimLine può acquisire ingressi sia con comando positivo che con comando di negativo, quindi verrà portato il negativo al Contatto comune del misuratore, mentre il positivo andrà portato al comune degli ingressi del modulo SlimLine. Dalle caratteristiche del gruppo di misura si rileva che può operare con tensioni fino a 27 Vdc e che la durata minima dell’impulso in uscita è maggiore o uguale a 30 mS.
Con questi tempi non vi sono problemi a leggere gli impulsi anche con un banale programma ladder eseguito nella task Slow (Eseguita ogni 10 mS), nel programma ladder si potrà utilizzare semplici rami con l’operatore ADD come nell’esempio.
Ottobre 3, 2014 alle 6:32 am in risposta a: Progetto di startup per connessione HMI a SlimLine #38436Sergio Bertana
Amministratore del forumGrazie della segnalazione, stiamo facendo lavori sul sito web e qualche problema ogni tanto emerge. Ho sistemato i links.
Ottobre 2, 2014 alle 3:50 pm in risposta a: Progetto di startup per connessione HMI a SlimLine #38434Sergio Bertana
Amministratore del forumLa pagina del manuale che tu citi di cui riporto estratto indica quali sono le funzioni gestite dal protocollo Modbus, non fà riferimento agli indirizzi. Per un elenco completo delle funzioni Modbus gestite sui sistemi SlimLine ti rimando a questo topic.
Per quanto riguarda l’indirizzamento, il protocollo Modbus prevede un indirizzamento a 16 bits quindi il range di indirizzi può variare tra 0 e 65535 (0x0000, 0xFFFF). Ora sullo SlimLine si è scelto di indirizzare da Modbus tutta l’area di memoria della DB 100 (4096 bytes) allocandola arbitrariamente all’indirizzo modbus 40000.
Quindi se definisci da terminale la lettura di una variabile (Comando 3x 40000) il terminale andrà a leggere la variabile allocata all’indirizzo 0 della DB 100. Attenzione! siccome la memoria è allocata a byte mentre il comando modbus di lettura registri (3x) legge word (2 bytes) se definisci da terminale la lettura di una variabile (Comando 3x 40001) il terminale andrà a leggere la variabile allocata all’indirizzo 2 della DB 100 e così via.
Nel caso di lettura coils (Comando 0x) l’indirizzamento evolve a bytes, quindi se definisci da terminale la lettura di un coil (Comando 0x 40016) il terminale andrà a leggere la variabile allocata all’indirizzo 16 della DB 100. Se definisci da terminale la lettura di un coil (Comando 0x 40017) il terminale andrà a leggere la variabile allocata all’indirizzo 17 della DB 100. Attenzione! siccome il terminale raggruppa i coils a modulo 16 non è possibile accedere ad indirizzi coil con indirizzo inferiore a 40016.
Settembre 30, 2014 alle 4:39 pm in risposta a: Finestra in pop up di spazio storage insufficente #38432Sergio Bertana
Amministratore del forumSu di una certa versione del run time si è manifestato questo funzionamento anomalo, per elimarlo occorre utilizzare l’ultima versione del programma EasyBuilder Pro (Da versione 4.10.05) che è scaricabile dal nostro sito ed eseguire il download del progetto nel pannello spuntando la voce di download del firmware (Screenshot).
Questa operazione esegue l’update del run time sul pannello utilizzando l’ultima versione rilasciata (E’ compresa nella installazione di EasyBuilder Pro).
Sergio Bertana
Amministratore del forumATC non rilascia programmi di virtualizzazione porte in ambiente Linux.
Ricordo che per comunicare con un convertitore ATC-1000 basta aprire un socket TCP sull’indirizzo del convertitore (Porta definita) e tutti i dati inviati sulla connessione verranno dal convertitore trasferiti sulla seriale e viceversa.
Detto questo troverai programmi in ambiente Linux che permettono lo scambio bidirezionale di dati tra streams, cito il più conosciuto socat.
Settembre 24, 2014 alle 1:11 pm in risposta a: Differenza sui fonts trasferendo programma con altro PC #38429Sergio Bertana
Amministratore del forumDa quanto detto prima posso ipotizzare che EasyBuilder cerchi di copiare il file di font Andalus e non lo trovi o lo trovi bloccato da Windows.
Oppure cerchi di copiarlo nel file di font all’interno della sua directory su di un file di font di progetto che è bloccato (Magari da un’altra istanza di EasyBuilder).
Comunque anche se dopo un riavvio del PC continui ad avere questo tipo di errore, puoi provare a rinominare l’intero progetto.
-
AutorePost