Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Settembre 14, 2015 alle 3:10 pm in risposta a: Accesso a telecamere da internet senza IP pubblico #39070
Sergio Bertana
Amministratore del forumPer poter accedere a dispositivi IP su una rete LAN da rete WAN in cui non si dispone di un IP pubblico l’unico modo e di creare una VPN. I routers Conel hanno la possibilità di creare una o più VPN utilizzando i protocolli OpenVPN e IPSec (Topic).
Ma è ovvio che una VPN connette due punti tra di loro, quindi solo dal punto dove è connessa la VPN è possibile collegarsi ai dispositivi connessi alla rete LAN del router.
Una alternativa è sfruttare il servizio EasyAccess 2.0 offerto dai terminali Weintek (Topic). Questo servizio permette tramite apposite apps (Disponibili per smartphone e per PC) di realizzare una VPN tra il dispositivo ed il terminale passando attraverso reti NATtate. In questo modo vengono resi accessibili dal dispositivo in cui è eseguita l’applicazione EasyAccess tutti i dispositivi connessi sulla stessa rete LAN del terminale, senza dover effettuare operazioni sul router di accesso a Internet.
Impostando sulla applicazione EasyAccess il Pass-through è possibile connettere uno per volta i dispositivi (Nel tuo caso le telecamere). Ecco che se la telecamera nella rete LAN sotto al router ha indirizzo IP 10.0.0.251 basterà impostarlo (Screenshot) per averlo disponbile da qualsiasi applicativo (Esempio IPCamViewer). Nota: Unica condizione è che nel dispositivo (Smartphone o PC) dove è eseguito EasyAccess non vi sia una scheda di rete nella stessa classe di indirizzi definita nel Pass-through.
Per utilizzare EasyAccess è necessario installare un classico terminale con schermo touch oppure un terminale cloud senza schermo.
Sergio Bertana
Amministratore del forumLa soluzione per la tua applicazione potrebbe essere la Modem machine, questo prodotto è basato su di un sistema programmabile SlimLine. In pratica viene fornito un modulo CPU a cui si connette un modem GSM/GPRS, essendo un sistema programmabile e modulare è possibile estendere il numero degli I/O a piacere. Se si vuole una alimentazione di backup occorrerà realizzare un quadretto con l’utilizzo di una batteria.Come si evince dalla spiegazione della Modem machine il prodotto è un progetto aperto da cui il cliente può partire per sviluppare la propria applicazione di telecontrollo. E questo permette di poter adeguare l’applicazione nel tempo adattandola alle crescenti necessità senza dover sostutuire il prodotto ma solo modificandone il programma.Il programma base manda SMS su attivazione di contatti logici, ma è possibile aggiungere ingressi analogici e/o connettere il modulo CPU a misuratori di energia (Topic) per poter rilevare anche parametri di funzionamento dell’impianto.Inoltre si può realizzare una connessione in HTTP con un servizio Web nel cloud per avere la gestione degli impianti via Internet (Topic).Riassumendo il prodotto è certamente flessibile, aperto e permette il suo aggiornamento ed ampliamento nel tempo, però la condizione essenziale è che il cliente abbia un approccio attivo ad esso. Quindi è necessario che venga messo in conto l’apprendimento della sua programmazione con LogicLab, perchè solo entrando nel programma è possibile sfruttare tutta la versatilità del prodotto.L’approccio attivo evita di trovarsi nella situazione attuale dove il sistema di invio SMS utilizzato nei quadri dei gruppi elettrogeni, nel momento in cui deve essere modificato richiede l’intervento del fornitore e se non previsti ampliamenti rende necessaria la sua sostituzione.
Sergio Bertana
Amministratore del forumLa gestione di motori stepping è un argomento ampiamente trattato nel forum (Topic, topic), la tua idea di utilizzare gli I/O standard per generare frequenze di uscita dell’ordine di 400 Hz ha un problema. Le uscite digitali statiche hanno tempi di On/Off compatibili con i 400 Hz ma è la loro gestione il tallone d’Achille.
Se ipotizzi di utilizzare l’interrupt fast a 1 mS per invertire lo stato di una uscita digitale tu avrai una frequenza in uscita di 500 Hz. Ho fatto delle prove ed è possibile anche scendere con l’interrupt a 500nS con frequenza massima di 1KHz. Ora se tu utilizzi una sola uscita puoi variare il tempo di interrupt (Funzione SysSetTaskLpTime) per avere tutte le frequenze nel range fino ad 1KHz. Ma se le uscite sono più di una è ovvio che variando il tempo di interrupt tutte le uscite cambiano di frequenza.
Per variare la frequenza di ogni uscita puoi solo attendere una o più esecuzioni dell’interrupt per invertire l’uscita ma in tal caso le frequenze sono sottomultipli esatti della frequenza base (Esempio 1KHz, 500Hz, 250Hz, 125Hz…) e non credo vada bene.
Sul mercato esistono drivers economici per motori stepping che si possono gestire via I2C (Vedi questo), in alternativa esistono degli integrati per generare uscite PWM pilotabili da bus I2C (Esempio il PCA9685, 16-channel, 12-bit PWM Fm+ I2C-bus LED controller della NXP).
Sergio Bertana
Amministratore del forumSiccome mi dici che hai testato il tutto con un programmino vuol dire che la connessione con il PC è corretta, allora prova a testare il progetto con il simulatore del pannello direttamente da PC (Usa il tasto Simulatore On-Line) devi definire la COM corretta nel progetto (Magari nel tuo PC si chiama COM6…).
Mumble… Arduino Mega Vs SlimLine Compact, perchè no…
Sergio Bertana
Amministratore del forumIl terminale ha due porte seriali la COM1 che può essere RS232 oppure RS485 (2 o 4 fili), la porta COM3 può essere solo RS485 2 fili. I collegamenti corretti sono quelli riportati sul datasheet.
Ad alcune delle domande che mi fai devi essere tu a rispondere… RS232 o RS485 dipende da che interfaccia seriale dispone Arduino Mega. Se le ha entrambe scegli quella più consona alla tua applicazione (RS232 massimo 15 mt, RS485 massimo 1200 mt).
Se Arduino è un Modbus RTU slave è ovvio che devi impostare il pannello in modalita Modbus RTU master.
Ma attenzione hai impostato correttamente i parametri seriali e l’indirizzo di nodo ?
Il range di indirizi delle variabili è corretto ?
Il terminale usa i comandi modbus 01 Read Coil Status e 05 Force Single Coil per la gestione variabili BOOL. 03 Read Holding Registers e 16 (10 Hex) Preset Multiple Regs per la gestione delle variabili WORD. Questi comandi sono supportati dall’Arduino Mega ?
Sergio Bertana
Amministratore del forumLa corrente richiesta dai carichi è estremamente bassa, ma attenzione al carico capacitivo, una capacità al momento della connessione è un cortocircuito e la corrente in quell’istante tende all’infinito (Come vedi nella nostra nota applicativa può andare anche a 40 volte la corrente nominale). Quindi ti consiglio di proteggere il contatto del relè, puoi utilizzare a tale scopo una resistenza in serie al carico.
Siccome il carico è in alternata la capacità continuerà a caricarsi/scaricarsi facendo passare corrente nella resistenza, quindi bisognerà utilizzare una resistenza di pochi Ω per evitare grosse potenze in dissipazione. Vado molto a naso e quindi ti consiglio di provare quello che cito come dati.
Metterei per iniziare una resistenza da 4.7Ω che ipotizzando una corrente media di 1 A dissiperebbe una potenza di 4.7 Watt. Naturalmente se scendi di valore resistivo scendi anche con la potenza dissipata ma come detto devi fare sperimentazione.
Una tecnica più raffinata immaginando che tutti i comandi a 220 Volt operino sulla stessa tensione o su tensioni in fase tra di loro, è di acquisire con un ingresso digitale (Tramite un trasformatore) la tensione di rete e campionandola in tast Fast ad 1 mS, potrai così commutare il relè di uscita solo sul passaggio per lo zero, in pratica realizzi un circuito zero crossing detector. Naturalmente dovrai anticipare il comando di qualche mS per compensare il tempo di ritardo del relè.
Il modulo CPU compact Ethernet supporta al massimo 4 moduli di espansione, avendone 5 dovrai per forza utilizzare il modulo CPU base.
Sergio Bertana
Amministratore del forumLa soluzione più semplice è utilizzare Easy Access 2.0, esistono apps sia per gli smartphone Android che iOS, le apps sono scaricabili dal market.
Attivata la app lo smartphone è connesso in VPN con il terminale a questo punto puoi attivare la app di visualizazione anch’essa scaricabile gratuitamente dal market.
Settembre 10, 2015 alle 3:56 pm in risposta a: Pass-Through su terminale MT8071iE per accesso da remoto #39061Sergio Bertana
Amministratore del forumSi certo che è fattibile funziona esattamente come lo hai testato tu su rete locale LAN. L’utilizzo di Easy Access naturalmente semplifica il tutto, intanto funziona anche se il terminale è su reti NATtate e con connessioni senza IP pubblico (Come le connessioni UMTS/LTE).
Per utilizzarlo senza Easy Access devi poter agire sul router del provider del servizio Internet eseguendo il NAT (O port forwarding) delle porte necessarie. Per l’elenco delle porte TCP/IP utilizzate dal terminale fai riferimento a questo topic.
Sergio Bertana
Amministratore del forumCredo tu ti riferisca alla riga di programma Counter:=Counter+1;
Sicuramente la variabile Counter và in overflow ma quando si esegue il calcolo MemoCtr:=Counter-MemoCtr; operando su variabili senza segno della stessa dimensione (Esempio UINT o UDINT) si ha la gestione del rapporto circolare ed il risultato è sempre corretto.
Se provi ad eseguire il calcolo MemoCtr:=Counter-MemoCtr; con MemoCtr=16#FFFFFFFF e Counter=16#00000004 ti troverai in MemoCtr il valore 5 che è appunto il numero di impulsi conteggiati tra le due letture di Counter anche se Counter ha avuto nel frattempo un overflow.
Sergio Bertana
Amministratore del forumSi ad oggi il file audi wav abbinato agli eventi è modificabile solo dal tool di programmazione EasyBuilder e EasyBuilderPro. Il file wav viene inglobato nel programma compilato e non è più accessibile in nessun modo.
Sergio Bertana
Amministratore del forumPuoi verificare se nella pagina di tastiera abbinata alla impostazione della password (Standard è la pagina 60 ASCII small) il tasto CAPs lock è correttamente abbinato alla variabile LW 9540 (Screenshot).
Un test veloce può essere quello di fare un progetto nuovo con un oggetto Introduzione ascii e verificare il funzionamento. In caso di differenza puoi importare la pagina da un progetto nuovo nel tuo progetto.
Sergio Bertana
Amministratore del forumPer meglio comprendere quanto ho espresso nel post precedente riporto lo screenshot di un programma in ST che dimostra come sia facile generare eccezioni di programma a seguito di facili sviste.
Per aiutare a capire dove il problema si è manifestato è possibile risalire dall’indirizzo di programma indicato con l’eccezione, se prendiamo ad esempio il mio programma mandandolo in esecuzione lo SlimLine si arresta. Con Toolly è possibile connettersi in Telnet e con il comando Syslog ci verrà indicata l’eccezione (Screenshot). Come si vede si è manifestata all’indirizzo 0x000600C4.
In LogicLab dal menù Project -> Options si accede alle opzioni di progetto e nel tab Build output è possibile abilitare il tick di inclusione codice sorgente (Screenshot). Compilando il progetto nella cartella si troverà un file NomeProgetto.lst, editando questo file al suo interno si trovano i riferimenti tra l’indirizzo di programma ed il codice sorgente. Ecco cosa si vede nel mio programma
#17 ST @Ptr {L:7}
(*) USINT
000600BC E59FC120 ldr r12, [pc, #+288] ; 0x400054B0
000600C0 E59C3000 ldr r3, [r12]
000600C4 E5C30000 strb r0, [r3]Come si vede all’indirizzo 000600C4 si trova la parte di codice relativa alla compilazione del programma alla linea 7 {L:7}.
Sergio Bertana
Amministratore del forumNelle ultime versioni del sistema operativo abbiamo sostituito il numero di eccezione con un acronimo di riferimento, ecco un elenco delle eccezioni di programma.
Except: UNDEF, Exception 0: Eccezione non definita
Except: DAT_ABORT, Exception 1: Indirizzo memoria errato (Il programma ha fatto accesso ad una area dati errata)
Except: PREFETCH, Exception 2: Istruzione errata (Il programma contiene una istruzione errata)
Except: IDISABLE, Exception 3: Disabilitazione interrupt
Except: IENABLE, Exception 4: Abilitazione interrupt
Except: WDOG, Exception 5: Watch dog (Il programma ha un tempo di esecuzione superiore al tempo di controllo)
Except: IVECTOR, Exception 6: Corruzione vettori interrupt (Si è sovrascitta l’area di memoria dedicata ai vettori)
Except: REBOOT, Exception 7: Reboot sistema (Il sistema è stato riavviato)
Except: SYSTIME, Exception 8: Counter system time (Si è sovrascitta l’area di memoria dedicata ai counters di sistema)Nel tuo caso il codice di eccezione 1 indica è un Data abort exception, questo significa che il programma ha fatto un accesso ad un’area di memoria non consentita. Questo capita solitamente quando si utilizzano puntatori che erroneamente (Perchè sporcati dal programma) vanno a puntare zone di memoria non accessibili. Può succedere anche nel caso di array il cui indice è fuori range.
Il fatto che per un pò ha funzionato ed ora funzioni, può essere legato ad un limite posto in memoria tampone che si è sporcato e/o ad una parte di programma che si attiva solo su certe condizioni logiche e che non si era mai verificata prima e non si stà più verificando ora (Tantomeno nel tuo laboratorio dove tieni il solo sistema acceso senza agire sugli I/O).
Sergio Bertana
Amministratore del forumAnother suggestion, to reduce the source code and so the required time to download it on the target (If you choose to download it) is to include in your project only the library objects you use in your program and not all the library. So for example if you use the BLINK FB from the ePLCUtyLib you can import only it from the library insted of attach all the library to the project (See screenshot).
Sergio Bertana
Amministratore del forumThe download time you reported is absolutely too long, I can suggest to you some tricks to reduce the download time.
First of all you must disable the source code download, or if you would that the source code resides on the SlimLine target you can choose to download it only when the LogicLab is disconnected from the SlimLine. To do this please refer to the Project -> Options menu (See screenshot). In the Download tab you can choose when to download the source code.
On PLC application download: Probably is your actual choice, with this choice all times you download the PLC program, you download also the source code and so you waste a lot of time in download it.
Before disconnection: This is the choice to enable if you want to download on the target the source code. With this choice every time you make a modification on the PLC program, you download only it on the target. The source code will be downloaded only when you disconnect the LogicLab from the SlimLine.
Never: With this choice the source code will not be ever downloaded on the SlimLine target.
-
AutorePost