Sida 2 av 2
Re: Frågor om PLC programering
Postat: 20 februari 2015, 19:27:32
av Kjelle
InFocus skrev:Rad 23 har jag endast för att kunna återställa när det har blivit fel, dvs när jag trycker på x17 så ska den tvångsköra in cylindrarna.
T1 har jag där för att borrcylindern ska vara ner i 5 sek och borra innan den går upp igen ( vilket jag inte fick till utan att lägga den på reset)
Jag lyckades faktiskt att lösa problemet, dock på ett sätt som jag inte tycker är helt korrekt, jag fick sätta en timer, så att om givare X0 (cylinder 1 är ute) så ska den efter x sekunder sätta utgången Y1, då går cylinder in igen.
När jag la till saftblandaren tillsammans på M4 så lägger utången Y1 (cylinder 1) och Y7 (saftblandaren) dragen hela tiden utan att något händer.
Du kan inte påverka Y1 från 2 olika rader, varnar inte kompileringen ?
Även om du inte använder rad 23 så måste den bort.
Kjelle
Re: Frågor om PLC programering
Postat: 20 februari 2015, 20:59:14
av Nerre
InFocus skrev:
Programmet är uppbyggt så hela tiden
DÄR är nog ditt tankefel. När du programmerar en PLC är det inget "program". En PLC är i princip en virtualisering av en relälösning.
Alla rader i "programmet" exekveras samtidigt (egentligen inte, men ur funktionsmässig synpunkt ska man se det så). Det är inte så att en rad som står före en annan "körs före" den raden, du måste se det som allt allt körs samtidigt.
Re: Frågor om PLC programering
Postat: 21 februari 2015, 17:27:14
av Mindmapper
Programmet i ett PLC fungerar med en teknik som heter I/O-kopiering. Programmet löper rad för rad och varje resultat skrivs in i en virtuell bild av de utgångar och minnen som ska påverkas. När programmet når slutet så sker kopiering av de resultat som finns i processavbilden till de verkliga utgångarna och minnescellerna. Därefter sker inkopiering av insignaler och sedan börjar programmet om med sina beräkningar för att i slutet kopiera resultatet igen. Detta kallas cyklisk programexekvering. I mera avancerade PLC kan du styra denna exekvering med avbrott etc. Men normalt sett sker programexevering hela tiden från början till slut med kopiering och sedan börjar det om på nytt igen.
Påverkas en utgång (minnescell) från flera ställen i programmet är det alltid den sista förekomsten innnan kopieringen som gäller. I ditt fall skev alltså sista förekomsten alltid en nolla utom vid tvångskörning. Vad de tidigare resultaten var spelar då aldrig någon roll utan sista uttrycket som skriver till minnescellen bestämmer alltid.