Vai al contenuto

Acquisizione celle di carico e velocità esecuzione ciclo FOR

Home Forum Controllori SlimLine e Netsyst (LogicLab) Acquisizione celle di carico e velocità esecuzione ciclo FOR

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Autore
    Post
  • #35001
    Alessandro
    Partecipante

    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.

    #36717
    Sergio Bertana
    Amministratore del forum

    Il 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_VAR

        FOR 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

    #38447
    Roberto
    Partecipante

    Un 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 ?

    #38448
    Massimo
    Moderatore

    I 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.0bit

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

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Devi essere connesso per rispondere a questo topic.