ato Inserito: 24 giugno 2022 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
valvolina Inserita: 25 giugno 2022 Segnala Share Inserita: 25 giugno 2022 ciao, questa è una delle possibili soluzioni: Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 25 giugno 2022 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
ato Inserita: 25 giugno 2022 Autore Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 25 giugno 2022 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
ato Inserita: 25 giugno 2022 Autore Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
ato Inserita: 25 giugno 2022 Autore Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
valvolina Inserita: 25 giugno 2022 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
ato Inserita: 25 giugno 2022 Autore Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
ato Inserita: 25 giugno 2022 Autore Segnala Share Inserita: 25 giugno 2022 ...scusa, lo screenshot mostra un ingresso I 1.00 come uscita...poi l'ho corretto. Link al commento Condividi su altri siti More sharing options...
valvolina Inserita: 26 giugno 2022 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
ato Inserita: 26 giugno 2022 Autore Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
valvolina Inserita: 26 giugno 2022 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
ato Inserita: 28 giugno 2022 Autore Segnala Share Inserita: 28 giugno 2022 Ok. Grazie a Voi sono riuscito a fare quasi tutto quello che mi serviva. Grazie ancora. 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