Errore acquisizione termocoppie
Home › Forum › Controllori SlimLine e Netsyst (LogicLab) › Errore acquisizione termocoppie
- Questo topic ha 4 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 3 ore, 40 minuti fa da
MBottarelli.
-
AutorePost
-
Maggio 6, 2025 alle 5:25 pm #82036
MBottarelli
PartecipanteStò 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?
Maggio 7, 2025 alle 12:04 pm #82061Sergio Bertana
Amministratore del forumQuello 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.
Maggio 7, 2025 alle 1:37 pm #82066MBottarelli
PartecipanteGrazie 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?
Maggio 7, 2025 alle 3:29 pm #82088Sergio Bertana
Amministratore del forumStrano 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?
Maggio 7, 2025 alle 4:46 pm #82111MBottarelli
PartecipanteI 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.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.