PLC Programmeren: Siemens LOGO! 8

Beste lezers,

voor mijn afstudeeropdracht ben ik bezig met het programmeren van een PLC. Ik ben nog een beginneling dus vergeef het me als ik een domme vraag stel.

Op de PLC wil ik een keuzemenu weergeven die ik kan bedienen met een externe afstandsbediening met 4 drukknoppen. Ik heb hiervoor een statediagram opgesteld, echter merk ik al snel dat dit lastig te construeren is met logische poorten en timers etc. Ik ben C programmeren gewend dus het kan zijn dat ik iets simpels over het hoofd zie, maar allicht kan iemand hier mij helpen.

Kortom: heeft iemand een tip/oplossing hoe ik veschillende states kan construeren in LOGO Soft Comfort (Siemens PLC software)?

Als er onduidelijkheden zijn in mijn vraag, hoor ik deze graag.

Bij voorbaat dank!

Mvg Rob

(NB: ik heb geen ervaring met Logo's, wel met Siemens S7 PLC's)
Als state-variabele kun je een integer nemen (geef elke state in je statediagram een nummertje). Vervolgens kun je telkens de state compare'en met een bepaald nummer, en de bijbehorende code voor die state achter die compare zetten.
Wisselen van state kun je doen door de integer een andere waarde te geven.
Als je dit vergelijkt met C, heb je eigenlijk een soort switch/case constructie gemaakt.

Bedankt voor je reactie Fox2,

dit had ik zelf ook in gedachten, maar het probleem is dat ik niet goed weet hoe ik dit moet realiseren. Ik zie namelijk alleen een analoge comparator en MUX. Ik moet het realiseren met componenten die kunnen werken met 1/0 (drukknoppen) en integers (states).

Heb jij misschien uit je ervaring met Siemens S7 een voorbeeld?

Mvg Rob

Ik snap je opgave niet helemaal.
Kun je kiezen uit 4 mogelijkheden en heb je 4 knoppen? dan is het een eitje,elke knop,op een ingang en met AND of OR je voorwaarden maken.
Of wil je met een kop meerdere bv hoofdfuncties oproepen,,en dan met andere knoppen een deelfunctie oproepen?
Maak gebruik van teller , die kun je instellen dat ze alleen bij een bepaalde telwaarde de uitgang aktiveren, daar kun je dan verder mee.
Dat kost je wel een teller per opdracht.

Daar waar een schakeling rookt, vloeit de meeste stroom (1e hoofdwet van Toeternietoe)

Ik zal de situatie even samenvatten, misschien is mijn vraag dan duidelijker.

Ik heb een afstandbediening met 4 drukknoppen (momentschakelaars), id is nog niet bepaald maar wordt iets als:

- Menu (home)
- OK/Select
- '+'
- '-'

Ik heb als het ware 3 modussen bedacht (functies). Met de '+' en '-' scroll ik als het ware door het menu (omhoog/omlaag) en met de OK knop selecteer vervolgens een bepaalde modus. Wanneer ik een modus heb geselecteerd moet ik in een nieuw scherm komen waarbij de 'menu' knop vervolgens dient om te selecteren tussen 'heating control' en 'light control' en de '+' en '-' dient als 'warmer/kouder'. Iedere modus heeft een andere manier van heating en light control en zo heb ik dus mijn statediagram opgesteld.

In C code is dit makkelijk te realiseren (switch/case structuur), maar nu moet ik het dus met logische poorten, timers, relays etc. doen. Ik hoop dat het zo iets duidelijker is.

Ik zie graag jullie reactie tegemoet.

Mvg Rob

[Bericht gewijzigd door Henry S. op 9 april 2015 20:52:18 (23%)]

