Funzioni ed FB¶
Funzioni¶
Le funzioni hanno numero di variabili in ingresso variabile e sempre una sola variabile in uscita. Per utilizzarle basta inserirle nei programmi LD ed FBD e connetterle alle variabili. Nei programmi IL devono essere chiamate con l’istruzione CAL, nei programmi ST basta indicarne il nome per essere eseguite.
Function Blocks¶
Le FB a differenza delle funzioni allocano nel programma una variabile che contiene tutte le variabili di input e di output gestite dal blocco funzione. Per utilizzarle basta inserirle nei programmi LD ed FBD e connetterle alle variabili. Nei programmi IL devono essere chiamate con l’istruzione CAL, nei programmi ST basta indicarne il nome per essere eseguite.
Funzioni ed FB embedded¶
Con l’ambiente di sviluppo LogicLab vengono fornite funzioni e blocchi funzione (FB) embedded che permettono di accedere alle risorse hardware e software del sistema Slim line. Le funzioni e le FB embedded sono visualizzate da LogicLab nella finestra delle librerie.
Se la finestra non è visualizzata, occorre abilitarne la visualizzazione dalla voce di menù View → Tool windows → Library. Attivando il Tab Target blocks verrà visualizzato un elenco con tutte le funzioni (Indicate con F) ed i blocchi funzione (Indicati con B) embedded.
Agendo con il tasto destro del mouse su ogni singola funzione o blocco funzione è possibile visualizzarne la finestra delle proprietà in cui sono indicate le variabili in ingresso ed il ritorno delle funzioni, mentre per i blocchi funzioni sono indicate le variabili in ingresso ed in uscita, cosi come nella figura a lato.
Librerie¶
In aggiunta alle funzioni ed FB embedded sono fornite delle librerie che contengono una serie di funzioni e blocchi funzioni che possono essere utilizzati nel proprio programma. Le librerie fornite con LogicLab si trovano nella directory di installazione programma ProgrammiElsistIEC61131SuiteLogicLab2p0Libraries, ma è possibile anche utilizzare librerie fornite successivamente o di cui si è eseguito il download dal sito. Esistono due possibilità per utilizzare le librerie:
Import libreria: In questo modo vengono importati nel proprio programma tutti gli oggetti presenti nella libreria, gli oggetti possono così essere utilizzati nel programma. Questa è una buona soluzione. La controindicazione è quella di aumentare la dimensione del file di progetto LogicLab (.ppjs), in quanto deve contenere oltre al proprio programma anche tutti gli oggetti della libreria importata. **Il programma eseguibile generato conterrà comunque solo gli oggetti utilizzati*.
Import oggetti: In questo modo è possibile importare da una libreria solo gli oggetti (Funzioni, FB, ecc) che interessano, i quali diverranno parte integrante del proprio progetto.
Import libreria¶
Con questa modalità vengono importati tutti gli oggetti presenti nella libreria. Per importare nel proprio programma l’intera libreria dal menù selezionare la voce Project → Library manager si aprirà una finestra come quella sotto riportata.
Agendo sul tasto Add si aprirà una finestra di browser del disco. Scegliere la directory dove si trova la libreria, e selezionare i files di libreria da importare.
Agendo sul tasto Close, nella finestra Library di LogicLab (Ctrl-L) verranno visualizzati dei tabs aggiuntivi, uno per ogni libreria importata.
Basta trascinare l’oggetto desiderato nel proprio progetto per poterlo utilizzare.
Importazione libreria¶
Eseguendo l’import delle librerie nel proprio progetto come indicato al capitolo precedente tutti gli oggetti della libreria importata vengono trasferiti nel proprio file di progetto (*.ppjs), ma viene comunque mantenuto un link alla libreria di origine come si vede dalla finestra a lato.
Questo permette nel caso la libreria sorgente venga modificata con una versione più recente di effettuare l’aggiornamento automatico della nuova libreria nel proprio progetto.
Se la libreria sorgente non è più presente oppure è stata spostata dalla posizione da dove è stata importata, LogicLab non eseguirà più il controllo senza segnalare errori.
Tramite il menù Project → Library manager che apre la finestra a lato, come si vede, è possibile selezionare le varie librerie e con il tasto UnLink rimuovere il link oppure con il tasto ReLink eseguire un link alla nuova posizione dove si trova la libreria.
Aprendo il progetto, LogicLab controlla tutte le librerie importate e nel caso una o più librerie sorgenti siano più recenti delle versioni importate viene visualizzato un messaggio di avvertimento che chiede conferma se eseguire oppure no l’aggiornamento delle librerie.
Eseguendo l’aggiornamento tutti gli oggetti della libreria importata presenti nel proprio progetto vengono sovrascritti con gli oggetti presenti nella libreria sorgente ed eventuali nuovi oggetti sono automaticamente importati.
Importazione oggetti da libreria¶
Per importare nel proprio programma oggetti dalle librerie occorre nel menù selezionare la voce Project → Import object from library. Si aprirà una finestra di browser del disco. Scegliere la directory dove si trova la libreria, e selezionare il file di libreria da cui si desidera importare gli oggetti.
Si aprirà la finestra di Object browser che permetterà di visualizzare tutti gli oggetti presenti nella libreria. Selezionando i vari tabulatori presenti è possibile visualizzare tutti gli oggetti della libreria ordinati per nome.
Con un click del mouse si evidenzia l’oggetto o gli oggetti desiderati. Con il tasto Import object gli oggetti selezionati verranno inclusi nel programma.
Come si nota dalla foto a destra alcuni oggetti appaiono visualizzati con un simbolo di lucchetto, questo sta ad indicare che sono oggetti protetti, cioè non possono essere modificati. Una volta importati nel proprio programma gli oggetti resteranno inclusi nel programma stesso e sarà possibile utilizzarli su qualsiasi PC anche se non si dispone della libreria originale.
Considerazioni su link a libreria e su import oggetti¶
Come visto nei paragrafi precedenti per utilizzare funzioni e/o blocchi funzione di libreria è possibile usare due diversi metodi, importare solo l’oggetto desiderato oppure tutta la libreria nel proprio progetto.
In entrambi i casi l’oggetto verrà incluso nel proprio progetto, in questo modo si è sicuri che anche nel futuro con versioni successive di libreria sarà sempre possibile ricompilare il progetto utilizzando l’oggetto con il quale si era sviluppato e testato.
Nel caso si desideri sostituire l’oggetto con una versione più recente dello stesso si userà un diverso approccio in funzione del fatto che l’oggetto sia presente in una libreria collegata oppure sia stato importato.
Libreria collegata
Come visto precedentemente, le librerie collegate mantengono un riferimento alla libreria di origine, nel percorso di memorizzazione nella distribuzione di LogicLab le librerie sono incluse in directories il cui nome rappresenta la versione. In questo modo potranno essere distribuite versioni successive di libreria, ma il progetto alla sua riapertura farà sempre il controllo con la versione originale senza eseguire l’aggiornamento automatico.
Per effettuare l’aggiornamento di un oggetto di una libreria collegata occorre eseguire un ReLink alla nuova versione della libreria. Attenzione! Questa operazione aggiornerà tutti gli oggetti presenti nella libreria.
Oggetto importato
Nel caso di oggetto importato, per effettuare l’aggiornamento, basterà rimuovere l’oggetto attuale dal progetto ed eseguire un import dello stesso oggetto dalla nuova versione della libreria.
Conclusioni
In generale si consiglia di non eseguire il collegamento della libreria ma di includere i singoli oggetti nel proprio progetto, questo permette una più semplice gestione degli aggiornamenti.
Alcune librerie contengono una serie di oggetti (Funzioni e blocchi funzione) che sono di vasto impiego, in questo caso è consigliabile sempre collegare queste librerie. Ecco l’elenco delle librerie che si consiglia di collegare al progetto:
Libreria | Codice | Descrizione |
eLLabStdLib_B100 | SFR053*000 | Libreria standard IEC61131, contiene funzioni e blocchi funzione definiti dalla normativa IEC61131 e non presenti nella libreria embedded del prodotto. |
ePLCAuxLib | SFR058*000 | Libreria ausiliaria, contiene funzioni e blocchi funzione di varia utilità. |
Protezione funzioni e blocchi funzione¶
Alcune funzioni e/o blocchi funzione di libreria possono essere protetti da un codice che deve essere ordinato separatamente. Per abilitarne l’esecuzione occorre sbloccarle definendone il codice (Stringa alfabetica di 18 caratteri) con la funzione SysPCodeAccept.
La funzione deve essere eseguita una sola volta passando il codice di protezione, se il codice è corretto la funzione ritorna TRUE e la relativa funzione sarà sprotetta fino al prossimo riavvio del programma. E” possibile eseguire più chiamate alla funzione una per ogni codice di protezione da definire.
Il consiglio è di inserire le varie chiamate alla funzione in un programma che verrà eseguito nella task di boot quindi prima di ogni chiamata ad altri programmi, garantendo lo sblocco delle funzioni desiderate.
A lato si può vedere come in un progetto il programma di definizione codici di protezione PCodes sia definito nella esecuzione della task di boot. Di seguito riportiamo il codice sorgente del programma PCodes realizzato in linguaggio ST. Naturalmente i codici riportati sono di fantasia pertanto se eseguito la funzione SysPCodeAccept ritornerà sempre FALSE.
Normalmente le funzioni ed i blocchi funzioni protetti possono funzionare in modo demo per un certo periodo di tempo dalla loro prima esecuzione dopo l’accensione del sistema. Terminato il tempo di prova termina il funzionamento e viene generato un errore che è rilevabile con la funzione SysGetLastError.
FB Disponibili¶
- Funzioni ed FB per gestione Flip/Flop
- Funzioni ed FB per gestione timers
- Funzioni ed FB per gestione counters
- Funzioni ed FB per conversione dati
- VBitTest, Variable bit test
- VBitSet, Variable bit set
- BitToByte, Bit to byte conversion
- ByteToBit, Byte to bit conversion
- ByteToWord, Byte to word conversion
- WordToByte, Word to byte conversion
- DoubleToWord, Double to word conversion.
- WordToDou ble, Word to double conversion
- LEArrayTo Var, Little endian array to variable conversion
- BEArrayTo Var, Big endian array to variable conversion
- VarToLEAr ray, variable to little endian array conversion
- VarToBEAr ray, variable to big endian array conversion
- VarSwap, swap variable value
- IEE754DoubleToFloat, IEE754 double to float
- Funzioni ed FB di utilità sistema
- SysGetSysTime, get system time
- SysGetUTC DateTime, get the system Date/Time on UTC
- SysSetUTC DateTime, set the system Date/Time on UTC
- SysTimeZoneAdj, adjust date and time
- Sysmemset, memory set
- Sysmemmove, memory move
- Systolower, converts a given letter to lowercase
- Systoupper, Lowercase to uppercase letter conversion
- SysSetTaskLpTime, set task loop time
- SysGetRandom, get random number
- SysGetLastError, get last error
- SysOSIDValue, get or set an operative system variable
- SysPCodeAccept, accepts the protection code
- SysGetCheck, gets the check
- SysMAlloc, memory allocation
- SysRMAlloc, relocatable memory allocation
- SysRMFree, relocatable memory free
- SysGetEnd ianness, get the system endianness
- SysSpyData, system spy data
- Funzioni ed FB per gestione Data/Ora
- Funzioni ed FB per gestione terminale di I/O
- Sysfopen, file open
- SysFIsOpen, get the file open status
- Sysfclose, file close
- Sysfgetc, get character from file
- Sysfputc, put character to file
- Sysfread, read data from file
- Sysfwrite, write data to file
- SysFGetIChars, get input available characters from file
- SysFGetOSpace, get output available space on file
- SysFGetIBfSize, get file Rx input buffer size
- SysFGetOBfSize, get file Tx output buffer size
- SysFIBfClear, file input buffer clear
- SysFOBfClear, file output buffer clear
- SysFOBfFlush, file output buffer flush
- SysVarfprintf, variable print to file
- File system
- Funzioni ed FB per gestione porta seriale
- Funzioni ed FB per gestione CAN bus
- Funzioni ed FB per gestione stringhe
- Funzioni ed FB per gestione moduli periferici
- SysPhrInfos, get infos from peripheral modules
- SysGetPhrDI, get peripheral digital input
- SysSetPhrDO, set peripheral digital output
- SysGetAnInp, get analog input
- SysSetAnOut, set analog output
- SysGetCounter, get counter
- SysGetEncoder, get encoder input
- SysSetPWMOut, set PWM output
- SysPhrVRd , read variable from peripheral module
- SysPhrVWr , write variable to peripheral module
- SysI2CWrRd, writes/reads on I2C extension bus
- StrainGaugeAcq, strain gauge acquisition
- Funzioni ed FB di utilità generale
- BLINK, blink command
- BlinkValue, blink out value
- ModbusMaster, modbus master
- ModbusSlave_v1, modbus slave
- ModbusCon version, Modbus Ascii/RTU conversion
- OnOffCycl e_v1, on/off cycle with random times
- PIDMng_v1, PID management
- PWMOut, PWM output management
- SysDMXMng, DMX management
- IOEncoder , incremental encoder over I/O
- GetISO115 5Crc, calculate CRC according ISO1155
- IODataExc hange, exchange data by using
- Average, value average
- HIDClkDtaReader, HID RFID clock/data reader
- Linearize , linearize a non linear value
- ValueScale, scales a value
- GetPolyno mialCRC, polynomial CRC calculation
- LRamp, linear ramp
- VaPotentiometer, voltage acquisition potentiometer
- ResistorValue, resistor value acquire
- BufferModified, checks if a buffer has been modified
- Wiegand26Dcd, decodes the Wiegand 26 bits code
- CLIManager, manages a command-line user interface
- Protocollo DLMS, o IEC 62056-21
- Funzioni ed FB gestione modem (eLLabModemLib)
- Funzioni ed FB gestione One-Wire (ePLC1WireLib_D000)
- Funzioni ed FB gestione networking (eLLabNetworkLib)
- SysTCPServer, accepts TCP/IP connections
- SysTCPClient, opens a TCP/IP
- SysUDPServer, accepts UDP connections
- SysUDPClient, opens a UDP connection
- SysGetIpInfos, returns IP infos
- SysIPReach, IP address is reachable
- UDPDataTxfer, UDP data transfer
- DataStreamExch_v1, exchanges data between two I/O streams
- ModbusTCPGateway_v1, modbus TCP gateway
- DNSRequest, sends a DNS request
- HTTPClient, HTTP client
- FTPClient_v1, connect to a FTP server
- MQTTClient, client for a MQTT server
- EMailSend, sends an eMail
- PushSafer, sends notifications to Pushsafer
- Funzioni ed FB supporto prodotti Hw Group (eHwGSpLib)
- Funzioni ed FB supporto protocollo NMEA (eLLabNMEALib)
- Funzioni ed FB supporto inverter Power One (eLLabPowerOneLib)
- Funzioni ed FB supporto log (eLLabLogLib)
- Gestione invio notifiche a server Syslog
- Funzioni ed FB comunicazione multimaster (eMMasterDTxferLib)
- Libreria gestione interfaccia operatore (eLLabHMIBuiltInLib)
- Libreria gestione protocollo ccTalk (eCCTalkProtoLib)
- Libreria gestione servizio REST (eLLabRESTSvcLib)
- Libreria gestione SNMP (eLLabSNMPLib)
- Libreria scambio dati su rete (eLLabDataExchLib)
- Libreria gestione periferiche (eLLabDevicesLib)
- Libreria gestione dispositivi Modbus (eLLabMdbDevsLib)
- Libreria gestione dispositivi mFi Ubiquiti (eLLabmFiDevsLib)