Vai al contenuto
PLC Forum


Eventi Da Passare Esterno


ilgio80

Messaggi consigliati

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: da smoothhands
Link al commento
Condividi su altri siti


  • Risposte 80
  • Created
  • Ultima risposta

Top Posters In This Topic

  • ilgio80

    36

  • del_user_56966

    29

  • smoothhands

    10

  • forzalaquila

    6

Top Posters In This Topic

Posted Images

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 :thumbdown: ....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.. :toobad: )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 :superlol::superlol::superlol::superlol::superlol:

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

del_user_56966
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.... :lol:

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

Link al commento
Condividi su altri siti

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!!!! :superlol::superlol::superlol::superlol::superlol::superlol::superlol::thumb_yello:

Pero' per 3 watt di consumo ci accontentiamo.....

ciao

Link al commento
Condividi su altri siti

@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: da smoothhands
Link al commento
Condividi su altri siti

pensa un po'!!!

e i miei amici a dirmi che dovevo usare i semafori e io che li usavo senza saperlo.... :superlol::superlol::superlol::superlol::superlol:

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

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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

secondo me dipende da come strutturi il programma e dal linguaggio scelto per farlo...

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

  • 3 weeks later...

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?

Link al commento
Condividi su altri siti

del_user_56966
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

:clap::thumb_yello:

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...? :smile:

Link al commento
Condividi su altri siti

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

post-171255-0-76603300-1402519496_thumb.

Link al commento
Condividi su altri siti

del_user_56966

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

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

del_user_56966

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?

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