Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 2,446 a 2,460 (di 4,264 totali)
  • Autore
    Post
  • 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.

    in risposta a: Accesso a variabili Modbus da script PHP #38910
    Sergio Bertana
    Amministratore del forum

    La domanda và oltre quello che può essere il nostro supporto alla programmazione dei moduli SlimLine, ti serve una risposta articolata e multidisciplinare. Occorre un programmatore Codesys per lo sviluppo del programma sul modulo CPU ed un programmatore Web PHP per quanto riguarda lo script sul server.

    Siccome oltre a programmare i PLC (Sia in ambiente Codesys che LogicLab) mi diverto a giocherellare con il PHP, così partendo da quanto fatto in questo topic e dall’ottimo lavoro di Jan Krakora che ha scritto la classe Phpmodbus, mi sono dilettato a costruire una classe per gestire le comunicazioni Modbus TCP.

    Ho sviluppato un progetto dimostrativo con un programma su SlimLine Codesys (Stampa programma) che acquisisce la temperatura tramite una Pt1000 e uno script PHP da installare su di un server per l’interrogazione via Modbus TCP (Stampa script).

    Come si vede dai programmi sullo SlimLine viene gestito il Modbus slave ed è allocato un buffer di tipo MODBUSDATASTRUCT che può essere gestito da Modbus all’indirizzo 1000. Nel buffer vi è un counter CmdCount incrementato ad ogni comando Modbus ed un valore REAL di temperatura.

    Nello script ReadTemp.php viene istanziata una classe Modbus e viene  eseguito un comando Read Multiple Registers ad indirizzo 1000 di 4 registri (Uno è CmdCount ad offset 0, uno è un valore Dummy, e due sono il dato di temperatura REAL ad offset 4). I valori acquisiti dallo SlimLine sono poi stampati in echo per la visualizzazione.

    A scopo di test viene anche stampato lo stato del comando Modbus (Questa parte può essere omessa dallo script). Allego tutti i programmi sia Codesys che PHP per il download.

    in risposta a: Rete RS485 tra master e slaves in Modbus RTU #38909
    Sergio Bertana
    Amministratore del forum

    Aggiungo un rimando a questo topic che tratta la gestione di un registro FIFO su file, il topic è la continuazione della applicazione trattata in questo topic. In pratica il nodo master esegue ciclicamente l’interrogazione dei vari nodi slaves e viene a sua volta interrogato da un PC di supervisione.

    Il problema è di gestire semplicemente un registro FIFO dove i dati acquisisti dai sistemi slaves possono essere memorizzati ad intervalli regolari per poi essere acquisisti dal PC di supervisione. Il registro FIFO fà da accumulatore in modo che in caso di eventuali problemi di connessione da parte del PC di supervisione non si abbia perdita di dati.

    in risposta a: Gestione registro FIFO per log dati #38908
    Sergio Bertana
    Amministratore del forum

    Ho aggiunto un FB apposito nella nuova versione della libreria eLogLib_B100, come si vede dalla documentazione (Estratto manuale) il FB FIFOFile, gestisce un registro FIFO su file.

    Nel programma di esempio (Vedi stampa) è gestito l’inserimento e lettura dal registro FIFO appoggiato sul file Storage/FIFO.bin di un record dati di tipo RECORDDATASTRUCT. Il record dati si compone di una stringa in cui viene riportata la data e l’ora nel formato “14/05/15 12.24.04” e due campi REAL il cui valore viene simulato nel programma.

    Ad ogni attivazione dell’ingresso Di00 sul modulo CPU si ha l’inserimento di un record nel registro FIFO ed il valore di NrOfRecs viene incrementato. Ad ogni attivazione dell’ingresso Di01 sul modulo CPU si ha la lettura di un record dal registro FIFO ed il valore di NrOfRecs viene decrementato.

    Ho limitato la dimensione del file FIFO a 50 Kb (Con records da 32 bytes potrà contenere oltre 1500 records). Naturalmente è possibile aumentare la dimensione del file a piacere (Download programma sorgente).

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

    Si certo i convertitori Seriale/Fibra ATC-277SM e ATC-277MM possono essere utilizzati in una configurazione ad anello come quella riportata nelo schema (Vedi schema).

    In questa configurazione il sistema master può interrogare in una configurazione multidrop tutti i sistemi slaves connessi ai vari convertitori Seriale/Fibra.

    in risposta a: Scaricamento programma da terminale MT8000 #38906
    Sergio Bertana
    Amministratore del forum

    In questo topic viene trattato l’upload (Scaricamento) del progetto dalle nuove serie di pannelli operatore.

    in risposta a: Backup (Scaricamento) programma pannello serie IE #38905
    Sergio Bertana
    Amministratore del forum

    In questo topic viene trattato l’upload (Scaricamento) del progetto dai pannelli vecchia serie MT8000.

    in risposta a: Backup (Scaricamento) programma pannello serie IE #38904
    Sergio Bertana
    Amministratore del forum

    Dalla finestra principale dell’Utility Manager (Screenshot) dopo avere scelto la famiglia corretta del terminale da cui vuoi eseguire lo scaricamento (Upload) del programma (Nell’esempio serie iE), scegli la procedura Carica. Ti verà proposta una finestra in cui puoi impostare il nome del file in cui verrà salvato il progetto.

    Ora dovrai impostare il modo di connessione con il pannello, nel mio caso rete ethernet con l’IP del pannello. Naturalmente devi conoscere la password di accesso (Quella di default è 111111). Terminato il caricamento ti troverai con un file estensione exob. Con la procedura Scarica è possibile trasferire il progetto su di un’altro terminale.

    Eseguendo EasyBuilderPro potrai con la procedura di decompilazione (Screenshot) ricreare un file con estensione emtp che potrai poi aprire per le modifiche. Naturalmente per la protezione del progetto nella procedura di decompilazione è richiesta la password di protezione che è stata impostata nella realizzazione del progetto.

    in risposta a: Rete RS485 tra master e slaves in Modbus RTU #38903
    Sergio Bertana
    Amministratore del forum

    Spulciando nel forum puoi trovare esempi da cui trarre spunto per la tua realizzazione, in questo topic viene trattata una rete modbus come quella che vuoi realizzare tu. Come vedi nella discussione utilizzando il FB DataStreamExch è possibile utilizzare il modulo master come gateway di rete per la programmazione via ethernet di tutti i nodi slaves.

    Fungendo il FB DataStreamExch come un semplice convertitore Ethernet/Seriale è evidente che per poter programmare i nodi slaves da ethernet occorre utilizzare anche per la comunicazione RS485 con i nodi slaves il protocollo Modbus TCP. Ma se si utilizza sul sistema master il FB ModbusTCPGateway (Topic) è possibile utilizzare per la comunicazione con i sistemi slaves il protocollo Modbus RTU. Fungendo da gateway Modbus TCP/Modbus RTU il FB permette di programmare i nodi slaves connessi alla rete.

    Ecco la stampa del programma master e del programma slave di esempio. Come si vede nel master viene eseguita la scansione ciclica dei nodi slaves, per ogni nodo è gestito l’errore di comunicazione, in caso di nodo in errore per evitare di attendere il timeout, il nodo viene “saltato” nella comunicazione. E’ gestito un ricontrollo ciclico di tutti i nodi in errore per gestirne la riconnessione (Download progetto master e slave).

    in risposta a: Bug su programma LogicLab Loader #38902
    Sergio Bertana
    Amministratore del forum

    Ringrazio della segnalazione, è sicuramente di aiuto per altri utenti che si trovano nella stessa condizione. Provvederemo quanto prima a correggere il problema ed a rilasciare una nuova versione del programma.

    in risposta a: Utilizzo delle funzioni nel linguaggio ST #38897
    Sergio Bertana
    Amministratore del forum

    L’argomento funzioni e blocchi funzioni è trattato in molti topics del forum ti rimando a questo topic che tratta l’utilizzo di variabili globali nelle funzioni. Interessante è anche questo topic dove vi sono esempi di come realizzare funzioni e blocchi funzione.

    Venendo alla tua domanda però come troverai scritto nel topic a cui ti ho rimandato ti ricordo che solo i FB possono accedere a variabili globali, le funzioni possono operare solo con variabili di ingresso e una sola variabile di ritorno.

    Ma anche se è possibile da FB operare direttamente su variabili globali (Si utilizza la dichiarazione VAR_EXTERNAL) è una pratica sconsigliata in quanto nel momento in cui esporti il FB ti troverai con delle dipendenze esterne che se non presenti nel programma dove il FB viene importato daranno errori di compilazione.

    Ho preparato un esempio (Ecco lo screenshot in simulazione su PC) che esprime i concetti riportati. Come si vede dalla stampa del programma, ho realizzato due funzioni. La funzione MyFunPtr ha come parametro un puntatore ed in questo modo può fare riferimento a variabili globali (Occorre passare alla funzione l’indirizzo della variabile). In questo modo la funzione può sia leggere che scrivere il valore del parametro (Download programma).

Stai visualizzando 15 post - dal 2,446 a 2,460 (di 4,264 totali)