'Inteligenty' dom ze sterownikiem PLC

 Language:
Szukanie zaawansowane  

Aktualności:

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

Autor Wątek: Organizacja programu Codesys do zastosowan w inteligentym domu  (Przeczytany 12123 razy)

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Organizacja programu Codesys do zastosowan w inteligentym domu
« dnia: Marca 11, 2015, 07:00:34 pm »

Witam,

Zastanawiam się, w jaki sposób organizujecie swoje programy (strutkura, podprogramy/taski, FBy)

zalozym, ze do oprogramowania jest domek z 5 pokojami,
czy dla kazdego pomieszczenia piszecie osobny PRG kotry potem wywolujecie z programu glownego, czy tez taskiem ?
czy moze wszysztko do jednego wora, a tylko rzadziej uzywane funkcje uruchamiacie taskiem (jak np odczyt czasu)

na razie jestem na etapie testowania funkcjonalnosci, ale juz niedlugo trzeba będzie uruchomić cały system, a niechciałbym popełnić grubego błędu na starcie, który będzie się za mną ciągnął przez wieki.

Pozdrawiam,
Jacek
Zapisane

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Odp: Organizacja programu Codesys do zastosowan w inteligentym domu
« Odpowiedź #1 dnia: Marca 12, 2015, 08:11:11 pm »

Musze sobie dać żółtą kartkę za niezbyt pilne przestudiowanie strony autora...

http://www.edom-plc.pl/index.php/pl/wiecej-o-plc/funkcje/93-strukturaprogramow

ale mimo wszystko - zapraszam do dyskusji na ten temat.
Zapisane

kamiKAC

  • Jr. Member
  • **
  • Wiadomości: 78
    • Zobacz profil
Odp: Organizacja programu Codesys do zastosowan w inteligentym domu
« Odpowiedź #2 dnia: Marca 16, 2015, 09:15:38 pm »

U mnie osobno są rolety (oddzielnie góra i dół), osobno obsługa MODBUS, osobno temperatury, osobno światło. Główne programy są wyrysowane w CFC (oprócz obsługi MODBUS), bo tak jest przejrzyściej.
Własne funkcje i bloki mam w oddzielnym folderze "Moje funkcje" (napisane w ST).
Zapisane

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Odp: Organizacja programu Codesys do zastosowan w inteligentym domu
« Odpowiedź #3 dnia: Sierpnia 24, 2015, 10:49:35 am »

Wracam troszkę do tematu....
na początku zaczałęm budować PLC_PRG w FBD (bo tak podobno łatwiej), ale juz zaczynam tracic cierpliwość :)
mam problemy z łączeniem wejsc/wyjsc czy wykorzystaniem tych samych sygnałów na wejsciu (np zbieram kilka sygnałów w bloczku OR i chcialbym wyjsciem z ORa zasilić więcej niż jedno wejscie...)
nie wspomnę też o modyfikacjach... czasem wszystko idzie fajnie, a czasem dostaję nerwicy.
no i lekki problem z przejrzystością kodu. nie bardzo mogę grupować program pod względem funkcjonalności (cięzko przenosić poszczególne wiersze, a czasem cos doklejam na koncu do testów i .... tak już zostaje :) potem w programie jest parę linijek komunikacji, parę linijek oswietleń, potem znowu coś z komunikacji, żeby na koncu znaleźć np podlewanie ogródka :) )



zastanawiam się poważnie nad przetłumaczeniem mojego PLC_PRG do ST. z tego co widzę, to admin używa ST w programie głownym (czy używasz gdzies innego języka niz ST ??? :) )

jakie są wasze doświadczenia ??


Zapisane

admin

  • Administrator
  • Sr. Member
  • *****
  • Wiadomości: 313
    • Zobacz profil
Odp: Organizacja programu Codesys do zastosowan w inteligentym domu
« Odpowiedź #4 dnia: Sierpnia 24, 2015, 05:57:22 pm »

Cześć,

wszędzie używam ST i nigdy nie próbowałem inaczej.  Nie wiem nawet, czy bym potrafił.

Mój program PLC_PRG jest całkiem uporządkowany.

Na początku zmienne grupowe (do zbierania kilka wydarzeń z OR), potem obsługa świateł, przy czym każde 'światło' zaczyna się od obsługi przycisków krótki/długi i od definicji timerów pilnujących bezruchu. Następnie obsługa gniazdek i wentylatorów.  Potem obsługa rolet, które zaczynam od definicji timerów/schedulerów, a każdą z rolet mam w podobnym układzie, co światła - przy każdej bloki do obsługi długi/krótki przycisk. Dalej jest obsługa zaworów grzejników, liczników prądu, podlewania. 

Staram się umieszczać możliwie dużo komentarzy i grupować podobne do podobnego.  Nigdy jakoś specjalnie niczego nie szukam, program jest na poje potrzeby przejrzysty.  Kilka przykładów:

(*--------------------------------SWIATLA-------------------------------*)

