Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumI files ppd delle stampanti supportate sono nella cartella EBpro/ppd (ci sono circa 890 diverse stampanti). Per le stampanti commerciali i files ppd sono normalmente contenuti nel CD della stampante.
I modelli 8090XE e CMT-3090 sono entrambi pannelli da 9 pollici, ma le stampanti ppd sono supportate solo dai pannelli della serie CMT. Tutte le altre serie di pannelli supportano solo le stampanti PCL 5.
Sergio Bertana
Amministratore del forumLeggendo un pò di specifiche sulla serie CMT, ho notato (come giustamente lei ha detto) che esiste la possibilità di istallare driver sul tastierino inserendo dei cosiddetti file “PPD” forniti dal costruttore della stampante, tuttavia sto facendo fatica a reperirli in rete. Mi conferma che è questa la modalità di installazione dei driver su serie CMT?
Quale sarebbe la differenza tra un 8090XE ed un CMT-3090 ?
Sergio Bertana
Amministratore del forumPer quanto riguarda stampanti in rete le uniche che si possono usare sono quelle tipo scontrino che supportano comandi ASCII quindi con il protocollo FreeProtocol si possono inviare attraverso macro le stringhe da stampare. In questo topic c’è un esempio che utilizza la poprta seriale ma puoi facilmente convertirlo in Ethernet.
In alternativa bisogna passare ai pannelli CMT-3090 che sono su base CMT e che supportano molte più stampanti inoltre è possibile aggiungere anche il driver se supportato.
Settembre 25, 2017 alle 6:24 am in risposta a: Controllo accessi con lettore RFID con protocollo Wiegand #39974Sergio Bertana
Amministratore del forumAbbiamo sviluppato un FB specifico per la decodifica del codice Wiegand, Topic.
Sergio Bertana
Amministratore del forumNon sò con che linguaggio dei 5 possibili è scritto il tuo programma, i linguaggi IL ed ST sono sicuramente quelli che permettono di avere il codice più compatto. Poi all’interno di una programmazione le regole di riduzione codice sono le classiche regole di buona programmazione.
Se possibile utilizza costanti anzichè variabili.
Utilizza dove possibile dei cicli FOR o WHILE anzichè usare le singole assegnazioni.
Se hai operazioni ripetitive puoi scrivere una funzione od un FB e richiamarlo più volte.Ricordo che sulle CPU Compact è possibile acquistare l’opzione estensione codice programma che permette di raddoppiare l’area di codice portandola a 96KBytes. Le nuove CPU CortexM7 hanno un’area di codice più grande rispetto alle precenti, 131KBytes che nella versione estesa arrivano a 262KBytes. Inoltre grazie alla architettura del processore hanno un codice compilato molto più compatto (A parità di programma sorgente si ha un 30% di risparmio sul codice compilato).
Settembre 22, 2017 alle 6:13 am in risposta a: Utilizzo uscite analogiche modulo esp. 20I/O mixed signals #39973Sergio Bertana
Amministratore del forumGli ingressi analogici sono protetti contro le sovratensioni, quindi anche applicando una tensione di 24Vdc all’ingresso non si danneggia, la stessa cosa però purtroppo non si ha sulle uscite. L’uscita dell’operazionale che genera la tensione è direttamente connesso al pin del connettore e quindi applicando una tensione in ingresso dove si dovrebbe collegare un carico porta quasi sicuramente alla rottura del circuito.
Sergio Bertana
Amministratore del forumIntanto ricordo che la configurazione della rete tramite Toolly è possibile solo entro i 10 minuti dalla accensione del sistema, ma il tuo problema è che cerchi di impostare come indirizzo il 198.168.0.122 che è l’indirizzo di default assegnato alla rete Ethernet dove questa è prevista, quindi non viene accettato.
Come soluzione visto che la rete RNDIS è una rete privata tra il PC e lo SlimLine sei libero di assegnare qualsiasi indirizzo a questa rete (Basta modificarne i parametri sia sullo SlimLine che sul PC). Quindi ti consiglio di impostare una rete diversa (Esempio 198.168.10.xxx, oppure 10.xxx.xxx.xxx).
Rimando a topic, topic per altre informazioni sull’argomento.
Sergio Bertana
Amministratore del forumIl valore QNAN passato al FB Average non blocca lo SlimLine ma perturba il valore di media calcolato dal FB. Pertanto se una acquisizione ritorna un valore QNAN e questo valore lo passi al FB il valore in uscita sarebe falsato.
Mi parli di abilitazione del FB Average, quindi immagino programmi in LD o FBD, disabilitare il FB significa non eseguirlo, ma siccome l’uscita di Fault dura un solo loop di programma mentre il valore in uscita rimane stabile fino alla prossima acquisizione l’FB verrebbe eseguito comunque con in ingresso un valore QNAN.
Ho preso spunto dalla tua segnalazione per modificare l’FB Average in modo da controllare il valore in entrata e se QNAN oppure infinito, blocco il calcolo del valore di media propagando in uscita il valore in ingresso. Ecco lo screenshot del programma, modificando in debug il valore in ingresso è poossibile vedere il comportamento del FB. Allego programma con codice sorgente anche del FB Average.
Sergio Bertana
Amministratore del forumUtilizzando l’FB SysTCPClient puoi aprire una connessione TCP con il server Telnet, l’FB ti ritornerà in File uno stream di comunicazione, utilizzando la funzioni di gestione I/O su stream (Sysfgetc, Sysfputc, Sysfread e Sysfwrite) potrai gestire la comunicazione con il server.
Ma se il tuo server Telnet gestisce una interfaccia a linea di comandi CLI, magari con autenticazione tramite username e password potrai utilizzare molto più semplicemente l’FB CLIManager (Estratto manuale) che semplifica notevolmente la gestione di una interfaccia a linea di comando. Ecco anche il programma Ptp114a660 che contiene tutti gli esempi per libreria eLLabUtyLib_C050 compreso l’esempio di utilizzo del FB CLIManager.
Sergio Bertana
Amministratore del forumOur SlimLine LogicLab IEC61131-3 Cortex M7 CPU has a 12 bits ADC converter that can convert a signal in less than 5 uS. So you can write a program to be executed in the Task Fast that acquire the signal and make all the calcules you need. The Fast task is ran every 1 mS but with the SysSetTaskLpTime (set task loop time) function, you can modify the execution time (Minimum value 100 uS).
The ADC converter can acquire only positive voltage values from 0 to 10 volts. So if you need to acquire positives and negatives values you have to design an analog circuit capable to offset to 1 volt the analog value and multiply it by 5.
When the sensor value is in the positive range (From 0 to 1 Volt) the ADC reads values from 0 to 5 volts. When the sensor value is in the negative range (From 0 to -1 Volt) the ADC reads values from 5 to 0 volts.
Sergio Bertana
Amministratore del forumEffettivamente il compilatore di LogicLab può compilare in modalità hot-swap, è quindi in grado di ricompilare il progetto mantenendo l’allocazione delle variabili automatiche per permettere il caricamento a caldo del programma sul target.
Attualmente però nessuno dei nostri sistemi supporta il caricamento a caldo, questo perchè per utilizzare il caricamento a caldo del programma occorre trasferire il programma su memoria RAM ed essendo tutti i nostri sistemi basati su core embedded non dispongono della memoria RAM sufficente per questo.
Naturalmente siamo sensibili a questa possibilità, abbiamo già anche realizzato versioni di prova, ma per fare questo sui sistemi attuali abbiamo dovuto ridurre drasticamente la dimensione del programma. Appena potremo disporre di un hardware con sufficente memoria RAM la renderemo disponibile.
Luglio 27, 2017 alle 9:13 am in risposta a: Controllo funzionamento applicazione tramite heartbeat #36443Sergio Bertana
Amministratore del forumIl flusso del programma così come l’hai descritto è perfetto, ed è legittima anche la tua perplessità. Ecco la stampa di un programma che esegue quello che ti necessita.
La differenza di tempo “SysGetSysTime(TRUE)-TimeBf” essendo tra due valori di tipo UDINT mantiene il rapporto circolare è restituisce un valore corretto anche se vi è un rollover del valore di ritorno dalla funzione SysGetSysTime(TRUE).
Attenzione il calcolo della differenza deve avvenire nell’intervallo di tempo necessario al rollover del valore, per spiegarmi esendo il tempo incrementato ad ogni uS il rollover avviene dopo 4294967295 uS pari a 4294 secondi. Se la differenza “SysGetSysTime(TRUE)-TimeBf” fosse eseguita con un valore di TimeBf salvato da più di 4294 secondi il risultato sarebbe in errore. Ecco perchè non ho scritto qualcosa del tipo:
Error:=(SysGetSysTime(TRUE)-TimeBf) > 5000000;
Perchè immaginando che l’ingresso di heartbeat non arrivi più ogni 4294 secondi avrei per 5 secondi l’uscita Error disattiva pur essendo in errore. Allego il programma sorgente.
Sergio Bertana
Amministratore del forumNon c’è un modo nativo di fare riprodurre in loop un file WAV. L’unico modo è quello di gestire come hai fatto tu la riproduzione del suono su di comando PLC e poi fare lampeggiare il comando direttamente da PLC oppure da terminale tramite una macro.
Sergio Bertana
Amministratore del forumPer gestire il salvataggio di dati su file in formato CSV puoi utilizzare il FB StringToLogFile che permette appunto di salvare in un file formato CSV una stringa. Quindi puoi da programma creare la stringa con i dati che vuoi salvare nel file e poi eseguirne il salvataggio. Troverai in questi topic, topic dei programmi di esempio.
In questo topic un esempio di FB che gestisce la lettura di una cella da un file CSV, il programma sorgente può essere utilizzato come base per una propria FB di lettura/scrittura di file CSV.
Sergio Bertana
Amministratore del forumIl programma che trovi in questo topic lo puoi utilizzare come base per la lettura della forza di compressione della molla. Tenendo conto che hai 90 cicli al minuto ogni ciclo dura circa 670 mS. Il FB StrainGaugeAcq se si imposta FilterCf a 1 è in grado di eseguire una acquisizione di peso in ca 32 mS, ma naturalmente senza nessun filtro avrai in lettura anche dei valori di rumore. Quindi dovrai impostare il corretto valore di FilterCf per acquisire nel modo migliore il valore di pressione della molla.
Il problema è eseguire la lettura sul valore massimo di compressione della molla, meglio sarebbe avere un finecorsa sulla meccanica che ti informa che la molla è al suo valore massimo di compressione. In caso contrario devi ricavi il valore dalla lettura di peso. Effettuata la lettura del peso al picco di compressione non basta fare altro che compararlo con il valore di riferimento e se troppo basso segnalare errore.
-
AutorePost