smoothhands Inserita: 19 maggio 2014 Segnala Inserita: 19 maggio 2014 (modificato) Si ma ilgio non voleva usare un pc sempre acceso e tra l'altro mi pare di ricordare che non gli piaceva il ragionamento windows sebbene per embedded. Poi ovviamente il discorso dell'embedded e del suo acquisto. Tutto sommato anche ci fosse una latenza di 2 o 3 secondi nel fare il refresh da parte del RPi non vedo tutti questi problemi. Quando devi attuare esegui il comando e questo è in tempo reale. Ogni tot tempo hai anche la situazione generale dei registri. Dopo tutto i registri estesi non sono realtime e quindi un pò di tolleranza dovresti averla. Modificato: 19 maggio 2014 da smoothhands
ilgio80 Inserita: 22 maggio 2014 Autore Segnala Inserita: 22 maggio 2014 (modificato) sto studiando di python Modificato: 22 maggio 2014 da ilgio80
forzalaquila Inserita: 23 maggio 2014 Segnala Inserita: 23 maggio 2014 Mi permetto di intromettermi e mi piacerebbe inoltre una vostra critica di ogni tipo... Non ho voluto usare un database nella raspa per mantenerla il piu' leggera possibile visto che la uso anche per altre cose...piu' pregiate... Con un database sarebbe piu' semplice Poi si possono usare anche i semafori ....mi ha detto un mio amico programmatore...ma io che non li conosco e mi ero intestardito a farlo da solo non li ho usati e ho ragionato cosi: ogni due secondi uno script java dentro un frame web mi scatena il python che legge tutti i registri che devo leggere e che mi aggiorneranno il video....potrei farlo girare anche ogni secondo ma il concetto e' lo stesso.. Il traffico dati e il tempo di trasmissione per leggere una decina di registri nel mio caso e' sotto i 200msec L'esecuzione di questo script e' legato all'esistenza o meno di un file di testo in una directory della raspa che viene generato da quello che descrivo adesso Se devo comandare una luce o quel che voglio faro' un bottone html su un altro frame che mi scatenera' un altro python che genera il famoso file di testo(cosi l'altro python che legge non gira e il bus non va in conflitto...)e successivamente scrive il registro che deve scrivere sul PLC e infine cancella il file di testo...cosi' che il python che legge possa ripartire... I due(ma possono essere anche di piu') frameset sono inseriti all'interno di una unica pagina web(i puristi dell'html5 diranno che non si devon o usare piu' i frameset ...ma io conosco quelli e quindi finche' funzionano li uso.. )cosi' da avere tutto sotto controllo Chiaro...?...Comunque funziona,ed anche abbastanza bene.Il bus e' stressato pochissimo e per ora la raspa non si e' mai bloccata... Adesso scatenate le vostre critiche vi prego
ilgio80 Inserita: 23 maggio 2014 Autore Segnala Inserita: 23 maggio 2014 ciao forzalacquila.. io ho studiato e sto studiando parecchio la situazione.. la tua soluzione è funzionale ma un po' contorta.. ed i puristi della programmazione stornato il naso soprattutto per la gestione con html+frameset+php+python con amici programmatori sono arrivato alla soluzione più corretta creare un demone in python-flask-twisted che mi scriva e mi legga.. e scrive su un db lite quando avrò terminato.. non ti preoccupare che ti avviso sicuramente di quello che ho fatto
forzalaquila Inserita: 23 maggio 2014 Segnala Inserita: 23 maggio 2014 direi che hai ragione,funziona ma non e' molto elegante pero' non so fare di meglio....attendo news ciao
del_user_56966 Inserita: 23 maggio 2014 Segnala Inserita: 23 maggio 2014 Comunque funziona,ed anche abbastanza bene.Il bus e' stressato pochissimo e per ora la raspa non si e' mai bloccata... certo che ne avete di tempo per divertirvi.... non ti preoccupare di stressare il Bus... non penso proprio che le COM del Rasp per quanto valide saranno mai in grado di stressare quelle dell'HomePLC....
forzalaquila Inserita: 23 maggio 2014 Segnala Inserita: 23 maggio 2014 ma infatti il punto debole e' la raspa....costa 30 euro e su un unico bus ci sta ethernet,seriali,gpio e chissa' cos'altro....non puoi pretendere troppo e il fatto che non si inchiodi con continue chiamate al bus mentre fa da web server e....altro....e' gia' fonte di soddisfazioni!!!! Pero' per 3 watt di consumo ci accontentiamo..... ciao
smoothhands Inserita: 23 maggio 2014 Segnala Inserita: 23 maggio 2014 (modificato) @forzalaquila quello che hai fatto non è ne più ne meno che guarda un pò... un semaforo. Il semaforo non è altro che un metodo, in informatica, per sincronizzare l'accesso, da parte di più "processi", ad una risorsa condivisa. Nel nostro caso la risorsa condivisa sono i registi hplc. Poi si può fare filosofia sui dettagli ma a modo tuo ci hai preso in pieno. Nel tuo caso l'artefatto che hai usato per sincronizzare i due processi python è la presenza o meno di un file in una directory. Io non conosco python ma un concetto rimane valido qualunque linguaggio si usi. Modificato: 23 maggio 2014 da smoothhands
forzalaquila Inserita: 23 maggio 2014 Segnala Inserita: 23 maggio 2014 pensa un po'!!! e i miei amici a dirmi che dovevo usare i semafori e io che li usavo senza saperlo.... in effetti il concetto torna solo che pensavo...e mi avevano fatto credere...che era un qualcosa legato al linguaggio di programmazione....qualcosa di sofisticato e da cui sono stato alla larga..... io poi programmo plc figurati che ne so' di python.... grazie mille
smoothhands Inserita: 24 maggio 2014 Segnala Inserita: 24 maggio 2014 Se vuoi fare il figo digli che hai usato un mutex (mutual exclusion).
smoothhands Inserita: 24 maggio 2014 Segnala Inserita: 24 maggio 2014 Tenete presente che se intendete utilizzare un db (ma potrebbe anche essere un file di testo su filesystem) il problema della consistenza dello stato rimane. Mi spiego meglio con un esempio... Un processo python esegue alternativamente ogni secondo l'aggiornamento di una tabella in un db contenente la copia remota di una serie di registri dell'homeplc e la scrittura di tale tabella verso i registri. Questa copia e riscrittura non è, ne più ne meno, lo stesso procedimento che avviene tra i moduli distribuiti del sisstema domotico e gli 8k registri di memoria dell'homeplc ma con un procedimento di alto livello e molto più lento. Direttamente in javascript accedo a tale tabella del db per aggiornare lo stato delle mie pagine web e alternativamente per effettuare delle attuazioni, indirettamente, modificando i valori di alcuni campi della tabella. Quello che può accadere è che mentre schiaccio il pulsante sul browser del mio smartphone il processo python sta eseguendo il ciclo di scrittura della tabella col rischio di vanificare il mio tentativo di comando. Purtroppo anche in questo caso due processi indipendenti tentano di accedere alla stessa risorsa (la tabella) che va protetta in modo che solo un processo alla volta ne abbia accesso esclusivo.
del_user_56966 Inserita: 24 maggio 2014 Segnala Inserita: 24 maggio 2014 Quello che può accadere è che mentre schiaccio il pulsante sul browser del mio smartphoneil processo python sta eseguendo il ciclo di scrittura della tabella col rischio di vanificare ilmio tentativo di comando. secondo me dipende da come strutturi il programma e dal linguaggio scelto per farlo...
smoothhands Inserita: 24 maggio 2014 Segnala Inserita: 24 maggio 2014 Quello che spesso accade, e del quale ho avuto la prova nel tempo, è che per risolvere un problema si creano accrocchi sopra accrocchi che non fanno altro che spostare il problema senza risolverlo affatto. Non ho la presunzione di dare la soluzione ma semplicemente uno spunto per riflettere su alcuni meccanismi.
forzalaquila Inserita: 24 maggio 2014 Segnala Inserita: 24 maggio 2014 Sono parzialmente d'accordo. A volte il problema non si può risolvere... E devi solo essere capace di spostarlo dove da meno problemi possibili. E capita spesso.... Ciao
ilgio80 Inserita: 11 giugno 2014 Autore Segnala Inserita: 11 giugno 2014 sono quasi arrivato al dunque ho fatto un bel demone in python-flask che mi scrive e mi legge solo alla richiesta di qualche pagina aperta poi ho fatto le pagine web con jquery e json e devo dire che non ho nessun refresh e pochissimo ritardo del semaforo, quasi istantaneo non c'è paragone con le pagine di prima con ABS ed i comandi ad eventi di XCOMM in piu il bus non è carico per niente.. azni quasi zero ora devo capire come fare una paginetta per il termoregolatore.. come si può fare? in quali registri ci sono tutte le info del termoregolatore?
del_user_56966 Inserita: 11 giugno 2014 Segnala Inserita: 11 giugno 2014 poi ho fatto le pagine web con jquery e json e devo dire che non ho nessun refresh e pochissimo ritardo del semaforo, quasi istantaneo come si può fare? in quali registri ci sono tutte le info del termoregolatore? se vedi nell'_Help di LadderHome alla descrizione del termoregolatore trovi le tabelle descrittive..... qualche immagine della tua Web app ce la fai vedere...?
ilgio80 Inserita: 11 giugno 2014 Autore Segnala Inserita: 11 giugno 2014 mmm diciamo che per ora ho solo fatto il codice per interfacciarmi tra le varie tecnologie..comunque operativa è una pagina per iphone per comandare il tutto.. le tabelle descrittive dell . del ladder non capisco nulla.. esempio se il termoregolatore è 30 che registri devo interrogare per sapere la temperatura, il setpoint, estate/inverno ecc...
del_user_56966 Inserita: 11 giugno 2014 Segnala Inserita: 11 giugno 2014 esempio se il termoregolatore è 30 che registri devo interrogare per sapere la temperatura, il setpoint, estate/inverno ecc... se il regolatore è il 30 sulla zona Master 1 vai sulla pagina delle risorse e vedi che all'indirizzo 30 trovi.... in ingresso i registri.. %MW11 %MW5503 %MW5504 %MW5505 mentre per le uscite (i comandi che vuoi inviare al termo..) %MW211 %MW5723 %MW5724 %MW5725 per capire cosa fanno i singoli bit e byte dei registri di I/O... devi andare nelle spiegazioni del tipo di dispositivo che hai su quell'indirizzo.. nel tuo caso se hai un termoregolatore, nelle tabelle che trovi alla sua spiegazione avrai per esempio che nel registro %MW11 si legge la temperatura in 16 di grado... mentre nel registro %MW5503 (Byte alto) si legge l'umidità... e cosi via... ho fatto un bel demone in python-flask che mi scrive e mi legge solo alla richiesta di qualche pagina aperta il demone lo stai facendo girare su HomePLC Linux...?
ilgio80 Inserita: 11 giugno 2014 Autore Segnala Inserita: 11 giugno 2014 ok ma nel registro %MW11 leggo la temperatura in sedicesimi. cioè tutto il registro per la temperatura? e poi cosa vuol dire byte alto? ma per l'estate/inverno non basta un bit? no tutto con raspberry
del_user_56966 Inserita: 11 giugno 2014 Segnala Inserita: 11 giugno 2014 ok ma nel registro %MW11 leggo la temperatura in sedicesimi. cioè tutto il registro per la temperatura? si, tutto il registro... e poi cosa vuol dire byte alto? un registro o word a 16 bit è composto da due byte a 8 bit... il byte alto e il byte basso... in HomePLC ogni byte (o bit) può svolgere funzioni diverse... ma per l'estate/inverno non basta un bit? si dato che è un valore digitale basta un bit... no tutto con raspberry e col HomePLC come ci comunichi?
ilgio80 Inserita: 12 giugno 2014 Autore Segnala Inserita: 12 giugno 2014 comunico con il convertitore USB
del_user_56966 Inserita: 12 giugno 2014 Segnala Inserita: 12 giugno 2014 comunico con il convertitore USB intendevo se hai installato lo strato Modbus RTU....
del_user_56966 Inserita: 12 giugno 2014 Segnala Inserita: 12 giugno 2014 e da Python ci accedi nativamente?
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora