leotn Inserito: 11 gennaio 2016 Segnala Inserito: 11 gennaio 2016 Buongiorno a tutti, in step7 sugli s7 300 usavo una "FB50" che mi serviva per creare una curva di linearizzazione con 10 punti "x" e 10 punti "y" impostabili, quindi in base al PV "x" che gli davo in ingresso mi restituiva in uscita il rispettivo valore calcolato, oggi mi serviva questa funzione su Tia Portal su un 1200 ma non sono mica riuscito a trovarla da nessuna parte.., ho controllato nelle librerie ma non si trova niente di simile.. la NORM x e la SCALE X sono solo impostabili a 2 punti (min e max) e non a piu punti.. voi ne conoscete una che posso usare??? grazie
leotn Inserita: 14 gennaio 2016 Autore Segnala Inserita: 14 gennaio 2016 ho trovato la funzione "TableChar" che però fa parte della libreria "Tia portal converting library" che è gratis ma non si puo scaricare dal sito siemens e deve essere richiesta ad un distributore che ovviamente non sa nemmeno che esista non essendoci uno codice articolo.... qualcuno ha questa liìbreria??
walterword Inserita: 15 gennaio 2016 Segnala Inserita: 15 gennaio 2016 (modificato) cerca su wikypedia l'interpolazione lineare di Newton e scriviti la funzione che ti serve.Se i nodi non sono molto distanti tra di loro ottieni una spezzata ,cioe un insieme di segmenti che partono dal nodo attuale a quello seguente oppure a quello precedente Modificato: 15 gennaio 2016 da walterword
leotn Inserita: 19 gennaio 2016 Autore Segnala Inserita: 19 gennaio 2016 mi sono fatto mandare la libreria cui sopra dal distributore locale siemens ed ho utilizzato la tablechar..
acquaman Inserita: 19 gennaio 2016 Segnala Inserita: 19 gennaio 2016 Visto che è gratuita, la condividi?
acquaman Inserita: 20 gennaio 2016 Segnala Inserita: 20 gennaio 2016 La funzione FB50 per il 300 di cui parli, è nella libreria dello step7, non la trovo.
leotn Inserita: 25 gennaio 2016 Autore Segnala Inserita: 25 gennaio 2016 ciao, è gratuita ma deve essere richiesta al proprio distributore.. se gli admin mi danno il consenso posso anche metterla su un sito di file sharing e postare qua il link.. comunque la FB50 di Step 7 dovrebbe essere siemens, nelle note della FB leggo: "generiert vom SCL Übersetzer Version: SCL V5.1 + SP1 (C5.1.6.11)" forse devi scaricarla dal sito siemens..
walterword Inserita: 25 gennaio 2016 Segnala Inserita: 25 gennaio 2016 è scritta in SCL ed è distribuita in awl
dan64100 Inserita: 26 gennaio 2016 Segnala Inserita: 26 gennaio 2016 Se può essere utile, questa è una FB che ho scritto velocemente per la regressione lineare. E' scritta in SCL per S7300. Lavora con un numero arbitrario di campioni X Y (minimo 2). Command=0 Cancella il buffer interno Command=1 Aggiunge il campione (X e Y) Command=2 Calcola i coefficienti della retta e la correlazione : dove Slope=m e Inter=n in una retta Y=mX+n. Per chi non conosce l'antefatto, questo metodo serve per determinare la "migliore" retta passante per una popolazione di punti (XY) non allineati. La correlazione CORRXY ci dice quanto i punti sono allineati e può essere usata per capire se la nostra calibrazione "ha un senso", varia da 0.0 a 1.0 (=1.0 quando i punti sono perfettamente allineati). Quanti più campioni vengono inseriti tanto migliore sarà la retta. Evitare sempre di inserire i campioni al limite della scala dove la precisione è minore e preferire l'intervallo reale di lavoro. FUNCTION_BLOCK FB1000 VAR_INPUT X : REAL:=0.0; // X Sample Y : REAL:=0.0; // Y Sample COMMAND: INT :=0; // Command 0 : Clear, 1 : Add, 2 : Calc END_VAR VAR_OUTPUT // Line coefficients y=mx+n SLOPE : REAL:=0.0; // Line Slope "m" INTER : REAL:=0.0; // Line Intercept "n" CORRXY : REAL:=0.0; // Correlation END_VAR VAR_IN_OUT ERROR : BOOL; // True if calc error END_VAR VAR SXY, SX, SY, SX2, SY2: REAL; CNT : INT; END_VAR VAR_TEMP D : REAL; D1 : REAL; END_VAR ERROR:=FALSE; //------------------------------------------------------------------- // CLEAR //------------------------------------------------------------------- IF COMMAND=0 THEN SXY:=0.0; SX :=0.0; SY :=0.0; SX2:=0.0; SY2:=0.0; CNT:=0; RETURN; END_IF; //------------------------------------------------------------------- // SAMPLE ADD //------------------------------------------------------------------- IF COMMAND=1 THEN SXY:=SXY + X * Y; SX :=SX + X; SY :=SY + Y; SX2:=SX2 + SQR(X); SY2:=SY2 + SQR(Y); CNT:=CNT + 1; RETURN; END_IF; //------------------------------------------------------------------- // CALC //------------------------------------------------------------------- IF COMMAND=2 THEN // Slope calc D :=(CNT * SX2 - SQR(SX)); IF D <> 0.0 THEN SLOPE:=((CNT * SXY) - (SX * SY)) / D; ELSE SLOPE:=0.0; END_IF; // Intercept calc D:=ABS(CNT * SX2 - SQR(SX)); IF D > 0 THEN INTER:=((SY * SX2) - (SX * SXY)) / D; ELSE INTER:=0.0; END_IF; // Correlation calc CORRXY:=0.0; IF CNT>0 THEN D1:=(SY2-(SY*SY/CNT)); IF D1>0.0 THEN D:=((SX*SY/CNT)-SXY)/D1; CORRXY:=ABS(D*SLOPE); END_IF; END_IF; ERROR:= NOT OK; END_IF; END_FUNCTION_BLOCK
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