Ricky95 Inserito: 18 dicembre 2018 Segnala Inserito: 18 dicembre 2018 Buongiorno Premetto che sono un programmatore omron ed è la prima volta che scrivo un software con tia. Detto questo il mio problema è che io sono abituato a programmare settando in sequenza una serie di bit (in questo caso ritenitivi) che fanno a creare un ciclo... quando il ciclo si è esaurito resetto le word a cui appartengono i singoli bit azzerando il ciclo. Su tia mi permette di resettare un gruppo di bit solo se sono merker (quindi non ritenitivi) o se è un array contenuto in una db, ma se creo un array non mi lascia commentare i singoli bit ma hanno tutti lo stesso nome quindi il software diventa incomprensibile... cosa posso fare?
max.bocca Inserita: 18 dicembre 2018 Segnala Inserita: 18 dicembre 2018 I merker possono essere anche ritentivi. Basta dichiararli quanti ne vuoi avere.
mirko.trevenzoli Inserita: 18 dicembre 2018 Segnala Inserita: 18 dicembre 2018 Potresti creare una struttura a 16 o 32 booleani all'interno di una db ed usare questi booleani per il tuo ciclo. Poi crei una db vuota che si chiama "azzeramento" con una struttura a 16 booleani e a 32. Quando devi azzerare il ciclo sposti la struttura "azzeramento" dentro la tua struttura di ciclo. Io faccio così solitamente
Ricky95 Inserita: 19 dicembre 2018 Autore Segnala Inserita: 19 dicembre 2018 Grazie a tutti ho capito dopo come si fa a dichiararli ritenitivi... perche a primo impatto non mi lasciava mettere la spunta quindi credevo non si potesse... comunque ottima anche l'idea di mirko sicuramente mi tornera utile nel corso della programmazione
Cesare Nicola Inserita: 21 dicembre 2018 Segnala Inserita: 21 dicembre 2018 (modificato) il 18/12/2018 at 16:08 , Ricky95 scrisse: se è un array contenuto in una db, ma se creo un array non mi lascia commentare i singoli bit ma hanno tutti lo stesso nome quindi il software diventa incomprensibile E' bello vedere come ci siano diverse abitudini. 🙂 Io trovo notevolmente più comprensibile una sequenza realizzata con numeri (quindi anche bit di array) perché quando ho un problema so dove è ferma la mia sequenza. Cioè, se sono ordinato, nell'FB o FC dove realizzo la sequenza, ci sarà un segmento in cui uso il bit0, il successivo sarà il bit1, ecc (meglio ancora se nel titolo del segmento ci metto "passo 0", "passo 1", ecc): in una tabella di controllo vedo quale bit mi manca e so subito dove andare a guardare nell'FB o FC. Ho avuto a che fare con una sequenza in cui i bit si chiamavano tipo "marcia pompa", "apri valvola" ecc: in caso di debug dovevo scorrere tutto l'FB per trovare dov'era "marcia pompa", scomodissimo. Personalmente non ho mai usato bit ma valori. In AWL, che sto quasi abbandonando, uso l'istruzione SPL, in SCL uso il CASE e in KOP uso una variabile INT che incremento ad ogni passo e verifico con un confronto (c'è SPL anche in KOP ma graficamente occupa troppo spazio, non mi piace). Il vantaggio di usare una variabile è che hai solo un numero da vedere, che ti dice immediatamente dove si trova la sequenza e puoi anche visualizzarlo su HMI di modo che il cliente te lo comunichi in caso di malfunzionamenti, rendendo più immediato capire cosa non funziona. Modificato: 21 dicembre 2018 da Cesare Nicola
Ricky95 Inserita: 7 gennaio 2019 Autore Segnala Inserita: 7 gennaio 2019 il 21/12/2018 at 08:31 , Cesare Nicola scrisse: E' bello vedere come ci siano diverse abitudini. 🙂 Io trovo notevolmente più comprensibile una sequenza realizzata con numeri (quindi anche bit di array) perché quando ho un problema so dove è ferma la mia sequenza. Cioè, se sono ordinato, nell'FB o FC dove realizzo la sequenza, ci sarà un segmento in cui uso il bit0, il successivo sarà il bit1, ecc (meglio ancora se nel titolo del segmento ci metto "passo 0", "passo 1", ecc): in una tabella di controllo vedo quale bit mi manca e so subito dove andare a guardare nell'FB o FC. Ho avuto a che fare con una sequenza in cui i bit si chiamavano tipo "marcia pompa", "apri valvola" ecc: in caso di debug dovevo scorrere tutto l'FB per trovare dov'era "marcia pompa", scomodissimo. Personalmente non ho mai usato bit ma valori. In AWL, che sto quasi abbandonando, uso l'istruzione SPL, in SCL uso il CASE e in KOP uso una variabile INT che incremento ad ogni passo e verifico con un confronto (c'è SPL anche in KOP ma graficamente occupa troppo spazio, non mi piace). Il vantaggio di usare una variabile è che hai solo un numero da vedere, che ti dice immediatamente dove si trova la sequenza e puoi anche visualizzarlo su HMI di modo che il cliente te lo comunichi in caso di malfunzionamenti, rendendo più immediato capire cosa non funziona. Io lavoro quasi unicamente con omron e col CX programmer si possono utilizzare le Word sia come numeri (es. W30 = 3) sia come bit (es W30.0 = 1) e si possono commentare a piacimento quindi io creo la sequenza come dici tu in sequenza (w30.0 w30.1 ecc) e assegno un commento ad ogni bit in modo da capire nello specifico cosa fa la sequenza per esempio w30.0 --> USCITA PISTONE, W30.1 --> SGANCIO CALAMITA ecc (capita i prendere in mano vecchi software o robe fatte da colleghi e cosi ci si capisce) e quando la sequenza è esaurita e devo resettare il ciclo semplicemente assegno il valore 0 alla word (w30 = 0) cosi ho la comodità della sequenza numerica e dei commenti per capire a colpo d'occhio la natura del software... Anche l'incremento di un indice è un buon modo per creare cicli quadri ma personalmente non lo uso... grazie comunque per il confronto ne nascono sempre degli spunti per migliorare
batta Inserita: 7 gennaio 2019 Segnala Inserita: 7 gennaio 2019 Una soluzione potrebbe essere l'uso della "sovrapposizione delle variabili con AT" (cerca questa voce nella guida in linea per le istruzioni). Oppure (forse meglio), puoi usare le istruzioni "Gather" e "Scatter", con le quali puoi unire un array o una struttura di bit in una variabile, e viceversa. Per esempio, azzeri la variabile "ResetVar" e poi richiami l'istruzione SCATTER passando in ingresso "ResetVar" e in uscita la struttura dei bit del ciclo. Attenzione che devi rispettare le dimensioni: se "ResetVar" è una variabile a 16 bit, la struttura dei bit del ciclo deve contenere 16 bit. Per fare un azzeramento dell'intera sequenza potresti anche creare una struttura di bit identica a quella del ciclo (se usi i "Tipi di dati" tutto diventa più comodo). Se i bit di questa struttura sono tutti OFF, ti basta una semplice istruzione MOVE per azzerare tutti i bit del ciclo. Quote ma se creo un array non mi lascia commentare i singoli bit ma hanno tutti lo stesso nome quindi il software diventa incomprensibile Questo non è del tutto corretto. In un array non puoi cambiare il nome di ogni singolo elemento, ma puoi inserire a piacere il commento, per ogni singolo elemento. E nel TIA c'è la possibilità di visualizzare contemporaneamente nome e commento.
andrea tarlo Inserita: 8 gennaio 2019 Segnala Inserita: 8 gennaio 2019 Personalmente mi trovo bene utilizzando come registro di stato non i bit ma il valore di un int, questo mi impedisce di dimenticarmi bit settati e posso utilizzare la keyword switch (scl) oltre a non essere vincolato al numero di bit della struttura , capisco però che si perda la possibilità di assegnare un mnemonico al singolo bit e per rendere il codice comprensibile occorre commentare il passo di codice.
Cesare Nicola Inserita: 8 gennaio 2019 Segnala Inserita: 8 gennaio 2019 1 ora fa, andrea tarlo scrisse: e per rendere il codice comprensibile occorre commentare il passo di codice E' vero, ma questo (il commentare) dovrebbe essere la norma, una parte necessaria del software tanto quanto il codice e non un "di più" che bisogna fare in certe occasioni. Ci dimentichiamo troppo spesso di commentare e prima o poi lo si paga. In passato commentavo tantissimo, poi mi sono impigrito, come tanti; ora sto cercando di tornare a commentare parecchio, sia perché i miei software vengono presi in mano da colleghi, sia perché la memoria a 50 anni non è più quella di una volta, sia perché è inutile che mi lamento della mancanza di commenti quando lavoro su software fatti da altri, se poi non commento neanch'io. 🙂 Unica giustificazione che concedo e mi concedo è la cronica mancanza di tempo, soprattutto quando si è sul campo.
max.bocca Inserita: 8 gennaio 2019 Segnala Inserita: 8 gennaio 2019 A me mancano alcune ore ai 50, ma dopo anni ricordarsi ..... Negli appunti cartacei scrivo sempre tutto non si sa mai.
Cesare Nicola Inserita: 8 gennaio 2019 Segnala Inserita: 8 gennaio 2019 43 minuti fa, max.bocca scrisse: A me mancano alcune ore ai 50 Auguri, allora! 🥂
Livio Orsini Inserita: 8 gennaio 2019 Segnala Inserita: 8 gennaio 2019 3 ore fa, Cesare Nicola scrisse: , sia perché la memoria a 50 anni non è più quella di una volta, Aspetta e vedrai.... tra una ventina d'anni ti sembrerà che l'attuale fosse eccezionale.
Cesare Nicola Inserita: 8 gennaio 2019 Segnala Inserita: 8 gennaio 2019 1 ora fa, Livio Orsini scrisse: Aspetta e vedrai.... tra una ventina d'anni ti sembrerà che l'attuale fosse eccezionale 😂😂😂
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