Vai al contenuto
PLC Forum


Plc CP1L - Operazioni sulle date/ preset di variabili e passaggio di variabili a blocco funzione


Messaggi consigliati

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


Valvolina, lui parla di INT, mentre i valori dell'orologio sono in BCD, per cui meglio forse così:

image.thumb.png.89feaaf96d6c6bb3a0fc2c7120d92d08.png

 

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

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

Ok, allora definisco una FB in ST (visto che lo posso fare...) e la chiamo CalcArea.

Definisco i suoi dati di ingresso:

image.png.17c8f1a22090ff908d5f15015e0fde53.png

e quelli di uscita:

image.png.cdda3c2ae73efa44f7e446149db73c7e.png

e ne scrivo il codice:

image.png.3f6b8412423d7b586c39146d69348383.png

 

A questo punto nel ladder avrò la sua chiamata

image.png.751fdc5ac400007100c228089abfb534.png

 

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

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

 

er1.png

er2.png

er3.png

Modificato: da ato
altro allegato
Link al commento
Condividi su altri siti

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

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 :)

 

er4.png

er5.png

er6.png

Link al commento
Condividi su altri siti

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

image.thumb.png.4f5e2ced77661fec5610f373f3f0fc17.png

 

poi all'ingresso del blocco funzione gli passi A353

 

un saluto

Valvolina

 

Link al commento
Condividi su altri siti

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 :)

image.png

Link al commento
Condividi su altri siti

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: da valvolina
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...