timer instellen en uitlezen op de HMI

Hallo,

Ik ben bezig met mijn eindproject, nou wil het probleem dat ik dacht dat ik iets wist van programmeren na dit 3 jaar op school te hebben gehad. Dit valt vies tegen en ik loop nogal klem met mijn project.

het project:
uiteindelijk moet ik met dit programma een bakkers oven aansturen, daar moeten natuurlijk de tijd van een aantal dingen worden ingesteld zoals de baktijd de tijd dat hij aan mag springen de tijd dat de waterklep open blijft staan.dit alles programmeer ik op een siemens S7-1200 met tia portal V13

de baktijd moet weergegeven worden in uren minuten en seconden. ik ben nou alleen even bezig om te kijken of ik een tijd in kan stellen en deze weer terug te zien krijg op mijn weintek HMI scherm.

wat heb ik nu
Tot nu toe kan ik de tijd al instellen in minuten en seconden ( uren kan ook maar even voor het proberen is dit het makkelijkste ) ik heb een data blok aangemaakt waar ik de waardens in schrijf deze waardes worden ms dus die reken ik in tia portal om naar seconden of minuten.
als ik deze waardes dan weer bij elkaar optel heb ik de juiste looptijd. om af te tellen heb ik de totale tijd min de tijd die de TOF al gehad heeft. deze waarden komt weer in milliseconden als ik dit op het hmi weer terug wil rekenen ontstaat mijn probleem.

Als ik ingesteld heb dat hij 1 minuut en 30 seconden aan moet blijven komt er bij mijn minuten 1 te staan en bij mijn seconden 90.

heeft iemand hier een oplossing voor hoe ik die seconden gewoon af kan laten tellen vanaf 30 tot hij op 0 is dan een minut er af telt en de seconden weer vanaf 60 begint ( gewoon zoals een normale digitale wekker dat zo moeten doen)

ik zou dat anders benaderen.
op de HMI zou ik 3 velden aanmaken, uren - minuten - seconden, waar men de gewenste waarde kan invullen.

in de plc laat ik een dataregister enkel seconde een optelling doen en schrijf dat terug in het zelfde register (a=a+1 princiepe). als dat register groter wordt dan 60 dan tel ik het register van de minuten eentje op en zet het register van de seconden terug op nul en begint alles opnieuw. Dit kan verder dan uitgebreid wordt naar de uren

finaal maak ik van de seconden-minuten -uren registers en de ingestelde waarden op de HMI een vergelijking.

men kan de werkelijke looptijd ook de HMI brengen, zo zie je hoever de tijd reed verstreken is.

in ieder geval dat rond rekenen naar milliseconden en omgekeerd lijkt mij het moeilijk maken. bemerk dat TIA ook kan rekenen met tijden (functies)

Als ik ingesteld heb dat hij 1 minuut en 30 seconden aan moet blijven komt er bij mijn minuten 1 te staan en bij mijn seconden 90.

Ja, niet steeds op en neer rekenen tussen ms en hh:mm:ss

Twee registers aanhouden , een met baktijd in ms en een ander met nog te bakken tijd in ms, of reeds gebakken tijd in ms.

Die registers gedurende het bakproces bijwerken indien nodig. Zoiets van als baktijd>n en baktijd<m waterklep open, anders dicht.

Als je een waarde op de display wilt: door 1000 delen om die ms kwijt te raken, vervolgens delen door 3600, en het quotient op hh, de rest van de deling delen door 60 en het quotient op mm en de rest van laatstgenoemde deling op ss.

Dan krijg je niet wat je nu overkomt als gevolg van broddelwerk dat je 90 door 60 deelt de 90 op ss zet op de display en de uitkomst van de deling op mm.

Als je registers vanaf het bedieningspaneel gevuld moeten worden, het bedieningspaneel omrekenen met (3600*hh+60*mm+ss)*1000

Intussen zul je je fout wel gevonden hebben, maar dat laat onverlet dat het nuttig is je zaakje op te knappen, want elke beoordelaar van je werk zal negatieve punten toekennen aan gebroddel, zelfs als het resultaat ervan correct is.

Probeer het zelf in te zien, dan leer je ervan en trap je er niet meer in om onoverzichtelijk te werken met fouten als gevolg daarvan.

hallo,

sorry voor mijn late reactie ik dacht dat ik een mail zou krijgen maar dat heb ik toch niet aan staan denk ik. maar ik ben er uit. De mensen van PLCdirect hebben mij geholpen hij heeft een macro geschreven die het omrekent dit werkt echt perfect.

//Declaraties
int milliseconds
int seconds
int minutes
int hours
int mSeconds
int mMinutes
int mHours

//Data ophalen
GetData(milliseconds, "Local HMI", LW, 0, 1)

