Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumApprofitto 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).
Maggio 26, 2015 alle 7:19 am in risposta a: Informazioni su problematiche Modbus RS485 ed RS232 #38920Sergio Bertana
Amministratore del forumVengo 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.
Maggio 26, 2015 alle 6:54 am in risposta a: Informazioni su problematiche Modbus RS485 ed RS232 #38919Sergio Bertana
Amministratore del forumImmagino 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).
Maggio 26, 2015 alle 6:19 am in risposta a: Segmentation Fault in programma esempio PTP127A100 #38918Sergio Bertana
Amministratore del forumIl 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).
Maggio 26, 2015 alle 6:04 am in risposta a: Segmentation Fault in programma esempio PTP127A100 #38917Sergio Bertana
Amministratore del forumIl 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 ./ELSLLinuxTesterCome 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).
Maggio 22, 2015 alle 7:01 am in risposta a: Configurazione ad anello con convertitore Seriale/Fibra #38915Sergio Bertana
Amministratore del forumHo 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.
Maggio 21, 2015 alle 9:51 am in risposta a: Visualizzazione ed impostazione Data/Ora da pagina WEB #38914Sergio Bertana
Amministratore del forumPer 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).
Maggio 21, 2015 alle 9:36 am in risposta a: Visualizzazione ed impostazione Data/Ora da pagina WEB #38913Sergio Bertana
Amministratore del forumI 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).
Maggio 20, 2015 alle 8:21 am in risposta a: Impostazione visualizzazione pagina web di default #38912Sergio Bertana
Amministratore del forumDigitando 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.
Sergio Bertana
Amministratore del forumSe 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.
Sergio Bertana
Amministratore del forumLa 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.
Sergio Bertana
Amministratore del forumAggiungo 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.
Sergio Bertana
Amministratore del forumHo 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).
Maggio 16, 2015 alle 6:13 am in risposta a: Configurazione ad anello con convertitore Seriale/Fibra #38907Sergio Bertana
Amministratore del forumSi 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.
Sergio Bertana
Amministratore del forumIn questo topic viene trattato l’upload (Scaricamento) del progetto dalle nuove serie di pannelli operatore.
-
AutorePost