Jump to content
PLC Forum


Sign in to follow this  
cobe72

Call FC e AUF (apertura DB)

Recommended Posts

cobe72

Buongiorno,

Dopo una conversione da S5 a S7 ho trovato un segmento con il seguente richiamo ad un FC.

 

CALL  "FC215"
       _DB :="DB_LOP_REG_Z2"                            //DB100
       GMIN:=DBW34
       SPIM:=DBW50
       PV  :=DBW2
       SPWK:=DBW4

 

Stando a come deve lavorare il sw i DBW di igresso (DBW34, DBW50 e DBW2) e i DBW di Uscita (DBW4) fanno parte del DB100.

Il DB100 è però aperto alla prima riga all'interno dell'FC125

Premetto che prima di questa call ho una AUF di apertura del DB80 che non ha nulla a che vedere con il DB100.

Ora, simulando con S7, mi trovo che i DBW34, 50, 2 e 4 hanno valori che derivano dal DB80 (in quanto risulta l'ultimo db aperto) cosa che però non è corretta per la logica del sw.

Probabilmente in S5 l'interpretazione del compilatore era differente e legava questi DBW al DB100.

 

Io per risolvere il problema aggiungerò semplicemente un AUF db100 prima della CALL.

 

A qualcuno risulta questa differenza di comportamento tra S5 e S7?

 

Grazie

Saluti

 

Share this post


Link to post
Share on other sites

batta

Non ti so dire se in S5 si comporta diversamente, ma è corretto il comportamento che riscontri in S7.
Le variabili DBW34, DBW50, DBW2 e DBW4 vengono passate come parametri alla funzione e, in questo momento, la funzione non è ancora stata elaborata e quindi non è ancora stata letta l'istruzione AUF DB100 all'interno della funzione stessa. Corretto quindi che siano riferite a DB80.
Poi, visto che ora sei su un S7, piuttosto che aprire semplicemente il DB100 prima del richiamo della funzione, potresti sostituire a DBW34 (e successive variabili) DB100.DBW34.
Questo però ha senso solo se, con un po' di attenzione, farai la stessa modifica su tutte le variabili del progetto.
Se si tratta di un programma che non dovrai modificare, non ti serve. Se invece dovrai metterci le mani, avere la possibilità di avere i riferimenti incrociati delle variabili è un bel vantaggio.

 

Questo modo di gestire le variabili, che rende praticamente impossibile capire dove sono usate, è uno dei motivi che mi hanno sempre fatto odiare l'S5.

Share this post


Link to post
Share on other sites
cobe72

Grazie per la risposta...

Comunque mi resta ancora il dubbio di come facesse il vecchio sw in s5 a funzionare (a dire il vero sta ancora funzionando dato che la conversione non l'ho ancora terminata).

Sia in S5 che nella conversione S7 la sequenza è la seguente:

 

Segmento 1:

      CALL  "FB215"
       _DB :="DB_LOP_REG_Z1"        //DB100
       GMIN:=DBW34
       SPIM:=DBW50
       PV  :=DBW2
       SPWK:=DBW4

 

Segmento 2:

      CALL  "FB215"
       _DB :="DB_LOP_REG_Z2"            //DB107
       GMIN:=DBW34
       SPIM:=DBW50
       PV  :=DBW2
       SPWK:=DBW4

 

Segmento 3:

   CALL  "FB215"
       _DB :="DB_LOP_REG_Z3"          //DB114
       GMIN:=DBW34
       SPIM:=DBW50
       PV  :=DBW2
       SPWK:=DBW4

 

Stesso discorso vale per DB107 e DB114...

 

A questo punto credo proprio che l'S5 lavori in maniera differente

 

Grazie

Saluti

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