Colonial54 Inserito: 30 gennaio 2015 Segnala Inserito: 30 gennaio 2015 Salve a tutti Sto (re)imparando SCL ed avrei una domanda: Il codice sottoriportato, solo un blocco di esempio, mi da un errore, ma non riesco a capire di cosa si tratta; ho letto i manuali, lo faccio di sera in hotel, ma non ci salto fuori; sapreste aiutarmi a capire che cosa c'e' di sbagliato? Nella DB32, DBW2 e DBW4 sono dichiarati come INT. FUNCTION FC32 : VOID VAR_TEMP Flag : BOOL; END_VAR VAR Cnt : INT; END_VAR BEGIN IF %M1.0 THEN %DB32.DBW2 := %DB32.DBW2 + %DB32.DBW4; // Riga con errore: Tipo di operando non ammesso ELSE %DB32.DBW2 := 0; END_IF; END_FUNCTION Un grazie a tutti
sesaspa Inserita: 30 gennaio 2015 Segnala Inserita: 30 gennaio 2015 io lo farei così FUNCTION "Blocco_1" : Void { S7_Optimized_Access := 'FALSE' } VERSION : 0.1 VAR_INPUT trig : Bool; END_VAR VAR_IN_OUT var2 : Int; var1 : Int; END_VAR BEGIN IF #trig THEN #var1 := #var1 + #var2; // Riga con errore: Tipo di operando non ammesso ELSE #var1 := 0; END_IF; END_FUNCTION poi andrai ad assegnare a trig m1.0 var1 db32.dbw2 var2 db32.dbw4
walterword Inserita: 19 marzo 2015 Segnala Inserita: 19 marzo 2015 (modificato) per fare quello che dici sopra devi usare il simbolico , dai un nome al DB e un nome al dato e vedrai che funziona .E poi cerca di essere piu corretto e sintatticamente preciso con gli if IF condizione THEN assegnazione ; ELSE altro ; END_IF ; Non serve passare per le variabili locali richiedendo in ingresso il dato desiderato SCL non accetta che l'operatore somma "+" agisca su variabili assolute , le prende come word e non come interi Il concetto e' che SCL va inteso come un linguaggio tipo pc , non devi dare indirizzi assoluti Io ho sempre usato variabili con simbolico al DB e ai suoi dati interni e non ho mai avuto problemi "DB_Dati".dato1 := "DB_Dati".dato2 + "DB_Dati".dato3; Modificato: 19 marzo 2015 da walterword
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