Vai al contenuto
PLC Forum


Controlla E Comanda Variabili Da Android


Adriano71

Messaggi consigliati

Salve a tutti.

Spesso mi capita di trovarmi da solo a verificare il funzionamento di un sensore. Purtroppo il pc si trova lontano.

Ho così pensato di realizzare un programma per Android che mi permetta da cellulare o table di controllare e comandare lo stato delle variabili.

Se vi interessa, è gratuito, e si chiama S7Android e lo potete scaricare da Google Play.

E' in versione pre pre pre pre beta. Io l'ho testato con la serie 300 con porta ethernet e con adattatore ethernet-profibus della Hil...r.

Datemi un pò di feedback per renderlo completo.

Ciao

Link al commento
Condividi su altri siti


Sei grande.

Lo scaricherò di sicuro e ti farò sapere.

Ora quando mi devo spostare sull'impianto mi connetto in wireless, ma muoversi con tutto il notebook e trovare un appoggio appena decente spesso è un'impresa.

Poter controllare lo stato delle variabili sul cellulare, pur con i limiti delle dimensioni dello schermo, è senz'altro molto comodo.

Link al commento
Condividi su altri siti

Ciao Lucky67.

Per sviluppare con Android utilizzo Basic4Android. http://www.basic4ppc.com/

Il linguaggio è molto simile a Visual Basic 6.0 con qualche piccola distinzione.

Il loro IDE permette la programmazione visuale delle interfacce.

Nella compilazione, "traduce" il sorgente VB in Java e crea un file .APK.

Il prezzo è molto contenuto.

Hai anche la possibilità di integrare le libreria .JAR di Java apportando alcune modifiche.

Io per esempio ho utilizzato le libnodave x java ed ho dovuto modificare.

Esiste una versione di prova per 30gg. che però non accetta le librerie aggiuntive.

Saluti

Link al commento
Condividi su altri siti

Ciao

L'ho scaricato su un Samsung galaxy S plus con android 2.3.5 ma quando lo apro mi da un errore.

"An error has occurred in sub:sqlmodule-read-file(java line:191)

android.database.sqlite.

SQLiteException:no such table:

Setting:,while compiling:

Select * FROM Setting ORDER BY ID Asc."

Però l'idea è fantastica sviluppala.

Link al commento
Condividi su altri siti

Ciao Aquaman.

Credo che il tuo problema sia dovuto al fatto che non hai la memoria esterna.

Stasera dovrei postare la versione 0.4 con un paio di novità tra cui il controllo della memoria esterna.

Nel caso in cui non hai una memoria esterna, le impostazioni verranno salvate nella memoria interna del telefono.

Ciao

Link al commento
Condividi su altri siti

La microsd sul cellulare c'è, non fatto prove di configurare o altro, purtroppo ho avuto poco tempo, mi hanno detto oggi che domani parto per il Messico per 20 giorni.

Modificato: da acquaman
Link al commento
Condividi su altri siti

Caricata versione 0.4

Novità:

1. modificata posizione salvataggio DB. Adesso non salva più i dati su memory card esterna ma su memoria interna. Questo è dovuto al fatto che alcuni costruttori (Samsung, Asus, ecc.) montano le memorie in posizioni differenti. Per non perdere tempo ho preferito salvare sulla memoria interna. All'avvio troverete i dati inseriti riportati ai valori iniziali.

2. aggiunta funzione Vibrate su variabili booleane. Quando la variabile cambia stato, il telefono vibra per 100ms.

Saluti

Modificato: da Adriano71
Link al commento
Condividi su altri siti

Nel week end rilascio la versione 4.1 con sostanziali modifiche (al momento ci sono delle anomalie nella lettura delle periferiche)

Oggi è stato testato parecchio. Spero non ci siano errori

Link al commento
Condividi su altri siti

L'idea è meravigliosa, utilissima!

Quindi quello che ti evidenzio di seguito Adriano è proprio per migliorare la App, che è un'ottima cosa...

Ora come ora uso VNC da android al PC con step7... tanto per dire come ho fatto fino ad adesso...

Dunque: elenco problemini:

- ho un samsung tablet da 7 pollici (non ricordo la risoluzione in px) la tua app non mi prende tutto lo schermo (questo sarebbe mal di poco), ma mentre in verticale c'è comunque una scrollbar, in orizzontale mi taglia roba sulla destra (si intuisce che ci dovrebbe essere dell'altro...)

- ma per togliere una variabile dopo averla messa come si fa?

