Risposte nei forum create
-
AutorePost
-
Aprile 7, 2018 alle 6:45 am in risposta a: Informazioni sulla gestione delle ricette tramite terminale #40068
Sergio Bertana
Amministratore del forumL’esempio di questo topic è stato ripreso ed aggiornato in questo topic.
Sergio Bertana
Amministratore del forumNel tuo caso specifico acquisire temperature utilizzando sensori Pt100 o Pt1000 è estremamente semplice, il nostro modulo di espansione I/O analogico gestisce direttamente molti tipi di sensori ritornando in uscita un valore di temperatura già in gradi centigradi su di una variabile a virgola mobile di tipo REAL.
Quindi basterà nel tuo programma istanziare un FB SysGetAnInp definendo l’indirizzo del modulo di I/O analogico ed il canale (Il modulo ne può avere 5 o 10) da cui vuoi acquisire il valore di temperatura, ecco lo screenshot di un programma in FBD.In pratica è un pò quello che hai descritto tu, istanziare infatti significa dichiarare una variabile assegnando un nome (Nel nostro caso Temperatura) di tipo FB, nel programma si definiranno i vari parametri in ingresso al FB (Nel nostro caso indirizzo di modulo, numero di canale e tipo di lettura) e si collegherà in uscita la variabile che dovrà contenere il valore (Nel nostro caso TAcqua).
Come vedi per semplicità ho dichiarato la variabile TAcqua come variabile locale, ma se tu la vuoi utilizzare in altri program (POUs) del progetto dovrai dichiarare come hai detto tu una variabile globale.
Sergio Bertana
Amministratore del forumLe ultime versioni delle varie librerie di LogicLab sono disponibili nella zona download della pagina delle librerie sul nostro sito. Scarichi la libreria che ti interessa e poi importi dalla libreria (Topic) l’oggetto che ti serve (Nel tuo caso la funzione ValueScale).Quello che è strano è che nella libreria eLLabUtyLib_C040 la funzione è presente, sei sicuro di avere selezionato le funzioni (Screenshot) quando esegui l’import ?
Sergio Bertana
Amministratore del forumSe vuoi usare i pulsanti dei pannelli preconfigurati sul simulatore di SimuLab devi usare variabili allocate nella mappa di I/O del sistema, ma puoi anche crearti uno o più pannelli personalizzati solo eseguendo un drag delle variabili che vuoi gestire (Topic). Poi devi è importante capire la differenza tra le variabili globali e quelle locali (Topic).
Le variabili allocate all’interno di un programma (o POU) sono locali, cioè sono accessibili al solo POU dove sono dichiarate, mentre le variabili globali sono visibili da tutti i POU. Ma ttenzione se tu dichiari la variabile Luce come globale e la assegni ad una uscita reale e poi mi dichiari un’altra variabile Luce (Quindi con lo stesso nome) come variabile locale all’interno di un POU, quando ti riferisci a quel nome all’interno di quel POU agirai solo sulla variabile locale e non su quella globale.
Gli I/O logici sono gestiti in immagine di processo e per gestirli devi dichiararne l’indirizzo (Topic), le variabili automatiche sono variabili di appoggio e non possono essere I/O reali. Gli I/O analogici non sono gestiti in immagine di processo per utilizzarli occorre usare i blocchi funzioni appositi (Topic).
In riferimento al linguaggio da utilizzare, in generale la normativa ne ha normalizzati 5 proprio perchè per ogni tipo di operazione da svolgere vi è un linguaggio più approppriato, esempio per la logica si utilizza il ladder diagram, ma ognuno può scegliere di utilizzare il linguaggio che preferisce.
Sergio Bertana
Amministratore del forumLa sintassi è corretta, probabilmente hai fatto errori nella assegnazione degli I/O o da qualche altra parte. Ti ho preparato il programma SimplyProgram che realizza quello che hai fatto tu, come vedi dallo screenshot eseguendolo in simulazione con SimuLab attivando l’ingresso IntAuto si attiva l’uscita Luce. Come vedi ho simulato un modulo CPU compact (6 ingressi, 4 uscite) e per comodità ho impostato l’ingresso a funzionare come selettore anzichè pulsante. Puoi scaricare il programma (Download) e continuare con il mio esempio. Un programma puramente logico come il tuo è preferibile realizzarlo con il linguaggio ladder (LD) anzichè il linguaggio strutturato (ST).Per il comando di lampade da pulsanti consiglio di realizzare un relè passo passo, in questo topic trovi un FB scritto in LD ma tu puoi cimentarti a scrivere un tuo FB in linguaggio ST che fà la stessa cosa.
Marzo 28, 2018 alle 8:15 am in risposta a: Gestione trasferimento ricette tra terminale e pen drive USB #40060Sergio Bertana
Amministratore del forumLa funzione backup è sempre stata cosi e serve principalmente per estrarre i file log e salvarsi lo stato ricette, per ripristinare il file recipe.db su HMI si può utilizzare Utility manager -> Pubblica -> Download. In alternativa si creano le cartelle per il download da pen drive USB, poi come per il progetto inserisco il pen drive, aspetto il pop up e eseguo download storici.
Il file db è un file SQL lite quindi apribile con un editor idoneo, è comunque possibile usare la funzione import/export su USB che genera un file csv, quindi importabile, esportabile e consultabile con un text editor o con Excel (Topic).
Marzo 28, 2018 alle 5:52 am in risposta a: Problemi nella comunicazione Ethernet tra HMI e PLC #40058Sergio Bertana
Amministratore del forumCome hai configurato le due porte LAN del pannello ? Ti ricordo che devono essere impostate su due classi diverse, quindi se connetti il PLC utilizzando la LAN2 configurata nella stessa classe del PLC, devi configurare la LAN1 su un’altra classe.
Hai rigenerato il file xmls da SoMachine per verificare che non ci siano variabili errate ? Il messaggio “PLC no response” compare quando ci sono problemi di comunicazione ma anche quando cerchi di accedere ad una variabile PLC con indirizzo errato.
Sergio Bertana
Amministratore del forumNon posso che essere contento che hai scelto i nostri prodotti, per la tua applicazione ritengo che possano essere particolarmente adatti. I nostri prodotti pur essendo dei PLC (Vedi la programmabilità secondo la IEC61131) hanno nel loro DNA la possibilità di utilizzo per applicazioni in cui molte volte si usano sistemi a microcontrollore e/o sistemi basati su PC. Grazie al linguaggio strutturato ST, ai blocchi funzioni che gestiscono le comunicazioni (Seriali, CAN, Ethernet), alla possibilità di operare su files, alle funzioni di gestione stringhe, alla gestione web, ecc è possibile realizzare applicazioni anche molto diverse dalla classica automazione.Venendo alla tua domanda, certo è possibile utilizzare linguaggi grafici (LD ed FBD) per fare tutto (O quasi) ma i 5 linguaggi sono nati proprio per poter utilizzare il linguaggio giusto per ogni tipo di problema. La tua esigenza ne è proprio un esempio, gestire la ricezione stringa del Barcode usando linguaggi diversi dal ST anche se possibile sarebbe stata estremamente dispersiva. Ecco allora la scelta di realizzare un FB in linguaggio ST per poi utilizzarlo all’interno di un programma FBD, così da avere graficamente il colpo d’occhio sull’insieme.Venendo alla tua domanda ecco lo screenshot di un programma che esegue quello che ti serve, come vedi ho appoggiato il codice stringa nella variabile Code e poi ho eseguito la SysVarsscanf sulla stringa salvando il risultato numerico in CodeValue. Ma come vedi ho anche inserito la SysVarsscanf direttamente nel FB in modo da avere già in uscita il valore numerico, così in una sola riga di codice si è fatto tutto contro una serie di blocchetti da connettere in FBD (Download programma).
Marzo 23, 2018 alle 8:52 am in risposta a: Lettura/scrittura variabile formato S5 Timer per Simatic S7-300 #40055Sergio Bertana
Amministratore del forumNon sono un esperto di programmazione Siemens, per ovvi motivi utilizzo solo sistemi programmabili Elsist… Ma ho chiesto aiuto ad un nostro cliente che utilizza i pannelli Weintek sia con i nostri sistemi che con Siemens che mi ha dato una soluzione. Soluzione che ti giro così come mi è arrivata non conoscendo l’argomento.
Il consiglio è di utilizzare un oggetto di introduzione numerica a 16bit BCD ed attivare la scalatura, in modo da avere ingresso minimo 0, ingresso massimo 999 mentre da/verso PLC valore minimo 1000 valore massimo 1999.
Sergio Bertana
Amministratore del forumCome ti ho scritto non ho fisiscamente il bar code reader in mano per fare delle prove, quindi ti ho dato un programma di esempio che deve essere una traccia per andare avanti nel tuo sviluppo. Nel progetto hai tutti i sorgenti, e questo dovrebbe essere più che sufficente per realizzare quallo che hai bisogno. Naturalmente io non conosco la tua esperienza in programmazione quindi vedo di darti altri indizi per la “caccia al tesoro” dove il tesoro è leggere il bar code.Come vedi dal programma in FBD (Screenshot), quando il FB BarcodeRead attiva l’uscita ReadOk si copia il valore in uscita nella variabile Code. Ma se guardi nel FB vedrai che l’uscita si attiva per un loop alla ricezione di un <CR> (Ho ipotizzato che la stringa del reader termini con <CR>). Ma se segui il flusso del programma vedrai che se dopo il <CR> arrivano altri caratteri questi saranno acquisiti e dopo 100mS che non si riceve più nulla si attiverà ancora l’uscita ReadOk. Se il reader invia la stringa letta seguita da un <CR> e poi altri caratteri tu vedrai in Code la stringa ma subito dopo gli altri caratteri ricevuti, quindi dovrai modificare il FB per adattarlo alle tue esigenze.Consiglio ad esempio di togliere il controllo sul <CR> e lasciare solo quello sul tempo, in questo modo in Code avrai la stringa numerica seguita da <CR> e da quello che viene inviato dopo. Poco male perchè se per convertire la stringa in un numero, visto che il numero dai tuoi esempi ha 8 cifre, puoi utilizzare la funzione SysVarsscanf trasferendo il numero in una variabile UDINT (Range massimo 4294967295). La funzione SysVarsscanf terminerà la conversione al primo carattere non numerico quindi si fermerà al <CR>.
Sergio Bertana
Amministratore del forumSinceramente non saprei che errore sia, non vorrei sia dovuto ad un conflitto sul PC, potresti provare a reinstallare EasyBuilderPro con con firewall e antivirus disabilitati. Con il sistema operativo Windows 10 capita ultimamente che aggiornamenti del sistema operativo provochino malfunzionamenti o blocchi sulle funzionalità di altri programmi installati.
Sergio Bertana
Amministratore del forumSi l’uscita dello scanner sono effettivamente stringhe ascii, non mi dici se sono terminate con un <CR><LF> oppure no. Sono partito dal programma che trovi illustrato in questo topic, in pratica nel programma veniva inviata una stringa di richiesta ed attesa la stringa di risposta, ho modificato il programma per gestire la sola ricezione della stringa di sposta.
Come vedi dalla stampa il FB BarcodeRead controlla la ricezione dei caratteri dalla porta seriale e li trasferisce nella variabile Barcode. La lettura si arresta alla ricezione del <CR> oppure dopo 100mS che non si ricevono più dati. Al termine della ricezione si attiva per un loop di programma l’uscita ReadOk ed il programma utente può utilizzare il codice acquisito. Puoi scaricare il programma BarcodeReader e modificarlo per le tue esigenze (Download).
Marzo 21, 2018 alle 10:24 am in risposta a: Router cellulari 4G WLink (connessione da remoto) #40050Sergio Bertana
Amministratore del forumIn questo
topicabbiamo già trattato l’argomento, in realtà dalla data in cui è stato scritto il topic alcune cose sono cambiate, a quanto ne sò ormai neanche TIM e Wind danno standard un IP pubblico sulle loro reti. Mi risulta però che TIM per i Clienti con partita IVA possa fornire un abbonamento senza NAT (Mi sembra si chiami DeNAT) o qualcosa del genere, ma anche altri gestori possono fornire questo servizio.
Un modo per poter accedere via Internet ai dispositivi connessi al router è di realizzare una VPN (Che tra l’altro crypta la comunicazione), ma in questo caso sarebbe il router a creare la VPN con un tuo router o PC e i dispositivi sarebbero visibili solo dalla rete endpoint della VPN e da nessun altro dispositivo in Internet.Però tu mi parli di videosorveglianza, ed oggi moltissime WebCam forniscono servizi cloud che ne permettono la visualizzazione anche se la videocamera si trova su rete NATtata, quindi nessun problema anche su connessione cellulari.
Sergio Bertana
Amministratore del forumUtilizzando l’oggetto Dynamic Drawing puoi fare quello di cui hai bisogno, come vedi nello screenshot, utilizzando il progetto dimostrativo fornito da Weintek (Download) ho posizionato i vari fori in posizioni X (Attributes+5) ed in posizioni Y (Attributes+6), per disegnare il foro basta impostare 3 in Attributes+0, puoi impostare il colore del foro in Attributes+3.
Naturalmente potrai oltre a disegnare i fori anche disegnare il rettangolo della piastra da forare sempre agendo sui vari parametri di Attributes. Per partire dalla ricetta e realizzare il layout grafico dovrai o appoggiarti a delle macro da eseguire sul terminale, oppure gestire la visualizzazione da PLC andando ad agire sulle words di Attributes dell’oggetto.
Sergio Bertana
Amministratore del forumIl progetto riportato nel post è un progetto di esempio scaricabile dal sito Weintek, si tratta di un progetto compresso, quindi lo puoi aprire con qualsiasi versione di EasyBuilderPro, ma bisogna prima decomprimerlo. Con la nuova versione di EasyBuilderPro (6.00.xxx) utilizzi il menù File->Compress/Uncompress e ti trovi il file sorgente editabile, ho comunque provveduto a decomprimerlo (Download).
Ti ricordo che utilizzando i nostri sistemi SlimLine puoi trovare molte possibilità di utilizzo di un lettore RFID, ti metto alcuni link, ma se cerchi RFID nel forum ne troverai altri (Topic, topic, topic).
-
AutorePost