Pappardella Inserito: ieri dalle 19:37 Segnala Inserito: ieri dalle 19:37 Ciao a tutti, scusate una info. Ma il simbolo cancelletto nel linguaggio Omron di CX o di Syswin identifica una variabile esadecimale? quindi #10 equivale a 16 in decimale? Grazie come sempre, buona serata!
Marco Fornaciari Inserita: ieri dalle 21:19 Segnala Inserita: ieri dalle 21:19 In verità dipende dal contesto dell'istruzione, e qui dire che Omron è caso di UCCS è essere buoni. Dove devi gestire numeri di fatto è il BCD, per operazioni logiche è Esadecimale, dopo di che viene la visualizzazione. Quindi #10 può essere 10 in BCD, ovvero 16 in esadecimale, devi saperlo te quando scrivi il programma: occhio alle comparazioni, il valore può essere considerato negativo. E già che ci siamo la D o (le DM sono delle vecchie serie C200H e derivati) a 16 bit vale da -.32768 a 32767, ma nei temporizzatori in binario TIMX (i contatori di fatto mai usati, quindi non ricordo) vale 65535: che si ripete anche per doppie D.
Ctec Inserita: 8 ore fa Segnala Inserita: 8 ore fa Sempre il solito, la notazione. Bisogna sempre distinguere fra dato e la sua rappresentazione. Per i "computer" (il PLC lo è comunque), l'unico dato disponibile è in formato binario, il bit, che di solito è raggruppato in gruppi di 8 (byte), 16 (word), 32 (doppia word) o 64 (quadrupla word). In ciascuno di essi possono essere memorizzati 2, 256, 65536, 4.294.967.296, 8.446.744.073.709.551.616 valori diversi. Poi esiste la notazione, cioè il nostro modo convenzionale di interpretare il valore memorizzato. Il bit è sostanzialmente un BOOL che ha valore 1 (vero) o 0 (falso) Il byte è normalmente intero (uchar) e quindi contiene da 0 a 255 in decimale. Oppure lo stesso valore può essere da 00h a FFh (è lo stesso identico valore, ma solo indicato [notato] diversamente). Per il PLC sono la stessa cosa. Trascuro l'ottale che oramai (se Dio vuole) non è più usato. Esisteva poi il BCD (Binary Coded Decimal) che è un sottoinsieme dell'esadecimale, in pratica ogni cifra esadecimale rappresentava in binario una cifra decimale. Quindi si potevano memorizzare solo 100 valori (da 00h a 99h) con valori da 0 a 9 solamente per ciascuna cifra. Ma si è inventata pure la notazione intera con segno (char), che quindi con gli stessi valori binari interni, conterrà valori da -128 a +127 in decimale. In esadecimale è lo stesso. Quindi, come fare a distinguere, o meglio informare il PLC, di come vogliamo interpretare il valore immesso? Beh, nei PLC non IEC ognuno faceva un po' come caxxo voleva. Per esempio, Omron faceva così (syswin e CX programmer), la notazione di base era la decimale intera, se non meglio specificata. Quindi valori da -32768 a 32767 (i PLC Omron utilizzano di default le word, quindi 16 bit di memorizzazione per locazione). Se però volevo specificarne il valore in decimale intero, lo devo far precedere da &. Quindi, &12345 è equivalente a +12345 decimale. Poi, potevo voler specificare un valore esadecimale (o BCD) e quindi va preceduto dal #. Quindi #12AB è equivalente a 4779 decimale. Ripeto, il valore interno alla locazione di memoria è comunque in binario. Quindi se io in una locazione ho il valore 1010 1011 1100 1101b, questo può essere letto nei seguenti modi: decimale Senza Segno: &43981 decimale con Segno: -21555 esadecimale: #ABCD BCD: non è un valore accettabile. Attenzione, è la stessa identica cosa, è solo la notazione diversa. E quindi va detto al programma come lo deve interpretare, o anche dobbiamo scegliere le operazioni (istruzioni) giuste. Ecco perché per esempio esistono varie istruzioni di comparazione di valori, poiché il valore è lo stesso, ma non la sua interpretazione. PS: per la Mitsubishi gli esadecimali erano indicati con H davanti e i valori interi (ora non più) con K PPS: Nei sistemi IEC, va specificato con il tipo nella definizione della variabile. int, dint, lint, udint ecc. Le costanti esadecimali le si indicano anteponendo 16# al numero. Spero che lo spiegone abbia sortito effetto.
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