Per il momento non ti posso dire altro, perché il problema dello schermo mi impedisce di fare altre prove... (ovvero la prova di connessione non l'ho fatta ancora)

Comunque ottima iniziativa.

Ho provato la versione 0.4.

Allego immagine del bug:

Link al commento
Condividi su altri siti

X LudB.

Ciao. In realtà ti manca parte dello schermo! Io l'ho testato su un display da 240x320 e sul mio 480x800. Evidentemente devo aver sbagliato qualche calcolo nel ridimensionamento.

Sulla destra di ogni variabile (nel tuo screenshot non è visibile) c'è il pulsante x forzare il valore ed il pulsate per eliminare la variabile.

Per eliminare cliccare PER QUALCHE SECONDO (longclick) sul pulsante con la X. Comparirà la casella di conferma.

Spero nel weekend di pubblicare una versione con una interfaccia modificata. Questa è partita per gioco, poi, aggiungi questo, aggiungi quello, sarebbe bello fare così, ecc. ecc. ed adesso l'interfaccia è un pò complicata.

Stò cercando di semplicare l'interfaccia.

In passato anche io usavo un VNC, però è un attimino pesante su un cellulare.

Saluti

Link al commento
Condividi su altri siti

X LudB (2)

Ho appena uploadato su Google Play la versione 0.42 che dovrebbe risolvere i problemi di schermo.

Considera che google impiega circa 2 ore a rendere pubblico l'aggiornamento.

Fammi sapere

Modificato: da Adriano71
Link al commento
Condividi su altri siti

Ola! dal Messico, non ho fatto in tempo a prendere l'aereo per venire qui che al mio arrivo il mio Samsung ha già aggiornato l'app con il problema risolto.

Purtroppo adesso devo tornare per provarlo.

Visto che sei bravo, te la butto li, creare una app per fare anche le pagine video per usare un tablet come pannello operattore. ;)

Ciao Ciao

Link al commento
Condividi su altri siti

Ciao Adriano.

Scaricata la nuova versione. La grafica ora va bene. Mi usciva fuori dallo schermo il pulsante per levare la variabile ecco perché non ci riuscivo...

Il grosso problema che ho ora è essenzialmente questo:

- io ho s7-300 con CP, quindi inserito il corretto IP, opto per ISOTCP, ignorando il valore DP-MPI address;

- premo Connect;

- lo metto in Reading (cioè il pulsante ha tale scritta visibile);

soltanto che sebbene il socket si connetta al PLC, poi in pratica non succede nulla...

Benché stia osservando un bit che so che sta cambiando non vedo mai diventare verde il bottoncino a destra in alto, né cambiare i due ?? nel valore o 0 o 1 (o false/true) come mi aspetterei succedesse.

Ho provato anche a inserire un indirizzo MPI (anche essendo convinto che non serve)... sia quello della scheda CP che quello della CPU... ma ugualmente non leggo il bit. Ah, per la cronaca si tratta del merker bit di clock M0.5 (quello di 1 sec...)

In linea teorica la connessione TCP sulla porta 102, dovrebbe richiedere l'immissione del numero di rack (default 0) e poi di slot (default 2). Almeno mi pare che con la libnodave fosse così...

Quindi dovresti ricontrollare il codice che gestisce l'ISOTCP.

Non penso sia un problema di polling, dopo il merker 1 sec ho pure provato a leggere un'analogica di temperatura, senza esito. A proposito, ma la tua App ogni quanto legge dal PLC?

Ultima questione: ho provato ad installare la tua app anche su un Samsung GT-S5570 (uno smartphone che non è certo di fascia alta, anzi è una mezza ciofeca, però ha avuto il pregio del prezzo basso...) ed ho ottenuto: Error occurred - An error has occurred in sub: main_vvvvvvvvvv5 (java line: 894) java.lang.NullPointerException - Continue? - Yes/No

Ah ho fatto questa riflessione: tu Adriano hai usato e testato l'app con IBH... dunque ho reinserito l'IP, mi sono connesso con MPIIBH ovviamente la CP mi ha rifiutato la connessione sulla porta che non ha aperta... dopo di che ho modificato la scelta in ISOTCP e ripremendo connetti, si è connesso senza problemi. Immagino che partendo subito con ISOTCP, tu abbia saltato l'assegnazione dell'indirizzo IP (questo a sensazione), assegnazione che invece fa nel caso MPIIBH e poi se la 'ricorda'... Comunque la comunicazione col PLC anche dal cellulare non c'è...

Adriano poi se riesci a farne una app a pago, voglio la percentuale per il beta-testing... scherzo! ;-P

Link al commento
Condividi su altri siti

Già che c'ero per curiosità ho fatto un'altra prova:

- una volta connesso alla CPU (forse almeno come socket);

- ho aperto con step7 le proprietà di comunicazione della CPU;

- non ho trovato connessioni di comunicazione aggiuntive a quelle che ci sono di solito oltre al mio PG in aggiunta.

Si danno due possibilità:

