belarturo Inserito: 13 novembre 2020 Segnala Share Inserito: 13 novembre 2020 Buonasera ringrazio il forum in anticipo x i preziosi aiuti.Ho un plc omron cj1m cpu21.Dovrei contare dei fogli in entrata di una cesoia e contare i fogli in uscita e fin qua tutto bene vorrei fare anche la percentuale del numero di scarti.In breve io cosa faccio come logica conto in ingresso e moltiplico per il numero di tagli e ottengo il numero di strisce totali x taglio,poi da questo risultato sottraggo quelli contati in uscita e ottengo le strisce scartate.poi uso la funzione divisone in virgola mobile f(457) e poi moltiplico x 100 con la funzione f(456).Il mio problema che mi trovo numeri che non coincidono ai calcoli inoltre la cpu é interfacciata con un pannello weintek mt8073ie e sul pannello leggo valori non esatti ho provato anche a settare la il formato numerico del pannello in 32 bcd-bit, 32bit-float,32bit-signed,32bit-unisigned niente grazie Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 13 novembre 2020 Segnala Share Inserita: 13 novembre 2020 Considera innanzi tutto che i numeri in virgola mobile occupano 32bit, cioè 2 word. Pertanto, quando definisci una variabile in un indirizzo (per esempio D200) devi considerare che occupa due word (D200 e D201), pertanto attenzione alle sovrapposizioni. Poi è bene che tu definisca il tipo giusto alla variabile (REAL) altrimenti rischi che il valore contenuto sia giusto, ma ti viene mostrato invece come DINT o altro. Per il pannello, per vedere valori in virgola mobile, devi settare la variabile come 32bit-float. Il resto sono altre notazioni che ti darebbero visualizzazioni falsate. Casomai posta il pezzo di programma che lo analizziamo meglio. Link al commento Condividi su altri siti More sharing options...
belarturo Inserita: 13 novembre 2020 Autore Segnala Share Inserita: 13 novembre 2020 Grazie ho allegato la parte del programma in questione chiedo scusa non ho mai allegato niente ho allegato il tutto in pdf grazie NuovoPLC1-NuovoProgramma1-Sezio.pdf Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 13 novembre 2020 Segnala Share Inserita: 13 novembre 2020 Un errore è sicuramente qui: Dove hai messo il moltiplicatore 100 in formato binario (#100), che come virgola mobile avrà un valore sballatissimo. Per indicare una costante float (virgola mobile) devi scriverla con la virgola: +100,0 che informa il compilatore che non è un indirizzo e non è un valore decimale. Prendete poi l'abitudine a scrivere i programmi in simbolico, non con indirizzi assoluti (quindi assegnate un nome e un tipo). Nel primo caso, il CSprogrammer mostrerà il contenuto della variabile nel formato indicato dal tipo, invece che nel secondo nella notazione generale specificata nel CX (spesso decimale se non addirittura esadecimale). Questo non vale solo per Omron, ma oramai per qualsiasi sistema di programmazione. Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 13 novembre 2020 Segnala Share Inserita: 13 novembre 2020 Altro errore: D906 e D908 sono dei valori interi, che poi passi alle istruzioni floating point così come sono. Non va bene, vanno prima convertite da intero a float, e poi usate in virgola mobile. Se ho un po' di tempo, ti faccio un esempio, magari simbolico. Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 13 novembre 2020 Segnala Share Inserita: 13 novembre 2020 C'è anche un errore negli incrementi, hai usato ++B che utilizza la notazione BCD, invece dell'intera INT. Quindi ho preferito rifarti il tutto con i tipi e i simboli: Come vedi esegue e i valori sono congruenti. Ho definito per comodità i seguenti simboli: Spero di esser stato chiaro. Il problema della notazione numerica è sempre grande, molti sbagliano su questo (ogni tanto mi annodo pure io...). Poi i PLC non hanno il casting automatico che converte automaticamente nel formato adatto... Link al commento Condividi su altri siti More sharing options...
belarturo Inserita: 13 novembre 2020 Autore Segnala Share Inserita: 13 novembre 2020 Grazie ho allegato la parte del programma in questione chiedo scusa non ho mai allegato niente ho allegato il tutto in pdf grazie Link al commento Condividi su altri siti More sharing options...
belarturo Inserita: 13 novembre 2020 Autore Segnala Share Inserita: 13 novembre 2020 Buona sera grazie mille l'errore che dovevo convertire tutto in virgola mobile e poi settare la moltiplicazione +100 l'ho provata al simulatore funziona x il formato numerico al weintek setto 32bit-float Link al commento Condividi su altri siti More sharing options...
lelos Inserita: 13 novembre 2020 Segnala Share Inserita: 13 novembre 2020 ciao perché non usi il testo strutturato ST ? Sarebbe più facile Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 14 novembre 2020 Segnala Share Inserita: 14 novembre 2020 18 ore fa, lelos ha scritto: perché non usi il testo strutturato ST ? Certo, Lelos, io faccio normalmente così. Ma visto che ci sono problemi nelle notazioni, e il non utilizzo dei simboli mi hanno fatto desistere dal consigliarlo. 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