meccanico Inserito: 9 agosto 2007 Segnala Share Inserito: 9 agosto 2007 probabilmente la mia domanda non ha valore pratico perchè il dubbio che ho è facilmente risolvibile con l'uso di dati in formato equivalente : word con word e dword con dword , ma egualmente voglio proporre il mio quesito.Ho notato che mentre è possibile , facendo attenzione ai limiti numerici, eseguire delle operazioni aritmetiche tra dati di diverso formato non è possibile confrontare due valori contenuti in dati di diverso formato.Quale è la spiegazione?Grazie Link al commento Condividi su altri siti More sharing options...
RickyM Inserita: 10 agosto 2007 Segnala Share Inserita: 10 agosto 2007 Che io sappia li devi prima convertire. Oppure se per esempio devi confrontare un byte con un intero (se < di 127) fai un move del byte in un intero, magari temporaneo e poi lo confronti.Ciao Link al commento Condividi su altri siti More sharing options...
meccanico Inserita: 11 agosto 2007 Autore Segnala Share Inserita: 11 agosto 2007 Grazie RicKyM; certamente , come ho scritto nella mia domanda , il metodo per raggirare il problema è semplice .Ma sono interessato alla motivazione , è una curiosità che mi piacerebbe soddisfare . Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 11 agosto 2007 Segnala Share Inserita: 11 agosto 2007 La ragione è semplice: le istruzioni che operano il confronto prevedono di confrontare solo dati di identico formato, è una questione di compilatore. Link al commento Condividi su altri siti More sharing options...
CLERSUD Inserita: 22 agosto 2007 Segnala Share Inserita: 22 agosto 2007 In awl è possibile confrontare anche numeri di formato diversoesempio:---L MW0L MB2 (tenere presente al valore max però =255)==ISPBN A001------Funziona lo faccio sempre! Link al commento Condividi su altri siti More sharing options...
Henon Inserita: 22 agosto 2007 Segnala Share Inserita: 22 agosto 2007 il Confronto avviene tramite la ALU della CPU,questa semplicemente sono dei comparatori Binari,quindi se al ALU vengono passati dei Valori con peso diversi (Binario) in confronto potrebbe essere sfalsato.Quindi in ogni Caso devi sempre fare un operazione di Casting, per rendere i 2 dati di valore adeguato per eseguire un confronto corretto.Cioè rendere i dati adeguati per il confronto o per eseguire un operazione tra questi 2 Dati.per esempio se passi un valore Real (valore=100.0) e un Valore DINT (valore=100), la Codifica Binaria che viene inviata alla ALU è certamente diversa, e quindi i 2 dati sono sicuramente diversi a livello di Peso Binario.Anche 2 persone che parlano 2 lingue diverse incontrono questo problema (Cento = Hundreds) il confronto non è sicuramente uguale, specialmente per una terza persona che non conosce nessuna di queste lingua. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 23 agosto 2007 Segnala Share Inserita: 23 agosto 2007 Come già detto da CLERSUD in AWL puoi confrontare anche valori di formato diverso.S7-300 lavora con due accumulatori da 32 bit. Se tu carichi nell'accumulatore un byte o una word tutti gli altri bit dell'accumulatore verranno messi a zero, ma l'accumulatore rimane comunque di 32 bit.Il confronto avviene sempre tra i due accumulatori (32 bit). L'unica cosa che conta è l'operatore che usi. Se fai un confronto tra INT, anche se in un accumulatore hai caricato un valore a 32 bit, i 16 bit più significativi verranno ignorati, ed il bit 15 verrà interpretato come bit di segno.Esempio:L 2147483647 // Hex 7FFF FFFF L L#0 >I = M0.0 Dalla comparazione risulterà che 2147483647 è negativo, perché con l'istruzione ">I" si effettua una comparazione considerando solo i 16 bit meno significativi, con il sedicesimo bit (bit 15) interpretato come bit di segno. Il confronto avviene tra FFFF (letto come -32768) e 0. Il risultato della comparazione sarà diverso se si usa ">D" al posto di ">I". Si deve fare attenzione anche se si carica nell'accumulatore un valore in formato byte. Verranno in questo caso caricati nell'accumulatore solo 8 bit, e gli altri 24 bit verranno messi a zero. Non c'è però l'istruzione per il confronto di variabili formato byte, quindi il confronto avverrà comunque considerando 16 bit (usando >I), oppure 32 bit (usando >D). Esempio: L -1 T MB100 L MB100 L 0 >I = M0.0Dalla comparazione risulterà che il valore di MB100 è maggiore di zero, perché nell'accumulatore verrà caricato il valore Hex 0000 00FF che, se valutato come INT oppure come DINT (uniche possibilità offerte da S7), è un valore positivo.Altra storia se si parla di comparazioni con valori REAL. In questo caso confrontare valori di formato diverso causa solo pasticci. Link al commento Condividi su altri siti More sharing options...
Luca Bab Inserita: 23 agosto 2007 Segnala Share Inserita: 23 agosto 2007 Come già detto da CLERSUD in AWL puoi confrontare anche valori di formato diversoanche in KOP, ma devi togliere il controllo su tipo di operandi che lo trovi in :In editazione dei blocchi / strumenti / impostazioni / KOP FUP( ovviamente non serve solo a quello )ciaoLuca Link al commento Condividi su altri siti More sharing options...
Nesus Inserita: 17 settembre 2007 Segnala Share Inserita: 17 settembre 2007 come faccio invece a fare un confronto tra bit:Esempio:L 2#0 // carica valore bit 0L db1.dbx 1.0 // visto che non accetta il load di singoli bit come faccio ad ovviare a ciò? nel mio caso ho "chiudi T1A" su questo indirizzo Link al commento Condividi su altri siti More sharing options...
Nesus Inserita: 17 settembre 2007 Segnala Share Inserita: 17 settembre 2007 mmm ho trovato la soluzione da solo >_< sto programma mi sta fondendo il cervello Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 17 settembre 2007 Segnala Share Inserita: 17 settembre 2007 Gli errori di programmazione dovuti all'uso di formati diversi sono i più subdoli e a volte difficili da trovare quindi è meglio abituarsi a lavorare con i giusti formati. Io qualche volta antepongo una lettera minuscola (w,i,r,d) all'inizio del simbolo per non sbagliare con i formati, in questo modo la stessa variabile posso averla anche in 2 o più formati diversi senza fare confusione:L iVariabile ITD T dVariabile DTR T rVariabile Link al commento Condividi su altri siti More sharing options...
franco2 Inserita: 29 dicembre 2008 Segnala Share Inserita: 29 dicembre 2008 Salve a tutti e auguri di buone feste.Avrei un quesito da porvi.Nella mia cucina purtroppo ho poche prese elettriche. Attualmente ad una sola di queste sono collegati il frigorifero e il freezer. Quando è stato deciso di collegarvi il freezer, un elettricista amico di famiglia ha cambiato i fili della presa mettendovene altri di sezione maggiore e non so se collegandosi alla cassetta di derivazione o a un'altra presa (non conosco la sezione poichè il lavoro è avvenuto un bel pò di anni fa). Ora vorrei collegare anche il fornetto elettrico: quanto dovrebbe essere la sezione ideale per poter stare "tranquillo" con i tre elettrodomestici collegati e tutti in funzione contemporaneamente? Il vero problema è che il mio appartamento ha circa 40 anni se non di più, e anche l'impianto elettrico risale a quell'epoca, quindi non so che tubi troverò per far passare cavi più grossi. L'ideale sarebbe un'altra presa, ma dovrei rimpere un po di muri...consigli? Link al commento Condividi su altri siti More sharing options...
Cipone Inserita: 29 dicembre 2008 Segnala Share Inserita: 29 dicembre 2008 ciao, prima di tutto dovresti controllare l'attuale sezione dei fili di quella presa sperando che siano da almeno 2,5mmq e che quei fili si derivino ovviamente da una linea di egual sezione o maggiore. Il tutto dovrebbe anche essere protetto da un interruttore magnetotermico da 16A nel centralino.Il tuo centralino come è composto?La messa a terra è presente? Link al commento Condividi su altri siti More sharing options...
franco2 Inserita: 29 dicembre 2008 Segnala Share Inserita: 29 dicembre 2008 Allora, la messa a terra è presente, è stato messo da qualche anno a questa parte a norma l'intero condominio e gli appartamenti.Il centralino ha il "salvavita" da 16A se è questo che intendi (perdona la mia ignoranza sui termini).Quindi attualmente per frigo e freezer andrebbero bene i cavi da 2,5mm?se volessi aggiungere anche il fornetto a quanto dovrei arrivare? Link al commento Condividi su altri siti More sharing options...
ivano65 Inserita: 29 dicembre 2008 Segnala Share Inserita: 29 dicembre 2008 si tratta di un fornetto portatile da 500 / 1000w o un forno da 3KW ?ivano65 Link al commento Condividi su altri siti More sharing options...
arrr Inserita: 30 dicembre 2008 Segnala Share Inserita: 30 dicembre 2008 Per prima cosa devi verificare che i cavi siano protetti adeguatamente:molto genericamente una linea da 2.5mmq è ben protetta con um mgt da 16A.Attualmente ad una sola di queste sono collegati il frigorifero e il freezer.Presumo che frigo e freezer sono collegati con una tripla essendoci una sola presa,e non è una buona cosa.Che tipo di forno è?Se è un forno da 1000-1300W e la sezione dei cavi è almeno 2.5mmq puoi mettere altre 2 prese nella scatola 503 in cascata a quella che hai già.Se il forno richiede una potenza maggiore è consigliabile passare una nuova linea. Link al commento Condividi su altri siti More sharing options...
franco2 Inserita: 4 gennaio 2009 Segnala Share Inserita: 4 gennaio 2009 Grazie a tutti delle risposte.Il fornetto se non ricordo male deve essere da 1500 -1800 W.Purtroppo sono collegati con una tripla, la cassetta è un pò vecchiotta, di quelle rotonde per intenderci e in più il freezer ha una spina "tedesca", quindi presumo che per ottenere un risultato ottimale dovrei smurare la cassetta e sostituirla con una di tipo recente vero? Link al commento Condividi su altri siti More sharing options...
franco2 Inserita: 4 gennaio 2009 Segnala Share Inserita: 4 gennaio 2009 (modificato) colegando come è adesso, ovvero frigo freezer e fornetto alla tripla, anche se i fili sono della sezione giusta, rischio di fondere la tripla vero? Esistono triple che sopportino carichi maggiori ai canonici 1500W? Modificato: 4 gennaio 2009 da franco2 Link al commento Condividi su altri siti More sharing options...
arrr Inserita: 4 gennaio 2009 Segnala Share Inserita: 4 gennaio 2009 quindi presumo che per ottenere un risultato ottimale dovrei smurare la cassetta e sostituirla con una di tipo recente veroSe è possibile da fare è la miglior soluzione,installando una 504 in modo da avere una presa tedesca(che occupa 2 spazi) più due italiane bipasso.Questo solo se sei sicurissimo che sia la sezione dei cavi sia la loro protezione sia adeguata.colegando come è adesso, ovvero frigo freezer e fornetto alla tripla, anche se i fili sono della sezione giusta, rischio di fondere la tripla vero? Esistono triple che sopportino carichi maggiori ai canonici 1500W?Le triple sono elementi pericolosissimi:spesso molto incidenti si verificano per un loro uso inconsapevole.Se usi una tripla con una potenza maggiore di quella supportata rischi di cuocerla;non ho mai visto triple con una portata maggiore di 1000-1500W ma anche se ci fossero ne sconsiglierei comunque l'uso per carichi che assorbono molto. Link al commento Condividi su altri siti More sharing options...
Carlo Albinoni Inserita: 4 gennaio 2009 Segnala Share Inserita: 4 gennaio 2009 Esistono triple che sopportino carichi maggiori ai canonici 1500W?No: il limite dei 1500 W è imposto dalla norma di prodotto di tali accessori. Link al commento Condividi su altri siti More sharing options...
b.m.tecno impianti srl Inserita: 4 gennaio 2009 Segnala Share Inserita: 4 gennaio 2009 prima di tutto dovresti controllare la potenza del tuo contatore ,se il caso prevede il funzianamento insieme dei tuoi elettrodomestici ,la dorsale deve essere almeno di 4 mmq. ed anche la derivazione per questa esigenza , separe anche le prese 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