Vai al contenuto

AlessandroRH

Puntatore in BLKMOV su TIA Portal V15

Recommended Posts

AlessandroRH

Ciao a tutti,

Il seguente codice è stato più volte utilizzato in un PLC S7-300 con esito positivo, ma non è valido in un PLC S7-1500.

Il compilatore non accetta la P#DBX0.0 BYTE 20

-----------------------------------------------------------------------------------

...

T     #Address
AUF DB [ #Address]

CALL  BLKMOV
      blk_type:=Variant
      SRCBLK  :=P#DB100.0DBX0.0 BYTE 20
      RET_VAL :=#RetVal
      DSTBLK  :=P#DBX0.0 BYTE 20

-----------------------------------------------------------------------------------

Nel PLC S7-300 il campo DSTBLK puntava automaticamente la DB specificata nel valore "Address". Ora vorrei eseguire la stessa funzione in un S7-1500, ma non capisco dov'è l'errore.

 

Come potrete notare dalle immagini, ove vi è un esempio, il mio intento è quello di copiare un'area di una determinata DB (DB100) all'interno di una seconda DB che però varia in base al valore che ricevo in una word sommato ad un valore fisso.

 

Es. se in DB100.DBW0 ricevo il valore 3, questo andrà a sommarsi a 10 e scriverò il risultato in una variabile temporanea "#Address". 

      Nella variabile "#Address" avrò quindi il valore 13.

      Tramite il comando AUF apro, quindi, la DB103 per poi scriverci al suo interno l'area di memoria specificata in SRCBLK. Ma non ho idea di come scrivere l'istruzione in DSTBLK.

 

Sapreste darmi una soluzione ?? Anche al di fuori del mio esempio.
 

 

Vi ringrazio anticipatamente 😉

 

Immagine.png

Immagine2.png

Immagine3.png

Condividi questa discussione


Link discussione
Condividi su altri siti
ken

così sui due piedi non è corretto nemmeno in s7 per 300. auf apre un db, dopo viene aperto db100 nella sorgente. quale db ho aperto ora? db100 o db contenuto nella variabile #address?

un  modo corretto di usare sfc20 indicizzato lo trovi qui

 

per tai portal?

io mi farei una funzione in scl

 

 

Condividi questa discussione


Link discussione
Condividi su altri siti
amed

Prova ad entrare nelle Proprietà dei DB che usi apri Attrbuti e dosattiva Accesso ottimizzato.. Così facendo attivo l'accesso Standard come in S7-300 e puoi usare gli indirizzi assoluti. Ciao

Condividi questa discussione


Link discussione
Condividi su altri siti
AlessandroRH

vi ringrazio per l'interessamento 👍

 

ho optato nella soluzione SCL, ma ora sono bloccato in un'istruzione che non riesco a scrivere correttamente.

 

premetto che sono riuscito nel mio intento, ma per rendere migliore l'elaborazione della funzione che sto elaborando avrei bisogno di nuovo del vostro aiuto, se possibile.

avrei la necessità di scrivere quanto segue in SCL, ma non ho idea di come scriverlo correttamente:

 

#Number_DB := 100;

#Word_DB := 0;

 

%DB[#Number_DB].DBW[#Word_DB]; //questa funzione non so come farla accettare in SCL

 

qualcuno di voi è in grado di aiutarmi ??

grazie

 

Condividi questa discussione


Link discussione
Condividi su altri siti
batta

Devi usare le istruzioni PEEK e POKE.

Condividi questa discussione


Link discussione
Condividi su altri siti

Registrati o accedi per inserire messaggi

Devi essere un utente registrato per lasciare un messaggio. La registrazione è GRATUITA.

Crea un account

Iscriviti alla nostra comunità. È facile!

Registra un nuovo account

Connettiti

Hai già un account? Connettiti qui

Connettiti adesso

×