Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Ottobre 7, 2013 alle 3:05 pm in risposta a: Gestire un display alfanumerico con un modulo SlimLine #37828
Sergio Bertana
Amministratore del forumSe c’è un moderatore libero cerchiamo di rispondere con celerità, molte volte siamo impegnati in lavori fuori sede e/o assistenza remota via TeamViewer e non abbiamo il tempo materiale per rispondere.
Ottobre 7, 2013 alle 2:13 pm in risposta a: Gestire un display alfanumerico con un modulo SlimLine #37826Sergio Bertana
Amministratore del forumHo visto il datasheet del display che hai acquistato ed a livello di connessioni elettriche non ci sono problemi, colleghi solo i due segnali SCL ed SDA, tieni il pin di RESET del display a +5VDC.
Non ho visto se tutti i comandi I2C sono esattamente uguali al display da me utilizzato per le prove, ma solitamente le sequenze software per la gestione sono le stesse per tutti i display. Le sequenze da me utilizzate sono le stesse che utilizzo in altre apparecchiature dove è montato un display con interfaccia parallela.
Attenzione all’indirizzo del display da dare al blocco funzione, come vedi sul datasheet del display è riportato Slaver address could only set to 0111110, no other slaver address could be set. Quindi l’indirizzo da utilizzare è 16#37. Naturalmente a differenza dell’altro display che aveva la possibilità di definire l’indirizzo e quindi più display (Fino a 4) potevano condividere il bus I2C, con questo display ne puoi collegare uno solo.
Sergio Bertana
Amministratore del forumNon ci sono informazioni esatte sul range di alimentazione spulciando tra i forum della Ubiquiti si trovano informazioni date da impiegati della stesa Ubiquiti. In questo stesso topic in un post precedente c’è già una nota presa da questi forums in cui si dà come range di tensione da 12 a 24 VDC. Ad esempio in un post riferito ad un Bullet viene riportato:
With a 5ft PoE cable run, I think 12V should work fine.
Ed in un altro riferito ad un Bullet Titanium.
Yes the Bullet M Titanium will run on 12v.
Questo anche se sul datasheet è riportato Power supply: 24V, 0.5A PoE Adapter (included). Dopo tutta questa bella chiacchierata posso dirti che non ho argomenti certi per garantire il funzionamento a 12 VDC, ma credo che il circuito interno operi con tensioni basse 5 VDC o meno e che quindi vi sia un alimentatore in ingresso. Il problema maggiore può essere sulla massima tensione di alimentazione che è sempre specificata (24 VDC). O nel caso di tensioni basse il problema può essere nella lunghezza dei cavi che producono una caduta di tensione.
Ottobre 7, 2013 alle 9:25 am in risposta a: Conoscere l’indirizzo delle variabili (funzione ADR) #37822Sergio Bertana
Amministratore del forumAnche se l’utilizzo dei puntatori è deprecato dalla normativa IEC-61131, in molti programmi sarebbe impossibile realizzare certe funzioni senza i puntatori. Ecco quindi che anche LogicLab come altri ambienti di programmazione prevede la possibilità di utilizzare i puntatori e di conseguenza conoscere l’indirizzo di allocazione delle variabili. utilizzando la funzione ADR().
Ipotizzando di avere un contatore Counter di tipo USINT e di volerne conoscere e/o modificare il valore con un puntatore, dovremo definire una variabile Ptr di tipo @USINT.
Ptr:=ADR(Counter); carica in Ptr l’indirizzo della variabile Counter.
IF (@Ptr = 10) THEN controlla il valore della variabile Counter.
@Ptr:=20; carica 20 nella variabile Counter.Sergio Bertana
Amministratore del forumAggiungo un semplice programma eseguito in Fast che calcola la velocità di rotazione (Stampa e Download programma). Nel programma ho acquisito l’ingresso digitale DI00 del modulo CPU, ed eseguo il conteggio software delle variazioni. Controllo solo i fronti di salita, ma è possibile anche contare quelli in discesa, in questo caso avrò un conteggio doppio degli impulsi.
Ogni 10 secondi calcolo il numero di impulsi conteggiati, e da questo valore calcolo la velocità di rotazione (Supponendo 1 impulso al giro, se sono più impulsi al giro occorre fare i dovuti calcoli). Nel calcolo ho utilizzato la variabile MemoCtr anziche azzerare Counter perché in questo modo ho dimostrato come sia possibile conteggiare differenza di valore su di una variabile in continua evoluzione.
Questo torna comodo ad esempio quando si utilizza il blocco funzione SysGetCounter che ritorna un valore in continua evoluzione e che si può azzerare solo con l’ingresso hardware di Reset se disponibile. In questo topic trovi altre informazioni.
Sergio Bertana
Amministratore del forumNon mi dici quale è il range di velocità da misurare, gli ingressi del modulo accettano a livello elettrico una frequenza massima di 10 Khz. Ma se si ipotizza una gestione tutta software è possibile campionare gli ingressi inserendo un programma nella task Fast al massimo ogni 100 uS (Vedi funzione SysSetTaskLpTime). Quindi ipotizzando che il tuo segnale abbia un Duty-Cycle del 50% la frequenza massima campionabile da software è 4 Khz.
L’ingresso DI00 è connesso ad un counter hardware è quindi può lavorare alla frequenza massima definita, per la gestione del counter si utilizza il blocco funzione SysGetCounter.
Perché ho parlato di counter, perché per calcolare la velocità di rotazione di un albero si contano gli impulsi generati in un determinato tempo. Se l’albero gira molto piano puoi usare addirittura come base tempi il minuto ed allora il numero di impulsi è direttamente la velocità in RPM, naturalmente verrà aggiornata ogni minuto.
Se l’albero gira molto velocemente invece puoi campionare con tempi inferiori e per avere la velocità in RPM dovrai seguire le opportune moltiplicazioni.
Sergio Bertana
Amministratore del forumUtilizzando più istanze del blocco funzione ModemSMSSend_v2 è possibile inviare più messaggi SMS a più numeri così come indicato nel Manuale programmazione IEC61131-3. Naturalmente se i messaggi da inviare sono molti e se i numeri a cui mandarli sono molti il numero di istanze della FB necessarie all’invio crescono e quindi come giustamente suggerisci è preferibile costruire una FB apposita.
Ecco un progetto in cui la FB MultipleSMS permette di inviare fino a 32 messaggi a fino 32 numeri (Stampa e Download programma). I messaggi ed i numeri di telefono sono passati tramite l’indirizzo di un array di puntatori Messages e PhNumbers, in questo modo si ottimizza l’occupazione di memoria in quanto è possibile dimensionare l’array a piacere ed i messaggi come i numeri di telefono sono stringhe salvate in memoria codice.
Le variabili DWORD MsgSelector e PNrSelector, permettono di inviare solo i messaggi il cui relativo bit è attivo ai numeri di telefono il cui relativo bit è attivo. In questo modo prima di attivare il comando Send è possibile agendo su queste due variabile definire quali messaggi inviare ed a che numeri inviarli.
Attivando Send viene eseguito l’invio dei messaggi, terminato il quali si attiva Done, per effettuare un nuovo invio occorre disattivare Send e poi riattivarlo.
Ottobre 4, 2013 alle 12:53 pm in risposta a: Disponibilità di una Getting started guide per SlimLine #37816Sergio Bertana
Amministratore del forum1) Interpretazione corretta per quanto riguarda gli I/O digitali che come in tutti i PLC operano in immagine di processo e quindi sono automaticamente trasferiti lelle aree %IX e %QX. Diverso è il ragionamento per gli /I/O analogici, questi sono gestiti con dei blocchi funzione (SysGetAnInp per gli ingressi e SysSetAnOut per le uscite) a cui occorre indicare l’indirizzo del modulo ed il canale su modulo da utilizzare. Gli I/O analogici operano con variabili REAL.
2) Il file system di SlimLine ha un set limitato di possibilità, esempio non si possono creare directory oltre a quelle esistenti, il nome dei file può essere massimo 16 caratteri compresa l’estensione. E’ possibile gestire fino ad un massimo di 64 files per directory, formattando occorre indicare il numero di files perché nella formattazione viene suddivisa l’area totale disponibile tra tutti i files indicati. Della SD-Card vengono uitilizzati solo i primi 512 Mb indipendentemente dalla sua dimensione.
Sergio Bertana
Amministratore del forumHo realizzato questo semplice programma di esempio dove la funzione @USINT SSelector(USINT Index) ritorna l’indirizzo del messaggio selezionato con la variabile Index.
Come vedi dalla stampa del programma, chiamando la funzione SSelector passando il valore di indice viene ritornato l’indirizzo del messaggio relativo. Nel programma ST viene trasferito il messaggio selezionato in stringhe di testo utilizzando la funzione StrCopy di cui fornisco anche il codice sorgente.
Ho definito la struttura MESSAGETEXT per permettere di gestire un array di messaggi, ed utilizzando l’array ho creato un loop per il trasferimento di tutti i messaggi (Download programma).
FOR i:=0 TO 3 DO
RCode:=StrCopy(ADR(Msg[i].Txt), SSelector(i));
END_FOR;Ottobre 3, 2013 alle 1:54 pm in risposta a: Disponibilità di una Getting started guide per SlimLine #37813Sergio Bertana
Amministratore del forumDal nostro sito è possibile eseguire il download del Quick Start Guide, questo è quello che forniamo come informazioni iniziali. Ma ecco la risposta alle tue domande:
1) I moduli di estensione hanno un dip switch a 4 interruttori per l’impostazione dell’indirizzo del modulo, i moduli di default hanno indirizzo 0. SlimLine riconosce i moduli connessi al bus di estensione (Vedi post) ed esegue la lettura degli ingressi e la gestione delle uscite da tutti i moduli di I/O.
2) La SD-Card si utilizza per la memorizzazione dei dati, viene montata automaticamente nel file system ed è vista come directory SDCard. Le SD-Card vergini vanno formattate (Vedi post), nel comando di format si specifica anche quanti files si vuole memorizzare al suo interno (Massimo 64 files).
3) I moduli di I/O seriali si possono gestire con il blocco funzione Modbus master (Vedi post), in alternativa come modulo di I/O remoto si può utilizzare dei moduli CPU Compact anche loro connessi in seriale Modbus. Se vuoi utilizzare la rete Ethernet per distribuire l’intelligenza, il blocco funzione UDPDataTxfer permette di comunicare con altri moduli CPU (Vedi post).
4) Il Modbus RTU è nativo sulle 3 porte seriali, il Modbus TCP/IP è gestito con un massimo di 3 concorrenze (Vedi post).Ottobre 3, 2013 alle 1:16 pm in risposta a: Connessioni contemporanee su protocollo Modbus TCP/IP #36242Sergio Bertana
Amministratore del forumI moduli CPU ARM7 della famiglia SlimLine come si vede dal comando Socket supportano in totale 10 sockets TCP/IP.
[Admin]> Socket
-[Socket 01]——————————————-[Connect on port: 23]–
-[Socket 02]—————————————–[Listening on port: 80]–
-[Socket 03]—————————————–[Listening on port: 21]–
-[Socket 04]———————————————————[Waiting]–
-[Socket 05]—————————————–[Listening on port: 502]–
-[Socket 06]—————————————–[Listening on port: 502]–
-[Socket 07]—————————————–[Listening on port: 502]–
-[Socket 08]———————————————————-[Closed]–
-[Socket 09]———————————————————-[Closed]–
-[Socket 10]———————————————————-[Closed]–Per il protocollo TCP/IP sono gestiti 3 sockets sulla porta 502 che possono quindi operare contemporaneamente. Vi sono poi ulteriori 3 sockets utilizzabili dal programma utente, tramite questi sockets l’utente può gestire ulteriori protocolli Modbus collegandoli al blocco funzione ModbusSlave, oppure gestire un proprio protocollo (Vedi post).
Le descrizioni del Modbus IP sono le stesse dei moduli compact perché quando si connettono al PC tramite il driver RNDIS viene installata una scheda di rete virtuale che permette di gestire la comunicazione TCP/IP su porta USB.
Sergio Bertana
Amministratore del forumMa la soluzione proposta con la FB ModemHTTPGet funziona anche su reti nattate, anzi è fatta apposta, infatti è il modem che si connette ad un server HTTP con indirizzo IP pubblico. Nel mio esempio infatti mi appoggio ad un servizio gratuito offerto da Altervista, sul sito Altervista ho caricato una pagina web scritta in PHP ed il modem invia alla pagina i dati in GET.
Diverso è il problema delle telecamere IP, dove l’unica soluzione al NAT è l’utilizzo di un router (Vedi Conel) che gestisce una VPN con un server (Che si trova su di un IP pubblico, meglio se statico). Tramite la VPN è possibile raggiungere tutti i dispositivi connessi al router (Ogni dispositivo avrà un IP statico all’interno della VPN).
Settembre 30, 2013 alle 12:57 pm in risposta a: Software virtual COM per convertitore ATC-1000 #37810Sergio Bertana
Amministratore del forumPersonalmente non ho mi utilizzato il software Communicator ma in questo topic si trovano esempi di utilizzo dei convertitori Ethernet/Seriale in connessione TCP/IP (Eliminando quindi il software Virtual COM). I programmi di virtualizzazione porta seriale sono comunemente venduti ad un costo rilevante, ecco quindi che tutti i costruttori di convertitori Ethernet/Seriale abbinano al prodotto una versione semplificata del software.
Abbiamo molti clienti che utilizzano i convertitori ATC-1000 con il software Virtual COM e non ho notizie di grave lacune di funzionalità. Nel caso di comunicazioni a pacchetto (Come nel Modbus o nel protocollo Aurora) consiglio di configurare una connessione UDP in alternativa alla TCP e una connessione che utilizza meno banda.
Nel tuo caso poi che disponi di due convertitori, puoi anche collegare i due convertitori tra di loro in modalità Client-Server, lasciando un convertitore configurato in RS485 connesso all’inverter e l’altro connesso in RS232 all porta seriale del PC eliminando quindi il software di virtualizzazione, con il costo del software compri 3 convertitori.
Sergio Bertana
Amministratore del forumIl blocco funzione ModemHTTPGet esegue esattamente la stessa operazione che hai fatto svolgere al tuo PC con le pagine web in auto refresh. Per la visione in tempo reale puoi utilizzare il web server dello SlimLine visualizzando all’interno di pagine dinamiche i valori desiderati (Vedi post).
Naturalmente per la visualizzazione delle pagine web dello SlimLine da remoto devi gestire un indirizzo IP pubblico con le opportune regole di routing, mentre TeamViewer by-passa il problema utilizzando un proprio server e gestendo la comunicazione sulla porta HTTP.
Settembre 28, 2013 alle 9:08 am in risposta a: Gestire I/O remoti con connessione via radiomodem #37806Sergio Bertana
Amministratore del forumOttima soluzione la scelta del convertitore per onde convogliate, così hai anche la connessione ethernet in garage che puoi rendere anche wireless con un access point WiFi.
Visto che hai utilizzato una soluzione ethernet, mi permetto di consigliare per una espansione della rete o per altri lettori di questo topic, l’utilizzo come sistemi I/O di due dispositivi già provvisti di connessione ethernet eliminando i due ATC-1000. Se la connessione è solo tra due punti, si può utilizzare i moduli di I/O-Ethernet.
Se invece è tra più punti o se si vuole avere una programmabilità locale puoi utilizzare i sistemi SlimLine oppure il NetLog III. Esistono blocchi funzione specifici per la comunicazione UDP tra diversi sistemi (Vedi post), inoltre il Web server integrato permette di gestire pagine di comando integrate nel prodotto stesso (Vedi post). -
AutorePost