Menu

CLI : function refused by CPU (Unknown error)

Mauro Ruby
2020-09-28
2020-09-29
  • Mauro Ruby

    Mauro Ruby - 2020-09-28

    So che si tratta di un argomento già discusso nel Web, ma ho la necessità di leggere tre numeri interi ( da 0 a 255) su un PLC 1200 1212, ma mi ritorna sempre il messaggio : CLI : function refused by CPU (Unknown error)
    Ho provaro a cambiare firmware alla CPU pensado che fosse vecchio, ma nulla, ho preso una CPU più recente ma torna sempre lo stesso errore.
    La DB non è ottimizzata, è una DB Globale e ha le prorpietà di Protezione e Security con permesso di lettura e scrittura.
    ALLEGO CODICE CHE UTILIZZO

    procedure TForm1.LeggeClick(Sender: TObject);
    var
    DatiPLCINT: packed array[0..5] of Smallint;

    I: Integer;
    Errore: Integer;
    MyInteger : Smallint;
    N_BYTE: Integer;
    BYTE_START : Integer;
    ValoriLETTURA : Integer;

    begin
    ValoriLETTURA := strtoint(VAL_LETTI.Text);
    N_BYTE := ValoriLETTURA * sizeof(single);
    ValoriLETTURA := ValoriLETTURA-1; // Per il calcolo for / next parto da 0

    if not Plc1.Connected then // se il PLC non risponde esco
    begin
    showmessage('PLC NON RISPONDE VERIFICARE INDIRIZZO TCP-IP E CHE IL PLC SIA ACCESO')
    end;
    BYTE_START := strtoint (DBD.Text);

     Errore:= Plc1.DBRead(3,  // Numero della DB
                              BYTE_START,  // Da byte della DB partimo a leggere
                                         N_BYTE,  // Quanti byte vogliamo leggere
                          @DatiPLCINT);  // Array dove voglio mettere i valori letti
    

    if Errore <> 0 then
    begin
    Log1.Lines.Add(Trim(CliErrorText(Errore))); // Scrive un eventuale errore
    Exit;
    end;

    Log1.Lines.add('Valori della DB letta:');
    for I := 0 to ValoriLETTURA do
    begin
    MyInteger:= S7.ValInt[@DatiPLCINT[I]];
    Log1.Lines.add('[DB1.DBW' + inttostr (BYTE_START)+' ]: ' + intttostr(MyInteger));
    BYTE_START := BYTE_START +4;
    end;
    end;
    ////////////////////////////////////////////////////////////////////////////////////

    Grazie per eventuali suggerimenti

     
  • Davide Nardella

    Davide Nardella - 2020-09-28

    Per esperienza di altri con lo stesso problema, ricarica la DB nella CPU, non basta togliere la spunta al progetto.
    Poi che parametri di connessione usi ?

     

    Last edit: Davide Nardella 2020-09-28
  • Mauro Ruby

    Mauro Ruby - 2020-09-28

    Il progetto lo faccio dalla partenza con DB Globale, DB non ottimizzata e pernmesso sia in lettura che in scrittura, comunque la DB ho provato anche a ricaricata, ho anche rifatto un nuovo progetto dopo gli aggiornamenti del firmware, ho fatto un nuovo progetto anche solo per testare un Boolean (i booleani so che vanno perchè su una CPU 1500 spazzolo 2 DB contenenti tutti gli allarmi di un grosso progetto ) ma anche li dopo aver interrogato la DB mi arriva il messaggio "CLI : function refused by CPU (Unknown error)"
    Mi connetto puntando all'indirizzo TCP IP 192.168.0.1,0,1, ma la connessione con il PLC è aperta perchè non mi ritorna l'avviso del contollo :
    if not Plc1.Connected then // se il PLC non risponde esco
    begin
    showmessage('PLC NON RISPONDE VERIFICARE INDIRIZZO TCP-IP E CHE IL PLC SIA ACCESO')
    end;
    Se ci sono altri suggerimenti ringrazio in anticipo

     
  • Mauro Ruby

    Mauro Ruby - 2020-09-29

    Chiedo umilemnte scusa, a volte ed essere troppo sicuri di se stessi in un argomento porta a fare degli errori che nemmeno un ragazzino alle prime armi con il PLC commetterebbe, non avevo applicato la spunta nei meccanismi di collegamento
    Ora funziona tutto perfettamente.
    Sig.Nardella grazie per la disponibilità

     
    • Davide Nardella

      Davide Nardella - 2020-09-29

      figurati, capita a tutti ;)

       

Log in to post a comment.