Come scrivere funzioni e blocchi funzioni in LogicLab
Home › Forum › Informazioni ambiente di sviluppo LogicLab › Come scrivere funzioni e blocchi funzioni in LogicLab
- Questo topic ha 5 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 11 anni, 5 mesi fa da
Sergio Bertana.
-
AutorePost
-
Ottobre 11, 2011 alle 3:21 pm #35118
Anonimo
InattivoAvrei 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 foundCome posso fare ?
Le chiedo inoltre se è possibile scrivere parte del codice direttamente in C.Ottobre 11, 2011 alle 5:00 pm #37008Sergio Bertana
Amministratore del forumDa 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).
Novembre 20, 2013 alle 4:16 pm #37904Luis
PartecipanteStò 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 BitToByte e ByteToWord, 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.
Novembre 20, 2013 alle 5:10 pm #37905Sergio Bertana
Amministratore del forumPrendo 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.
Novembre 21, 2013 alle 9:22 am #37906Luis
PartecipanteGrazie 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 ?
Novembre 21, 2013 alle 10:13 am #37907Sergio Bertana
Amministratore del forumUn 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.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.