Gå til innhold

Hjelp til å lage en logisk funksjon!


Anbefalte innlegg

Hei!

 

Holder på å programmere en lysstyring på jobb. I den forbindelse har det stoppet litt opp for meg. og trenger hjelp til å komme meg videre.

 

Styringen er utført ved hjelp av mini PLC fra Siemens LOGO.

 

Saken er den at jeg har 3 innganger som skal styre 3 lyssoner.

 

Hver av de tre lyssonene har en trinnvis oppstartsyklus for at startstrømmen ikke skal bli for så stor.

 

Når jeg aktiverer alle inngangene på engang så skal den inngangen som ble aktivert først gjøre ferdig sin oppstartsyklus, før oppstartsyklusen til inngang nummer 2 begynner.. slik fortsetter det til inngang 3 har utført oppstartsyklusen sin.

 

Det samme skal skje hvis jeg aktiverer inngangene i en annen rekkefølge eks: I2, I1, I3

Da skal oppstartsyklus 2 fullføres før oppstartsyklus 3, og til slutt oppstartsyklus 1

 

 

Når jeg aktiverer for eks bare I2, da skal bare oppstartsyklus 2 som tenner alt lys bare i sone 2.

 

 

for de som ikke kjenner til LOGO pls til Siemens så er programvaren bygd opp på samme vis som digital teknikk i elektronikken med blokker

 

 

Inngangene ligger høy så lenge som lyset skal være på lyset skal være på. Deaktiverer (0) man inngang 2 så skal bare lyset på sone 2 slå seg av logisk nok ;)

 

 

Hvis noe var uklart så si fra så skal jeg svare så godt jeg kan.. Ikke like lett å få med seg alle detaljer når man forklarer det til andre!

 

Håper noen kan komme med et forslag.

Lenke til kommentar
Videoannonse
Annonse

Enten må du ha en eller annen form for signal tilbake (kvittering for oppstartsyklus ferdig). Eller så kan du definere en tid det tar ved hjelp av en timer. Kjenner ikke det området så kan ikke anbefale noe da jeg ikke vet kravene du har til tid osv osv.

 

Jeg ville lekt litt med noe som: hver inngang setter sitt egne unike bit. Dette bittet er på i en viss tid (timer eller signal). Dette bittet står som kriterie at må være av for at de 2 andre skal kjøre.

 

altså

 

in1 b2 b3 b1

---| |----|/|----|/|------(s) (ingang 1 går høy. b1 blir satt om b2 og b3 er av)

 

b1 b1

----( )-----timer--(r ) b1 resettes eter en definert tid.

 

 

 

slik lager du for alle 3 (med forskjellige variable selvfølgelig).

 

 

 

Vet ikke om jeg forstod deg riktig, men jeg ville startet med noe sånt ut i fra hva jeg forstod

Endret av Dundersalt
Lenke til kommentar
Heisann.

 

Jeg var ikke helt sikker på om jeg forstod deg riktig, men prøv å simuler det programmet her og se om det kan funke for deg =)

 

my.php?image=logosoftsimbr2.jpg

http://img98.imageshack.us/my.php?image=logosoftsimbr2.jpg

 

Takk for respons!

 

Jeg har testet forslaget ditt, men så med engang at det ikke var en slik løsning jeg var ute etter.

 

Du oppfyller ikke dette kriteriet:

Når jeg aktiverer for eks bare I2, da skal bare oppstartsyklus 2 som tenner alt lys bare i sone 2.

Da skal ikke de andre sonene tenne slik som i ditt forslag!

 

 

Hvis jeg har lyst til å slå av for eks bare inngang 2?

slik som ditt forslag er så vil jo Q1 holde inne Q2...

 

Og til slutt hvordan skal jeg kunne slukke alt lys når alle utgangene holder inne hverandre selv om signalet på alle inngangene er ute!

 

Håper du ser hva jeg mener ;)

Endret av hojo
Lenke til kommentar
Enten må du ha en eller annen form for signal tilbake (kvittering for oppstartsyklus ferdig). Eller så kan du definere en tid det tar ved hjelp av en timer. Kjenner ikke det området så kan ikke anbefale noe da jeg ikke vet kravene du har til tid osv osv.

 

Jeg ville lekt litt med noe som: hver inngang setter sitt egne unike bit. Dette bittet er på i en viss tid (timer eller signal). Dette bittet står som kriterie at må være av for at de 2 andre skal kjøre.

 

altså

 

in1 b2 b3 b1

---| |----|/|----|/|------(s) (ingang 1 går høy. b1 blir satt om b2 og b3 er av)

 

b1 b1

----( )-----timer--(r ) b1 resettes eter en definert tid.

 

 

 

slik lager du for alle 3 (med forskjellige variable selvfølgelig).

 

 

 

