Hirdetés

Új hozzászólás Aktív témák

  • Szirty
    őstag

    Szia Szirty

    Köszönöm a gyors válaszokat!

    Ezek alapján el is indultam egy valós példával:
    [link]

    És a hozzátartozó lista:

    VAR
    IN1: BOOL; (*Garázsfeljáró autó/kézi váltókapcsoló*)
    IN2: BOOL; (*Még nem tudom*)
    IN3: BOOL; (*Hóérzékelő*)
    IN4: BOOL; (*Garázsfeljáró fűtés kézi START/STOP nyomógomb*)
    M100: BOOL;
    M101: BOOL;
    R_TRIG_1: R_TRIG;
    SR_1: SR;
    M1: BOOL; (*Garázsfeljáró fűtés feltétel*)

    IN5: BOOL; (*Lakás fűtés igény*)
    M2: BOOL; (*Lakás fűtés feltétel*)

    Q101: BOOL; (*Termofej_1*)
    Q104: BOOL; (*Garázsfeljáró fűtés aktív*)
    T1: TON;
    Q102: BOOL; (*Gázkazán*)
    Q103: BOOL; (*Garázsfeljáró szivattyú*)

    T2: TON;
    LAKAS_KERINGETO_SZIVATTYU: BOOL;
    Q201: BOOL; (*Lakás keringető szivattyú*)
    END_VAR

    Szóval ez egy valós példa szeretne lenni. Házas téma, lakásfűtés + garázsfeljáró fűtés.

    1. A létrában az általad linkelt képen látható megoldást (valahol középen leágazok egy kontakttal, és onnan készítek egy coil-t), ezt nem tudtam megoldani. Mindig csak a meglévő coil-al akar párhuzamosan rakni egy másikat, de az elé nem enged befűzni semmit.

    2. Kimeneti változók visszacsatolása/nyomógomb megoldás rendben, lásd a képet.

    3. Használom az "M"-es változókat is, ez is jó.

    4. "FB"-ben tudok több független kimenetet előállítani egy soron, úgyhogy most ezt használom létra helyett

    5. Analóg-ot értem, de most ebben nem volt rá szükség. Akkor ST-ben megírom a fg.-t, aztán azt beillesztem a létrába vagy FB-be, ez így jól hangzik

    Néhány dolgot nem értek:
    6. "FB"-ben, ahogy a képen is látható nem tudok visszacsatoló vonalat rajzolni egérrel, címkézni kell, ez így nem szép :(

    7. ahogy a képen is látod, azt próbáltam, hogy először megfogom az eseményeket (pl. a garázsfűtés csak külső eseményektől függ, de a házfűtés a garázsfűtéstől is, ahogy a képen látható). Utána ezekhez a már magasabb szintű eseményekhez rendelem az output-okat. Viszont ez nem tűnik jónak, mert pl. a Q102 (gázkazán)-t az egyik be a másik pedig kibillenti, pedig működnie kellene. Itt akkor egy sorban egy kimenetre koncentráljak, és ahhoz tegyem oda a bemeneteket, mert akkor azt már más nem bántaná :F Vagy maradjon így, de akkor még egy külön sorban markerezzek, és ott OR-oljam össze a kazán jeleit ?

    8. Úgy látom, hogy nem mindegy a network-ok sorrendje. Pl. a képen első a garázs, második a lakás. Ha megfordítanám, akkor a lakás elindulhat a garázzsal együtt :F

    9. Mi alapján nevezzem el az "M"-eket ? Mitől lesz egy "M" M100.3 vagy M110.4 ? Ezt elég fontosnak gondolom, mert az a jó, ha ránézek, és azonnal tudom (nagyjából), hogy mi is akar az ott lenni...

    Köszi.

    Imi.

    Helló moseras!

    "csak a meglévő coil-al akar párhuzamosan rakni egy másikat, de az elé nem enged befűzni semmit."

    Akkor ez nyilvánvalóan a használt programfejlesztői környezet egyik sajátossága (korlátja).

    "6. "FB"-ben, ahogy a képen is látható nem tudok visszacsatoló vonalat rajzolni egérrel, címkézni kell, ez így nem szép"

    Ez pedig egy másik korlátja lehet.
    Úgy néz ki hogy ez a Wago stuff még nem forrta ki magát eléggé.

    "a Q102 (gázkazán)-t az egyik be a másik pedig kibillenti, pedig működnie kellene. Itt akkor egy sorban egy kimenetre koncentráljak, és ahhoz tegyem oda a bemeneteket, mert akkor azt már más nem bántaná :F"

    Nos alapszabálynak mondható, hogy egy programba nem szabad több közönséges out (coil) utasítást rakni ugyanarr a abitre. Ezért pl. az Omron fordítója szól is.
    Lerakáskor:

    Fordításkor pedig:
    WARNING: Duplicated output - OUT 1.01 at rung 0 (6, 0)
    WARNING: Duplicated output - OUT 1.01 at rung 1 (6, 0)

    Ez a warning kikapcsolható ebben az esetben, mert néha előfordul, hogy szükség van ilyesmire.
    De a te esetedben a kimenet két helyről való "kapcsolása" nem a várt hatást hozza, mert a kimeneti bit állapota az utolsó out utasítás előtti feltétel logika eredményét fogja felvenni.

    "Itt akkor egy sorban egy kimenetre koncentráljak, és ahhoz tegyem oda a bemeneteket, mert akkor azt már más nem bántaná :F"

    Igen!

    "8. Úgy látom, hogy nem mindegy a network-ok sorrendje. Pl. a képen első a garázs, második a lakás. Ha megfordítanám, akkor a lakás elindulhat a garázzsal együtt :F"

    Néha a sorrend tnyleg nem mindegy. De ebben az esetben kizártnak tartom, hogy a felcserélés után máshogy működjön. Vagy valami nagyon elromlott valahol...

    "9. Mi alapján nevezzem el az "M"-eket ? Mitől lesz egy "M" M100.3 vagy M110.4 ? Ezt elég fontosnak gondolom, mert az a jó, ha ránézek, és azonnal tudom (nagyjából), hogy mi is akar az ott lenni..."

    Nos az M-eket úgy kell elképzelni, hogy azok egy jól körülhatárolható memóriaterületen kapnak helyet. Az M-ek száma egyben ennek a területnek a címei is.
    Az M-ek tehát végülis memória címek.
    Minden PLC-ben ezeknek az M-eknek a száma előre rögzített. Ezekkel gazdálkodhatsz.
    Elérhetőek többféle címzésmóddal is, ezekre figyelni kell. Gondolom a wago-nál is így van, de nem ismerem, így nem biztos.
    De leírom, hogy az általam ismert PLC-knél ez hogy van.
    Van egy ún. szimbólum tábla. Ez egy lista, vagy táblázat ha úgy tetszik. Arra való, hogy az említett M-ekhez szimbólum nevet és megjegyzést lehessen hozzárendelni. De nem csak az M-ekhez, hanem a kimenetekhez, bemenetekhez és egyéb memóriaterületek elemeihez is.
    Egy program írása azzal szokott kezdődni, hogy ebbe a szimból táblába beírjuk melyik ki és bemenet milyen funkcióval bír (amit ugye a HW huzalozás határoz meg).
    A program írása közben pedig, amikor szükség van egy belső változóra, akkor a szimbólum táblába felveszünk egy új elemet egy még eddig nem használt belső változóra (ez esetben M-re) és odaírjuk a dumát mire használjuk. Ez egyrészt sokat segít a program átláthatóságának a megtartásában, másrészt könnyű áttekinteni azt is, melyik memóriaterületeket használtuk már fel.
    Gondolom nem kell mondani, hogy egy már felhasznált bit más célra történő újrahasznosítása milyen következményekkel járhat :)

    Bizonyos programfejlesztők megengedik a szimbolikus címzést is. Amikor az "érintkezőhöz" vagy kimenethez nem annak címét kell leírni (Q4.0, M6.5, I1.1 stb) hanem a szimbolikus nevét ("kazan" "keringeteto szivattyu" stb). Ezeket a szimbólum táblában kell megadni.
    Más szóval: Itt nem úgy van mint pl. egy magas szintű nyelvben, hogy deklarálok egy változót, aminek a változódeklarációs részben megadom a nevét és a típusát, aztán a fordító majd azt csinál vele amit akar (avagy helyet foglal neki és majd tudja milyen címen van).
    Itt úgy van, hogy te kinézel magadnak egy memóricímet és egy megjegyzést/nevet fűzöl hozzá, majd használod amire akarod.
    Ha egyszer már felhasználtad máshol, akkor így jártál :)

Új hozzászólás Aktív témák