Příklad řízení krokových motorů 3

V těchto příkladech je ukázáno možné řešení, jak připojit krokový motor k automatu. Motor je připojen přes inteligentní budič na jeden (jen pulsy) nebo dva (pulsy a směr) výstupy automatu. Spuštění a zastavení motoru se provádí dvěma tlačítky, připojenými na vstupy X0 a X1.

 

Příklady jsou v základu nastaveny na nízké výstupní frekvence. Jejich činnost lze pozorovat i okem na kontrolkách výstupů automatu bez připojeného motoru. Při použití skutečného motoru je vhodné tyto hodnoty nastavit na maximum použitého motoru případně budiče. Pozor na omezení dané použitým typem automatu.

Tento příklad je psán pro automat FBs 10MAT. Funguje na jakémkoli automatu Fatek řady FBs. Podle typu automatu (rychlosti použitého výstupu) je omezena maximální použitelná frekvence výstupních pulsů.

Tento příklad vznikl rozšířením příkladu 2. Používá opět funkce NC polohován jednotky PSO0. Motor se  spouští tlačítkem na vstupu X0 a zastavuje tlačítkem na X1. Opět je připojen  jen na výstup Y0, řízení směru není realizováno. Rychlost se zadává potenciometrem připojeným na vstup ADCH0 AD převodníku například FBs-6ADS. Nově lze také zadat délku dráhy, kterou urazí motor na jedno spuštění. Motor tedy nemusí běžet po spuštění nekonečně dlouhou dobu. Zastavení i rozběh je s rampou.

Jednotku PSO0 je opět  v menu Project / IO Configuration / Output  Setup inicializována a je jí přiřazen fyzický výstupy Y0 s významem  pulsů.

 

Program začíná inicializacemi registrů po startu. Pozor některé instrukce jsou 32 bitové.

 

DR0 – výstupní frekvence pro motor (10Hz)

DR2 – délka dráhy při jednom spuštšění motoru (100  pulsů)

R10 – omezení zadání frekvence potenciometrem zhora (40 Hz)

R11 – omezení zadání frekvence potenciometrem zdola (1 Hz)

R12 – převodní konstanta A/100, (A je tedy 0.02)

R13 – převodní konstanta B (0)

V další síti je nastaven speciální bit M1991 na log. 1, což způsobí zastavování motoru po rampě i v případě přerušení kroku pohybu.

 

Následuje čtení hodnoty potenciometru a její převod na výstupní frekvenci podle vztahu f = A*ADCH0 + B. Aby mohla být konstanta A neceločíselná, zadává se  její stonásobek a výsledek násobení se vstupní hodnotou AD převodníku se následně vydělí stem.

V síti N14 se vynásobí vstupní hodnota z AD převodníku (R3840) stonásobkem konstanty A (R12) a 32 bitový výsledek se uloží do DR96. V následující síti se DR96 vydělí 32 bitově stem a výsledek se uloží opět do R96. V síti N16 se pak ke spodnímu wordu výsledku (R96) přičte konstanta B (R13) a výsledek se uloží opět do R96. Nyní je v něm tedy převedená hodnota frekvence.

Hodnotu frekvence v R96 je nyní potřeba omezit zhora i zdola na interval daný obsahem registrů R10 a R11. V síti N17 dojde k porovnání frekvence R96 s mezemi R10 a R11. Je-li  frekvence větší než mez R10, nastaví se bit M98 a v další síti se frekvence R96 opraví na mez R10. Je-li naopak frekvence menší než spodní mez R11, nastaví se bit M99 a v síti N19 se frekvence opraví na spodní mez R11.

 

V následujících sítích se převedená a omezená na povolený interval frekvence uloží (a rošíří na 32 bitů) do registru DR0, který používá program instrukce HSPSO. Celý převod je počítán jen 16 bitově, frekvence tedy může nabýt hodnoty maximálně 32  767 Hz. V tomto příkladu se nepočítá s hodnotou vyšší. Horní word DR0 (tedy R1) je trvale udržován nulový.

Dále následuje část jádro programu převzaté z příkladu 2 s malým doplněním. V sítích N24 a N25 je realizováno ovládání bitu M100 tlačítky na vstupech X0 a X1, který aktivuje instrukci HSPSO a tím i motor. Při vzestupné hraně X0 nebo po startu se bit M100 nuluje, při vzestupné hraně vstupu X1 se nastaví. Nově přibyla podmínka, kdy se M100 vynuluje po vygenerování zadaného počtu pulsů, viz dále.

 

V síti N28 je definována adresa začátku (R2000) tabulky parametrů pro jednotku PSO0

Síť N30 pak obsahuje vlastní instrukci HSPSO, která řídí činnost PSO0. Je-li M100 v log.1, začne se vykonávat NC program uložený v tabulce začínající od adresy R5000. Instrukce používá jako pracovní oblast registrů od adresy R1000. Aktivitu (pohyb) indikuje výstupní bit ACT, poruchu  výstup ERR a ukončení NC programu pak výstupní bit DN.

Byla doplněna síť N31, ve které se nuluje bit M100 po ukončení programu instrukce HSPSO (negace jejího výstupu ACT).

Od adresy R2000 nadefinována tabulka „step_param“ obsahující nastavení parametrů jednotky PSO0. Tabulku lze otevřít v menu Project / Servo Parameter Table. Její obsah je stejný jako v příkladu 2, tj. Max Speed je 40 Hz a délka doběhové i rozběho vé rampy 5 sekund.

Tabulka „step_program“ na adrese R5000 obsahuje program pro instrukci HSPSO v síti N30. Tabulku lze otevřít v menu Project / Servo Program Table.  Program obsahuje jeden jediný krok a to jízdu rychlostí DR0 (SPD = R0), v relativních souřadnicích kladným směrem (DRV ADR,+)  jednotky pulsy (Ps). Délka dráhy je na rozdíl od příkladu 2 určena obsahem registru DR2. Po vykonání tohoto kroku následuje konec (MEND).   

Pro vyzkoušení funkce příkladu je připravena následující Status Page, která obsahuje všechny použité registry.

 

 

Přílohy:  Příklad_3