Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

CoDeSys i blok LIMITALARM

picia888 14 Lip 2009 13:37 1759 11
  • #1 14 Lip 2009 13:37
    picia888
    Poziom 8  

    Mam problem z blokiem funkcyjnym LIMITALARM. Mianowicie nie wiem jak do "IN" wprowadzic wartość INT. Jak probuje to zrobic to wywala mi błąd "Cannot convert INT to BOOL". Najprawdopodobniej jest to nie wielki problem, ale ja nie mam doświadczenia w programowaniu LD.


    Poprawiłem tytuł - Regulamin. [c_p]

  • #2 14 Lip 2009 14:37
    mojavka
    Poziom 9  

    hej,

    Moze zle zdefiniowales sam blok. Zdefiniuj go w zmiennych globalnych. Pozniej podaj liczby na wejscia in, high i low i powinno smigac.

  • #3 14 Lip 2009 15:00
    picia888
    Poziom 8  

    Najprawdopodobniej problem tkwi w tym, że nie potrafie podać do wejście IN zmiennej INT jakiej wymaga ten blok. Bo na "kablu" który dochodzi do wejście IN znajdują sie tylko wartości TRUE albo FALSE. Dlatego mam podejrzenie ze jakis blok pomocniczy może powinienem wstawić, lecz nie wiem jaki.

  • #4 14 Lip 2009 15:33
    mojavka
    Poziom 9  

    Napisz w FBD tam nie ma problemu:)

  • #5 14 Lip 2009 15:36
    picia888
    Poziom 8  

    Może jednak ktoś znajdzie rozwiązanie tego problemu;]

  • #6 14 Lip 2009 17:38
    kletk
    Poziom 12  

    Wrzuć go do pustego obiektu FBD i przekonwertuj na LD. Może się uda. Ja się próbuje przestawiać na CFC+ST bo LD to męczarnia

  • #7 14 Lip 2009 19:21
    Wawrzo.
    Poziom 17  

    Myślę......?
    INT to zmienna analog (0....32767) BOOL to zmienna która może przyjąć tylko dwa stany 1 lub 0. Nie są to zmienne w jakikolwiek sposób kompatybilne.
    Z jakiej biblioteki skorzystałeś.
    Wawrzo.

  • #8 14 Lip 2009 21:42
    kenion
    Poziom 19  

    Cytat:
    INT to zmienna analog (0....32767)

    zmienna typu INT jest 16 bitowa a zakres liczb wynosi od -32768 do 32767.
    Cytat:
    Mam problem z blokiem funkcyjnym LIMITALARM. Mianowicie nie wiem jak do "IN" wprowadzic wartość INT. Jak probuje to zrobic to wywala mi błąd "Cannot convert INT to BOOL

    Widac ewidentnie podanie na wejście bloku funkcyjnego LIMITALARM zmiennej o złym typie. Jeżeli twoja zmienna INT przyjmuje tylko wartości 0 lub 1 (liczbowe) to możesz przekonwertowac ją na zmienną typu bool korzystając z funkcji konwersji INT_TO_BOOL. Pozdrawiam

  • #9 15 Lip 2009 09:01
    mojavka
    Poziom 9  

    Witam,

    Czy Tobie chodzi o wykorzystanie bloku limitalarm czy tylko o pozbycie sie błędu? Z tego co widzę z helpa istnieje typ konwersji BOOL_TO_INT tylko wynik tej konwersji jest 1 a Tobie chyba chodzi o porowanie jednak wartości INT z tego co rozumiem, tak?
    Druga sprawa typ konwersji , który napisałem powyżej istnieje w językach IL, ST, FBD i nie ma go w LD przynajmniej w moim helpie i bibliotekach codesys.
    Jeśli chcesz porównywać wartości INT wspomnianym blokiem napisz to w FBD tak jak pisałem lub postaraj się zamienić na inny język tak jak koledzy wyżej radzili.

    Pozdrawiam i powodzenia

  • #10 15 Lip 2009 10:41
    picia888
    Poziom 8  

    dokladnie chodzi mi o to, aby porównać wartości, a dokladniej, czy wartość podana na IN jest wieksza od LOW i mniejsza od HIGH. A cała rzecz sie rozchodzi o to, ze nie wiem jak podac jakas wartość INT na wejscie IN.

  • #11 15 Lip 2009 11:01
    mojavka
    Poziom 9  

    No właśnie. Czyli nie możesz tego konwertować na zmienne BOOLOWSKIE,bo nie osiągniesz tego co chcesz. Ponawiam pytanie czemu nie przejdziesz na inny język? Tam możesz uzyskać to co chcesz. Mozesz to również zrobić na porównaniu GT i LT. Przejdź na FBD i masz załatwiona sprawę.

    Bez odbioru

  • #12 15 Lip 2009 11:33
    picia888
    Poziom 8  

    Juz znalazlem rozwiazanie;] napisalem sobie wlasny blok funkcyjny z jedna zmienna wejsciowa typu INT i wyjsciem BOOL i wszystko dziala;]

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME