Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumVediamo di rispondere ai vari punti.
a) Non capisco esattamente cosa tu intenda, ma mi sembra comunque ti riferisca solo ad un problema di editing, perchè poi nel funzionamento tutto è Ok. Non mi dici se anche nella simulazione On-Line su PC il funzionamento è Ok.
b) Occorre abilitare data e ora e non scala tempo.
c) Raggiunto il numero di registrazioni impostate se non è spuntata fermata automatica il pannello sovrascrive le registrazioni più vecchie, se spuntata la fermata si ferma sino al nuovo giorno.
d) Il pannello automaticamente sovrascrive i file se si imposta il numero di giorni da mantenere, sul pannello sono salvati 7 file 1 per giorno. Per visualizzarli devi utiizzare un trend in tempo storico o visualizza dati storici e tramite l’oggetto pulsante ->opzioni puoi gestire la variabile controllo storico per decidere quale giorno visualizzare.
e) Toccando il trend in un determinato punto viene tracciata una linea verticale che interseca le registrazioni dati, il valori intersecati vengono resi disponibili nella variabile linea di controllo.
Novembre 3, 2014 alle 9:49 am in risposta a: Blocco funzione per acquisizione cella di carico #38494Sergio Bertana
Amministratore del forumPer dare una idea dei valori di tensione in gioco e per avere uno strumento di test del cablaggio realizzato, ecco un programma che utilizzando lo stesso collegamento visto nel post precedente permette di verificare la correttezza del cablaggio (Screenshot programma).
Siccome per acquisire le celle di carico gli ingressi del modulo A/D sono configurati hardware per segnali 0÷1.17V, occorre che la tensione di alimentazione della cella non superi 1V. Come si vede dallo screenshot del programma ho impostato una uscita sul D/A a 2mA che con la cella di carico utilizzata (415Ω) genera una tensione di 0.83V (Infatti dal canale di acquisizione 3 leggo 0.827V).
Siccome la cella genera 2mV/V a 20Kg di carico avrei in uscita una tensione di 0.00164V (1.64mV) (0.827*(2/1000)). Al peso caricato sulla cella 200gr il valore in volt acquisito sarà 100 volte inferiore cioè 0.0000164V (0.0164mV). Per poter leggere questo valore in modo stabile ho dovuto inserire un FB di Average con un coefficente di filtro elevato. Tutte queste operazioni sono però già svolte dal blocco funzione StrainGaugeAcq.
Ecco quindi che per acquisire valori di tensione dell’ordine di pochi mV è importantissima la precisione e “pulizia” del segnale di alimentazione strain gauge e la cura del cablaggio utilizzando cavi schermati e twistati.
Allego il progetto sorgente che può essere utilizzato per testare la connessione da voi realizzata, ricordo di impostare correttamente la corrente di uscita sul D/A in base alla resistenza dello strain gauge utilizzato per non superare 1V .
Novembre 3, 2014 alle 8:13 am in risposta a: Blocco funzione per acquisizione cella di carico #38493Sergio Bertana
Amministratore del forumSiccome l’acquisizione celle di carico per avere buoni risultati deve essere affrontata con i dovuti carismi, ho realizzato un semplice progetto per dare una tracccia di come si possa operare. Nel mio esempio utilizzo uno strain gauge da 20 Kg di cui riporto il datasheet.
Come si vede, lo strain gauge ha una impedenza di ingresso di 415Ω, volendola alimentare a 4,5Volt occorre una corrente di 10.84mA, l’uscita D/A del nostro modulo espansione I/O analogico può erogare massimo 10mA, quindi ho optato per utilizzare una uscita in corrente (Corrente massima 20mA). Ricordo che non è tanto importante la precisione del valore di tensione di alimentazione dello strain gauge, viene compensata mediante la lettura effettuata sul canale 3 (AI03-/AI03+), ma è importante la stabilità e pulizia del segnale.
Come si vede dallo screenshot del programma, alimento lo strain gauge dal canale 0 del modulo D/A (Corrente di 10.9mA), dal canale 4 del modulo di acquisizione A/D eseguo la lettura del peso. In accordo alle specifiche dello strain gauge il valore di SGaugeFullScale è 20Kg, mentre lo SGaugeRatio è 2mV/V. Avendo impostato il valore di fondo scala in grammi avrò tutte le definizioni di peso nella stessa unità di misura.
Taratura offset: A cella scarica si attiva DoOfsCalibration che salva nella variabile RETAIN OfsCalibration il valore di offset.
Taratura scala: Carico la cella con un peso di riferimento, il più preciso possibile e più vicino posibile al fondo scala (Nel mio esempio per semplicità ho utilizzato un pesetto da 400gr anche se avrei dovuto usarne uno da 19Kg). Il valore del peso di riferimento và definito in FSReference. Si attiva DoFSCalibration che salva nella variabile RETAIN FSCalibration il valore di offset.Terminata la taratura il sistema è pronto alla pesatura come si vede nella foto stò pesando un pesetto da 200gr. Nel mio sistema in test mi sono preso la libertà di usare fili non schermati per la connessione dello strain gauge, ma nella realtà sono indispensabili fili twistati e schermati, allego programma sorgente.
Sergio Bertana
Amministratore del forumIntanto ti consiglio di utilizzare il nuovo blocco funzione ModbusMaster nel forum si trovano moltissimi post che trattano il protocollo Modbus (Vedi esempio questo topic).
Ricordati poi l’offset 1, il blocco funzione in accordo alle specifiche Modbus sottrae 1 all’indirizzo, se il dispositivo che viene interrogato non somma 1 hai un errore di indirizzamento. Quindi prova a sommare 1 all’indirizzo che vuoi leggere.
Attiva lo Spy e da Telnet potrai vedere sia il frame inviato che il frame ricevuto e da qui potrai capire il tipo di errore.
Sergio Bertana
Amministratore del forumIl blocco funzione ModbusMaster si trova nella libreria ePLCUtyLib_C000.pll che è fornita con l’installazione della versione 2.3.0 di LogicLab. Ti consiglio di eseguiore il download dell’ultima versione di LogicLab dal nostro sito, che è arricchito da altre nuove funzioni e blocchi funzioni.
Sergio Bertana
Amministratore del forumE’ un problema di variabili allocate in area RETAIN, problema già segnalato in questo topic.
Sergio Bertana
Amministratore del forumAggiungo listato macro eseguita ciclicamente ad ogni secondo.
macro_command main()
bool RFlag=true //Reset flag
short ABuffer //Auxiliary buffer// Alla mezanotte eseguo reboot.
GetData(ABuffer, “Local HMI”, LW, 9019, 1) //Leggo ora
if (ABuffer == 23) then
GetData(ABuffer, “Local HMI”, LW, 9018, 1) //Leggo minuti
if (ABuffer == 59) thenGetData(ABuffer, “Local HMI”, LW, 9017, 1) //Leggo secondi
if (ABuffer >= 55) then
SetData(RFlag, “Local HMI”, LB, 9048, 1) //Reboot-HMI protection
SetData(RFlag, “Local HMI”, LB, 9047, 1) //Reboot-HMI
end if
end if
end if
end macro_commandSergio Bertana
Amministratore del forumLa tecnica di effettuare un reboot del pannello ogni giorno è una tecnica che consigliamo di utilizzare sui pannelli che restano sempre accesi per evitare che si crei un overflow di allocazione memoria. Il sistema operativo del pannello è un Linux e l’applicativo come tutti i programmi continua ad allocare e disallocare memoria, può essere che in un sistema sempre acceso si esaurisca l’area di malloc generando un blocco del programma applicativo.
Come detto prima vi sono due variabili che permettono il reboot, quindi l’operazione più semplice è creare una macro (Vedi manuale macro) eseguita a tempo in cui si controlla l’orologio interno al pannello ed all’ora stabilita, solitamente la mezzanotte quando presumibilmente nesuno stà utilizzando il pannello ne forza il reboot. Ho realizzato un semplice progetto che visualiza l’orologio del pannello ed alla mezzanotte forza il reboot (Download progetto).
La tecnica è quella di controllare se l’ora è maggiore delle 23:59:55, visto che il reboot richiede circa 15 secondi, al riavvio l’ora sarà 00:00:10 quindi sicuramente minore del valore di confronto, così il prossimo reboot avverrà alla mezzanotte successiva. Tutti i terminale serie iE hanno il real time clock integrato.
Ottobre 30, 2014 alle 1:29 pm in risposta a: Come funziona il blocco funzione eTON in LogicLab #38483Sergio Bertana
Amministratore del forumNella nostra FB di eTON il valore di ET rimane settato anche al reset dell’ingresso IN. In effetti la abbiamo chiamata eTON con quella “e” che stà a significare una variante dellla TON standard. Non sò come mai ti serva azzerato il valore di ET alla discesa di IN. Ti allego un progetto (Stampa) in cui la FB non è protetta e quindi puoi agevolmente modificarla per piegarla alle tue necessità (Download progetto).
Per ottenere l’azzeramento di ET sul reset di IN devi aggiungere nel ramo della IF sul controllo di IN anche l’azzeramento di ET.
IF NOT(IN) THEN
ET:=0; (* Executing time (mS) *)
TimeBf:=SysTime; (* Time buffer *)
Q:=FALSE; (* Delayed output *)
RETURN;
END_IF;Se guardi l’FB vedrai che su riattivazione di IN ET assumerà il valore ET:=SysTime-TimeBf; ed avendo nel ramo del controllo su IN posto TimeBf:=SysTime; conteggerà il reale tempo trascorso dalla attivazione di IN.
Ottobre 29, 2014 alle 8:16 am in risposta a: Acquisizione encoder e gestione del valore di quota #38481Sergio Bertana
Amministratore del forumPartendo dall’esempio postato sopra, ho modificato il blocco funzione di calcolo quota per fare ritornare un valore DINT al posto di un UDINT, ed il gioco è fatto. Il valore Quote ritornato dal blocco funzione QuoteMng lo dovrai appoggiare in una variabile DINT allocata in memoria DB 100 per poterlo visualizzare sul pannello Weintek (Ecco la stampa del programma).
Per permettere di poter memorizzare il valore di quota allo spegnimento del sistema ho inserito nel blocco funzione il parametro IQuote. In questo modo appoggiando sull’ingresso la variabile RETAIN del valore di quota si potrà alla abilitazione del blocco funzione iniziare il conteggio quota dal valore preesistente (Download programma).
Sergio Bertana
Amministratore del forumYou don’t report how many counters that must be managed, anyway I try to suggest some possible solutions at your question.
If you need a single counter you can use the counter on the SlimLine CPU module. It’s possible to read its value on a program executed on Fast task (Standard every 1 mS, but the time can be changed to your requirements and you can set times down to 100 uS). Here the screenshot of an example program, as you can see the program execution takes 9 uS and at the maximum 19 uS (Download program).
If you need more counters and for a significantly number of applications, we can modify the static output expansion I/O module. The module is based on a FPGA logic, so it’s possible to program it by adding up to 4 counters and the logic to preset a value and manage the output according to your requirements.
Ottobre 27, 2014 alle 11:35 am in risposta a: Come funziona il blocco funzione eTON in LogicLab #38478Sergio Bertana
Amministratore del forumIl blocco funzione eTON funziona esattamente come hai detto tu, non capisco come tu lo voglia utilizzare. Ecco lo screenshot di un programma di esempio in funzione sul simulatore SimuLab (Ho catturato lo screenshot mentre il timer stava temporizzando ET=1470), allego il progetto sorgente (Download progetto).
Come funziona eTON, attivando l’ingresso IN (Sul fronte di attivazione) si azzera il valore di tempo trascorso (ET elapsed time) ed inizia il conteggio del tempo, raggiunto il valore definito in (PT preset time) l’uscita Q si attiva e rimane attiva fino alla disabilitazione dell’ingresso IN.
Se l’attivazione di IN ha una durata inferiore al valore di tempo definito in PT, il timer inizia a contare ma non si attiva l’uscita Q. Ed in ET troveremo il valore di tempo per il quale l’ingresso IN è rimasto attivo. Allego la stampa dell’estratto della normativa IEC 61131-3 che riporta il diagramma temporale di funzionamento dei tre tipi di timer previsti.
Ottobre 25, 2014 alle 7:23 am in risposta a: Come utilizzare la SDCard per il salvataggio di file di log #38477Sergio Bertana
Amministratore del forumHo ipotizzato un record di log con i dati che ti necessitano (Data/ora; 7 valori REAL), il record è del tipo:
25/10/2014 00:00:00;120.5;75.8;1200.0;145.76;1560.6;456.8;985.75
Come vedi sono 64 bytes che arrotondiamo per eccesso a 70. Considerando un log ogni 10 secondi avremo 360 Record/Ora (Pari a 25Kb Ora). Anche ipotizzando un log continuo 24 ore su 24 e 31 giorni mese avremo ogni mese 267840 records con una quantità di dati pari a 18Mb. Formattando la SDCard per contenere i 12 mesi avremo per ogni file disponibili 44Mb di dati come si vede dal comando:
Format SDCard 12
Are you sure ? (Y,n)
Format Ok, Files:12, FSize:44738688, Time:54.290 (mS)In merito alla soluzione da te proposta di leggere da un PC tramite una connessione FTP i files dallo SlimLine, direi che è una ottima soluzione per garantire un efficace backup dei dati nello storage aziendale. Se opti per questa soluzione terrei i files sullo SlimLine più piccoli (Quindi farei una memorizzazione giornaliera) ed il server centrale può ogni giorno scaricare il file del giorno precedente avendo nello SlimLine un polmone di 7 giorni.
Sergio Bertana
Amministratore del forumCerto la tua soluzione è fattibile, se sai dove è ubicata l’antenna WiFi dell’access point pubblico ti consiglio una NanoStation al posto del Bullet per la station esterna alla casa. Essendo direttiva la puoi puntare sull’access point migliorando sia la trasmissione che la ricezione.
Poi come dici tu connetti al’interno della casa un dispositivo con antenna omnidirezionale da utilizzare come access point (Esempio Picostation). Ma a parte esigenze particolari Ubiquiiti rende disponibile l’AirGateway che fà esattamente quello che ti serve.
Comunque se configuri station l’antenna esterna e Access point il dispositivo interno entrambi in modalita bridged (Non router) i dispositivi interno casa utilizzeranno il server DHCP della rete WiFi pubblica.
Il WDS (Topic) è una tecnica per estendere il segnale utilizzando access point multipli.
Sergio Bertana
Amministratore del forumEd ora veniamo all’accesso al pannello da remoto, occorre installare sul PC il programma Easy Access 2.0 (Download dal ns sito), eseguendo il programma verranno richieste le credenziali di accesso (Definire le credenziali impostate all’utente) (Screenshot).
Eseguito l’accesso si visualizzerà lo stato di tutti i pannelli gestibili dall’utente, con l’indicazione dello stato di ogni pannello (Offline, Online). Clickando sul tasto di connessione verrà creata la VPN di connessione al pannello e visualizzato l’indirizzo IP assegnato dalla VPN al pannello. Riferendosi a questo indirizzo sarà possibile operare sul pannello come se fosse fisicamente in rete con il PC.
Easy Access 2.0 non rende solo possibile la connessione diretta ad un pannello della Weintek, ma fornisce anche la funzione pass-through che permette all’utente di connettersi a un PLC su una rete remota HMI, cioè sulla stessa LAN in cui è presente l’HMI. Una volta creata la rete VPN con il pannello un click sul pulsante “Set” permette di configurare l’indirizzo IP del PLC connesso alla rete del pannello. Dal tool di programmazione del PLC basterà riferirsi all’indirizzo IP definito per raggiungere tramite la VPN di Easy Access il PLC remoto. Attenzione, nel rete del vostro PC non dovrà gia esserci un dispositivo con lo stesso indirizzo IP (Screenshot).
-
AutorePost