Gaat prima met een logo , er is ook een extern display voor logo verkrijgbaar, voor het geval je een afstandbediening moet "construeren " Je stuurt met + en - een teller aan en blokkeert de ingang met de OK functie ( Bijv een merker hoog maken of iets dergelijks , dan de stand van de teller afvragen en de volgende functie/teller enable enz . je kunt dan door "menu "weer terug naar de basis.

Wat Lefert levert, levert anders geen mens.

Bedankt voor je reactie. Ik snap alleen niet zo goed hoe ik de teller in deze situatie nou moet gebruiken. De teller in de software heeft 3 ingangen (Count, Reset en Direction)en een uitgang. De uitgang wordt hoog wanneer de ingestelde waarde bereikt is. Eigenlijk zoek ik een teller die bijvoorbeeld 3 uitgangen heeft waarbij de ene uitgang hoog is bij telwaarde 1, de andere bij telwaarde 2 en de laatste bij telwaarde 3. Daarbijkomend heb ik het probleem dat de ingang 'dir' eerst een keer hoog moet zijn voordat de teller aftelt.

Heeft iemand misschien een voorbeeld hoe een teller te gebruiken in mijn geschetste situatie?

Mvg

[Bericht gewijzigd door Henry S. op 9 april 2015 20:52:29 (28%)]

Je kunt de waarde van de teller "afvragen" en dan dit gebruiken in je submenu ( in andere taal : "if counter is *** then ...... "

Wat Lefert levert, levert anders geen mens.

Zoals ik al aangaf, dan heb je 3 teller(Counters) nodig.

Een teller in de LOGO heeft 3 ingangen.
Count, dit is de telingang, telt dus de pulsen.
Dir, dit is de telrichting. Als Dir = 1 dan telt de teller af bij elke puls op Count.
En dan heb je nog een Reset. Daarmee zet je de teller op 0, of op een voor ingestelde waarde (niet bij alle LOGO versies)
De teller kan niet lager dan 0, dus geen negatievce getallen.

Daar waar een schakeling rookt, vloeit de meeste stroom (1e hoofdwet van Toeternietoe)

Op 9 april 2015 09:44:44 schreef DE OLDE:
Je kunt de waarde van de teller "afvragen" en dan dit gebruiken in je submenu ( in andere taal : "if counter is *** then ...... "

Dat is inderdaad precies wat ik nodig heb, dat wist ik niet. Hoe kan ik dit doen? Ik heb wel iets gelezen over de reference functie, maar heb nog niet kunnen vinden hoe ik dit kan doen.

Kijk even bij de SpecialFuncties en dan analoog/rekenkundig . Ik weet het niet precies uit mijn bol , maar heb wel een aantal keren gedaan .

Wat Lefert levert, levert anders geen mens.

Op 9 april 2015 10:53:13 schreef DE OLDE:
Kijk even bij de SpecialFuncties en dan analoog/rekenkundig . Ik weet het niet precies uit mijn bol , maar heb wel een aantal keren gedaan .

Ik ben ondertussen al een stuk dichter bij de oplossing, het enige probleem wat ik nu ervaar is het fiet dat de telleruitgang hoog blijft wanneer de telwaarde bereikt is. Is het mogelijk om hier een puls van te maken (zonder dat de telwaarde veranderd)?

one shot erachter (wiping relay)in LOGO!

Meten is weten

Op 9 april 2015 11:19:40 schreef Freaky:
one shot erachter (wiping relay)in LOGO!

Bedankt voor je reactie. Echter moet ik mijn probleem even anders verwoorden; de telleruitgang hoeft niet per se een puls te zijn.

Situatie is nu:

Ik heb 3 tellers:
-teller 1 is hoog bij telwaarde 0 en word bij telwaarde 1 weer laag
-teller 2 is hoog bij telwaarde 1 en word bij telwaarde 2 weer laag
-teller 3 is hoog bij telwaarde 2 en word bij telwaarde 3 weer laag (dit is tevens een reset voor alle tellers).

Nu wil ik het volgende: als de huidige telwaarde 2 is (dus ik zit in menu 2) en ik druk op de '-' knop, dan moet de telwaarde 1 worden (dit lukt) en de uitgang van teller 3 moet weer laag worden. Iemand een idee hoe ik dit kan doen?

De tellers stel je de in en de uitwaarde op dezelfde waarde in.

Laat eens zien wat je tot nu toe gemaakt hebt.

Daar waar een schakeling rookt, vloeit de meeste stroom (1e hoofdwet van Toeternietoe)