coquinati Inserito: 6 giugno 2014 Segnala Inserito: 6 giugno 2014 ciao ragazzi ho un dubbio , che non riesco pienamente colmare, guardando i manuali mi sono confuso ancora di più;allora mettiamo il caso che un varole di W#16#1002 , se io divido in 2 byte o un valore di 10(hex) sul primo byte e 02 hex sul secondo byte, leggendo i manuali vedo che le word sono suddivise in BCD . senza confusionarvi con li mie idee che mi passano per testa, come è possibile una cosa del genere? grazie e ciao
bigalex Inserita: 7 giugno 2014 Segnala Inserita: 7 giugno 2014 (modificato) A quale PLC fai riferimento ? Comunque W#16# è relativo alla rappresentazione di un valore Esadecimale di una word . bigalex Modificato: 7 giugno 2014 da bigalex
coquinati Inserita: 7 giugno 2014 Autore Segnala Inserita: 7 giugno 2014 Scusate mi sono dimenticato di specificare il plc .. Ormai non ne faccio più caso ., vedo solo siemens , di specifico s7 300 . Si infatti vedo che possiede una maschera in esadecimale , ma penso che riguarda solo la lettura , ho sbaglio ? . Perchè da quanto leggo al interno del sistema è rappresentato in BCD, Inviato dall'app. Mobile di PLC Forum da iPhone6,2
lucios Inserita: 7 giugno 2014 Segnala Inserita: 7 giugno 2014 Ma a quale manuale ti stai riferendo? Con Siemens se tu scrivi W#16#1002, che equivale al decimale 4098, ti troverai a 1 il secondo e il tredicesimo bit della word. La codifica BCD è basata su 4 bit (nibble) ed è un modo per rappresentare numeri ad es. su display classici a sette segmenti facendo corrispondere ad ogni display una cifra.
coquinati Inserita: 8 giugno 2014 Autore Segnala Inserita: 8 giugno 2014 Ma a quale manuale ti stai riferendo? sul html di siemens . Con Siemens se tu scrivi W#16#1002, che equivale al decimale 4098, ti troverai a 1 il secondo e il tredicesimo bit della word. ok , praticamente è cosi: byte 0 byte1 word binario : 00010000/00000010 | | | | dec : 16 02 // tenendo conto di due byte e non di una word hex : 10 02 // tenendo conto di due byte e non di una word ma è giusto il mio ragionamento?
lucios Inserita: 9 giugno 2014 Segnala Inserita: 9 giugno 2014 ma è giusto il mio ragionamento? Si perchè, Siemens usa la modalità big-endian per memorizzare i dati perciò il byte di indirizzo più basso contiene il peso alto del dato. Nel caso specifico, ipotizzando che tu stia lavorando su MW0 ti troverai: MB0 = 16 (0x10) MB1 = 2 (0x2)
coquinati Inserita: 9 giugno 2014 Autore Segnala Inserita: 9 giugno 2014 grazie mille lucios se posso faccio un altra domanda , prendendo l'esempio sottostante: VAR_TEMP Sorgente : ANY; Destinazione : ANY; END_VAR BEGIN LAR1 P#sorgente; L B#16#10; T LB[AR1,P#0.0]; L B#16#02; T LB[AR1,P#1.0]; L 10; T LW[AR1,P#2.0]; L 22; T LW[AR1,P#4.0]; L P#DBX11.0; T LD[AR1,P#6.0]; LAR1 P#destinaz.; L B#16#10; T LB[AR1,P#0.0]; L B#16#02; T LB[AR1,P#1.0]; L 10; T LW[AR1,P#2.0]; L 33; T LW[AR1,P#4.0];L P#DBX202.0; T LD[AR1,P#6.0]; CALL SFC 20 ( SRCBLK := sorgente, RET_VAL := MW 12, DSTBLK := destinazione ); END_FUNCTION dove ho sottolineato di rosso non riesco capire molto bene quelle che succede, praticamente carico DBX XX.X su un formato pointer ( in questo caso step 7 automaticamente mi alloca area di memoria, byte.bit, nei 48bit del formato pointer, in teoria dovrebbe essere cosi) poi li trasferisco nella DW any da indirizzo da 6.0 a 9. 7 , se si nota il formato pointer è preciso identico al formato any ( partendo da byte 6 chiaramente ), in questo modo riesco a trasferire tutti i 48 bit del pointer gia ordinati , nel 48 bit del ANY? . essendo le prime volte che uso questi parametri vorrei acertarmi che sto seguendo un ragionamento corretto . grazie milleee
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