Új hozzászólás Aktív témák
-
Szirty
őstag
válasz
Dezsi82
#2851
üzenetére
Helló Dezsi82!
A szervó hajtásokra jellemző (már amiket ismerek) hogy a refpoontnak nem kell a nulla pontnak is lennie egyben (sőt a legtöbbször nem az).
Durván fogalmazva úgy fest, hogy elballag a refpont érzékelőhöz, ott valamilyen módszerrel (pl. a "hiszterézis kereséssel") felveszi a referencia pontot és a koordináta rendszer nulla pontját ehhez viszonyítva állítja be (többnyire egy előre megadott paraméter alapján.
Több egyforma gépen ennek a paraméternek a beállításával (ha volna ilyen) elvileg teljesen azonos helyre lehetne hozni a hajtás nulla pontja.Sajnos igen a paraméter meghatározásához mérni kell. Mégpedig legalább olyan pontosan, amilyen pontosan be kell állítani egyformára.
A mérésről semmi elképzelésem nincs, nyilván kell egy bázis amihez képest mérünk. De hogy milyen mérési módszer adna ilyen pontosságot nem tudom, nem vagyok gépész.
De abból, hogy a szervó képes mérni a saját mozgását ekkora pontossággal, azt feltételezem, hogy ilyen pontos mérés lehetséges és kivitelezhető.
(Vannak pl. 1um pontosságú optikai távolságmérők) -
Szirty
őstag
válasz
Dezsi82
#2848
üzenetére
Hali Dezsi82!
Én sajnos csak elméleti fejtegetésbe tudok menni, ezért valószínűleg nem szolgálok válasszal a kérdésedre, de érdekes probléma.
Ha a szervó inkrementális encoderrel dolgozik, és az encodernek az "A" és "B" jelén kívül van "Z" is (ami körülfordulásonként egy impulzus) akkor a pontos refpontot ad az, ha a refpont ind. érzékelő valahol két "Z" között van. és a refpont az adja, hogy elérte ind. érzékelőt és onnantól első "Z".
Sajnos mivel a refpont felvétel ált. a drive magánügye, ha ilyen lehetőséggel nem vértezték fel, akkor ez máris füstbe ment.
Szokott lenni sok (de legalábbis több) reftravel mode. Akkor ahogy mondtad az lehet a legjobb ha elmegy ind. érzékelőig, megjegyzi hol érte el, túlmegy, megjegyzi hol hagyta el és a kettő különbségének a fele lesz a refpont.Amúgy fogalmam sincs, ilyen pontosság még nem kellett nekünk (igaz ált. a szervó utak nálunk 10 méterekben mérhető).
A CNC-k hogy/mivel csinálják ezt?
-
Szirty
őstag
Üdv Mec!
"Már sokfelé nézelődtem, de sehol sem találok a felépítéséről semmit."
Az S7-1200 Programmable controller System Manual-ban le van írva.
A fenti angol, ha német jobban fekszik, akkor ezt töltsd le.
-
Szirty
őstag
válasz
bodnarg
#2834
üzenetére
Helló bodnarg!
"mivel 8 jelet kell átlagoljak, előggé feltornázta ciklus időt"
Csinálj egy ring buffert, amibe egy mutatóval írsz, (Amikor a mutató eléri a buffer végét, az elejére állítod, így a címzés megy körbe-körbe)
Amikor mérsz egyet, akkor a mérési eredményt hozzáadod egy változóhoz, kiolvasod a ring buffer mutatója által mutaott elemét, amit kivonsz az iménti változóból, majd lépteted a buffer mutatóját, utána oda beírod a mért értéket.
Az átlagot ezután úgy kapod meg, hogy a változód tartalmát elosztod a ring buffer méretével.Előnye, hogy minden méréskor csak 3-4 műveletre van szükség és nem kell annyi amennyi elemű a buffer. vagyis sokkal kevésbé erőforrás igényes.
-
Szirty
őstag
válasz
bodnarg
#2828
üzenetére
Helló bodnarg!
A maximum és a minimum meghatározása elég egyszerű. Két változóra van szükség és minden mérési ciklusban a mért eredményre.
Nézzük a MAX-ot.Kell egy változó, amiben az addig mért legnagyobb értéked lesz majd (MAX). Ebbe kezdetben nullát töltesz. Amikor mérsz egyet megvizsgálod, hogy mért érték nagyobb-e mint MAX. Ha nem, akkor nem bántod, ha nagyobb, akkor a mért értéket beleteszed MAX-ba. Ezzel kész is. Ez akár milliárd mérés közül is tárolja az addigi maximumot. Egészen addig, amíg le nem nullázod újra (vagy feltétel nélkül bele nem töltöd a mért értéket).
A minimum meghatározása ugyanez, csak kisebbre hasonlítasz.Az átlag rafináltabb. Több módszer is van, nemrég volt szó róla a PLC levelező listán is. Szerintem olvasd el ott mit hoztak ki belőle.
-
Szirty
őstag
válasz
DP_Joci
#2821
üzenetére
Helló DP_Joci!
.fwx-et? Sajnos nem, semmiképpen.
Az sajnos már bináris és csak a futtató környezet számára szükséges adatok szerepelnek benne, a szerkesztő számára elengedhetetlen infók nem.
Ebből a szempontból olyasmi mint a bináris .exe, amiből már nem lehet visszanyerni az eredeti forrásprogramot. -
Szirty
őstag
válasz
isvarga
#2819
üzenetére
Üdv István!
"Egyébként a láttam olyan PLC leírást ahol 1:1 assembly utasítások is voltak a parancsok között."
A legtöbb PLC-nek (illetve fejlesztői környezetnek) van több szintű nyelve. alacsonyabb, magasabb. pl. Siemens S7-nek is van assembly-szerű nyelve (ami szintén célorientált).
"Olyan ez mint amikor a HMI megszólítja Janit , "már megint sörözni voltál te tróger " a HMI -nek dunsztja sincs mit ír ki ,csak aki ezt megcsinálta."
Az a cikk, aminek a linkjét idéztem amikor először emlegettél sci-fi-t (és ezek szerint nem olvastad el) a hibakezeléssel kapcsolatban pont ezt a témát feszegeti.
"Az ,hogy kitaláltak maguknak saját elnevezéseket , kommunikációt , csak a saját piac védelme miatt van."
Ezt nagyon rosszul látod! Ez csak részben igaz.
Avagy: nem azért találnak ki saját megoldásokat, hogy a saját piacukat védjék, hanem mert a dolog egyértelműen megkívánja, hogy dolgokat kitaláljanak (fejlesszenek).
És miután kifejlesztik (sok idő és pénz) már persze hogy védik!
Emberbaráti jóindulatból nem lehet megélni. Ezért gondolom nem fogsz te sem évekig heti 40 órában fejleszteni egy összetett kommunikációs módszert, majd azt teljesen ingyen mindenki rendelkezésére bocsátani."Van ez a profibus kommunikáció : (idáig én csak rs485-nek ismertem aztán modbusnak)"
A modbusnak semmi köze a Profibuszhoz. Azt egy másik cég fejlesztette ki (Schneider a Modicon PLC-ihez).
Az RS485-nem és a profibusznak meg annyi köze van egymáshoz, hogy az előbbi egy fizikai hordozó "réteg", míg a másik protokoll.
A profibus DP nagyon univerzális (ezért szükségszerűen nagyon összetett is) terepi busz kommunikációs protokoll ipari vezérlések, folyamatirányítás számára. Ez az RS485 vagy fizikai réteget használja (vagy száloptikát). (a ProfiNET pedig ennek az ethernetes implementációja). Ciklikus, Master-Slave alapú, token-ring szerű, fél duplex kommunikáció jellemzi. Megengedi a multi-master módot.A Profibus PA azt hiszem csak a fizikai hordozóban tér el. Itt két busz-szerű vezeték van, ami az eszközök tápellátását is biztosítja. A vezeték speciális, kialakítása olyan, hogy az eszközöket egyszerű bárhova ráfűzni a vezeték megbontása nélkül (vámpírcsatlakozós megoldás). Robotoknál NC gépeknél nem hiszem hogy gyakori az előfordulása. Inkább process automation (folyamatirányítás) a fő csapásiránya (arra lett kitalálva a fizikai kialakítása). tehát nagyobb távolságra lévő műszerek, távadók buszra fűzése pl.
ha jól emlékszem a megengedett max. adatátviteli sebessége jóval alacsonyabb mint DP esetében...A profibusz több céghez kötődik, tulajdonképpen ipari szabvány, amit a PI (Profinet-Profibus) konzorcium koordinál.
Sok infó van róla a neten. mellesleg a profinet.com cím is oda visz... -
Szirty
őstag
válasz
isvarga
#2812
üzenetére
Hali!
"Az én fejemmel ennek semmi köze nincs a programozáshoz (fölkészülni minden eshetőségre)"
Ilyen hibakezelésekből szokott állni nem kevés program jelentős része! Amelyikben ilyen egyáltalán nincs, az régen rossz.
Sok-sok óra fejlesztés megy rá ilyesmire.
Ha egy berendezés hibás működési állapotainak program által történő felismerésének megvalósítása nem programozás, akkor nem tudom mi. (Bár itt mi is inkább favágásnak hívjuk).
De ha szigorúan vesszük a programozás az én értelmezésem szerint valamilyen programnyelven program írása (utasítások egymásután helyezése, ami egy adott algoritmus megvalósítását célozza).
A hibás állapotok észlelése, kezelése, üzenetek megjelenítése is ezen a "programozás"-nak nevezett tevékenység által valósul meg.A paraméter állításokat programozásnak nevező megrendelő esete nem tudom hogy kapcsolódik a témához (így nem tudom példaként vagy ellenpéldaként értelmezni)
-
Szirty
őstag
válasz
isvarga
#2809
üzenetére
Üdv istván!
Mivel egyre egyértelműbb, hogy álláspontjaink ennél jobban már nem fognak közeledni egymáshoz, összefoglalom a magam részéről a témát:
A mikrovezérlőnek és a PLC-nek is megvan a maga létjogosultsága (én az utóbbira próbáltam rávilágítani, de az előbbivel is tisztában vagyok).
Mind a kettő hatékony a maga területén.
Ahova jó választás egy mikrovezérlő, oda botorság PLC-t rakni, ám egy mikrovezérlőt PLC-s feladatra használni semmivel sem kevésbé ostobaság.
Ugyanakkor tudom, hogy a két terület között a határ nem penge éles, van átfedés. De ha mindkét terület közepéből veszünk mintát (nem véletlenül emlegettem közepes PLC feladatot végig) akkor teljesen egyértelmű, hogy nagy különbség van a kétféle megoldás szintje között (és itt nem minőségi szintről van szó).Ha te olyan eszközt akarsz építeni, ami minden tekintetben (HW és szoftveres szempontból egyaránt) megfelel olyan feladatoknak amire a PLC, akkor te egy ugyanolyan PLC-t fogsz építeni, ami ellen jelen pillanatban tiltakozol. (talán jó példa erre az Unitronics)
Miért? Mert az évek során a fejlesztések abba az irányba vittek és jelenleg általánosságban az a megoldás a leghatékonyabb ipari folyamatok irányítására. A vitát megelőzve, amit ebben a mondatomban sejtek sietve kijelentem, hogy: nem azt írtam, hogy mással lehetetlen megoldani!Valószínűleg egyedül otthon NYÁK-olgatva nincs esélyed utolérni a fejlesztésben olyan gyártókat, akik évtizedekig, sok tagú mérnök csapattal a háttérben dollármilliókért fejlesztették ki mai PLC-iket. Bár látom, hogy igazából nem is ez a cél (igaz amit írsz az nem mindig van összhangban azzal amit látok, vagy én értek félre néha valamit)...
-
Szirty
őstag
válasz
isvarga
#2808
üzenetére
Üdv István!
"Csak remélni merem ,hogy ezek után kifejted bővebben is ,mert nagyon érdekelne a dolog."
Én ezt már kifejtettem, szerintem ilyesmire gondolt:
Gyakorlati tanácsok gépek programozáshoz és tervezéshez
A hibakezelő OB-k
Hibakezelés: az OB86 (Rack Failure) -
Szirty
őstag
válasz
byte-by
#2806
üzenetére
Hali!
"ha valaki időt és energiát fektet bele, a PLC azt is "elárulja" mi a hiba, hol a probléma, sőt , mit kell tenni, vagy csak megteszi amit kell.csak program kérdése.
nem tudom a micro-val ez megtehető-e."Sajnos nem jutott eszembe megemlíteni a fejlesztői környezet és a diagnosztizálhatóság (hibakeresés) fontosságát. Szerencsére Te megtetted.

István!
Ennek hiánya mérhetetlenül aláássa a rugalmasságot és a hatékonyságot.
Pl. futásközben a vezérelt gép működése közben módosítható program, a belső állapotok, változók, memóriatartalmak megfigyelhetősége működés közben olyan tulajdonságok, amik fontosak egy PLC-ben.
Nem tudom ilyesmi mennyire lenne megvalósítható egy PIC-es vezérlésben... -
Szirty
őstag
válasz
isvarga
#2804
üzenetére
Helló István!
Reméltem hogy nem lesz rá szükség, de akkor az egyértelműség kedvéért leírom mi volt a célom a példával és mi nem.
Nem volt célom vele a PLC népszerűsítése, az eredményeid lekicsinylése és nem volt célom magamat dicsőíteni sem. Igyekeztem úgy fogalmazni, hogy ez a vád ne merüljön fel, és azt hiszen nem is merült fel.Egyszerűen csak leírtam címszavakban egy közepes méretű (bonyolultságú) PLC-s vezérlés műszaki tartalmát, hogy világos legyen mire használnak az iparban PLC-t.
Azért, mert korábbi üzenetekben tettél néhány olyan kijelentést, amiből arra következtettem, hogy nem ismersz ilyen rendszereket kellő mélységben ahhoz, hogy tárgyilagosan nyilatkozz róluk.
Nem volt bántó szándék sem mögötte."(aki ismeri a léptetőmotor vezérlőket az tudja miről van szó)"
Használtam már léptetőmotort PLC-s rendszerben. Külön vezérlő van hozzá (FM353 volt).
Nem hinném hogy ettől rugalmatlanabb lassabb lenne. Különösképpen azért sem, mert ennek a megoldásnak pontosan az a lényege, hogy a lehető legrugalmasabb és legsokoldalúbb legyen, de az alkalmazhatóságát ez ne rontsa. (nem egyszerű ezt megvalósítani, a két dolog hatása ugyanis éppen ellentétes egymással). -
Szirty
őstag
válasz
isvarga
#2802
üzenetére
Hali isvarga!
Látom a válaszodból, hogy nem igazán fogadod el amit írtam.
Én terepi buszos szorvókat említettem, nem egy bemenete van, amivel megmondod hogy A vagy B pontba menjen, hanem profibuszos kapcsolat van és sok száz bit a szervó és a PLC közötti kommunikáció.
Aktuális pozíció, aktuáli ssebesség, felfutó rámpa, lefutó rámpa, előírt sebesség, paraméter készlet, státus szó (32 bit) vezérlő szó (32 bit) üzemmód, célpozíció, stb, stb, stb. Ez szorozva annyival, amennyi szervóhajtás van a rendszerben.Az említett (példaként hivatkozott, valóságban is működő) rendszer PLC programja százezer sor (az adat struktúra definíciók és adatblokkok tartalma nélkül, csak a program kód). Ezzel próbáltam szemléltetni egy közepes bonyolultságú PLC vezérlésű alkalmazást.
Sajnálom ha nem sikerült."A PLC verzióban nincs gyorsulás -sem számolt lassulás ,tehát egy sokkal lassabb ,rugalmatlanabb eszközt kapok."
Tévedés! A lényeg ennek éppen az ellenkezője.
Meg kellene nézed és meg is ismerned egy ilyen rendszert ahhoz, hogy korrekt véleményed lehessen róla.
-
Szirty
őstag
válasz
isvarga
#2800
üzenetére
Helló István!
"Úgy emlékszem 1-100ms között írta az értéket ,csak akkor ezek szerint állítható )
Talán akkor ez a legnagyobb különbség a 2 megközelítésben.(bár számomra ez mosolyogtató érték)"1-100ms nem vicces, hanem egy rendkívül jó gyakorlati érték.
Te a mikrovezérlők irányából jösz és furcsa, mert ott nano meg mikroszekundumok vannak.
Nálunk 20ms ciklus idővel közepes teljesítményű S7 PLC-vel teljes gyártósor üzemel.
Rajta profibuszon: 27 pozícionáló szervóhajtás, két Fanuc robot, 10 decentralizált frekvenciaváltó, 5 további frekvenciaváltó.
Ugyanezen a PLC-n profineten egy Cognex alakzat felismerő kamera és egy operátor panel.
Ugyanezen a PLC-n egy Interbus interfész, amin 800 db digitális I/O pont dolgozik.
A PLC ethernet hálózaton kapcsolatban áll több más PLC-vel (a gyártás más gyártósorait vezérlik) és Oracle szerverrel, ami a termékkövetést intézi.
Ilyen egy közepes testhez álló feladat egy PLC számára ipari környezetben.
Tehát buszos eszközök százai, szervók, hajtások, (buszos mind) lézeres távoslág mérők, nyomás távadók, szintmérők, mérleg modulok, stb, stb, stb..."3 fórumot találtam ahol foglalkoznak a témával (2 aktív) ,végig olvastam a beszélgetéseket ."
Az általam ismert és aktív PLC-s fórumok az alábbiak:
Hobby Elektronika
Ez a fórum
PLC fórum
És PLC levelező lista"Egy plc használata semmivel sem egyszerűbb ,mint mondjuk a mikró számítógépek. Az egyetlen előnyét abban tudnám megfogalmazni ,hogy "konyhakész" termékek ,és ha az én céljaimra megfeleltek volna biztos abba az irányba indulok."
A PLC-k célorientált, a feladatra specializált eszközök annak megfelelő programozási lehetőségekkel és tudással. Ennélfogva ilyen feladatra nagyon hatékonyak (az általános célúaknál hatékonyabbak)."Az én véleményem szerint a megfelelő eszközt a megfelelő munkára ."
A legnagyobb mértékben egyetértek

-
Szirty
őstag
válasz
isvarga
#2798
üzenetére
Hali isvarga!
"Az adott alkalmazások időbeni garantált lefutására gondoltam .(nálam is adott felhasználástól függ )"
Én pont azt szerettem volna kiemelni, hogy a PLC MINDIG determinisztikus. Ez nem függ semmitől, az alkalmazástól meg pláne nem.
Egy ciklus garantáltan véget ér egy megadott időn belül (ált. max. 100ms körüli értéket szoktak megengedni, de nagyobb PLC-knél ezt lehet állítani is).Ha mégsem képes lefutni (hogy képes-e vagy sem az a kódtól függ, mert lássuk be: egy végtelen ciklusra annyira nem jellemző hogy meghatározott időn belül lefutna) akkor a rendszert biztonságosan leállítja (vagy egyéb olyan akciót hajt végre, amivel a probléma biztonságosan kezelhető).
-
Szirty
őstag
válasz
isvarga
#2795
üzenetére
Hali isvarga!
Nocsak. Egy mikrovezérlős PLC fejlesztési projecttel már találkoztam a HE oldalain.
Gratulálok, ez szép munka!Pár megjegyzést teszek (elvégre ezt kérted).
A hivatkozott oldalon van egy ilyen megjegyzés "(érdekes idáig azt hittem a PLC-garantál valami futás teljesítményt az egyes program elemekre )"Igen a PLC determinisztikus. Vagyis garantált hogy egy programciklust véges és ismert időn belül befejez (vagy végrehajtja, vagy ha az nem lehetséges, akkor jelzést ad).
(Már ha erre gondoltál)Pár kérdés, ami eszembe jut:
A ki és bemenetek galvanikusan le vannak választva? Ez rendkívül fontos az üzembiztonság szempontjából. (az ipari PLC-k ilyenek).Amennyire látom az eszközt közvetlenül a mikrovezérlő nyelvén lehet programozni, vagyis nincs semmilyen szoftver környezet, oprendszer benne.
Ez nagyobb rendszerek hatákony fejlesztésénél, ami erre az eszközre épül, komoly akadály lesz. Bár lehet nem is arra szántad.
Emiatt a készülék inkább célvezérlő, mint univerzális ipari PLC.Mindenképpen derék amit létrehoztál!
-
-
Szirty
őstag
válasz
DP_Joci
#2783
üzenetére
Hali DP_Joci!
A távadó méréshatára és a D/A-ról érkező értéktartomány a mérvadó a fizikai mennyiség kiszámításánál..
Ha az analóg bemeneten 0 olvasható be 4mA áramnál és 27648 20mA áramnál,
és a távadó méréstartomány -10...200 fok C, akkor 0 beolvasott érték tartoztik -10 celsiushoz és 27648 200 fokhoz.
Ha a távadó 0-400 fokos, akkor 0=0, 27648=400 -
Szirty
őstag
-
Szirty
őstag
válasz
01101010111
#2776
üzenetére
Hali 01101010111!
"( Supply és load votage között magyarul hogyan lehetne különbséget tenni? Mindegyik tápfeszültséget jelent, nem?)"
Be és kimeneteknél meg szoktuk különböztetni az eszköz (buszos elektronika) táplálását és a kimenetekre kapcsolt eszközök táplálását (kimenetek közös (COM) csatlakozása).
Az előbbit az eszköz állandóan kapja, az utóbbit pedig huzalozott feltételeken keresztül, főleg biztonsági relék, vészleállítás általi leválasztással.
Így lehet megoldani biztonságosan hogy egy szelep, mágneskapcsoló, stb ne kapcsolhasson be vészleállítás esetén akkor sem, ha a PLC kimenet (távoli out) mondjuk bekapcsolva marad.
Ez fontos biztonsági intézkedés! -
Szirty
őstag
válasz
01101010111
#2762
üzenetére
Helló 01101010111!
"Teljesen, más: soros portos laptopok közül melyiket érdemes megvenni szerintetek?"
Én használtam Toshiba TECRA 8200-at, jól működött minden eszközzel a soros portja amiket próbáltam. Ez sajnos már elég régi típus, (800MHz Mobil I pentium, 512MB RAM).
Most egy Dell Latitude D630-at használok. Nagyon strapabíró, soros porttal nincs kompatibilitási gond (sokmindenbe bedugdosom). Ez már izmosabb kicsit, bár ez sem mai típus (Intel Core2 duo T8100 2.1GHz 4GB RAM). Jelenleg a munkához teljesen megfelel (bár kapott egy nagyobb HDD-t).
-
Szirty
őstag
válasz
Dezsi82
#2755
üzenetére
Hali Dezsi82!
"(bele is írtam), de az is elég egyértelmű volt, hogy a kérdező sem arra gondolt."
Nem mindig van bekapcsolva a varázsgömböm. Olyankor arra ragálok amit leírnak és nem arra amit írás közben gondolnak. Nem kell zokon venni, nincs mögötte gonosz szándék (ráadásul nem is neked szólt).
"Kiemeltél egy logikai bukfencet, én is ezt tettem."
Igen. Egy másik "logikai bukfenccel". Miért? (erre nem kell válaszolni, tudom :>)
"Senki sem mondta, hogy Celsius fokról beszélünk. Lehetne Fahrenheit vagy Kelvin."
Így van! Látom kezded érteni mi itt a lényeg...
"Említs meg légyszíves nemesgázokon kívül elemeket, amelyek elemként előfordulnak és nem alkotnak vegyületet."
Miért pont azokon kívül?

-
Szirty
őstag
válasz
Dezsi82
#2753
üzenetére
Helló Dezsi82!
Vízre gondoltam, az atmoszferikus nyomásnál sokkal jelentősebb nyomáson a vázolt feladatot figyelembe véve.
Az iparban a gőzfűtést ugyanis jellemzően ilyen fizikai körülmények között oldják meg.
Ezért így ott nem fordulhat elő pl. 80 fokos vízgőz.Mellesleg mi ez az előítélet, hogy vegyületre gondoltam? És ha nem vegyületre, hanem kémiai elemre? :>
-
Szirty
őstag
válasz
DP_Joci
#2747
üzenetére
Szia Joci!
"A fűtéshez én is egy PID-et gondoltam használni, valamint egy másik PID-et a vákuum szabályozáshoz."
Az így korrekt szerintem.
"Mi a véleményed arról, ha a hűtőközeg hőmérséklet emelkedése esetén a samson szeleppel sorba épített szeleppel elzárom a gőzt, a szabályozót pedig hagyom szabályozni tovább (gondolom ez folytatni fogja a zárást). "
Hát ha jól van beállítva. De lássuk be, a gépkezelők leleményessége szinte végtelen.
A sorba épített szelep jó ötletnek tűnik, mert sok propszelep nem képes a 100%-os zárásra egy idő után (nálunk is van ilyen megoldás gőzre).
Én ilyen esetben a PID-et felfüggeszteném INT_HOLD és nulláznám az integráló tagot (már ha lesz integráló tag használva persze).
Mert esetleg gőz nélkül rossz beállítás vagy egyéb miatt az integráló tag elballag 100%-ig és akkor a visszahűlés miatt rányit a másik szelep, esetleg gond lehet.
Vagy tenni kell egy rámpagenerátort a PID és a szelep közé
"Gondolom lesznek meglepetések ha a hőmérséklet elkezd növekedni és a tartályban keletkeznek gázok, ezek biztos megzavarják a vákuum szabályzós PID-et. Mit gondolsz erről?"
Erről azt gondolom, hogy a PID szabályzó alapvető feladata a beállított érték tartása éppen a zavaró körülmények ellenére.
Ha egy szabályzókörben nem volnának zavaró körülmények, szabályzóra se nagyon volna szükség. Csak beállítanánk valamennyi beavatkozó értéket és készen is van
Abban viszont igazad van, hogy valószínűleg ugyanakkor épp ez lesz a feladat egyik nehézsége
A fordulat eltéréses elméleti fejtegetés szerintem helytálló.
Csak nem mindegy hogyan figyeled (számolod) a motor fordulatát. Lehetőleg a kimenő frekvenciát kell alapul venni, hogy a kapott érték helyessége a lehető legkevesebb egyéb beállítástól vagy körülménytől legyen függő.
A másik tanácsom, hogy a jeladó által adott impulzus hossza a legextrémebb esetben se legyen rövidebb, mint a PLC legnagyobb ciklus idejének a duplája. persze ha lassan forog, akkor ezzel nem nagyon kell foglalkozni. Az impulzus figyelésnél használj él figyelést és legyen néhány (10-20%) tolerancia a védelem megszólalásában, esetleg néhány másodperc időzítés (legalább két impulzus idő). -
Szirty
őstag
válasz
DP_Joci
#2745
üzenetére
Hali DP_Joci!
Alakul, de még mindig vannak kérdések:
Miféle samson szelep? (gyártanak/árulnak vagy 20-40-60 félét). Ez valamiféle propszelep lesz?"folyadéknak a hőmérsékletét kell szabályozni a visszatérő ágban mért hőmérséklet alapján"
Először előremenő ágat írtál. Tehát ott mérjük a fűtéshez a hőmérsékletet, ahol a tartály palástból kilép a fűtőközeg?
"Ha nagyon felforrósodna a gőz (95fok fölé), akkor a gőzt el kell zárni"
A gőz? Van 95 foknál hidegebb gőz? Vagy a másodlagos fűtőközegre értendő, (amit a gőz fűt és ami a tartály palástba belép és azt illetve nyilván a tartalmát fűti?A másodlagos fűtő közeg, ami a palástban áramlik és a gőz fűti, az zárt körben áramlik?
A hűtőfolyadék szelep propszelep?
Én nem használnék csak egy PID-et. Nem a kézi üzemmódba kényszerítéssel állítanám le ha 95 foknál melegebb, hanem a kimenete után venném el a beavatkozó Jelet és a PID-nek küldenék erre az időre egy INT_HOLD jelet.
A kézi üzemmódot meghagynám, hasznos lehet szervizeléshez, teszteléshez.
A web oldalamon találsz néhány infót S7 PID-del kapcsolatban esetleg az is segíthet... -
Szirty
őstag
válasz
DP_Joci
#2742
üzenetére
Helló DP_Joci!
Én sem teljesen értem, de ennyi alapján én azt mondanám, hogy ha egy mérés van, de két beavatkozó (fűtés és hűtés) akkor egy PID-et használnék. Ha a beavatkozó jel negatív akkor az egyik, ha pozitív akkor a másik beavatkozó eszközt vezérelném.
Egy PID-del is lehet szívni (beállításkor), de ha egynél több is van és ezek hatással vannak egymásra, akkor könnyen lesz a beállítása rémálom.
-
Szirty
őstag
Helló w3dzz!
Csinálj egy loopback tesztet a soros porton hogy kiderüljön jó-e.
-
Szirty
őstag
Hali w3dzz!
"Az ehet baj, ha a WinCC-ben a panel kiválasztásakor Version of device: 7.2.1.0 és 7.2.0.0 lehetőség van a panel menüjében pedig Image: 6.0.3.2?"
Nem. Azzal csak akkor lesz baja, amikor sikerül neki a kapcsolat és elvégzi a version check-et.
Valószínűleg kérni fog egy OS update-et.A kapcsolat sikertelenségének az oka meg lehet pl. az, hogy a panelen nem állítottad be mit is szeretnél.
Ott ugyanis be kell állítani hogy milyen csatornán szeretnél feltölteni rá és azt is, hogy automatikusan induljon a transfer ha megszólítod, vagy csak transfer módban:Ha az Enable channel be sincs kapcsolva azon az interfészen, akkor nem fogad onnan project feltöltési kérelmet!
Ha az be van, de a Remote control nincs bekapcsolva, akkor fogad ugyan project feltöltést, de csak akkor, ha a panelt előbb tarnsfer módba helyezed.
Ha ez enabled, akkor automatikusan fogadja, nem kell transfer mód.Továbbá a panelen be kell állítani a panel címét is ha MPI/DP vagy ethernetes feltöltési módot akarsz (most had ne emlékezzek rá, hogy az IF2 melyik) és a WinCC Flexben az itt beállított címen kell megcélozni a panelt a Transfer menüben...
-
Szirty
őstag
válasz
Royality20
#2728
üzenetére
Helló Royality20!
Nem ismerem a codesyst, de a problémád megoldására az egyik lehetséges mószer a kerekítés

Biztosan van benne ilyen utasítás (Round, RND stb).
A kérdéses real típusú értéket megszorzod 10-el, kerekíted majd elosztod tízzel. Az eredmény 1 tizedes jegyre kerekített érték lesz
(Ha két tizedes jegyre akarsz kerekíteni, akkor 100-zal kell operálni) -
Szirty
őstag
válasz
lakatosturbo
#2719
üzenetére
Helló lakatosturbo!
"Most az a nagy gondom hogy amikor a tartálytöltés szimulációt beadom neki megnyitom wincc-vel akkor a vizet engedi csak nem töltődik a tartály meg a szelepet se tudom megnyitni mert arra meg olyasmi hibát dob, hogy nem tudja beolvasni az értéket."
Jó volna tudni mit üzen a runtime indulás után.
Ezt kellene ott látnod:
Ha a "kapcsolat felépítve" helyett az van hogy "kapcsolat leépítve" akkor nincs kapcsolat a PLCSIM és a flex runtime között, az a baj. Ennek oka az is lehet, hogy a PLCSIM-et a flex RT után indítottad el. (előtte kell).
A másik ok a nem megfelelően beállított PC/PG interface (ezen keresztül akar kapcsolódni a runtime a PLC-hez).Ha van kapcsolat (a változó hibákra való utalás alapján erre következtetek) akor nem töltötted fel a DB255-ös adatblokkot (abban vannak a változók).
Továbbá a töltés után a PLCSIM-et RUN módba kell átkapcsolni! -
Szirty
őstag
válasz
Royality20
#2716
üzenetére
Helló Royality20!
"visualizációval egy input értékét nem lehet megváltoztatni igaz? ezt ugy értem hogy lerakok vizuba egygombot megcimezem pl Ix0.0 és ha a gombot megnyomom azt a inputot egynek nézné."
Végig gondoltad hogyan tudna működni egy ilyen megoldás? Hogyan oldanád fel azt az ellentmondást, amit ezzel a megoldással hoznál létre?
Egy digitális bemeneti bit állapotát a PLC fizikai bemenetére kapcsolt feszültség határozza meg. Ha nincs fesz. a bit=0 ha van fesz a bit=1. Tehát MINDIG vagy nulla vagy egy!
Ekkor jösz te a gonboddal és megnyomod. Nyilván azért, hogy az amúgy éppen nullában lévő bitet 1-be állítsd (hisz ezért raktad oda). Ekkor szerencsétlen bitet egyszerre kellene nullába (mert a bemenet inaktív) és 1-be (mert nyomod a gombot) állítani. Na ilyenkor mi legyen?
Vagy mi legyen ha nem nyomod a gombot de a bemeneten feszültség van? Csak akkor billentse 1-be amikor nyomod és ne bántsa ha nem nyomod, vagy akkor nullázza amikor nem nyomod és hagyja érvényesülni amikor nyomod? stb.
Tudom (gondolom) hogy te az összes variáció közül, ami az elvi lehetőségek kombinációjából következik csaj az egyik szeretnéd, de honnan tudja a PLC hogy melyik lenne az?Az ellentmondás feloldására vannak bevált módszerek.
Az egyik és (részemről) leginkább ajánlott az, hogy soha nem csinálunk ilyet
Ha valamit bemenettel és HMI gombbal is kapcsolni kell, akkor tegyünk külön változót a gombnak és a PLC programjában írjuk meg mikor melyik bit (a gomb bitje ill. a bemeneti bit) mit kapcsoljon hova.A másik hogy mégis így oldjuk meg: a bemeneti bitet kapcsolunk a HMI gombjával. Sok PLC-nél ezt meg lehet tenni (mert a HMI megengedi), csak nem nagyon van értelme, mert akárhogy is nyomkodjuk azt a gombot, a bemeneti bit állapotát a PLC minden ciklusban (néhányszor 10 ezred másodpercenként) felülírja a bemenet fizikai állapotának megfelelően.
A harmadik módszer a FORCE mód. Ezt bizonyos PLC-k támogatják (pl. Omron, Siemens). A lényege az, hogy ebben a módban bizonyos be vagy kimenetek állapotának vezérlését át lehet venni a PLC programtól és pl. a programozó eszközről lehet őket vezérelni. Ez a mód azonban hibakeresési tesztelési céllal létezik. Nem javasolnám üzemszerű használatra. Főleg mert rettenetesen be tudja vinni az embert az erdőbe aki erről mondjuk nem tud és keresi a hibát...
-
Szirty
őstag
válasz
Csakénvagyok
#2705
üzenetére
Helló Csakénvagyok!
"azt viszont nehezebb összehozni hogy a proci a egy tetszőleges képernyőt jelenítsen meg,"
Ilyesmire viszonylag ritkán van szükség...
-
Szirty
őstag
Helló vopi86!
Nos feltéve hogy a BCD kapcsoló a 0.00-0.03 bemenetekre van kötve úgy, hogy 0.00=bit0, 0.01=bit1, 0.02=bit2 és 0.03=bit3, akkor a program a következő:
Az első MOV nullát ír a DM0 memória címre, előkészítve a terepet a TIM SV elhelyezésére.
A MOVD digit mozgató utasítás. Az első operandusa a forrás, (honnan vegye a digitet). Ez itt 0 vagyis a 0. csatorna, ami egy 16 bites (4 digitet tartalmazó) WORD és a 0.00-0.15 bemenetek bitjeit tartalmazza.A MOVD második operandusa a vezérlő szó, ez mondja meg a MOVD-nek honnan hova hány digitet mozgasson. Ez itt #0100 konstans érték ami azt jelenti, hogy a 0 csatorna 0. digitjétől kezdve 1 digitet átmásol a célterület 1. digitjébe.
A 3 operandus a D0, ami a DM adatmemória terület első címe. Ez is egy Word (A DM terület szabadon használható a programban) ide fogja mozgatni a digitet.Ha tehát a 0.00-0.03 bemenetekre kötött kapcsolón pl ötöt állítasz be, aminek bináris mintája 101, akkor azt a MOVD a DM0 bit4-bit7 bitjeibe (2. digit) másolja aminek eredményeképpen ott előáll a 1010000 bináris érték, ami megfelel a BCD 50-nek, ami 5 másodperc időzítést fog jelenteni.
Végül a DM0 a TIM1 SV operandusa, a TIM1 tehát addig telik amekkora idő van a DM0 memóriacímen.
-
Szirty
őstag
Helló vopi86!
Attól függ pontosan hány BCD kapcsolót kötsz be és pontosan hogyan szeretnéd az időt állítani.
Ha csak egyet, azon egy számjegy állítható be. A timernek meg #0000-#9999 érték adható. Akkor állítod tízesével, százasával, vagy hogy (pl. a kapcsolón a 5 #50-et jelent a timernek, ami 5 másodperc, a 4 #40-et, ami 4 másodperc)?Ha négyet raksz, akkor hogyan kötöd be? Multiplexeled, vagy nem, ha nem, akkor 16 bemenet kell hozzá. Stb..
Szóval megmondom hogyan kell programozni ha megmondod mit.
-
Szirty
őstag
Hali vopi86!
Ha tudnám milyen a PLC-d (azon kívül, hogy CPM1, mert abból is van vagy öt fajta) esetleg kiderülne, hogy olyan fajta-e amin történetesen alapból van két db potenciométer. Konkrétan a CPM1-10CDR, CPM1-10CDRT, PM1A-10CDT1-D pl. ilyen, de lehet hogy mind, azt most nem fogom megnézni.

Ha ilyen, akkor ennek a két potméternek az állását egy-egy belső szóból kiolvashatod (IR250 és IR251) amiket a programban arra használsz, amire akarsz, Pl. időtag SV (Set Value) értéke is lehet. Ennél egyszerűbb nincs, mert ez már adott.
A másik lehet egy (vagy több) külső BCD kapcsoló.


Ezek azonban elfoglalnak digitenként négy bemenetet (ha multiplexeled, akkor 4 bemenetet, +digitenként egy kimenetet. Persze multiplexelés nem jöhet szóba relés kimenetű PLC-vel.
Vagy készítesz valami egyedi megoldást az időtag állítására. Pl. egy "növel" és egy "csökkent" gombbal teszed állíthatóvá, esetleg előre fixen beállított időértékek között választasz bemenetek állapota alapján, stb.
"...beviteli eszközt,kijelzőt, ami olcsóbb mint egy hmi"
Minden ilyen eszköz alapvetően HMI

-
Szirty
őstag
válasz
byte-by
#2687
üzenetére
Hali byte-by!
Amikor a komparátor "kimenetére" tesszük a kimenetet vagy a további feltételeket, belül (alacsony szinten) akkor is minden komparátornak ugyanazokat a jelzőbiteket állítja be és ugyanazt használja a feltételeknél.
Ez S7-nél tetten érhető azzal, hogy megnézzük STL-ben a létrában írt összehasonlításokat. Ott az RLO-ba kerül az összehasonlítás eredménye (mindamellett,hogy ott is van kisebb, nagyobb egyenlő stb jelzőbit, amikbe szintén bekerül az eredmény).
Az ilyen létrárban csak a megjelenítés módja tér el (magasabb szintű) így nem merül fel az ellentmondás. -
Szirty
őstag
válasz
byte-by
#2685
üzenetére
Helló byte-by!
"Ha minden comparátor ugyanazt a special bit-et (255.06) használja, akkor a rákötött kimenetek mind aktívak lesznek , ha ez 1-ben lesz nem ?"
Nem. Bár tudjuk, hogy a létradiagram a huzalozott vezérlések kiváltására jött létre így azt utánozza és ahhoz hasonlít. Ha ezt a létrát lehuzaloznád, akkor úgy volna ahogy feltételezed.
De mégis csak egy processzor hajtja végre a programot, ami nem egy időben hajt végre minden utasítást, hanem sorban elemzi ki a logikai műveleteket és sorban kapja meg az egyes eredményeket. Létra esetén konkrétan soronként fentről lefele és a soron belül balról jobbra történik.Ha a létrában bekapcsolsz egy bitet valahol a programban, az onnantól lefele be lesz kapcsolva egészen addig, amíg valami valahol (esetleg ugyanaz a sor a követező ciklusban) ki nem kapcsolja. Annyi csavar van még a dologban, hogy ha ez a bit egy fizikai kimenet, akkor a kimenetre a programon belül történt ki vagy bekapcsolás állapota minden ciklusban csak egyszer, a PLC ciklus végén jut el, mert a kimenet amit a program ki vagy bekapcsol nem a fizikai kimeneti bit, azt csak a PLC operációs rendszere írja ki a ciklusok végén.
No de visszatérve a kétségeidre:
Ha írunk egy ilyen programot:Akkor az a következő eredményt adja. Ha a 0.00 bemenet OFF, akkor a 10.00 OFF, a 10.01 ON, a 10.02 OFF, a 10.03 ON állapotú lesz. Ha bekapcsoljuk a 0.00 bemenetet, akkor 10.00 ON, 10.01 OFF stb lesz.

Így működik a korábbi példában lévő összes flag, így az összehasonlítás eredményét tároló flagek is. A programban ahogy az sorban fut, minden CMP utasítás a saját eredménye szerint beállítja ezeket a flageket. Az összehasonlítás eredménye a programban bárhol felhasználható, de csak a következő CMP utasítás előttig, mert az felülírja őket a saját eredményével.
A CMP flagek tehát mindig a legutóbb végrehajtott összehasonlítás szerint állnak be. Ebből következően fontos az alábbi két szabály:
1. Összehasonlítás végrehajtása nélkül nem értékeljük ki a flagek eredményét
2. A flagek eredményét bármennyiszer felhasználhatjuk, de csak a következő összehasonlításig. Onnantól már a másik CMP eredményét tartalmazzák... -
Szirty
őstag
Hali vopi86!
000000: A 0.00 bemenet 1 állapota elindítja a TIM1 timert, ami 2 másodpercig telik (#20). Tudom te 5-öt akarsz, majd annyit írsz be.
000001: A 253.13 egy belső flag, ami állandóan bekapcsolt állapotú (always on). Azért van rá szükség, mert a CMP utasítás nem rakható le úgy, hogy nincs előtte feltétel, ezzel a flaggel lehet elhelyezni hogy mindig elvégezze az összehasonlítás.
A CMP(20) az összehasonlító utasitás, ami operandus 1-et 8ami jelen esetben a TIM1 tartalma) összehasonlítja operandus 2-vel (ami jelen esetben egy BSD konstans, konkrétan a #1 érték). Az összehasonlítás eredménye beállítja a GR, EQ és LE, azaz a nagyobb mint, egyenlő és kisebb mint jelzőbiteket.000002: Ha a 255.06-os bit =1 (történetesen ez az egyenlő jelzőbit, amit az előbbi CMP(20) állít be) akkor bekapcsolja a 10.00 kimenetet, egyébként nem kapcsolja be.
A következő két sor ugyanez, csak nem #1-el, hanem #2-vel hasonlít és nem a 10.00, hanem a 10.01 kimenet kapcsol amikor a timerben #2-van.
Egyszer már ajánlottam neked ezt a leírást.
A 207. oldalon ékes magyar nyelven magyarázza példával a CMP(20) COMPARE utasítás működését.Ui.: Mivel a standard timer 100ms időalappal működik, egy tizedmásodpercig fogja csak bekapcsolni neked a kimeneteket ez a program!
-
Szirty
őstag
-
Szirty
őstag
válasz
mcwizard
#2678
üzenetére
Helló mcwizard!
Én a siemens technical fórumon keresném a választ.
-
Szirty
őstag
válasz
qwaqay1
#2671
üzenetére
Hali qwaqay1!
"A bemeneti címzéssel volt a gond, az hittem AQW0, AQW2 AQW4 stb az analóg bemenetei"
AQW legfeljebb kimenet lehetne. Esetleg AIW lehetne.
"el is számoltam 10-ig, de mivel nem tudok angolul nem sokra mentem vele."
Én konkrétan nem tudtam, hogy nem tudsz angolul (nem írtad hogy magyar leírást szeretnél).
"A plc-hez kaptam egy Siemens Em 231 AI4x12Bit 321-0hc22-0xa0 analóg bemeneti modult"
Nem lehet 231-0hc22-0xa0? csak kerestem, kerestem és nem létezik ilyen modul amit írtál

Szerintem is biztosíték. Amit megerősít az a valószínű tény, hogy a második sorkapocs pont ahova látszólag be van kötve éppen az L+ tápfesz bemenet.
Mielőtt próbálkozol én mérnék egy ellenállást az M ill GND ponthoz képest az L+-on lévő kiolvadt bizti belső oldalán. Ha ott nulla ohm mérhető, akkor keress túlfesz levezető VDR-t, mert lehet hogy az túlfesz. miatt zárlatba ment és attól olvadt ki. Még az is lehet, hogy a mellette lévő sárga képződmény az... -
Szirty
őstag
válasz
qwaqay1
#2660
üzenetére
Helló qwaqay1!
"az AIW0 értéke nem változik akárhogy variálom a jelezőségét."
Azt az oldalt nézd, amit az előbb magad linkeltél!
Az alján ez áll:The EM231 8AI module has different beginning input address in different slot and its address is not in AIW but in VW, you can calculate the address by the following formula,
Itt azt magyarázza,hogy az egyes bemenetek kezdőcíme függ attól melyik slotba kerül a modul, továbbá, hogy a bemenetek nem az AIW adatterületen, hanem a VW adatterületen érhetők el.
Majd az alatta lévő táblázat egészen konkrétan felsorolja, hogy melyik bemenetnek mi a címe, amikor ilyen meg olyan slotban van.Mondtam hogy számolj el 10-ig!
-
Szirty
őstag
-
Szirty
őstag
válasz
qwaqay1
#2655
üzenetére
Helló qwaqay1!
Ne haragudj de leírnád már végre, hogy pontosan milyen az a rohadt modul?
Azt már lejött, hogy nem Siemens, hanem Co-trust, mert mellékesen megjegyezted a sokadik üzenetedben véletlenül. De ők is gyártanak vagy hatfélét!Neked egy Co-Trust EM231 CTS7 231-1HF32 modulod van? Vagy milyen?
Ha ilyen, akkor az egy 8 bemenetű 0-20mA 4-20mA-es áram mérésre alkalmas modul, amivel te nem fogsz feszültséget mérni és nem is javaslom ha nem akarod tönkretenni!
Jót tanács: kérdéseid előtt számolj el tízig és gondolj arra, hogy a kérdésedre adott válasz csak ritkán lehet pontosabb, mint amilyen pontos a kérdésed!
-
Szirty
őstag
válasz
qwaqay1
#2652
üzenetére
Helló qwaqay1!
Egyszer már feltettél egy hasonló kérdést analóg kimenettel kapcsolatban.
Akkor én az S7-200 Programozható vezérlő rendszer kézikönyvet ajánlottam neked.
Bár nem tudom milyen az analóg bemenetet, mert azt nem árultad el ha jól emlékszem (több mint tíz fajta van belőle), de ha fellapozod azt a kézikönyvet, akkor a PDF file oldalszámozása szerinti 417. oldalon mit találsz? Ezt:"a bekötésben nem vagyok biztos."
Ugyanezen dokumentum 415. oldalán az A-12-es ábra mutatja a modulok bekötését (az ábra címe: Huzalozási rajzok az analóg bővítő modulokhoz). Ezt az ábrát nem érted, vagy meg sem nézted?
-
Szirty
őstag
Hali vopi86!
"Esetleg a CX-Programmerhez nem tudtok valami leírást ami az instruction-ökről szól?"
HELP menüt láttad már?
Help / Instruction reference. Minden egyes utasításról van benne részletes leírás, de még példaprogram is!
Neked egyébként inkább a PLC-hez kell ilyen leírás és nem CX-Programmerhez, mert az utóbbi többféle előbbit is ismer és ezek utasításkészlete eltérő. -
Szirty
őstag
Hali vopi86!
Kapcsolókon meg LED-eken kívül olyasmit köthetsz rá, ami "csinál valamit". Pl. szelepet, motort, ami mozgat valamit, aminek a helyzetét érzékelő érzékeli, ami bemenetre megy.
Tehát építesz köré egy gépet, amit majd a megírt programmal vezérelsz. A PLC erről szól
A LED-ek és kapcsolók szintjéig könnyen el lehet jutni PLC nélkül is PLC szimulátor programmal. Ugyanúgy világít egy kimenet és egérrel kapcsolgathatod a bemeneteket.
Egy másik megoldás lehet valamilyen szimuláció, ami a vezérelt gépet (vagy egy részét) szimulálja. Készen ilyet omronra nem tudok, de készíteni a megfelelő szoftver környezetben biztosan lehet. Ezzel csak az a gond, hogy a szimulációs környezet kialakítása mindig sokkal nagyobb munka, mint annak a berendezésnek a programozása, a PLC-ben, amit szimulálsz.
A CIF01-es problémával kapcsolatban annyit tudok mondani, hogy fontos beállítások a következők:
- A PLC és azon belül a CPU beállított típusa a projectben
- A SYSMAC WAY-re állított kommunikációs mód
- A network settings-nél a Host Link Unit Number
- A network settings-nél a Port Name, Baud rate (asszem 9600), data bits 7, Parity E, Stop bits 2Jah és a Device Name ne tartalmazzon ékezetes karaktereket lehetőleg, mert így járhatsz:
-
Szirty
őstag
válasz
qwaqay1
#2619
üzenetére
Helló qwaqay1!
Az a körülbelül 32000 valószínűleg pontosan 32767 lesz.
Ennek az integer típusú számábrázolás az oka. Te egy 16 bites értéket írsz az analóg kimenet regiszterébe.
16 biten 65536 féle bit kombináció lehetséges. Hogy negatív érték is ábrázolható legyen, kitalálták az integer számábrázolást, ami az előbbi tartományt két részre osztja:
Egy pozitív tartományra: 0..+32767
és egy negatívra: 0..-32768
Bizonyos okokból (aminek utána lehet nézni ha részletesen érdekel) a negatív tartomány kettes komplemens alapú, ami kb. annyit tesz, hogy a negatív szám abszolút értékének bináris mintája azonos a hozzá tartozó pozitív érték inverzével.
Ha megpróbálsz 32767-nél nagyobb értéket beleírni, akkor túlcsordul és az érték negatív lesz (pl.: 32777 -32759-nek felel meg). -
Szirty
őstag
válasz
qwaqay1
#2617
üzenetére
Hi qwaqay1!
"Szóval MOV W.
In és az OUT -hoz miket lehet beírni?"A már említett kézikönyv 177. oldala épp erről szól.
A MOVE adatmozgató utasítás. Az In-hez írt adatot átrakja az out-hoz írt címre.
Az in lehet cím vagy konstans, az out pedig cím.Az analóg kimenet egy 16 bites regiszter. Az analóg kimeneten mérhető feszültség vagy áram arányos az analóg csatorna címére írt értékkel. 0V-ot 0 beírásával tudsz produkálni 10V-ot az értékmaximum beírásával (ami halvány fogalmam sincs mennyi S7-200 esetében, de S7 300/400-nál ez jellemzően 27648).
"Hogy lehetne egy olyan programot írni, hogy I0.0 digitális bemenetre adott jelre az analóg 0.0 kimenetére mondjuk 3V-os jel, I0.1-re adottra 5V-os jel és I0.2-re 10V analóg jelet csináljon az analóg kimenetre."
Minden lépcsőhöz írsz egy megfelelő MOV_W utasítást a kívánt analóg jelnek megfelelő konstanssal a MOVE IN oldalán és a kívánt analóg kimenet címével a MOVE OUT oldalán.
A MOV_W utasítás elé (EN) pedig berakod a megfelelő feltételt, jelen esetben az I0.1, I0.2 stb bemeneteket.
Úgy kell megvalósítani, hogy mindig csak az egyik MOV_W utasítás előtti feltétel tudjon teljesülni.
Hogy ezt miképpen csinálod az attól függ milyen elsőbbségi sorrendet szeretnél felállítani arra az esetre, ha egyszerre egynél több bemenet is aktív (mivel egyszerre egynél több feszültség vagy áram nem lehet jelen egy kimeneten). -
Szirty
őstag
válasz
qwaqay1
#2615
üzenetére
Hali qwaqay1!
"Ez azt jelenti ,hogy cpu222 01.11 verziójú plc-mel nem lehet analóg kimenetet működtetni?"
Nem hiszem hogy ne lehetne.
Az output tables nem arról szól. Az output tables arra való, hogy meghatározd mi történjen az analóg kimeneten lévő értékkel, amikor a CPU RUN módból STOP módba vált.
A 02.00 verziójú PLC-nél lehetőséged van arra, hogy STOP-ra váltáskor az analóg kimenet befagyassza az értéket ami épp akkor volt, vagy beírhatod hogy ilyenkor mit küldjön ki.
A 01.11-es verziójú CPU meg nem tud ilyen funkciót, az nyilván nulla értéket küld ki ilyenkor. De attól analóg kimenetet még tud kezelni. -
Szirty
őstag
válasz
qwaqay1
#2613
üzenetére
Helló qwaqay1!
Az AQ területre kell írni hogy az analóg kimenetre értéket küldj (AQW n).
S7-200 Programozható vezérl rendszer Kézikönyv 44. oldal.
Pl. MOV_W utasítással tudsz bele értéket írni...
-
Szirty
őstag
válasz
raceboy
#2606
üzenetére
Helló raceboy!
Tehát ha jól értem, akkor azt szeretnéd, hogy abból amit leírtál előbb találjuk ki hogy mi a feladat, majd utána fejtsük meg azt... :]
Amúgy más sem érti, vagy csak én vagyok másik bolygón?
Vannak tehát gombok, nem tudjuk hány darab, de némelyikről tudjuk mit csinálnak ha megnyomják.
Aztán vannak kapcsolók is (K1, K2, K3, K4) amikről pontosan tudjuk, hogy 4 darab van, de azt nem, hogy mi a szerepük.
Meg van a kézi üzemmód, ami M5, bár azt nem tudjuk miért van kézi üzemmód, ha nincs automata (vagy van, csak nem tudjuk, hogy van és ha van azt sem, hogy akkor mit kell csinálnia a "valaminek").
Tudjuk, hogy az m6 már nem üzemmód, hanem állapot, amikor az összes égő ég, amit az összes gombbal kapcsolunk be. Bár az "összes gombbal bekapcsolni" jelentése nem egyértelmű nekem, mert:
- Megnyomjuk egyszerre az összes gombot (bár nem tudni mennyi az az összes)?
- Vagy megnyomjuk az összes gombot egymás után valamilyen sorrendben bármikor?No meg van az m8 állapot, ami meg már olyan állapot, hogy több állapot, hiszen különböző gombokkal az égőket kapcsolgatni lehet.
Tudjuk, hogy valamit deklarálni kell és hogy ebben az állapot bool a többi byte, bár nem tudom mi lehet az a "többi".Jancskárné tanárnő jegyzetére való hivatkozás ebben a formában sokat nem segített a feladat megértésében, mert nem közölted melyik kötet melyik oldalára kellene "gondolni".
A táblázatodban egyszerű bináris sorozat van, amit egy számlálóval is lehet produkálni. (A számláló "Kimenet" oszlopban található tartalmának megfelelő bináris minták vannak a 4 bites oszlopokban).
A K1-K4 oszlopok tartalma teljesen azonos az elöl, hátul, középen, vetítő oszlopokban található bináris mintával.A képet ide felrakni nem bonyolult. Ahova az üzenetet írod alatta 4 cm-re van egy felirat, miszerint: "Új kép feltöltése a szöveghez" mellette egy Browse gomb. na azt kell megnyomni, kiválasztani a képet, majd a generált linket berakni a "Kép" feliratú gomb megnyomása után.
Ui.: Gondolom ez egy iskolai példa feladat, mert a gyakorlatban ilyen világítás vezérlést szerintem sehol nem csinálnak... Az iskolai gyakorlati feladatokra pedig sajnos nagyon jellemző az ilyesmi.

-
Szirty
őstag
válasz
raceboy
#2604
üzenetére
Helló raceboy!
"Elküldtem privátban"
Leírtam privátban neked mi ezzel a baj. Itt nem részletezném.
Amit a problémával kapcsolatban az üzenetedből értettem (és itt nem a szavak önálló jelentésére az értelmezésére gondolok), az az alábbi:
- Világítás vezérlése plc-vel
- Van kézi és automata üzemmód
- Moeller ps4-341 plcAmit pedig nem értek:
- Mi (mennyi) az az "összes égő" amire hivatkoztál?
- Mit jelent a "gyenge gomb"?
- Mi az, hogy "M5 név"?
- Hol az a táblázat (mi a tartalma), amiben összefoglaltad?
- Mi a bool és mi a byte
- Miféle sorok és oszlopok vannak? -
Szirty
őstag
válasz
Szabest
#2598
üzenetére
Hali Szabest!
Megvan mi a baj!
SCL source file-t hoztál létre, de ez STL és nem SCL!"De igen, az van 1 az 1-be amit te beirtál, és a Sources en belül készítettem egy SCL sourcet, abba beillesztettem, majd mentés, és compile."
Ez így nem jó. Az SCL fordító nem fog neked STL forrást fordítani.
Ismételd meg STL source létrehozása után.
Szerintem jó lesz. -
Szirty
őstag
válasz
Szabest
#2595
üzenetére
Hali Szabest!
Én is kipróbáltam, innen a fórumból visszamásolt blokk elsőre lefordul.
Compiler result: 0 Error(s), 0 Warning(s)
Milyen verziójú a LAD/STL/FBD editor? Ez V5.4 + SP4 + HF6
Érdekes, hogy FC0-t ír, holott ez FC13

Érdekes, hogy az első sorban vesszőt vagy kettőspontot hiányol, holott oda nem kell. -
Szirty
őstag
válasz
Szabest
#2593
üzenetére
Helló Szabest!
Én nem tudom mit nyomtál meg, hogy ez lett belőle.
Az első sorba konkrétan mi van ehelyett hogy:
FUNCTION FC 13 : VOIDMert gyanítom nem ez

Meg hova másoltad a forrást? Mit hogyan csináltál?
Megjegyzés: Az FC37-et majd ki kell emelned a projectbe a fordítás előtt a libraryból:
Libraries / stdlibs / iec / FC37 STRING_DI IECHa nem tudod hogyan kell STL forrást lefordítani kérdezd meg.
-
Szirty
őstag
válasz
levelko
#2590
üzenetére
Helló levelko!
Pedig a fórumokat olvasva közismerten működik 64 biten az 5.5-ös.
Igen, az lehet hogy SPx kell neki. Meg az is lehet, hogy az opcionális dolgok nem. Pl. PC adapter driver, szervó konfig kiegészítés, TS adapter stb...To all:
Egyébként aki Step7-ezik miért használ 64 bites wint? Mert szebb és magasabb?
Tényleg megéri a szívást? (költői kérdés volt, a válasz kívül esne a topic témakörén) -
Szirty
őstag
Hi!
Az előző (#2586) üzenetben lévő programban attól tartok összekevertem a legkisebb és legnagyobb helyiértékek szövegeket a megjegyzésben (N0 és N4).
A működésre ez semmilyen hatással nincs, de a program értelmezésében félrevezethet.
Elnézést! -
Szirty
őstag
válasz
Szabest
#2584
üzenetére
Helló Szabest!
Itt a blokk tessék:
FUNCTION FC 13 : VOID
TITLE =
VERSION : 0.1VAR_INPUT
N0 : CHAR ; //Bemenő karakter (legkiebb helyiérték)
N1 : CHAR ; //Bemenő karakter
N2 : CHAR ; //Bemenő karakter
N3 : CHAR ; //Bemenő karakter
N4 : CHAR ; //Bemenő karakter (legnagyobb helyiérték)
END_VAR
VAR_OUTPUT
VOut : REAL ; //Kimenő érték
END_VAR
VAR_TEMP
String5 : STRING [5 ]; //5 elemű string az átalakításhoz
Ok : BOOL ; //Konverzió sikeres (= TRUE)
VOutD : DINT ; //Kimenő érték DINT-ben
END_VAR
BEGIN
NETWORK
TITLE =L 5;
T LB 0;
T LB 1;
L #N0;
T #String5[1];
L #N1;
T #String5[2];
L #N2;
T #String5[3];
L #N3;
T #String5[4];
L #N4;
T #String5[5];CALL FC 37 (
S := #String5,
RET_VAL := #VOutD);L #VOutD;
DTR ;
JCN L001;
L 1.000000e+002; //100.0
/R ;
T #VOut;
BE ;
L001: L 0.000000e+000;
T #VOut;
END_FUNCTIONÍgy kell hívni:

Ha az N0-N4 byte-okban olyan karakter van, amiből nem lehet számot létrehozni, akkor a blokk ENO kimenete FALSE lesz és a visszaadott érték, pedig nulla.
Ha a konverzió sikeres, akkor a blokk ENO kimenete TRUE. -
Szirty
őstag
válasz
Szabest
#2582
üzenetére
Hali Szabest!
ASCII
Továbbra is Dezsi82 megoldására kell hivatkoznom: Az IEC funkciók között lévő STRNG_I (FC38) átalakítja neked integerré, csak össze kell lapátolnod az érkező karakterekből egy stringet, mert a STRNG_I funkció stringet igényel.Segítek ebben, ha meg tudod mondani, hogy az ASCII-ben a soros portról beolvasott karakterek száma állandó vagy változik.
Tehát mindig 5 byte érkezik, és ha a számérték rövidebb 5 helyiértéknél, akkor bevezető nullákat tartalmaz, vagy a beolvasott karakterek száma mindig változik?
A string felépítéséhez ez az információ szükséges.Pl. a 6 hogy érkezik? '0', '0', '0', '0', '6'
vagy: '6'
? -
Szirty
őstag
válasz
Szabest
#2580
üzenetére
Helló Szabest!
Erre a kérdésre Dezsi82 már válaszolt a #2538-ban
Szerintem nem ártana tisztázni, hogy milyen adattípust akarsz átalakítani, mert sejteni épp lehet, de ha pontos választ akarsz, akkor ez nem elég.
Milyen formátumban jönnek a számjegyek azokban a byte-okban?A számok ASCII kódja? "0" = 48 (dec) "1" = 49 (dec)?
Tehát amikor 0;1;2;3;4, érték jön, akkor a 48, 49, 50, 51, 52 tartalmú byte sorozatot kapod?
Netán BCD-ben jönnek az értékek, esetleg binárisan, külön byte-okban a helyiértékenként? -
Szirty
őstag
válasz
peterx88
#2569
üzenetére
Hali peterx88!
Ha nem túl gyakran (több tíz másodpercenként vagy ritkábban) és rendszertelenül (nem pontosan ugyanolyan időközönként) kell a véletlen szám, akkor az SFC 64 "TIME_TCK" által visszaadott értékből képezhető kvázi-véletlen.
Ez egy 1 ms-onként egyesével növekvő számláló, ami 2147483647 ms után újrakezdi a számlálást. -
Szirty
őstag
válasz
peterx88
#2564
üzenetére
Hali peterx88!
Attól függ milyen modul, és hogy a modul 3 vezetékes, vagy 2/4 vezetékes bekötést használ, továbbá attól, hogy a filter hogy van beállítva,
Ennek megfelelően az update time a következő: 125, 142, 205, 222, 245, 262, 284, 444, 524, 1205, 1222 vagy 2444 msec...
SIMATIC S7-1200 SM 1231 Thermocouple Signal Module
SIMATIC S7-1200 SM 1231 RTD Signal Module
Mind a két doksiban a 4. oldalon van leírva."És az ugye úgy van, hogy a PLC CPU-ja matematikai műveletet 18us logikait 0,1us alatt hajt végre?"
Igen.
SIMATIC S7 S7-1200 Programmable controller 18. oldal. -
Szirty
őstag
válasz
Watercolour
#2557
üzenetére
Helló Watercolour!
A megoldás kell?
"A feladat nem az enyém, hanem barátnőmé, én ehhez teljesen hülye vagyok."
Ő is teljesen hülye hozzá?
Ha most bárki leírja a megoldást, akkor nem lesz már hülye hozzá?Mellesleg csókoltatom az egyetemi tanárt is! Vagy téged ha a két ábrán kívül egyéb infót elhallgattál. :>
-
Szirty
őstag
válasz
Dezsi82
#2558
üzenetére
Helló Dezsi82!
"Köszi a tippet, de ha jól sejtem, akkor ez nem jöhet létre, mivel ott a rövidzár."
Látod! Ezért kértelek, hogy ha nem ez a baj, akkor ne válaszolj!
Senki nem tudott arról, hogyan van bekötve a soros kábel, mivel azt nem közölted. Most ezzel együtt azt írod nem tudod milyen infót nem közöltél.
Pl. ezt sem
-
Szirty
őstag
válasz
Szabest
#2542
üzenetére
Helló Szabest!
Most nem azért, de ha számokat írsz ilyen problémakörrel kapcsolatban, akkor nem árt tisztázni, hogy az a szám ASCII karakter, BCD szám, hexában vagy decimálisan kell-e értelmezni amit írsz stb. Sok félreértést és fölösleges írást kerülnél el vele.
Pl.:
"String-et akarok küdleni, és beírom a fentebb irt, 31 32 kódokat, akkor szépen hozza az 1 2-t külön külön byte-okba, ez így normális? vagy mi maga az a string...?? "Az eddigiek alapján már sejthető, hogy te itt ASCII karakterkódokról írsz méghozzá hexadecimális formában. Mivel a 31h="1" ASCII karakter, a 32h pedig "2"...
Úgy tűnik ezekből kell összesakkozni egy integert. Dezsi82 pont ezt írta le tömören, de pontosan.A string egyébként egy olyan (többnyire byte-okból álló) adatsorozat, aminek az egyes elemei karakter kódokat tartalmaznak. A kódok ASCII kódok. Tehát szöveg, vagy írásjelek sorozata.
A string általában tartalmaz olyan adatot, amiből kideríthető a hossza.De lehet fix méretű is (ilyenkor nincs benne hossz információ, mert arra nincs szükség). Pl. az első byte megmondja a hosszt, vagy a karaktersorozat végén nulla van (null terminated string). -
Szirty
őstag
válasz
Robit1976
#2534
üzenetére
Hali Robit1976!
Az OPC a Microsoft próbálkozása arra, hogy Windows alatt létrehozzon egy szabványosított kommunikációs felületet, ami a végponton lévő készülék fajtájától (viszonylag) függetlenné és szabványossá teszi az automatizálási rendszerrel való kommunikációt.
Az OPC szerver egy API. Az a feladata, hogy kapcsolatban van a PLC-vel, miközben az OPC-nek megfelelő szabványos kommunikációs felületet biztosít a PC-n futó alkalmazás felé (ami általában scada vagy HMI program).
Tehát a PC-s program az OPC szerverrel kommunikál, az OPC szerver pedig a PLC-vel és a programmal.
Az OPC az MS-hez méltón mélyen és összetett, kibogozhatatlan módon kapcsolódik a windowshoz.WinCC project módosításához a WinCC-re van szükség. Persze nem az RT-re (ami a project futtatását végzi), hanem a szerkesztő engineering szoftverre.
-
Szirty
őstag
válasz
Szabest
#2531
üzenetére
Hali Szabest!
Amit írtál, annak alapján sokat nem tudok mondani.
A sikeres adatfogadáshoz a következő feltételek egyidejű teljesülése szükséges:- A soros kapcsolat helyes bekötése (Rx/Tx jelek, stb)
- A RCV 340 blokk megfelelően paraméterezett hívása, pontos és valós LADDR, DB_No, DBB_No paraméterekkel.
- A CP340 kapcsolatnak megfelelő beállítása a HW configban, különös tekintettel arra, hogy az adatsebesség, az adat és stop bitek száma, valamint a paritás, továbbá hadshaking (data flow control) ugyanúgy legyen beállytva mind a küldő, mind a fogadó (CP340) félnél.Pl. h aaz egyik 18200-al ad, de a CP340 9600-ra van beállítva, az életben nem fog venni semmit, max szemetet.
"-viszont ezt a DB-t nem tudom hogy kellene előkészíteni"
Melyik DB-t? Az RCV blokk instance DB-jét nem kell előkészíteni, maga a Step7 megalkotja magától az FB alapján, azzal semmit nem kell foglalkoznod azon kívül, hogy a CPU-ba töltöd miután létrejött.
A fogadó puffer DB-je egy egyszerű tömb, ezt le is írtam a #2517-es üzenetben.
A vételi puffert alkotó DB méretének azonosnak vagy nagyobbnak kell lennie az egyszerre venni kívánt adatmennyiségnél.
Amit a CP vesz, ebbe a DB-be teszi bele.
Az általad linkelt DB-nek semmi köze a jelenlegi problémához... -
Szirty
őstag
válasz
miclucky
#2528
üzenetére
Hali miclucky!
Egyes frekvenciaváltókat lehet nyomaték szabályzós üzemmódban is használni.
Ilyenkor a motort nem az alapjellel arányos sebességgel hajtják, hanem arra törekszenek, hogy a motortengelyen az alapjellel arányos nyomaték hasson.
Ez működhet nyílt vagy zárt hurokban is (nyílt huroknál nincs nyomaték jeladó, a rive a nyomatékot számolja, de ez nyilván pontatlanabb).
Főleg feszítésre szokták használni.Ilyen frekiváltó pl a Danfoss VLT5000 és FC301 sorozatban is van, de több gyártónak is biztosan van ilyene.
Azt sem tudom mit hajt nálad a motor, és hogy egy ilyen megoldás megfelelne-e, majd eldöntöd. Csak leírtam ami eszembe jutott.
-
Szirty
őstag
válasz
peterx88
#2525
üzenetére
Helló peterx88!
Nyilván a belső háló és az internet között lévő routeren beállított port átirányítás a PLC IP címére nem lesz jó.
Technikailag működhet, de feltételezem, hogy nem szeretnéd ha mindenki tudná programozni bármikor a PLC-t.
Szerintem egy IpSEC-es VPN kapcsolat megfelelhet a célnak.
Ehhez kintről egy VPN klienssel először be kell jelentkezned a belső hálózatba és csak azután érhető el a PLC. Akkor már ugyanúgy, mint ha mellette ülnél.
Új hozzászólás Aktív témák
- Akció! Felsőkategóriás Gamer PC! I9 14900K / RTX 5080 16GB / 32GB RAM / 2TB Nvme SSD
- Creality HALOT ONE gyantás nyomtató
- 217 - Lenovo Legion 7 (16IRX9) - Intel Core i7-14700HX, RTX 4060
- iKing.Hu - Apple iPhone 15 Pro Max Black Titanium 100% Akku
- 218 - Lenovo ThinkBook 16p (G5 IRX) - Intel Core i9-14900HX, RTX 4060
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest





