Vai al contenuto
PLC Forum


Funzione parametrica, puntatori a struttura UDT


TravelMen

Messaggi consigliati

Buongiorno a tutti

e da un bel po che non mi faccio sentire, oggi ho bisogno del vostro aiuto, vorrei rendere una funzione creata da me il più "automatica" possibile.

Mi spiego ho creato una funzione che ricerca il valore massimo, in una struttura dati chiamata "utensile" composta da una stringa ed n "Profili" che a sua volta è una struttura composta da 10 dati (una stringa e 9 valori real), 

Il tutto visibile nel file allegato.

 

Ma arriviamo alla domanda mi piacerebbe che la funzioni calcolasse in automatico alcuni dati, come quanti byte occupa il nome della prima struttura "Utensile" e quanti byte è composta la struttura "Profilo", come si può vedere dal file la funzione già calcola il numero di profili presenti nella struttura "utensile".

 

Chiede pure se volte avere maggiori informazioni.

 

 Ricerca valore massimo

Link al commento
Condividi su altri siti


ifachsoftware

Non vedo perchè incasinarsi con l'AWL , io risolverei il tutto con 9 righe di codice in SCL (Che è fornito col Tia Portal anche per S7300) in questo modo  : 

 

TYPE "UDT_PROFILO"
VERSION : 0.1
   STRUCT
      Nome : String;
      Altezza : Real;
      DiametroLavoro : Real;
   END_STRUCT;

END_TYPE

 

TYPE "UDT_UTENSILE"
VERSION : 0.1
   STRUCT
      AryProfili : Array[0..10] of "UDT_PROFILO";
   END_STRUCT;

END_TYPE

 

 

FUNCTION "ComputeMaxDiameter" : Real
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_INPUT 
      UsedData : Int;
   END_VAR

   VAR_IN_OUT 
      Data : Array[0..10] of "UDT_PROFILO";
   END_VAR

   VAR_TEMP 
      MaxDiam : Real;
      i : Int;
   END_VAR


BEGIN
    #MaxDiam := #Data[0].DiametroLavoro;
    
    FOR #i := 0 TO #UsedData DO
        IF #Data[#i].DiametroLavoro > #MaxDiam THEN
            #MaxDiam := #Data[#i].DiametroLavoro;
        END_IF;
    END_FOR;
    
    #ComputeMaxDiameter := #MaxDiam;
END_FUNCTION

Link al commento
Condividi su altri siti

Ciao ifachsoftware

Grazie per il suggerimento, ma il cliente vuole awl.

in più la tua funzione prevede che sia tu a fornire il numero di profili, la mia lo calcola in automatico, per modificare il software mi basta modificare UDT utensile e ri-compilare.

 

Saluti

 

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