meccanico Inserito: 12 febbraio 2006 Segnala Inserito: 12 febbraio 2006 ogni tanto mi trovo a fare qualche piccola manutenzione su plc della siemens 200 e 300 .Ho sempore pensato che i plc in considerassero i valori numerici in parola o doppia parola dotati di segno ,con le limitazioni ai valori massimie minimi che questo comporta.A questo punto non mi spiego perchè nella tabella di stato del siemens 200 c'è la possibilità di visualizzare i dati con segno oppure senza segno.Grazzie a tutti
Dario Valeri Inserita: 12 febbraio 2006 Segnala Inserita: 12 febbraio 2006 ciaoper rendere le cose piu' semplici a noi , esseri umani....dario
meccanico Inserita: 12 febbraio 2006 Autore Segnala Inserita: 12 febbraio 2006 essendo certo che il plc non ha origini divine , potresti essere più chiaro?Grazie
Savino Inserita: 12 febbraio 2006 Segnala Inserita: 12 febbraio 2006 (modificato) Salve meccanico,A questo punto non mi spiego perchè nella tabella di stato del siemens 200 c'è la possibilità di visualizzare i dati con segno oppure senza segnoDunque,S7200 Tipo dati elementari/descrizione range INT : interi con segno -32768 / +32767 Parola: interi senza segno 0 / 65535 DINT: interi con segno -2147483648 / +2147483647 DWORD: interi senza segno 0 / 4294967295 S7300 Tipo dati elementari/descrizione range INT : interi con segno -32768 / +32767 WORD: interi senza segno 0 / 65535 DINT: interi con segno -2147483648 / +2147483647 DWORD: interi senza segno 0 / 4294967295 Ciao. Modificato: 12 febbraio 2006 da Savino
BAntonio Inserita: 12 febbraio 2006 Segnala Inserita: 12 febbraio 2006 In S7-300 è possibile eseguire il confronto (maggiore, minore,etc..) tra numeri senza segno?
Savino Inserita: 12 febbraio 2006 Segnala Inserita: 12 febbraio 2006 (modificato) In S7-300 è possibile eseguire il confronto (maggiore, minore,etc..) tra numeri senza segno?Devi utilizzare variabili formatate a WORD.WORD Var1= 50980;WORD Var2= 10980;Poi confronti.....Non puoi caricare -10 su Var1 e Var2 . Allora utilizzi variabile del tipo INT.Se vuoi confrontare in un intervalo -10 / +50980 allora utlizzi del tipo DINT -2147483648 /+2147483647 per mantenere la portabilita del tipo di data, meglio. Ciao Modificato: 12 febbraio 2006 da Savino
meccanico Inserita: 17 febbraio 2006 Autore Segnala Inserita: 17 febbraio 2006 INT : interi con segno -32768 / +32767Parola: interi senza segno 0 / 65535Ok , ma queste due tipologie di dati hanno lo stesso formato, word : 16 bit.a questo punto come fa il plc a distinguere uno dall'altro?Scusate ma ho bisogno di una spiegazione semplice semplice,grazie.
Savino Inserita: 17 febbraio 2006 Segnala Inserita: 17 febbraio 2006 come fa il plc a distinguere uno dall'altro?Per il PLC sono sempre 16 bits.E' il sistema operativo che governa che ne fa' la distinzione tra un tipo di data ed l'altra.Se questo formata una variabile INT su i 16 bits,allora su intervalo vale -32768 / +32767 se la formata a WORD vale 0 / 65535.Ciao.
meccanico Inserita: 17 febbraio 2006 Autore Segnala Inserita: 17 febbraio 2006 Savino , per prima cosa ti ringrazio per pazienza e gentilezza, poi , se ho ben capito ;sono io a fornire al plc l'indicazione del tipo di dato attraverso l'inserimento da pannelli operatori vari ( op7 etc..) oppure se il dato è il risultato di un calcolo il plc si arrangia in funzione del tipo di operazione che ha eseguito.Correggimi se sbaglio
Savino Inserita: 17 febbraio 2006 Segnala Inserita: 17 febbraio 2006 Savino , per prima cosa ti ringrazio per pazienza e gentilezzaFigurati.. sono io a fornire al plc l'indicazione del tipo di dato attraverso l'inserimento da pannelli operatori vari ( op7 etc..)Certo.Quando tu selezioni un tipo di campo per la variabile sul OP, ecc.., imposti anche il suo data type.Anche sul firmware PLC, le variabile utilizzate dal codice programma sono formatate con un determinato tipo di data.Esempio.Suponiamo che tu hai un registro a 16 bits DW0 = 1111 1111 1111 1111.Se la variabile DW0 e' del tipo INT rappressentera' il valore -32768.Se e' del tipo WORD rappressentera' 65535.Saluti.
Savino Inserita: 17 febbraio 2006 Segnala Inserita: 17 febbraio 2006 (modificato) Suponiamo che tu hai un registro a 16 bits DW0 = 1111 1111 1111 1111.Se la variabile DW0 e' del tipo INT rappressentera' il valore -32768.Se e' del tipo WORD rappressentera' 65535.INT rappressentera' il valore -32768. errato I am very sorry. Ero andato a memoria.il valore e' -1A -32768 corrisponde il binario 1000000000000000Dunque, importante e' mantenere una portabilita' del tipo di data dichiarato per una determinata variabile in fase di costruzione del oggetto.Ad esempio,in S7300/400 per costruire una DW in un DB , tu puoi impostare il tipo di dati semplici INT, WORD, ecc... quindi DB10 DW0 (VAR1) [INT] = 0 (intervallo -32678/32677) DW2 (VAR2) [WORD] = W#16#0 ( intervallo W#16#0 / W#16#FFFF) Come vedi, sulla DW2 non puoi scrivere in decimale, ma il numero HEX FFFF deve essere considerato come65535 perche e' stato costruito come tale.( vedi Guida Step 7 Tipi di dati semplici)Su DW0 in cambio, ti accetta bene l'intervallo sopra definito.E' molto importante mantenere la portabilita' del tipo di data assegnate alle variabili di un sistema in fase di costruzione. Per esempio 4 bytes di dati potrebbe essere interpretato come un Long integer oppure come un Floating point number in una coda di dati per un protocollo di communicazione. Saluti. Modificato: 17 febbraio 2006 da Savino
Savino Inserita: 19 febbraio 2006 Segnala Inserita: 19 febbraio 2006 (modificato) Ciao,Torniamo alla base della domanda, perche sulla seconda parte ne avevi ragione Ho sempore pensato che i plc in considerassero i valori numerici in parola o doppia parola dotati di segno ,con le limitazioni ai valori massimie minimi che questo comportaA questo punto non mi spiego perchè nella tabella di stato del siemens 200 c'è la possibilità di visualizzare i dati con segno oppure senza segno.Dunque la tabella di stato del S7-MicroWin32 sotto la voce formato(Display format)della barra del menu presenta un sottomenu:Con segnoSenza segnoEsadecimaleBinarioASCIIIn cambio la tabella delle variabili del S7 Manager non presenta (al meno fino la V5.2+SP1)le possibilita' di sceglire tra con segno/senza segno:BinarioBooleanDecimaleEsadecimaleFloating PointASCIIDateTimeSimatic TimeTime of dayCounterPointerQuindi sotto quel aspetto,la funzione del S7-MicroWin32 si presenta molto piu' ricca di performance.Comunque per quanto riguarda la prima parte della domanda, per gli S7300/400 , sono valide le affermazioni dei mie post precedenti.Ad esempio se la DB10.DBW 2 viene costruita come [WORD] = ( intervallo W#16#0 / W#16#FFFF => 0/65535) allora questa implementazione di codice ...........L DB10.DBW 2L W#16#E964== ISPB ETT1...........presume un confronto del registro col numero decimale +59748 e non col -5788.W#16#E964 = WORD +59748.W#16#E964= INT -5788 Praticamente, la funzione Decimale della tabella delle variabile per S7300/400 formata in rappresentazione in complemento a due del numero contenuto sul registro 16 bits.Saluti. Modificato: 19 febbraio 2006 da Savino
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