(*Swiatla w kuchni czujki i ogólne zmienne*)
LIGHT_1K_ALLOFFSIGN(CLK:= OUT1 OR OUT2 OR OUT3 OR OUT4);
LIGHT_1K_ANYONSIGN(CLK:= OUT1 OR OUT2 OR OUT3 OR OUT4);
LIGHT_1K_MovementInDarkness(CLK:=Move_Kuchnia.Q AND HomeSleeps.BUSY AND NOT LIGHT_1K_GUARD2.Q);
(...)

(*Swiatlo w kuchni 1*)
LIGHT_1K1(xSwitch:=SWITCH_IN3.xShort OR VIS_L_1K1, xCentOFF:=LIGHT_K_OFF OR HomeSleep OR LIGHT_1K_GUARDSIGN.Q,
xCentON:=LIGHT_1K_MovementInDarkness.Q AND LIGHT_1K_AutoON[0]);
OUT1:=LIGHT_1K1.xActuator;

albo:

(*-----------------------G N I A Z D K A--------!!! ON oznacza WYlaczone gniazdko !!!!------------*)

(*Gniazdko Wewnatrz szafy ze switchem i baza dla telefonu*)
SOCKET_0K1( xCentON:=SWITCH_IN3.xLong OR HomeSleep, xCentOFF:=(Timers.Network_ONsignal AND NOT ON_HOLIDAY) OR SWITCH_IN4.xLong);
OUT82:=SOCKET_0K1.xActuator;

Nie chciałbym nikogo namawiać, ani narażać się zawodowcom, którzy potrafią wszystko wyklikać w drabinkach... dla mnie - amatora - drabinki wydają się być anachronizmem.

Pozdrawiam!
Zapisane

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Odp: Organizacja programu Codesys do zastosowan w inteligentym domu
« Odpowiedź #5 dnia: Sierpnia 24, 2015, 08:47:06 pm »

oooo widzisz .... to jest bardziej po mojemu :)

ja się zasugerowałem szkoleniem WAGO. tam ktos powiedział, ze program głowny fajnie mieć w FBD - przynajmniej na początku.
mordowałem się z tym FBD.... ale pora odpuścić. :) dzięki za potwierdzenie.

co do innych języków - drabinka bez sensu, ale np CFC fajnie czasem cos prostego zrobić :) ja np mam zmienną NOC (poki co nie mam czujników natężenia swiatla :) i wygląda to tak:


Zapisane

MarcinSz

  • Newbie
  • *
  • Wiadomości: 25
    • Zobacz profil
Odp: Organizacja programu Codesys do zastosowan w inteligentym domu
« Odpowiedź #6 dnia: Sierpnia 25, 2015, 11:24:14 pm »

Ja od początku zacząłem w ST i mam podobne zdanie jak Admin.

