ato Inserito: 24 giugno 2022 Segnala Inserito: 24 giugno 2022 Salve a tutti. Principalmente sono un programmatore di pc. In passato ho lavorato su siemens s7200 con vb e Simatic MicroComputing. Ora sto usando Cx-Programmer. Dovrei fare delle operazioni, abbastanza banali su pc, sulle date e sulle impostazioni di alcune variabili da passare poi a dei blocchi funzione. Cerco di spiegarmi meglio, magari lo scrivo in pseudo codice basic 'preset delle variabili di tipo int e globale Variabile1=1000 variabile_ora=ora variabile_minuti=minuti If Mese=1 then variabile2=8 '(variabile2 è di tipo int) .. in cx-programmer "=DT #38 A353 D102" If Mese=2 then variabile2=81 . . If Mese=12 then variabile2=90 mia funzione fCalcola(variabile2,variabile_ora,variabile_minuti) restituisce un boolean Ho seguito diversi tutorial su youtube/google...ma non riesco a fare un "compare/if" sul mese... =DT #38 A353 D102 Quindi mi servirebbe capire, per cortesia, come fare un preset delle varibili, confrontare il mese e passare le variabili al blocco funzione. Scusatemi se ho fatto un po' di confusione. Ciao a tutti.
valvolina Inserita: 25 giugno 2022 Segnala Inserita: 25 giugno 2022 ciao, questa è una delle possibili soluzioni:
Ctec Inserita: 25 giugno 2022 Segnala Inserita: 25 giugno 2022 Valvolina, lui parla di INT, mentre i valori dell'orologio sono in BCD, per cui meglio forse così: Evita di usare la comparazione sulla data, in quanto viene principalmente fatto per attivare qualcosa in un dato momento o in un range di date/ore. Ricordo che in Omron si deve sempre mettere un identificatore davanti a un numero, altrimenti viene visto come indirizzo. L'identificatore deve essere: + o - per interi con segno (anche lo zero deve essere messo come +0) & per interi senza segno # per esadecimali o BCD per i floating point, oltre al segno, deve esserci sempre il separatore decimale, Non ho invece capito bene la domanda sulle FB. Prova a riformularla
ato Inserita: 25 giugno 2022 Autore Segnala Inserita: 25 giugno 2022 Innazitutto Grazie a tutti e due...davvero Valvolina bello questo nikname 👍 Ctec : "Non ho invece capito bene la domanda sulle FB. Prova a riformularla "...ci provo Devo creare un blocco funzione e passargli dei parametri...le variaibili di cui sopra. Il blocco funzione ha una formula e dovrà restituire un valore...che a questo punto lo metterò in una variabile con l'istruzione Mov come indicato da voi. E' il passaggio dei parametri che mi risulta un po' ostico....per esempio diciamo di fare una funzione che calcola l'area di un triangolo. fCalcolaAreaTriangolo(Base as Int, Altezza as Int) ( Area=(Base*Altezza)/2 return Area area sempre di tipo int... ) Valvolina grazie anche a te ovviamente Ciao ragazzi
Ctec Inserita: 25 giugno 2022 Segnala Inserita: 25 giugno 2022 Ok, allora definisco una FB in ST (visto che lo posso fare...) e la chiamo CalcArea. Definisco i suoi dati di ingresso: e quelli di uscita: e ne scrivo il codice: A questo punto nel ladder avrò la sua chiamata Ovviamente, il risultato avrebbe dovuto essere 202.5, ma essendo la Area una INT, viene arrotondata per difetto.
ato Inserita: 25 giugno 2022 Autore Segnala Inserita: 25 giugno 2022 (modificato) Ok, grazie a voi sono riuscito a fare un programma che estrae il mese ed a seconda del valore setta le variabili ORA_INI e MINUTI_INI. Il tutto funziona bene. Quindi decido di creare una funzione che mi ritorna le variabili ORA_INI e MINUTI_INI creo un blocco funzione ed incollo il programma appena creato nel blocco funzione. Cancello il programma ed inserico la chiamata al blocco funzione appena creato. ... non gli piace più !...mi dice operando non valido e mi indica A253 nel blocco funzione. Allego alcuni screenshot Modificato: 25 giugno 2022 da ato altro allegato
ato Inserita: 25 giugno 2022 Autore Segnala Inserita: 25 giugno 2022 (modificato) qui è possibile scaricare il programmino https://www.dropbox.com/s/g00cu484nuwkr92/atomik2.cxp?dl=0 Modificato: 25 giugno 2022 da ato altro allegato
valvolina Inserita: 25 giugno 2022 Segnala Inserita: 25 giugno 2022 ciao dichiara una variabili di ingresso, che poi metti nell'istruzione MOVD poi dove richiami il blocco funzione nel parametro di ingresso ci metti A253 un saluto Valvolina
ato Inserita: 25 giugno 2022 Autore Segnala Inserita: 25 giugno 2022 1 ora fa, valvolina ha scritto: ciao dichiara una variabili di ingresso, che poi metti nell'istruzione MOVD poi dove richiami il blocco funzione nel parametro di ingresso ci metti A253 un saluto Valvolina OK,l'errore non si verifica più. Grazie Ho dichiarato una variabile di ingresso BLMESE di tipo word (in realtà dovrebbe essere come del tipo A253...che non so) L'ho sostituita nella funzione MOVD (sempre all'interno del blocco funzione) ho passato come variabile di ingresso A253... ma non mi restituisce il risultato atteso. Nel blocco funzione ho messo una funzione di "compare" =S(302)... ma vedo che la variabile MESE non assume nessun valore tra l'altro. Forse sbaglio il "tipo" di variabile BLMESE? cioè anzichè word deve essere un altro tipo? Ciao Valvolina
ato Inserita: 25 giugno 2022 Autore Segnala Inserita: 25 giugno 2022 ...scusa, lo screenshot mostra un ingresso I 1.00 come uscita...poi l'ho corretto.
valvolina Inserita: 26 giugno 2022 Segnala Inserita: 26 giugno 2022 ciao scusa ma non capisco bene cosa vuoi fare. Se ti serve il mese la variabile è la A353 e non A253, come ha fatto notare Ctec il formato è bcd, mentre mi sembra di capire che a te serva in decimale. Quindi risulta cosi poi all'ingresso del blocco funzione gli passi A353 un saluto Valvolina
ato Inserita: 26 giugno 2022 Autore Segnala Inserita: 26 giugno 2022 3 ore fa, valvolina ha scritto: Se ti serve il mese la variabile è la A353 e non A253, come ha fatto notare Ctec il formato è bcd, In realtà i vari manuali che ho letto, indicano, infatti, tutti la A353...mentre il suggerimento di Ctec punto 5, introduce la variabile A253...forse un errore di battitura?..fatto sta che funziona l'estrazione del mese, ecco perchè ho continuato ad usare la A253. Ok, quindi quando definisco la variabile di ingresso BLMESE che tipo di gl indico? Int, Word, Dword etc..quindi gli passo A353? comunque, io vorrei fare una funzione che mi ritorni nelle variabili Ora_Ini e Minuti_Ini dei valori in base al mese. Grazie comunque
valvolina Inserita: 26 giugno 2022 Segnala Inserita: 26 giugno 2022 (modificato) ciao le variabili dell'orologio sono delle variabili a 16 bit in formato bcd io ho dichiarato una word per quanto riguarda l'indirizzo delle variabili dell'orologio io ho immaginato come plc un CP1L e il manuale indica quelle che ti ho messo all'inizio un saluto Valvolina Modificato: 26 giugno 2022 da valvolina
ato Inserita: 28 giugno 2022 Autore Segnala Inserita: 28 giugno 2022 Ok. Grazie a Voi sono riuscito a fare quasi tutto quello che mi serviva. Grazie ancora.
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