Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumIntanto ti consiglio di utilizzare la nuova FB ModbusMaster, e per acquisire gli ingressi logici del modulo CPU ti consiglio l’FB SysGetPhrDI. I blocchi funzione FB devono essere istanziati, cioè deve essere definito un oggetto del tipo del blocco funzione che si vuole utilizzare, e questo mi sembra tu l’abbia fatto hai definito ad esempio l’oggetto MyModbus di tipo ModbusMaster.
Ma la task di Boot è eseguita una sola volta al run del programma PLC quindi può essere utilizzata per inizializzare le variabili (E’ inutile il controllo IF SysFirstLoop THEN) ma non può essere utilizzata per eseguire fisicamente l’FB. Quando scrivi MyModBus(Enable:=TRUE); stai eseguendo il codice presente nel blocco funzione ed avendo messo questa chiamata nella task di Boot lo hai eseguito una sola volta.
Quindi ricapitolando la chiamata alla esecuzione del blocco funzione deve essere messa in una task eseguita ciclicamente (Fast, Slow o Back). E qui devi suddividere l’esecuzione dei blocchi funzione in base al loro specifico uso, la FB ModbusMaster andrà eseguita nella task Back, mentre la FB IOEncoder ipotizzando di dover acquisire un encoder fino a 400 Hz andrà eseguita nella task Fast.
Marzo 10, 2014 alle 4:55 pm in risposta a: Utilizzare le macro subroutines per la scalatura valori #38114Sergio Bertana
Amministratore del forumAggiungo al topic un progetto fornito da Weintek che spiega il funzionamento di questa tecnica (Screenshot). Nel file zip del progetto vi è anche una breve spiegazione in pdf del funzionamento (Download progetto).
Marzo 10, 2014 alle 2:03 pm in risposta a: Utilizzare le macro subroutines per la scalatura valori #38113Sergio Bertana
Amministratore del forumVediamo ora come utilizzare queste macro subroutines, ecco un semplice programma che esegue la conversione tra gradi Celsius e gradi Fahrenheit (Download programma). Ho inserito due oggetti di Introduzione numerica, su uno di essi (Quello riferito ai gradi Celsius) ho definito la scalatura con Macro subroutines (Screenshot).
In lettura il valore letto dalla LW 10 viene passato alla subroutine f2c di conversione da Fahrenheit a Celsius ed il ritorno della subroutine viene visualizzato.
In inputazione il valore inputato dal terminale viene passato alla subroutine c2f di conversione da Celsius a Fahrenheit a Celsius ed il ritorno della subroutine viene scritto nella variabile LW 10.
L’oggetto riferito ai gradi Fahrenheit visualizza il valore della LW 10 senza effettuare alcuna scalatura. Come si vede dallo screenshot inputando un valore in gradi Celsius ne ho la conversione in gradi Fahrenheit e viceversa.
Marzo 10, 2014 alle 1:50 pm in risposta a: Utilizzare le macro subroutines per la scalatura valori #38112Sergio Bertana
Amministratore del forumCreando un nuovo progetto EasyBuilderPro vengono già automaticamente definite una serie di macro per la conversione delle temperature. Per definire le macro subroutines agire sul menù Tools -> Macro e poi sul tasto Librerie (Screenshot). Riporto ad esempio la macro subroutine di conversione da Fahrenheit a Celsius:
sub float f2c(float f)
float c
c=(f-32)*5/9
return c
end subEd ecco la subroutine di conversione da Celsius a Fahrenheit:
sub float c2f(float c)
float f
f=c*9/5+32
return f
end subCome si vede ogni subroutine ha un parametro in ingresso ed un parametro in uscita.
Marzo 10, 2014 alle 8:56 am in risposta a: Differenza visualizzazione caratteri tra PC e terminale #38111Sergio Bertana
Amministratore del forumRicordo che EasyBuilderPro può gestire svariati fonts di caratteri, è anche possibile realizzare dei proprii font personalizzati (Topic), bisogna però ricordarsi di scaricare sul pannello anche i fonts insieme al progetto. Nella finestra di download progetto occorre abilitare il tick Files font (Screenshot).
Il tuo problema credo però derivi dalle impostazioni della scheda grafica sul tuo PC, con il tasto destro sul desktop scegliere il menù Personalizza -> Schermo e controlla la dimensione in DPI dei caratteri sul tuo schermo (Screenshot). L’impostazione deve essere al 100%, in caso contrario Windows visualizza i caratteri con un formato diverso da quello utilizzato sul pannello e quindi avrai il difetto che lamenti.
Marzo 8, 2014 alle 8:28 am in risposta a: Programma per conteggio energia elettrica consumata #38110Sergio Bertana
Amministratore del forumHo realizzato un programma che esegue il calcolo della potenza consumata, per testarlo ho inserito anche una semplice acquisizione di potenza istantanea tramite un convertitore corrente/tensione. Il convertitore connesso ad un ingresso analogico dà un valore di 10 Volts a 30 Ampere di corrente istantanea. Come si vede dalla stampa del programma, eseguo l’acquisizione della corrente istantanea tramite un ingresso analogico, e calcolo la potenza istantanea (Tralascio il CosPhi).
Ora basta semplicemente sommare la potenza istantanea consumata ad ogni unità di tempo per avere un totalizzatore di potenza consumata espresso in kW/H. Naturalmente la variabile totalizzatore TPower dovrà essere di tipo RETAIN (Download programma).
Sergio Bertana
Amministratore del forumSi certo questa sarebbe la soluzione che io adotterei, un unico alimentatore al posto di tanti alimentatori separati, utilizzando un MDR-60-24 avresti i 60 Watt a te necessari. L’alimentatore connesso alla uscita dell’UPS terrebbe alimentate le tue apparecchiature per il tempo di autonomia dell’UPS.
Sergio Bertana
Amministratore del forumPer caricare le batterie occorre fornire una tensione più alta di quella nominale (Ecco il perché dei 28 Volts). Il collegamento tra le batterie è una normale serie -[Batteria 1]+ -[Batteria 2]+, i due poli estremi della serie vanno ai morsetti +/- dell’UPS. Quando le batterie alimentano l’impianto la tensione partirà da quella di carica (Potrebbe essere 28 V e poi scende con la scarica).
Volendo costruire un piccolo castello puoi connettere in uscita sulla linea a 28 Volts dei diodi al silicio in serie tra di loro per avere la caduta di 4 volts a te necessaria (Servono 6 diodi).
Ma ora io mi chiedo perché dimenticare il DR-UPS40, batterie, alimentatore ed utilizzare un piccolo UPS commerciale che ha già tutto inserito al suo interno, certo genera una tensione di 220 Vac ma puoi connettere in uscita i normali alimentatori di cui sono provvisti i dispositivi che devi alimentare.
In questo caso perderei la vendita ma un cliente ben consigliato è un cliente che certamente prima o poi ritorna.
Marzo 7, 2014 alle 7:21 am in risposta a: EasyBuilderPro in simulazione con un PLC Siemens S7 #38105Sergio Bertana
Amministratore del forumEffettivamente non possono essere gestite variabili in strutture composte da strutture. Si potrebbero però usare le DB di istanza configurando il file FunctionBlock.txt che si trova nella cartella di installazione EasyBuilderPro.
Description: When importing TAG using S71200, the mapping from Function Block to Data Block must be user-defined first. FB address range 0-65535, DB address range 0-65535, users can modify the mapping using the following structure: Ex.FB200 Map DB10000.
Anche se nel PLC si può scegliere per le varie DB se lavorare con “accesso diretto” o “senza accesso diretto”, nel pannello Weintek non è possibile definire questa selezione, occorre scegliere se utilizzare un modo oppure l’altro.
Sergio Bertana
Amministratore del forumSoluzione alternativa, alimentare tutto a 12 Volt, in tal caso serve un alimentatore da almeno 5 A, nella nostra gamma di alimentatori serie TCL abbiamo su ordinazione un modello adatto. Utilizzerai un solo accumulatore a 12 Volts da collegare direttamente in parallelo all’alimentatore, naturalmente per avere la stessa autonomia l’accumulatore deve avere il doppio di capacità (Almeno 4 A/H).Per ricaricare l’accumulatore l’alimentatore và tarato per avere una tensione in uscita di 14 Volts, in questo caso devi fare i conti con la tensione minima di alimentazione, mano mano che l’accumulatore si scarica la tensione scende e potresti dopo un pò trovarti sotto i 12 Volts nominali.
Sergio Bertana
Amministratore del forumIniziamo con il fare un conto della potenza totale necessaria all’intero sistema sommando le potenze di tutti i dispositivi utilizzati (PC 55,2 W, Convertitore 0,9 W, Cronotermostato 0,7 W, Switch 3 W) in totale circa 60 Watt che a 24 volts sono 2,5 A.Come alimentatore potresti abbinare il modello MDR-60-24, mentre per l’accumulatore potresti fare una serie di 2 accumulatori al piombo da 12 V da 2 Ampere (Vedi datasheet) che ti garantirebbero oltre 30 minuti di energia il loro costo sul mercato è meno di 10 € l’una. L’unica considerazione da fare è sulla tensione di alimentazione, come vedi dal datasheet l’accumulatore per ricaricarsi necessita di una tensione massima di circa 14 Volts che in totale fanno 28 Volts. Quindi occorre verificare se tutte le tue apparecchiature accettano questo range di tensione massima. Come vedi dallo schema applicativo del UPS DC DR-UPS 40, le batterie vengono ricaricate dall’alimentatore quindi in presenza di tensione di alimentazione esse sono ricaricate. Naturalmente come espresso prima per avere la ricarica devi tarare l’alimentatore per avere una tensione in uscita a vuoto (Senza carico) di 28 Volts.
Marzo 5, 2014 alle 3:24 pm in risposta a: Punto interrogativo (?) accanto al programma in LogicLab #38099Sergio Bertana
Amministratore del forumRileggendo il tuo post mi viene da aggiungere un’altra considerazione, per utilizzare gli oggetti (Funzioni ed FB) delle varie librerie non devi importare l’intera libreria ma devi solo importare gli oggetti che ti servono (Dai una lettura a questo topic).
Marzo 5, 2014 alle 3:02 pm in risposta a: Punto interrogativo (?) accanto al programma in LogicLab #38098Sergio Bertana
Amministratore del forumDurante il download del progetto nel PLC viene scaricato il file di codice .cod, il file .ppjs è il file di progetto sorgente e contiene tutto il programma compresi i commenti e tutte le librerie. Più aggiungi programma o commenti (I commenti non generano codice) aumentano le dimensioni del file .ppjs e 100Kb sono del tutto normali.
Il tuo problema è che nel progetto hai scelto di eseguire il download sul target anche del programma sorgente .ppjs insieme con il codice, e questo dilata notevolmente i tempi di download oltre a depositare i tuoi sorgenti nel target.
Solitamente i clienti non desiderano lasciare i sorgenti nel target (Anche se criptati), se desideri farlo per avere la possibilità quando ti connetti al target di avere anche i programmi sorgenti (Nel caso non li avessi con te sul PC), ti consiglio di eseguirne il download solo al momento di sconnetterti dal sistema e non ad ogni download del programma. Questa impostazione si trova nel menù Project -> Options (Screenshot).
Marzo 5, 2014 alle 9:08 am in risposta a: EasyBuilderPro in simulazione con un PLC Siemens S7 #38096Sergio Bertana
Amministratore del forumIl formato Data/Ora di Siemens non è supportato dal pannello, EasyBuilderPro importa le variabili perché le trova come tag ma non funzionano. Per sopperire a tale limite, occorre copiare nel programma PLC la struttura data/ora in variabili “normali” e poi leggerle e scriverle da pannello operatore.
Il Siemens S7 1200 a quanto mi risulta può essere programmato o completamente in simbolico o in assoluto il mix tra i due non è possibile, non capisco che limite possa aver trovato in uno o nell’altro modo, anche perché è possibile definire un numero ampio di variabili mnemoniche.
Sergio Bertana
Amministratore del forumTi posso suggerire un semplice test per verificare che non sia una banalità già successa ad altri clienti. Potresti inserire nella pagina 4 (Common Window) un oggetto di visualizzazione LW 9050 Current base window ID. Questo permette di vedere sempre la pagina attualmente visualizzata dal pannello.
Ti consiglio questo per capire se per caso il pannello si porta sulla visualizzazione di una pagina non definita, perché in tal caso la pagina sarebbe completamente nera e non avendo oggetti al suo interno anche la comunicazione si arresta. Essendo la Common Window sempre attiva si vedrebbe quale è la finestra attivata, potrebbe succedere che per qualche motivo il tuo programma si porta alla visualizzazione di una pagina non definita.
In caso il pannello non visualizzasse effettivamente nulla, allora si tratta di un guasto devi compilare l’RMA e ritornarci il pannello per la sostituzione e/o riparazione.
-
AutorePost