Natomiast organizacja jest u mnie taka:
POUs:
Gniazda (PRG)
Oświetlenie (PRG)
Przyciski (PRG)
Roleta (FB) (napisałem własną obsługe rolety ale na razie jeszcze nie ma się czym pochwalić
StartUp (PRG)
SterowanieRoletami (PRG)
ZdarzeniaCykliczne (PRG)


Wywołania:
Jako pierwszy startuje program StartUp o prostej treści:

Przyciski;
Oswietlenie;
Gniazda;

W tych trzech programach mam przypisanie wejść i wyjść. Program StartUp pracuje w tasku o nazwie AutoStart, który ustawiłem na "cyclic" z okresem 70560 minut (więcej się nie dało). Chodzi o to żeby się wykonał raz. Inaczej niż Admin, przypisania robię raz, a nie w wykonywanej co chwile pętli. Jak się sterownikowi oświadczy, że
GniazdoKotlowniaKociol5OUT := GniazdoKotlowniaKociol5.xActuator AND (UruchomRozdzielaczDolnyTemperatura OR UruchomRozdzielaczGornyTemperatura);to on już to sobie zapamięta i zastosuje przy każdej zmianie stanów.

Program ZdarzeniaCykliczne wykonuje się raz na minutę, na razie mam tam odczyt temperatur i włączenie lub wyłączenie ogrzewania.
Zapisane
pozdrawiam, MarcinSz

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Odp: Organizacja programu Codesys do zastosowan w inteligentym domu
« Odpowiedź #7 dnia: Sierpnia 26, 2015, 02:56:33 pm »

To ja jeszcze mam małe pytanko dotyczące sposobu programowania Admina:
często parametry definiujesz w VAR - co ma sens bo nie zasmieca potem kodu programu, sprobowalem tez tego sposobu, ale zmiany tych parametrów w VAR nie dają efektu.
tzn wartość raz przypisana w VAR nie zmienia się po jej zmianie w kodzie. po uruchomieniu programu ciągle jest stara wartość.

tak ma być??
Zapisane

admin

  • Administrator
  • Sr. Member
  • *****
  • Wiadomości: 313
    • Zobacz profil
Odp: Organizacja programu Codesys do zastosowan w inteligentym domu
« Odpowiedź #8 dnia: Sierpnia 27, 2015, 10:02:56 am »

Cześć,

MarcinSz: Nie wiem, czy takie wyodrębnianie przypisywania bloków do wyjść w odrębnym procesie wykonywanym raz ma jakikolwiek wpływ na szybkość wykonywania programu.  Gdyby tak było - rozumiem Twoje podejście.  Jeśli nie wypływa na sprawność, to chyba trochę utrudnia, gdy obsługę jakiegoś aktora (np. światła) masz w 2 miejscach - gdzie indziej blok funkcyjny, gdzie indziej przypisanie do wyjścia.

mordorr: Co do przypisywania wartości w obszarze deklarowania zmiennych:  robię to, gdy w programie modyfikuję wartość danej zmiennej i chce mieć pewność, że od samego początku uruchomienia programu ma już jakąś wartość i to taką, jaką ja chcę LUB gdy w programie nie zamierzam zmieniać wartości tej zmiennej (np. hasło do logowania do bazy SQL).

Praktyczne zastosowanie jest więc ograniczone.  Co więcej zmiana wartości zmiennej w obszarze deklaracji (np z VAR a : BYTE:=1; na a: BYTE:=2;) nie będzie miało efektu bez 'głebokiego' wgrania programu.  Przypisanie wartości zadanych w obszarze deklaracji wykonuje się wg mnie tylko raz - przy starcie programu.  Zmiana czegokolwiek i wgranie programu on-line, nie da efektu. Co więcej, jeśli taka zmienna jest w obszarze RETAIN, nawet restart całego programu nic nie da (trzeba by zrobić Clean All).  Zawsze można też zmienić wartość takiej zmiennej w trybie online przez 'Write values'.

Pozdrawiam,
« Ostatnia zmiana: Sierpnia 27, 2015, 10:04:59 am wysłana przez admin »
Zapisane

siema

  • Newbie
  • *
  • Wiadomości: 33
    • Zobacz profil
Odp: Organizacja programu Codesys do zastosowan w inteligentym domu
« Odpowiedź #9 dnia: Września 10, 2015, 10:45:20 pm »

A jak robicie Panowie z wejściami/wyjściami na modułach PLC- czy staracie się grupować jakoś funkcje (np. włączniki świateł podłączacie od %IX0.0-%IX2.15, sygnały na przekaźnik od %QX0.0-%QX3.15, itd.) ? Chcąc zrobić wszystko perfekcyjnie rozpisałem sobie już wszystkie włączniki, wszystkie światła, wszystkie rolety i przyporządkowałem im odpowiednie wejścia/wyjścia tyle, że zanim osiągnę ten stan końcowy, to już na szybko wykorzystałem pierwsze wejścia na cośtam, a i tak mam wrażenie że z biegiem czasu okaże się, że grupowanie szlag trafi bo kolejne światłow podłączę gdzieś poza tym wygospodarowanym blokiem...
Jaką Wy przyjęliście metodykę i dlaczego jesteście z niej (nie)zadowoleni? ;)
Zapisane

admin

  • Administrator
  • Sr. Member
  • *****
  • Wiadomości: 313
    • Zobacz profil
Odp: Organizacja programu Codesys do zastosowan w inteligentym domu
« Odpowiedź #10 dnia: Września 11, 2015, 08:46:24 am »

Cześć,

Przeszedłem dokładnie taką samą drogę.  Na początku plan i grupowanie, potem życie i miejscami zdarza się jakiś nieuporządkowany bit.... i generalnie nie ma to wg mnie znaczenia, pod warunkiem, że ma się wejścia i wyjścia dobrze opisane... 

Pozdrawiam,
Zapisane

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Odp: Organizacja programu Codesys do zastosowan w inteligentym domu
« Odpowiedź #11 dnia: Września 11, 2015, 11:14:09 am »

Ja wpinam "jak leci" od razu dokumentująć adresy.
staram się "dywersyfikować" obwody. np. nie dawac na jednej karcie wszystkich obwodow oswietlenia z jednego pokoju.
w razie awarii karty być może będzie działać choćby część obwodów (pewnie małe szanse na takie wydarzenie, ale ...)



Zapisane

Umcyk

  • Jr. Member
  • **
  • Wiadomości: 95
  • Beckhoff Cx9010
    • Zobacz profil
    • Nasz dom...
Odp: Organizacja programu Codesys do zastosowan w inteligentym domu
« Odpowiedź #12 dnia: Listopada 07, 2015, 03:38:47 pm »


co do innych języków - drabinka bez sensu,

a niby dlaczego??

na codzien w pracy uzywam jezyka LD i jest on dla mnie najbardziej intuicyjny... jakie sa przeszkody do uzycia go w automatyzacji domu??

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Odp: Organizacja programu Codesys do zastosowan w inteligentym domu
« Odpowiedź #13 dnia: Listopada 07, 2015, 05:26:03 pm »

moze zle sie wyslowilem :) jak dla mnie bez sensu, bo na codzien uzywam jezykow przypominajacych ST. intuicyjnie programuję wlasnie w ten sposob :)

Zapisane