suppaman Inserito: 10 novembre 2008 Segnala Share Inserito: 10 novembre 2008 Salve a tutti.Una cosa che sono stato sempre abituato a fare quando programmo è cercare sempre di ottimizare il codice per renderlo piu performante.Mi chiedevo, c'è differenza tra scrivere dati di qualsiasi tipo in un merker e in un db ? Intendo al livello di velocità di elaborazione, di risorse occupate, interrogazione di registri ecc..Io ho sempre saputo che i merker non ritentivi e le variabili temporanee degli FC/FB vengono lette e scritte dalla cpu in modo diverso dai db, rendendo l'elaborazione del dato più veloce, ma volevo una conferma da qualcuno più esperto di me.In linea generale secondo voi è preferibile l'uso massiccio di merker oppure creare vari DB ben organizzati ? il tutto ovviamente parlando di dati non ritentivi.. Quale "stile" di programmazione preferite parlando anche di flessibilità e riutilizzo del codice ?Grazie come sempre a tutti e spero che non sia stato un argomento già trattato in precedenza. Almano dalla mia ricerca non è uscito fuori nulla Link al commento Condividi su altri siti More sharing options...
batta Inserita: 10 novembre 2008 Segnala Share Inserita: 10 novembre 2008 L'accesso ai dati dei DB, sia in lettura che in scrittura, è più lento dell'accesso ai merker.I merker però non sono molti, quindi è impensabile usarli al posto dei DB.In qualche manuale ci sono i tempi richiesti per l'esecuzione di tutte le operazioni. Link al commento Condividi su altri siti More sharing options...
rddiego Inserita: 10 novembre 2008 Segnala Share Inserita: 10 novembre 2008 non credo, ma non lo so in realtà, che se i dati sono ritentivi si allunghi il ciclo di esecuzione però tant'è!! Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 10 novembre 2008 Segnala Share Inserita: 10 novembre 2008 non credo, ma non lo so in realtà, che se i dati sono ritentivi si allunghi il ciclo di esecuzione però tant'è!!Dunque, adesso non mi metto li a cercare il pdf, ma l'indirizzamento a una memoria ritentiva dovrebbe impiegare lo stesso che a una memoria DB.Poi, ll'utilizzo delle merker, flags, se rendono piu utili come memoria ausiliaria, per operazioni di caricamento-trasferimento dei dati di propieta temporanea, nonche variabili globali.Quale "stile" di programmazione preferite parlando anche di flessibilità e riutilizzo del codice ? Certo che per una migliore architettura per il progetto, correlando gli standard 95/88 nella sua integrazione verticale, seguendo il modello di gerarchia per le apparecchiature che conformano la parte fisica dell'impianto, etc.. etc, sarebbe piu conveniente adottare una struttura appogiata su le DB, per una maggiore e spontanea comprensione del progetto. Per esempio, supponiamo che per una Unit (unita'), hai 3 Equipment modules (moduli di apparecchiatura), potresti configurare una DB10 per i dati globali della unita, e le DB101, 102, 103 per i moduli di apparecchiatura. Comunque e' solo una ipotesi. Link al commento Condividi su altri siti More sharing options...
Luca Bab Inserita: 11 novembre 2008 Segnala Share Inserita: 11 novembre 2008 Typical Execution Time in micro s per una 315L MW = 0,4L DBW = 1,4OPN DBx = 0,7Come vedi c'e' sicuramente un allungamento , ma come ti hanno gia' detto quando servono ( e servono spesso ) si usano i DBUn piccolo consiglio e' di cercare di aprire poche volte le DB , apri una DB poi usi le DBW senza richiamare di nuovo la DB , non usare DB10.DBW0 ( anche se e' comodo per il commento ) poiche' questa istruzione apre anche la DBCiaoLuca Link al commento Condividi su altri siti More sharing options...
rev56 Inserita: 14 maggio 2009 Segnala Share Inserita: 14 maggio 2009 Sn 2 cs diverse. Io ragiono così:Difficilmente untilizzo delle DB per settarmi o attivarvi dei bit...DBX...e preferisco utilizzare dei merker....M... Invece per quanto riguarda i timer, delle word o delle doppie parole utilizzo delle Db in quanto generalmente nella maggior parte dei programmi per dei tracking dati o ancor di più trasferimenti non si utilizzano dei gran OW o UW.Per me i merker deve utilizzarli soprattuto se ti servono dei bit pronti da utilizzare molto più velocemente Link al commento Condividi su altri siti More sharing options...
barolo72 Inserita: 14 maggio 2009 Segnala Share Inserita: 14 maggio 2009 Ho anche visto, in passato, scrivere codice con le merker ma poi appoggiate a delle DB...mi spego meglio...all'inizio della fc si apre un db di appoggio e si caricano delle Dw e si trasferiscono in MWL DBWxxT MWxxsi elabora tutto il codice utilizzando MW, il cui accesso è più veloce ed alla fine si fa l'operazione inversaL MWxxT DBWxxCosa ne pensate ???Saluti. Link al commento Condividi su altri siti More sharing options...
TravelMen Inserita: 15 maggio 2009 Segnala Share Inserita: 15 maggio 2009 (modificato) Ciao barolo72 secondo me è una soluzione valida se hai una quantità esagerata di dati, sinceramente se organizzi bene le tue funzioni e la memoria da utilizzare ottieni ottimi risultati, nella mia brave esperienza di tecnico (sino ad oggi) ne ho viste di tutti i colori e ti posso dire che ci sono programmi che ciclano in media in 200/300 ms ed altri su linee simili ciclare in 80/100ms con un uso uguale di DB.L'acesso alle DB fa si lievitare il tempo ciclo, ma anche una un uso indiscriminato delle comparazioni su word lo fa lievitare, è la differenza di tempo da me rilevata era proprio un "abuso" di comparazioni anche su word che variavano da 0 a 3. Io uso, di norma, fare tutto il software "a banco" con uso di DB e perdere "tempo" ad organizzarle e poi una volta arrivato alla messa in servizio le modifiche le appoggio su merker, se limitate. Modificato: 15 maggio 2009 da TravelMen Link al commento Condividi su altri siti More sharing options...
Foca Inserita: 15 maggio 2009 Segnala Share Inserita: 15 maggio 2009 La risposta giusta è quella di Luca bab! Link al commento Condividi su altri siti More sharing options...
batta Inserita: 15 maggio 2009 Segnala Share Inserita: 15 maggio 2009 La risposta è giusta.Personalmente però non mi trovo d'accordo col seguente consiglio dato:apri una DB poi usi le DBW senza richiamare di nuovo la DB , non usare DB10.DBW0 ( anche se e' comodo per il commento ) poiche' questa istruzione apre anche la DBAprire i DB richiede tempo, ma usare la sintassi completa tipo DB1'.DBW0 non solo permette di leggere la variabile col nome (si potrebbe facilmente ovviare inserendo un semplice commento) ma, cosa molto più importante, permette di fare i riferimenti incrociati della variabile.Aprire il DB e poi utilizzare le variabili del DB richiamandole solo come DBWxxx, fa certamente risparmiare tempo al plc, ma rende quasi impossibile trovare dove la variabile è stata utilizzata.Io ho un po' la mania di "ottimizzare il codice". Questo però non deve andare a scapito della leggibilità e della manutenibilità di un programma.In S5 aprire il DB e poi richiamare le variabili è l'unico modo possibile. Ed è principalmente per questo motivo che io ho sempre odiato e continuo ad odiare i plc S5. Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 16 maggio 2009 Segnala Share Inserita: 16 maggio 2009 (modificato) In S5 aprire il DB e poi richiamare le variabili è l'unico modo possibile. Ed è principalmente per questo motivo che io ho sempre odiato e continuo ad odiare i plc S5Caro batta, mi pare che tu l'S5 non lo ha imparato cosi approfondito direi, ed allora sara' per quello che tu l'odi.Vedi,nel S5, per quelli che lo hanno conosciuto bene, c'era la possibilita di indirizzare in assambler(Mac 5) per arrivare alle aree di memoria ed anche di sistema della CPU, lo sapevi ?. E' stato per questo che io personalmente ho sempre amato l'interfaccia AS511. Comunque e sempre cosi', uno odia quello che non conosce bene. Modificato: 16 maggio 2009 da Savino Link al commento Condividi su altri siti More sharing options...
Mauro76 Inserita: 16 maggio 2009 Segnala Share Inserita: 16 maggio 2009 Caro Savino è vero.Anche io da 10 anni che lavoro con i plc ed il mio primissimo plc è stato il TI535 e poi l'S5 e devo dire che non mai trovato molte difficoltà.Io provengo dal DOS e adesso lavoro con windows, chi proviene da windows e non conosce il dos certamente lo può odiare.Comunque non è colpa loro se con il passare del tempo nuove tecnologie sovrastano le vecchie, ma possiamo fare in modo che le vecchie tecnologie o le vecchie programmazioni possano esserci utili per rendere sempre più affidabili le nuove tecnologie. Link al commento Condividi su altri siti More sharing options...
Matteo Montanari Inserita: 17 maggio 2009 Segnala Share Inserita: 17 maggio 2009 Un piccolo consiglio e' di cercare di aprire poche volte le DB , apri una DB poi usi le DBW senza richiamare di nuovo la DB , non usare DB10.DBW0 ( anche se e' comodo per il commento ) poiche' questa istruzione apre anche la DBil PLC apre un nuovo blocco dati solamente se quello aperto in precedenza non è quello che deve utilizzare.Esempio:U DB10.DBX0.0 (apertura del blocco dati 10 e lettura del bit 0 del byte 0) UN DB10.DBX0.1 (lettura del bit 1 del byte 0) = DB10.DBX0.2 (scrittura del bit 2 del byte 0) ---- U DB10.DBX0.0 (apertura del blocco dati 10 e lettura del bit 0 del byte 0) UN DB11.DBX0.1 (apertura del blocco dati 11 e lettura del bit 1 del byte 0) = DB12.DBX0.2 (apertura del blocco dati 12 e lettura del bit 2 del byte 0) a volte quando devo eseguire molti trasferimenti utilizzo un FC aprendo contemporaneamente 2 blocchi dati, utilizzando il blocco dati di istanza, non possibile negli FB parametrizzati. Esempio: AUF DB 10 (apertura del blocco dati 10 come blocco dati di utilizzo generale) AUF DI 11 (apertura del blocco dati 11 come blocco dati di istanza) U DBX0.0 (lettura del bit 0 del byte 0, nel blocco dati 10) UN DIX0.1 (lettura del bit 1 del byte 0, nel blocco dati 11) = DBX0.2 (scrittura del bit 2 del byte 0, nel blocco dati 10)dipende sempre da cosa si vuole ottenere, in termini di tempo ciclo le cpu S7 sono molto più veloci delle vecchie S5, ma se si struttura il programma come si faceva come con S5 il tempo di ciclo di una nuova Cpu S7 è irrilevante in quanto vengono eseguite molte istruzioni a volte inutili...il metodo per rendere veloce l'elaborazione di un programma è già stato trattato in varie discussioni.la prima domanda che ci si deve porre è perchè mi interessa un ciclo di elaborazione basso.se devo averlo per fare dei movimenti precisi senza utilizzare le schede studiate per il posizionamento, sono fuori strada, in quanto basta solamente aggiungere una funzione in più o inserire una rete di comunicazione diversa, o un pannello operatore in comunicazione, che tutti i calcoli teorici vanno a farsi friggere.se non devo eseguire operazioni "delicate" allora la mia paletta sulla rulliera o il mio rubinetto per il dosaggio, o ... posso anche chiuderlo con 150millisecondi di ritardo...la scelta del ciclo della CPU deve essere anche subordinata alla meccanica alla quale il programma deve essere abbinato.posso riuscire a ridurre la velocità di elaborazione del plc all'osso ed ottenere la precisione di 0.001 mm poi scopro che meccanicamente il sistema di movimento ha l'errore di 1 mm, quindi molto lavoro per nulla. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 18 maggio 2009 Segnala Share Inserita: 18 maggio 2009 Caro batta, mi pare che tu l'S5 non lo ha imparato cosi approfondito direiComunque e sempre cosi', uno odia quello che non conosce beneSavino, entrambe le tue affermazioni sono corrette.Rimane comunque il fatto che, con Step5, se devi cercare dov'è usata la variabile DW20 del blocco dati DB5, devi armarti di tanta pazienza ed incrociare (a mano) i riferimenti di DB5 con quelli di DW20.Lo stesso accade con Step7 se si utilizzano le variabili senza specificare ogni volta il blocco dati cui appartengono.Rendere complicata la ricerca di una variabile significa rendere complicato il debug e le modifiche.Io provengo dal DOS e adesso lavoro con windows, chi proviene da windows e non conosce il dos certamente lo può odiare.Anch'io provengo dal DOS. Le mie prime esperienze su PLC risalgono alla seconda metà degli anni '80.Non è quindi una questione si sistema operativo.Forse invece non hai apprezzato abbastanza i plc Texas perché usavi cpu piuttosto limitate, come la 535.Se avessi invece utilizzato la 545, con funzioni speciali SFPGM e SFSUB, calcoli in virgola mobile e PID, forse i tuoi giudizi sarebbero stati diversi.A proposito di SFPGM, sembra che il linguaggio strutturato sia una novità degli ultimi anni nel mondo PLC. Invece era già utilizzato in questi "vecchi" Texas.il PLC apre un nuovo blocco dati solamente se quello aperto in precedenza non è quello che deve utilizzare.Non ne sono tanto sicuro.Sono sicuro invece che l'istruzioneL DB10.DBW0anche se DB10 è già aperto, richiede più tempo dell'istruzioneL DBW0Però, come ho già detto, non mi interessa risparmiare sui tempi di scansione se questo va a scapito della leggibilità del programma, e rende quindi più difficili debug e modifiche.Piuttosto, se in un FC la stessa variabile è richiamata più volte, la appoggio ad una variabile locale. Risparmio così tempo di scansione senza ridurre la leggibilità. Link al commento Condividi su altri siti More sharing options...
danielecarrrr Inserita: 29 marzo 2010 Segnala Share Inserita: 29 marzo 2010 salve a tutti,sono nuovo del forum e mi sto cimentando nel rifacimento dell'impianto elettrico di casa mia.ora io volevo sapere se secondo voi nel disegno che allego va bene il modo con cui ho deciso difar passare i corrugati.vorrei evitare il discorso di certificazioni,di lasciare perdere eccc....http://yfrog.com/4cimpelejin-interrutorec -commutatored -deviatorep -presa Link al commento Condividi su altri siti More sharing options...
eventualmente Inserita: 29 marzo 2010 Segnala Share Inserita: 29 marzo 2010 sei pazzo....ti sfido io a tirare insieme in un tubo :-telefono[*-]sat-lan-tv-FM-luce"vorrei evitare il discorso di certificazioni,di lasciare perdere eccc...."certificazioni di che tipo? tu puoi passare dove vuoi con i tuoi bei tubi...consiglio:FATTI AIUTARE DA UN ELETTRICISTA Link al commento Condividi su altri siti More sharing options...
danielecarrrr Inserita: 29 marzo 2010 Segnala Share Inserita: 29 marzo 2010 scusate,forse non mi sono spiegato,il disegno che vedete riguarda solo luce e prese,o meglio,i corrugati del disegno riguardano solo le prese 16 e 10Aantenne e telefoni vari non c'entrano nulla,sono nel disegno ma non c'entrano niente con la mia domanda sui corrugati.ovvio che magari passo anche 2 corrugati uno accanto all'altro per evitare di tribolare col passaggio dei fili,ma volevo sapere se secondo voi come concetto è giusto e se la disposizione va bene,tenendo conto che li passo sottoterra accanto al battiscopa per poi salire... Link al commento Condividi su altri siti More sharing options...
eventualmente Inserita: 29 marzo 2010 Segnala Share Inserita: 29 marzo 2010 ma io non farei proprio cosi...non dico che partirei dalla casetta di derivazione a ogni presa, ma quasi.utilizzi sicuramente piu cavo e tubo, ma hai una distribuzione della corrente migliore.Se tu utilizzi una presa alla "fine" dell'anello va a finire che passa corrente anche per le altre prese fino alla giunta con la dorsale...io prevederei un altro sistema.e poi metti che si rompe un cavo a inizio anello...non ti va tutto il gruppo prese di quell anello Link al commento Condividi su altri siti More sharing options...
danielecarrrr Inserita: 30 marzo 2010 Segnala Share Inserita: 30 marzo 2010 perfetto,è proprio quello che volevo sentirmi dire,avevo questo dubbio,quindi meglio andare con la cass derivaz ad ogni presa...? Link al commento Condividi su altri siti More sharing options...
eventualmente Inserita: 30 marzo 2010 Segnala Share Inserita: 30 marzo 2010 si proprio cosi....poi dalla cassetta di derivazione parti con le dorsali fino al centralino...io di solito per le dorsali uso il 4mmq per la forza e il 2.5mmq per le luci.ciao e buon lavoro Link al commento Condividi su altri siti More sharing options...
danielecarrrr Inserita: 30 marzo 2010 Segnala Share Inserita: 30 marzo 2010 quindi dovrei fare cosi?come puoi vedere dalla scatola di derivazione faccio partire 12 corrugati per le prese varie ok? Link al commento Condividi su altri siti More sharing options...
kevinpirola Inserita: 1 aprile 2010 Segnala Share Inserita: 1 aprile 2010 mm no, a me non convince molto, come ti spiegava -eventualmente- [che in questo caso è il suo nick ] potresti portarti delle dorsali nelle varie stanze.cerco di spiegarmidalla cassetta di derivazione principale fai partire 1 corrugato per ogni stanza in cui far passare fase e neutro da 4mmq per la forza motrice e fase e neutro 2,5mmq per la luce + la massa giallo verde per tutto. In un corrugato da 20 li fai passare tranquillamente.Poi in ogni stanza metti una nuova cassetta di derivazione da cui a questo punto fai partire un corrugato per ogni presa + un corrugato per luce (con tutti i vari passaggi di eventuali deviatori invertitori e interruttori). In questo modo hai comunque tutto separato però ti risparmi un bel po' di corrugato.OCCHIOche tv, sat, lan, telefono, cip, ciop e silvestro NON DEVONO passare per le cassette di derivazione della corrente nè tantomeno nei tubi corrugati corrispondenti. Al massimo nella cassetta generale puoi mettere gli appositi separatori di plastica e lavorare su una parte della cassetta con la 220 e sull'altra con il segnale. Il tutto però deve essere sempre accuratamente separato. Sia per la sicurezza che non è mai troppa sia per limitare i disturbi derivati dalla rete.Buon lavoro Gianmarco Link al commento Condividi su altri siti More sharing options...
eventualmente Inserita: 1 aprile 2010 Segnala Share Inserita: 1 aprile 2010 In un corrugato da 20 li fai passare tranquillamente.meglio uno da 25 per la forza e 20 per la luce, bus, e altro Link al commento Condividi su altri siti More sharing options...
kevinpirola Inserita: 1 aprile 2010 Segnala Share Inserita: 1 aprile 2010 (modificato) si concordo. il mio era il limite minimo in cui ci sarebbero passati avevo tralasciato l'ovvio sovradimensionamento edit:anzi, io valuterei bene bus e simili, se sono molte cose da far passare (tv, satellitare, bus, telefono) li separerei eventualmente in 2 parti con due corrugati. ad esempio tv+ sat che bene o male fanno sempre lo stesso giro, e bus + telefono, passarli tutti e 4 insieme potrebbe essere inutile, non ci vedo un pc vicino alla tv (intendo ovviamente come utilizzo pratico, ma poi questo è a discrezione del costruttore ) Modificato: 1 aprile 2010 da kevinpirola Link al commento Condividi su altri siti More sharing options...
danielecarrrr Inserita: 1 aprile 2010 Segnala Share Inserita: 1 aprile 2010 kevinpirola io volevo fare proprio cosi,piu o meno.....sat,lan tv eccc....lasciamoli apparte per adesso anche perchè come detto da te staranno da parte....ora io dalla cassetta di derivazione principare sarei andato alle cassette secondarie come detto da te,ma con sei fili (fase neutro e terra da 2.5 per la forza e fase terra e neutro da 1.5 per le luci e prese 10A) il cavo da 4 l'avrei usato dal quadro alla cassetta principale.poi le cassette secondare diciamo che non le avrei proprio divise per stanza,ma per zone,mi spiego meglio,avrei diviso la casa in 4 e quindi 4 cassette,nel primo disegno ne manca 1....una per il saloneuna per cameretta e bagno grandeuna per camera e bagno piccolo+ripostigliouna per cucina e corridoio.teniamo conto che lavastoviglie frigo forno e cappa avrebbero un magneto e corrugati per loro sul quadro.dite che non va?magari se qualcuno a tempo per farmi uno schizzetto,la piantina della casa la trovate sopra Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora