aleb2 Inserito: 24 luglio 2013 Segnala Inserito: 24 luglio 2013 Ho una FC scritta in SCL, compilo tutto ok, ma quando viene eseguita vedo che la CPU va in errore (led rosso ); nel buffer di diagnostica dice qualcosa del tipo errore indirizzamento o variabile non corretta in quell FC; compilando l'FC senza errori cosa vado a cercare? cose del tipo True al posto di 1 ,False al posto di 0 per le Bool?
Frank681 Inserita: 25 luglio 2013 Segnala Inserita: 25 luglio 2013 Ciao Domanda ovvia che cosa usi per programmare v11 o v12 , usi variabili in / out. .?
batta Inserita: 25 luglio 2013 Segnala Inserita: 25 luglio 2013 Se vuoi risposte, devi fornire informazioni. Con quelle che hai dato, serve un indovino.
aleb2 Inserita: 27 luglio 2013 Autore Segnala Inserita: 27 luglio 2013 (modificato) uso la v11 e uso sia in/out, input, output e temp (come indice di ciclo FOR) ; l' errore è dovuto all' evento 16# 20:2253; errore in lettura FC16, sembra che ci sia una variabile che va fuori dalla dimensione prevista, magari indirizzata con un indice Modificato: 27 luglio 2013 da aleb2
batta Inserita: 28 luglio 2013 Segnala Inserita: 28 luglio 2013 sembra che ci sia una variabile che va fuori dalla dimensione prevista, magari indirizzata con un indice Probabile, ma siamo ancora al punto di partenza. Senza vedere il codice, come possiamo capire se ci sono errori nel codice?
aleb2 Inserita: 28 luglio 2013 Autore Segnala Inserita: 28 luglio 2013 In allegato come .txt l'FC che da l'errore quando viene eseguito FC16.txt
batta Inserita: 29 luglio 2013 Segnala Inserita: 29 luglio 2013 Io mi sono dimenticato di chiederlo, ma anche specificare se si tratta di un S7-1200 o di un S7-300 non sarebbe stata una cattiva idea, non ti pare? Nel codice che hai fornito manca la struttura della variabile Input "MEDIA_H_NF_ARRAY". Per il resto, da un veloce controllo non ho trovato errori di indici. Resta da vedere cosa colleghi come parametri alla FC quando la richiami. Per esempio, se passi un valore #J = 0, nella riga con il codice IF (#MEDIA_H_NF_ARRAY[#J].N_CAMP-#MEDIA_H_NF_ARRAY[#J+1].N_CAMP<7200) THEN punteresti alla variabile #MEDIA_H_NF_ARRAY[0].N_CAMP che non esiste. Dovresti quindi aggiungere un controllo sul valore della variabile #J Se mi posso permettere un'osservazione poi, noto che nel tuo codice non esiste una sola riga di commento. Trovo questa una bruttissima abitudine da perdere immediatamente, anche se si tratta solo di una FC di prova. C'è addirittura chi sostiene che un programma dovrebbe essere formato dal 50% di codice e dal 50% di commenti. Io non dico di prendere queste percentuali come regola assoluta, ma i commenti devono essere sempre parte rilevante di un programma. Poi, ovviamente, molto dipende dalla complessità del codice. Ci possono essere 10 righe di codice con 1 riga di commento, ma ci possono essere anche tre righe di codice con 10 righe di commento. In ogni caso, non dovrebbe mai esistere una riga di codice senza commento.
aleb2 Inserita: 29 luglio 2013 Autore Segnala Inserita: 29 luglio 2013 Si consiglio senz'altro da seguire quello dei commenti, comunque mi hai acceso una lampadina in effetti l'indice J non ha un controllo che sia diverso da zero; guardo meglio; intanto grazie
aleb2 Inserita: 14 settembre 2013 Autore Segnala Inserita: 14 settembre 2013 proprio cosi'; il problema era sulla variabile #j che aveva come valore di avvio nella DB, zero e generava quell'errore; grazie batta
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora