Elektroda.pl
Elektroda.pl
X
SterControl
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[PLC] Zliczenie aktywnych zmiennych w jednym cyklu

cyp3k 19 Paź 2016 14:10 738 4
  • #1 19 Paź 2016 14:10
    cyp3k
    Poziom 13  

    Czesc, mam prosbe do nieco bardziej doswiadczonych programistow.
    Bo sam juz sie zakrecilem.
    Mam sterowac instalacja 12-tu silosow. Napisalem juz warunki zezwalajace na ich napelnienie. Calosc sterowana jest z HMI.
    Problem w tym ze potrzebuje w jakis sposob zliczyc ilosc aktywnych silosow do napelnienia i na tej podstawie sterowac szybkoscia napedow.
    Moje pytanie - poniewaz kazdy szereg warunkow konczy sie wystawieniem jednego bitu w pamieci i tym sposobem mam 12 niezaleznych bitow ktore musze zliczyc.
    W jaki sposob najlepiej to zrobic ? Myslalem o wykorzystaniu komparatora albo countera ale jakos nie moge sobie wyobrazic jak to dodawac i odejmowac. Bo dla kazdego warunku musialaby istniec detekcja zbocza a counter musialby byc typu CTUD. Jest jakis prostszy sposob na realizacje tego zadania ?

    0 4
  • SterControl
  • #2 19 Paź 2016 14:51
    Pittt
    Poziom 31  

    nie sumuj bitów tylko liczby - 1. 12 = 100%, 0 = 0%, 6 = 50 % itd.

    0
  • SterControl
  • #3 19 Paź 2016 15:03
    Markos80

    Specjalista Automatyk

    Jakie CPU?
    S7-300/400/1500 możesz użyć funkcji FC99 BITSUM, dla S7-1200 zwykła pętla FOR, jeśli warunki wrzucisz do tablicy lub zaimplementować jakiś algorytm popcount, np.: SWAR.
    Jeśli prędkości są zwiększane liniowo w zależności od ilości to wtedy prędkość 0-100% uzyskasz mnożąc ilość przez 100/12.

    0
  • #4 19 Paź 2016 15:08
    longer4891
    Poziom 9  

    Może trochę prymitywnie ale sprawdzałbym każdy bit po kolei, jeżeli bit = true do zwiększam wartość zmiennej o 1. I tak dwanaście bitów, na końcu wartość
    zmiennej odzwierciedla ilość ustawionych bitów. Po odczycie zmiennej wpisuje do niej "zero". I tak w każdym cyklu mam ilość ustawionych bitów. W STEP7 w stl wygląda to tak (dla jednego bitu):

    A I 0.0 //powtarzamy n-razy
    JCN _001
    L LB 0
    + 1
    T LB 0
    _001: NOP 0

    L LB 0
    T DB0.DBB 10

    L 0
    T LB 0

    0
  • #5 19 Paź 2016 15:54
    cyp3k
    Poziom 13  

    Hej, dzieki za tak liczne odpowiedzi.
    Wypilem kawe, umysl troche sie rozjasnil i wpadlem na pewne rozwiazanie - stworzylem dodatkowy bit pomocniczy (wspolny) aktywowany rownolegle do cewki obrazujacej stan aktywacji silosu.
    Utworzylem Counter typu CTUD i CU wyzwalany jest ze zbocza narastajacego bitu pomocniczego a CD ze zbocza opadajacego przeciez Counter i tak reaguje wylacznie na zbocza.
    Co do CPU to M340 od Schneidera - zupelnie nowy i strasznie upierdliwy temat dla kogos wychowanego na Siemensie.
    I z uwagi na rozbudowanie procesu i latwiejsza diagnostyke zobligowany jestem dostarczyc kod w LAD lub FBD.

    0