//Eerste berekening
seconds = milliseconds / 1000
minutes = milliseconds / (1000*60)
hours = milliseconds / (1000*60*60)

//Berekenen modulo
mSEConds = SEConds %60
mminutes = minutes %60
mhours = hours %24

//Data wegschrijven
SetData(mhours, "Local HMI", LW, 10, 1)
SetData(mminutes, "Local HMI", LW, 20, 1)
SetData(mseconds, "Local HMI", LW, 30, 1)

het zit hem in dat % teken ik weet eigenlijk niet precies hoe het werkt maar hij doet iets met dat rest getal. voor zover ik kan vinden doet dat procent teken dit: 27 : 6 = 4,5 dans is 4 x 6 = 24 dan houd je een rest van 3 over maar hoe het verder zit weet ik nog niet.

Lambiek

Special Member

Op 4 mei 2015 10:20:03 schreef mitchstraten:
sorry voor mijn late reactie ik dacht dat ik een mail zou krijgen maar dat heb ik toch niet aan staan denk ik. maar ik ben er uit. De mensen van PLCdirect hebben mij geholpen hij heeft een macro geschreven die het omrekent dit werkt echt perfect.

Dat is leuk voor je dat het werkt, maar heb je er nu iets van geleerd?

....dan houd je een rest van 3 over maar hoe het verder zit weet ik nog niet.

Zo te zien niet.

Als je haar maar goed zit, GROETEN LAMBIEK.

ja dat ga ik nog uitzoeken toch heb ik er ook bij staan.

Lambiek

Special Member

Ja, dat weet ik. Maar als je zelf zoiets uitvogelt blijf het beter hangen, en dat is volgens mij het doel van het leer proces. :)

Ik vond het idee van High current specialist wel leuk.

Als je haar maar goed zit, GROETEN LAMBIEK.

het zit hem in dat % teken

//Berekenen modulo

Met alle respect Dr Blan maar u heeft me niet helemaal goed begrepen denk ik, of ik u niet dat kan natuurlijk ook.

De plc wilt ms hebben maar ik kan een bakker geen ms in laten vullen, vandaar dat ik op het HMI 1 voor minuten ik voer en deze in de PLC x60000 doet, zo krijg ik de juiste waarde binnen voor de plc.

uiteindelijk doe ik mijn ingestelde waarde minus de waarde die de timer op aan het tellen is. hierdoor krijg ik een aantal ms dat netjes aftelt. omdat ik die ms weer apart weer wil geven in het HMI in seconden minute en uren kan ik dit dus niet met een simpele rekensom doen, omdat de basis het totaal aantal ms is als ik die deel door 60000 komt er een totaal aantal minuten uit wat dus niet klopt omdat dat hoger dan 60 kan worden.

Lambiek, het doel is inderdaad ook dat je er iets van leert maar het belangrijkste is dat je het op tijd afrond. Dat laatste heeft voor mij op dit moment even de grootste zorg. Het is niet dat ik niks uitgezocht heb voordat ik hier een vraag heb gesteld. Ik had misschien ook beter kunnen vragen welke richting of waar op het beste kon zoeken, als ik het nu weer zou moeten opzoeken zal dat een stuk makkelijker gaan omdat ik beter weet waar ik naar moet zoeken.

[Bericht gewijzigd door Henry S. op 4 mei 2015 18:56:55 (24%)]

Lambiek

Special Member

Op 4 mei 2015 11:04:48 schreef mitchstraten:
Lambiek, het doel is inderdaad ook dat je er iets van leert maar het belangrijkste is dat je het op tijd afrond.

Maar ben je er dan niet te laat aan begonnen?

Op 22 april 2015 10:31:32 schreef mitchstraten:
Ik ben bezig met mijn eindproject, nou wil het probleem dat ik dacht dat ik iets wist van programmeren na dit 3 jaar op school te hebben gehad. Dit valt vies tegen en ik loop nogal klem met mijn project.

Dat leer je pas goed in de praktijk, en daar kom je ook dingen tegen van; hoe zal ik dat eens oplossen.

En ik weet natuurlijk niet hoe diep ze er tijdens de les op ingaan, als het allemaal maar basis is valt het ook niet mee.

Als je haar maar goed zit, GROETEN LAMBIEK.

nee ben zeker niet te laat begonnen, sterker nog kon zelfs niet eerder beginnen want het is een eindproject op een bedrijf en daarvoor had ik gewoon school en heb ik geen tijd gehad om vast voor informatie te verzamelen. Het was echt basis of meer het aansturen van een pick en place unit.

Lambiek

Special Member

Nou ja, je bent in ieder geval gered met het programma van PLC direct. En succes verder met het project. :)

Als je haar maar goed zit, GROETEN LAMBIEK.