Reverendo bit Inserito: 15 novembre 2010 Segnala Share Inserito: 15 novembre 2010 Salve Vorrei chiedervi se nelle librerie di Step7 vi è una funzione per convertire un nemero intero in bitGrazie Saluti da Reverendo Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 15 novembre 2010 Segnala Share Inserita: 15 novembre 2010 Intendi da decimale o esadecimale in binario? Link al commento Condividi su altri siti More sharing options...
Reverendo bit Inserita: 15 novembre 2010 Autore Segnala Share Inserita: 15 novembre 2010 Da decimale in binario. Link al commento Condividi su altri siti More sharing options...
mubeta Inserita: 15 novembre 2010 Segnala Share Inserita: 15 novembre 2010 Per come hai scritto il titolo e la domanda, sembra che tu voglia estrarre, da un numero i singoli bit. Però, appunto, non sei stato affatto chiaro:1) un numero intero, con o senza segno, che sia ad 8, 16 o 32 bit, è contenuto all'interno, rispettivamente, di un byte, di una word, o di una dword. Questi dati possono poi essere interpretati, e ne nascono le dichiarazioni formali: char, int, unsigned int, long, etc, etc ... senza virgola od in virgola fissa; tante dichiarazioni formali per dire sempre la stessa cosa, da interpretarsi in vari modi.2) A meno che non si tratti di numeri in formato BCD, o numeri in virgola mobile, allora non esiste più conversione, ma semmai, emplicemente adattamento di lunghezza: da byte a word oppure a dword: (8, 16 o 32 bit).3) Quando manipoli quindi i numeri, devi, in buona sostanza, sapere se: sono in formato BCD o doppia virgola, ed allora serve un vera e propria conversione di formato. Altrimenti, devi sapere se sono memorizzati in un byte, in una word od in una dword. Un intero, ad esempio, è un numero di due byte, ovvero una word, con segno, che ha come campo possibile da -32767 a +32768. In questo caso, almeno nei PLC, non esiste la conversione da intero a bit, la variabile sarà contenuta in un area di memoria definita, con indirizzo assoluto, o simbolico che sia, basterà interrogare i 16 bit della variabile. (I PLC lo permettono). Quindi, se ad esempio la variabile "contatore" è dichiarata nella MW100, ti basterà leggere i singoli bit, nel caso di Siemens, da M101.0, fino a M100.7.4) Non ti racconto qui la storia di little endian e big endian, prendi google, cerchi i due termini, e capirari tutto, anche perché, almeno con Siemens, bisogna sembre invertire il byte superiore con quello inferiore.Questa la risposta per il tipo di domanda fatta nel titolo. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 15 novembre 2010 Segnala Share Inserita: 15 novembre 2010 (modificato) Forse se spiegassi con qualche parola in più quello che ti serve, si riuscirebbe anche a darti qualche "dritta". Non temere, su PLCForum scrrivere dieci parole o cento, si spende sempre la stessa cifra: 0,00€ Modificato: 15 novembre 2010 da Livio Orsini Link al commento Condividi su altri siti More sharing options...
roberto8303 Inserita: 15 novembre 2010 Segnala Share Inserita: 15 novembre 2010 Non temere, su PLCForum scrrivere dieci parole o cento, si spende sempre la stessa cifra: 0,00€ bella questa!! Link al commento Condividi su altri siti More sharing options...
Reverendo bit Inserita: 15 novembre 2010 Autore Segnala Share Inserita: 15 novembre 2010 Scusate per la risposta un po succinta ma è stata fatta al volo in piccolissimo buci di tempo. comunque cerco di spiegarmi un po meglio:Per come hai scritto il titolo e la domanda, sembra che tu voglia estrarre, da un numero i singoli bitè esattamente quello che devo fare, scambiare tramite modbus verso il DCS, sia in lettura che in scrittura dell variabili booleane e reali.Per i reali ho usato la funzione CEIL, che converte da virgola mobile in numero DINT, per i booleani mi serviva capire come posso sapere lo stato del singolo bit all'interno dalla variabile Intera a 16bit che scrive il DCS.Altrimenti, devi sapere se sono memorizzati in un byte, in una word od in una dword. Un intero, ad esempio, è un numero di due byte, ovvero una word, con segno, che ha come campo possibile da -32767 a +32768. In questo caso, almeno nei PLC, non esiste la conversione da intero a bit, la variabile sarà contenuta in un area di memoria definita, con indirizzo assoluto, o simbolico che sia, basterà interrogare i 16 bit della variabile. (I PLC lo permettono). Quindi, se ad esempio la variabile "contatore" è dichiarata nella MW100, ti basterà leggere i singoli bit, nel caso di Siemens, da M101.0, fino a M100.7.Se ho ben capito:Mettiamo il caso che il DCS mi scrive una variabile intera a 16 bit, nella DB1.DBW0 (dichiarata come intero).Anche se la DB1.DBW0 è dichiarata come intero all'interno del DB, posso interrogare lo stato dei singoli bit come ad esempio DB1.DBX0.7 ?E viceversa se, se volessi scrivere un singolo bit della DB1.DBW0, posso farlo ad esempio con L DB5.DBX0.7 T DB1.DBW0 (oppure DB1.DBX0.7)?Grazie a tutti Saluti da Reverendo Link al commento Condividi su altri siti More sharing options...
ken Inserita: 15 novembre 2010 Segnala Share Inserita: 15 novembre 2010 Mettiamo il caso che il DCS mi scrive una variabile intera a 16 bit, nella DB1.DBW0 (dichiarata come intero).Anche se la DB1.DBW0 è dichiarata come intero all'interno del DB, posso interrogare lo stato dei singoli bit come ad esempio DB1.DBX0.7 ?Si puoi benissimo, certo, non vedi il commento del singolo bit.Volendo potresti fare anche quello copiando la tua word/Dword in un merker word/dword e nel simbolico scrivere un commento bit per bitE viceversa se, se volessi scrivere un singolo bit della DB1.DBW0, posso farlo ad esempio con L DB5.DBX0.7T DB1.DBW0 (oppure DB1.DBX0.7)?In quella forma no. Puoi però scrivere u DB5.DBX0.7 =DB1.DBX0.7 e così via per tutti i bit Link al commento Condividi su altri siti More sharing options...
Reverendo bit Inserita: 15 novembre 2010 Autore Segnala Share Inserita: 15 novembre 2010 Grazie a tutti ragazzi messaggio ricevuto Domani provo, e se mi viene qualche dubbio farò un fischioSaluti da Reverendo 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