Vai al contenuto
PLC Forum


Shift Register Per Tutta La Linea


Scaram

Messaggi consigliati

Salve,

vorrei un consiglio per lo sviluppo di uno shift register(SR) piuttosto corposo per trasportare dei dati lungo tutta la linea di un impianto,

la quale è piuttosto ampia diciamo.

Lo SR però non è di quelli classici, ovvero

Ciclo di clock 0 : SR = 0000 0001

Ciclo di clock 1 : SR = 0000 0010

Ciclo di clock 2 : SR = 0000 0101

Ciclo di clock 3 : SR = 0000 1010

...

Questo andrebbe bene per trasportare lungo la linea 1 dato singolo.

A me invece servirebbe poterne portare più di uno, diciamo almeno una decina contemporaneamente.

Escludendo l'opzione di creare uno Shift Register per ogni dato (troppo onerosa in fatto di risorse durante ogni shift,

data la lunghezza della linea e il fatto che ogni shift in realta' rappresenta 10cm) quali altre soluzioni sono consigliabili?

Va anche tenuto conto, secondo me, il fatto che i dati all'interno dello shift register non vengono inseriti tutti all'inizio della linea

e poi trasportati attraverso le varie sezioni che la compongono ma inseriti man mano da ciascuna stazione e portati avanti.

Rifacendosi all'esempio di prima del dato singolo, potremmo avere una situazione del genere:

Ciclo di clock 0 : SR = 0000 0001

Ciclo di clock 1 : SR = 0000 0010

Ciclo di clock 2 : SR = 0100 0100

Ciclo di clock 3 : SR = 1000 1000

Questo perchè lo stesso tipo di bit (scarto prodotto) può essere generato da più stazioni per essere poi letto dalla stazione

di scarto.

La CPU è una 317T-2 DP della Siemens, il linguaggio di programmazione è KOP con qualche funzione AWL.

Io avevo pensato di creare un DB100 contentene questi dati, DB formato da 100 UDT (100 per ora e'messo li'in maniera indicativa

finchè non saprò le misure precise della linea) ognuna delle quali rappresenta l'insieme dei dati in un certo punto della linea.

Per capirsi, in un ciclo di clock abbiamo che:

DB100.DBW0 contiene tutti i dati nel punto 0

DB100.DBW1 contiene tutti i dati nel punto 0 + 10cm

DB100.DBW2 contiene tutti i dati nel punto 0 + 20cm

...

Nel ciclo di clock successivo ovviamente ogni word N conterrà i dati che la word N-1 conteneva nel ciclo di clock precedente.

Il problema è che non saprei come organizzare lo shift alla fine di ogni ciclo di clock...

Grazie a tutti. :smile:

Modificato: da Scaram
Link al commento
Condividi su altri siti


il dato di cui parli è davvero una word sola? (ovvero UDT è una word?)

se hai la possibilità di utilizzare SCL dovresti riuscire a scrivere facilmente quanto dici

altrimenti bisogna giocare un po con gli indirizzamenti indiretti in AWL... cervellotico ma fattibile

Ciao!

Modificato: da fedesara
Link al commento
Condividi su altri siti

in una 315t fare un sr come l'hai descritto è quasi un reato...

Orientati verso la scrittura indicizzata all'interno di un DB e dovrai solo incrementare l'indice ed eseguire un block move senza scomodare AR, per "trasportare i dati"....

In base al valore dell'indice saprai anche a che punto è il ciclo e dove stai scrivendo/leggendo, mentre con un sr puoi solo immaginarlo.

Link al commento
Condividi su altri siti

il dato di cui parli è davvero una word sola? (ovvero UDT è una word?) se hai la possibilità di utilizzare SCL dovresti riuscire a scrivere facilmente quanto dici altrimenti bisogna giocare un po con gli indirizzamenti indiretti in AWL... cervellotico ma fattibile Ciao!

Si' è una sola Word ripetuta "n" volte nel DB diciamo, è sicuramente una soluzione infattibile e pesante... Molto meglio l'indirizzamento indiretto anche se cervellotico :)

in una 315t fare un sr come l'hai descritto è quasi un reato...

Orientati verso la scrittura indicizzata all'interno di un DB e dovrai solo incrementare l'indice ed eseguire un block move senza scomodare AR, per "trasportare i dati"....

In base al valore dell'indice saprai anche a che punto è il ciclo e dove stai scrivendo/leggendo, mentre con un sr puoi solo immaginarlo.

La CPU e' una 317T ma non credo cambi granchè in questo caso :)

Mi diletterò con gli indici dunque e vi farò sapere com'e' andata. Grazie ad entrambi!! :thumb_yello:

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