Vai al contenuto
PLC Forum


Iw, Qw, Mw...


smoothhands

Messaggi consigliati

Buonasera a tutti...

stavo riguardando alcuni posts sul forum e anche rileggendo alcune

pagine della documentazione, sia di LadderHome che dell'HomePLC.Linux,

e volevo chiedervi alcuni dettagli.

Con le istruzioni per i vari linguaggi con suffisso Mw posso accedere anche ai

registri per gli ingressi e le uscite digitali.

Allora perchè sono state implementate anche le istruzioni con suffisso Iw/Qw?

Forse è legato all'implementazione e le istruzioni con suffisso Iw/Qw sono

più rapide di quelle con suffisso Mw?

I tempi di refresh dei valori dei registri accedibili da "...Iw/...Qw" sono gli stessi di quelli

accedibili da "...Mw"?

Mi pare di ricordare che il tempo di ciclo dell'HomePLC è di 100ms circa... i registri

dell'HomePLC non dovrebbero essere aggiornati tutti alla stessa frequenza?

Grazie.

Link al commento
Condividi su altri siti


del_user_56966
Con le istruzioni per i vari linguaggi con suffisso Mw posso accedere anche ai

registri per gli ingressi e le uscite digitali.

Allora perchè sono state implementate anche le istruzioni con suffisso Iw/Qw?

oltre al fatto che notazioni IW e QW fanno parte dello standard IEC 1131-3 dal Ladder fai una prova

scrivi un registro di uscita tipo il %MW201! vedrai che non succede nulla.. con le MW non li puoi scrivere..

le MW le puoi usare dall'esterno ma non dal programma Ladder...

I tempi di refresh dei valori dei registri accedibili da "...Iw/...Qw" sono gli stessi di quelli

accedibili da "...Mw"?

nel ladder direi proprio di si!

Mi pare di ricordare che il tempo di ciclo dell'HomePLC è di 100ms circa... i registri

dell'HomePLC non dovrebbero essere aggiornati tutti alla stessa frequenza?

non necessariamente HomePLC ha una gestione Smart della memoria, questo significa che ogni singola parte della memoria

può essere soggetta a particolari logiche di controllo... prendi per esempio la zona %MW900 dove i registri sono di tipo Delayed ;)

Link al commento
Condividi su altri siti

Ciao Aleandro,

ti premetto che sto testando le istruzioni da Test web e non da Ladder.

scrivi un registro di uscita tipo il %MW201! vedrai che non succede nulla.. con le MW non li puoi scrivere..

in effetti ho provato solo a leggere un registro... ad esempio %MW4... e ha letto il valore giusto.

Ho un ragnetto 4 ingressi nella posizione slave 1.5 ma ho fatto solo metà delle prove ;)

le MW le puoi usare dall'esterno ma non dal programma Ladder...

Intendi che da Ladder non sarei riuscito nemmeno a leggere la MW4?

Questo perchè altrimenti sarebbe fuori standard?

prendi per esempio la zona %MW900 dove i registri sono di tipo Delayed

Una curiosità ulteriore, per i registri da MW1000 a MW2700 chiamati DTHP per cosa sta

l'acronimo? Spesso ho letto sul forum che chiamano DTHP anche un registro qualsiasi

degli altri... ma allora dove sta la differenza?

Grazie

Link al commento
Condividi su altri siti

del_user_56966
Test web e non da Ladder.

per Test Web intendi da un HomePLC Linux?

Intendi che da Ladder non sarei riuscito nemmeno a leggere la MW4?

Questo perchè altrimenti sarebbe fuori standard?

Leggere non saprei di sicuro dall'esterno non puoi sovrascrivere le aree in consegna al PLC

però se scrivi da Linux il comportamento dovrebbe essere simile al Ladder...

Una curiosità ulteriore, per i registri da MW1000 a MW2700 chiamati DTHP per cosa sta

l'acronimo?

Data HomePLC

Spesso ho letto sul forum che chiamano DTHP anche un registro qualsiasi

degli altri... ma allora dove sta la differenza?

Tutti i registri (7999) dell'HomePLC sono DTHP ma essendo divisi in aree ognuna di queste ha un alias d'uso specifico!

Modificato: da Aleandro2008
Link al commento
Condividi su altri siti

