Come scrivere funzioni e blocchi funzioni in LogicLab

Attenzione !I messaggi sul forum potrebbero essere modificati dal nostro staff. La data e l'ora dei messaggi potrebbe non essere quella di invio ma quella di moderazione da parte dello staff. Grazie per l'attenzione.

Home Forum Informazioni ambiente di sviluppo LogicLab Come scrivere funzioni e blocchi funzioni in LogicLab

Questo argomento contiene 5 risposte, ha 3 partecipanti, ed √® stato aggiornato da  Sergio Bertana 5 anni, 4 mesi fa.

Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
  • Autore
    Articoli
  • #35118

    Antonio
    Partecipante

    Avrei bisogno di sapere qual’è il formalismo per scrivere dei FB in ST.  Ho scritto un semplice FB di prova:

    sig_out := sig_01 OR sig_02;
    RETURN;

    Dopo aver compilato la lista variabili di in e di out.

    Ma il compilatore continua a restituire il seguente errore:
    error S0002: : error description not found

    Come posso fare ?
    Le chiedo inoltre se è possibile scrivere parte del codice direttamente in C.

    #37008

    Sergio Bertana
    Amministratore del forum

    Da quanto scritto mi sembra corretto, non avendo il tuo programma non sono in grado di dire dovè l’errore. Ma ho pensato di postare un semplice progetto adatto al simulatore su PC con una funzione ed un FB scritti in ST così puoi usarle come punto di partenza (Download).

    In pratica ho realizzato una funzione ed un FB che eseguono la OR tra due variabili passate come parametri in ingresso e restituiscono in uscita una variabile con il valore della OR.

    Come si vede dal programma ladder dove la funzione e l’FB sono richiamate, la differenza sostanziale è che mentre la funzione può essere utilizzata senza dover essere istanziata, il blocco funzione deve essere istanziato (E’ dichiarata nel programma ladder una variabile FBData di tipo MyFB).

    Non è possibile scrivere codice in linguaggio C, in quanto LogicLab opera in accordo alla normativa IEC 61131 che prevede 5 linguaggi, IL, FBD, LD, ST, SFC. Ma ti ricordo che il linguaggio ST ha molte caratteristiche comuni al linguaggio C. Si possono definire tipi di dato e strutture dati, si può operare con i puntatori (Usando l’operando @), ci sono gli operatori IF, WHILE, FOR e CASE (Lo switch del C).

    #37904

    Luis
    Partecipante

    Stò facendo una aplicazione con due CPU SlimLine compact, volevo fare un blocco funzione in linguaggio ST per comprimere 16 BOOL in una WORD ed inviarla usando il registro modbus 4x, dall’altra parte riceverla e riconvertila in 16 bit BOOL, ho visto che in LogicLab ci sono le funzioni BitToByteByteToWord, ma volevo fare un blocco funzione senza usare queste due funzioni.

    Volevo anche sapere come si fà ad impostare la data sulla CPU SlimLine compact RS485,  mi sono collegato con il cavo USB, con la pagina web del PLC riesco a impostare le configurazioni delle porte seriali anche l’indirizzo IP, ma quando cerco di inserire la data aggiornata non mi prende le impostazioni.

    #37905

    Sergio Bertana
    Amministratore del forum

    Prendo spunto dalla tua richiesta per realizzare un programma in cui ho definito due FB identiche nel funzionamento ma realizzate con due linguaggi diversi. In questo modo desidero dimostrare come sia possibile ad esempio utilizzando il linguaggio FBD realizzare la FB di cui tu hai bisogno BitToWordFBD, semplicemente richiamando altre FB di libreria.

    Nello stesso programma troverai anche la BitToWordST, dove realizzo quello di cui hai bisogno in modo nativo in linguaggio ST. Ora ognuno può usare la tecnica che vuole per realizzare le proprie FB ma credo sia preferibile sempre raggruppare funzioni o FB già scritte e testate piuttosto che realizzare una FB completamente da zero. Ecco la stampa ed il download del programma.

    In merito alla impostazione della data nella pagina General Setup basta impostare il nuovo valore di data ed ora e agire sul tasto Save (Screenshot). Devi fare attenzione a scrivere la data e l’ora nel formato in cui sono visualizzate, mantenendo sia la barra che i due punti di separazione tra le cifre senza interporre spazi, l’anno và scritto su 4 cifre.

    #37906

    Luis
    Partecipante

    Grazie per il tempo dedicato. la funzione bit to word scritta in ST mi stata molto utile, stavo lavorando su una funzione per descomprimere la word  di nuovo in 16 BOOL ma non mi riesce bene, ho inviato la word su altri dispositivi SlimLine e lo decodificata usando le funzioni ByteToBit di LogicLab, ma su un dispositivo SCADAPack non posso usare questi blocchi, in Isagraf 3.55 posso usare soltanto aplicazioni scritte in ST.

    Invece per l’ impostazione della data, lo SlimLine non ne vuole proprio sapere, ho provato su tutti 3 dispositivi che ho ma su tutti è uguale, guardando lo screenshot in alto vedo che il menu de miei SlimLine è diverso, forse non supportano le impostazione della data ?

    #37907

    Sergio Bertana
    Amministratore del forum

    Un blocco funzione per decomprimere la WORD in 16 BOOL potrebbe essere scritto nel modo che ti indico sotto. Naturalmente devi mettere tutti i bits, io ti ho solo messo un esempio con i primi e gli ultimi.

      b00:=TO_BOOL(In AND 16#0001); (* Bit 0 result *)
      b01:=TO_BOOL(In AND 16#0002); (* Bit 1 result *)

      b07:=TO_BOOL(In AND 16#0080); (* Bit 7 result *)
      b08:=TO_BOOL(In AND 16#0100); (* Bit 8 result *)

      b15:=TO_BOOL(In AND 16#8000); (* Bit 15 result *)

    Per il problema dell’orologio, ti consiglio di eseguire un upgrade del firmware dei moduli (Vedi nota). Ma aspetta qualche giorno che sia stata pubblicata la versione SFW184A800 che ha anche le pagine web così come hai visto nel mio screenshot.

Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)

Devi essere loggato per rispondere a questa discussione.