Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 2,596 a 2,610 (di 4,424 totali)
  • Autore
    Post
  • in risposta a: Gestire Check box, Radio button, Progress bar, ecc #38927
    Sergio Bertana
    Amministratore del forum

    Non sono un esperto di javascript e di css, ma avevo già alcune soluzioni che utilizzando queste tecniche ti permettono di ottenere quello che hai bisogno, se vedi nelle aplicazioni Modem machine e Data exchange (I due programmi sono scaricabili dal sito), si fà già uso di queste tecniche per visualizzare  stati di I/O e stati di funzionamento della aplicazione abbinati a tecniche AJAX di rinfresco automatico della pagina web.Ho attinto il succo da quelle pagine ed ho preparato una pagina htm che appoggiandosi alla variabile USINT DB100.16 permette di gestire qualcosa di simile a quello che tu chiedi (Screenshot). Allego il file htm sorgente da trasferire nella cartella Storage dello SlimLine (Download).

    in risposta a: Misurare tensioni fino a 500V DC #38925
    Sergio Bertana
    Amministratore del forum

    La parte più semplice della risposta è sull’hardware da utilizzare per la misurazione, puoi utilizzare un modulo CPU compact (Esempio CPU Compact Eth. LogicLab) abbinato a due moduli di espansione I/O analogico. Se la precisione (10 bit) del convertitore A/D presente sul modulo CPU a te è sufficente puoi usare i 2 ingressi del modulo CPU ed un solo modulo di espansione I/O analogico a 10 ingressi.

    Il problema più difficile da risolvere è convertire i tuoi 500V in una tensione 0÷10 volt, ammesso di avere tutte le tensioni riferite ad un unico riferimento di GND puoi in teoria utilizzare dei partitori, ma con tensioni così elevate non è così semplice realizzare un partitore.

    Una soluzione più sicura, ma certamente più costosa è utilizzare un isolatore galvanico per ogni ingresso, come ad esempio questo della Alter elettronica (Datasheet).

    in risposta a: Realizzare una temporizzazione in un blocco funzione #38924
    Sergio Bertana
    Amministratore del forum

    Sicuramente per la portabilità del codice è preferibile non utilizzare riferimenti a variabili esterne all’interno di FB, ma se il FB si utilizza sempre su sistemi SlimLine in ambiente LogicLab è accettabile fare riferimenti a variabili esterne predefinite (Come SysDateTime), queste variabili sono definite nel target è sono sempre presenti.

    Diverso è il caso in cui ci si riferisca a variabile esterne definite nel programma, spostando il FB da un programma ad un altro se la variabile globale non è presente si ha un errore di compilazione. Comunque è possibile gestire temporizzazioni anche senza riferirsi a variabili esterne.

    Allego al topic un programma in cui ho realizzato un FB timer, esattamente come il FB eTON (Estratto manuale). Troverai il sorgente di un FB realizzato con una variabile esterna ed uno esattamente uguale utilizzando la funzione SysGetSysTime. Come si vede dalla stampa programma, la funzione SysGetSysTime ritorna il tempo in uS quindi per mantenere le definizioni in mS ho provveduto a dividere per 1000.

    Naturalmente essendo la variabile di appoggio riferimento tempo di tipo UDINT, utilizzando la variabile esterna che torna il tempo in mS si potranno gestire temporizzazioni massime fino a circa 1200 ore. Mentre utilizzando la funzione che torna il tempo in uS si potranno gestire temporizzazioni massime fino a circa 1.2 ore (Download programma).

    in risposta a: Progetto startup HMI e modulo CPU SlimLine #38923
    Sergio Bertana
    Amministratore del forum

    Venendo nello specifico della tua domanda sembra un problema di comunicazione con il modulo CPU. Se il pannello non riesce a comunicare non visualizza gli oggetti grafici correlati alla comunicazione in errore. Lo strano è che tu riesca ad eseguire la definizione del valore di SetTime, questo indica che la comunicazione funziona.

    Lo schema della connessione seriale è corretto, un dubbio potrebbe essere nelle impostazioni del protocollo seriale, è possibile impostare un ritardo comunicazione è sopratutto un numero di rinvio comandi (Vedi screenshot).

    in risposta a: Progetto di startup per connessione HMI a SlimLine #38922
    Sergio Bertana
    Amministratore del forum

    In questo topic ho ripreso il progetto compilandolo con le ultime versioni dei programmi LogicLab e EasyBuilder Pro.

    in risposta a: Progetto startup HMI e modulo CPU SlimLine #38921
    Sergio Bertana
    Amministratore del forum

    Approfitto della domanda per rispolverare questo vecchio topic, ho importato il progetto HMIStartup e l’ho ricompilato utilizzando le ultime versioni sia di LogicLab che di EasyBuilderPro. Per facilitare il debug del programma pannello eseguendone il test direttamente sul PC con il simulatore (Senza il pannello fisico) ho modificato il tipo di connesione da seriale a ethernet con il protocollo Modbus TCP/IP (Screenshot).

    Ricordo che occorrerà nel proprio progetto modificare nel programma pannello l’indirizzo IP del PLC in base all’indirizzo IP del modulo CPU a cui è collegato (Screenshot).

    Inserisco nel topic il progetto modificato pronto da utilizzarsi (Stampa programma LogicLab, Download progetto).

    in risposta a: Informazioni su problematiche Modbus RS485 ed RS232 #38920
    Sergio Bertana
    Amministratore del forum

    Vengo all’ultima domanda, Molti potrebbero essere i motivi percui la comunicazione non avviene, visto che mi dici che il FB ModbusMaster và in Fault si tratta sicuramente di un problema legato al protocollo. Ecco une serie di verifiche da fare…

    Sei sicuro della corretta impostazione della seriale, l’indirizzo di nodo del nodo slave è corretto, il codice funzione che utilizzi è supportato dal sistema slave, l’indirizzo della variabile ed il numero di variabili definite nel comando sono supportate dal sistema slave…

    Ricorda che il protocollo Modbus ha offset 1 sull’indirizzo e molti dispositivi non lo gestiscono, quindi magari devi sommare 1 all’indirizzo dato al FB ModbusMaster.

    Puoi attivare il bit SpyOn e vedere nella console di spionaggio (Topic) i pacchetti Modbus per capire la causa del tuo problema.

    in risposta a: Informazioni su problematiche Modbus RS485 ed RS232 #38919
    Sergio Bertana
    Amministratore del forum

    Immagino che sui moduli Slaves tu abbia utilizzato la gestione Modbus slave embedded gestita in automatico dal sistema operativo, il Modbus controlla i comandi arrivo da COM o ethernet e li gestisce di conseguenza ma non può prendere decisioni autonome. Quindi se il comando modbus dal sistema master scrive un registro che poi nel tuo programma viene copiato sulle uscite il valore rimarrà costante fino a quando non verrà ricevuto un comando Modbus di variazione. E’ evidente che se stacchi il cavo il comando non potrà arrivare e quindi le uscite riamrranno nello stato impostato. Per risolvere il problema hai diverse soluzioni.

    Utilizzando la gestione embedded, puoi ad esempio dal master inviare ciclicamente un comando modbus di scrittura di un valore in un registro. Nel tuo programma slave controlli che vi sia questo valore e poi lo azzeri, se il registro non verrà valorizzato nel tempo di rinfresco è evidente che c’è un problema di comunicazione e quindi prendi le decisioni opportune (Esempio disattivi le uscite).

    Utilizzando FB ModbusSlave, utilizzando il FB nel tuo programma controlli l’uscita Done (Si attiva ad ogni ricezione di un pacchetto Modbus) se non si attiva per un tempo di timeout c’è un problema di comunicazione.

    Per connettere due moduli in RS232 non puoi utilizzare un nostro CBL057 ma devi utilizzare un cavo incrociato. Se vuoi puoi utilizzare due adattatori CBL054 e CBL055 tra di loro interconnessi. Altrimenti devi autocostruirti un cavo a 3 fili incrociando Tx ed Rx (Gli altri segnali non sono necessari).

    in risposta a: Segmentation Fault in programma esempio PTP127A100 #38918
    Sergio Bertana
    Amministratore del forum

    Il programma ELSLLinuxTester viene eseguito di default allo startup (Vedi file di shell /data/ELStarter.sh). Quando hai realizzato il tuo applicativo dovrai sostituire il nome del tuo programma nel file ELStarter.sh per permetterne l’esecuzione automatica allo startup.

    Questo programma è in ascolto sulla porta 1000 e permette di gestire una serie di test sul modulo. Collegandosi con un telnet (Esempio Toolly) alla porta è possibile effettuare il login nel programma (Username e Password: Admin) e digitando ? è possibile avere un elenco dei comandi possibili (Vedi screenshot).

    in risposta a: Segmentation Fault in programma esempio PTP127A100 #38917
    Sergio Bertana
    Amministratore del forum

    Il modulo CPU ARM9 Linux viene fornito con un programma di test lanciato allo startup. Collegandosi in telnet sulla porta 23 (Con Toolly o PuTTY) e digitando il comando ps avremo un elenco dei processi attualmente in esecuzione ecco un estratto:

    root@SlimLine:/# ps
    PID   USER     COMMAND
        1 root     init [2]
        …        …
      1202 root     ./ELDevDiscovererD
     1205 root     ./ELSLLinuxTester

    Come si vede il processo 1202 è il programma ELDevDiscovererD verificare la presenza del modulo sulla rete, mentre il processo 1205 è il programma ELSLLinuxTester che permete di testare il funzionamento del modulo. Questo programma utilizza la libreria ElSLLinux (La stessa inclusa nel programma di esempio che tu utilizzi). L’utilizzo contemporaneo da due processi di questa libreria non è possibile in quanto le risorse (Esempio il bus di espansione) non possono essere condivise. Quindi per eliminare il problema occorre terminare il programma ELSLLinuxTester, utilizza il comando kill 1205 (Naturalmente se il PID è come nel mio esempio 1205).

    in risposta a: Configurazione ad anello con convertitore Seriale/Fibra #38915
    Sergio Bertana
    Amministratore del forum

    Ho approfondito l’argomento avvalorandolo con un test reale nel nostro laboratorio (Ecco la foto), condizione per poter funzionare nella configurazione richiesta è che il sistema master possa gestire una comunicazione Full/Duplex.

    Nel mio test ho utilizzato una configurazione a 4 fili in RS422, ma può andare benissimo anche una configurazione in RS232.Come si vede dalla foto ho connesso l’uscita Tx del master con l’ingresso Rx del 1o slave (Fibra A), il Tx del 1o slave al Rx del 2o slave (Fibra B), il Tx del 2o slave al Rx del master (Fibra C).

    Naturalmente in questa configurazione il master si autoriceve, quindi è possibile verificando i dati ricevuti controllare la funzionalità dell’anello ottico.

    in risposta a: Visualizzazione ed impostazione Data/Ora da pagina WEB #38914
    Sergio Bertana
    Amministratore del forum

    Per facilitare i clienti che come te hanno lo stesso problema ho realizzato un progetto di esempio che permette di visualizzare ed impostare il valori di Data/Ora da pagina web (Stampa programma). Come si vede ho allocato variabili STRING in area DB100 per poter visualizzare ed impostare il valore da pagina web.

    Da notare l’allocazione, la variabile Date contiene un valore del tipo 21/05/2015 quindi è di lunghezza 10, ma da ricordare che le stringhe hanno un byte terminatore quindi la sua lunghezza totale è in realtà 11 bytes. Ecco perchè la variabile Time è allocata all’indirizzo 11.

    Nel programma SlimLine eseguo la compilazione delle stringhe che poi sono visualizzate nella pagina web (Screenshot). Effettuando l’impostazione dei nuovi valori da pagina web ed agendo sul tasto Save i nuovi dati sono caricati nelle variabili. Nel form della pagina web vi è una variabile hidden che provvede a settare AdjCommand, il programma testando lo stato di AdjCommand gestisce la variazione della Data/Ora (Download programma).

    in risposta a: Visualizzazione ed impostazione Data/Ora da pagina WEB #38913
    Sergio Bertana
    Amministratore del forum

    I valori di Data/Ora sono gestiti nelle pagine web di sistema che sono residenti nella directory System dello SlimLine (Codice MDP020, vedi FAQ per l’aggiornamento). Il funzionamento di queste pagine è identico a quanto realizzato nelle pagine web dinamiche realizzabili dal cliente (Topic). Per la gestione delle impostazione dei dati di sistema sono utilizzati degli ID specifici, ma il funzionamento di questi ID è gestito solo per pagine presenti nella directory System.

    Ora veniamo alla tua richiesta, per gestire il Real Time Clock da programma utente basta modificare il valore della variabile SysDateTime, e l’RTC si aggiornerà di conseguenza. I FB SysETimeToDate e SysDateToETime permettono di passare da Epoch time a Data/Ora e viceversa. Ricordo anche che con il FB SNTPRequest è possibile gestire l’aggiornamento con un server di tempo NTP (Topic).

    in risposta a: Impostazione visualizzazione pagina web di default #38912
    Sergio Bertana
    Amministratore del forum

    Digitando nella barra di indirizzo di un browser web l’indirizzo IP del modulo CPU viene visualizzata la pagina di default. La pagina predifinita è come dici tu System/Home.htm. Ma nelle applicazioni del cliente può essere necessario modificare questa pagina in modo che digitando l’indirizzo IP si venga reindirizzati verso una pagina predefinita.

    La configurazione della pagina di default, della pagina visualizzata in caso di richiesta pagina non trovata e del file di Favicon, sono impostabili da pagina web nella finestra di General Setup (Screenshot). Naturalmente per accedere alla impostazione dei valori devi avere eseguito il login nella pagina Home (Valori di default Username e password: Admin).

    Se la pagina Home non è più raggiungibile digitando il solo indirizzo IP del modulo, è comunque possibile raggiungerla digitandone il percorso completo xxx.xxx.xxx/System/Home.htm.

    Diversa invece è la situazione se sono state rimosse le pagine web originali dalla cartella System e sostitute con pagine utente, in questo caso devi eseguire il download delle pagine dal nostro sito (Codice MDP020**00) e poi collegandoti in FTP (Topic) trasferirle nella cartella System sostituendo quelle presenti.

    in risposta a: Utilizzo contemporaneo di un pulsante su più PLC #38911
    Sergio Bertana
    Amministratore del forum

    Se i pulsanti sono di tipo momentaneo puoi sovrapporre più oggetti pulsanti (Uno per ogni PLC), darai solo ad uno di essi la forma visibile che desideri. Tutti gli altri saranno senza corpo e quindi invisibili ma tutti sono operativi, quindi agendo sul pulsante visibile di fatto agisci su tutti.

    Se sono comandi di tipo toggle, anche se la tecnica funziona, ti consiglierei di usare un solo pulsante che agisce su di un bit (LB) interno al pannello e poi con un oggetto Data Transfer, trasferire a tempo lo stato del bit dal pannello ai vari PLC.

Stai visualizzando 15 post - dal 2,596 a 2,610 (di 4,424 totali)