Vai al contenuto
PLC Forum


Bit ritenitivi s7 1200


Ricky95

Messaggi consigliati

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? 

Link al commento
Condividi su altri siti


mirko.trevenzoli

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

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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: da Cesare Nicola
Link al commento
Condividi su altri siti

  • 3 weeks later...
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

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

Cesare Nicola
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.

Link al commento
Condividi su altri siti

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.:smile:

Link al commento
Condividi su altri siti

Cesare Nicola
1 ora fa, Livio Orsini scrisse:

Aspetta e vedrai.... tra una ventina d'anni ti sembrerà che l'attuale fosse eccezionale

😂😂😂

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...