När du är i detta läget https://imgur.com/a/NxTrdWp aktivera din tagg "LOAD" så skall CTD.PV (=3) Matas in i CTD.CV (Så att denna också blir en trea) och då skall CTD.Q benet bli inaktiv (=Svart)
Sedan kan du starta din uppräkning mha. PB1 och nedräkningen med PB2 skall släcka LampGreen efter tre tryckningar.
Vill du hjälpa med teamviewer?
Aktiverade LOAD till TRUE och 3 matades in i CV som du sa. Men PB2 räknar inte ner till CTD.CV blir noll. Vet inte om det är nåt jag missar men CTU med PB1 funkar klockrent och jag vill att CTD på något sätt ska vara knuten till CTU för att CTD ska veta vad preset value är. Det ska bara pendla mellan 3 knapptryckningar på PB1 och när den når 3 så ska man med 3 knapptryckningar via PB2 stänga av lampan.
Så både PB1 och PB2 måste vara kopplad till lampan.
Tar en paus. Tittar in senare, detta går ej.
__________________
Senast redigerad av codesyss 2024-02-17 kl. 10:46.
Aktiverade LOAD till TRUE och 3 matades in i CV som du sa. Men PB2 räknar inte ner till CTD.CV blir noll. Vet inte om det är nåt jag missar men CTU med PB1 funkar klockrent och jag vill att CTD på något sätt ska vara knuten till CTU för att CTD ska veta vad preset value är. Det ska bara pendla mellan 3 knapptryckningar på PB1 och när den når 3 så ska man med 3 knapptryckningar via PB2 stänga av lampan.
Så både PB1 och PB2 måste vara kopplad till lampan.
Sitter på ett mobilt bredband så latency'n skulle nog vara extrem vid en eventuell uppkoppling.
Kan det inte vara så att du missade att toggla taggen "LOAD" till FALSE igen efter "Återställningen"?
För annars återställer du CTD.CV till 3 efter varje knapptryckning på PB2.
Ifall du vill ha automatisk återställning av räknarblocken (när du väl fått funktionen att fungera) så har du en lösning här https://imgur.com/a/AoV8ivj
Aktiverade LOAD till TRUE och 3 matades in i CV som du sa. Men PB2 räknar inte ner till CTD.CV blir noll. Vet inte om det är nåt jag missar men CTU med PB1 funkar klockrent och jag vill att CTD på något sätt ska vara knuten till CTU för att CTD ska veta vad preset value är. Det ska bara pendla mellan 3 knapptryckningar på PB1 och när den når 3 så ska man med 3 knapptryckningar via PB2 stänga av lampan.
Så både PB1 och PB2 måste vara kopplad till lampan.
Tar en paus. Tittar in senare, detta går ej.
Tjena Maestro!
Jag tolkar det som att lampan ska tändas efter tre tryck på tryckknapp1 (PB1), sedan ska lampas släckas igen efter tre tryck på tryckknapp 2 (PB2). Stämmer detta?
Jag skrev ihop en funktion lite snabbt som verkar funka enligt ovan beskrivet beteende. Förvisso är den gjord i Siemens SCL, men det bör vara liknande syntax om inte samma i det du jobbar i.
Du kan väl prova detta?
Jag använder inga färdiga räknarblock, utan adderar/subtraherar till en räknarvariabel istället.
Hög flank på signal från tryckknapp detekterar jag med hjälp av minnesbitarna "PB1_old" och "PB2_old".
Jag har inte buggtestat funktionen till fullo så du vet.
Kod:
//PB1 = Tryckknapp1
//PB2 = Tryckknapp2
//Detektera rising edge (flank) på tryckknappar
//Om trycknapp = TRUE och minne för tryckknapp inte är TRUE,
//Sätt flanksignal = TRUE
#PB1_flank := #PB1 And Not #PB1_old;
#PB2_flank := #PB2 And Not #PB2_old;
//Om PB1 flanksignal är till och räknare är mindre än 3 så adderas 1 till räknaren.
If #PB1_flank And #räknare < 3 And Not #Lampsignal Then
#räknare += 1;
//Om räknare blir = 3 tänd lampa
If #räknare = 3 Then
#Lampsignal := true;
End_If;
End_If;
//Om lampsignalen är TRUE och PB2 flanksignal kommer så subtraheras räknare tills räknare = 0
If #Lampsignal And #PB2_flank Then
#räknare -= 1;
//När räknare blir = 0, släck lampa
If #räknare = 0 Then
#Lampsignal := false;
End_If;
End_If;
//Kom ihåg status på tryckknapp med internt minne. Detta gör att flanksignal bara är TRUE 1 cykel.
#PB1_old := #PB1;
#PB2_old := #PB2;
Sitter på ett mobilt bredband så latency'n skulle nog vara extrem vid en eventuell uppkoppling.
Kan det inte vara så att du missade att toggla taggen "LOAD" till FALSE igen efter "Återställningen"?
För annars återställer du CTD.CV till 3 efter varje knapptryckning på PB2.
Ifall du vill ha automatisk återställning av räknarblocken (när du väl fått funktionen att fungera) så har du en lösning här https://imgur.com/a/AoV8ivj
Testade med den varianten men fick inte knappen att slockna efter tre knapptryckningar. Den där LOAD ska egentligen inte röras. Vad jag vet så ska jag kunna styra LampGreen med PB1 (tänd efter 3) och PB2 (släck efter 3). Ska inte finnas nåt annat.
Titta på denna, här länkar jag varje knapp till en input eller output i programmet. https://streamable.com/vofxjc
På denna video har jag kopplat PB1 till en funktion i programmet, PB2 till en annan funktion men det är kanske detta som är fel?
Jag tolkar det som att lampan ska tändas efter tre tryck på tryckknapp1 (PB1), sedan ska lampas släckas igen efter tre tryck på tryckknapp 2 (PB2). Stämmer detta?
Jag skrev ihop en funktion lite snabbt som verkar funka enligt ovan beskrivet beteende. Förvisso är den gjord i Siemens SCL, men det bör vara liknande syntax om inte samma i det du jobbar i.
Du kan väl prova detta?
Jag använder inga färdiga räknarblock, utan adderar/subtraherar till en räknarvariabel istället.
Hög flank på signal från tryckknapp detekterar jag med hjälp av minnesbitarna "PB1_old" och "PB2_old".
Jag har inte buggtestat funktionen till fullo så du vet.
Kod:
//PB1 = Tryckknapp1
//PB2 = Tryckknapp2
//Detektera rising edge (flank) på tryckknappar
//Om trycknapp = TRUE och minne för tryckknapp inte är TRUE,
//Sätt flanksignal = TRUE
#PB1_flank := #PB1 And Not #PB1_old;
#PB2_flank := #PB2 And Not #PB2_old;
//Om PB1 flanksignal är till och räknare är mindre än 3 så adderas 1 till räknaren.
If #PB1_flank And #räknare < 3 And Not #Lampsignal Then
#räknare += 1;
//Om räknare blir = 3 tänd lampa
If #räknare = 3 Then
#Lampsignal := true;
End_If;
End_If;
//Om lampsignalen är TRUE och PB2 flanksignal kommer så subtraheras räknare tills räknare = 0
If #Lampsignal And #PB2_flank Then
#räknare -= 1;
//När räknare blir = 0, släck lampa
If #räknare = 0 Then
#Lampsignal := false;
End_If;
End_If;
//Kom ihåg status på tryckknapp med internt minne. Detta gör att flanksignal bara är TRUE 1 cykel.
#PB1_old := #PB1;
#PB2_old := #PB2;
Tjena din kod har jag svårt att översätta till ladder.
Nu har jag fan provat allt. Varför kan man inte ha en PB2 som får tre knapptryckningar och resettar lampagrön?
Fattar ingenting om hur en countdown fungerar.
Testade med den varianten men fick inte knappen att slockna efter tre knapptryckningar. Den där LOAD ska egentligen inte röras. Vad jag vet så ska jag kunna styra LampGreen med PB1 (tänd efter 3) och PB2 (släck efter 3). Ska inte finnas nåt annat.
Titta på denna, här länkar jag varje knapp till en input eller output i programmet. https://streamable.com/vofxjc
På denna video har jag kopplat PB1 till en funktion i programmet, PB2 till en annan funktion men det är kanske detta som är fel?
Vad är det för tagg som den gula lampan till höger är kopplad till? Ser inte ut som att en följer statusen på "LampGreen" utan snarare CTU.Q...
Ifall du kollar i den första videon hur benet från CTD.Q och taggen "LampGreen" i variabeltabellen beter sig 23 sekunder in, så ser du att funktionen är korrekt när du trycker på "LOAD" och stegar upp mha. "PB2" till tre.
Vad är det för tagg som den gula lampan till höger är kopplad till? Ser inte ut som att en följer statusen på "LampGreen" utan snarare CTU.Q...
Stämmer, lampan är kopplad till up_counter.Q och det funkar väl? Eftersom den ska ge signal till LampGreen´s COIL efter tre tryck. https://streamable.com/2ujt5e
Citat:
Ifall du kollar i den första videon hur benet från CTD.Q och taggen "LampGreen" i variabeltabellen beter sig 23 sekunder in, så ser du att funktionen är korrekt när du trycker på "LOAD" och stegar upp mha. "PB2" till tre.
Iofs, men jag vet inte om jag får göra så. Allt ska egentligen styras med PB1 och PB2.
Stämmer, lampan är kopplad till up_counter.Q och det funkar väl? Eftersom den ska ge signal till LampGreen´s COIL efter tre tryck. https://streamable.com/2ujt5e
Här har du problemet.
Du återställer "LampGreen" med CTD'n, och eftersom den virtuella lampan inte är kopplad till denna taggen så kommer det inte att fungera.
Föreställ dig att en COIL är en utgång från PLC's I/O och skall styra något i fabriken, tex. en lysdiod.
Och se till att återställa räknarna med RESET och LOAD knapparna innan du börjar stega med PB1/PB2 så ska du nog se att det fungerar efter du rättat till ovanstående.
Citat:
Ursprungligen postat av codesyss
Iofs, men jag vet inte om jag får göra så. Allt ska egentligen styras med PB1 och PB2.
Skrev ihop ett förslag hur din styrning skulle fungera med automatisk återställning (så du kan tända och släcka lampan flera gånger) det kan vara nästa steg att prova. https://imgur.com/a/AoV8ivj
Här har du problemet.
Du återställer "LampGreen" med CTD'n, och eftersom den virtuella lampan inte är kopplad till denna taggen så kommer det inte att fungera.
Föreställ dig att en COIL är en utgång från PLC's I/O och skall styra något i fabriken, tex. en lysdiod.
Och se till att återställa räknarna med RESET och LOAD knapparna innan du börjar stega med PB1/PB2 så ska du nog se att det fungerar efter du rättat till ovanstående.
Jaaa nu fattar jag, när jag markerar virtuella lampan så är den kopplad till up_counter.Q och jag kan inte koppla den till down_counter.Q då en lampa verkar bara gå att koppla till en TAGG. I själva LADDER LOGIC så ser man att knapparna fungerar, och SET och RESET fungerar.
Uppgiften är kanske löst då.
Har du nåt förslag på hur jag kopplar en lampa till två knappar?
Citat:
Skrev ihop ett förslag hur din styrning skulle fungera med automatisk återställning (så du kan tända och släcka lampan flera gånger) det kan vara nästa steg att prova. https://imgur.com/a/AoV8ivj
Bra lösning, ska testa att koppla den virtuellt.
__________________
Senast redigerad av codesyss 2024-02-17 kl. 18:06.
Koppla din virtuella lampa till taggen "LampGreen", koden du redan skrivit gör så att båda knapparna PB1/PB2 tänder och släcker den.
Hmm, nu tänder inte PB1 lampan och PB2 kan inte släcka en släckt lampa. Annars är idén bra eftersom båda knapparna kan släcka den. Varför tänkte jag inte så från början.
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!
Stöd Flashback
Swish: 123 536 99 96Bankgiro: 211-4106
Stöd Flashback
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!