Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumSui sistemi programmabili con LogicLab come hai fatto giustamente notare esiste una libreria per la completa gestione del modem. Non abbiamo fatto il porting della libreria con CODESYS ma credo che puoi trovare librerie analoghe già pronte sul mercato.
Eventualmente puoi gestire direttamente da programma ST i comandi AT del modem per gestire l’invio dei messaggi SMS (Topic).
Aprile 9, 2015 alle 6:05 am in risposta a: Strane differenze tra simulazione e risultati reali #38876Sergio Bertana
Amministratore del forumInformato Axel del problema, posto la risposta ricevuta.
Abbiamo effettivamente verificato, non funziona il cast implicito di una costante come parametro a una funzione. La soluzione, per ora, è appoggiare il paramentro su una variabile (o aggiungere .0 alla costante). Apriamo il ticket #LL-1418: Wrong implict conversion to REAL of a costant, passed as function’s argument
Aprile 7, 2015 alle 8:02 am in risposta a: Strane differenze tra simulazione e risultati reali #38875Sergio Bertana
Amministratore del forumHo visto il tuo progetto e l’errore che hai commesso è nella definizione dei valori di limite alla funzione ValueScale, la funzione vuole un valore di tipo REAL che vanno sempre definiti con l’indicazione del decimale. In pratica non devi scrivere 0 ma 0.0, non 10 ma 10.0, ecc…
Probabilmente il compilatore sul simulatore è in grado di convertire il formato in REAL mentre il compilatore sul target non esegue la conversione. Farò presente questa discrepanza alla Axel.
Ecco lo screenshot del programma in esecuzione sul sistema target (SlimLine con modulo espansione 20I/O mixed signal), allego programma sorgente.
Sergio Bertana
Amministratore del forumEsame superato a pieni voti… Con il FB IOEncoder si possono utilizzare due ingressi digitali per acquisire segnali da un encoder in quadratura. Naturalmente essendo la gestione tutta software occorre che il ciclo macchina di esecuzione del FB sia compatibile con la frequenza massima dell’encoder da acquisire.
Dovendo campionare i segnali encoder almeno 4 volte per ciclo, se ne deduce che la frequenza massima dell’encoder nel caso di FB eseguita ogni 1 mS è di 200 Hz.
Il FB SysGetEncoder invece utilizza un circuito hardware presente nei moduli di I/O che permette di acquisire segnali fino a 50 KHz. Standard è possibile gestire un encoder per modulo di espansione, ma su richiesta possiamo fornire packages hardware specifici per poter gestire più encoders sullo stesso modulo di I/O.
Sergio Bertana
Amministratore del forumSicuramente la tua esposizione è corretta il sistema è fattibile nei termini in cui lo hai esposto. Per la lettura encoder devi usare il FB SysGetEncoder che acquisisce l’encoder tramite il circuito hardware del modulo di estensione. Puoi utilizzare il PWM out del modulo CPU (In questo topic alcune considerazioni in merito).
Per le rampe di accelerazione e decelerazione puoi utilizzare il FB LRamp, Linear Ramp. Ora se il tuo problema è di fare solo un posizionamento e non hai problemi di velocità, concordo con te che è fattibile. Calcoli la traiettoria di rallentamento per arrivare un pò in anticipo sulla quota e poi percorri l’ultimo pezzo in velocità lenta per avere la precisione sulla quota.
Però la tendenza generale è quella di utilizzare drivers intelligenti, il PLC dialoga con il driver (Esempio in modbus), ed è il driver che gestisce il posizionamento. Esistono drivers anche per piccoli motori sia stepping (Topic) che brushless.
In questo topic un programma spartano per la gestione del posizionamento di un asse.
Sergio Bertana
Amministratore del forumLo scenario da te descritto è sicuramente realizzabile, la visibilità ottica tra le tre stazioni e la distanza ridottissima sono garanzia di avere connessioni veloci ed affidabili. Nessun problema sulla velocità delle connessioni TC/IP è normale avere molte connessioni al secondo tra i dispositivi. Come configurazione di rete utilizzando dispositivi Ubiquiti, vedrei bene un Bullet con la sua antenna omnidirezionale per la stazione centrale configurato come access point. Nelle altre stazioni metterei delle NanoStation configurate come Station. Tutti i dispositivi vanno configurati in modalità Bridge.Poi certo sull’unità centrale puoi montare un piccolo switch per collegare il tutto al router ADSL (Magari il router stesso ha già alcune porte in switch).Per lo scambio dati tra i diversi sistemi SlimLine puoi utilizzare il FB UDPDataTxfer (Topic), naturalmente avrai 2 istanze del FB sul nodo centrale per scambiare dati con gli altri 2 sistemi. Un argomento simile al tuo è trattato in questo topic.
Sergio Bertana
Amministratore del forumImpossibile avere certezze nei collegamenti radio, 23 Km sono già una bella distanza da coprire, ma se c’è la perfetta visibilità ottica è realizzabile.
Ubiquiti permette di verificare la possibilità di connessione tra i due punti con l’utility Airlink, definendo le coordinate GPS dei due punti da collegare ed il tipo di apparato che si desidera utilizzare, l’utility tramite Google Earth determina la fattibilità del collegamento. Tramite l’utility è possibile calcolare anche l’altezza dell’antenna dal terreno (Screenshot).
Quindi ti consiglio di verificare la possibilità con l’Airlink e poi vista la distanza e visto l’utilizzo di parabole abbastanza grandi ti consiglio di usare un buon sostegno per gli apparati. Molte volte gli apparati sono montati su pali che a causa del vento si muovono facendo perdere l’allineamento peggiorando la connessione.
Marzo 30, 2015 alle 3:25 pm in risposta a: Come verificare ricezione di interrogazioni Modbus #38866Sergio Bertana
Amministratore del forumSe vuoi utilizzare il FB ModbusSlave sulla porta 502, devi da pagina web di configurazione modificare la porta in ascolto della gestione Modbus embedded.
Però attenzione con la gestione da FB non puoi effettuare nè debug nè programmazione, quindi dovresti utilizzare il FB sulla porta 502 per le interrogazioni Modbus e la gestione embedded su di un’altra porta per le operazioni di debug e programmazione.
Ma se il tuo problema è verificare il funzionamento del router 3G, perchè non usi semplicemente un ping ad un IP pubblico, esempio il DNS di Google (Topic). Solo se il router funziona ed è connesso ad Internet il ping ritorna esito positivo, così ti eviti tutto il lavoro di modifica sul protocollo Modbus.
Sergio Bertana
Amministratore del forumLa mia esperienza con i modem è nata dallo svilupo del blocco funzione di gestione modem per i nostri sistemi SlimLine (Topic). Nella nostra libreria è il PLC che interroga il modem per verificare se ha ricevuto messaggi SMS con il comando AT+CMGR, e dopo avere letto il messaggio lo cancella con il comando AT+CMGD.
Quello che ho visto con i messaggi lunghi è che in testa al messaggio vi sono uno o più caratteri “0” che vengono interpretati dalle funzioni stringa del PLC come terminatore di stringa e questo porta a problemi nella interpretazione della stringa. Non sò se questo è riferibile al tuo problema.
Marzo 30, 2015 alle 9:19 am in risposta a: Collegamento inverter PowerOne convertitore Ethernet/Seriale #38863Sergio Bertana
Amministratore del forumIl convertitore ATC-1000 và impostato come server TCP e fà da gateway tra il TCP/IP e la seriale. Quindi certo devi connetterti al suo indirizzo IP ed alla porta TCP che hai configurato dalla pagina web del convertitore.
Sergio Bertana
Amministratore del forumNella nostra gamma di prodotti non abbiamo un convertitore di protocollo per l’OpenTherm, però cercando in Internet ho trovato dei convertitori di protocollo.
Ho anche visto che esiste la documentazione del protocollo ed anche un progetto realizzato ad-hoc. Ho dato una occhiata veloce al protocollo, la comunicazione è a 1000 Bit/Sec. Quindi connettendo il bus con una opportuna interfaccia hardware a degli I/O logici di un PLC ed eseguendo una scansione degli stessi almeno ogni 250 uS credo che con un pò di tempo a disposizione sia anche possibile gestire direttamente il protocollo.
Ad esempio con la nostra famiglia di sistemi programmabili SlimLine è possibile gestire gli I/O in una task fast eseguita ogni 250 uS. Nel forum troverai esempi di programmi che trattano l’argomento (Topic, topic).
Marzo 30, 2015 alle 6:41 am in risposta a: Come verificare ricezione di interrogazioni Modbus #38860Sergio Bertana
Amministratore del forumA differenza del blocco funzione ModbusSlave dove il bit Done si attiva per un loop ad ogni ricezione di stringa di interrogazione, per la funzione slave embedded nel sistema operativo non è prevista alcuna segnalazione. Per risolvere il tuo problema hai due possibilità.
Utilizzi il FB ModbusSlave, per fare questo puoi abiltare il FB su una porta diversa dalla 502, in questo modo hai anche la possibilità di abilitare il protocollo Modbus solo sull’area di memoria che vuoi modificare, mentre la gestione embedded opera su tutta l’area della DB 100.
Se invece vuoi utilizzare la gestione embedded, puoi gestire una variabile UINT che dovrai scrivere dal sistema master. Ad esempio la puoi azzerare da master mentre il programma SlimLine la valorizza ad 1. Se la variabile rimane valorizzata per il tempo di controllo significa che il master non ha fatto accessi.
Marzo 27, 2015 alle 4:55 pm in risposta a: Nuovo blocco funzione per richiesta pagina da Web server #38859Sergio Bertana
Amministratore del forumCerto che sì, naturalmente devi disabilitare il comando Get e poi dopo avere cambiato l’indirizzo di pagina riabilitarlo. Ma più che le parole possono gli esempi ecco la stampa del programma che chiede due diverse pagine (Download programma).
Naturalmente a differenza del FB eseguito su CODESYS (Topic) che grazie al client TCP permette di definire anche server web diversi, qui essendo la connessione client gestita dal’ATC-3000 potrai richiedere pagine diverse ma dallo stesso server.
Ho colto l’occasione per correggere l’esempio di richiesta di una sola pagina citato nel post precedente utilizzando l’ultima versione del FB.
Marzo 26, 2015 alle 2:15 pm in risposta a: Interfacciarsi in RS232 ad elettronica a microcontollore #38857Sergio Bertana
Amministratore del forumCerto qualsiasi dei nostri convertitori Ethernet-Seriale può fare al caso tuo. In pratica assegni un IP al convertitore, poi con un browser accedi alle sue pagine di configurazione.
Configuri i parametri di comunicazione seriale e lo imposti come server TCP. Ora connettendoti sempre con Hyperterminal ma devi scegliere una connessione di tipo Winsock (In alternativa all’Hyperterminal puoi usare il nostro Toolly) potrai fare le stesse dentiche operazioni che facevi da seriale.
Marzo 25, 2015 alle 2:21 pm in risposta a: Nuovo blocco funzione per richiesta pagina da Web server #38856Sergio Bertana
Amministratore del forumSi è proprio un problema legato all’errore da parte del server sul riconoscimento dell’indirizzo della pagina. Il Web server quando viene richiesta una pagina che non esiste risponde con una pagina che può essere anche graficamente ricercata (Ecco lo screenshot di quello che ritorna Altervista). Come vedi nel corpo della pagina vi è la definizione degli stili css che è quello che trovi tu nel tuo PBuffer.
Lo strano è capire come mai a volte non viene capito correttamente dal server web l’indirizzo della pagina richiesta. Purtroppo oggi non avendo la gestione del client TCP nello SlimLine LogicLab (Stiamo lavorando per gestirlo), dobbiamo affidarci ad un convertitore esterno. Stò utilizzando per test da diversi giorni il blocco funzione di richiesta pagina su SlimLine CODESYS (Che ha la gestione del client) è non ho problemi (Topic).
-
AutorePost