Keresés

Hirdetés

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

  • And

    veterán

    válasz kip.kop #1431 üzenetére

    A Modbus-ról itt olvashatsz bővebben: [link], de általában a Modbus-t támogató PLC-k dokumentációja is jól használható segédletnek, hisz utóbbiak a konkrét PLC-típusra jellemző paraméterezést is megadják.
    RS485: Kicsit kevered a protokoll és az átviteli közeg fogalmát. Az RS-485 nem határoz meg protokollt, pusztán a busz fizikai jellemzőit definiálja. Egyes protokollok - a Modbus is ilyen - pedig nincsenek közeghez kötve, éppúgy működhetnek RS485-ön, mint RS232-n, etherneten (TCP-csomagban), vagy akár másfajta adatvonalakon.
    Erről a bizonyos KilnBus protokollról pedig úgy látom, minimális elérhető információ van, eléggé 'háziszabványnak' tűnik. A rendszerelemekről szóló gyors adatlap alapján RS485 ill. -232 alapokon létezik, de bővebb leírást nem igazán adnak.

  • And

    veterán

    válasz kip.kop #1437 üzenetére

    Le kellene tisztázni, hogy valójában milyen protokollal működik az a rendszer. Ha tényleg modbus-szal (vagy az a 'titokzatos' Kilnbus is valamilyen modbus-szerű képződmény), akkor is kellenek bővebb információk a részletekről: milyen formátumban olvasható az adat a mérőegység(ek)ről, az melyik belső regisztercímen érhető el, stb. Ha ez megvan, akkor lehet tovább lépni. Ráadásul első körben PLC-t említettél, utóbb meg már PC-t, mint lekérdező egységet / mastert (persze az egyik nem zárja ki a másikat). PLC esetén egyszerűbb a helyzet, rengeteg kisebb PLC (akár némelyik programozható relé is) támogatja a modbus-t, vagy olcsó kiegészítővel képes lehet erre. De léteznek pici megjelenítők, terminálok, amelyek szintén tudnak modbus-on adatokat kérdezni. Ha közvetlenül PC-n kell megjeleníteni / tárolni az adatokat, akkor vagy magadnak kell megírnod a szükséges alkalmazást, vagy használhatsz valamilyen fizetős modbus scanner programot, esetleg drágább SCADA-rendszert. Utóbbival már elég sok funkció megvalósítható, de ezek a programok nem feltétlenül olcsók.

  • And

    veterán

    válasz kip.kop #1439 üzenetére

    "Ugy ertsem, hogy ha PLC-vel osszekotom, akkor lehet hogy nem is kellenek a bovebb informaciok a reszletekrol es olvasni tudja a me'rt ertekeket a PLC."
    Ha ez kérdés akart lenni, akkor a válasz: nem. A modbus alapvetően adott regiszterek (általános célú memóriacímek vagy I/O-k) írásáról és olvasásáról szól, így ha olvasni szeretnénk egy adatot egy slave-ből, akkor nem árt tudnunk, hogy mely címen érjük el a kívánt adatot, és azt milyen formátumban kapjuk. Ha van doksid, ezek az infók biztosan le vannak írva benne.

  • And

    veterán

    válasz kip.kop #1451 üzenetére

    "Gondolom ha nem is tudnam melyik regiszterben mit tudok kiolvasni, akkor is valamit ki tudnak kiolvasni a "04 - Read Input Registers" es a "03 - Read Holding Registers"-bol."
    Az az érzésem, hogy még mindig félreérted a protokoll lényegét. Ez a két (egyébként általában hexadecimális formában megadott) 04h ill. 03h nem egy-egy konkrét regiszter, amelyet olvasol, hanem funkciókód, amely megmondja a lekérdezett slave-nek, hogy mit szeretnénk tőle. Ha megnézed az #1432-ben adott első linket, abban a doksiban szépen fel vannak sorolva az elérhető funkciókódok, és a hozzájuk tartozó kérdés (master) / válasz (slave) adatstruktúrák. Egyébként a modbus-t támogató eszközök nem feltétlenül ismerik az összes lehetséges funkciót. De pl. a "03h" valószínűleg az egyik leggyakrabban alkalmazott modbus-funkció, egy slave több (egymás utáni című) adatregiszterének lekérdezésére szolgál. A kérésben meg kell adni a lekérdezett slave címét, a funkciókódot (jelen esetben 0x03-at), a kiolvasandó regisztercím-tartomány kezdőcímét (16 biten) és hosszát (szintén 16 biten, de legfeljebb 125 lehet a tartomány hossza). A válaszban visszakapod a kért regiszterek tartalmát, egyenként 16 biten. Ha olyan regisztereket olvasunk, amelyek a slave-ben nem 2 byte-on tárolódnak, akkor a a kért adatokat esetenként a master-nek kell a megfelelő formátumra visszakonvertálnia.
    Az interfészt (adatformátum: ASCII / RTU, bitsebesség, paritás fajtája, stopbitek száma, slave esetén: cím) nyilván megfelelően kell beállítani az eszközökben, és a fizikai konverterek beállításait sem szabad a véletlenre bízni.
    #1452: Az általad linkelt oldalon vannak példák a paraméterezésre. Mondjuk 4 db. 16-bites word kiolvasása a 8-as, RS485 illesztővel rendelkező slave 670-es számú (című, ahol az első regiszter címe a nulla) regiszterétől kezdődően, modbus RTU-n, 19600 8N1 portbeállítás mellett, a PC COM1 portján (majd RS485 konverteren) keresztül:
    modpoll -a 8 -r 670 -c 4 -l -0 -b 19200 -p none -4 5 COM1
    A többi beállítás default értéken van hagyva, ill. RS485 / Modbus RTU esetén szükségtelen. Ez a segédprogram - mint a weboldala is említi - egy master-szimulátor, vagyis az ezt futtató géppel csak slave(ek) fűzhető(k) össze. Képes a kiolvasott n*16-bites word-öket más adatformátumra gyúrni, ill. felcserélhetőek vele a nem szokványos sorrendű (big-endian) 32 bites integer v. lebegőpontos formátumok adatszavai.

    [ Szerkesztve ]

  • Szirty

    őstag

    válasz kip.kop #1462 üzenetére

    Helló kip.kop!

    "Ladder diagram es Instruction List kezdoknek, hol talallok hasznalhato dokumentaciot,"

    Milyen PLC-re?

    Általános jellegű anyagok vannak létrára. Utasításlista sokkal specifikusabb, minden típusnál más és más.
    Esetleg nézd át az oldalamon a linkek részt...

  • And

    veterán

    válasz kip.kop #1461 üzenetére

    Ez valóban konkrét infó, de sajnos még mindig kevés, mert hiányzik az eszköz címének konkrét értéke. Erre szolgál az "Offset" nevű regiszter, amelyet be kell állítani (default értéke 64), ill figyelembe kellene még venni az 1..3-as DIP-kapcsolók állapotát is, amelyre a megjegyzés utal (elvileg az Offset regiszter tartalma hozzáadódik az 1..3 DIP-ek által meghatározott értékhez, és az eredmény lesz a cím), de ezen a két oldalon nincs róla több infó. Ha elfogadjuk, hogy ezekkel a dip-ekkel beállítható a "0", akkor az eszköz slave címe 64 lesz. Hasonló a helyzet a kommunikációs paraméterekkel is, bár itt szintén van default beállítás: 19200, 8O1. A fenti beállításokhoz konfigurációs módba kell állítani az egységet, ennek a mikéntje szintén homályban marad.
    Ha kipróbálod ezt, akkor elvileg a "DigitalT" és a "DigitalRH" nevű regiszterek értékét kell visszakapnod, 16-bites (signed) integer formátumban, tizedfok / tized-% egységekben:
    modpoll -a 64 -r 7 -c 2 -b 19200 -d 8 -p odd -4 10 COM1.
    A "TM" nevű regisztert olvasva pedig az "LG" textet (0x4C47) kell visszakapnod:
    modpoll -a 64 -r 120 -t 4:hex -1 -b 19200 -d 8 -p odd -4 10 COM1.
    Ez utóbbi a kommunikáció ellenőrzésére például megfelel, de jó lenne látni a komplett doksit. Hozzászólásban linkelni tudod, ha hozzáférhető a neten valahol, vagy te feltöltöd valahová, és onnan linkeled.

  • And

    veterán

    válasz kip.kop #1463 üzenetére

    (Ja, ha ezt a hozzászólásodat is elolvastam volna, akkor számomra is egyértelmű lett volna, hogy 64-es a slave cím :B. Szépen látszónak az előbb említett regiszterek, pl. a 7-es "DigitalT" értéke 289, vagyis 28.9 °C. Az 1..3 számú "Offset", "Baud rate" és "Data stream" regiszterek default értékei is jelen vannak: 64, 6, 2.)
    Mod.: Igen, ezek szerint legfeljebb 26 regiszter tartalmát tudja lekérdezni, de a kezdő regiszter címe nem csak 1-es lehet, azt át tudod írni az "Address" mezőben.

    [ Szerkesztve ]

  • And

    veterán

    válasz kip.kop #1474 üzenetére

    Igen, sajnos ez az eggyel történő regisztercím eltolódás nem szokatlan a modbus-nál. A modpoll esetén is van opció (-0, 'First reference is 0') ennek a kezelésére, de épp azért nem írtam bele a paraméterek közé, mert a regisztertérkép 1-től indult.
    Mod: a parancssoros modpoll csak lekérdezésre képes, az a GUI-s Modbus Poll esetleg képes az írásra (nem próbáltam), ha a funkciók között találsz írásra valót.

    [ Szerkesztve ]

  • #95904256

    törölt tag

    válasz kip.kop #1478 üzenetére

    SCADA: Supervisory Control And Data Acquisition
    HMI: Human-Machine Interface

    Az előbbi a komplett gyártásfelügyeleti rendszert jelenti, míg az utóbbi a kezelőfelületet.

    A SCADA tartja nyilván a gyártásban lévő termékeket, a gyártóberendezések állapotát és felügyeli a köztük lévő anyagáramlást.

    A HMI alatt általában egy tapiképernyős kijelzőt szoktak érteni, amin keresztül be lehet avatkozni a gyártási folyamatokba. Valójában a HMI minden egyéb olyan eszközt is takar amivel a gyártási folyamatba lehet beavatkozni.

    [ Szerkesztve ]

  • Szirty

    őstag

    válasz kip.kop #1478 üzenetére

    Helló kip.kop!

    akosf leírta a lényeget. Én csak annyit teszek hozzá, hogy a SCADA-t bonyolultabb rendszerekhez használják a gyártás magasabb szintjén. Vagyis a SCADA feladata inkább a gyártóberendezések és a vállalati (ügyviteli) rendszer közötti kapcsolat biztosítása.
    Míg a HMI a gyártás alacsonyabb szintjéhez tartozik, (a szintek itt nem minőségi szintet jelentenek) gyártósor egyes berendezéseinek és a gép kezelője közötti kapcsolattartásra való.

    A SCADA rendszerek összetettebbek, drágábbak, főleg PC-n futnak és képesek ellátni HMI feladatokat is.

  • And

    veterán

    válasz kip.kop #1486 üzenetére

    Ajánlom figyelmedbe ezt a dokumentációt: [link]. A 126. oldaltól láthatod a modbus kommunikáció megvalósítását Twido-n. A megoldás lényege az EXCHx utasítás (134. oldaltól), ill. a %MSGx belső funkcióblokk két állapotjelző bitje, a %MSGx.D és a %MSGx.E. A kommunikáció megkezdése előtt definiálni kell egy adott hosszúságú táblázatot, amely tartalmazza az összes szükséges paramétert. A 131. oldalon találod a táblát, amely három részre van osztva: vezérlő-, adási- és vételi táblázat. Utána szépen ki van fejtve, hogy az egyes elemeknek mi a szerepük. A korábban már megismert 3-as (és 4-es, mivel a kérés itt is ugyanúgy néz ki) funkciókód bővebb leírása a 145. oldalon van. A control table tartalma itt kötött, a transmission table tartalmában állítható be a lekérdezett slave címe, a slave-ből kiolvasandó regisztertömb kezdőcíme és a tömb hossza. Példaprogram a 140. oldalon, ezt átalakítva a neked szükséges feladatra úgy, hogy a DigitalT és DigitalRH nevű adatregisztereket olvassuk ki a slave egységből:
    LD 1
    [%MW0 := 16#0106 ]
    [%MW1 := 16#0300 ]
    [%MW2 := 16#4003 ]
    [%MW3 := 16#0008 ]
    [%MW4 := 16#0002 ]
    LD 1
    AND %MSG2.D
    [EXCH2 %MW0:9]
    END
    Az első két word a control table, mint írtam, itt a tartalmuk kötött, lásd a funkciókód leírásnál. A %MW2..%MW4 a transmission table, itt adjuk meg a slave címét (64dec = 0x40), a modbus kérés funkciókódját (0x03), a kezdő regisztert (8, ami a DigitalT regiszter 7-es címe plusz egy), ill. a lekérdezett tartomány hosszát (2 db. word). A %MW5-től kezdődik a reception table, amelynek tartalma a slave válasza után áll be, ha nincs hiba a kommunikáció során. Utóbbi vételi tábla a következőket fogja tartalmazni:
    %MW5: 0x4003, a slave címe és a válasz kódja, ezek a válaszban szintén megjelennek,
    %MW6: 0x0004, az 'Rx offset' által beiktatott 0x00 (MSByte) és a kiolvasott byte-ok száma (LSByte), ami 4, hiszen két darab 16-bites word-öt kértünk le,
    %MW7: ebben kapod meg az első lekért regiszter tartalmát, vagyis a DigitalT-t,
    %MW8: ebben pedig a másodikat, azaz a DigitalRH-t.
    A %MSG2.D bit jelentése: 'communication complete', ez azért kell, hogy a kontroller (több lehetséges üzenet kezelése esetén) csak akkor kezdje el küldeni az aktuális adatkérést a buszon, ha az előző már befejeződött.
    Természetesen a hardverek megfelelő összekötéséről és a Twido portjának beállításáról a hw-konfigurációnál (lásd: 139. o.) előzőleg gondoskodnod kell. Az adattábla meg bárhol kezdődhet, nem csak %MW0-nál (a példában %MW0:9), és nem csak a 2-es számú (EXCH2 és %MSG2), egyébként opcionális portot lehet igénybe venni a feladathoz. Az alap, programozáshoz is felhasznált 8-pólusú mini-din aljzat az 1-es számú port. E port használatához az aljzat DPT-jelét GND-re kell húzni (128. o.), ill. az A-B adatvonalakra megfelelő fel- és lehúzó ellenállásokat kell kötni (129. o.).

  • kip.kop

    csendes tag

    válasz kip.kop #1494 üzenetére

    Kellett azert sokat keressem a dokumentaciokat ahol rendesen le vannak irva a pin-ek a fizikai felepiteshez.

    ""a kezdő regisztert (8, ami a DigitalT regiszter 7-es címe plusz egy)," nem kell hozzaadni plusz egyet, tehat a kezdo register 7."

    diagslave: "Slave 64: readHoldingRegisters from 8, 2 references"

    Arra kovetkeztetek, hogy a twido automatikusan hozzaad plusz egyet.

    [ Szerkesztve ]

    SC BeautyCare SRL: www.supernail.ro, www.superunghii.ro, www.crystal-nails.ro, www.sensx.ro

  • And

    veterán

    válasz kip.kop #1497 üzenetére

    Persze hogy nem hajtja végre mindhármat, hiszen nem gondoskodtál arról, hogy ne egy futási cikluson belül indítsa a három kérést. Lásd a 479. oldalon: "If several messages are sent in the same cycle, only the first message is transmitted. The user is responsible for managing the transmission of several messages using the program."
    Tehát neked kell gondoskodnod a lekérések 'elosztásáról'. Azon az oldalon találsz egy példát is, amely két üzenetet kezel, és egy jelzőbittel (%M0-val) irányítják a forgalmat: az első üzenettel párhuzamosan beállítják ezt a flag-et, és majd ez engedélyezi a másodikat, ha az első véget ért. Ugyanígy a második üzenet küldésekor törlik a jelzést, ami pedig az első üzenet végrahajtásának a feltétele. Ha kettőnél több üzenetet kezel a program, akkor nyilván nem elegendő egyetlen bit a jelzéshez, hanem létre kell hoznod egy számlálót: ezt az egyes üzenetek sikeres elküldésekor szépen inkrementálod, majd ha az utolsó is kész, akkor kinullázod. Az egyes lekérésekhez pedig a %MSG.D bittel ÉS kapcsolatban feltételként hozzárendeled, hogy a számláló a megfelelő (három EXCHx esetén: 0, 1, 2) értékű legyen.

  • Szirty

    őstag

    válasz kip.kop #1496 üzenetére

    Hali kip.kop!

    "Hogyan tudnatok elmagyarazni, hogy mi az a "subroutine". Hogyan lehet hasznalni, mikor kell bevetni ... ?"

    A szubrutin egy alprogram, egy programrész, amit a főprogram bármely részéről meg lehet hívni. A hívás hatására a főprogram végrehajtása áttér a szubrutin végrehajtására, majd amikor a szubrutin végére ér, visszatér a főprogramba és annak végrehajtását a szubrutin hívását végző utasítás után folytatja.
    A szubrutin hívás tehát egy vezérlés átadó utasítás, mint amilyen az ugrás is, de a szubrutin jellemzője, hogy "automatikusan" mindig oda tér vissza, ahonnan hívták (az ugrásnak nincs ilyen jellemzője).

    A szubrutin általában egy bizonyos részfeladat ellátását végzi, amely feladatra a programban többször is szükség van. Másik jellemzője, hogy bizonyos programozási nyelvekben ( a PLC-nél is) a szubrutinnak paramétereket lehet átadni a hívás helyén, így a szubrutin azokkal a kiinduló adatokkal dolgozhat, és az eredményt visszaadja a hívó programnak.

    Pl. ha egy vezérlésben sok csillag-delta motor indítás van, akkor lehet írni egy szubrutint ennek a feladatnak az ellátására. Paraméterként megkapja a start jelet, és egy időzítési értéket, esetleg a használni kívánt időtag számát. Visszaadja a hálózati kapcsoló, a csillag és a delta kapcsoló állapotait.
    Így mindegyik motor indításánál csak meg kell hívni ezt a szubrutint megfelelően felparaméterezve, vagyis nincs szükség ugyanazon programrészeket újra és újra beletenni a programba, elég egyszer.
    Továbbá a szubrutin hordozhatóbb. Vagyis változtatás nélkül átemelhetjük egy másik programba...

  • Szirty

    őstag

    válasz kip.kop #1501 üzenetére

    Hali kip.kop!

    "Tehat ha szubrutin-t csinalok az olyan mitha egy nem letezo utasitast gyartok, mint amilyen a szimpla kondenzator jel (kapcsolo), vagy a timer"

    Olyasmi, de inkább fekete doboz, amibe "drótok" mennek be és csinál "valamit"...

  • norcee

    csendes tag

    válasz kip.kop #1542 üzenetére

    Szia kip.kop!

    A PcSchematic egy ingyenes szoftver, bár eléggé fapados.

    --norcee

  • Szirty

    őstag

    válasz kip.kop #1592 üzenetére

    Hali kip.kop!

    "Hát, egyelőre nem egyszerű megértenem így."

    Pedig igyekeztem a lehető legegyszerűbben a lehető legtöbbet közölni. Sajnos a két dolog ellentmondásban vagy egymással.
    Most nem kezdek neki mégjobban leegyszerűsíteni, mert nem tudom volna-e értelme, de a kérdés: mit nem értesz?

    A szabályzás alap koncepciója érthető (minek kell, mire való egy szabályzás)? A probléma megértéséig a megoldás sem lesz érthető...

  • Szirty

    őstag

    válasz kip.kop #1596 üzenetére

    Hali kip.kop!

    Az igény alapvetően egyszeű.
    Van egy mért értéked, ami lehet nyomás, szint, sebesség, pozíció, hőmérséklet, tulajdonképpen bármi.
    Az igény az, hogy ezt egy meghatározott (töbnyire állandó) értéken kell tartani.
    A rendszerben rendelkezésre áll egy beavatkozó szerv, aminek megadható a beavatkozás mértéke. A beavatkozás befolyásolja az imént említett mért értéket vagy egyenes, vagy fordítottan arányos összefüggés szerint.
    A mért értéket külső, zavaró tényezők is befolyásolják, amelyek függetlenek a szabályzástól (ha ilyenek nem volnának, akkor nem volna szükség a szabályzásra).

    A szabályzás feladata az, hogy a mért érték és az általunk megadott alapjel szerint úgy módosítsa a beavatkozó szerv állásást, hogy a mért érték a lehető legpontosabban tudja tartani az általunk megadott (kívánt) alapjel értékét.

    Nézzünk egy példát erre. Tegyük fel, hogy van egy szárító kamra, ahova a szárítandó terméket beküldi egy gép.
    A feladat az, hogy a szárítókamrában állandó legyen a hőmérséklet. Ehhez kell egy hőmérséklet mérés meg egy beavatkozó jel.
    A mérés mibenléte nyilván érthető. A beavatkozás pedig a kamra fűtését szabályozó eszköz. Egyszerű esetben ez egy elektromos fűtőszál. Minél nagyobb energiát álítunk be a fűtőszálra, annál nagyobb mértékben fűti a kamrát.

    A zavaró tényező pedig az, hogy a kamrába új (hideg) terméket helyeznek el, ami lecsökkenti a hőmérsékletet. Ezt lehet szabályzással korrigálni. Így a szabályzó megkapja a mért hőmérsékletet a beállított hőmérsékletet, amit tartani szeretnénk (alapjel) és egy meghatározott algoritmus szerint ezekből képez egy beavatkozó jelet, amit a fűtőszál fog megkapni. A szabályzó működése során arra fog törekedni, hogy a mért hőmérsékletet a fűtés mértékének módosításával a beállított hőmérsékleten tartsa.
    Erre (is) jó a P, PI, PID szabályzó...

  • Szirty

    őstag

    válasz kip.kop #1605 üzenetére

    Hali kip.kop!

    "Csak nem dolgozol te is a szaritas teren?"

    Volt már párszor ilyen feladat. Egyszer fűrészáru szárítót is csináltunk (bár azt PC vezérelte és nem PLC),

    "De persze ez is ugyanugy mukodik, csak sokkal tehetetlenebb a rendszer (gondolom en)."

    Igen, ha nagy a rendszer tehetetlensége, akkor lassú lesz a szabályzás. Dolgoztam már én is 20 perces integrálási idővel.
    Az a baj vele, hogy rendszerint az ilyen szabályzást nehéz és sokáig tart jól felparaméterezni. Ott kell ülni mellette órákat vagy napokat és figyelni hogyan reagál. Esetleg autotuning, de arra még nem mertem nagyon rábízni szabályzást, mert a legtöbb esetben amihez szabályzás kell nem célszerű végletesen kivezérelni, mert az problémákat okozna.
    Jó igen, tudom vannak fejlett autotuning algoritmusok is, de fizetős, azt is tudni kell beállítani, én meg nem foglalkoztam még velük. Eddig sikerült kézi beállítással is elérni a kívánt működést. (meg a kezelők előbb-utóbb úgy is szanaszéjjel állítanak mindent rajta :)

  • Szirty

    őstag

    válasz kip.kop #1612 üzenetére

    Hali kip.kop!

    "Így tippből beallithatok-e nagy integrálási időt? ( pl. a max. 10000x0,1s=1000s)"

    Általában igen. De ez nyilván a konkrét PLC konkrét PID szabályzó blokkjától függ.
    S7-300/400 PID blokkja (SFB 41/FB 41 "CONT_C") pl. 24 nap 20 óra 31 perc 23 másodperc 648 ezredmásodperc időt enged meg maximálisan (ms-os lépésekben).

  • Szirty

    őstag

    válasz kip.kop #1616 üzenetére

    Hali kip.kop!

    "P, I, D tagokat hogyan kell beállítani, te hogyan állítod be?"

    Én mindig csinálok a szabályzónak kézi üzemmódot (ezzel jellemzően nem vagyok egyedül :>).
    A kézi üzemmód az, amikor a szabályzó beavatkozó jelét én határozom meg egy érték beírásával, amin a szabályzó nem változtat, amíg kéziben van. De a mért értéket azt látom ilyenkor is.
    Amennyiben a szabályzás nem túl gyors, először kézi üzemmódban megpróbálom én beállítani azt a beavatkozó értéket, ami a mért értéket az alapjel közelébe hozza. Hogy kialakuljon egy egyensúlyi állapot. Ilyenkor lehetőség szerint a mért értékre hatást gyakoroló külső zavaró tényezőket kizárom.
    Ezután beállítom neki az alapjelet és kikapcsolom az I és a D tagot (érdemes először a P tagot beállítani ha a rendszer ezt megengedi). A hibajel erősítését kicsire (egynél kisebbre) állítom be. és átkapcsolom automatába (ált.-ban csak rövid időre) hogy lássam mekkora beavatkozó értéket kalkulál ki. Ha ez jelentősen kisebb, mint ami a kéziben beállított egyensúlyi állapothoz közeli beavatkozó érték, akkor növelem a hibajel erősítését (Gain), Ha a kalkulált beav. érték nagyobb, akkor a gaint csökkentem. Ezt addig ismétlem, amíg automatában is az egyensúlyi állapothoz közeli beav. értéket nem kalkulálja.
    Ha csak P szabályzásra van szükség, akkor ezzel a durva beállítás kész is, jöhet az üzem közbeni próba, amikor vannak zavaró jelek. Figyelni kell hogyan reagál a szabályzás. Ha nem áll be a kívánt érték, növelni kell az erősítése. Ha a szabályzás beleng, akkor az erősítés valószínűleg túl nagy.

    Ha kell az I tag is, akkor jöhet annak a beállítása, az már automatában. Először nagyra állítom az integrálási időt (a nagy itt annyit tesz, hogy a rendszer becsült ciklus idejének a többszörösére), tehát kb. hasra valamennyit :>). De lényeges, hogy inkább túl nagy legyen, mint túl kicsi, különben a szabályzót erősen belengeti az I tag.
    Ezután figyelem hogyan reagál. Általában ha PLC-vel valósul meg a dolog, akkor csinálok OP-n egy képernyőt. ahol látom a szabályzó néhány belső változóját is, mint pl. mekkora az I tag pillanatnyi beavatkozó értéke, mekkora a hibajel mértéke stb.
    Ha a szabályzás túl lassan reagál a zavaró tényezőkre, szépen kis lépésekben csökkentem az integrálási időt. Kb azt a pontot kell eltalálni, mielőtt a szabályzás hajlamossá válik a lengésre.
    Ha ezt is sikerült belőni, jöhet a D tag is, hasonló módszerrel.

    Szoktam rakni grafikont (trend) is amin látható a szabályzó fontosabb változója, mert a grafikonon lassú szabályzásoknál nagyon jól látszik mi hogyan változik és gyakorlottabb szemmel könnyebben el lehet dönteni mit kellene még állítani.

    Természetesen erre az egészre vannak egzakt módszerek is (a fenti inkább tapasztalatai/gyakorlati módszer). Sőt matematikai módszerek is (azt használja pl. a self tuner algoritmus is, már amikor van). Vannak erre leírások, sőt a gyakorlati módszer is finomítható pl. azzal, hogy szándékosan belengetett rendszernek stopperrel megmérjük a periódus idejét, amiből számítható az optimális integrálási idő. Ilyenkor nem kell olyan sokat mellette ülni és finomítgatni a beállításokat.

    Hogy hogyan állíthatjuk be az nagyban függhet a rendszertől, géptől is. Pl. egy vegyi üzemben nem veszélyeztethetünk berendezéseket vagy életeket egy ilyen "hú ez sok, vegyük lejjebb" beállítási módszerrel, meg attól is morcosak lesznek ha az állítgatás alatt a berendezés fossa a selejtet.

    Jó tanács: Egy jól beállított szabályzó összes paraméterét le kell menteni (vagy fel kell írni) :)

    "A Ts tag az úgy-e nem szerepel szorzóként az I, D tagnál beállított értéknél?"

    Nem tudom mi a Ts tag, a PID szabályzónak sok implementációja létezik és sokféle paramétere, amelyek (neve és száma is) implementációnként merőben eltérőek lehetnek, még úgy is, hogy ugyanarra az alap PID algoritmusra épülnek.

  • Szirty

    őstag

    válasz kip.kop #1619 üzenetére

    Hali kip.kop!

    "Ts úgy gondolom a sampling period."

    S7 PID esetén a minitavételi idő és az integrálási idő úgy függ össze, hogy a mintavételi idő a PID-et megvalósító programblokk hívási időciklusaiból adódik, ait egy paraméterben meg kell adni neki. Így a blokk tudni fogja milyen időközönként fut le és az integrálási időt mindig helyesen fogja kiszámítani. Ezért fontos S7-nél, hogy a PID blokk fix időnként legyen meghívva (pl timer interrupt OB-ból).

    "Az I tag úgy-e akkor van kikapcsolva, ha a maximális értéket adjuk neki"

    Az I tag akkor van kikapcsolva, amikor semmilyen szerepet nem játszik a szabályzásban.
    Biztos van olyan megvalósítás, hogy a PID programblokkal úgy lehet közölni az I tag kikapcsolását, hogy 0 integrálási időt adunk meg neki.
    S7 PID séma így néz ki:

    Ebből látszik, hogy mindhárom tagot külön ki/be lehet kapcsolni egy külön paraméterrel. Az I tagot az I_SEL paraméterrel... Az is látszik, hogy az összegző előtt az I_SEL "kapcsoló" kikapcsolt helyzetben nulla beavatkozó jelet ad az integrátor felől.

  • Szirty

    őstag

    válasz kip.kop #1621 üzenetére

    Hali kip.kop!

    Nem tudom mi az az OB . ( tampon?

    Organization Block "Szervező" bprogramblokk, de a lényeg nem ez, hanem ami előtte volt: "Timer interrupt"!

    "Úgy latszik nem értetted a kérdésem."

    Most se értem! Fogalmazd át!

    Az integráló tagnak nem adsz értéket. Az "magától" változik.

  • Szirty

    őstag

    válasz kip.kop #1623 üzenetére

    Hali kip.kop!

    "Nem tudom mire gondolsz most, de én az integrálási idő értékére gondoltam."

    Na ezt nem írtad eddig... hogy mire gondolsz :)
    Én erre a kérdésedre: "Az I tag úgy-e akkor van kikapcsolva, ha a maximális értéket adjuk neki"
    azt gondoltam hogy az I tag kikapcsolására vonatkozik.

    "De ha azt állítod, hogy nem én adom meg az értékeket,"
    Az integrálási időt te adod meg. Illetve az egy beállítás természetesen. Az I tag beavatkozó értékét nem te adod meg, az változik "magától".

    "Tehát az áll a legközelebb ahhoz, hogy ki van kapcsolva, ha a legnagyobb értéket adom, vagyis így avatkozik legkevésbé bele a rendszerbe?"

    Nos akkor kiegyenesedett a dolog :)
    Az extrém nagy idővel nem a beavatkozás mértéke csökken, hanem a beavatkozás változásának az ideje nő meg, ami az I tagot illeti.
    Extrém nagy integrálási idővel nem kevésbé fog be avatkozni, hanem lassabban. Tehát ha a mért érték hosszú ideig azonos előjellel tér el az alapjeltől, akkor az integráló tag beavatkozása szép lassan megnő (vagy lecsökken az eltérés előjelétől függően) és képes ugyanakkora beavatkozásra mint rövid tI idővel.
    Ha a mért jel gyorsan változik (sokkal gyorsabban mint amennyi az integrálási idő) és gyakran lesz hol kisebb, hol meg nagyobb az alapjelnél, akkor az I tag beavatkozása valahol 0 körül fog ingadozni. Ekkor tehát a kérdésedben rejlő feltételezés teljesül, de csak ezzel a feltétellel.
    Az I tag kiiktatásának nem ez a módja.

    Szerintem itt az volt a gond, hogy nem árultad el, hogy a kérdésedben rejlő feltételezéssel milyen hatást akarsz elérni (miért akarod kiiktatni az I tagot). Úgy tűnik rossz irányból közelítetted meg a célt és ezért nem arra válaszoltam amit tudni akarsz, hanem arra amit kérdeztél :)

  • Szirty

    őstag

    válasz kip.kop #1625 üzenetére

    Hali kip.kop!

    Igen ez így működhet. Bár szerintem az I tagra szükség lesz. A D tagra valószínűleg nem, de ha mégis, akkor annak is jó nagy időt kell majd adni.

    Ki kell próbálni :>

  • Directors

    senior tag

    válasz kip.kop #1630 üzenetére

    Nos a diagramm alapján kellene ezt a pneumatikus kapcsolást megtervezni aminek a feltételeit feljebb olvashatod.Én ennyit csináltam amit a képen is látsz de ezt nem tudom,hogy jó e eddig.
    b0,b1,a1,c1 az görgő, az a0 pedig csuklós görgő.

    A hamis barátok olyanok, mint az árnyékunk: miközben sétálunk a napsütésben, szorosan velünk tartanak, de azonnal elhagynak, amikor árnyékba érünk.

  • Dezsi82

    tag

    válasz kip.kop #1660 üzenetére

    Hali!
    Igen, a Telemecanique az Schneider. És a hiba az volt, hogy véletlenül upgrade lemezt küldtek. :DD

  • Szirty

    őstag

    válasz kip.kop #1876 üzenetére

    Hali kip.kop!

    "Szerintetek mit csinal a kovetkezo instrukcio?"

    Azt csinálja, amit And írt.
    Ez egy "klasszikus" csengő kapcsolás.

    A blokk hívási gyakoriságának megfelelő periódus idő kétszeresével ki/be kapcsolgat. Vagyis a blokk ciklus idejéből adódó frekvencia felével.

  • sörösló

    aktív tag

    válasz kip.kop #1876 üzenetére

    Siemens, nem? Vagy valami német programozó. Arrafelé általánosan használt fogás. Többnyire a program indulásánál az alapraállításhoz használják. A mostani eszközökön ezt alapból kínálja a program mint olyan rendszerbitet, ami a bekapcsolás után egyszer van, elvégzi a dolgát, aztán nincs rá többé szükség. Ez egy S5 maradvány, akkor bevált és azóta sem bírnak leszakadni róla. Az S7-ben ha jól tudom megvan mint rendszerbit, de az átállás nehéz kicsit. Valszeg valami idősebb szaki írhatta, aki az S5-ön nőtt fel. Erre írtam valamikor nemrégen, hogy a régi dolgok még sokáig viszaköszönnek majd! Persze hogy Siemens. Mégpedig S7, most látom!

  • Szirty

    őstag

    válasz kip.kop #2493 üzenetére

    Helló kip.kop!

    A kérdésed az, hogy gyári funkció van-e ilyen?

    Magad is megnézheted milyen gyári funkciók vannak, mert a step7 telepíti ezek leírását.
    Start menü / SIMATIC / Documentation

    A doksi neve: STEP 7 - System and Standard Functions for S7-300 and S7-400
    és: STEP 7 - System and Standard Functions for TI-S7-Converter

    Szerintem nincs ilyen, annyira egyszerű, hogy percek alatt meg lehet csinálni.

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