H​ird​et​é​s​

2017. november 23., csütörtök

Útvonal

Fórumok  »  Egyéb hardverek  »  PLC programozás

Hozzászólások

(#3351) n0rbert0 válasza Szirty (#3350) üzenetére


n0rbert0
(senior tag)

Értem, köszönöm! :R

(#3352) coco2


coco2
(tag)

Sziasztok!

A kérdésem általános jellegű a vezérlők környezetében felhasznált személyi / távfelügyeleti rs-232 / 485 eszközökre. Mennyire általános az optoelektronikusan leválasztott rs-232 / 485 csatlakozás? Van-e a köztudatban olyan gondolat ipari környezetben, hogy kívánatosabb minden alkalmazott csatlakozásnál az optoleválasztott eszköz, mint a galvanikusan kötött? Itt nem csak arra gondolok, hogy egy ethernet / rs-232 távprogramozó az ethernet miatt egyébként is galvanikusan leválasztott, hanem arra, hogy azon túl még az rs-232 kimenete külön is opto leválasztott lenne / legyen.

Anno volt egy ismerősöm, aki pénztárgépeket szervizelt mindenféle rs-232 ketyerékkel, és folyamat panaszkodott az egyik-másik vihar után hirtelen taccsra menő eszközök miatt (elektrosztatikus roncsolódás gyanús esetek). Ha munkagépek környezetében mindenütt nagyon erős a földelés, akkor persze ilyen probléma aligha vetődik fel, de azért csak érdekelne, mit lát erről akár az utólagos statisztika tapasztalata, akár a szokvány, vagy akár csak a közhiedelem.

Köszönöm.

(#3353) levelko


levelko
(lelkes újonc)

Hello!

Encoderrel és omron plc-vel szeretnék fordulatszámot mérni, majd azt kiíratni egy hétszegmenses kijelzőre. Az encoder a két kimenetén egy fordulat alatt összesen 100 impulzust ad. A fordulatszám nem haladja meg az ezret percenként. Úgy tudom, hogy a PRV2 utasítás éppen erre való, gyorsszámláló bemenetre érkező frekvenciát alakít át forgási sebességgé. A baj csak az, hogy egy CPM2A cpu áll rendelkezésre és ez nem ismeri ezt az utasítást. Van erre a cpu-ra hasonló megoldás? Lehet hogy elég az egyik encoder kimenetet használni és akkor nyilván 50 impulzus lesz fordulatonként. A kijelzőre írás már nem lenne gond. A mérésnek is elég lenne 5 másodpercenként mérnie az aktuális fordulatot.

Üdv L.

levelko

(#3354) Dezsi82 válasza levelko (#3353) üzenetére


Dezsi82
(tag)

Szia!
A megoldás az lehet szerintem, hogy a gyorsszámláló bemenetet beállítod frekvenciabemenetre, kiolvasod az értéket, aztán elosztod az impulzusok számával.
Ha nem tudod beállítani frekvenciabemenetre, akkor annyi a különbség, hogy minden másodpercben, a kiolvasás után nullázod a gyorsszámlálót.
Abban én nem vagyok teljesen biztos, hogy ha a 100-s felbontású AB csatornás enkóderből egy jelet kiveszel, akkor az 50-s lesz. Ha jól sejtem, akkor a 100-s felbontású AB csatornás enkóder azt jelenti, hogy 100 pozíciót tud megkülönböztetni. Ha ez így van, akkor a működési elve miatt (4 élváltás van egy ciklusban) csak 25 impulzusod lesz egy fordulaton, ha elhagyod az egyik csatornát. Kivéve, ha le, és felfutó élt is tudsz számoltatni.
Üdv

(#3355) Szirty válasza Dezsi82 (#3354) üzenetére


Szirty
(Topikgazda)

Helló!

Szerintem az inkrementális jeladók felbontását impulzus/fordulat (pulse/revolution) értékben adják meg attól teljesen függetlenül, hogy egy fázisú, vagy két fázisú (A és B) jelet ad.
Így ha a gyári adatban szerepel mondjuk 200 p/r és a jeladó két fázisú jelet ad, akkor mindkét fázison egy teljes fordulat alatt 200 teljes periódust lehet megszámolni. Az A és a B jelek fordulatonkénti periódusainak számát nem adják össze sose.

No de van (amit Dezsi82 is említett) amikor a két fázisú jelnél nem a periódusokat számolják, hanem a jelváltásokat (éleket). A két fázisú jelben egy fordulat alatt négyszer annyi jelváltás van, mint amennyi a jeladó felbontása. Így a felbontás megnégyszerezhető (quadratic count).

A sebesség mérése nem hiszem hogy gond lenne, egyszerűen meg kell számolni adott idő alatt mennyi impulzus jön. Abból kiszámolható.

(#3356) Onishi


Onishi
(lelkes újonc)

Üdv mindenkinek!

(Azóta már sikerült kapcsolatot teremtenem a PLC-vel, a Windows7 nem tetszett a STEP7-nek, így VirtualPC XPMode-al oldottam meg, ott már érdekes volt Local Connection fül, így frankón be tudtam állítani, működik is minden.)

Olyan kérdésem lenne, hogy az S7 PLC-kbe rakható memóriakártya pontosan mire is szolgál?
Például el lehet rá menteni bizonyos mérési adatokat, amit később ki tudok olvasni? Annyit tudok róla, hogy betöltő memória, de ez nekem nem mond túl sokat. Az enyémben jelenleg nincs, de nélküle is működik.

(#3357) Szirty válasza Onishi (#3356) üzenetére


Szirty
(Topikgazda)

Helló Onishi!

Napjaink legjobb perverziója Win7 alatt virtuális gépen XP-t futtatni és az alatt használni a szükséges programokat.

"Olyan kérdésem lenne, hogy az S7 PLC-kbe rakható memóriakártya pontosan mire is szolgál?"

Attól függ melyik CPU és milyen memória kárty? MC, vagy MMC?
Gondolom az előbbi, mert amelyik CPU MMC-s aznem megy MMC nélkül.
Az MC-s CPU meg (bár ez CPU függő) mehet kártya nélkül is.

Tehát a kérdés miatt azt kell blöffölnöm, hogy az utóbbi kártyáról beszélünk (MC).
Arra jó, hogy tárolj a PLC programot, ami alapvetően RAM-ból fut, és háttértelep védi. De a Step7 "Copy RAM to ROM" funkciójával vagy egy jól irányzott PG-be bedugott MC memóriakártyával és Step7 S7 memory card funkcióval a memória kártyára másolható a project.

Ilyen esetben ha a háttértelep kimerül és a PLC feszmentes lesz, a RAM tartalma elvész a programmal és adatokkal együtt. Legközelebbi bekapcsoláskor a CPU az MC memória kártyáról szépen visszatölti RAM-ba a programot és a vezérlés működőképes marad. Természetesen a DB-k aktuális tartalma megsemmisül és az MC-ről visszatöltődött tartalommal fog dolgozni.

"Például el lehet rá menteni bizonyos mérési adatokat, amit később ki tudok olvasni?"

Adatblokkok formájában lehet.

(#3358) Onishi válasza Szirty (#3357) üzenetére


Onishi
(lelkes újonc)

Értem. Köszi.
Hát igen tényleg elég nagy "perverzió" ez a Virtual PC-s megoldás, de nincs mit tenni egyelőre. Még mindig jobb, mint Win7 mellé feltelepíteni egy XP-t. Mert hogy vissza nem állok XP-re az is biztos. Egyelőre nem látom hátrányát ennek a megoldásnak.

(#3359) Szirty válasza Onishi (#3358) üzenetére


Szirty
(Topikgazda)

Helló!

Mert nem ismered az előnyét a normális megoldásnak.

(#3360) n0rbert0


n0rbert0
(senior tag)

Sziasztok!

Adott egy Omron CJ2M PLC, amivel shiftelést szeretnék megvalósítani úgy, hogy ha egy gombot megnyomok, akkor balra shiftel, ha egy másik gombot nyomok meg akkor jobbra.
Úgy szeretném, hogy 1 bit legyen 1 értékű a többi 0 és csak az első négy biten sifteljen tehát, ha eléri a 4. bitet az egyes érték, akkor ne az 5. jöjjön, hanem az 1.
Fontos lenne, hogy a shiftelés sebessége állítható legyen.

Létradiagramban valósítanám meg. Eddig az SFTR utasítással próbálkoztam, de sajnos a shiftelés sebességét nem tudtam beállítani. Az SFT-vel működik, de ez sajnos csak balra siftel...

Előre is köszönöm a segítséget.

(#3361) byte-by válasza n0rbert0 (#3360) üzenetére


byte-by
(tag)

halo n0rbert0 !

az SFTR-t használhatod szerintem, ugyanúgy működik, mint az SFT, csak egy control szót kell alkalmazni.
ennek a szónak az utólsó 4 bitje adja össze az SFT utasításait, illetve feltételeit, kiegészülve a reverzibilitással.
pl. a control szó ( C ) : 200, akkor a 200.12-13-14-15 biteket használod , mint "data input"=200.13,
"shift input" = 200.14, "reset bit"=200.15.
ez az SFT-ben ugyanúgy megvan, de nem , mint egy szó része, hanem külön bitenként.
ezért tudsz feltételként ehhez berakni pl. egy 1s-os pulzárt.

az SFTR kiegészül a "shift direction" bittel = 200.12.
ennek 1 vagy 0 állapota a jobbra vagy balra léptetés.
ezt a instruction help is irja.
de ezeket a biteket Te is kapcsolhatod akár ugyanúgy 1szekundumos pulzussal pl. a 200.14-et ami a shift input ( a példában) , és akkor már szabályoztad a sebességet, mint az SFT esetében a shift input bement elé berakott pulzusal.
persze a control szót már máshol nem használhatod.
illetve az SFTR - kell még egy feltétel ami nélkül hiába kapcsolgatod a biteket, mint egy engedély a blokkra.

tehát (ha jól gondolom) az SFTR-ben ugyanúgy kapcsolod a control szó bitjeit , mint az SFT esetében a bemeneteket.

byte-by

[ Szerkesztve ]

(#3362) n0rbert0 válasza byte-by (#3361) üzenetére


n0rbert0
(senior tag)

Köszi a választ.
Én is ezzel próbálkoztam, de a pulzálást nem sikerült megoldani. Hiába állítottam a 14. bitre 1s-os pulzálást, nem másodpercenként léptetett, hanem jóval többet.

(#3363) n0rbert0


n0rbert0
(senior tag)

Így próbálom, de nem úgy működik, ahogy szeretném.

(#3364) Szirty válasza n0rbert0 (#3363) üzenetére


Szirty
(Topikgazda)

Helló n0rbert0!

Szerintem azért nem úgy működik ahogy szeretnéd, mert a léptető utasításod minden egyes PLC ciklusban lefut.
Amikor a P_1s-el kapcsolod a léptetését (W4.14-et). A P_1s 1 másodperces 50% kitöltésű impulzus sorozatot ad. Tehát fél másodpercig ON fél másodpercig OFF állapotban van. Amikor ON állapotban van (tehát fél másodpercig minden egyes lefutáskor léptet egyet az SFTR utasítás, mert a léptetés feltétele adott. Aztán fél másodpercig nem csinál semmit, majd fél másodpercig megint léptet egy csomót (hiszen fél másodperc alatt sok PLC ciklus lefut).
A megoldás az, hogy vagy "kukacos" SFTR-t használsz, ami csak egyszer fut le minden engedélyező felfutó élnél, vagy magát a léptető impulzust DIFU-zod meg, hogy csak egy PLC ciklus ideig legyen aktív.

Itt egy konkrét példa erre:

A példában a 0.01-es bemenet jobbra léptet, a 0.02-es bemenet balra léptet.
A léptetett bitek a 100.00, 100.01, 100.02 és 100.03 bitek. Amikor végig ér, ugrik az elejére az iránynak megfelelően.

[ Szerkesztve ]

(#3365) Szirty válasza n0rbert0 (#3363) üzenetére


Szirty
(Topikgazda)

Üdv ismét n0rbert0!

Nem írtam, de a 100-as és 200-as CH bitjeit nem használhatod másra természetesen.

Itt egy másik megoldás ugyanarra a léptetésre:

Ha ez jobban tetszik, esetleg egyszerűbbnek tartod használd ezt.
Ugyanúgy működik. A 0.00 és a 0.01 bemenetek léptetik jobbra és balra. Itt is a 100.00-100.03 biteken jelenik meg a léptetett bit. Ez nem használ SFTR vagy más bit léptető utasítást, Nem használja csak a 100-as CH-t, (nincs 200-as control word).
Persze 100CH-ból itt is csak a 100.00-100.03 biteket használhatod fel (a többi bitet is írja, nem tudod a programban másra felhasználni).

[ Szerkesztve ]

(#3366) Szirty válasza coco2 (#3352) üzenetére


Szirty
(Topikgazda)

Helló coco2!

Nem nagyon kaptál választ ahogy látom. Sajnos sokszor nehéz mindenre 100%-osan alkalmazható általános érvényű szabályt alkotni.
Annyit mondhatok, hogy az iparban a galvanikus leválasztás mind a mérésnél mind a kommunikációban alapvető és tulajdonképpen kötelező.

Jó lehet hogy ha a laptop RS232 portja nem leválasztott nem lesz baj ha rádugjuk a frekiváltóra pár percre amíg foglalkozunk vele, de sokkal valószínűbb, hogy lesz. Főleg ha a laptop tápegységén nincs földelés és főleg, ha abban zavarszűrő kondikat alkalmaztak amik a bejövő fázisról és nulláról vannak a belső GND-re vezetve. Ezzel 100V körüli feszültséget hozva létre a GND-n. Egy ilyen potenciálkülönbség csatlakoztatáskor röhögve agyonverheti akár az eszköz meghajtóját, akár a laptop RS232 portját.

"Ha munkagépek környezetében mindenütt nagyon erős a földelés, akkor persze ilyen probléma aligha vetődik fel"

Ez nem teljesen van így!
Hiába van 240 mm2 rézzel bekötve a betáp és így a PEN is, meg van EPH, a gépek között kiegyenlítő áramok folyhatnak ez több tíz A is lehet, ami több V-os potenciálkülönbséget hozhat létre a földpontok között.
Ez komoly zavaró jel egy analóg mérésnél vagy kommunikációs kapcsolatnál.

Gyakorlatilag minden ipari PLC be és kimenete legyen az digitális vagy analóg le van választva a PLC elektronikájától.

(#3367) byte-by válasza n0rbert0 (#3362) üzenetére


byte-by
(tag)

halo n0rbert0 !

Szirty jól mondja.
azért nem always_on-t tettem az utasítás elé a példában , hanem valamilyen bemenetet, mert ez együtt működik a feltételekkel.
vagyis akkor lesz 1 ha azzá teszed, a "shift input "-nak is feltétele, illetve inkább "és" kapcsolatban van.
a pulzus egyszer 1 feltétel, egyszer 0, időalaponként.
de ha akkor 0 amikor a shift input 1 akkor nem lesz léptetés,ha meg 1 és a shift input is 1, akkor minden ciklusban léptet ha a reset 0. márpedig Te nyomógombot akarsz használni.

de, jó példák amit Szirti írt, még én sem próbáltam, kíváncsi vagyok.

byte-by

[ Szerkesztve ]

(#3368) n0rbert0 válasza Szirty (#3365) üzenetére


n0rbert0
(senior tag)

Köszönöm a válaszokat! :R
Ez a második példa nagyon megtetszett. Hogy nem gondoltam én az osztásra és a szorzásra?! :)

Az én példámra visszatérve...
Akkor az sem lenne jó megoldás, ha az impulzust felfutó élre tenném?

[ Szerkesztve ]

(#3369) byte-by válasza n0rbert0 (#3368) üzenetére


byte-by
(tag)

halo !

"Az én példámra visszatérve...
Akkor az sem lenne jó megoldás, ha az impulzust felfutó élre tenném? "

ez nagyjából az amit Szirty "kukacos" SFTR-nek mondott.
ez magát az utasítást teszi "felfutó"-vá, vagyis a bemenet 1 állapota alatt csak egyszer fut le, majd a következő 1-nél megint csak egyszer.

byte-by

[ Szerkesztve ]

(#3370) Onishi


Onishi
(lelkes újonc)

Üdv!

Olyan kérdésem lenne, hogy egy általános PLC vezérlésű rendszer esetében mekkora keresztmetszetű vezetékeket szokás v. ildomos alkalmazni? A vezérlőszekrény kialakításra gondolok, mondjuk a PLC és a sorkapcsok között. 0.75 mm^2 megfelelő? Vagy elég a 0.5 mm^2 is? Van valamilyen ökölszabály?

(#3371) Szirty válasza Onishi (#3370) üzenetére


Szirty
(Topikgazda)

Szevasz Onishi!

Nos az alkalmazott vezeték keresztmetszetén "át kel hogy férjen" akkora áram, amekkora a vezeték védő biztosíték (olvadó betét, vezeték védő megszakító, stb) névleges árama.
Ha nem így lenne, akkor egy zárlat tüzet okozhatna.

Bemenetekhez néhány A-es védelem és 0.5 mm2 vezeték megfelel. A választott védelemnél és a keresztmetszetnél figyelembe kell venni a bemeneti modul fizikai adottságait. Pl. egy 32 pontos bemenetre valószínűleg nem lehet bekötni 32 darab másfeles vezetéket!

(#3372) n0rbert0 válasza n0rbert0 (#3368) üzenetére


n0rbert0
(senior tag)

Sikerült megcsinálni aritmetikai műveletekkel! :)
Köszönöm szépen az ötleteket és a segítséget! :R

(#3373) sörösló válasza Szirty (#3371) üzenetére


sörösló
(fanatikus tag)

Az ipari szabvány (ami persze már nem kötelező csak erősen ajánlott) 0.5 mm-es vezetéket ír elő jelvezetéknek, minden más esetben 1.5 mm a minimum. Természetesen az értékek négyzetmiliméterben értendők, csak most nem találom a speckaraktertáblát. :W

(#3374) Onishi


Onishi
(lelkes újonc)

Köszönöm a válaszokat. Ma is okosabb lettem valamivel :-)

(#3375) n0rbert0


n0rbert0
(senior tag)

Sziasztok!
Van egy újabb problémám...
Van egy digitális bemenetem, aminek a frekvenciáját szeretném megmérni. Van-e olyan utasítás létradiagramban, ami képes erre?
Előre is köszönöm a válaszokat.

(#3376) Szirty válasza n0rbert0 (#3375) üzenetére


Szirty
(Topikgazda)

Helló n0rbert0!

Nem tudom hogy van-e ilyen utasítás vagy kész funkció, de megoldható:

- HW-es gyors számláló bemenettel
- Szoftveresen ha a jel frekvenciája kicsi (<10Hz) a kitöltési ideje tényezője pedig olyan, hogy a rövidebb idejű állapot garantáltan és mindig meghaladja a PLC legnagyobb várható ciklus idejét.

(#3377) n0rbert0 válasza Szirty (#3376) üzenetére


n0rbert0
(senior tag)

A jel frekvenciája változó kb. 0-100Hz, a kitöltési tényező 50%.
Én a PRV és PRV2 utasítással próbálkozom, de sajnos nem akar összejönni.

(#3378) Szirty válasza sörösló (#3373) üzenetére


Szirty
(Topikgazda)

Helló sörösló!

Pedig sok jelkábel ere 0.25-ös (pl. encoder kábel, analóg méréshez használt kábel ere).
Vagy a pneumatikában, hidraulikában használt hall elemes érzékelők gyári beépített vezetékének ere 0.1mm2 sincs. Már a 2A-es olvadóbiztit sem tudja kiköpni, a vezeték teljes hosszában füstöl és beleolvad a többi érbe :-/

(#3379) Szirty válasza n0rbert0 (#3377) üzenetére


Szirty
(Topikgazda)

Helló n0rbert0!

És van high speed countered is? (anélkül ez nem fog menni).

(#3380) n0rbert0 válasza Szirty (#3379) üzenetére


n0rbert0
(senior tag)

Elméletileg van, mert CJ1W-ID211 digitális bemeneti modulom van, CJ2M-CPU32 mellett.

(#3381) Szirty válasza n0rbert0 (#3380) üzenetére


Szirty
(Topikgazda)

Helló n0rbert0!

Nekem úgy tűnik, hogy gyorsszámlálóhoz MD211 vagy MD212 modul kellene (Pulse I/O module).
A tied meg basic I/O module.

(#3382) n0rbert0 válasza Szirty (#3381) üzenetére


n0rbert0
(senior tag)

Igazad van.
Egyébként egy vízórából szeretnék átfolyásmérőt csinálni egy hall-szenzor segítségével. Az impulzusok számát tudom számolni sima counterrel (egy bizonyos frekvenciáig, ami kb 100Hz) , de nekem a frekvencia kellene. Ami végül is egy időtartam alatt (pl 1s) az impulzusok száma. Én valami ilyesmit szerettem volna megvalósítani.

(#3383) Szirty válasza n0rbert0 (#3382) üzenetére


Szirty
(Topikgazda)

Helló n0rbert0!

100Hz-et biztonsággal csak akkor tudsz érzékelni, ha a PLC ciklus ideje 5ms-nál kisebb és akkor a bemenet késleltetését nem is számoltam.
Ha ez teljesül, akkor ok.

Szóval meg kell mérned, hogy adott idő alatt hány darab impulzus jön. Pl. másodpercenként méred, akkor a kapott szám a frekvencia lesz Hz-ben.
Pl. jön 28 impulzus másodpercenként, akkor a frekvencia 28 Hz.

De mérheted (elvileg) az impulzusok között eltelt időt is, akkor annak reciprokaként kapod meg a frekvenciát.
Pl. ha ezred másodpercben méred akkor kHz-ben kapod az eredményt. Mondjuk két impulzus között mérsz 20 ms-ot, akkor a frekvencia 1/20=0.05 kHz = 50 Hz.
De ilyen rövid időt nem fogsz tudni mérni szoftverből PLC-vel.

(#3384) n0rbert0 válasza Szirty (#3383) üzenetére


n0rbert0
(senior tag)

Én úgy tudom (javíts ki ha tévedek), hogy 8ms-os jeleket tudok max mérni ezzel a modullal, tehát a 10ms még beleférhet ami a két jel között telik el, tehát a 100Hz.

(#3385) Szirty válasza n0rbert0 (#3384) üzenetére


Szirty
(Topikgazda)

Helló n0rbert0!

A modul képessége egy dolog.
De hiába képes a modul 8ms késleltetéssel beadni a jelet a PLC-nek ha a PLC ciklus ideje pl. 70 ms!
Akkor a PLC-nek 140 ms időre van szüksége, hogy garantáltan észrevegyen egy teljes jelperiódust.
Éspedig a PLC ciklus idejét annak feldolgozási sebessége és a rajta futó program határozza meg és ráadásul általában még csak nem is konstans!
Több üzeneten keresztül épp erre próbálom felhívni a figyelmed.
Lehet javítani valamennyit a helyzeten a bemenet közvetlen kiolvasással és megszakítás kéréssel (ha a bemenet erre képes). De ha a ciklus idő a feldolgozandó jel periódus idejével összemérhető, akkor hardveres feldolgozás szükséges, és nem másért, hanem ezért említettem a high speed countert, ami éppen ilyen.

(#3386) n0rbert0 válasza Szirty (#3385) üzenetére


n0rbert0
(senior tag)

Szia Szirty!
Te hogy oldanád meg a 10Hz és az alatti frekvenciával rendelkező jelek mérését? Lehet, hogy ez is elég lesz.

(#3387) n0rbert0 válasza n0rbert0 (#3386) üzenetére


n0rbert0
(senior tag)


Eddig jutottam, itt még csak a periódusidő van meg 10ms-ban, ennek a reciproka lesz a periódusidő. A méréseim szerint elég pontos.
A reciprok műveletet hogy lehet legegyszerűbben megoldani?

(#3388) rsf válasza Onishi (#3356) üzenetére


rsf
(senior tag)

A Step7 SP1-et használd legalább(van már SP3 is) az már elboldogul a Win7 x64-el.
Üdv.

“Az a baj a világgal, hogy a buták mindenben holtbiztosak, az okosak meg tele vannak kételyekkel.“

(#3389) Szirty válasza n0rbert0 (#3387) üzenetére


Szirty
(Topikgazda)

Helló n0rbert0!

Jó irányba indultál ez a módszer megfelelő lesz.
De van néhány megjegyzésem:

A 3-as rung-ban a BIN(023) W6 W6 szerepel ha jól látom. Ez így a W6 BCD tartalmát (ide másoltad a timer pillanatnyi értékét (Present Value) ami BCD, ez ok. De a BIN a W6-ba teszi vissza a konverzió bináris eredményét. Még ez sem lenne baj, de BIN előtt always on flag van, tehát ezt az utasítást a PLC minden ciklusban végrehajtja, miközben az 1-es rung-ban lévő MOVE csak egy felfutó élre. Ezért ha már egyszer átkonvertálta a BCD számot binárisra, akkor, a következő ciklusban újra át akarja konvertálni de akkor ott már bináris szám van.
Sajnos néhány bináris szám értelmezhető BCD számnak is, más bináris szám pedig nem.
Ezért én a BIN-t a MOV alá tenném, hogy mindig egyszerre és egymás után hajtsa végre őket.

De egyszerűsíthető is a dolog, mert nincsen szükség a MOV-ra mivel a BIN az eredményt máshol is tárolhatja nem csak ott ahonnan a forrást veszi, így a BIN egyben MOV is :)

A timert én elengedném a max értékig #9999
Ha nem akarsz BCD-BIN konverziókat, akkor használhatsz bináris timert is (TIMHX).
Vagy 1ms felbontású bináris timert (TIMHHX)

Bár a mérés pontossága nem lesz 1ms, mert a CPU ciklus edejével szórni fog.

"A reciprok műveletet hogy lehet legegyszerűbben megoldani?"

Elosztod 1-el az értéket :)
Persze érdemes lebegőbontos számmal csinálni,

(#3390) Szirty válasza rsf (#3388) üzenetére


Szirty
(Topikgazda)

Helló rsf!

Attól tartok a verziószámot kifelejtetted :->

(#3391) n0rbert0 válasza Szirty (#3389) üzenetére


n0rbert0
(senior tag)

Köszi a tanácsokat!
Sajnos nem akar összejönni ez a reciprok művelet. Most így állok de nem működik...

(#3392) rsf válasza Szirty (#3390) üzenetére


rsf
(senior tag)

Ja bocsi Step7 V5.5 :)
Üdv.

“Az a baj a világgal, hogy a buták mindenben holtbiztosak, az okosak meg tele vannak kételyekkel.“

(#3393) Szirty válasza n0rbert0 (#3391) üzenetére


Szirty
(Topikgazda)

Üdv n0rbert0!

Egy osztás csak. De előtte át kell alakítani valós számmá.
(A projectet nem tudtam megnyitni, valószínűleg régebbi a CX-em)

(#3394) n0rbert0 válasza Szirty (#3393) üzenetére


n0rbert0
(senior tag)

Igen, tudom, hogy csak egy osztás, de hogy konvertálom át a word-öt valós számmá?
Próbálkoztam, hogy az eredmény átadom egy st funkcióblokknak, de ott nem tud közvetlen konvertálni csak int-ből. Ha először int-é utána meg real-é konvertálom, akkor nem lesz jó az eredmény.

[ Szerkesztve ]

(#3395) Szirty válasza n0rbert0 (#3394) üzenetére


Szirty
(Topikgazda)

Helló n0rbert0!

Hopp az Omron nem barátja a lebegőpontos számoknak... (Sorry nagyon ritkán omronozok)
Akkor fixpontos számokkal kell próbálkozni (egész számok 10-es, 100-as vagy 1000-es szorzataival)...

(#3396) rsf


rsf
(senior tag)

Szia Szirty,
mi lehet olyankor amikor a System Diag. hibát jelez, de nem látok semmi hibát a listában?
A Cpu egy Siemens 317-es.
Köszi.

“Az a baj a világgal, hogy a buták mindenben holtbiztosak, az okosak meg tele vannak kételyekkel.“

(#3397) Szirty válasza rsf (#3396) üzenetére


Szirty
(Topikgazda)

Helló rsf!

Fejtsd ki bővebben és pontosabban!

(#3398) rsf válasza Szirty (#3397) üzenetére


rsf
(senior tag)

Fut minden de errorban van a CPU és a hiba listában csak area lenght hiba van.(Ez induláskor mindig beleugrik ettől nem szokott bepirosodni a cpu)
Ezt több hónappal ezelött láttam az egyik gépünknél, de majd holnap de. ránézek újból, mert most nincs nálam a token.
Üdv.

[ Szerkesztve ]

“Az a baj a világgal, hogy a buták mindenben holtbiztosak, az okosak meg tele vannak kételyekkel.“

(#3399) Szirty válasza rsf (#3398) üzenetére


Szirty
(Topikgazda)

Helló rsf!

Akkor mégiscsak van ott hiba nem? :-)
Az area length error oka rendszerint elég durva programozási hiba egyébként (indirekt címzésnél könnyű belefutni és nehéz megtalálni).
Azt jelenti, hogy a program valahol olyan (rendszerint DB) címre akar írni vagy onnan olvasni ami nem létezik.

Azért nem áll STOP-ra a CPU, mert a hibán valószínűleg tüneti kezelést alkalmaztak oly módon, hogy raktak a programba egy üres OB121-et (programming error OB).

[ Szerkesztve ]

(#3400) rsf válasza Szirty (#3399) üzenetére


rsf
(senior tag)

Persze az OB121 miatt nem megy stopba a PLC, de nem is lesz piros a hiba led.
Ezért nem értem én sem.
Üdv.

[ Szerkesztve ]

“Az a baj a világgal, hogy a buták mindenben holtbiztosak, az okosak meg tele vannak kételyekkel.“

Útvonal

Fórumok  »  Egyéb hardverek  »  PLC programozás
Copyright © 2000-2017 PROHARDVER Informatikai Kft.