Vai al contenuto

Errore acquisizione termocoppie

Home Forum Controllori SlimLine e Netsyst (LogicLab) Errore acquisizione termocoppie

Stai visualizzando 5 post - dal 1 a 5 (di 5 totali)
  • Autore
    Post
  • #82036
    MBottarelli
    Partecipante

    Stò utilizzando un modulo da 10 ingressi analogici PCB126C130 per l’acquisizione di 5 termocoppie, collegate agli ingressi 0-3 e 5.

    Succede che all’avvio del PLC leggo correttemente i valori di temperatura, però dopo circa 5 secondi i blocchi funzione SysGetAnInp vanno tutti in fault con il codice 9983150, e non si riprendono più.

    Faccio un Warm Restart e succede la stessa cosa, funzionano per 5 secondi e poi vanno in fault. Mi capita anche se abilito uno solo degli ingressi. Il mio codice è ridotto all’osso, gira in task Back:

        IF Init THEN
            Init := FALSE;
    
            // Impostazione analogiche.
    
            FOR i:= 0 TO AN_INPUT_MAX_IDX DO
                FB_GetAnInput[i].Address := 0;
                FB_GetAnInput[i].Channel := TO_USINT(i);
                FB_GetAnInput[i].Mode := AD_THERMOCOUPLE_K;
            END_FOR;
        END_IF;
        
        //-------------------------------------------------------------------
        // Acquisizione analogiche scheda di espansione
    
        FB_GetAnInput[i]();
    
        IF FB_GetAnInput[i].Done THEN
            ErrorCode[i] := 0;
            analog_input_exp[i] := FB_GetAnInput[i].Value;
        ELSIF FB_GetAnInput[i].Fault THEN
            ErrorCode[i] := SysGetLastError(TRUE);
        END_IF;
    
        i := (i+1);
        IF i > AN_INPUT_MAX_IDX THEN
            i := 0;
        END_IF;

    Quale può essere il motivo?

    #82061
    Sergio Bertana
    Amministratore del forum

    Quello che succede è molto strano, vediamo alcuni consigli…

    Il più importante di tutti è lo stato dei ponticelli, hai inserito LK4 e rimosso LK5 e LK6. Inoltre và rimossa la coppia di ponticelli per ogni ingresso analogico a cui connetti la termocoppia.

    Non dici in che task PLC viene eseguito il tuo programma, meglio è eseguirlo in task Back.

    Nel programma sposterei il controllo su variabile i prima di eseguire la GetAnInput come qui sotto. Perchè nel tuo programma quando arrivi dopo l’inizializzazione avrai i che punta la posizione dell’array successiva al numero definito andando così fuori array.

        i := (i+1);
        IF i > AN_INPUT_MAX_IDX THEN
            i := 0;
        END_IF;
    
        FB_GetAnInput[i]();

    Ho visto che iteri su tutti i canali quindi anche sul canale 4 che quando viene acquisita almeno una termocoppia non può essere utilizzato. Quindi sicuramente gestendolo con la GetAnInput avrai un errore 9983200 sul canale.

    Proverei ad eseguire il solo programma di acquisizione termocoppie escludendo tutti gli altri, per evitare che errori di accesso ad array e/o pointer possano agire sulle variabili del programma di acquisizione “sporcandole”. Dai una occhiata al capitolo Abilitare i controlli run-time programma nelle FAQ.

    #82066
    MBottarelli
    Partecipante

    Grazie per avermi segnalato la svista sull’indice, ho corretto ma non è quello il problema. Succede la stessa cosa anche se setto l’indice a 0 oppure 1 e uso solo quell’ingresso.

    Sto eseguendo il programma nella task Back.

    Riguardo ai ponticelli, ho seguito il manuale e ho inseriti LK3, LK4 e LK15, tutti gli altri rimossi, sia sul primo che sul secondo terminale (il modulo è da 10 ingressi). Corretto?

    Per gli ingressi non utilizzati sul secondo terminale devo lasciare il ponticello?

    #82088
    Sergio Bertana
    Amministratore del forum

    Strano comportamento, è tutto corretto anche i ponticelli sono corretti.

    I ponticelli degli ingressi non utilizzati li puoi lasciare inseriti.

    Hai provato ad eseguire solo il programma di acquisizione escludendo tutti gli altri?

    Hai provato ad abilitare i controlli Run-time?

    #82111
    MBottarelli
    Partecipante

    I controlli runtime non rilevano niente, ho provato anche ad eseguire solamente questo program.

    Settimana prossima sarò nuovamente sull’impianto a controllare che i cablaggi siano ok, nel frattempo con l’oscilloscopio di LogicLab ho notato che all’avvio, prima che vadano in errore i canali, il valore acquisito è decrescente screenshot.

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