Vet ikke om jeg forstod deg riktig, men jeg ville startet med noe sånt ut i fra hva jeg forstod

 

Jeg er ikke helt sikker på hva du mener! Men hvis du tar en titt på forslaget til Rosemount og du mener at det er helt annerledes enn i forhold til det du mener så hadde jeg hvert veldig takknemmelig hvis du kunne utdype det litt mer :)

Lenke til kommentar

Har ikke noe PLS program på denne pocen så kan ikke screenshotte.

 

Men kan forklare litt.

 

Jeg ville utvilsomt brukt ladder til dette!

 

globale variable

 

x0 = I1 (dette er inngang 1)

x1 = I2 (dette er inngang 2)

x3 = I3 (dette er inngang 3)

 

y0 = utgang til syklus 1

Y1 = utgang til syklus 2

Y2 = utgang til syklus 3

 

 

Lokale variable

 

T1 = (timer #1)

T2 = (timer #2)

T3 = (timer #3)

 

b1 = (dette er en variabel som er høy når inngang 1 er i startsyklus)

b2 = (dette er en variabel som er høy når inngang 2 er 2 startsyklus)

b3 = (dette er en variabel som er høy når inngang 3 er 3 startsyklus)

 

 

Ladder kode

 

Kommer om 10 min(annen pc)

Lenke til kommentar

Der har du for "syklus 1" lag det samme for 2 og 3 nedover (bare husk å bytte variable).

 

Kan hende det er en eller annen slurve feil der, men sånn er det med utestet kode;)

Håper jeg har forstått deg riktig og tenkt på alt.

 

Husk! Sjekk nøye hvordan flanke triggeren er for siemens(om det ikke funker) test uten den om du får problemer(får ikke skrudd på fler av gangen uten den)

 

Husk også at hver timer må være definert med forskjellig variabel!

 

Jeg kan hvertfall være så bastant å si at tankegangen i den koden er enkel og fungerer (kanskje noen små modifikasjoner må til)

 

Uansett prøv litt rundt det, og gi tilbakemld på om det funket, evt hva som ikek funket.

untitled1.bmp

Lenke til kommentar

Skjønner hva du mener. Men jeg synes det blir veldig komplisert i forhold til hva det trenger å være vist bare du skal bruke dette her.

 

Jeg mekka hvertfall sammen en krets her som du kan bruke om du vil. Den husker på hvilken inngang som ble aktivert først, og sender signal når alle inngangene er høye.

 

tellekretsuc6.jpg

 

Som sagt over så er ladder enklere å programmere i, men tydeligvis så var det apekatter som lagde Logo!soft sin ladder version. Synes hvertfall den var håpløs...

Endret av Rosemount
Lenke til kommentar
Skjønner hva du mener. Men jeg synes det blir veldig komplisert i forhold til hva det trenger å være vist bare du skal bruke dette her.

 

Jeg mekka hvertfall sammen en krets her som du kan bruke om du vil. Den husker på hvilken inngang som ble aktivert først, og sender signal når alle inngangene er høye.

 

tellekretsuc6.jpg

 

Som sagt over så er ladder enklere å programmere i, men tydeligvis så var det apekatter som lagde Logo!soft sin ladder version. Synes hvertfall den var håpløs...

 

 

Jeg har bare sett raskt over dette forslaget nå så jeg vet ikke hvordan det fungerer, men jeg ser at du har tatt med en 4 inngang som skal brukes til reset. hvis jeg sier at jeg ikke har anledning til å bruke en reset knapp greier du å få til det samme da?

Lenke til kommentar

Heisann.

 

Har ikke hatt noe mer tid å se på det, men kan se litt etter helgen igjen. Men det jeg lurte på var rett og slett på hvem som skal bruke dette. Den gyldne regel er jo "Hvorfor gjør noe vanskelig når man kan gjøre det lett", og derfor lurte jeg på om det var bare noe du skulle gjøre eller om det skal brukes i andre sammenhenger. Vist det er bare noe du skal bruke så er det rett og slett ikke værre en å bare lage en aktivering til hver lys sone slik at du kan tenne og slukke dem slik du ønsker. Kan mekke ett enklere forslag for deg vist du vil ?

 

 

Lagde en enkel til her. Tellekrets der du sender ett signal for kurs 1, to signal for kurs 2, tre signal for kurs 3 og fire signal for reset. Så starter alt om på nytt. Slik kan du bestemme hvilke kurs som skal lyse seperat.

 

tellesystempk7.jpg

 

Du får se over dem om du ønsker å si ifra om de er brukelige, så kan jeg evt bygge dem om/ut etter behov. Håper det var litt til hjelp hvertfall =)

Endret av Rosemount
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...