1 (edytowany przez grzecho1205 2010-02-02 17:37:18)

Temat: Projekt - zbiornik_sterowanie

Witam!

Potrzebuję waszej pomocy. Jestem początkującym w CoDeSys.
Mianowicie muszę w języku ST napisać program który steruje dwoma zbiornikami. Chodzi mi o otwieranie ich gdy osiągną odpowiednie napełnienie. I zamknąć je kiedy się opróźnią.
Sterowanie ma być przemienne, czyli jeśli jeden zbiornik się napełnia to ma zamknięty zawór wylotowy,gdy się napełni do odpowiedniego poziomu następuje jego otwarcie i opróżnienie. A w tym samym czasie następuje zamknięcie zaworu wylotowego drugiego zbiornika i jego napełnianie. I przy okazji licznik zlicza mi ile razy się napełnił zbiornik, pozwoli mi to na policzenie ile przepłynęło cieczy przez te zbiorniki.

Mam nadzieję, że dość zrozumiało napisałem(starałem się)

Do tej pory napisałem tyle:

PROGRAM PLC_PRG
VAR
    zbiornik: UINT;
    licznik_napelnien AT %MB10: BYTE;
    otwarcie_zaworu AT %QX0.0: BOOL;
    zamkniecie_zaworu AT %QX0.0: BOOL;
END_VAR

************************************************************************

zbiornik:= zbiornik +1;
IF zbiornik = 100 THEN
zbiornik:= 0;
licznik_napelnien:=licznik_napelnien+1;
END_IF



IF zbiornik<50
THEN zamkniecie_zaworu:= TRUE;
ELSE zamkniecie_zaworu:= FALSE;
END_IF

IF zbiornik>50
THEN otwarcie_zaworu:= TRUE;
ELSE otwarcie_zaworu:= FALSE;
END_IF

Tylko nie za bardzo to spełnia rządaną funkcję, jeśli ktoś ma pomysł to prosze o pomoc??

2

Odp: Projekt - zbiornik_sterowanie

Witam,
najważniejsze: używasz tej samej zmiennej dla otwarcia i zamknięcia zaworu (dla %QX0.0) więc cokolwiek chcesz zrobić to jednocześnie go "zamykasz i otwierasz".
Większość zaworów działa w sposób: TRUE=otwarty, FALSE=zamknięty. Więc nie ma potrzeby wykorzystywać 2 wyjść fizycznych sterownika.
Użyj  liczników do zliczania...

smile

3

Odp: Projekt - zbiornik_sterowanie

z kopiuj i zaadresuj

PROGRAM PLC_PRG
VAR
    max1: BOOL;        (*zbiornik 1 max *)
    nalewaj2: BOOL;    (*zawór napełniania 1 lub 2 zbiornika*)
    wylej1: BOOL;        (*wlewanie z zbiornika 1*)
    liczbazbiornikow: INT;        (*jak w nazwie*)
    min1: BOOL;        (*czujnik min1 zbiornik 1*)
    max2: BOOL;        (*czujnik max 2 zbiornik 2*)
    wylej2: BOOL;        (*zawór wlewania z zbiornika 2*)
    min2: BOOL;        (*minimum zbiornik2*)
END_VAR


IF max1 AND min2 THEN
nalewaj2:=1;
wylej1:=1;
wylej2:=0;
liczbazbiornikow:=liczbazbiornikow+1;
END_IF
IF min1 AND max2 THEN
nalewaj2:=0;
wylej2:=1;
wylej1:=0;
liczbazbiornikow:=liczbazbiornikow+1;
END_IF
IF liczbazbiornikow=3000 THEN liczbazbiornikow:=0;
END_IF

4 (edytowany przez Waldek 2010-02-23 21:17:19)

Odp: Projekt - zbiornik_sterowanie

Skompilowało się ale nie włącza mi się liczenie, przez co nie pokazuje mi true/ false ??
To co napisał Marcin_kr7 ma sens ale co zrobić żeby coś się zmieniało??
Pomocy?

5

Odp: Projekt - zbiornik_sterowanie

Przykład jest tylko przykładem... musisz dodać kilka elementów we/wy... to po pierwsze, po drugie ten przykład da się uruchomić w symulacji...
czy uruchamiałeś symulację i potrafisz zmienić-wymusić stany zmiennych ?
poczytaj o tym w helpie...

pozdrawiam smile

Cokolwiek coś robisz, zawsze ktoś Ci pomaga...
www.falowniki.com - www.codesys.pl - www.psa.pl - www.directautomation.eu - www.szr.pl

6

Odp: Projekt - zbiornik_sterowanie

Nie za bardzo udało mi się znaleśc coś na temat tego wymuszania zmiennych, prosze o pomoc
Z gory dziekuje

7

Odp: Projekt - zbiornik_sterowanie

kolego jak nie rozumiesz to my ci nie pomożemy więc zacznij tu
http://www.codesys.pl/code,3,33,33.html
tu jest cały podręcznik po polsku i bardzo przystępnie zredagowany
poczytaj a wszystko stanie się jasne