Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 3,121 a 3,135 (di 4,256 totali)
  • Autore
    Post
  • in risposta a: Monitoraggio da remoto del valore di temperatura #37841
    Sergio Bertana
    Amministratore del forum

    La soluzione al tuo problema può essere trovata in molti modi, vediamoli.
     
    HWg-Ares Sistema monitoraggio GSM/GPRS
    Sistema di monitoraggio con modem GSM/GPRS integrato in grado di acquisire dati da sensori 1-wire (temperatura, umidità, tensione, corrente, allagamento ecc.) e da ingressi digitali, e di renderli disponibili su portale web SensDesk utilizzando la rete GSM/GPRS.
     
    SlimLine e modem GSM/GPRS
    A differenza degli altri questo è un sistema programmabile PLC, tramite blocchi funzione può gestire ricezione/invio di SMS (Vedi post). Il sistema può anche connettersi ad un server ed inviare i dati via TCP/IP (Vedi post).
     
    HWg-STE Plus
    Termometro/igrometro Ethernet dotato di due ingressi digitali protocollo SNMP, interfaccia web ed accesso al portale web gratuito SensDesk di HWg. Per utilizzare questa soluzione occorre disporre di una connessione Internet locale (ADSL o Router).

    in risposta a: Interfaccia web su terminali touch screen Weintek #37840
    Sergio Bertana
    Amministratore del forum

    L’accesso da client al server VNC del pannello Weintek può avvenire utilizzando due diverse porte, i client VNC (Esempio UltraVNC) utilizzano la porta 5900, mentre il VNC da Java utilizza la porta 5800 (Topic).

    Quindi per accedere da IP pubblico con un client VNC devi eseguire un forwarding della porta pubblica xxxx sul IP del terminale porta 5900. Nel tuo programma dovrai definire l’IP pubblico e la porta xxxx, se hai un solo terminale a cui accedere consiglio di eseguire il forwarding della porta pubblica 5900 su IP privato pannello sempre porta 5900, in questo modo utilizzi la porta standard del VNC.

    Ma da come hai posto la domanda mi sembra tu voglia utilizzare l’accesso da browser (Quindi VNC Java), in questo caso le porte da ridirigere sono 2. La porta 80 del pannello su cui si appoggia il server web e la porta 5800 utilizzata dal client VNC Java. Quindi ad esempio la porta pubblica 8080 và ridiretta sul pannello porta 80, la porta pubblica 5800 và ridiretta sul pannello porta 5800. Ora da browser basterà digitare l’inidirizzo pubblico seguito dalla porta xxx.xxx.xxx.xxx:8080.

    Naturalmente è ovvio che il tuo gestore del servizio Internet deve fornirti un indirizzo IP che può anche essere dinamico (Si risolve con il DynDNS se il router lo supporta) ma deve essere sicuramente un IP pubblico. Alcuni gestori forniscono IP NATtati e quindi non raggiungibili da Internet. Per una verifica prova ad eseguire un ping sull’indirizzo IP pubblico. Altra verifica è che le porte pubbliche che tu utilizzi non siano bloccate dal gestore.

    in risposta a: Verifica allarme di temperatura su ricezione SNMP Trap #37836
    Sergio Bertana
    Amministratore del forum

    Non so quale programma utilizzi per intercettare le trap inviate dal Poseidon, ma come vedi anche utilizzando il semplice SNMP Trap Watcher, nella trap inviata è riportato lo stato completo del dispositivo compreso il valore di temperatura (Screenshot).

    Per il riferimento ai vari OID presenti nella Trap devi eseguire il download dal Poseidon del file SNMP OID description, cliccando sul link presente nella pagina web del prodotto (Screenshot).

    in risposta a: Conversione formato con convertitori seriale/fibra #37834
    Sergio Bertana
    Amministratore del forum

    Si certo è possibile realizzare quello di cui necessiti, il convertitore Seriale/Fibra connesso alla rete RS485 del master invia al convertitore Seriale/Fibra connesso ai due slaves tutti i dati della rete. Essendo una comunicazione ad indirizzo, solo lo slave che ha indirizzo di nodo richiesto risponderà alle interrogazioni.

    Se lo slave è uno dei due connessi al convertitore dopo la fibra, risponderà, ed il convertitore invierà la risposta sulla fibra che poi sarà ritrasmessa sulla rete RS485 del master.

    in risposta a: Trasferire valori tra variabili in linguaggio IL #37832
    Sergio Bertana
    Amministratore del forum

    Per sincronizzare il temporizzatore con lo stato di macchina in funzione (Nel mio esempio è l’ingresso %IX255.1) occorre modificare il ramo:

    LDN TBase.Q
    ST TBase.IN
    JMPC Label (* Salto se tempo non trascorso *)

    Nel modo:

    LD %IX255.1
    ANDN TBase.Q
    ST TBase.IN

    LDN TBase.Q
    JMPC Label (* Salto se tempo non trascorso *)

    In pratica il timer si attiva solo se ingresso di macchina in funzione è attivo e l’uscita timer è disattiva, mentre il salto alla etichetta si deve sempre effettuare salvo quando il timer ha terminato il conteggio (Questa situazione dura un loop di programma).

    in risposta a: Distanza comunicazione moduli Ubiquiti #37830
    Sergio Bertana
    Amministratore del forum

    Per altezza credo tu ti riferisca al campo Tower Height, in questo campo devi indicare l’altezza dell’antenna dal terreno (Screenshot). Tutti i riferimenti altimetrici sono automaticamente presi da Google Hearth.

    Nel tuo caso un link tra pianura e montagna è molto favorevole in quanto si presume non vi siano ostacoli tra i due apparecchi essendo la montagna molto in alto. Attenzione solo a non avere edifici e/o grossi alberi in prossimità delle antenne.

    in risposta a: Gestire un display alfanumerico con un modulo SlimLine #37828
    Sergio Bertana
    Amministratore del forum

    Se 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.

    in risposta a: Gestire un display alfanumerico con un modulo SlimLine #37826
    Sergio Bertana
    Amministratore del forum

    Ho 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.

    in risposta a: Tensione alimentazione dispositivi Ubiquiti #37824
    Sergio Bertana
    Amministratore del forum

    Non 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.

    in risposta a: Conoscere l’indirizzo delle variabili (funzione ADR) #37822
    Sergio Bertana
    Amministratore del forum

    Anche 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.

    in risposta a: Esempio di calcolo velocità rotazione RPM #37821
    Sergio Bertana
    Amministratore del forum

    Aggiungo 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.

    in risposta a: Esempio di calcolo velocità rotazione RPM #37820
    Sergio Bertana
    Amministratore del forum

    Non 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.

    in risposta a: Una soluzione per l’invio di SMS multipli #37819
    Sergio Bertana
    Amministratore del forum

    Utilizzando 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.

    in risposta a: Disponibilità di una Getting started guide per SlimLine #37816
    Sergio Bertana
    Amministratore del forum

    1) 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.

    in risposta a: Funzione per la selezione stringhe di testo #37814
    Sergio Bertana
    Amministratore del forum

    Ho 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;

Stai visualizzando 15 post - dal 3,121 a 3,135 (di 4,256 totali)