Vai al contenuto
PLC Forum


db e address da any input


DesmoGiec

Messaggi consigliati

Ciao!

tia portal per certi versi mi è ancora sconosciuto, spero possiate aiutarmi.

Dunque, con i 300 (e step7 vecchio), in un fc con input any, richiamando l'fc e passando, ad esempio, db80.dbw126, riuscivo ad accedere ad any e a recuperare sia db che indirizzo della variabile passata.

Allego esempio:

      L     P##PrimoDatoDB1 // <--- any
      LAR1  
      L     W [AR1,P#4.0]
      T     #i_DBn[0]
      

      L     B [AR1,P#6.0]
      T     #w_HW1

      L     B [AR1,P#7.0]
      T     #w_HW2

      L     B [AR1,P#8.0]
      T     #w_LW1

      L     B [AR1,P#9.0]
      T     #w_LW2

      L     #w_HW1
      SLD   8
      L     #w_HW2
      SLD   8
      L     #w_LW1
      SLD   8
      L     #w_LW2
      OD    
      L     L#8
      /D    
      T     #i_SrcMove


      CALL  "BLKMOV ANY"
       DB_SOURCE          :=#i_DBn[0]
       ADDRESS_SOURCE     :=#i_SrcMove
       COPY_LENGHT        :=#LunghezzaConfrontoInByte
       DB_DESTINATION     :=#i_DBn[1]
       ADDRESS_DESTINATION:=#i_DestMove
       RET_VAL            :=#rtvl

 

Non ho messo il codice intero, ma tanto basta.

 

In questo modo riesco a dinamicizzare le operazioni passando a suddetto FC una word effettiva, con il proprio commento, anzichè passare degli int che rendono "poco capibile" il codice.

 

Come posso replicare la stessa cosa in tia?

Non posso accedere direttamente ad any come facevo col vecchio step7.

Ho provato a capire come poter usare peek, ma non saprei come dinamicizzare i parametri.

in dbnumber e offset mi richiede dei dint, che però dovrei recuperare in qualche modo dall'any..

 

conoscete qualche metodo simile?

Link al commento
Condividi su altri siti


Mah...così su due piedi direi che usando le strutture (UDT) il codice risulterebbe chiaro. Il tuo esempio col 300 se me lo dovessi trovare davanti, oggi, per farci delle modifiche mi farebbe diventare matto... Forse 20 fa aveva senso...oggi no.

Link al commento
Condividi su altri siti

Su una FC del tia se fai click con il destro e togli la spunta "Accesso ottimizzato" puoi usarle tranquillamente le variabili Any. A me capita su vecchi software convertiti in TIA di usarli

Link al commento
Condividi su altri siti

Dovrei provare ma, se lavori con blocchi non ottimizzati e AWL, dovresti poter fare la stessa cosa.

Hai provato a fare la migrazione da Simatic Manager e S7-300 in TIA e S7-1500 del codice in questione?
Bisogna chiedersi però se non ci sia un modo più efficiente per ottenere lo stesso risultato.

Link al commento
Condividi su altri siti

Inserita: (modificato)
16 ore fa, drn5 ha scritto:

Mah...così su due piedi direi che usando le strutture (UDT) il codice risulterebbe chiaro. Il tuo esempio col 300 se me lo dovessi trovare davanti, oggi, per farci delle modifiche mi farebbe diventare matto... Forse 20 fa aveva senso...oggi no.

Vero, ma quell'fc non fa parte del programma principale, è una semplice fc che richiamo, che non è oggetto di modifiche "logiche".

 

16 ore fa, 84paolo ha scritto:

Su una FC del tia se fai click con il destro e togli la spunta "Accesso ottimizzato" puoi usarle tranquillamente le variabili Any. A me capita su vecchi software convertiti in TIA di usarli

 

16 ore fa, batta ha scritto:

Dovrei provare ma, se lavori con blocchi non ottimizzati e AWL, dovresti poter fare la stessa cosa.

Hai provato a fare la migrazione da Simatic Manager e S7-300 in TIA e S7-1500 del codice in questione?
Bisogna chiedersi però se non ci sia un modo più efficiente per ottenere lo stesso risultato.

 

 

Il blocco non era ottimizzato, avevo già letto di questa cosa, eppure mi dava errore.

Oggi, riaprendo il progetto per fare altri test... magia, funziona tutto.

Eppure avevo fatto pure la compilazione..

Sarà che l'ho fatta non chiudendo l'fc?

Scusate, alla fine funziona tutto per come l'avevo impostato, quindi accedendo ad any come solito.

 

Grazie comunque a tutti :)

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