Jump to content
PLC Forum


Sign in to follow this  
cobe72

Conversione OB182 da S5 a S7

Recommended Posts

cobe72

Buongiorno,

Ho convertito un sw da step5 a step7 e mi trovo un errore legato al fatto che l'OB182 in step 7 no esiste più.

Il blocco deve leggere da un DB il cui indirizzo si trova nella parte alta della word di ingresso #FRDW e iniziando dalla W indicata nella parte bassa di #FRDW per una quantità di word dato all'ingresso #N_DW,

da copiare poi in un DB il cui indirizzo si trova nella parte alta della word di ingresso #TODW e iniziando dalla W indicata nella parte bassa di #TODW.

L'OB182 dovrò sostituirlo credo con SFC20...

 

Mi aiutate ad adattare il codice per ottenere la stessa funzionalità?

 

Grazie...

 

      L     W#16#0                      // Azzera variabili
      T     MD   110
      T     MD   114
      T     MW   118
//;
      L     1
      T     MB   110                    // trasferimento tra "DB"
      T     MB   114
//;
      L     #FRDW
      T     MB   113                    // prima DW sorgente
      SRW   8
      T     MB   111                    // DB sorgente
//;
      L     #TODW
      T     MB   117                    // prima DW destinazione
      SRW   8
      T     MB   115                    // DB destinazione
//;
      L     #N_DW
      T     MW   118                    // n-DW da trasferire
      L     0
      <=I   
      BEB   
//;
      L     B#(3, 0)                    // indica che i dati sono in
      L     110                         // SW10 a SW20
//      CALL OB 182;             // trasferisce i dati
// *** Errore alla riga     435  (FB  60):  Il blocco non esiste. ***
//;
// Errori
 

Share this post


Link to post
Share on other sites

mrsk1000

La funzione è l'SFC20 ed il funzionamento è abbastanza semplice.

Richiami SFC20 nel punto del programma dove vuoi eseguire la funzione, in "SRCBLK" scrivi in formato puntatore l'indirizzo e la lunghezza dei dati da trasferire, in "DSTBLK" scrivi in formato puntatore l'indirizzo e la lunghezza della destinazione. "RET_VAL" restituisce un valore in esadecimale che corrisponde allo stato di funzionamento della funzione (codice errore o eseguita con successo)

 

Ti riporto un esempio che: legge 10 byte da DB1.DBX0.0 e li trasferisce nella DB2 dal byte 10.0

 

      CALL  "SFC20"   //RICHIAMO DEL SFC20
       SRCBLK :=P#DB1.DBX0.0 BYTE 10   //AREA DI ORIGINE DEI DATI: DB1, DALL'INDIRIZZO DBX0.0 PER 10 BYTE
       RET_VAL:=MW0  
       DSTBLK :=P#DB2.DBX 10.0 BYTE 10   //AREA DI DESTINAZIONE DEI DATI: DB2, DALL'INDIRIZZO DBX10.0 PER 10 BYTE

 

I possibili valori in uscita da ret_val sono riportati nella guida Siemens, per visualizzarli è sufficiente che da step7 ti posizioni sul punto in cui richiami sfc20 e premi F1 da tastiera.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...