per Test Web intendi da un HomePLC Linux?

Si, scusa, ho fatto un test di lettura accedendo al server web

in avvio sul Linux.

Le lettura a quanto pare le fa.

Dovresti cambiare il tuo alias e mettere Aleandro2008 (REALTIME) :lol:

... in pratica si è sempre certi di una risposta entro un tempo massimo.

Grande Aleandro!!!

Modificato: da smoothhands
Link al commento
Condividi su altri siti

Leggere non saprei di sicuro dall'esterno non puoi sovrascrivere le aree in consegna al PLC

Ho fatto un test di scrittura tramite server web su HomePLC.Linux e

utilizzando un registro Mw sono riuscito ad attivare i relè su

uno slave 4in+4out.

Non so se da Ladder è possibile ma a quanto pare dalle librerie

sviluppate per Linux è possibile usare anche le istruzioni Mw

per accedere alle aree digitali.

Volevo sviscerare il funzionamento dell HomePLC.Linux dalla pressione

di un pulsante (o la variazione di un parametro... tipo la temperatura) alla

lettura di un registro (tipo Iw o Mw).

Suppongo un ragnetto 4 ingressi e un pulsante collegati al master

simulato di un HomePLC.Linux.

Uno slave 4 in e 4 out e In aggiunta un ragnetto con una sonda per

la temperatura.

Cominciamo da qui...

I ragnetti effettuano autonomamente un controllo a polling sui propri ingressi?

Inoltre, visto che alcuni slave (o master) sono programmabili in modo che possano

continuare a lavorare anche in assenza di bus, mi viene da rispondere di si.

A meno che, qualora sia presente il bus, sia l'HomePLC.Linux direttamente che

interroga a polling tutti i dispositivi sul bus che ha rilevato.

Ho visto, aprendo l'HomePLC.Linux (ma mooolto delicatamente), che è presente

un pic sulla board che si occupa della parte domotica.

In pratica dovrebbe anche occuparsi di spedire e ricevere su bus tutte le

informazioni richieste con gli slaves.

Per come l'immagino io, sempre il pic, dovrebbe andare a scrivere in una zona

di memora (quella corrispondente ai registri %Iw e %Mw) tutti i valori

che sono stati rilevati dagli slaves.

E per il momento qui mi fermo.

Modificato: da smoothhands
Link al commento
Condividi su altri siti

del_user_56966
Dovresti cambiare il tuo alias e mettere Aleandro2008 (REALTIME)

RealTime è un alias già in uso :lol:

come ti accennavo sopra lato Linux (e quindi da PHP, Java ecc..) è come essere sul Ladder è normale poter accedere

su quelle aree, mentre se usi le MW tramite LAN ma da ABS XComm la scrittura non lavora....

Chiaramente questo accade solo sull'area fino all'MW400

Link al commento
Condividi su altri siti

del_user_56966
Volevo sviscerare il funzionamento dell HomePLC.Linux dalla pressione

di un pulsante (o la variazione di un parametro... tipo la temperatura) alla

lettura di un registro (tipo Iw o Mw).

non c'è molto da capire, tutto quello che gira sul sistema di I/O HomePLC nel Linux è già pronto in memoria sia in lettura che in scrittura

la differenza tra un qualsiasi embedded Linux e quest'oggetto è questa, in pratica su HomePLC.Linux la parte Domotica è già integrata nel Kernal

nativamente come Software e nella MatherBoard come hardware... quindi non esiste alcuna necessità di fare drive oppure di usare LAN e seriali per

integrare altri componenti se non come estensioni particolari..

Link al commento
Condividi su altri siti

del_user_56966
Cominciamo da qui...

I ragnetti effettuano autonomamente un controllo a polling sui propri ingressi?

questa parte è gestita dal protocollo XComm in automatico e per noi è trasparente, quello che serve sapere è che se un

qualsiasi ingresso viene attivato questo corrisponde a uno specifico bit nella tabella HomePLC in modo equivalente

per il modello Ladder cosi come per quello Linux... in pratica la tabella di I/O è identica per tutti i modelli

Inoltre, visto che alcuni slave (o master) sono programmabili in modo che possano

continuare a lavorare anche in assenza di bus, mi viene da rispondere di si.

si, e oltre a questo HomePLC ha una struttura simile a un DCS in quanto dalla supervisione si accede direttamente

alla configurazione cosi come un DCS può accedere alla configurazione di una valvola in campo!

pensa che questo livello d'iterazione con i normali PLC Industriali non riesci a farlo... :blink:

Ho visto, aprendo l'HomePLC.Linux (ma mooolto delicatamente), che è presente

un pic sulla board che si occupa della parte domotica.

come già anticipato sopra HomePLC Linux non usa LAN o seriali il sistema HomePLC è integrato a bordo macchina

diciamo che Linux è solo metà della mela ;)

Link al commento
Condividi su altri siti

non c'è molto da capire, tutto quello che gira sul sistema di I/O HomePLC nel Linux è già pronto in memoria sia in lettura che in scrittura

é infatti il bello di avere questo dispositivo.

La parte domotica fa tutto il lavoro sporco e io programmaticamente non devo

far altro che accedere a delle zone di memoria.

Si è detto che la parte domotica effettua "generalmente" un ciclo ogni 100ms circa.

Lettura dati dal campo in memoria -----> più cicli programma -----> Scrittura dati sul campo da memoria

Almeno questo è il ciclo che avviene in tutti i PLC e anche HomePLC.

Visto che il programma Ladder viene eseguito più volte nasce l'utilità dei registri delayed.

Cosa succede nell'HomePLC.Linux?

Mettiamoci nel caso mooolto semplificato di un unico ciclo while in cui accedo ai registri

che mi servono da istruzioni di libreria.

Essendo il mio processore da 1GHz molto più veloce del ciclo di 100ms mi aspetto di

poter accedere a una variazione del valore di un registro in maniera molto precisa.

Mi sono accorto che riesco tranquillamente a rilevare sia il fronte di salita della pressione

di un pulsante che il fronte di discesa.

In questo modo cessa un pò l'utilità dei registri delayed in quanto mi posso preoccupare

solamente di generare un evento ogni fronte di salita (pressione pulsante).

Da linguaggio di alto livello in pratica cambia un pò tutta la gestione del dispositivo

domotico.

Tutto il mio interesse nello sviscerare cosa accade nel layer domotico del dispositivo

è dovuto all'eventualità che la pressiore e rilascio di un pulsante sia talmente veloce

da non venir rilevato dall'HomePLC.Linux.

Devo dire che agendo manualmente su un contatto non ho mai perso un colpo.

Ma non sempre magari questo cambio di stato avviene in manuale ma è

causato da un altro dispositivo.

Può capitare che non abbia in memoria traccia di questi cambi di stato repentini

ai quali magari sono interessato? E se si... perchè me li perdo?

Scusate se sono un pò pignolo ma questo device m'intrippa un tot e ho

voglia di capirlo proprio bene.

Grazie.

Link al commento
Condividi su altri siti

del_user_56966
Può capitare che non abbia in memoria traccia di questi cambi di stato repentini

ai quali magari sono interessato? E se si... perchè me li perdo?

in tutti i PLC gli ingressi normali non vanno mai oltre la frequenza del ciclo di programma...

se devi misurare frequenze oppure contare impulsi usa il ragnetto dedicato cosi hai la capacità di leggere

frequenze fino a 5KHz oppure contare in up/down fino a 32 bit... ;)

Link al commento
Condividi su altri siti

usa il ragnetto dedicato

ah già... è vero che c'è anche quello <_<

Ma secondo te Aleandro... è l'HomePLC che

va a prendersi le informazioni sul bus o sono

i vari moduli che gliele consegnano?

Link al commento
Condividi su altri siti

del_user_56966
Ma secondo te Aleandro... è l'HomePLC che

va a prendersi le informazioni sul bus o sono

i vari moduli che gliele consegnano?

difficile da dire il protocollo XComm inizia con la X proprio perché questa sta per "comunicazione indefinita"

per motivi di sicurezza!

adesso che sto analizzando altri protocolli aperti devo dire che capisco chiaramente il perché...

sicurezza = ZERO! :wacko:

se conosci neppure tanto il protocollo puoi bypassare tutto, controllo accessi, sicurezze varie fino a far impazzire l'impianto

per il solo gusto di farlo... tutto ciò tecnicamente è assurdo! :(

Link al commento
Condividi su altri siti

Si ma la mia non era l'intenzione di andare a

bloccare tutto o comunque di mettere in crisi

la comunicazione su bus.

Era semplice curiosità... hai presente quando

i bambini guardano dentro ai giocattoli nuovi?

Purtroppo se non si sta attenti li spaccano...

ma non sarà questo il caso :-)

Grazie e buona serata Aleandro.

Link al commento
Condividi su altri siti

del_user_56966
Era semplice curiosità... hai presente quando

i bambini guardano dentro ai giocattoli nuovi?

Purtroppo se non si sta attenti li spaccano...

ma non sarà questo il caso

quando analizzo un sistema la prima cosa che mi viene in mente è fare una telefonata col cellulare... :blink:

si ma la faccio a 20 Cm dal dispositivo... :roflmao:

se questo non resiste alla telefonata è appunto un giocattolo...

mi ricorda tanto (anni 80) quando ancora le EMI non esistevano e con le radio portatili in stabilimento si attivavano

le soglie d'allarme della catena Blocchi d'emergenza...

Io non voglio distruggere un dispositivo ma neppure doverlo usare con i guanti... se un prodotto è deboluccio meglio vederlo subito che

quando istallato dal cliente, con HomePLC mi è già capitato di tutto, una fase a 400V sul Bus, inversione tra Bus e alimentazione

disturbi fortissimi da Pompe con Inverter, cavi con Bus e alternata assieme... fulmini e saette!!... :P

ora non va fatto sicuramente in modo volontario e neppure

il produttore lo consiglia ma quando succede di queste cose fa piacere se l'elettronica non si guasta!...

e se si guasta almeno capisco i limiti di rottura, che penso sia meglio di tanta teoria...

si diciamolo pure sono per i crash test anche in Domotica... :roflmao:

Link al commento
Condividi su altri siti

  • 8 months later...

Salve a tutti avrei bisogno di un aiutino sul registro dell'orologio hplc... come estrappolo le ore e i minuti dal registro? ho gia provato con Lbyte e Hbyte ma niente... grazie

Link al commento
Condividi su altri siti

come estrappolo le ore e i minuti dal registro? ho gia provato con Lbyte e Hbyte ma niente...

per le ore

[ReadVar = %MW7715]------------------------[HByte]----------------------------------[ASSIGN %MW1000]----[GND]

per i minuti

[ReadVar = %MW7715]------------------------[LByte]----------------------------------[ASSIGN %MW1001]----[GND]

nel registro %MW1000 troverai le ore....

e nel registro %MW1001 i minuti ...

nb: il formato interno è decimale ma l'intepretazione è in BCD

utilizzando il debug alle ore 11:50 nel registro %MW1000 ti troverai quindi sia il valore decimale 17 sia quello esadecimale 11H

il valore da utilizzare nelle comparazioni è sempre quello decimale....

Ricorda che se devi fare delle attivazioni orarie puoi semplicemente utilizzare i programmatori orari (Week Timer)

di cui ogni HomePLC è provvisto e che offrono fino a 24 attivazioni settimanali, programmabili giorno per giorno a blocchi di due canali...

la comparazione col RTC può essere utile se questi programmatori non svolgono precisamente la funzione richiesta...

ma nelle normali applicazioni questo avviene raramente... ;)

Link al commento
Condividi su altri siti

Molto gentile... sto già utilizzando per l'accensione delle luci esterne del giardino di una villa il plc con il sensore luce ma in più mi chiedono che a mezzanotte metà luci vengano spente e metà rimangano accese quindi in serie all'attivazione con il sensore luce devo anche mettere un ingresso che a mezzanotte spenga quelle luci... di conseguenza mi consgli di usare l'orologio o i programmatori?

Link al commento
Condividi su altri siti

Si usa normalmente i programmatori orari, nell'impianto elettrico standard la funzione sui chiama gestione luce 1/2 notte e viene gestita sempre tramite orologi

con programmazione oraria (settimanale o giornaliera) in HomePLC la gestione rimane tendenzialmente identica se non per il fatto che i programmatori orari

poi si possono telecontrollare e che la programmazione è estremamente semplificata sia utilizzando un HMI, un software su PC e/o Web...

sia tramite APP per IPhone/IPad ecc...... :smile:

Modificato: da Aleandro2008
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...