Vai al contenuto

Verifica conformità del software a specifica Welmec

Home Forum Controllori SlimLine e Netsyst (LogicLab) Verifica conformità del software a specifica Welmec

Stai visualizzando 6 post - dal 1 a 6 (di 6 totali)
  • Autore
    Post
  • #34905
    Anonimo
    Ospite

    Stiamo valutando il Vostro prodotto CPU SlimLine ARM7 IEC61131-3 per un’applicazione in cui abbiamo la necessità di blindare il software secondo le specifiche della guida Welmec 7.2 (software con rilevanza legale).

    In sostanza, ad ogni accensione, dobbiamo calcolare una checksum del contenuto della memoria programma e visualizzare il risultato su di un pannello operatore.

    E’ possibile realizzare questo tipo di controllo ?

    #36538
    Sergio Bertana
    Amministratore del forum

    Il sistema operativo di SlimLine ed il tool di sviluppo LogicLab prevedono una serie di accorgimenti per controllare che il programma caricato sul prodotto sia il programma desiderato, unendo le varie protezioni ritengo sia possibile “blindare” efficacemente il programma.
     
    Correttezza programma
    Per garantire la correttezza del programma, cioè essere certi che il programma eseguibile non sia corrotto da eventuali errori nella fase di download e/o da cancellazioni accidentali di bytes nella memoria Flash. Ad ogni start del programma PLC, viene eseguito un controllo di checksum sull’intero programma e comparato il risultato con il valore calcolato da LogicLab nella fase di compilazione, se i risultati sono discordanti il programma PLC non viene eseguito. Questo evita di eseguire programmi corrotti.
     
    Validazione programma
    Per validare il programma, cioè essere certi che il programma sia quello desiderato, è previsto un numero univoco che LogicLab calcola in fase di compilazione programma. Visualizzando questo numero si è certi che il programma è quello desiderato e non un diverso programma trasferito da una persona fraudolenta.

    #36582
    Anonimo
    Ospite

    Potete darmi indicazioni su dove trovare il numero univoco calcolato da LogicLab nella memoria dello SlimLine e come leggerlo da Modbus ?

    #36537
    Sergio Bertana
    Amministratore del forum

    Il numero univoco si trova nelle variabili di sistema System variables di sola lettura, si tratta di una variabile UDINT a 32 bits e si chiama SysApplID.

    Per poterla leggere da modbus occorre trasferirla in una variabile allocata nella DB100 in modo da essere accessibile dai comandi modbus di lettura registri.

    Attenzione! Le variabili DW in area DB100 devono essere sempre allocate in indirizzi divisibili per 4, le variabili W in indirizzi divisibili per 2.

    Allego per il download un semplice programma che ne esegue l’appoggio in MD100.16, l’appoggio è effettuato nella task di boot. Da modbus devi leggere 2 registri a partire da indirizzo 40008.

    #36812
    Anonimo
    Ospite

    Ho utilizzato lo SlimLine per proteggere il software di un’automazione che deve passare la certificazione MID.

    Il sistema funziona ma adesso mi chiedono di spiegare come viene calcolata la checksum che determina il numero univoco legato al contenuto della memoria programma e l’area di memoria coinvolta. E’ possibile avere l’equazione di calcolo o un’indicazione il più possibile dettagliata della procedura utilizzata durante la verifica della correttezza del software ?

    Spero mi possiate aiutare altrimenti dovrò cambiare sistema.

    #36813
    Sergio Bertana
    Amministratore del forum

    Come detto precedentemente, il sistema operativo dello SlimLine esegue un checksum dell’intero programma utente.

    In pratica viene eseguita una somma byte per byte di tutta l’area di memoria destinata al programma utente, la somma ritorna una variabile a 32 bits, gli overflows della somma vengono persi. Il cuore dell’algoritmo di calcolo è il seguente:

        for(n=0; n<CodeSize; n++)
            CheckSum+=(uint32_t)ProgramCode[n];

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