Kérkel segíts, hogy ne maradjon hibás információ az oldalon!
Ha szerinted valami nem fedi a valóságot, kérlek írd meg, hogy javítani tudjam. Ha kérdésed van, fordulj hozzám bizalommal!

A következő címkéjű bejegyzések mutatása: Feladat. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: Feladat. Összes bejegyzés megjelenítése

2008. június 16., hétfő

CCS és a #locate

A CCS PICC nagy előnyének látom azt, hogy bármely változót, így akár struct-ot is, egyben kirakhatunk egy PORT-ra, sőt, akár köthetjük is a porthoz. Így bármilyen bit változik a változóban, az megjelenik a Pic kimenetén. Ez struct-ok esetében kényelmes és nagyon jól olvasható kódot ad.
A legutóbbi esetben a kimeneti portnak csak egy részét szerettem volna a következő kód segítségével uralni.

#byte portc = GETENV("sfr:portc")

/*Ez teljességgel azonos a régebbi verziókban használt változattal, amit most is lehet használni
int portc;
#locate portc= GETENV("sfr:portc")
*/

Ehhez a megoldáshoz elengedhetetlen volt a byte maszkolások segítségével történő manipulálása. De bármit tettem, az előzőleg kirakott adatot mindig felülírta a következő. Legalábbis úgy tűnt és csak a sokadik próbálkozásra tűnt fel, hogy nem felülírta, hanem elveszett minden lépésnél az adat. Így már eljutottam oda, hogy a #locattel elhelyezett változókon keresztül valamiért nem lehet visszaolvasni a kimeneti port aktuális állapotát. A megoldáshoz jelenleg egy átmeneti változót vezettem be és a változásokat ennek segítségével helyezem át a portra.

Egyenlőre nem tudom, hogy ez a hiba miért jelentkezik így, de több ötletem is van rá:

  • A PICC az olvasás hatására bemenetté konfigurálja a portot és így az nincs hajtva és az üres portot olvassa be.
  • A PICC nem veszi figyelembe, hogy a 16F690-es sfr memóriaterülete bankokra van osztva a változón keresztüli olvasáskor és nem választja ki a megfelelő bankot.
Egyszer talán kitesztelem.

2008. február 27., szerda

Áramérzékelés

Utánanézek nemsokára néhány fogásnak az áramérzékeléshez. Elsődlegesen érdekes a Philips sense kimenetes MOSFetje (és majd a National Semiconductor egyik H-bridge). Itt hívom fel mindenki figyelmét, hogy a sense ellenállás nélküli változat a LMD18200. A 01-es végű sensing ellenállást használ!


LMD18200 - 3 Amperes, H-híd meghajtó 55V-ra

uTrenchMOS - PowerMOSFET sense kimenettel

2008. február 19., kedd

Bosch eCKK/eCKR + Berger-Lahr hatjás beüzemelése és konfigurálása I.

A mostani projektbe két hajtás is kerül: egy Bosch lineár vezeték Berger-Lahr hajtással és egy Absodex CKD körasztal.

Megjegyzendő villamos bekötéssel kapcsolatos adatok:

  • A NO_FAULT_OUT, FUNCT1_OUT és FUNCT2_OUT kimenetek elektronikailag leválasztottak a hajtás VDC-jéről, de csak akkor, ha a meghajtásukról külön táppal gondoskodunk. Ezt úgy is elérhetjük, hogy a fő tápunkról külön biztosítón keresztül vezetjük az áramot. Abban az esetben viszont, ha kimenetekként használjuk őket célszerű a vezérlő 24V-jét kötni ide. (Vajon mi van, ha 5 voltos logikához visszük?)
  • A digitális bemenetek referencia pontját (természetesen) össze kell kötni az őket hajtó forrás null pontjával. FIGYELEM: a fordított polaritásra nincs védve. 100mA-ig és 1000mH-ig képesek kihajtani.
  • A drive polaritás védett 15A-ig, a rövidzárat is bírja, akkor is, ha sima trafós tápunk van áramkorlát nélkül.
  • 16A-es B karakterisztikájú kismegszakító ajánlott.
  • 0,75mm2 -> max 4mm2, ált 1,5mm2 es kábel ajánlott.
  • A fékezés közben generálódó áram túlfeszültséget okozhat a táp oldalon. Ez tönkreteheti a tápot, ha nem megfelelően nagy a kimeneti kapacitása. Megoldás lehet kiegészító kondenzátor csatolása, de ez jobban terheli a tápot, vagy trafós, áteresztő tranzisztoros táp (ezek általában jól bírják a túlfeszt és nagy a C-jük).
  • Föld és 0: szokásos: tápot lehetőleg közel, a különálló tápok nulláit lehetőleg minél vastagabb kábellel, csillagelrendezésben.
  • Ha a vezérlő (eg.: PC, PLC, MCU-s áramkör) kimenete nem leválasztott, biztosítani kell, hogy az áram nem a vezérlőn keresztül jusson vissza a tápegységbe. Ehhez a vezérlő földpontját csak egy pontban szabad és kell közösíteni a drive VDC földpontjával.
  • Például, ha egy leválasztott RS485 vagy CAN interface-ünk van, akkor annak a leválasztott nullapontját csak egy drive jelnullájához kössük, hogy elkerüljük a földhurkokat.
A FUNCT1 és FUNCT2 kimenetek:
  • Handshake
  • Trigger output
  • Drive referenced
  • Power amplifier active
  • Motor movement active
  • Limit switch triggered
  • Selective error output
A Selective error output azt jelenti, hogy programozható, hogy mely hibaesemény jelezzen ezen a kimeneten.

RS-485 alapbeállítás: 9600 baud, 7-E-1, egy cím lehet a buszon.

A 24V interface beállításai:
A szabadon konfigurálható IO-k alapbeállításai:
0: IN poz. végállás kapcs (aktív 0)
1: IN neg. végállás kapcs (aktív 0)
2: IN jog +
3: IN jog -

Ellenőrizni: Engedélyezéshez egy változó: Settings.SignEnabl, 28:13
Aktiv null vagy sem: Settings.SignLevel, 28:14.

Fokozottan veszélyes helyeken a nPWRR_A és nPWRR_B bemenetek bekötésére külön ajánlást tesz a kézikönyv. Ezek funkciója a CN6 jumper segítségével kikapcsolható, ha a jumper rajt van.

Poz. végállás kapcsoló meghatározása:
A forgásirány megfordítása nélkül, az órajárással egyező írányú forgatással, elért kapcsoló.

A legfontosabb beállítások

DataSet.Mode:
Direct Selection of data sets - a bemenetekkel egy előre beállított adathalmot választok ki és csak az fut le. Beállítása a "Macro Motion Mode" tabon lehetséges.

DataSet.GlobCond:
rising-edge - a datasetek elindításának feltételeként lehet megadni ezt a GlobCondot. Ez a változó azt dönti el, hogy mikor teljesüljön a feltétel. Alapbeállítás: felfutó él.

DataSet.AutoEnabl:
no - Lehetőség lenne Enable bekötés és használat nélküli működtetésre. Egyenlőre nem, de ha sikerül a buszos vezérlés, akkor talán. Alapbeállítás: nem.

DataSet.FuncOut_1:
Eldönt!
Alapbeállítás: nincs.
Egyenlőre megfelelő lehet: handshake.

DataSet.FuncOut_2:
Eldönt!
Alapbeállítás: nincs.
Egyenlőre megfelelő lehet: Limit sw. bounced.


A motortól és a vezetéktől függő beállításokat majd később fogom boncolgatni, egyenlőre átküldtem a gépész kollegának, hogy számolgassa ki.

Pozícionálási limitek:
A drive 2^-31 től 2^31-ig tud számolni. Ha túlmegy valahogy ezen a határon, a pozíció túlcsordulás (Status.WarnSig, 28:10, bit 0) bit bebillen és a pozíció eltolódik 2^32-ennel.
Ha a drive előzőleg referencálva volt a "ref_ok" (parameter Status.xMode_act, 28:3, bit 5) bit törlődik.
Innentől kezdve az abszolút pozícionálás nem használható.
A Settings.WarnOvrun, 28:11 paraméter segítségével adhatjuk meg, hogy ez a warning megjelenjen-e Status.driveStat, 28:2 bit 7 paraméterben.
Jog módban is tulcsordulhat.

Megszüntetése:
Referenciába mozgatás.

A 8.2-es fejezethez érve már hihetetlenül meguntam ezt a doksit.
Folyt. köv.