MRK_ Inserito: 26 novembre 2008 Segnala Share Inserito: 26 novembre 2008 Buonasera a tutti!Da qualche giorno lavoro su panasonic FP-X e GT05, non sono un esperto in materia di PLC ma con questo tipo ho riscontrato mote meno difficoltà nella programmazione rispetto a tanti altri. Da un po' mi sono arenato su un problema di scambio dati in virgola mobile dal pannello al PLC e viceversa, qualcuno sa come effettuare questa operazione? Link al commento Condividi su altri siti More sharing options...
Roberto Gioachin Inserita: 28 novembre 2008 Segnala Share Inserita: 28 novembre 2008 Nessuna risposta?Forse la domanda non è comprensibile!!Comunque... se sul plc hai utilizzato una variabile in doppia word, dichiarata come variabile in virgola mobile, sul pannello operatore la devi dichiarare nello stesso modo.Fatto questo problemi non ne devono esistere.Se invece la tua variabile in doppia word, non è dichiarata come virgola mobile, non puoi visualizzarla nel pannello in questo modo, altrimenti vedi dei numeri assurdi.Quale ambiente di sviluppo stai utilizzando per il plc? che operazioni hai fatto per ottenere la variabile da visualizzare sul pannello? come hai impostato la variabile sul pannello?Prova spiegare meglio il problema e le operazioni che hai fatto.CiaoRoberto Link al commento Condividi su altri siti More sharing options...
MRK_ Inserita: 30 novembre 2008 Autore Segnala Share Inserita: 30 novembre 2008 Ciao Robertoforse la mia domanda era un po' troppo generica, data anche dall'inseperienza.Come sistema di sviluppo utilizzo FPWIN 5.0 e la variabile che tentavo di utilizzare (erroneamente) era una DT1XX che di suo non è una doppia word, quindi era impossibile che riuscissi a visualizzarla come variabiel float a questo punto la domada corretta è:come faccio ad impostare una variabile in virgola mobile sul PLC in modo da poterla condividera anche dal pannello?Ciao, grazieMirko Link al commento Condividi su altri siti More sharing options...
Roberto Gioachin Inserita: 30 novembre 2008 Segnala Share Inserita: 30 novembre 2008 Con FPWin-pro si deve procedere in questo modo:La variabile che devi visualizzare o modificare con il pannello operatore, deve essere dichiarata come "Real", ti ticordo che parlare di numeri reali o in virgola mobile (floating point) è la stessa cosa.Quindi, dichiara su "Variabili globali" un nome (identificatore) che identifichi la tua variabile; un indirizzo fisico del plc (p.e. DT120 in maiuscolo), l'indirizzo IEC viene assegnato automaticamente; il tipo di variabile, in questo caso "REAL": se necessario anche un valore iniziale.Una variabile dichiarata, ha poco significato se non viene utilizzata nel programma, scrivi quindi una parte di codice nel linguaggio che desideri, utilizzando per l'appunto la variabile appena assegnata, ti basta scrivere anche semplicemente una istruzione "MOV".Ora apri il programma del pannello operatore, in una pagina inserisci una "data parts", su "data format" seleziona "float", su reference device scrivi DT120.Scarica i programmi e vedrai che ti funziona tutto.CiaoRoberto Link al commento Condividi su altri siti More sharing options...
MRK_ Inserita: 1 dicembre 2008 Autore Segnala Share Inserita: 1 dicembre 2008 Quello che tu mi hai detto di fare è esattamente quello che anche io avevo fatto ma mi si presenta un problema:Quando io dichiaro la variabile DT120 nelle variabili globali ed eseguo il controllo mi compare un errore:"F1101 - Identificatore dimensione errato"Alchè mi sorge un dubbio, sicuramente sbaglio, ma la variabile DT120 non è una variabile a 16bit? e una variabile dichiarata float non richiede 32bit?Correggimi se sbaglio...Ciao grazieMirko Link al commento Condividi su altri siti More sharing options...
Roberto Gioachin Inserita: 1 dicembre 2008 Segnala Share Inserita: 1 dicembre 2008 "F1101 - Identificatore dimensione errato"Quando si parla di identificatore, si parla del "nome" che attribuisci alla variabile, quindi ad essere errato è proprio quello, non è che per caso hai dato un nome troppo lungo alla variabile?Oppure non è che hai utilzzato un nome non valido?sicuramente sbaglio, ma la variabile DT120 non è una variabile a 16bit? e una variabile dichiarata float non richiede 32bit?Non sbagli.Quando dichiari una variabile, inserisci anche l'indirizzo della variabile, per esempio DT120.Se questa e una doppia word, oppure un float, il plc usa DT120 e DT121, ma non è necessario che le scrivi tutte e due, in quanto il tipo di variabile stabilisce già che stai utilizzando due word consecutive.CiaoRoberto Link al commento Condividi su altri siti More sharing options...
Roberto Gioachin Inserita: 1 dicembre 2008 Segnala Share Inserita: 1 dicembre 2008 (modificato) Ho verificato l'errore che proponi, a volte si è abituati a certe convenzioni che non ci si fà caso.Per evitare l'errore F1101, devi ricordarti di definire l'indirizzo della variabile come DDT120 e non DT120.In alternativa devi definire la variabile con lo standerd IEC1131, cioè %MD5.120Questo vale per tutte le variabili a 32 bit.CiaoRoberto Modificato: 1 dicembre 2008 da Roberto Gioachin Link al commento Condividi su altri siti More sharing options...
MRK_ Inserita: 2 dicembre 2008 Autore Segnala Share Inserita: 2 dicembre 2008 Ciao Roberto,[OK] adesso funziona correttamtne tutto! Mi resta solo un dubbio -> ma se io definisco la variabile DT120 ad esempio come duble, di default quale variablie usa il sistema come seconda parte di DT120. La DT121?scusa se approfitto, ma ti ciedevo un altra cosa..io devo creare una funzione che ad una data ora (ora, minuto) mi attivi un uscita.nel registro di sistema DT90054 (e dintroni) il PLC alloca i dati relativi alla data e all'ora sottoforma di word da 16 bit di cui nei primi 8 pone un dato e negli altri pone un altro dato.Quale potrebbe essere il "percorso" più breve e/o comodo per dividere la WORD in due data una posizione di interruzione (sul 8°bit) in modo da poterla poi convertire in INT senza problemi di conversioen WORD->INT?La strada che ho adottato adesso è quella di convertire la word in stringa a quattro caratteri dopo di che l'ho divisa in due con le funzioni lift e right e sucessivamente convertita in int.Il tutto funziona ma è un "altarino" secondo me scorretto, al di la dei passaggi (quasi infiniti paragonati alla semplicità dell'operazione) comunque mi pare un assurdo dover convertire un dato in una stringa per poi riconvertirla in un numero...Ciao e grazie Link al commento Condividi su altri siti More sharing options...
Roberto Gioachin Inserita: 3 dicembre 2008 Segnala Share Inserita: 3 dicembre 2008 Ciao MRKAllora, il plc Panasonic, come tanti altri (ma non tutti), ti permette di utilizzare due aree di memoria 16 bit consecutive da utilizzare come variabile a 32 bit.La word che utilizzi come indirizzo diventa la word meno significativa (i sedici bit di destra), la word sucessiva diventa la word più significativa.Nel tuo esempio, un valore a 32 bit scritto su DT120, viene scritto su DT120 e DT121, dove DT120 è la parte di destra della cifra.Ore minuti e secondi, sono tutti codificati in BCD, quindi devi vedere i dati presenti in DT90054 e dintorni come dei valori in BCD e non word, da convertire in intero.Ci sono diverse strade per risolvere il problema, puoi per esempio utilizzare l'istruzione F6_DGT presente sulla libreria FP, che ti permette di copiare un certo numero di caratteri esadecimali da una word ad un'altra, avendo cura di cancellare le informazioni presenti nella word di destinazione prima di scriverci qualcosa.In ogni caso non ci sono sistemi sbagliati per fare queste conversioni, ci sono solo sistemi che funzionano ed altri che non funzionano oppure sono poco affidabili.Quando un sistema funziona bene è sempre valido.CiaoRoberto 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