cobe72 Inserito: 5 aprile 2019 Segnala Share Inserito: 5 aprile 2019 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 Link al commento Condividi su altri siti More sharing options...
batta Inserita: 5 aprile 2019 Segnala Share Inserita: 5 aprile 2019 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. Link al commento Condividi su altri siti More sharing options...
cobe72 Inserita: 8 aprile 2019 Autore Segnala Share Inserita: 8 aprile 2019 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 Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora