Fórum témák
» Több friss téma |
Fórum » PLC kérdések
Témaindító: Thomas10100, idő: Nov 12, 2005
Üdv!
Idézet: „Én a Siemens PLC-ket ismeren, S5 S7,de szerintem minden PLC működési elve hasonló, nincs olyan, hogy nem ugrik tovább, mindig tovább ugrik valahova.” Elnézést, de itt van egy kis fogalom zavar. Igen, a PLC-re írt user program már eleve egy végtelen ciklusban fut állandóan még akkor is ha csak egyetlen utasítás van benne (esetleg egy se). Ezt a PLC "oprendszere" intézi. Ugyanakkor van olyan, hogy "szekvenciális programozás" ebben az esetben itt erről van szó. Siemens S7-300/400 esetén ezt úgy hívják,hogy Graph7. A lényege az, hogy előre jól meghatározott állapotokat állapítunk meg, melyek között átlépési feltételek teljesülése setén átlép (transition). A program az aktuális állapotban várakozik mindaddig, amíg a következő lépéshez vezető feltétel nem teljesül. Akkor átlép, és ott várakozik, miután végrehajtotta a lépésben megadott állapot beállítását. Ez a programozási mód csak bizonyos berendezések programozásához használható (folyamatvezérléshez pl. nem). Tehát először tisztázni kellene hogy Panhard pontosan mit is értett funkció blokkon. Mert pl. az FBD is az tulajdonképpen (Function Block Diagram) de annak semmi köze a lépésenkénti (szekvenciális) programozáshoz. De abban is megoldható a dugattyús feladat (vagy akár létradiagramban is).
Köszönöm, értem, ennek nagy részével tisztában voltam.
Én is nézetem vele hogy ki ment-e a dugattyú a másik végállásba, vagy sem. Bár ez jelenleg felesleges lenne. 3-4 éve programozgatok C-ben, és kb 2 hónapja, azaz 2*1 órája (levelező főiskola) PLC-t. Tehát ha mikrokontrollerként akarnám megirni a plc-re a programon, akkor így lehetne: -ha megnyomom a start gombot: a=1; -ha a=1, akkor alaphelyzetbe hozom a dugattyúkat. a=2; -ha a=2 és a dugattyúk alaphelyzetben vannak, akkor a=3; -ha a=3, akkor kiküldjük az első dugattyút. a=4; stbstb. Köszönöm, értem. Így már el tudok indulni a teljes program megirása felé. Lényegében ez nem volt világos eddig. Köszi!
Igen, én a ciklusidőre gondoltam, mert topdon hozzászólásából az jött le, hogy arról van szó. Egyébként a ciklusidő Graph-nál sem áll meg, ha egy feltétel nem teljesül. Megy tovább, mert egy program általában nem csak Graph blokkokból áll, hanem PB, FB, ezeket tudni kell neki végrehajtani akkor is ha Graph-ban még nem teljesült a feltétel.
Hali Panhard!
Idézet: „Egyébként a ciklusidő Graph-nál sem áll meg, ha egy feltétel nem teljesül.” Természetesen. Ráadásul graph-nál lehetnek szimultán (egyszerre) futó ágak, mindegyik a saját feltételeire vár. De csak a lépés vár, a PLC közben lázasan rója a teljes ciklusokat (ha nem teszi, megharapja a figyelő kutya). Egyébként lehet ciklust szervezni PLC-ben is. Néha szükséges is (S7-nél Pl. SCL, STL programozási nyelveken, de létrában és FBD-ben is van ugró utasítás). Végtelen vagy túl hosszú ciklussal persze cycle time exceeded hibát lehet okozni. Én is egyetértek azzal, hogy PLC programozás más megközelítést igényel. Legalábbis a létra és az FBD mindenképpen...
Szia!
Mi a múltkor Moeller PLC-t programoztunk IL nyelven a Kandón. Olyan szerinted létezhet, hogy a programban nincs megengedve a visszafelé való ugrás lehetősége, tehát csak előrefelé lehet jump-olni? /Mikrovezérlőknél tudom, hogy bármiféle jump lehetséges, ebből indultam ki./ (Azért kérdezek ilyen "butaságnak tűnőt", mert annak ellenére nem tudok PLC-t programozni, hogy ilyen szakirányra járok főiskolán. Egyszerűen nincs egy higgadt, értelmes, jóindulatú, kedves tanár, aki a PLC-k általános lelki világait elmagyarázná. Odaültetnek minket egy PLC elé és csináljuk meg a feladatot. Persze összefoltozgatjuk mi a programot, de hát ez egyáltalán nem ad jó alapot a megfelelő irányú és mértékű fejlődéshez sajnos.)
PLC-nél is lehet visszafelé ugorni, csak az ugrás a következő ciklusban tud végrehajtódni. Azt, hogy lehet-e ezt tiltani nem tudom.
Hali Norberto!
Idézet: „"Mi a múltkor Moeller PLC-t programoztunk IL nyelven a Kandón. Olyan szerinted létezhet, hogy a programban nincs megengedve a visszafelé való ugrás lehetősége, tehát csak előrefelé lehet jump-olni?"” Nem ismerem a Moeller-t, de el tudom képzelni hogy ilyen szabályt tettek bele, hogy a program írója semmiképpen se tudjon végtelen ciklust írni Bár ez a megoldás így tüneti kezelésre hajaz (szerintem). Ennyi erővel tilthatnák azt is, hogy egyszerre több kimenet legyen bekapcsolva, mert mi van ha a felhasználó programja összekapcsolja egy irányváltó két irányát, stb...
Hali Panhard!
Idézet: „PLC-nél is lehet visszafelé ugorni, csak az ugrás a következő ciklusban tud végrehajtódni.” Ezt részleteznéd? Ilyenről még nem hallottam...
Helló Zed!
Idézet: „Erre azért én is nagyon kíváncsi vagyok, hogyha "magas szintű" nyelven írják a PLC programot, akkor ki lehet úgy "akasztani", mint egy konotrollert.” Végtelen ciklussal nem lehet "lefagyasztani". A Watchdog nem engedi. Figyeli a ciklus időt és ha meghalad egy bizonyos értéket leállítja a PLC-t. Össze kimenet elejt (kikapcsol). A PLC saját rendszere elég sok védelmet tartalmaz, hogy lehetőleg ne jöhessen létre olyan helyzet ami károkat okoz vagy embereket veszélyeztet. Persze a programon is nagyon sok múlik, amit írunk rá
Ha pl: az SPB feltételes ugrás parancsal az előrébb lévő cimkére ugrasz, akkor a PLC nem fog tudni visszafelé ugorni, ezért a következő ciklusban áll meg ott, és hajtja végre.
Na, akkor ezentúl is maradok a klasszikus létra módszernél, mindenféle ugrás utasítás mellőzése mellett!
Viszont akkor ha jól értem, le lehet lassítani egy rosszul megírt programmal. ( Ráadásul, ha jól emlékszem, Siemens-nél be lehet állítani - persze valószínűleg máshol is be lehet - hogy mennyi legyen a kritikus ciklusidő, ahol hibával leáll. )
Hamar összedobtam egy egyszerű programot, (online) értelme semmi, de a lényeg benne van, hogy mire gondoltam amikor a visszaugrást írtam.
Helló Panhard!
Idézet: „Ha pl: az SPB feltételes ugrás parancsal az előrébb lévő cimkére ugrasz, akkor a PLC nem fog tudni visszafelé ugorni, ezért a következő ciklusban áll meg ott, és hajtja végre.” Nem értem most sem mire gondolsz, sorry Az SPB (JC) feltételes ugrás akkor ugrik, amikor a végrehajtás rákerül az ugrásra és az RLO bit értéke közben éppen 1. Más szóval ha RLO=1, akkor azonnal ugrik. Nem a következő PLC ciklusban, hanem abban amelyikben ráfutott az ugrásra! "JC Jump if RLO = 1 If the result of logic operation is 1, JC scan and jumps to a jump destination. The linear program scan resumes at the jump destination. The jump destination is specified a jump label. Both forward and backward jumps are possible."
Az eredeti kérdés az volt, tud-e visszafelé ugorni? Válasz: tud. (mellékeltem a képet) az egyértelmű hogy ugyanabban a ciklusban nem tud visszaugorni, azért hajtja végre a következőben. Az előreugrást azt tudja ugyanabban a ciklusban is. (bocs, én németül ismeren a parancsokat
Helló
TSX nano plc vel kapcsolatban szeretném kérdezni,hogy van e hozzá windows os program.
Hali Panhard!
Idézet: „Az eredeti kérdés az volt, tud-e visszafelé ugorni? Válasz: tud.” Ezt én is tudom. Nem is ezzel volt a problémám. Idézet: „az egyértelmű hogy ugyanabban a ciklusban nem tud visszaugorni, azért hajtja végre a következőben. Az előreugrást azt tudja ugyanabban a ciklusban is.” De ezzel van. Miért ne tudna akkor és ott visszaugrani? Miért csak a következő ciklusban tudna ugrani és ez miért lenne egyértelmű? Az ugró utasítás akkor ugrik, amikor végrehajtásra kerül és NEM a következő PLC ciklusban, hanem abban a pillanatban, vagyis az aktuális ciklusban! Nekem ez az egyértelmű.. (és szerintem így igy működik). Feltételes ugrásról lévén szó, ha a feltétel a következő ciklusban IS teljesül, akkor a következő ciklusban IS ugrik. De szerencsésebb lett volna a feltétel nélküli (JU) utasítást felhozni példának. Vagy úgy gondolod, hogy a feltételes ugrásnak van ilyen tulajdonsága? Ez a "következő ciklusban ugrik" kitétel számomra továbbra is érthetetlen... Sorry!
Lehet ugyanazt mondjuk, csak félreértjük egymást?
Én azt a visszaugrást úgy értem, hogy ha van egy ugrási parancs, akkor a plc ciklus nem lép vissza mondjuk 3 lépést a cimkéhez, mert a ciklus az mindig csak előre megy. De programozás szempontjából vissza ugrik, mert az ugrási parancsnál a cimke visszább van. Tehát ha a SPB vagy SPA (JC, JU) parancs a hatodik sorban van, a cimke meg a harmadik sorban, akkor csak a következő ciklusban tud újra a harmadik sorra futni, mert mindig csak előre megy. Az előreugrásnál azért nincs ilyen gond, mert ott csak ki kell hagynia utasításokat, mert a cimke később van.
Hali Panhard!
Idézet: „Lehet ugyanazt mondjuk, csak félreértjük egymást?” Nyilván. Épp ezt a félreértést szeretném tisztázni. Idézet: „Én azt a visszaugrást úgy értem, hogy ha van egy ugrási parancs, akkor a plc ciklus nem lép vissza mondjuk 3 lépést a cimkéhez, mert a ciklus az mindig csak előre megy.” A PLC ciklus csak annyit jelent, hogy a felhasználói programot újra és újra (ciklikusan) lefuttatja a PLC rendszere. Amikor a felhasználó programja fut, akkor az az csinál amit akar (a saját lehetőségein belül). Ha vissza ugrás van benne, akkor visszaugrik. Természetesen a "cikluson" kívülre nem tud ugrani, a már lefutott ciklus a múlté (sőt, blokkon kívülre sem de visszafele igen).
Holnap utána nézek ennek melóhelyen, hogy egy visszaugrást hogyan csinál a PLC.
Egy példa: Forma1-ben sem fordulnak vissza a pályán, ha kapnak egy olyan parancsot, hogy ugorj a boxutcába, csak ha legközelebb ott lesznek, akkor kimennek. nem teljesen jó példa mert a boxutca a pálya végén van, de ha a közepén lenne, és ha már elhagyták, akkor csak a következő körben tudnának kimenni. Ezt a PLC is csak így tudja végrehajtani, mert így tervezték, ilyen. A lépések mindig előre mennek. (de még PIC-nél is így van, hogy pl: a goto parancs= 2 utasításciklus =4 órajelciklus)
Hali Panhard!
Idézet: „Holnap utána nézek ennek melóhelyen, hogy egy visszaugrást hogyan csinál a PLC.” Ok. Bár én már leírtam hogyan csinálja :> Idézet: „Egy példa: Forma1-ben sem fordulnak vissza a pályán, ha kapnak egy olyan parancsot, hogy ugorj a boxutcába, csak ha legközelebb ott lesznek, akkor kimennek.” A PLC az ugrást ugyan úgy hajtja végre mint bármilyen más programozható eszköz. A forma1-hez semmi köze, a programvégrehajtás nem egyirányú utca, ahol csak előre lehet menni. Idézet: „A lépések mindig előre mennek. (de még PIC-nél is így van, hogy pl: a goto parancs= 2 utasításciklus =4 órajelciklus)” A PLC ciklusokat hiba lenne összekeverni egy CPU órajelével. Idézet: „Az ugró utasítás akkor ugrik, amikor végrehajtásra kerül és NEM a következő PLC ciklusban, hanem abban a pillanatban, vagyis az aktuális ciklusban!” Belegondolva, nekem is ez lenne egyértelmű, hogy az ugrás az pont arra van, hogy minél előbb, lehetőleg azonnal ugorjunk oda, ahova kell, hiszen valószínűleg pont ezért raktuk oda az ugrást, hogy akkor az utána lévő utasításokat valamilyen módon azonnali hatállyal átugorhassuk (valamilyen irányba). Mindenesetre a múltkor a Moeller PLC-nél nem sikerült az a művelet, amikor egy ugrást úgy akartunk megvalósítani, hogy egy korábban (visszább) lévő címkére ugorjon a vezérlés. Úgy oldottuk meg ehelyett, hogy a program végére tettünk egy Vege: címkét, és arra ugrasztottuk rá, azaz végülis ezzel a PLC ciklus elejére küldtük a vezérlést, és ott vizsgáltunk egy ezzel kapcsolatos feltételt. Legalábbis így emlékszek, hogy ilyen módon kezeltük akkor a helyzetet.
Helló Norberto!
Idézet: „Mindenesetre a múltkor a Moeller PLC-nél nem sikerült az a művelet,” Ezzel én nem is vitatkozok, elhiszem. De a vita tárgya már konkrétan S7-300/400-ról szól, aminél pontosan lehet tudni hogyan működik az ugrás.
Hali Panhard!
Ha törlöd az M1.0 bitet és lefuttatod ezt a programot, az M1.0 nulla lesz, mert a VAR1 és a VAR2 is kettőt fog tartalmazni minden PLC ciklus végén. Ha a JU M002 ugrás nem hajtódna végre az aktuális ciklusban, akkor a VAR1 1-et, a VAR2 pedig 2-t tartalmazna ami miatt M1.0 1 állapotba kerülne az összahasonlítás miatt, de nem így történik. Azért nem, mert a teljes program lefut mindegyik PLC ciklusban a visszafele ugrás ellenére is!
Igen, neked van igazad, nem találtam semmit ami arra utalt volna, hogy a következő ciklusban hajtódik végre az ugrás. Nem tudom, hogy miért emlékeztem így erre.
Jövök neked egy sörrel majd HE találkozón megisszuk.
Sziasztok!
Lenne egy kicsit láma kérdésem. PLC analóg kimenetével dimmeres lámpát szeretnék vezérleni. 20 db lámpáról lenne szó. A dimmer 1-10V-os. A 20 db lámpát egyszerre kellene vezérleni. Ezért felfűzöm. Gondolom közvetlenül nem lehet a AO-ra kötni. A kérdésem az volna, hogy hogyan lenne célszerű kivitelezni? (PLC: Delta DVP-SX) Előre is köszönöm.
Srácok!
Nagy bajban vagyok! Munkahelyemen belefutottunk egy olyan munkába, ahol MSZ EN 61082-2 szabványra és VGB-R170 előírásokra hivatkoznak. Ezek alapján kellene a dokumentációt illetve az előterveket elkészíteni. Illetve DIN szabvány szerinti logikai terveket kellene produkálnom. A szabványt gondolom a szabványügyi hivataltól meg tudjuk venni. A VGB-R170 ajánlás hol hozzáférhető vajon? Ha valakinek van ezekről használható anyaga, kérem, segítsen.
Szia.
A problémát úgy kell összeegyeztetni, hogy a te PLC-s AO-d mekkora áramot tud leadni, illetve a dimmer AI-je mekkora áramot vesz fel ? Ha 20*dimmerAI > 1*plcAO, akkor gond van. Vannak a piacon 0-10V/0-10V galvanikus leválasztók, ebből kellene olyan, ami vagy egyedül bírja a 20*AI-t, vagy ha ilyen nincs, akkor elosztani néhány darabra. DMX512-t biztosan nem tud a dimmer ? Imi.
Valahogy sejtettem. A PLC AO Katalógusa:
DELTA DVP-SX A dimmerről nem sokat tudok, csak annyit, hogy analóg és digitális közül lehetett választani. Kaptam egy leírást, de nem találom az AI adatokat. Nagyon köszönöm a segítséged.
Üdv mindenkinek!
Hozzájutottam egy Siemens Simatic S7-200 típusú PLC-hez. Az lenne a kérdésem, hogy van-e valakinek hozzá programozó szoftvere? Vagy linkje, ahonnan le lehet tölteni (asszem Step 7/microwin -nek hívják). Előre is köszönöm! |
Bejelentkezés
Hirdetés |