Új hozzászólás Aktív témák
-
Szirty
őstag
Hali DP_Joci
"De gondolom vigyázni kell, hogy a lassítási utat ne vegye az ember túl hosszúra mert ha 0,5 vagy 1Hz-en kéne a motornak menni akkor lehet , hogy nincs elég nyomaték és hamarabb megállhat, ill. túl rövid lassítási útnál szintén túlfuthat (elméletileg). Jól gondolom?"
A lassítási út lehet hosszú is. A túl kis frekvenciát ki lehet küszöbölni a frekiváltó minimum frekvencia paraméterének megfelelő beállításával. (Ennél lassabban sosem megy). De ha ez túl nagy, akkor szintén nőhet a túlfutás.
A túl rövid lassítási táv nagyobb gond lehet, mert előfordulhat, hogy az adott tömeget akkora távolságon belül nem lesz képes lelassítani. Különösen ha a frekiváltón nincs fék opció.A frekvenciaváltó saját lefutó, idő alapú rámpáját minimumra kell venni (egy paraméter) mert ha az ott megadott rámpaidő nagy, akkor nem az analóg bemeneten csökkenő alapjel szerint (vagyis nem a PLC program által számított rámpa szerint) fog lassulni, hanem a saját rámpája szerint, ami nem jó ilyenkor :>
Megfelelő beállítással azonban dinamikus és viszonylag pontos működést lehet így elérni. Nem lesznek időtrabló, fölösleges lassúmenetek, a gép gyorsabban dolgozhat. -
Szirty
őstag
Szevasz pilu69!
"Nekem kellene egy plc szimulátor, tud valaki ajánlani valamilyent ?"
Így önmagában ilyenek nem nagyon vannak.
Persze szimulátorok vannak, de rendszerint szerves részét képezik a PLC programfejlesztői környezetnek.
Szimulátor van pl. az újabb CX-programmerben (omron)
és a Simatic managerben is (Siemens). Bár ez utóbbinál opció, így nem minden változat tartalmazza. Ott a neve PLCSIM.
-
Szirty
őstag
Helló DP_Joci!
[I]"Persze lesz egy kis túlfutás, de egy ablakon belül megáll. Tudom, hogy lehet megszakítást is rendelni az aktuális ért = célértékhez de bízom benne, hogy normál program ciklusban is időben sikerül megállítanom a motort.
Ha valakinek van más vagy jobb ötlete a megoldásra, akkor szívesen várom."[/I]
Igen, az ilyen módszer egyszerő és eléggé elterjedt.
A "lineáris megközelítés" jobb módszer valamivel, de bonyolultabb is cserében. Továbbá szükséges hozzá, hogy a PLC képes legyen a motor sebességét fokozatmentesen szabályozni (pl. analóg kimeneten vagy kommunikációs buszon keresztül.A lényege az, hogy a megállási pont megközelítése úgy történik, hogy a PLC programja a motor sebességét fokozatosan úgy csökkenti, hogy az lineárisan pontosan a megállás helyén érje el a nulla sebességet. Így nincs túlfutás (illetve csak igen minimális).
(A szervóhajtások is ezt csinálják egyébként).Ehhez a következő információkra van szükség:
1. A hajtás pillanatnyi pozíciója (az enkóderről jövő pozíció)
2. A célpozíció (ahova a hajtás éppen megy)
3. A hajtás maximális sebessége (amekkora sebességgel a hajtás lassítás előtt közelít a cél pozícióhoz)
4. A lassítás hossza (az a pozícióval azonos koordinátában mért távolság a hajtás tengelyén, amekkora távolságra a célpozíció előtt m egkezdi a lassítást (rámpázást)).Egyszerű számításokkal (osztás, szorzás, kivonás, összeadás) a fenti adatokból a PLC kiszámolja hogy mekkora sebességgel kell forgatni a motort abban a pozícióban ahol éppen tart.

-
Szirty
őstag
Helló gaben!
"Most kezdek el PLC technikával foglalkozni,és segítséget szeretnék kérni Tőletek,hogy hol érdemes elkezdeni(irodalom,link,weblap,bármi jól jön)"
Ha Siemens érdekel nézz szét itt.
"És máris van egy gondom: megvan adva a feladat munka diagramja,ebből kell megfejteni a konkrét feladatot és ezt megcsinálni FA-2 IDEC nyelven..."
Nem tudom mi az az FA-2 IDEC, de nagyon úgy tűnik, hogy az egy PLC típus és nem egy programozási nyelv neve.
"Szóval ezt a munka diagramot át kell konvertálni ütemdiagrammá.Itt jön a gond,hogy ezt nem értem konkréten hogy kell,mert az órai példa alapján nem világos nekem,hogy miért van úgy ahogy. Ehhez tudtok -e valami segédletet adni,hogy megértsem?"
Fejtsd ki kicsit bővebben! Utalj a feladatra, esetleg küldj ábrát, képet stb, akkor lehet eldönteni igazán tud-e valaki segíteni.
-
Szirty
őstag
válasz
#95092224
#830
üzenetére
Hali topsli!
"Vegyünk alapul egy siemens s7-est, amibe semmi ilyen nincs beépítve."
Milyen S7? 200? 300/400?
Amennyire én tudom minden S7-ben alapból van valamilyen kommunikációs lehetőség (PPI/MPI/Profibus)."Ami modbus/profibus van is benne, az más célra már használatban van."
Ha van benne profibus, azt használhatod kommunikációra amellett is, hogy már használatban van. A profibus-nál nem okoz problémát ha rákötsz még egy PC-t is.
-
Szirty
őstag
válasz
#95092224
#827
üzenetére
Hali topsli!
Nem igazán világos milyen PLC-vel akarsz kommunikálni milyen HW megoldással.
"(újabb típusú) PLC" mit takar?Ha a PLC gyári, akkor annak mindig van valamilyen konkrét, kész kommunikációs lehetősége (soknak több is). Ezek valamelyikét érdemes felhasználni.
Ilyenkor viszont a kommunikáció részletei adottak (nem te határozod meg őket). -
Szirty
őstag
Hali Miksai!
"Ha sikerülne több mint 100.000 rekordot felvinni a receptbe, akkor semmi problémám nem lenne."
Ez nem tűnik túl esélyesnek.
Én egyébként ezt találtam a protool system limits-ben:
Number of recpes: max 255
Data records per recipe: max 500
Total number of entries: max 5000
Entries per recipe SIMATIC S7-300/400: max 2000 (6kbyte) S7300/400-nálDe azt sem említetted min akarod futtatni a runtime-ot? PC-n? Panelen? (OP-n, ha igen melyiken?). Bár mindegy, mert 100k egyikkel sem fog menni.
Mennyi és milyen jellegű adat tartozik egy munkadarabhoz?
WinCC Flex 2008-nál a fenti limitek:
Number of recpes: max 999
Number of elements per recipe: max 64000
User data length in KB per data record: max 256
Number of data records per recipe: max 5000
Reserved memory for data records in the internal Flash: 512kB(Ez utóbbi nyilván panelekre vonatkozik)
Szerintem vagy scada-t választasz a feladathoz (támogatja az adatbáziskezelő funkciókat (SQL)), vagy megírod protool vagy WinCC flex scriptben a feladatot, vagy OPC-n keresztül az egész herce-hurcát megírod magad valamilyen prog. nyelven PC-re.
-
Szirty
őstag
Hali Miksai!
"A megrendelő minden egyes munkadarabot másképp szeretne kezelni. Ezért készítettük a recept kezelést. Ami szerintem jogos. No eddig működött is, de ők jelen esetben 30.000 munkadarabbal dolgoznak."Ezt tehát úgy kell érteni, hogy 30.000 fajtája (változata) van a munkadarabnak, vagy úgy, hogy összesen 30.000 darab munkadarab legyártásáról van szó, amik mind különböznek egymástól?
(Azt hittem több százezer bejegyzést akarsz receptenként)
A hatvanötezres korlátba hol ütköztél egyébként?"s a kérés az hogy 6 számjegyű legyen, mert fejlesztenek, bővülnek. Vonalkód leolvasóval szeretnék kiválasztani a megfelelő programot. Ő csak kattint és meg a munkadarab."
Egyébként ha megoldható lenne, hogyan gondolod az éppen szükséges recept kiválasztását?
Egy háromszáz ezer elemű listából választaná ki az OP-n?
Szerintem kb. lejárna a munkaideje mire megtalálná amelyik kell neki... -
Szirty
őstag
Hali Miksai!
"Tudom, hogy a DINT ekkora tartományba dolgozik, de hiába tettem a data recordot olyan adattípusba, a Recept nem tud 65535 rekordnál többel dolgozni."
Persze hogy nem. De nem is ez volt a kérdés, de így már értem.
Szerintem más megoldást kell találnod a problémára, mert ez így nem fog menni.A ProTool recept kezelése nem adatbázis kezelő (nagyon nem). Több százezer rekordot adatbázisok tartalmaznak, de receptek nem túl gyakran.
Ez a recept funkció arra való, hogy egy berendezésben összetartozó gyártási paramétereket lehessen vele gyorsan, összefogottan kezelni. Az adott termékhez milyen összetevők milyen arányára van szükség, mekkora időzítések szükségesek és az adott termék gyártása során mit kell ki vagy bekapcsolni, stb, stb.Több százezer rekordot tartalmazó recept igényről még nem hallottam.
Szerintem át kellene gondolni vagy a feladatot, vagy a feladathoz szükséges eszközöket... -
Szirty
őstag
Helló Miksai!
"Hogy lehet olyat hogy a data record ne csak 65575 legyen, hanem nekem 6 számjegyü szám kéne."
65535-öt akartál írni? Ennyi a word (16 bit) ábrázolási tartományának felső határa.
Nagyobb számot akkor tudsz kezelni, ha DInt típusú változót raksz a receptbe.
Ha ilyet használsz, akkor -2147483648 és 2147483647 közötti előjeles egész számot tudsz benne tárolni. A 6 számjegy ebbe belefér. Infó: S7-300/400 címtartományok, adattípusok"De az is megoldás lenne ha a adatrekord nevét valahogy elő tudnám hívni."
A rekorddnak nevet adhatsz, amit ki is jelez a "recipe view" nevű objektum.
Hivatkozni a változóra tudsz, miután a receptet áttöltöd a PLC-be... -
Szirty
őstag
Hali bodnarg!
"Detektálható e az enkoder forgásiránya ezzel a funcióblokkal"
A standard doksi nem sokat ír róla, de a forgásirányt az STS_C_DN és az STS_C_UP kimenet jelzi...
Ezt a doksit keresd, ebben van benne részletesebben:
"S7-300 Programmable Controller CPU 31xC Technological Functions." -
Szirty
őstag
Hali Miksai!
"A legjobb lenne ha valami dokumentációt találnék, de az sem jön össze. "
Sok jóval nem tudlak kecsegtetni. Én annak idején próbálkoztam ilyesmivel, itt találod:
http://szirty.uw.hu/hmi.html
Illetve feltettem PDF-ben is.Sajnos pont a receptekkel nem foglalkoztam az írásban...

De ha van konkrét kérdés, megpróbálhatok segíteni. Viszonylag egyszerű a történet... -
Szirty
őstag
Hali HaGii!
"Találkozott már valaki olyan problémával, hogy OP17 és OP7 program töltésnél az OP dob egy "protocoll error 003"-as hibát?"
Igen. Véleményem szerint az eszközök közötti bizonytalan kapcsolat okozza.
Főként USB-s RS232 átalakító használatakor jelentkezik.Amit tenni lehet és vagy segít vagy nem:
- Az adatsebesség csökkentése
- Nem USB-s (vagy másik fajta) RS232 használata
- A kábel cseréje teljes HW handshake-et használó kábel használata, ahol A CTS-RTS DTR-DSR jelek nem vissza vannak hurkolva, hanem valóban a másik eszköz jeleit továbbítják.
- Túl hosszú kábel (rövidebbre cserélés)
- Földelési probléma, földhurok (brumm) is okozhat ilyen problémát. Érdekes módon főleg notebook használatakor. Notebook esetén érdemes megkísérelni a feltöltést akkumulátoros üzemmel. -
Szirty
őstag
Helló Macys!
"már világít rajta a low battery. A program STEP5 V7.2 megvan. Milyen kábel kell hozzá."
Tegyél bele új elemet!

Siemens S5 programozó kábel kell hozzá (mi más?). Pl. RS232-TTY kialakítású.
Ilyet venni is lehet, de építeni sem nehéz, egy áramhurkos, optós szint áttevőből áll.
Google talál neked ilyet ha rákeresel.XP-n működik a DOS-os Step7 V7.2
-
Szirty
őstag
válasz
mindegy1
#787
üzenetére
Hali mindegy1!
"es mas visual termek se tartozik ezek koze beldaul a visual basic vagy a visual c++"
Ha ez kérdés volt, akkor: nem, nem hinném.
A Microsoft nincs nagy erővel jelen az automatizálásban, már ami azokat a szoftvereket illeti, amelyiek kifejezetten csak automatizáláshoz kapcsolódnak. -
Szirty
őstag
-
Szirty
őstag
válasz
mindegy1
#783
üzenetére
Hali mindegy1!
Továbbra sem értem a Visual Studio szerepét a dologban.
Az lenne a kezelő felülete, vagy az a kezelő felülete már régóta (erediteleg is?)."gy van megcsinalva hogy kivalasztja a programot amit eppen az nap gyartanak megadja hany keverest csinaljon es maga a kevero beallitja magat mennyi kavicsra, vizre, cementre van szuksege"
Ebből nekem úgy tűnik, hogy most is azt csinálja, amit szeretnél.
-
Szirty
őstag
válasz
mindegy1
#781
üzenetére
Helló mindegy1!
"LC-vel van vezérelve és azt szeretném kérdezni hogy lehet azt megoldani Visual Studioban hogy az üzemeltetője csak kivalassza a programot és maga a keverő megcsinálja az aktuális receptet."
Kevés az infó!
Tehát ez egy régóta működő rendszer, amihez most egy visual studioval készített hmm.. felületet szeretnél illeszteni?Vagy az egészet most fejlesztik visual studióval együtt?
A visual studio miért kell ide? Hogy jön képbe?
-
Szirty
őstag
Hali feró!
"A fájl formátuma swb-swp. Programozni nem tudunk,csak visszaállításra és hibakeresésre alkalmazzuk"
No megnéztem.
Az swp/swb kiterjesztés a SysWin formátuma. Azt keresd.
Pl. itt: Syswin 3.41 -
Szirty
őstag
Helló mizu_!
"A ciklus szervezést 1 plc cikluson belül úgy gondoltad, hogy JUMP utasítással visszaugrassz a ciklusmag elé?"
Igen, például.
Vagy használható erre a LOOP utasítás is, ami (a nevéből is láthatóan) ciklusszervező utasítás.L 1
T #A //Ciklusváltozó nullázása
Next: L #A
SLW 1 //Accu1=A*2
L 8 //Eltolás. A táblázat első elemének címe az instance DB-ben!
+I
L P#0.0
TAK
SLD 3
+D //Accu1-ben A tábla azon elemének címe,
LAR1 //ahonnan akövetkező elemet ki kell olvasni
L DIW [AR1,P#0.0]
ITD
L #MVP
+D //A köv. táblaelem tartalmának hozzáadása részeredményhez
T #MVP
L #A
+ 1
T #A //Ciklusváltozó növelése
L #CE
<=I
JC Next
L #SMPTMP
L #MVP
SRD //MVP elosztása SMP bemenetnek megfelelő számmal
T #MVP_OUT -
Szirty
őstag
válasz
kis.balage
#772
üzenetére
Helló kis.balage!
"PLC ciklusonként kellene 120 doubleword-öt 1 doubleword-el arréb mozgatnom (FIFO). Tudtok erre valami elegáns megoldást vagy marad a 120-szor LOAD-TRANSFER?"
Az is egy megoldás, de munkaigényes beírni

Két másik módszer:
1. cikust kell szervezni, ami szépen elketyeg 120-ig. A dolog hátránya, hogy ismerni kell az STL programozást és tisztában kell lenni az indirekt címzésekkel.
Egy ehhez hasonló megoldás van ebben az írásban is.2. 119 duplaszót átmásolsz egy blockmove utasítással egy 119 dw elemű pufferbe, majd egy duplaszóval arrébbra visszamásolod. Előnye, hogy ehhez nem kell STL, hátránya, hogy kell egy 476byte-os puffer (már ha ez hátrány a konkrét esetben).
Persze nem írtad, hogy merről merre akarod "léptetni" a tárolót, a fenti példa az egész puffert egyel magasabb címre másolja (1 dworddel, azaz 4 byte-tal).
A példában a léptetendő adatterület a DB1.DBD0-nál kezdődik. Nem próbáltam ki, hogy nem vétettem-e hibát benne, a példával az elvet próbáltam szemléltetni...Ja igen: A pufferrel való vacakolás azért kell, mert amennyire emlékszem, a BLKMOV (SFC20) nem engedi meg hogy a másolt cél és forrás terület átfedésben legyen egymással. Persze biztos megírta már valaki azt a blkmove-t amelyiknél ez nem gond, de kapásból nem tudok olyat most.
-
Szirty
őstag
Helló k_zozo!
"Ha 100ms-os impulzust akarok előállítani, akkor a clock merker melyik bitjére kell felfutóél figyelést raknom? (Siemens S7-300 PLC)"
bit 0.: Impulzus sorozat: 10Hz 0.1s
bit 1.: Impulzus sorozat: 5Hz, 0.2s
bit 2.: Impulzus sorozat: 2.5Hz 0.4s
bit 3.: Impulzus sorozat: 2Hz 0.5s
bit 4.: Impulzus sorozat: 1.25Hz 0.8s
bit 5.: Impulzus sorozat: 1Hz 1s
bit 6.: Impulzus sorozat: 0.625Hz 1.6s
bit 7.: Impulzus sorozat: 0.5Hz 2sA válasz tehát: bit 0
-
Szirty
őstag
válasz
cooldmann
#763
üzenetére
Üdv cooldmann!
"Kísérleteztem, hogy menet közben változtatom az időt, ezt PC ről tettem. Azt tapasztaltam, hogy 15 óráig szépen követi a visszaolvasott időt, aztán logikátlanul ugrálni kezd. 22 ora visszaolvasáskor 34 lesz, ami ugye irreális a percekről másodpercekről nem is beszélve."
Nos szerintem itt csak annyi a gond, hogy decimális alakban nézed VB-ket. Pont ezért hangsúlyoztam, hogy BCD formátumban adja vissza az időt. Ha decimálisan nézed, hülyeségeket fogsz látni, mivel a szám BCD! A VB-ket Hexában jelenítsd meg és máris jó lesz.
De előbb-utóbb az lesz, hogy át kell konvertálnod a BCD-t egész számmá, ha pl. összehasonlításokat akarsz végezni rajzuk (úgy egyszerűbb). Szerintem konvertáld át őket. (Van erre is utasítás).A 22 óra ezért lesz 34, mert BCD-ben ábrázolva a decimális 22 hexában is 22, de decimálisan a hexa 22 már 34! Az 59 perc pl. 89 lesz emiatt, stb
Javaslom átnézni az alábbi linkeket:
BCD számábrázolás
Binárisan kódolt decimális számok -
Szirty
őstag
válasz
cooldmann
#759
üzenetére
Hali cooldmann!
"A példa a leírásban igy irja: 16#97. mondjuk ez az év. Ami zavar, hogy ez nem BCD."
BCD az, csak hexadecimálisan

Ha egy BCD számot hexában ábrázolva nézel, akkor decimálisan kell leolvasni
A BCD számábrázolás lényege, hogy 4 bites digitekre van osztva a szám. Egy digit bináris kombinációja nem lehet 0-9 tartományon kívül. A lényeg tehát, hogy a BCD szám egyik 4 bites csoportja (digitje) sem lehet az alábbitól eltérő:
0000 - 0
0001 - 1
0010 - 2
0011 - 3
0100 - 4
0101 - 5
0110 - 6
0111 - 7
1000 - 8
1001 - 9A 16#97 tehát megfelel a BCD ábrázolás szabályainak. Binárisan ez 1001 0111
De pl. az 16#1A vagy 16#C9 már nem.
A 16#97 hexa szám tehát 97-nek felel meg decimálisan (és nem 151-nek, amennyi akkor lenne ha átkonvertálnánk decimálisra)! -
Szirty
őstag
válasz
cooldmann
#754
üzenetére
Helló cooldmann!
"De ez azt jelenti, hogy ezt a VB100 at valahol paraméterezni kellene?
mármint akkor hogy és hol határozom meg a VB100-101-102 stb-t?"Amikor az órát beállítani akarod, akkor természetesen a programodban a SET_RTC meghívása előtt fel kell töltened a beállítani kívánt idő adatokkal azt a 8 byte-ot (értéket kell adni neki), aminek az első címét megadod a hívás paramétereként, hiszen a valós idejű órát ennek a 8 byte-nak a tartalma alapján próbálja meg átállítani.
Amikor az órát olvasni akarod, akkor meghívod a READ_RTC-t és utána a 8 byte-ban rendelkezésedre áll az idő.
Azt hogy melyik VB címeket használd, azt te határozod meg, teljes egészében rajtad múlik. van egy címtartomány VB0-tól valameddig, ami a rendelkezésedre áll, mint szabad felhasználású változó terület. Neked kell tudnod hogy melyiket mire használtad már fel a programban, melyikben mit tárolsz.
Természetesen h pl. a VB102-VB109-et az óra lekérdezésére használod, akkor azt máshol másra már ne használd fel (persze megoldható az is ha nagyon kifogy az ember a változókból, de itt nem erről van szó).
Ha a jelenlegi programodban egyáltalán nem használsz VB-ket, akkor teljesen hasraütésszerű címeket is megadhatsz, de érdemes inkább valamilyen koncepció szerint használni őket. Pl. az elejéről."Azt sem értem, hogy így minden induláskor az eredeti órával indul? megadom valami csoda folytán a mai dátumot , holnap kikapcsolom, holnapután meg be, és a mai dátummal indul megint?"
Nem, az RTC lényege, ahogy a nevében is benne van (Real Time Clock) az, hogy PLC programtól függetlenül telik. Még akkor is, amikor a PLC nincs bekapcsolva. De az adott CPU típustól is függ kicsit a dolog, mert van amikor háttértelep táplálja az órát, hogy az kikapcsolva is ketyegjen, de újabban csak egy pufferkondi van, ami pár napig látja el energiával az órát, így a CPU kikapcsolt állapotában csak addig ketyeg benne az óra, amíg a kondi ki nem sül (erre mindig megadnak a specifikációban egy időt).
Tehát ha ma kikapcsolod, majd holnap be, akkor holnap is a pontos időt fogja mutatni nem azt az időpontot, amikor ma kikapcsoltad.
"Sőt minden ciklusban visszafrissíti magát? Vagy most mi van?"
Arra azért vigyázni kell, hogy amikor állítod az órát a SET_RTC-vel, akkor a SET_RTC funkciót csak EGYSZER hívja meg a programod. Tehát valamilyen impulzusfeltételt kell tenned a hívás elé. Ha úgy hívod ahogy a mellékelt képen van, akkor nincs feltétele a hívásnak, így minden PLC ciklusban lefut, így minden PLC ciklusban beállítja a pontos időt.
Így persze az óra nem fog ketyegni az óra, ha másodpercenként 100x beleírod mindig ugyanazt az időpontot
Az óra olvasását már hívhatod minden ciklusban, de az is fölösleges. Bőven elég másodpercenként egyszer vagy még ritkábban hívni.
-
Szirty
őstag
válasz
cooldmann
#752
üzenetére
Üdv cooldmann!
"Kb nekem is ez van leirva, de továbra sem értem"
Nyilván tudnám mi van neked leírva ha elárultad volna.
Egyszerű a dolog, van egy rendszerhívás, aminek egy darab paramétert kell megadni, egy kezdőcímet.
A kezdőcímtől kezdődő 8 byte-on kapod meg az időt illetve ott adod meg ha beállítani kell.
Hogy melyik byte mit jelent azt leírtam az előző üzenetben.Pl. ha megadod paraméternek a VB102 címet, akkor az idő VB102-VB109-en lesz:
VB102: Év
VB103: Hónap
VB104: Nap
VB105: Óra
VB106: Perc
VB107: Másodperc
VB108: Fenntartott byte
VB109: A hét napja 1-7 (1=vasárnap, 2=hétfő, 3=kedd, stb)És újra hangsúlyozom, hogy BCD formátumban!
Példaprogram is biztos van, én most nem kerestem... -
Szirty
őstag
válasz
cooldmann
#750
üzenetére
Hali cooldmann!
"A valós idejű ora irása és olvasása számomra érthetetlen."
Nem dolgozok 200-assal, de az óra olvasására a READ_RTC az óra beállítására a SET_RTC hívás való.
Egy paramétert (címet kell neki megadni)
"The Read Real-Time Clock (TODR) instruction reads the current time and date from the hardware clock and loads it in an 8-byte Time buffer starting at address T.The Set Real-Time Clock (TODW) instruction writes the current time and date to the hardware clock beginning at the 8-byte Time buffer address specified by T."Pár fontos momentum a dologgal kapcsolatban.
- Az időt 8 bte-ban adja vissza illetve 8 bíte-ban kell neki megadni.
- A hívás paraméterében ennek a 8 byte-nak az első byte-ját kell megadni
- Az átadott 8 byte BCD formátumú kell hogy legyen!A SET_RTC-nél oda kell figyelni a korrekt dátum megadására (pl. január 74 hibás) de emiatt a szökőévekre is figyelni kell a februárnál)
A 8 byte tartalma:
T Byte Description Byte Data
0 year (0-99) current year (BCD value)
1 month (1-12) current month (BCD value)
2 day (1-31) current day (BCD value)
3 hour (0-23) current hour (BCD value)
4 minute (0-59) current minute (BCD value)
5 second (0-59) current second (BCD value)
6 00 reserved – always set to 00
7 day of week (1-7) current day of the week, 1=Sunday (BCD value) -
Szirty
őstag
válasz
villanyszele
#744
üzenetére
Hali villanyszele!
"e sinte semmi ismeretem nincs a PLC programéringröl ha valaki tudna segiteni nagyon halás lennék. Jazz Micro-oplc JZ10-11-T40"
Általános kérdésre csak általános választ lehet adni.
De ha semmit nem tudsz a PLC-ről, akkor kicsit több idő kellene mint egy hét.Mindenesetre itt egy U90 oktató anyag. Talán kezdd ezzel.
-
Szirty
őstag
-
Szirty
őstag
Helló G67hu!
"GPRS modemen gondolkodom, de csak általánosságokat találtam eddig, konkrét beállítási módokat nem; pl honnan tudom modem aktuális címét"
A modem címét?
Egyszerűen felhívod a modemet a te modemeddel és létrejön a kettő között a kapcsolat. A telefonszámát tudod
"Olyan megoldás lenne jó, amihez PLC-ben nem kell semmi kiszolgálás. Villanyszerelő hiba esetén odamegy a modemmel, csatlakoztatja, én pedig tudom monitorozni."
A gépek közelében nem áll rendelkezésre ethernet csatlakozási pont?
-
Szirty
őstag
Hali moseras!
"Ezt a gyakorlatban hogy szokták ? Ha a tartályban B felett van a szint, akkor nem engedik a szivattyút működtetni, függetlenül a kút vízének szintjétől ?"
Hát ez nagyon függ attól, hogy tulajdonképpen mi is a berendezés célja. Mert a feladat kiírásban erről nem tettek említést (csak azt írták le mit csináljon a program, ami vezérli).
Ha pl. a berendezés célja az, hogy mindig legyen víz a tartályban, akkor nyilván meg kellene állítani a szivattyút ha a tartály szintje "B" vagy magasabb
De ha az a célja, hogy a kútban ne lehegyen túl sok víz ("A" fölött) akkor nem kell leállítani a szivattyút. Viszont ilyenkor is kérdés marad, hogy az általam felvetett esetben mi történik

-
Szirty
őstag
Hali moseras!
"Ráteszed őket a PID (illetve ami épp kell) blokk bemenetére. Nem ismerem a te rendszeredet, de nyilván van PI(D) blokk, aminek van P, I, D bemenete"Lehet hogy félreértettem valamit, de kell ide PID?
Egyszerűen csak összes kell hasonlítani a "fenéknyomás mérő" által szolgáltatott jelet (ami nyilván arányos a tartály ill. kút szintjével) egy előre megadott értékkel és kész... -
Szirty
őstag
válasz
Juneanne
#723
üzenetére
Hali!
Bocs, hogy nem a feladat megoldásán fáradozom, de felkeltette a figyelmem ez a feladat.
Van ugye a berendezés, ami a linkelt képen is látható:
Tehát a szivattyú kapcsoljon be ha a kút szintje eléri a kútban "A" szintet és ki, ha eléri a "C" szintet.
Ha tároló tartály szintje eléri a "B" szintet, kapcsolja be a leeresztő szelepet, ha eléri a "C" szintet, akkor kapcsolja ki a szelepet.
De ha a szivattyú aktív, akkor a leeresztő szelepet ne kapcsolja be.Az ellentmondás a következő:
Ha a szivattyú üzemel, mert a kút szintje elérte az "A" szintet, akkor a tartály leeresztő szelep semmiképpen nem fog bekapcsolni a szivattyú miatt.
Mi történik, ha a tartály hamarabb telik meg (teljesen), mint ahogy a kút szintje "C" szint alá csökken? :>A másik a hibajelzés (bár szerintem a fenti eset is megérdemelne egyet): Ha a szint nem csökken 10 mp alatt 10%-ot, villogjon a hibajelzés.
"A hibajelzés mindaddig fenn kell hogy maradjon, amíg azt az I1 nyugtázó gombbal nem nyugtázták".Felmerül a kérdés, hogy mi történjen akkor, ha a szint nem csökken 10%-ot, a hibát nyugtázzák, de a szint továbbra sem csökken (ami gyakorlati oldalról nézve igencsak valószínű a hiba jellegéből adódóan)?
Soha többé nem lesz újabb hibajelzés, amíg helyre nem áll a rend?Az oktató jellegű feladatok pontatlan meghatározásával egy nagyon nagy baj van:
Az, hogy a meghatározás pontatlansága több lehetséges megoldást kínál. Azonban elfogadni csak azt az egyet fogják, amelyiket már a feladat megoldásakor előre rögzített a kérdés megfogalmazója.
Így lehet hibátlan megoldásra karót kapni...
-
Szirty
őstag
válasz
adamtoth91
#713
üzenetére
Helló adamtoth91!
"A két gép közti kapcsolatot a vnc nevű programmal szeretném megoldani. Ha valakinek van jobb ötlete vagy hogy hogy lehetne a két programot összekapcsolni kérem szoljon."
Nos mivel ez nem ennek a fórumnak a témája (hacsak nem akarod a laptopot mondjuk PLC-re cserélni
csak nagy vonalakban...A legegyszerűbb talán ha printer porton keresztül vezérelsz dolgokat. Ehhez persze kell hogy legyen a printer port a laptopon, ami nem valószínű. A printer porton eleve rendelkezésre állnak digitális TTL jelek, amiket közvetlenül kapcsolgathatsz prpogramból, csak egy illesztőt kell építened hozzá. Esetleg USB-s printer porttal is megoldható.
Ehhez persze elektronikát is építened kell, továbbá írnod egy programot, aminek segítségével egérrel kapcsolgathatod a port bitjeit.De léteznek ethernetes I/O illesztők is, amik digitális ki és bemenetekkel rendelkeznek. Ezzel akár a laptopot is kiválthatod, ha a járgányra felszigszalagozol egy wireless access pointot is

Az Advantech-nek vannak pl. ilyen megoldásai (sokféle). Ők még példa és teszt programot is adnak a kütyühöz.De gondolom nem akarsz venni drága cuccokat (ezek 10-50e Ft-os eszközök), ugyanakkor megépíteni sem akarod/tudod őket. A nehézséget főként ez fogja jelenteni.
-
Szirty
őstag
Hali beny2k!
"X Developert ami fullos (egy ezer lépésig korlátozott ingyenest le sikerült szednem) és egyéb dolgokat (manual, PLC programozási könyv, mintadolgokat) szóval minden ami segítségemre lehet honnan tudok szerezni?"
A mitsubishi-nél próbálkoztál már?

Bár FX2C típust még csak nem is említik (nem találtam) de vannak általános doksik (ami több típusra vonatkozik). -
Szirty
őstag
Hali vttukad!
"Egyet értesz a felsoroltakkal? Dokumentációt (utasításkészlet,stb.) lehet hozzá könnyen keríteni?"
Egyetértek.
Infószerzéshez ha nem szerénytelenség, ajánlom a web oldalamF-es rendszerek programozásáról sokat nem tudok mondani, de külön "története" van

Külön programcsomag kell hozzá és elvileg csak certifikált személy művelhet ilyet.
Persze ez nem lehet akadálya a tanulásnak
-
Szirty
őstag
Hali vttukad!
"...így biztonsági PLC-re van szükségem (bár igaz, ha teljes rendszert akarok működtetni, akkor min. 2 db kellene redundáns működés miatt, de ez sokba lenne modellezésre)"
Egy üzenettel ezelőtt még siemens PLC-vel akartál imserkedni, S5-öt és S7-200-at emlegettél.
Én arra az üzenetre válaszoltam."Kérdésem: Véleményed szerint, ha az S7300-ast megismerem, akkor nincs gond a későbbiekben az S7400-ra való átálással, vagy teljesen különbözik a kettő."
Nem különbözik. ha megismered az egyiket, a másik nem lesz gond. Azonos a programozás módja és a fejlesztőszoftver is ugyanaz.
Ha jól tudom van failsafe a 300-asok között is.Otthonra nem ajánlok 400-ast gyakorolni (egy CPU414-3 DP ára kb 1.2 millió +ÁFA és az még csak nem is redundáns (H) vagy failsafe (F) sorozatú).
-
Szirty
őstag
Helló vttukad!
"A kérdésem, hogy a step 5 -ös szoftver programozása után könnyű-e step 7- et programozni vagy inkább már inkább elsőnek S7200 plc-t vegyek"
Az S5 fölött eljárt az idő.
Ha a jövő számít, akkor újabbat javaslok. Az S5 programozása az S7-300/400-éhoz hasonlít (az utóbbi elődje volt az előbbi).
Az S7-200 viszont teljesen más tészta. Szinte köze sincs az S7-300/400-hoz.
Megtanulni a 200-ast könnyebb lesz szerintem. A 300/400 összetettebb, bonyolultabb.
A 200-ashoz sokkal több magyar nyelvű anyag is létezik (komplett rendszer leírás pl). -
Szirty
őstag
Hali bodnarg!
"Feltöltöttem néhány képet egy "minta projektről", aminél ugyanz a helyzet mint a kérdésés folyamatnál. Lehet hogy valami gond van a CF kártyával illetve kártyákkal? Vagy esetleg túl rövid a minatavételezési idő?"
Ha az minden beállítás a loggal kapcsolatban amiről képet készítettél, akkor szerintem az a baj, hogy nem adtad meg a Tag_1 nevű tag-nek, hogy szíveskedjen írni az ellen nevű log-ba!
Mivel így senki nem ír a logba, az üres marad.A Tag beállításánál Menj a Properties / Logging-hoz és ott állítsd be hogy az ellen nevő logba logoljon:

Továbbá ha folyamatos logolást akarsz, akkor a Tag_1 General beállításainal az Acquistion mode beállítást Cyclic on use-ról állítsd át Cyclic continuous-ra. Ellenkező esetben nem olvassa folyamatosan a tag értékét a PLC-ből.
Megjegyzés: Túl gyakori és túl sok változó logolása a flash kártyára gyakori újraírást eredményez. Mivel a Flash memória csak véges számú újraírást visel el, ezért a gyakori írás csökkenti az élettartamát.
-
Szirty
őstag
válasz
wassermann
#678
üzenetére
Hali!
"...ha nincs messze az érzékelő nem igazán veszélyes."
Kb. 5-6 méterig.
-
Szirty
őstag
válasz
wassermann
#674
üzenetére
Hali!
Két vezetékes mérés Pt100-al?
Az macerás és/vagy pontatlan. -
Szirty
őstag
Hali belys!
"Thumbweel Switch kiolvassa a plc-ből az aktuális értéket de ha modosítani szerenék akkor mindig vissza áll eredeti értékre."
Az időtag hogy van paraméterezve a programodban?
És hogyan paraméterezted az NT-n a Thumbweel Switch-et? Mit adtál meg neki? A timer számát?Mert ha igen, akkor azért nem jó!
Egy időtagnak van egy PV (process value) és egy SV (set value) értéke.
Az egyik (PV) azt tartalmazza hogy az időtag az idő számlálásában éppen hol tart (ha éppen nem telik, akkor ez az SV értékkel azonos). Amikor telik, akkor ez az érték pörög lefele. Szerintem ezt akarod módosítani.
A másik az SV érték, ami megmondja az időtagnak azt az időt, amennyit időzítenie kell. Ez teljesen más mint az előző. Az idő ettől az értéktől kezd el telni.
Amikor a timer elindul, az SV beíródik a PV-be és a PV csökken. Amikor eléri a 0 értéket, a timer kimenete bekapcsol.Ha így csináltad:

Akkor nem jó, mivel az SV értéke konstans (vagyis fixen a programba bebetonozott érték)
Az SV-bek egy változót adj meg és az NT a Thumbweel Switch-et erre a változóra állítsd be és akkor menni fog.
Persze arra neked kell figyelned hogy melyik változót (ebben az esetben DM címet) hol és mire használod... Ellenkező esetben komoly határincidensek lehetnek

-
Szirty
őstag
Helló Adish!
"Én érdeklődő vagyok szóval nemigazán szagolok hozzá a témához, fogalmam van róla, hogy micsoda középsuliban elektronikát tanultam pár órát foglalkoztunk a témával"
Pár óra nem lesz elég háttérnek :>
"Egy olyan kérdésem lenne hogy hogy tudnék egy füstölő ill hűtésrendszert automatizálni?"
Ez egy viszonylag egyszerű feladat, de ha semmi háttered nincs, és gyors eredményt akarsz, akkor szólni kell valakinek aki képben van.
Ha te akarod megoldani, akkor foglalkozni kell a dologgal (sokat). Akár mikrovezérlővel csinálod, akár pl. PLC-vel.Lehet hogy egy óra alatt megírod a programot, de valószínűleg napokig fog tartani mire hozzá igazítod a kívánalmakhoz és körülménekhez...
Kezdetnek jó feladat
-
Szirty
őstag
Helló And!
"A jelenség csak esetleges, vagy adott konfiguráció és program esetén mindig előjön? Addig kell próbálkozni, míg egyszer csak sikerül a letöltés? Van ezzel kapcsolatban tapasztalatod?"
Nos én is csak annyit tudok mint te: belefutottam a problémába.
Reprodukálni nem sikerült. Pontosabban sikerült, mert töbször is előfordult, de szándékosan nem tudom előidézni a jelenséget.
Ugyanazt a CPU-t azóta már számtalanszor újratöltöttem, és azóta hogy 3 MMC kártyát szétcseszett, kutya baja.
Kérdeztem siemens-eseket, de akit kérdeztem, még nem hallott a problémáról.Nálad mi a CPU pontos típusa és száma? (order number)?
-
Szirty
őstag
Hali And!
"Siemens oldalán láttam, hogy létezik egy rakás újabb firmware is az említett CPU-hoz (a mi példányunkon még talán a v2.0.0 van, ha a feliratát jól láttam). Érdemes lehet azt frissíteni?"
Véleményem (sejtésem) szerint ezt a problémát szoftverhiba okozza.
Ha így van, akkor a firmware csere segíthet a problémán (feltéve hogy a siemens is tud a problémáról és javította azt)."A legutolsó fw-hez pl. azt írják, hogy azt csak a jelenleginél frissebb kiinduló verzióra lehet ráfrissíteni, ami azért elég vicces."
Azt nem teljesen értem mit kell érteni a "jelenlegi verzió" alatt, de szerintem az érthető ha egy újabb firmware-t nem lehet akármelyik verzióra rátenni, hiszen közben a hardware is változik...
A "tönkretett" MMC feléleszthető ha PC-vel ráírsz egy gyári MMC image-et.
Itt van némi infó.
Ha már nézted, akkor bocs... -
Szirty
őstag
Hali! belys!
"Thumbweel Switch kiolvassa a plc-ből az aktuális értéket de ha modosítani szerenék akkor mindig vissza áll eredeti értékre."
Amikor az aktuális értéket látod, akkor a timer pillanatnyi értékét látod, amit a PLC minden ciklusban újra ír. Ezért változik azonnal vissza.
Ha azt szeretnéd, hogy a terminálról állítható legyen a timer időzítése, akkor a timer SV értékét kell megadnod a terminálról.
Általában ez az SV konstans. Pl.: #0120
Itt kell konstans helyett valamileyn memória címet használni (pl. DM0010) majd az input mezőt a terminálban erre a címre irányítani. -
Szirty
őstag
Helló thomass!
"ezért nem tudtam,hogy nem csak a saját analóg bemenetein szerezhet tudomást pl az áramérték változásáról,hanem esetleg az RS232 porton is."
Bármilyen analóg jel digitalizálás után csak egy szám. Ezért egy analóg jelet minden olyan módon lehet továbbítani a PLC-be, amivel egy bináris számot lehet

Ha az a PLC ténylegesen beolvassa RS232-n keresztül az áramnak megfelelő értéket, akkor egy egyszerű összehasonlítással és időzítővel gyakorlatilag egyetlen programsorban megoldható amit szeretnél. -
-
Szirty
őstag
Hali!
"Nem tudom de lehet hogy valamit elkötöttem de nem tudom hogy mit."
Sajna nincs bekötésem hogy azzal összehasonlíthassam.
A tápegységet azért kérdeztem, mert egyes CPU-k 24V-os segédtáp kimenete alkalmas a modulok megtáplálására, de a kimeneti modulok terheléséhez már kevés (max 0.1A).Mekkora árammal terheled a kimenetet? (max 0.2/0.3A kimenetenként).
"Periféria port láb kiosztását nem tudom. Nincs RS232 port a plc-n"
Akkor neked nem kábel bekötés kell, hanem egy RS232 interfész.
Úgy hívják, hogy CIF01 -
Szirty
őstag
Helló belys!
"Van egy Omron CPM2C plc amit össze szeretnék kötni NT terminállal, és programozó kábelt szeretném átforasztani, de nincs rajrom hozzá."
"Másik probléma a kimeneten 24v mérek, de amint egy relét kötök a kimenetre akkor a feszültség leesik 10 v körül."
- Mivel táplálod a kimenetet?
- Amikor a kimenetet bekapcsolod és a fesz rajta 10V, akkor mekkora a kimetet közös pontját tápláló tápfeszültség értéke?
- Mekkora árammal terheled a kimenetet?
- Pontosan milyen fajta, milyen típusú az a kimenet? -
Szirty
őstag
Helló!
"Ha van 30 millió min. kapcsolásszámú relém (ez 7.5 év 8 másodpercre), akkor azzal kapcsolhatom őket probléma nélkül ?"
Hát nem tudom. Ha a relé érintkezők átmeneti ellenállása akár csak egy kicsit is megváltozik, az eléggé meg fogja hamisítani a mérést.
Hacsak nem úgy csinálod, hogy egy áramgenerátorral az összes Pt100-at sorbakötve konstans áramot adsz nekik és a hőmérők kivezetés párjait Pt100-anként kapcsolgatod relével az A/D-re. Így a reléken nem folyik át az áramgenerátor árama és csak feszt kapcsolgatnak, aminek eredményeképp az átmeneti ellenállás sokkal kevésbé befolyásolja a mérést. Nem tudom érdemes-e ilyesmivel kísérletezni. Az amatőr megoldások rendszerint megbosszulják magukat az iparban..."A másik kérdésem, hogy Pt100 helyett "NTC 20k"-t alkalmazni (0,5C pontossagra van szukseg 0-+30 tartomanyban) helyes e ? És melyik olcsóbb ?"
NTC szerintem sokkal olcsóbb.
Ilyen pontossághoz én Pt100-at használnék. Annak ismert (szabványos) a jelleggörbéje. Ezért könnyebb linearizálni. Az NTC esetében nem tudom ugyanez hogy menne. Esetleg jó sok méréssel fel lehet venni a görbéjét és annak alapján linearizálni. De kérdés marad mennyire egyformák ezek. Ha nem, akkor több mérés esetén mindegyiknél egyenként fel kell venni a görbét és megcsinálni a linearizálást, továbbá ha esetleg tönkre megy és cserélni kell... -
Szirty
őstag
válasz
Totalkezdo70
#613
üzenetére
Hali!
Amennyire látom erre a feladatra egy mikrovezérlős cél-készülék gazdaságosabb lenne mint egy PLC-s vezérlés.
Bár ha csak egyetlen példányt kell építeni, akkor lehet hogy a PLC-s olcsóbb.
(A mikrovezérlőre nehezebb/nagyobb befektetés kifejleszteni a vezérlő programot) -
Szirty
őstag
válasz
Kicsi Huszár
#611
üzenetére
Hali!
"...a cég, ahol írom a szakdolgozatot komoly titoktartási nyilatkozatokkal dolgozik, így onnan nem tudok feladatot kapni semmilyen formában. A segítség elsősorban ott kellene, hogy ki kéne találni egy komplex feladatot amit plc-vel megvalósítható"
Találj ki egy fiktív berendezést, aminek a működését, felépítését, célját pontosan meghatározod. Persze ne marsjáró vagy csillagkapu legyen, hanem valami gyakorlatiasabb dolog.
Esetleg nézd meg ezt: TP szim és ezt: Fúrószim
Mindkettő egy szimulációS7 PLC-re. Talán ad ihletet...
-
Szirty
őstag
Hali!
"Igen csak van egy kis problémám vele, ez a feladat beadandó lenne egy tárgyból amiből egész félévben volt 3 óránk és semmit nem értünk belőle sajnos"
Tehát akkor lényegében két lehetséges megoldás van:
1. Megcsinálja valaki helyetted
2. Megpróbálja valaki megtanítani -
Szirty
őstag
Hali moseras!
"Van egy SysLibFile.Lib, benne open(), close(), seek(), delete(), meg minden egyéb FUNCTION-ban."
Jut eszembe: Omron CS1G-nél használtam ilyet. Ott van file szintű hozzáférés és éppen logra használtam.
Valószínű, hogy ott minden írás ténylegesen a flash-re ment. Tehát hosszú távon tönkreteszi. De ha nem ms-enként kell bele írni, akkor 10 év is eltelhet mire probléma jelentkezik. Az említett gép minden munkafolyamat közben méréseket végzett és ezek eredményeit írta ki CSV file-ba CompactFlash kártyára. 10-20 mp-enként írt egy-egy adatcsomagot. Kb 8 éve megy, amennyire tudom nem kellett még CF kártyát cserélni (nem is lenne egyszerű, mert néhány MB-os a mérete).Nyilván egy 2GB-os flash memóriát nem tud 512k RAM-ban tárolni, hogy ne a flasht cseszegesse íráskor.
De azt megteheti, hogy úgy működik mint a write cache memória: Olvasni a flash-ről olvas (vagy a RAM-ból ha változott már) de írni a RAM-ba ír. Így a RAM csak a változásokat tartalmazza, nem az egész filerendszert. Ha meg nagyon nagy mennyiségű adatot ír, akkor úgy sincs mit tenni, ki kell írni üzem közben is néha."Hopp, itt egy kérdésem lenne: van olyan speciális pufferes modul bármilyen PLC-hez, ami annyit pufferel, hogy 2-3 SMS-t is el tudjon küldeni ilyenkor ?"
Ezt így konkrétan nem tudom, de könnyen megoldható a dolog egy aksival. :]
-
Szirty
őstag
Szia Bandi18!
Szerintem kicsit pontosabban kellene meghatározni a feladatot, hogy érthető legyen.
"Q1-Q4 kiménetek és ezeket sorban kellene villogtatni gombnyomásra timerrel illetve mind a 4-et egy bizonyos idő elteltével."
Gombnyomásra, vagy timerrel (időre)? Vagy gombnyomás után időzítve?
Egymás után pontosan mit jelent? Bekapcsol az egyik, majd a másik, harmadik, stb? Vagy bekapcsol az egyik, majd amikor a második, akkor ez első kikapcsol, majd bekapcsol a harmadik és a második ki, vagy hogy?
Mind a 4 villogtatása hogyan értendő? Egyszerre felvillannak (ki be kapcsolnak)? -
Szirty
őstag
Szevasz moseras!
"Gondolom ez egy FLASH alapú eszköz, ha én ezt folyamatos naplózásra használnám, akkor ez nem fog behalni 100k-200k írás után ?"
S7-nél alapból nincs kifejezetten olyan, hogy file rendszer.
A háttértárat inkább memóriaként kezeli nem file-szerűen.
A programot FLASH memóriában tárolja. Legalábbis az újabb típusok, a régebbiek háttértelepes RAM-ban, de most maradjunk a FLASH-es verziónál.
Szerintem úgy megy, hogy amikor elindul a PLC, akkor mindent betölt a FLASH-ból RAM-ba (aminek nincs háttértelepes tápja) és üzem közben csak a RAM-ot használja. Abba írja az adatokat és abból is olvassa. Amikor elmegy atápfesz, akkor a RAM teljes tartalmát kiírja FLASH memóriába. Persze úgy, hogy a CPU értesül a tápfesz megszünéséről, de ő maga pufferről néhányszáz ms ideig még üzemel, amennyi idő alatt iztonságosan kírja a RAM tartalmat.
Ha tényleg így van, akkor ebből az következik, hogy teljesen mindegy hogy programból milyen gyakorisággal írsz adatokat."A másik kérdésem, hogy ha otthonról frissítem a PLC progiját (router-en VPN+dyndns beállítva), és mondjuk a feltöltés közepén beüt valami krakk, akkor mi lesz a PLC-vel ?"
S7-nél ez úgy megy, hogy a feltöltés alatt lévő blokk semmilyen szerepet nem kap mindaddig, amíg a feltöltés teljes egészében és sikeresen be nem fejeződött. Amíg ez meg nem történik, a régi változat fut, ami feltöltés előtt is benne volt.
Ezért ha a feltöltés megszakad vagy adathiba következik be, a feltöltött adatok nem jutnak szerephez. -
Szirty
őstag
Hali And!
"Az alany egyébként egy C7-621-es volt, ezért a változó megtalálása sem ment olyan egyszerűen az 'ömlesztett' I/O-címek miatt"
Ilyenkor legjobb a HW configból kiindulni. Ott látható melyik bemenetnek mi a címe.
"Eredetileg valamilyen globális, már a bemenet konfigurációjánál megadható skálázásra gondoltam, de sajna úgy nem megy."
Ilyet az Omron analóg modulok tudnak (pl.)
Itt csak annyit lehet tenni, hogy beállítjuk a modul méréshatárát (0-5V, 0-10V, -10-+10V, stb)"Kicsit macerás volt így elsőre, bújni kellett a helpet, de végül sikerült."
A következő gyorsabban megy majd

-
Szirty
őstag
Hali moseras!
"Ez így jól hangzik, de mi van akkor, ha el kell indítanom valamit 17:40:28-kor, és az RTC-t olvasó taszk mondjuk 17:40:27 legvégén olvasott be értéket"
Ha te végzed az idő bekövetkeztének a figyelését, akkor ezt a problémát elkerülheted, ha az idő összehasonlítását (beállított és az óra) nem egyenlőségre vizsgálod, hanem nagyobb relációra és erre teszel egy él figyelést.
Vagyis ha az RTC-ből olvasott idő nagyobb mint a beállított, akkor bebillentesz egy bitet. Ezt a bitet figyeli a programod, hogy mikor változik 0-ról 1-re.
Ennél csak arra kell figyelni, hogy ha állítják az RTC-t, átállás van téli nyári időszámításra, vagy a beállított időt állítják úgy, hogy az állítás következtében teljesül a feltétel, akkor is "jelezni" fog.Ha az idő figyelését a rendszerre bízod, akkor nyilván rajta múlik hogyan kezeli az ilyen esetet. Mint pl. S7-nél vannak timer interruptok (beállított időpontban meghív egy blokkot).
"Ha van n darab taszkom, amik egy közös GLOBAL területen lévő változót írnak/olvasnak (mint pl. az előbb), akkor mi a megoldása annak, hogy az olvasó taszk csak akkor nyúljon bele, ha az író taszk már végzett az írással"
Ez nagyon rendszerfüggő.
De szerintem nem kell ezzel as problémával számolni, mivel a több taszk ellenére is csak egy dolgot képes elvégezni egy időben. Tehát amikor éppen ír, akkor biztos hogy nem fog olvasni, és viszont.
Ha az írás/olvasás több adatot érint amely hosszabb idő és elvileg megszakítható, akkor csak onnan kapsz választ a kérdésedre ha megnézed az adott rendszer timing dolgait. S7-hez van ilyen, nem tudom wagohoz van-e. Ebben le van írva hogy minek mekkora a prioritása és mi mit képes félbeszakítani és mit nem.Szerintem két taszk nem egymástól teljesen függetlenül aszinkron módon fut.
Nekem akkor volt ilyen jellegű problémám, amikor operátorpanellel kellett kommunikálni (PLC JOB-ok futtatása a panelen). De ott voltak szemafor jellegű jelzések, amivel lehett koordinálni nikor ki írjon. -
Szirty
őstag
Helló And!
"Magyarul van egy 4..20mA-es távadó, amelyik elromlott, és nem pont ugyanolyan méréstartományú eszközt tesznek a helyére, mert az eredetivel megegyező épp nincs kéznél."
Természetesen megoldható, lényegében egyszerű szorzással és összeadással át lehet skálázni.
De valószínűnek tartom, hogy az eredeti program is tartalmaz skálázást. Legalábbis ha van a rendszerben valami megjelenítő és a mért értéket kiírja, akkor mindenképpen.
Én ezt a programrészt keresném és módosítanám megfelelően.Én az analóg jelek kezelését mindig úgy csinálom meg, hogy a program módosítása nélkül egyszerűen beállításokkal módosítható legyen a skálázás. persze ha van HMI a rendszerben.
Ha az említett progra nem így van megcsinálva, akkor meg kell keresni benne hogyan kezeli a eolvasott értéket.Persze azt is meg lehet csinálni, hogy az eredetileg beolvasott értéket skálázva adjuk át neki. Ezt valószínűleg egyszerűbb megcsinálni, mert így nem kell nagyon belenyúlni az eredeti programba, csak a PIW olvasását kell átirányítani egy változóra, amit egy általunk írt blokk szolgáltat...
Ezen a linken van ilyesmiről szó. Az FC109 skáláz. (de ha jól emlékszek, akkor ennek REAL a kimenete).
-
-
Szirty
őstag
Helló Fary86!
Nem tudod hogy hol tudnék magyar nyelven találni alkatrész leírásokat? pl omron xy érzékelő vagy munkahenger, frekvenciaváltó.
Danfoss FC300 frekvenciaváltó (magyar)
Danfoss VLT5000 frekvenciaváltó (magyar)
Omron CQM1H PLC (magyar)
A Siemens S7-300 programozás alapjai (magyar)
Mindenféle Omron doksik
Siemens S7-200 PLC általános ismertető (magyar)
Siemens S7-200 PLC részletes ismertető (magyar)"Esetleg FARA plc magyar nyelvű leírás"
Ilyet sajnos nem tudok.
-
Szirty
őstag
Hali!
"Kipróbáltam a openoffice Draw-t, de nagyon nehézkes."
Szerintem nagyon hasznos. De tény, hogy ez nem az a program ami helyetted rajzol. Ez az a program, amivel te rajzolsz.
"sztem kellene a Valmi1-hez egy Y11 és Y12 beavatkozó szerv, aminek az előremozgását az Y11, a hátramozgását meg az Y12 végezné. Persze gond adódik ha mind a két szerv Set állapotban van."
Jól gondolod.
Van pár "ökölszabály" amikor ilyen két irányú mozgást kell vezérelni.
- Keresztbe kell reteszelni az irány kimeneteket, ami megakadályozza, hogy egyszerre két irány legyen aktív
- Nem használunk R/S tárolót ilyen kimeneteknél (max a közvetett vezérlésükhöz)"Milyen jelölésmódot alkalmaznak ilyen esetekben?"
Hát a kérdésre nehéz egyértelműen válaszolni. Alapvetően a PLC memóriaterületeinek jelölése szerepel ott. Kimenet gyakran Q, bemenet általában I, stb.
De lehetséges soknál a szimbolikus címzés is. Ennél a felhasználó adhatja meg a szimbólum nevet és ezt lehet odaírni. Szimbólumnévnek meg kézenfekvő a berendezés elektromos tervdoksijában szereplő tervjeleket használni. Pl. szelepek: Y, motorkapcsolók KM, Relék KA, visszajelzők H, stb, stb. (már ha kól értettem a kérdést)... -
Szirty
őstag
Helló akoel!
"Mivel tudtál ilyen ábrákat csinálni?"
OpenOffice draw-al készítettem az ábrákat. Szerintem kiváló ilyesmire. Ebben a cikkben lévő diagramok és ábrák is azzal készültek (kivéve a programrészlet screenshotok persze).
"Légyszi magyarázd el, hogy mi az Y1, Y2 és az F"
Hát többet írtam volna ha többet sikerül kihámoznom belőle.
Az ábrák azért ugyanazok, mert a te leírásod alapján készültek. És beletettem még a programban lévő változókat Y1, Y2 és az F. Szerintem az a létradiagram nem azt csinálja, mint amit az idődiagramok leírnak. Mint ha hiányozna a fele.
Az Y1, Y2 és az F nyilván a beavatkozók lennének, tehát amik mozgásra késztetik a "valamiket". -
Szirty
őstag
Helló Fary86!
"Na most nekem az lenne a kérésem, hogy adjatok nekem ötleteket mégis miről lehetne összeírni 60.000 karaktert ezzel kapcsolatban."
Szerintem kisebb képet kéne berakni, mert így csak kb. a fele lesz látható...
Szóval szerintem le kell írni a berendezést. Mi a feladata, milyen részekből áll. Hol milyen motorok, beavatkozó szervek, érzékrelők vannak, azoknak mi a feladata.
le kell írni a program működését, A program mikor milyen helyzetben mit tesz. Ha esetleg alternatív működésmódok vannak, akkor azokat is.
Kell egy ki/bemeneti lista, hogy a PLC melyik kimenetére és bemenetére mi van kötve. Ezeket az itt is mellékelt rajzzal alá lehet támasztani.
Leírni a kezelőszerveket és azok funkcióit. Milyen lehetőségeket biztosít a kezelő számára a berendezés, hogyan kell kezelni.
Ha a berendezésben van valami különlegesség (pl. különleges működésmód, esteleg egy frekvenciaváltós hajtás) akkor arra külön ki lehet térni.
A programlista, gazdagon kommentezve, magyarázva hogy mi miért ban és mit csinál benne.
Ilyesmivel össze lehet hozni a kívánt terjedelmet. -
Szirty
őstag
Hali moseras!
"Hogy direktben hogy lehet portot olvasni, azt még nem tudom."
Az teljesen típusfüggő!
Rendszerint speciális utasítás vagy speciális memóriaterület elérésével lehetséges (esetleg sehogy némyelyik típusnál).Omron CS1 esetén pl. IO REFRESH (IORF) avagy FUN(097)
S7-300/400-nál PIW olvasás -
Szirty
őstag
Hali arita!
Nem tudom mivel konfigurálod, én még NT support tool-t használtam.
"Sajnos nem nagyon értem mi az a PT Notify Area és a PT Control Area. Hiába olvasom a leírást
Mit jelentenek ezel pontosan?"Nos mindkettő egy memóriaterület a PLC-ben, aminek a kezdőcímét az NT configjában be kell állítani.
A PT status Control area 4 word méretű. Segítségével a PLC-ből a kijelzőt vezérelheted:
Az egyik word arra szolgál, hogy a PLC-ből átválts egy megadott számú képernyőre.
A PT status Notify Area word-jeit a terminál írja. Pl. megjelenik ott hogy éppen hanyas kép van kijelezve, megnyomtak-e nyomógombot, történt-e adatbevitel, stb.A leírását ebben a doksiban találod: NT reference manual
A 64. oldalon (a PDF belső oldalszáma alapján ez az 52. oldal). -
Szirty
őstag
Hali!
"Lehetnek független taszkok, akkor abba kell a "kritikus" bemenetem beolvasását belerakni."
Csak arra kell vigyázni, hogy ilyenkor a fizikai bemenetet kell olvasni (erre külön módszer van ugye), mert a hagyományos input olvasás nem a fizikai bemenetet olvassa, hanem a "process image" táblát, ami akkor is csak normál PLC ciklusonként frissül, ha egy bemenetet 10 gyorsabban olvasunk (hagyományosan).
-
Szirty
őstag
Helló arita!
"A bajom az, hogy amit rátöltöm a programokat a cuccokra és összedugom a PLC-t és az NT30-at, egy pillanatra megjelenik az általam készített kép, de aztán el is tűnik."
Ilyet akkor csinál az NT30, ha a start screen ugyan jól van beállítva (ezért az meg is jelenik egy pillanatra) de a PT Control area Screen number byte (vagy word, már nem emlékszem) egy olyan képre váltja át, ami nem létezik (vagy az említett byte/word tartalma nulla).
-
Szirty
őstag
Hali petv4!
"Ennek a kábelnek a megépítéséről tudnál nekem valamilyen információt adni?"
Kb. ugyanerre a kérdésre m.gabornak ezt a választ adtam:
Sajna nincs ilyen rajzom és nem is tudok róla hogy közkézen forogna ilyesmi.Sajnos neked sem tudok mást mondani :-/
-
Szirty
őstag
Helló m.gabor!
"Megvásárolni meg nem lenne célszerű egy egyszeri használathoz ezt a kütyüt kb35000 ért."
Nos ez igaz. Sajna nincs ilyen rajzom és nem is tudok róla hogy közkézen forogna ilyesmi. Ugyanakkor elég valószínű, hogy egy alkalomra megépíteni épúgy nem célszerű...
Talán a kölcsönkérés ami még járható lehet.
-
Szirty
őstag
-
Szirty
őstag
Hali moseras!
"A WATCHDOG-ot pedig a kommunikáció nullázza. A WAGO-nál nem találok ilyent."
belenéztem a HW configba mit lehet WAGO-nál állítani.
Van watchdog, 10ms időalappal. Beállítható hogy mit csináljon ha a belső busz (k-bus) megszakad vagy hibás.
Nem tudom kipróbálni mi történik WAGO kimenettel ha leáll a profibusz, mert csak beépítve van egyelőre ilyenünk és én még nem foglalkoztam vele, pár új gépben van beépítve..."Azt szeretném, hogy a user a HMI-n kap egy táblázatot nevekkel, ott átírhatja ezeket, majd ezek visszakerülnek a RETAIN memóriába. Ha elmegy a táp, akkor is ezeket megőrzi, és legközelebb már ezekkel indul el."
Az általam ismert HMI-knél ez máshogy működik: Alapvetően minden változó a PLC-ben van, a HMI-ben csak hivatkozik rájuk az ember. Ha egy értéket kell kijelezni vagy állapotot megjeleníteni változó alapján, a HMI ciklikusan újra és újra lekérdezi a PLC-ből az érintett változó állapotát. Kivétel ez alól siemens OP-knál és egyéb HMI-knél a receptek kezelése. A recept adatrekordjait a HMI tárolja. Külön funkcióhívásokkal lehet ezeket az adatokat a PLC és a HMI között mozgatni.
-
Szirty
őstag
Helló thomass!
"A kérdésem az lenne ,hogy az OMRON PLC-k esetében is használhatók-e az oldalon leírtak?"
Nem, mert az általad linkelt leírásban a Moellerhez való szoftver részleteiről esik szó (mikor hova kell kattintani). Az Omron szoftver ettől eltér, ez a leírás nem követhető Omronnal.
-
Szirty
őstag
ali DP_Joci!
"gazából nem látom a működés eredményét, ha az az lenne, hogy egyik DB-ből másol a másikba.
"Itt egy példa, ami egy integerben megadott számú adatblokkból egy INT típust egy integerben megadott számú címről bemásol az MW0-ba az ANY használatával.:
FUNCTION FC 1 : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
SrcDB : INT ; //Forrás blokk száma
SrcADDR : INT ; //Kezdőcím a forrásblokkban
END_VAR
VAR_TEMP
SRC : ANY ;
RV : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
L P##SRC;
LAR1 ;
L B#16#10; //Mindig 10h
T LB [AR1,P#0.0];
L B#16#5; //Típus azonosító 5h=INT
T LB [AR1,P#1.0];
L W#16#1; //Ismétlési faktor = 1
T LW [AR1,P#2.0];
L #SrcDB; //A forrás DB száma
T LW [AR1,P#4.0];
L #SrcADDR;
SLD 3;
L DW#16#84000000; //Adatterület azonosítója 84h=Data block
OD ; //Az adatterület és a cím együtt egy DW-ben
T LD [AR1,P#6.0];
CALL SFC 20 (//Blokk másolás
SRCBLK := #SRC,
RET_VAL := #RV,
DSTBLK := P#M 0.0 WORD 1);
END_FUNCTIONÉs a hívás:
CALL FC 1
SrcDB :=24
SrcADDR:=4Ez az MW0-ba írja a DB24 DBW4-et
-
Szirty
őstag
Hali DP_Joci!
L P##DB_pointer_in_any
LAR1Betölti az akku1-be a #DB_pointer_in_any változó címét, majd az akku1-et az 1-es address regiszterbe tolja.
L B#16#10
T LB [AR1,P#0.0]10 hexa értéket tölt akku1-be, majd azt elrakja az AR1 address regiszter által címzett címre 0 byte és 0 bit eltolással (P#0.0 az eltolás).
Lényegében tehát ezzel a #DB_pointer_in_any változó nulladik byte-jába 10 hexa értéket rak.
Ha most megnézed az ANY felépítését:
Akkor látható, hogy az a byte mindig 10h S7 esetén. Nem véletlen tett ide 10h-t
L B#16#19
T LB [AR1,P#1.0]Az ANY 1-es byte-jába 19h-t tölt.
Ez a byte mondja meg az adattípust. Ez egy nagyon érdekes sor, mert 19h adattípus nem létezik amennyire tudom
L W#16#1
T LW [AR1,P#2.0]A 2-es byte az ANY típusnál az métlési faktor. Ennek akkor van jelentősége, amikor nem egy adatterületre kell hivatkozni (pl. blokk másolás). Ez mindig az adattípusban megadott típus darabszámára vonatkozik. vagyis ha ott Byte típus van meghatározva, akkor itt 10 10 byte-ot jelent, ha ott word van meghatározva, akkor a 10-es érték az ismétlési faktorban már 20 byte-ot jelent, stb.
L W#16#0
T LW [AR1,P#4.0]Itt kell megadni a DB számát, ami nem lehet nulla (mivel 0-ás DB nincs).
Ugyanakkor amennyiben az adatterület definíciója nem DB-t határoz meg (ANY byte6) akkor nulla kell hogy legyen. (bár ilyenkor ezt nyilván nem veszi figyelembe a rendszer).L #DB_num_in
T LD [AR1,P#6.0]A 6. byte elvileg az adatterület típusát adja meg. Az, hogy ide egy #DB_num_in nevű változót tölt arra utal, hogy van itt egy kis csúszás. Szerintem #DB_num_in-t a 4-es byte-ba kéne tölteni.
"Ezzel hibát nem kapok, de eredményt sem, lehet hogy az SCF84-et értem félre."
Attól függ mit szeretnél...
-
Szirty
őstag
-
Szirty
őstag
Helló DP_Joci!
"Az ANY pointeres dolog az érdekes lehet.
Van esetleg egy példád erre, megpróbáltam kreálni egy ilyen pointert, de nem igazán tudok DB-re hivatkozni vele."Egyszer csináltam olyat, hogy különböző számú egyforma szerkezető DB-kből másoltam adatokat, ahol a DB számát a program kalkulálta ki. Itt ANY pointertípusban kellett összeállítani a címet, mert a másolás BLKMOV hívással történt, aminek ANY kell.
Persze hogy nem találom.Ha megnézed az ANY felépítését:

Akkor hamar kiderül hogyan kell összesakkozni egy címet.
Csak arra kell nagyon vigyázni nehogy mellécímezzen az ember. Az indirekt címzés már csak ilyen. Jó nagyokat lehet vele szívni és alaposan tesztelni kell.A helpben van példa az "Example of the Data Type ANY" címszó alatt.
FUNCTION FC1: INT
TITLE = Transfer and handling of ANY pointers
// Task :
// This block should copy a source area to a target area using
// SFC20 (BLKMOV) where the source is put together from
// a number of individual parameters to form an Any pointer
// and the target is already specified as an Any pointer.
AUTHOR: SIEMENS
FAMILY: TOOLS
NAME: ANY_PTR
VERSION: 00.01
VAR_INPUT
SRC_DB : INT;
SRC_Byte : INT;
SRC_Type : BOOL;
SRC_Len : INT;
DEST_Any : ANY;
END_VAR
VAR_TEMP
T_AR1 : DWORD;
T_AR2 : DWORD;
T_SRC_Any : ANY;
T_DEST_Any : ANY;
Count : INT;
SFC_Ret_Val: INT;
END_VAR
BEGIN
NETWORK
TITLE = Save the contents of the address registers AR1 and AR2
TAR1 T_AR1;
TAR2 T_AR2;
NETWORK
TITLE = Put together and check source area
LAR1 P#T_SRC_Any; //Load start address of the source Any
//pointer into AR1
L B#16#10; //Enter syntax ID in the Any pointer
T LB [AR1, P#0.0];
L B#16#2; //Load area type BYTE
AN SRC_Type; //If BYTE was chosen, then
//jump to entry
JC Tran;
L B#16#4; //Otherwise load area type WORD
Tran: T LB [AR1, P#1.0]; //and store in the Any pointer
L SRC_Len; //Enter number of bytes/words to be
//transferred
T LW [AR1, P#2.0];
L SRC_DB; //Enter source DB number
T LW [AR1, P#4.0];
L 0; //If source DB number = 0 then
//transfer from bit memory area,
==I ; //otherwise from a DB
JC Mem;
L P#DBX0.0; //Load area pointer in data block
JU Offs;
Mem: L P#M0.0; //Load area pointer in bit memory area
Offs: L SRC_Byte; //Load copy of the number of the first bytes to be copied SLD 3; //Convert to pointer format
+D ; //Add to area pointer
T LD [AR1, P#6.0]; //Enter result in ANY pointer
NETWORK
TITLE = Enter and check the target Any pointer
L P#DEST_Any; //Place address of Any pointer in AR1
LAR1 ;
L B#16#2; //If the area type of the transferred
//Any pointer
L B [AR1, P#1.0]; //= byte or = word, the jump
//follows
==I ;
O( ;
L B#16#4;
==I ;
) ;
JC Copy;
L W#16#80FF; //Otherwise load error code
T RET_VAL; //Transfer to the caller
JU End; //Finish block processing
Copy: LAR2 P#T_DEST_Any; //Load address of temp. Any pointer
L 5; //5 words must be copied
Back: T Count;
L W [AR1, P#0.0]; //Move the Any pointer
//as an input variable to
T LW[AR2, P#0.0]; //the local data
+AR1 P#2.0;
+AR2 P#2.0;
L Count;
LOOP Back;
NETWORK
TITLE = Call SFC20 (BLKMOV)
CALL SFC20
(
SRCBLK := T_SRC_Any,
RET_VAL := SFC_Ret_Val,
DSTBLK := T_DEST_Any
);
NETWORK
TITLE = Pass on return value of SFC
L SFC_Ret_Val;
T RET_VAL;
NETWORK
TITLE = Restore the contents of the address registers AR1 and AR2
End: LAR1 T_AR1;
LAR2 T_AR2;
END_FUNCTION
DATA_BLOCK DB10
TITLE = Copy_In
AUTHOR: SIEMENS
FAMILY: EXAMPLE
NAME: COPY_IN
VERSION: 00.01
STRUCT
test: ARRAY[0..29] of BYTE;
END_STRUCT;
BEGIN
END_DATA_BLOCK
DATA_BLOCK DB11
TITLE = Copy_Out
AUTHOR: SIEMENS
FAMILY: EXAMPLE
NAME: COPY_OUT
VERSION: 00.01
STRUCT
test: ARRAY[0..29] of BYTE;
END_STRUCT;
BEGIN
END_DATA_BLOCK
ORGANIZATION_BLOCK OB1
TITLE = Cycle
AUTHOR: SIEMENS
FAMILY: EXAMPLE
NAME: OB_CYC
VERSION: 00.01
VAR_TEMP
OB1_System: array [1..20] of byte;
Src_Db : INT;
Src_Byte : INT;
Src_Type : BOOL;
Src_Len : INT;
END_VAR
BEGIN
NETWORK
TITLE = First call example for FC1
// This call for FC1 copies 5 words from memory byte 33
// to DB10 from data byte 3. This means the memory
// words 33, 35, 37, 39, and 41 are copied to the data
// words 3, 5, 7, 9, and 11 of DB10.
L 0;
T Src_Db;
L 33;
T Src_Byte;
Set ;
= Src_Type;
L 5;
T Src_Len;
CALL FC1
(
SRC_DB := Src_Db,
SRC_Byte := Src_Byte,
SRC_Type := Src_Type,
SRC_Len := Src_Len,
DEST_Any := P# DB10.DBX 3.0 BYTE 20,
RET_VAL := MW100
);
NETWORK
TITLE = Second call example for FC1
// This call for FC1 copies 7 bytes from DB11 from
// data byte 13 to the process output image from
// QB99. This means the data bytes 13 to 19
// of DB11 are copied to the output bytes 99 - 105.
L 11;
T Src_Db;
L 13;
T Src_Byte;
CLR ;
= Src_Type;
L 7;
T Src_Len;
CALL FC1
(
SRC_DB := Src_Db,
SRC_Byte := Src_Byte,
SRC_Type := Src_Type,
SRC_Len := Src_Len,
DEST_Any := P# Q 99.0 WORD 5,
RET_VAL := MW100
);
END_ORGANIZATION_BLOCK -
Szirty
őstag
Hali moseras!
"Mondtad, hogy használtok ilyen WAGO-s profibus I/O-kat. Mit csinál olyankor a PLC, ha ezek az I/O-k nem válaszolnak ?
Megáll minden, vagy csak az amivel kapcsolatos a távoli I/O ?"Olyankor lép életbe a "B" terv

S7-nél úgy működik a dolog, hogy van egy ún HW config, ahol szépen meg kell adni minden eszközt, ami a buszon van. A profibus token ring rendszerű, vagyis a master minden konfigurált slave-nek egymás után minden busz ciklusban küld egy jelzést, amire a slave-nek válaszolnia kell. Ha valamelyik eszköz leválik a buszról (nem válaszol) azt a master azonnal észleli. Ilyenkor két eset lehetséges:
1. Létezik erre az esetre hibakezelő blokk. Ilyenkor azt végrehajtja. Abba lehet programot írni, hogy mit tegyen a rendszer ilyenkor. Le lehet benne kérdezni melyik eszköz szakadt le, le lehet programozni mit csináljon ilyenkor a gép. stb.
2. Nem létezik a hibakezelő blokk, így azt nem tudja meghívni, a CPU STOP állapotba kerül és a teljes berendezés azonnal megáll.Persze lehet üres hibakezelő blokkot is beletenni. Néha ez is megfelelő. Ilyenkor a smmit hívja meg hiba esetén. vagyis semmit nem tesz a hiba miatt, de nem is áll le (STOP).
Az a modul amelyik leszakadt, ilyenkor rendszerint azonnal kikapcsolja a kimeneteit.
A berendezést vezérlő program ilyenkor esetleg nem megfelelően is működhet, mert ha a leszakadt modulon bemenetek is voltak, akkor azok nulla állapotúnak látszanak és a program is ennek megfelelően fog működni. vagyis ha nem írunk hibakezelést az esetre (B tervet) akkor a program nem fogja "tudni" hogy bizonyos bemenetek nem azért nulla állapotúak mert az adott bemenet fizikailag is nulla állapotú, hanem mert kommunikációs hiba van. Sokszor ez nem mindegy
"Illetve milyen változót kell a HMI-re kitenni, hogy a user is lásson ebből valamit ?"
S7-nél az említett hibakezelő blokk (OB) a megoldás erre, amibe írni kell egy programot ami ad megfelelő jelzést ami aztán meg is jeleníthető (akár szövegesen is).
Vagy meg kell hívni az SFC51-et (Reading a System Status List or Partial List with SFC 51 "RDSYSST"). EZzel le lehet kérdezni az összes buszon lévő összes eszköz jelenlétét:
A hibakezelő blokkal kapcsolatban firkáltam már. Itt találod.
-
Szirty
őstag
Hali DP_Joci!
"Lehet-e siemens (s7-300-400 ) plc-nél a DB sorszámát változóval, vagy indirekten, vagy akárhogy megadni? "
Lehet.
Így hirtelen két megoldás jut eszembe.
Az egyik akkor használható ha a DB elérése egy blokkon belül türténik és a DB számát kivülről, paraméterként adod át.
Ezt teszi lehetővé a BLOCK_DB paraméter típus. A szóbanforgó FC/FB interface részében input változóként megadsz egy BLOCK_DB típusó változót.
Pl.:
OPN után a DB-t a T DBWxxx L DBWxxx utasításokkal eléred.
A másik módszer nyakatekertebb. Össze kell állítani egy ANY pointert úgy, hogy a nekünk megfelelő számú DB-re mutasson (ez akár integer is lehet). Utána egy pointeres címzéssel elérhető a kívánt DB.
Azért ezzel nem árt vigyázni. Ha rossz DB-re vagy anak nem létező címére hivatkozol, akkor jön a "STOP caused by programming error"
-
Szirty
őstag
Hali!
SyncPos opció frekiváltóhoz
MiniStep léptetőmotor vezérlőAz alábbi linken a hajtás doksik között is találsz (többet is)
Omron cuccok
Új hozzászólás Aktív témák
- Újszerű Acer Nitro 5 - 17.3" QHD 165Hz - i9-12900H - 32GB - 1TB - RTX 4060 - Win11
- Újszerű HP EliteBook 640 G11 2028.12.Hó-ig Garis Ultra 5 135U 16GB DDR5 512GB SSD 9nap üzemidővel!
- ASUS Zenbook Flip UX360CA
- !AKCIÓ+GARI! GAMER PC Intel Core i5-14400F/ASUS TUF Gaming B760M/RTX 4070 12GB/32 GB DDR5 5200 MHz
- Új állapotú Samsung Galaxy S23 Ultra garanciával
- iPhone 13 Pro 256GB Sierra Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS4383, 100% Akkumulátor
- BESZÁMÍTÁS! 16GB G.SKILL Trident Z 4000MHz DDR4 memória garanciával hibátlan működéssel
- Garmin USB ANT Stick jeladó eladó
- iPhone 15 Pro 128GB Blue Titanium -1 ÉV GARANCIA - Kártyafüggetlen, MS4589
- Samsung Galaxy S24 FE 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest







