Vai al contenuto
PLC Forum


Leggere valore attuale PAW con puntatore


GianLucaArrighiSalvade

Messaggi consigliati

GianLucaArrighiSalvade

Buongiorno a tutti; 

Vorrei sapere se qualcuno conosce un "work arround" per fare una diagnostica di una uscita analogica tramite puntatore.

Mi spiego meglio; io, tramite una variabile impostabile dall' HMI, vorrei selezionare un indirizzo di PAW e mostrarne lo stato attuale, poi, con una successiva abilitazione vorrei interrompere OB1 e forzare il valore a quanto impostato con una seconda variabile.

 

La scrittura del valore alla PAW funziona, mentre non mi è possibile leggerne il valore visto che non è prevista l' istruzione L PAW...

Questo è il mio codice:

 

// Controllo con un puntatore la word associata alla PAW selezionata
      L     27648
      T     PAW  256

      L     #wTP_BaseAddDiagPAW
      SLD   3
      LAR1  
      L     PAW [AR1,P#0.0]
      T     #wTP_DiagPAW

 

// Eseguo la forzatura richiesta e aggiorno la segnalazione

      U     M     60.0
      U     #bTP_StopProgramTestOut
      SPBN  ExFA

      L     #wTP_BaseAddDiagPAW
      SLD   3
      LAR1  
      L     #wTP_DiagPAW
      T     PAW [AR1,P#0.0]

      SET   
      =     #bTP_OutputIsForced

ExFA: NOP   0
 

Qualche idea so come potrei arrivare ad avere anche la funzione di lettura del valore attuale?

 

Link al commento
Condividi su altri siti


Dunque, se ho ben capito, vorresti scrivere un valore in una uscita analogica e, successivamente, leggere il valore di questa uscita analogica.
Non lo puoi fare, per un semplice motivo: l'uscita analogica è una uscita, non è un ingresso.
Ma, scusa, che senso ha questa prova? Se scrivi un valore in una PAW, hai scritto un valore in una PAW. Fine della storia. Nel caso di guasto del modulo la PAW assume comunque il valore che tu hai scritto. Casomai, non trovi il corretto segnale analogico in uscita, ma questo lo puoi verificare solo con uno strumento di misura, non certo interrogando la PAW, che non potrebbe contenere altro che il valore che le è stato assegnato.

 

Link al commento
Condividi su altri siti

GianLucaArrighiSalvade

Ciao e grazie della risposta;

diciamo più che altro che questo vorrebbe essere un programma da utilizzare per verificare in tempo reale lo stato di ogni ingresso e uscita presente nel rack del PLC.

 

Con questo FB vorrei leggere il valore attribuito ad una qualsiasi PAW in altri parti di programma e mostrarlo all'operatore in una pagina indipendente.

 

Con lo stesso scopo ho realizzato anche altri puntatori (ingessi, uscite e PEW), il caso più simile per farti capire cosa vorrei fare è quello delle delle uscite digitali:

 

  1. In una variabile scrivo l'indirizzo del byte uscite che voglio controllare
  2. il puntatore legge il byte selezionato che poi provvedo a scomporre nei singoli bit rappresentanti le uscite e mostro sull'HMI

Senza che la funzione test sia attiva posso solo visualizzare lo stato che altre parti di programma stanno comandando,mentre attivandola succede che salto il ciclo di OB1 ed eseguo solo l' FB di diagnostica, se il bit associato alla corrispondente uscita va a 1 provvedo a settarla indipendentemente dallo stato del programma che normalmente dovrebbe comandare quel uscita.

 

Per quanto riguarda le PAW riesco a fare una forzatura del valore di uscita ma non a leggerne il valore comandato da altre parti di programma; ecco perchè mi chiedevo se qualcuno ha idee per come leggere una PAW...

 

Trovo che questa funzione sia parecchio utile; in primis mi da uno strumento diagnostico sempre valido indipendentemente dalla configurazione del PLC (basta selezionare l'indirizzo corretto), poi, avendo un unica pagina, è più semplice spiegare al tecnico cosa deve guardare per fare verifiche o manutenzioni...

 

Link al commento
Condividi su altri siti

GianLucaArrighiSalvade

La parte in cui scrivevo  

 

    L     27648
    T     PAW  256

 

è rimasta nel copia incolla ma aveva solo fini di test...

In realtà il comando delle PAW viene fatto in tutti gli altri FB che compongono il mio programma e volendo ragionare in maniera indipendente non conosco quale valore vi viene passato...

 

Link al commento
Condividi su altri siti

41 minuti fa, GianLucaArrighiSalvade ha scritto:

In realtà il comando delle PAW viene fatto in tutti gli altri FB che compongono il mio programma e volendo ragionare in maniera indipendente non conosco quale valore vi viene passato...

Se ho capito, tu scrivi nella PAW in più punti del programma, e vorresti sapere quale valore ha attualmente la PAW.
Se è così, ti basta scrivere su una variabile di appoggio anziché direttamente nella PAW, e scrivere nella PAW in un solo punto del programma.
Personalmente, considero questa soluzione più pulita e, per conoscere il valore attuale della PAW, ti basta leggere il valore della variabile di appoggio.

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