Home › Forum › Controllori SlimLine e Netsyst (LogicLab) › Acquisizione celle di carico e velocità esecuzione ciclo FOR
- Questo topic ha 3 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 9 anni, 5 mesi fa da Massimo.
-
AutorePost
-
Aprile 27, 2011 alle 3:14 pm #35001AlessandroPartecipante
Chiedevo se nella linea di PLC Slim Line è prevista una scheda per leggere le celle di carico, e se si volevo avere più notizie tecniche, tipo di collegamento, filtri utilizzati ecc. in quando sto lavorando ad una pesatrice ponderale.
Inoltre volevo capire le prestazione della CPU, per questo progetto devo fare dei cicli FOR, uno in particolare che anche se ottimizzato può raggiungere e oltrepassare 35000 cicli, all’interno del loop qualche addizione e comparazione niente di più, da fare in qualche decimo di secondo.
Aprile 27, 2011 alle 3:23 pm #36717Sergio BertanaAmministratore del forumIl modulo di espansione I/O analogico che dispone di ingressi diferenziali con acquisizione a 23 bit verrà a breve aggiornato con un nuovo firmware per la lettura anche di strain gauge. Anche se visto l’elevato numero di bits del convetitore,è già possibile acquisire i valori analogici in uscita dal ponte di misura ed acquisire il valore di peso.
Per quanto riguarda il filtraggio del valore di peso acquisito è possibile realizzare l’algoritmo di filtro da linguaggio ST. Abbiamo alcuni esempi di filtro che possiamo fornire su richiesta.
Per quanto riguarda il ciclo FOR, 35000 cicli sono parecchi, ma se non è possibile effettuare algoritmi di semplificazione gioco forza è realizzare il numero di cicli richiesto. Ho realizato un semplice programma ST che esegue 40000 cicli con tre somme ed un confronto all’interno, tutto su variabili a 32 bits, ed il tempo di esecuzione è 56 mSec.
PROGRAM ST
VAR
i : UINT; { DE:”Auxiliary counter” }
AddArray : ARRAY[ 0..3 ] OF UDINT; { DE:”Adding array” }
END_VARFOR i:=0 TO 40000 DO
AddArray[0]:=AddArray[0]+1;
AddArray[1]:=AddArray[1]+1;
AddArray[2]:=AddArray[2]+1;
IF (AddArray[2] = AddArray[3]) THEN AddArray[3]:=AddArray[3]+1; END_IF;
END_FOR;END_PROGRAM
Ottobre 7, 2014 alle 4:48 pm #38447RobertoPartecipanteUn rapido quesito visto che dovremmo affrontare un sistemino di pesatura: ho visto che la scheda scende a 17 bit con un sibillino (min) scritto a fianco. Come va interpretato ?
Secondo quesito, un bit ce lo freghiamo per il segno o è possibile impiegarlo come unipolare sfruttando tutti i 130 KPunti ?
Ottobre 7, 2014 alle 6:02 pm #38448MassimoModeratoreI 17 bit (min) si riferiscono al caso peggiore che è quello quando si usa il GAIN=128. Per gli altri gain ecco le varie risoluzioni:
– AD_VIN_VREF_G_1 : 19.5bit
– AD_VIN_VREF_G_2 : 18.5bit
– AD_VIN_VREF_G_4 : 19.0bit
– AD_VIN_VREF_G_8 : 19.0bit
– AD_VIN_VREF_G_16 : 18.5bit
– AD_VIN_VREF_G_32 : 18.5bit
– AD_VIN_VREF_G_64 : 18.0bit
– AD_VIN_VREF_G_128: 17.0bitQuesti sono i bit reali cioè già togliendo il bit di segno. Chiaramente il gain da scegliere dipende dalle caratteristiche dello strain gage. Altre informazioni in questo topic.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.