QCL Library
REGOLE DI UTILIZZO
Per consultare le regole generali di utilizzo di una funzione QCL vedere il seguente link:
RIEPILOGO FUNZIONI
0.1 FUNZIONI PER OPERAZIONI SU INGRESSI DIGITALI
🖲️
| IR10EdgeInp | Rilevazione del fronte di salita e di discesa di un ingresso o di un flag | 
| IR10Edge | Rilevazione del fronte di un segnale digitale con tempo di verifica | 
| IR10EdgTmInp | Rilevazione del fronte di salita e di discesa di un ingresso o di un flag con reset a tempo dei flag di cattura fronti | 
| VC10ChronVar | Misurazione del tempo di attivazione di un ingresso o di una variabile | 
0.2 FUNZIONI PER OPERAZIONI SU USCITE DIGITALI
⚡
| OA10BlinkOut | Gestione del lampeggio (blink) di una uscita o flag | 
| OA10SetTmOut | Gestione dell'attivazione di un'uscita per un tempo impostabile | 
| OT11PidReg | Modulazione di una uscita digitale per il controllo di un processo di termoregolazione tramite sistema P.I.D. | 
| OT21PidReg | Modulazione di due uscite digitali per un controllo generico di processo tramite regolazione PID + FF. | 
| OT30PidReg | Regolatore generico PID + FF. Dati di regolazione a 16 bit | 
| OT31PidReg | Regolatore generico PID + FF. Dati di regolazione a 16 o 32 bit | 
0.3 FUNZIONI PER OPERAZIONI SU VARIABILI
🔢
| VC10CollVal | Comparazione di un valore rispetto ad altri due | 
| VC10Copy | Copia un valore da A a B oppure da B ad A | 
| VC10HistVar | Isteresi di una variabile rispetto ad altri due valori | 
| VC10ChronVar | Misurazione del tempo di attivazione di una variabile o ingresso | 
| VC10Calendar | Calcolo del giorno della settimana (lunedì-ecc) a partire da una data | 
| VC12FndXPnt | Calcolo dell'ascissa di un punto su una retta | 
| VC12FndYPnt | Calcolo dell'ordinata di un punto su una retta | 
| VT10OnChVar | Segnalazione della variazione di una variabile | 
| VT10OnChTVar | Segnalazione della variazione di una variabile con reset a tempo del flag di cambio valore | 
| VC10DivRound | Arrotondamento di una variabile a un numero di cifre decimali impostabile | 
| VC10LPFilter | Filtro digitale passa basso del primo ordine (filtro RC) per dati di dimensione WORD | 
| VC21LPFilter | Filtro digitale passa basso del primo ordine (filtro RC) per dati di dimensione massima +/- 999999 con opzione di precaricamento | 
| VC10MkTime | Fornisce il numero di secondi trascorsi dalle 00:00 del 1°gennaio 1970 fino alla data introdotta. | 
| VC20MkTime | Fornisce il numero di secondi trascorsi dalle 00:00 del 1°gennaio 1970 fino alla data introdotta. | 
| VC11Hdr | Visualizzazione della posizione di un device con sistema Hdr OBSOLETA | 
| VC12Hdr | Visualizzazione della posizione di un device con sistema Hdr | 
| VC11HdrJoint | Visualizzazione della posizione di un device Joint con sistema Hdr | 
| VC10Granularity | Visualizzazione di un valore con filtro di granularità e soglia | 
| VR10WrdtoLng | Conversione: Trasforma due variabili Word in una Long | 
| VR10LngtoWrd | Conversione: Trasforma una variabili Long in due Word | 
| VR10UbyToBin | Conversione: Unsigned Byte → Binario | 
| VR10SByToBin | Conversione: Signed Byte → Binario | 
| VR10UwrToBin | Conversione: Unsigned Word → Binario | 
| VR10SwrToBin | Conversione: Signed Word → Binario | 
| VR10SLnToBin | Conversione: Signed Long → Binario | 
| VR10BinToUBy | Conversione: Binario → Unsigned Byte | 
| VR10BinToSBy | Conversione: Binario → Signed Byte | 
| VR10BinToUWr | Conversione: Binario → Unsigned Word | 
| VR10BinToSWr | Conversione: Binario → Signed Word | 
| VR10BinToSLn | Conversione: Binario → Signed Long | 
| VR10UbyToAsc | Conversione: Unsigned Byte → Ascii | 
| VR10SbyToAsc | Conversione: Signed Byte → Ascii | 
| VR10UwrToAsc | Conversione: Unsigned word → Ascii | 
| VR10SwrToAsc | Conversione: Signed Word → Ascii | 
| VR10SlnToAsc | Conversione: Signed Long → Ascii | 
| VR10AscToUBy | Conversione: Ascii → Unsigned Byte | 
| VR10AscToSBy | Conversione: Ascii → Signed Byte | 
| VR10AscToUWr | Conversione: Ascii → Unsigned Word | 
| VR10AscToSWr | Conversione: Ascii → Signed Word | 
| VR10AscToSLn | Conversione: Ascii → Signed Long | 
| VR10ToSingle | Copia un valore long intero codificato IEEE754 in una variabile single. | 
0.4 FUNZIONI DI CONTROLLO ENCODER
🌀
| DT11BreakEnc | Controllo rottura encoder assi ANALOGICI | 
| DT21BreakEnc | Controllo rottura encoder assi ON/OFF | 
0.5 FUNZIONI GENERALI PER POSIZIONATORI
📈
| DA11Ramp | Generatore di rampa generico | 
| DA10AnOopos | Gestione uscita analogica per asse ON/OFF con rampe | 
0.6 FUNZIONI DI GESTIONE BUFFER CIRCOLARI
🔄🔢
| BC10InitBuf | Init di un buffer circolare (con variabili di gestione buffer interne all'array) | 
| BC10PushBuf | Inserimento di un valore (push) in un buffer circolare (con variabili di gestione buffer interne all'array) | 
| BC10PopBuf | Estrazione di un valore (pop) da un buffer circolare (con variabili di gestione buffer interne all'array) | 
| BC21InitBuf | Init di un buffer tipo FIFO (circolare) | 
| BC21PushBuf | Inserimento di un valore (push) in un buffer tipo FIFO | 
| BC21PopBuf | Estrazione di un valore (pop) da un buffer tipo FIFO | 
| BC21Inspect | Acquisizione di un valore interno del buffer | 
| BC21Elements | Acquisizione del numero di elementi presenti nel buffer | 
| BC22InitBuf | Init di un buffer tipo FIFO (circolare) | 
| BC22PushBuf | Inserimento di un valore (push) in un buffer tipo FIFO | 
| BC22PopBuf | Estrazione di un valore (pop) da un buffer tipo FIFO | 
| BC22Inspect | Acquisizione di un valore interno del buffer | 
| BC22Elements | Acquisizione del numero di elementi presenti nel buffer | 
0.7 FUNZIONI CON OPERAZIONI GENERALI SU ARRAY
📚
| AC10AvergArr | Calcolo della media aritmetica degli elementi di un array | 
| AC10CtrlArr | Analisi degli elementi contenuti in un array | 
| AC10SortUpAr | Ordinamento in modo crescente degli elementi di un array | 
| AC10SortDwAr | Ordinamento in modo decrescente degli elementi di un array | 
| AC10FdMaxArr | Estrazione del massimo valore contenuto in un array | 
| AC10FdMinArr | Estrazione del minimo valore contenuto in un array | 
| AC11ResetArr | Reset completo di un array | 
| BC10ArrFifo | Gestione di un buffer Fifo (first input-first output) | 
0.8 FUNZIONI PER PROTOCOLLO MODBUS
💬
| DW13Modbus | Protocollo Modbus SLAVE : gestione scambio dati con device MODBUS | 
| DW11SerModMa | Protocollo Modbus MASTER simulato tramite device SERCOM | 
| DW14SerModSl | Protocollo Modbus SLAVE simulato tramite device SERCOM | 
| DU10MbRetry | Esecuzione del comando SEND del device MODBUS con verifica e gestione di eventuali ritentativi. | 
0.9 FUNZIONI PER VECTOR IMAGE (QPAINT)
Applicativo di esempio
Queste funzioni sono state implementate su un applicativo di esempio sviluppato per un PLC J1P44F-30, il codice di esempio funziona anche sugli altri modelli di PLC della serie QMove+.
✏️📐
| VI10InitBuffer | Inizializzazione Buffer | 
| VI10BeginDrawBuffer | Prepara il Buffer per aggiungere le operazioni di disegno e restituisce il codice di errore precedente | 
| VI10DrawBuffer | Disegna il contenuto del Buffer | 
| VI10WaitBufferReadyUsingEND OBSOLETA VI10CheckBufferReady | Attende che il buffer sia pronto a nuove operazioni uscendo dal task speciale con END Restituisce lo stato di “READY” del buffer in un task a tempo | 
| VI10WaitBufferReadyUsingWAIT VI11WaitBufferReadyUsingWAIT | Attende che il buffer sia pronto a nuove operazioni uscendo dal task speciale con WAIT | 
| VI10GetErrorCode | Restituisce il codice di errore attuale | 
| VI10ClrErrorCode | Cancella il codice di errore attuale | 
| VI10GetUnusedBufferSize | Recupera la dimensione del Buffer utilizzato | 
| VI10AddNop | Aggiunge al Buffer il comando NOP (nessuna operazione) | 
| VI10AddCls | Aggiunge al Buffer il comando CLS (cancella l'area Vector Image) | 
| VI10SetLayer | Aggiunge al Buffer il comando SET_LAYER (imposta il layer attivo) | 
| VI10UnsetLayer | Aggiunge al Buffer il comando UNSET_LAYER (disabilita il layer indicato) | 
| VI10AddPen | Aggiunge al Buffer il comando PEN (imposta il colore disegno) | 
| VI10AddSet | Aggiunge al Buffer il comando SET (imposta le coordinate attuali) | 
| VI10AddPoint | Aggiunge al Buffer il comando POINT (disegna un punto) | 
| VI10AddLine | Aggiunge al Buffer il comando LINE (disegna una linea) | 
| VI10AddRect | Aggiunge al Buffer il comando RECT (disegna un rettangolo) | 
| VI10AddCircle | Aggiunge al Buffer il comando CIRCLE (disegna un cerchio) | 
| VI10AddArc1 | Aggiunge al Buffer il comando ARC1 (disegna un arco di tipo 1) | 
| VI10AddArc2 | Aggiunge al Buffer il comando ARC2 (disegna un arco di tipo 2) | 
| VI10AddArc3 | Aggiunge al Buffer il comando ARC3 (disegna un arco di tipo 3) | 
| VI10AddArcBetweenAngles | Aggiunge al Buffer il comando per il disegno di un arco che va da una angolo A ad un angolo B | 
| VI10SetBackground | Aggiunge al Buffer il comando background (imposta il colore di background) | 
| VI10AddMoveArea | Aggiunge al Buffer il comando MOVEAREA (muove il contenuto del vector Image) | 
| VI10LoadImage | Aggiunge al Buffer il comando LOAD_IMAGE (carica l'immagine associata ad un oggetto Image) | 
| VI10GetDimension | Aggiunge al Buffer il comando GET_DIMENSION (legge le dimensioni dell'oggetto VectorImage) | 
| VI10ExtractDimension | Estrae le dimensioni dell'oggetto VectorImage dal Buffer dopo l'esecuzione del comando VI10GetDimension | 
0.10 FUNZIONI PER GESTIONE TERMOCOPPIE
🌡️
| VC10TCoupleB | Calcolo della temperatura per termocoppia di tipo B | 
| VC10TCoupleJ | Calcolo della temperatura per termocoppia di tipo J | 
| VC10TCoupleK | Calcolo della temperatura per termocoppia di tipo K | 
| VC10TCoupleN | Calcolo della temperatura per termocoppia di tipo N | 
| VC10TCoupleT | Calcolo della temperatura per termocoppia di tipo T | 
| VC10PTC100 | Calcolo della temperatura per PT100 | 
| IR10HJRead | Lettura del giunto caldo | 
| IR10CJRead | Lettura del giunto freddo | 
| IR11PTCRead | Lettura della resistenza PT100 da scheda a 3 punti | 
| IR20PTCRead | Lettura della resistenza PT100 da scheda a 3 punti con modalità di lettura differenziale. | 
0.11 FUNZIONI PER GESTIONE USCITE PROGRAMMABILI
🎛️
| OP10Init | Uscite programmabili, inizializzazione | 
| OP10isOutOn | Uscite programmabili, test se stato uscita attivo | 
| OP10isParOk | Uscite programmabili, verifica correttezza valore | 
| OP10Manage | Uscite programmabili, elaborazione dati | 
| OP10ResOut | Uscite programmabili, reset stato uscita | 
| OP10ResRet | Uscite programmabili, reset ritenuta uscita | 
| OP10SetOut | Uscite programmabili, set stato uscita | 
0.12 FUNZIONI PER CALCOLO CHECKSUM
✅
| VC10Cr32Init | Calcolo CRC, inizializzazione | 
| VC10Cr32Beg | Calcolo CRC, Inizio del calcolo | 
| VC10Cr32Calc | Calcolo CRC, Conclusione del calcolo | 
| VC10Cr32Udt | Calcolo CRC, Aggiornamento del calcolo | 
0.13 FUNZIONI PER GESTIONE LISTA ALLARMI E STORICO
🚨
| UU10WarnNotify | Inserimento di un warning in un buffer FIFO | 
| UU20MessageNotify | Inserimento di un messaggio in un buffer FIFO | 
| UU20TextMessageNotify | Inserimento di un messaggio con stringa di testo in un buffer FIFO | 
| UU20AlarmNotify | Inserimento di un allarme in un buffer FIFO | 
| UU20TextAlarmNotify | Inserimento di un allarme con stringa di testo in un buffer FIFO | 
FUNZIONI PER SYNCROMOVE
0.14 FUNZIONI GENERALI PER OPERAZIONI CON CAMMING
🔄
| DW22WrCam | Scrittura su settori camma (40 settori) (CAMMING2,CAMMING3,CAMMING4) | 
| DW31WrCam | Scrittura su settori camma (128 settori) (CAMMING3,CAMMING4) | 
| DC11SpaceCam | Calcoli per ricerca spazio master minimo con spazio slave impostato | 
| DC10VelCam | Calcoli per costruzione dei settori di accelerazione, velocità costante e decelerazione di una camma elettronica, impostando lo spazio Master e Slave e le rispettive velocità | 
0.15 FUNZIONI PER ALBERO ELETTRICO
📉
| DC10ElGear | Calcoli per gestione Albero Elettrico Master/Slave | 
| DC10ChGear | Calcoli per cambio rapporto di sincronismo “al volo” in Albero Elettrico Master/Slave (senza rampe) | 
| DC10ChVelRat | Calcolo per impostare e/o cambiare il rapporto di velocità Slave/Master di un albero elettrico in maniera dinamica con rampe di addolcimento durante il cambio velocità | 
0.16 FUNZIONI PER TAGLIO AL VOLO
🔪
| DC21FlyCut | Calcoli per taglio al volo lineare con ottimizzazione della produttività macchina | 
| DC30FlyCut | Calcoli per taglio al volo lineare con spazio Slave fisso | 
| DW22WrCam | Scrittura su settori camma (40 settori) (CAMMING2,CAMMING3,CAMMING4) | 
| DW31WrCam | Scrittura su settori camma (128 settori) (CAMMING3,CAMMING4) | 
| DW10ChLenght | Scrittura su settori camma per cambio lunghezza taglio al volo lineare (CAM01) | 
| DW22ChLenght | Scrittura su settori camma per cambio lungh. taglio al volo lineare (CAMMING, CAMMING2, CAMMING3) | 
| DC10DoubFlyC | Calcolo per prelievo di un pezzo campione durante l'esecuzione di un taglio al volo lineare. | 
| DC10DinHFlyC | Calcolo per modifica lunghezza al volo del pezzo da tagliare durante l'esecuzione di un taglio al volo lineare (tipicamente taglio difetto su materiale) | 
0.17 FUNZIONI PER SPANDIFILO (GUIDA-FILO)
🧵
| DC10Winding | Calcolo per la costruzione della camma per la gestione di uno spandifilo | 
0.18 FUNZIONI PER TAGLIO AL VOLO CIRCOLARE
🔪 🌀
| DC12RotCut | Gestione di un taglio al volo circolare con cilindro di taglio mono o multilama (da1 a 6 lame) | 
| DC22RotCut | Gestione di un taglio al volo circolare con cilindro di taglio mono o multilama (da1 a 6 lame) con fermata ad Home dello Slave e Comando taglio manuale dissincronizzato | 
0.19 FUNZIONI DI SISTEMA
⚙️
| SY10InitializeCriticalSection | Gestione inizializzazione sezione critica | 
| SY10EnterCriticalSection | Gestione entrata in sezione critica | 
| SY10LeaveCriticalSection | Gestione uscita da sezione critica | 
0.20 FUNZIONI PER GESTIONE STRINGHE
🔤
| ST10StrStr | Ricerca stringa in sottostringa | 
| ST10StrCpy | Copia stringa | 
| ST10StrLen | Lunghezza stringa | 
| ST10StrNCpy | Copia caratteri dalla stringa | 
| ST10atoi | Converti stringa in intero | 
| ST10StrCat | Concatena stringhe |