1. s7android si collega come PG, quindi con lo Step7 (che si collega anch'esso come PG) essendoci la possibilità di un solo PG (da esperienza mia, almeno), step7 prevale su s7android;

2. s7android non è collegato (per nulla) alla CPU...

Link al commento
Condividi su altri siti

Ciao LudB.

Per quanto riguarda la connessione con il CP, non ho modo di fare prove.

Se non ricordo male, la CP ha come parametri Rack 0 Slot 3 (o viceversa).

Al momento questi parametri li ho "forzati" da codice, in quanto, in origine era "cucito" sulle mie richieste. (Per una volta sono stato "cliente", quindi potevo richiedere le richieste più assurde!")

Nella prossima versione che contiene varie modifiche anche dal punto di vista grafico, rendo disponibili anche i parametri Rack e Slot.

Il programma al momento è stato testato su:

IM151-8 con connessione ISOTCP diretta.

CPU315-2DP con modulo Hilscher connesso in DP

CPU1212C

Appena ho pronta la versione 0.50 potrai provare con la CP. Penso al massimo un paio di giorni.

Ho introdotto il threading sulle letture in modo da non bloccare la grafica nel caso di anomalie sulla lettura e la visualizzazione mediante grafico dei valori.

Per quanto riguarda l'utilizzo contemporaneo con Step7, non ci sono problemi. Per le verifiche sono connesso online.

Grazie per il supporto.

Modificato: da Adriano71
Link al commento
Condividi su altri siti

io l'ho provato oggi mentre cazzeggiavo in cantiere in attesa di alcune prove da afre sulla macchina.

mi sono collegato con hilsher connesso in dp.

ho scelto MPIIBH. prima cosa il campo dove metti l'indirizzo ip è piccolo almeno per il mio 3,5". l'ip 192.168.1.90 non mi ci sta completo.

mi sono collegato, ho letto delle variabili ma la lettura si congela, non è continua anche se il pulsante mi diceva reading se non sbaglio.

Resto comunque dell'idea che sia un buon prodotto.

Link al commento
Condividi su altri siti

L'ho appena scaricato e lo sto provando con WINAC RTX ma non riesco a connettermi, forse sbaglio qualche impostazione.

Ho connesso un access point al pc dove gira WINAC, poi ho configurato il mio cell con ip statico per connettermi alla rete e fin qui tutto ok, si connette, imposto quindi l'indirizzo della "CPU" virtuale, e anche il rack (rack 0 slot 3) dove sbaglio?

Link al commento
Condividi su altri siti

Ciao Davide83.

Mi spiace ma non posso aiutarti in quanto non ho WinAC.

Se hai avuto modo di testare winac con le libnodave, imposta i parametri Rack e Node come da libnodave.

Io l'ho provato con i seguenti PLC:

S7-315 2DP con modulo Hilsher in DP

S7-1212C tramite ethernet

IM151-8 tramite ethernet

Logo 0BA7

Non saprei aiutarti.

Ciao

Link al commento
Condividi su altri siti

  • 2 weeks later...

Ciao Adriano, ottima app!

Vista la modalità di indirizzamento delle variabili (es. DBxxx.DBWyyy), mi è venuto in mente di provare con un drive.

L'ho testata con un azionamento Sinamics S120 con CU320-2 DP, che ha una porta ethernet davanti (X127) e funziona!!!

Collegando semplicemente un router wireless a questa porta si può accede ai parametri del drive, da telefonino, e senza PLC!!!

Spiego come funziona l'indirizzamento ai parametri Sinamics, magari può essere utile a qualcuno.

Il Sinamics S120 è un drive multiasse e multioggetto, ovvero ogni "oggetto" di cui è composto (Control Unit, alimentatore, i vari drives, encoder esterni, I/O, etc...), ha un DriveId, cioè un numero identificativo.

1 è sempre la Control Unit, 2 per esempio l'alimentatore/raddrizzatore, 3, 4, 5 i drive, etc...

Se si vuole accedere ad un parametro si scrive: DB[numero del parametro].DBD(o DBW a seconda se il parametro è 32 o 16 bit) [1024*DriveId+sottoindice].

Ad esempio, per accedere al parametro in scrittura p640 (corrente massima, è un real, quindi 32 bit) di un asse che ha DriveId 3 devo indirizzare così: DB640.DBD3072.

Altro esempio, se voglio fare il riferimento del secondo encoder assoluto di un drive che ha DriveId 2 (p2507 sottoindice 1, intero a 16 bit): DB2507. DBW2049 (...1024*2+1...).

L'ho testato con Galaxy S II.

Un paio di difetti:

- mi rallenta l'app della tastiera (Swiftkeys o un nome del genere...)

- se il valore di un parametro REAL non è intero, mi visualizza una valanga di cifre decimali. Cioè, se ad esempio, il parametro ha valore 2.0 visualizzo 2, se è 2.1 vedo un 2,0999.... che mi occupa tutto il campo della variabile e si sovrascrive al commento della variabile stessa.

Proverò l'app anche con i Sinamics serie G appena possibile.

Saluti a tutti!

Link al commento
Condividi su altri siti

Ciao Sandro,

ti ringrazio per l'informazione. Non ero a conoscenza di questa modalità per la famiglia Synamics.

Settimana prossima proverò a collegarmi con un sistema Simotion D445-2 con 22 assi per verificare se anche la famiglia Simotion segue le stesse regole.

Nella versione 0.52 di S7Android (penso di renderla disponibile nel week end) ho inserito la possibilità di indicare quante cifre decimali visualizzare.

Inoltre ho inserito nella pagina "Add Variable" un piccolo file di . con indicate le tue informazioni ed un ringraziamento.

Grazie, questo è lo spirito che cercavo quando ho deciso di pubblicare il software.

Saluti Adriano

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...