Vai al contenuto
PLC Forum


Confronto, Come Fa?


meccanico

Messaggi consigliati

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


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

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

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

  • 2 weeks later...

In awl è possibile confrontare anche numeri di formato diverso

esempio:

---

L MW0

L MB2 (tenere presente al valore max però =255)

==I

SPBN A001

---

---

Funziona lo faccio sempre!

Link al commento
Condividi su altri siti

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

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.0

Dalla 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

Come già detto da CLERSUD in AWL puoi confrontare anche valori di formato diverso

anche 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 )

ciao

Luca

Link al commento
Condividi su altri siti

  • 4 weeks later...

come faccio invece a fare un confronto tra bit:

Esempio:

L 2#0 // carica valore bit 0

L 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

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

  • 1 year later...

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

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

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

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

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

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: da franco2
Link al commento
Condividi su altri siti

quindi presumo che per ottenere un risultato ottimale dovrei smurare la cassetta e sostituirla con una di tipo recente vero

Se è 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

Carlo Albinoni
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

b.m.tecno impianti srl

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

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...