'Inteligenty' dom ze sterownikiem PLC

 Language:
Szukanie zaawansowane  

Aktualności:

Powrót do strony głównej: www.edom-plc.pl

Autor Wątek: Multiclick z OSCAT nie działa...  (Przeczytany 2210 razy)

kempa007

  • Jr. Member
  • **
  • Wiadomości: 92
    • Zobacz profil
Multiclick z OSCAT nie działa...
« dnia: Października 07, 2020, 05:05:55 pm »

Witam,

Czy ktoś korzysta z biblioteki OSCAT Building i zawartych tam bloków dotyczących rozpoznawania kilku kliknięć przyciskiem? Są tam dwa Click i Click_Mode. Na razie sprawdzałem ten drugi. W opisie jest podane, że funkcja ta po wykryciu klikniec  wystawia stan wysoki na wyjściu przez przynajmniej jeden cykl pracy. Być może wszystko więc działa prawidłowo, a dla sterownika to może za krótko, aby wykryć zmianę stanu. Wyjścia single i double podłączyłem pod zwykły blok FB_Latching, bo chciałem sterować jednym przyciskiem oświetleniem na ogrodzie. Po podłączeniu pojedynczych przycisków oświetlenie działa. Czy ktoś ma jakiś pomysł na co zwrócić uwagę, ewentulanie czy macie do polecenia coś innego realizującego powyższą funkcję?

Zapisane

Simeone

  • Jr. Member
  • **
  • Wiadomości: 98
    • Zobacz profil
Odp: Multiclick z OSCAT nie działa...
« Odpowiedź #1 dnia: Października 08, 2020, 07:15:48 am »

Najlepiej załącz fragment kodu, łatwiej będzie znaleźć rozwiązanie problemu.

Wrzucam moją implementację bloku CLICK_MODE.

W sekcji deklaracji zmiennych:
VAR
Light_1, Light_2, Light_3: Fb_LatchingRelay;
LongShort_IN80 : CLICK_MODE;
END_VAR

W sekcji kodu programu:
LongShort_IN80( IN := IN80 );

Light_1(xSwitch := LongShort_IN80.SINGLE OR VIS_SalonS1);
xOut_SalonS1 := Light_1.xActuator;

Light_2(xSwitch:=LongShort_IN80.DOUBLE OR VIS_SalonS2);
xOut_SalonS2 := Light_2.xActuator;

Light_3(xSwitch := LongShort_IN80.LONG OR VIS_SalonN1);
xOut_SalonN1 := Light_3.xActuator;

W pierwszej linii przypisuję do zmiennej typu CLICK_MODE wejście fizyczne, którego sposób wciśnięcia będzie rozpoznawany.

W trzeciej, szóstej i dziewiątej linii definiuję zmienne typu Fb_LatchingRelay przypisując im sposób wciśnięcia, które będzie je aktywowało, przy okazji OR-uję zmienne wykorzystane do sterowania z wizualizacji.

Zmienne xOut... w kolejnych liniach to nazwy fizycznych wyjść karty wago, które połączone są z przekaźnikami poszczególnych świateł.

W ten sposób poprawnie działa obsługa jednego wyłącznika w trybie pojedynczego kliknięcia, podwójnego kliknięcia i dłuższego przytrzymania.
Zapisane

kempa007

  • Jr. Member
  • **
  • Wiadomości: 92
    • Zobacz profil
Odp: Multiclick z OSCAT nie działa...
« Odpowiedź #2 dnia: Października 08, 2020, 01:05:29 pm »

Dokladnie tak to robie tylko mam jeszcze wlasny blok funkcyjny bo dluzszym przycisnoeciem wlaczam wszystkie swiatla i wylaczam. Ale mowisz  ze u Ciebie to smiga bez zarzutu?
Zapisane

Simeone

  • Jr. Member
  • **
  • Wiadomości: 98
    • Zobacz profil
Odp: Multiclick z OSCAT nie działa...
« Odpowiedź #3 dnia: Października 08, 2020, 02:19:05 pm »

Tak, śmiga

Wrzuć kod źródłowy to zobaczymy gdzie może być błąd
Zapisane

kempa007

  • Jr. Member
  • **
  • Wiadomości: 92
    • Zobacz profil
Odp: Multiclick z OSCAT nie działa...
« Odpowiedź #4 dnia: Października 08, 2020, 04:29:26 pm »

Deklaracja zmiennej
//multiclick

Multi_Ogrod_Wiatrolap: OSCAT_BUILDING.CLICK_MODE :=(T_LONG := T#1S);
i program (Oswietlenie_Ogrod to blok funkcyjny, w ktorym realizuje funkcje długiego i krótkiego przytrzymania przycisku, aby gasić wszystkie trzy światła na raz lub je zapalać. I ta cześć działa bez zarzutu od początku):

Multi_Ogrod_Wiatrolap.IN:=xIN_Wiatrolap_2_01;

Oswietlenie_Ogrod(xSwitch_1 :=Multi_Ogrod_Wiatrolap.SINGLE, xSwitch_2:=Multi_Ogrod_Wiatrolap.DOUBLE, xSwitch_3 :=Multi_Ogrod_Wiatrolap.TP_LONG);
xOUT_oswietlenie_Ogrod_furtka := Oswietlenie_Ogrod.xLight_1;
xOUT_oswietlenie_Ogrod_taras := Oswietlenie_Ogrod.xLight_2;
xOUT_oswietlenie_Ogrod_tuje := Oswietlenie_Ogrod.xLight_3;
Zapisane

kempa007

  • Jr. Member
  • **
  • Wiadomości: 92
    • Zobacz profil
Odp: Multiclick z OSCAT nie działa...
« Odpowiedź #5 dnia: Października 08, 2020, 04:45:38 pm »

Znalazłem błąd :)

Multi_Ogrod_Wiatrolap.IN:=xIN_Wiatrolap_2_01;

powinno byc:

Multi_Ogrod_Wiatrolap(IN:=xIN_Wiatrolap_2_01);
Zapisane

Simeone

  • Jr. Member
  • **
  • Wiadomości: 98
    • Zobacz profil
Odp: Multiclick z OSCAT nie działa...
« Odpowiedź #6 dnia: Października 08, 2020, 04:52:55 pm »

Zapisane

kempa007

  • Jr. Member
  • **
  • Wiadomości: 92
    • Zobacz profil
Odp: Multiclick z OSCAT nie działa...
« Odpowiedź #7 dnia: Października 08, 2020, 05:16:44 pm »

hahahaha :)) Nie jest programista, zawsze mnie irytuje brak ; () lub innych tego typu rzeczy :/ a program się ładnie skompilował :)
Zapisane