Než začnete zkoušet, nebo používat Profibus DP komunikaci, přečtěte si článek pana Vojáčka o sériové komunikaci s tímto servem, odkaz na konci článku. Je totiž nezbytné, aby jste si nastudovali jednotlivé příkazy pro ovládání motoru. Nejedná se totiž o nějakou standardní běžnou komunikaci s Profibus periferiemi, jak jste zvyklí z pohonů, převodníků, snímačů a dalších zařízení, ale v podstatě jde o sériovou komunikaci podle ASCII příkazů "Cool Muscle Language". Takže zapomeňte velmi rychle na různé "status wordy", "control wordy", cyklické čtení dat atd. Všechno je jinak. Všechny ASCII příkazy které fungují přes sériovou linku z programu CoolWorks Lite, budou naprosto shodně fungovat přes Profibus DP z PLC, změní se vlastně jen rozhraní.
Obrázek motorku pro představení velikosti v porovnání s klasickou MMC kartou do PLC Simatic.
K motorku dostanete od prodejce samozřejmě gsd soubor a PLC program Step7 s naprogramovanou funkcí ovládání motoru. Což může být fajn, nemusíte se s tím pracně programovat sami, zjišťovat protokol, stačí nahrát do PLC a vše by mělo fungovat.
Je výhodné nainstalovat si i program CoolWorks Lite pro sériové ovládání serva, neboť ikdyž je motor na DP sběrnici, ve spuštěném programu vidíme příkazy které opravdu dorazili z PLC do motorku, jak uvidíme dále.
|
|
První věc je instalace gsd souboru do Stepu7. Samotný soubor FBE5853.gsd je soubor bez bitmapy a příkazu pro nahrání bitmapy do Stepu7, proto jsem si gsd upravil tak, aby i bitmapa byla implementována do Stepu7. Je to zvykem většiny výrobců zařízení pro DP sběrnici. Takže ten FBE5853b.gsd je můj upravený s bitmapou.
Fungují ale samozřejmě bez potíží oba dva.
|
|
Po úspěšné instalaci najdeme v HW katalogu pro servo tohle zařízení, kde použijeme modul 32I/32Q konzistentní data.
|
|
Je to tam. Servomotor je na sběrnici i s bitmapou.
A tady je první upozornění. V příkladu od výrobce je adresována periferie od I/O adresy 1...32! To samozřejmě nikomu nevyhovuje, ale pro vyzkoušení Vám to asi vadit nebude. Já jsem to posunul taky nahoru až na závěr, kdy se mě teprve vše podařilo rozchodit.
Povšiměte si Profibus adresy 7. Důležitá věc, změna adresy se provádí přes sériovou linku z programu CoolWorks Lite speciálním příkazem.
|
|
Tohle je příkaz z manuálu na změnu adresy. Nepodařilo se ovšem bohužel adresu změnit. Zkoušel jsem všechno možné i nemožné a nic. Obchodní zastoupení Vám sdělí, že může být chyba v používání převodníku USB/RS232, je prý nutný klasický sériový port. S mým USB převodníkem ale jela veškerá komunikace se servem bez potíží, jen změna adresy nešla. Nevadí to pro pokusy, ovšem pro skutečnou aplikaci je to nepříjemné.
Nedalo mě to a oloupil jsem tedy vlastní děti o jejich stolní PC s "čistokrevným" funkčním RS232 COM portem, nainstaloval patřičný program a... nic. Vše se chovalo stejně, příkazy pro změnu adresy byly sice do serva vyslány, ale to hlásilo stále jen ERR.
Možná by to spravil nějaký nový firmware do motoru, nevím, výrobce si to snad vyřeší.
|
|
Jedeme dál. Používáme tedy adresu 7 a mrkneme na "funkční" program od výrobce. Celou komunikaci řídí funkce FB100.
Pokud děláte s Profibus zařízeními déle, možná Vás okamžitě napadne jedna atypická věc. A sice použití jen funkce SFC20. Mě to bohužel nenapadlo, příliš jsem věřil ujišťování, že všechno funguje, takže když nic nefungovalo, ani základní komunikace, a z PLC přes veškerou snahu neodešel žádný příkaz, chvíli trvalo něž jsem přišel na to proč. Výrobce totiž pro zápis a čtení periferií na Profibus DP používá funkci SFC20. Funkce speciálně určené pro Profibus sběrnici tady nejsou. Takže při použití nejnovějších CPU to možná nějak funguje, ale jinak ani ň.
Tady jsme mohli poprvé s testem skončit v podstatě dříve než pořádně začal, ale zajímalo mě, citát, "kde udělali soudruzi z NDR chybu".
|
|
Tady "udělali chybu". Takže naštěstí pokud nahradíte v programu výrobce SFC20 vhodnější funkcí pro komunikaci, vše okamžitě ožije.
Vpravo ukázka z originál programu, jak to asi nemá vypadat i s PIW adresou 1
Dole už ta správná systémová fukce SFC14 pro čtení dat, popsána i v samotném komentáři. Adresa 100hexa je decimálně 256 a tedy ta, co jsme si nastavili v HW konfiguraci. Snad to někomu pomůže a nebude s tím tak trápit.
|
|
Celý blok FB100 umí po vybuzení patřičných bitů poslat do motoru ASCII telegram se čtyřmi příkazy. S, A, P, a RUN. Tedy jeď na pozici P zrychlením A, rychlostí S. Ještě Vám zahlásí že motor dojel na polohu a informuje Vás o eventuální chybě. Dále umožní jedním bitem najetí pomalou rychlostí na eventuální referenční spínač a druhým zastavení. Nic víc, ale ani nic míň.
Jestliže jste si vyzkoušeli přes program CoolWorks Lite nahrání posuvové věty (Banku) a její spuštění, tak pomocí této funkce to neuděláte. Umí jen to co již bylo zmíněno. Bylo by to fajn, naprogramovat si všchny pohyby přes sériovou linku, uložit v motoru a pak jen nějak z PLC programu vyvolávat jednotlivé posuvové věty, ale bohužel. Taky si umím představit nastavení posuvových vět z nějakého OP, ukládat jako recepty a jen vyvolávat podle použité technologie.
Servo to ale umí a rozumí všem příkazům, není to problém, jen si to všechno musíte udělat a naprogramovat sami.
|
|
Pomocí bitů jsme z VAT tabulky odeslali příkaz na servo (v zeleném políčku) a to vyrazilo na patřičnou polohu.
Tenhle obrázek, že z PLC odešel celý telegram, jsem ale moc často neviděl, celá komunikace byla nespolehlivá a většinou se kousala, odešly jen první znaky, nebo chyběl poslední (stříška znamená jeď!) a nebo nevím. Konzultací s prodejcem jsme sice došli k nějaké správné posloupnosti vybuzení jednotlivých bitů, ale vzhledem k tomu, že se jedná jen o dva bity, tak těch variant moc není. Buď to funguje nebo ne, na to přijde každý raz-dva.
Celá funkce je totiž ve verzi 1.0, tak snad ji výrobce ještě odladí. Uvnitř je totiž programově poměrně obsáhlá.
Tady bychom mohli opět prakticky skončit a hotovo. Jenže člověku to nedá a říká si, napíšu si svoji komunikaci, otevřenou, a zkusím jestli bude motor poslouchat všechny příkazy jako přes sériovou linku. Taky mě zajímalo jestli je chyba ve funkci výrobce, nebo samotném firmware motoru.
|
|
"A je to", jak hlásí Pat a Mat. Napsat novou skladbu telegramu dalo to sice více práce než jsem čekal, ale výsledek je zato perfektní. Žádné koktání a nespolehlivost, servo poslouchá jako hodinky. Vyzkoušel jsem všechny rychlosti od 9,6kbps až do 12Mbps a bez problémů.
Odeslali jsme příkaz v ASCII "hranatá závorka, trojka, tečka, jednička", který říká motoru "proveď posuvovou větu 3". Tedy výrobe tomu říka bank, ale pohonářům je určitě přístupnější termín posuvová věta. Skladbu vět uděláte klidně podle článku kolegy Vojáčka, odladíte přes RS232 a pak z PLC jen vyvoláváte, kam chcete jet. Počkáme si jen na příkaz "End!" od motoru, který nás informuje o zdárném vykonání a dokončení posuvové věty.
Servo na příkaz vykonání posuvové věty 3 tedy [3.1 odpovídá Ux.1=8 (jsem na poloze) a to 4x neboť jsme měli 4 polohy ve větě a na závěr odpoví End!, tedy vše OK, všechno jsem provedl. Přesně je to vidět v okně programu CoolWorks Lite, kde jsou všechny příkazy zaznamenány.
|
|
provedení posuvové věty
|
odeslání příkazu pro posuvovou větu z PLC
|
Několik mých postřehů na závěr:
Dopsal jsem si do svého PLC programu pár přímých opakujících se příkazů, které nahradily příkazy z funkce výrobce pro pohyb serva tam a zpět a nechal jej cyklovat půl dne. Motorek se jen oteplil na cca 55-60°C na povrchu a stále fungoval. Jen dětem chvíli vadilo to neustálé pištění, ale pak si zvykli.
Nemusíte ani řešit nouzové zastavení nějakým externím vstupem, stačí pouze přerušit napájení serva a k zastavení dojde okamžitě, v podstatě kategorie 1.
Profibus DP komunikace jede úplně stejně, stejné příkazy jako sériová, stačilo by tedy vzít komunikační procesor do PLC Simatic a určitě by vše chodilo taky, jen zase trochu upravit PLC program pro jiné komunikační funkce. Patřičný procesor bych asi doma našel, ale už se mě do dalších výzkumů nechtělo.
Díky používání ASCII příkazů ze sériového standardu se připravte na to, že Vám dá vytvoření celé obsluhy serva v PLC programu více práce než je obvyklé u jiných DP zařízení.
Taky je třeba si uvědomit, že servo Vám samo nic "neřekne", pouze odpovídá na příkazy a dotazy. Tedy nemáte třeba stálou on-line informaci o poloze, takže nevidíte nikde čísla, jak se servo blíží k cíli apod. Samozřejmě po vyslání příkazu pro informaci o poloze Vám servo odpoví a polohu sdělí (v ASCII), ale o opravdovou cyklickou komunikaci se nejedná.
Servo vyrábí Slovinská společnost Kolektor Indutec a u nás mají "zastoupení" technickou kanceláří v Brně. Jedná se ale vlastně jen o "virtuální" kancelář, fyzicky zatím není, poštovní adresa taky ne, a ani žádná zastupující společnost s českým právním statutem zatím není. Vše ale prý bude během několika měsíců, celý projekt je totiž v začátcích, takže trpělivost.
Jaroslav Blažek
Doplňující odkazy k článku:
Článek pana Vojáčka o sériovém připojení servomotorku Cool Muscle na hw.cz: http://automatizace.hw.cz/test-digitalne-rizeny-motor-cool-muscle-rcm117l30a
|