Linuxcnc ethercat vs Indradrive rexroth HCS01

fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

22. 3. 2017, 2:10

Zdar všem.

Dostal se mi do rukou set driveru a serva od robokopa a protoze cenove uz jsme jinde nez pred lety, tak se tento driver docela rozsiril mezi prosty lid.
Driver podporuje nekolik protokolu vcetne EtherCATu, SERCOSU III, Profinetu atd a par lidi uz to pod linuxcnc rozbehalo ale kdyz sem hledal nejakou ucelenou informaci tak nic moc.
Jenom ruzné stripky, ktere je potreba poskladat, takze se pokusim sepsat par poznámek tak, aby i lidi ne plne vládnouci Linuxem(CNC) to mohli zacit pouzivat.

Jedná se konkrétně o driver REXROTH HCS01.1E-W0009-A-02 ale postup bude stejny pro vetsinu podobnych driveru na EtherCATu.
rexroth-driver.jpg
rexroth-driver.jpg (11.54 KiB) Zobrazeno 8960 x
Cely postup rozdělím do několika fází.

1.nastaveni driveru do provozního stavu. encoder, napěti a další hromada parametru.
2. nastevení parametrů komunikace EtherCATu
3.vygenerovani xml souboru potřebnéího pro vlastni provoz
4 instalace Ethercatu pod linux debian
5.instalace hal modulu pro linuxcnc


1.nastaveni driveru
pro nastavení všeho potřebného ohledně serva vs driver slouží software IndraWorks DS bežící pod windows a který je volně stažitelný

soft je ke stazeni zde http://www.boschrexroth.com/dcc/xMediaA ... t=internet" onclick="window.open(this.href);return false;
Drivery standardně běží na rozsahu adres 192.168.0.x takže je potřeba nastavit sítovku na tento rozsah.
idealne takhle
tcpip.jpg
1. nastaveni driveru do provozního stavu
Když máme nastavený počítač je potřeba nastavit i driver. Takže pomoci čudlíků na panelu nastavíme komunikaci na ethernet a potvrdíme enter. Dal je nutné nastavit i adresu na které bude běhat. já měl tuším 192.168.0.14. ale indraworks umí projet cely céčkový rozsah, takze netřeba měnit pokud tam máte něco podobného v kontextu 192.168.0.X
připojíme kabel mezi počítač a driver do konektoru X25 (ten dole). Druhy konektor slouží pro řetězení driverů přes EtherCAT.
ethernet.jpg
Nyní spustíme indraworks, vybereme příslušnou síťovku a necháme prohledat sít.
Když to dobře dopadne, tak se objeví driver v seznamu a můžeme ho připojit.
indraworks-search.JPG
Zkoušel sem to pod W7 kde to chodilo pěkně ale pod WIN10 sem se s tím trápil, ale asi vlastní blbostí.
zbytek nastaveni nechám na vas. v tom nejsem moc kovanej a stejně to zaleží na servu. Mám servo siemens a nebyl sem schopnej nastavit tu hromadu parametru aby to behalo rozumne.
Těch parametrů je opravdu hodně a idealní by bylo mít servo přímo určené pro driver, ale není to nutné. Některé hodnoty jako indukčnost a podobný se pro servo ze šuplíku bez štítku dost blbě vyplňujou.
Tady jenom upozorním, že driver má funkci SBC/STO , která blokuje driver, takže je potřeba zapojit 24V do pinu 1 a3 na konektoru X49 a protože není uvnitř propojená zem, tak i 0V na pin 2.
Viz dokument GoTo-IndraDrive-Cs.pdf (lehce dohledatelný)
Když už jsem u těch dokumentu vřele doporučuji alespoň prolistovat seznam parametru a hlavně dokument CS_func.pdf kde je vše „srozumitelně“ vysvětleno.
Všechny dokumety lze stahnout tady
ftp://ftp.boschrexroth.pl/brc/IndraDrive_CS/" onclick="window.open(this.href);return false;
A až se vám podaří roztočit servo z Indravorksu a vyladit všechyn proměnné, tak můžete přejít k dalšímu neméně zajímavému kroku a to nastaveni komunikace.

2. nastevení parametrů komunikace EtherCATu


Tady potřebujeme druhy zajímavý soft a sice EtherCAT configurator, který je také volně stažitelný zde
https://download.beckhoff.com/download/ ... urator.zip" onclick="window.open(this.href);return false;

Tady malinko odbočím a uvedu trochu teorie nezbytné pro pochopení fungování.
Průmyslové drivery používají hromadu protokolu pro komunikaci a né každý podporuje všechny.
Rexroth například nepodporuje CoE (CANopen over Ethercat) který je hodně používaný pro vyčtení nastavení parametrů z driveru ale místo toho pužívá SoE (sercos oever EtherCAT) Z toho plynou různá omezení. K tomu se dostanem postupně.
Takže ted je potřeba opět pomocí čudlíků přepnout driver na komunikaci přes EtherCAT potvrdit Enter a zrestartovat driver, aby se změna projevila.
Než spustíme vlastní Ethercat je potřeba mu podvrhnout xml soubor s konfigurací pro náš driver.
Xml s popisem rexroth druiveru seženeme zde. Je to uplně jiný xml, než bude později potřeba pro linuxcnc.
http://www.boschrexroth.com/dcc/Vornavi ... ID=p146994
v sekci Download dole
nebo tady.
IndraDrive_XML_ECat_SoE_2016_08.zip
(10.94 KiB) Staženo 311 x
V zipu je samotny soubor BoschRexroth_IndraDrive_ECAT_SoE_01V15.XML, který nakopírujeme do konfiguračního adresáře EtherCatu u mě je to C:\Program Files\EtherCAT Configurator\EtherCAT
po spustěni programu provede rebuild databaze a pak už při použití volby scan device nalezne náš driver jako rexroth MPx16/17
Takhle to vypada bez přidaného xml od výrobce
indradrive-in-ethercat-conf-bez-xml.JPG
a takhle když ho nakopírujete kam máte
indradrive-in-ethercat-conf.JPG



Bohuzel xml soubor obsahuje pouze dva a dva parametry pro pozicni smycku
Aby byly v konfiguratoru videt i dalsi parametry jako momenty, rychlost a podobně je potreba upravit xml soubor od rexroth a doplnit potrebne informace. Popřípadě a to mi přijde jednodušší je naklikat v programu, tím se vyhneme složité struktuře a editaci xml. (ve finále se ji ale stejne nevyhnem)
Pro první testy komunikace ale nedoporučuji si s tím hrát. K doplnění informací bych se vrátil až nam bude driver komunikovat s linuxcncn
Tady sem si hrál dost dlouho než sem pochopil filozofii master/slave Ethercat zařízení a kde co nastavit.
Je potřeba nastavit hodiny DC (distributed clock) EtherCat funguje tak, že umí vzit hodiny reálného času z prvního zařízení v řadě a hodiny distribuovat přes všechny zařízení.

Další velmi důležitý krok je nastavení časovaní a to konkrétně parametru S-0-0001 na hodnotu 1000us jinak si to nechce povídat. Parametr S-0-0002 není potřeba nastavovat, ten se nastaví sám z inicializace komunikace z linuxcnc. S-0-0002 je taky 1000us a odpovídá mu parametr appTimePeriod="1000000" v xml souboru pro linuxcnc a který je prozmenu nanosekundách.
Jestli se v tom ztrácíte už ted, tak věřte že bude hůř. Týden laborování mám za sebou a furt si nejsem uplně jistej kde co nastavit.
Něteré parametry lze nastavit z Indraworksu, některé z EtherCAT configurátoru, někeré pak z obou dvou a něco lze nastavit i z přikazové řákdy linuxcnc ale to je opruz.
Je potřeba se dostat v ethercat configuratoru do stavu, kdy driver dostaneme do stavu OP (operation mode) k tomu je potřeba odstranit všechny chyby které driver kontroluje při přechodu z INIT do PREOP nasledne do SAFEOP nakonec do OP.
V manualu trobleshooting jsou naštěstí všechny chybové hlasky popsané a například v parametru S-0-0021 je sezmam chyb ke kterym doslo při prechodu z SAFEOP do OP a lze si tento seznam zobrazit
ethercatconf.jpg

V manualu parametru je u každého napsano, kdy se kontroluje napr P2-P3
Az budete schopny dostat driver do stavu OP tak je tato část skoro hotova.
Ve stavu OP musí byt jak část master v Ethercat configuratoru tak část slave (nas driver) kde na displayi svití Ab
Vestina parametru se dá editovat ve stavu PROP v záložce Soe – online klepnutim na parametr a editaci. V jnem stavu to haze chybu, ze je zaznam uzamcen.
Jako kontrolu že vše funguje můžeme ve stavu Ab na displeyi zkusit přidat Position feadback value do Watch okna a nastavit master control word na hodnotu 0xE000 což převedeno do binárního tvaru znamena nastaveni bitu 13,14,15 na 1 a to znamena přepnuti do pracovního režimu.
Pak by se mělo na displeyi objevit Ac a po chvilce Af a servo by mělo stvrdnout protože v tuto chvili už ho drží driver na požadovane hodnotě.
Nyní můžem zkusit zapsat nejakou hodnotu do Position command value a servo by se mělo pootocit.
Zamerne nepisu jakou hodnotu, protože to zalezi jak mate nastaveny scale osy v indraworksu a jestli odpovida prepocet na sroub a podobny věci.
Když zkusime pootocit hřídelí serva, tak se mění i hodnota zpetne vazby Position feadback value.
To znamena ze servo reaguje na povely a muzem prejit do linuxcnc.




3. Vygenerovani XML souboru.

Tohle je zasadni krok bez ktereho se to proste hejbat nebude a neni uplne primocarej.
Trochu teorie pro pochopeni. Budu se snazit popsat proc se co kde deje,protoze me samotnyho dost stve, kdyz mam jen seznam prikazu, ktery nevim co maj delat ani co ma byt vysledek.
Snad nebudu psat blbosti, kdyz tak me opravte, ale takhle nejak si to predstavuju.
EtherCAT pouziva datagramy, ktere obsahuji urcite hodnoty, ktere si vymenuje se slave zarizenimi. Obsah datagramu neni pevne dan, ale ridi si ho master (masteri) a definuje co v nem bude.
To ma obrovskou vyhodu v tom, ze kdyz budu chtit muzu si zdriveru vytahnout libovolnou informaci napriklad moment ktery zrovna na servu je, nebo jakykoliv jiny udaj.
Datagram samozrejme obsahuje v zakladu informaci o pozadovane poloze a odpoved o aktualni poloze a stavy driveru v pripade ze se jedna o polohovoe rizeni.
No a k vytvoreni datagramu slouzi prave xml soubor, ktery zpracuje zavadeci modul a naparsuje vse jak je potreba.
Problem je v tom, ze xml soubor pro linuxcnc ma jinou strukturu nez xml od rexroth a zrejme i nez jini vyrobci.
Presto ze format jepokazdy jiny, tak informace v nem jsou stejne.
Adresa, typ promene, velikost, atd. atd.




Napriklad v indraworks DS i v ethercat configuratoru temto adresam odpovidaji parametry S-0-xxxx jen je potreba je prevezt do sestnackove soustavy a doplnit ostatni udaje (format, pozici ,velikost, typ promenne)
napriklad bunka pro informaci o pozici ma adresu S-0- 0047 tedy 47 decimalne a te odpovida v linuxcnc xml souboru 0x002F hexa

k parapetrum typu P-x-xxxx se da dostat podobne jen s tim že pripocteme 2^15
takže třeba čtení analogového vstupu 1 na adrese P-0-0210 nebo jeho pridani do datagramu nalezneme jeho hodnotu tak že 210+32768 převedeno na hexa je
0x80D2
tim padem zaznam datagramu v xml pro linuxcnc bude vypadat takto
<pdoEntry idx="80D2" subIdx="00" bitLen="16" halPin="Analog-in-1" halType="s32"/>


pekne je to popsane v tomto dokumentu.
https://docs.google.com/document/d/1GiB ... -THNM/edit

ze ktereho jsem cerpal vetsinu informaci o prevodu xml na xml.
Pro ty zdatnejsi je tu druha moznost a to prepsat parsovaci cast zdrojaku tak, aby umely pouzit xml od vyrobce. :-) pochybuju ze by to nekdo dopsal.

Takhle vypada muj posledni konfig
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="2">

<slave idx="0" type="generic" vid="00000024" pid="00242804" configPdos="true">
<syncManager idx="0" dir="out">
</syncManager>
<syncManager idx="1" dir="in">
</syncManager>
<syncManager idx="2" dir="out">
<pdo idx="0018">
<pdoEntry idx="0086" subIdx="00" bitLen="16" halPin="drivecontrol" halType="bit"/>
<pdoEntry idx="002f" subIdx="00" bitLen="32" halPin="poscommand" halType="float"/>
<pdoEntry idx="0091" subIdx="00" bitLen="16" halPin="signalcontrol" halType="bit"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="0010">
<pdoEntry idx="0087" subIdx="00" bitLen="16" halPin="drivestatus" halType="bit"/>
<pdoEntry idx="0033" subIdx="00" bitLen="32" halPin="pos" halType="float"/>
<pdoEntry idx="0028" subIdx="00" bitLen="32" halPin="speed" halType="s32"/>
<pdoEntry idx="0054" subIdx="00" bitLen="16" halPin="torque" halType="s32"/>
<pdoEntry idx="0090" subIdx="00" bitLen="16" halPin="signalstatus" halType="bit"/>

</pdo>
</syncManager>

<dcConf assignActivate="500" sync0Cycle="*1" sync0Shift="250000"/>
<watchdog divider="2498" intervals="1000"/>
</slave>
</master>
</masters>

červené řádky nejsou pro prvotni rozběhání potřebné, přidal jsem je pro kontrolu momentu a daslich veci.
Samozrejme toby mel odpovidat i telegram na strane driveru parametry S-0-0016 a S-0-0024 AT MDT


4. instalace EtherCATu pod linux
Pouzity system
Linux linuxcnc 3.4-9-rtai-686-pae #1 SMP PREEMPT Debian 3.4.55-4linuxcnc i686 GNU/Linux
nainstalovany LINUXCNC - 2.7.0
po update systemu z update manageru
LINUXCNC - 2.7.8



http://www.etherlab.org/download/etherc ... .2.tar.bz2" onclick="window.open(this.href);return false;
tar xvfj ethercat-1.5.2.tar.bz2
rozbaleno do ethercat-1.5.2


git clone https://github.com/sittner/ec-debianize.git" onclick="window.open(this.href);return false;

vznikne adresar ec-debianize a vnem podstany adresa debian, ktery je potreba nakopirovat do adresare ethercat-1.5.2
prepnout se do adresare ethercat-1.5.2/debian a s pustit kompilaci baliku


cd ethercat-1.5.2/debian
./configure -a
vypise neco jako "successfully configured for 'Debian-7.9'-'3.4-9-rtai-686-pae'.."
cd ..
dpkg-checkbuilddeps (naintalovat chybejici baliky, me chybi dpatch)
sudo apt-get install dpatch
dpkg-buildpackage (ted to bude chvili kompilovat a nakonec vzniknou o adresar nahoru baliky etherlabmaster_1.5.2+hg4b0b90_i386.deb a etherlabmaster-dev_1.5.2+hg4b0b90_i386.deb ktere posleze nainstalujem)
cd ..
sudo dpkg -i etherlabmaster_1.5.2+hg4b0b90_i386.deb
sudo dpkg -i etherlabmaster-dev_1.5.2+hg4b0b90_i386.deb

to naistaluje baliky, ale jeste je potreba neco dodelat.

/etc/default/ethercat zeditujeme
doplnit MAC adresu
treba
sudo ifconfig

MASTER0_DEVICE="00:21:9b:52:05:89" samozrejme tu vasi
DEVICE_MODULES="generic"

nyni je potreba tuto konfiguraci podvrhnout zavadecimu modulu
sudo /usr/sbin/update-ethercat-config
neudela nic jinehonez ze MAC nahrne do /etc/modprobe.d/ethercat.conf
.....Updating EtherCAT master confiuration
......update-initramfs: Generating /boot/initrd.img-3.4-9-rtai-686-pae

nyni by po restartu mel byt zaveden modul pro EtherCAT komunikaci a mel by vytvorit zarizeni /dev/EtherCAT0
sitova karta normalne dal podporuje vse co delala doposud, takze kdyz bude mit drat s internetem tak normalne pobezi.
jenom prida podporu pro EtherCAT
ethercat master nam ukaze zda bezi komunikace a litaj tam nejaky pakety

k@linuxcnc:~$ ethercat master
Master0
Phase: Idle
Active: no
Slaves: 1
Ethernet devices:
Main: 00:21:9b:52:05:89 (attached)
Link: UP
Tx frames: 41263
Tx bytes: 2475812
Rx frames: 41262
Rx bytes: 2475752
Tx errors: 0
Tx frame rate [1/s]: 250 250 234
Tx rate [KByte/s]: 14.6 14.6 13.7
Rx frame rate [1/s]: 250 250 234
Rx rate [KByte/s]: 14.6 14.6 13.7
Common:
Tx frames: 41263
Tx bytes: 2475812
Rx frames: 41262
Rx bytes: 2475752
Lost frames: 0
Tx frame rate [1/s]: 250 250 234
Tx rate [KByte/s]: 14.6 14.6 13.7
Rx frame rate [1/s]: 250 250 -10185
Rx rate [KByte/s]: 14.6 14.6 -10161.8
Loss rate [1/s]: 0 0 0
Frame loss [%]: 0.0 0.0 0.0
Distributed clocks:
Reference clock: Slave 0
Application time: 0
2000-01-01 00:00:00.000000000

a stejne tak
ethercat slave vypise zda vidi nejaky zarizeni

mk@linuxcnc:~$ ethercat slave
0 3:0 PREOP + 0x00000024:0x00242804

tim mame nastavenou komunikaci ale nemuzeme ji nijak ovladat. Pokud nam to nevadi preskocime nasledujicich 10 rádku

kdyz se podivame do kompilacniho adresare tak je tam
ethercat-1.5.2/debian/tmp/etc/init.d/ethercat to je vlastni script na spousteni a zastavovani

takze nakopirovat kam patri
sudo cp /home/mk/Downloads/ethercat-1.5.2/debian/tmp/etc/init.d/ethercat /etc/init.d/ethercat
nevim proc ale script hleda konfigurak jinde nez v /etc/default/ethercat takze taky nakopirovat
sudo cp /etc/default/ethercat /etc/sysconfig/ethercat
pripadne jenom udelat symlinky

nyni muzeme modul zastavit a spustit treba prikazem
sudo service ethercat start|stop|status


Tim mame hotovou cast tykajici se komunikace EtherCat,ale jeste nemame podporu pro LINUXCNC

takze nyni potrebujem zkompilovat modul pro hal.


4.instalace hal modulu pro linuxcnc

nainstalujeme druhz deb balik kterz vynikl pri kompilaci Ethercatu. etherlabmaster-dev_1.5.2+hg4b0b90_i386.deb
dpkg -i etherlabmaster-dev_1.5.2+hg4b0b90_i386.deb

stahneme si zdrojaky z git repozitare
git clone https://github.com/sittner/linuxcnc-ethercat.git" onclick="window.open(this.href);return false;
prepneme se do adresare
cd linuxcnc-ethercat
a kompilujem
make
nasledne nainstalujem
sudo make install

to nam nakopiruje mimo jine dva potrebne soubory
userspace modul lcec_conf do adresare /usr/bin
a rt-modul lcec.ko do adresare /usr/realtime-3.4-9-rtai-686-pae/modules/linuxcnc
tady je bude linuxcnc hledat az je zavolame
a nyni to muzem vyzkouset. k tomu je potreba xml soubor, o nemz byla rec a par radku víse.
nebudu poustet cely linuxcnc ale pouze halrun a rucne natahnu par radku ktere nam na otestovani staci.


halrun
loadrt threads name1=master period1=1000000
loadusr lcec_conf ethercat_config_1_osa.xml
loadrt lcec
addf lcec.read-all master
addf lcec.write-all master

start

nyni bz mely byt videt vsechzy piny
show pin
...
Component Pins:
Owner Type Dir Value Name
8 bit IN FALSE lcec.0.3.drivecontrol-10
8 bit IN FALSE lcec.0.3.drivecontrol-11
8 bit IN FALSE lcec.0.3.drivecontrol-12
8 bit IN FALSE lcec.0.3.drivecontrol-13
8 bit IN FALSE lcec.0.3.drivecontrol-14
8 bit IN FALSE lcec.0.3.drivecontrol-15
8 float OUT 0 lcec.0.3.pos
8 float IN 0 lcec.0.3.poscommand

8 bit OUT FALSE lcec.0.3.slave-online
8 bit OUT FALSE lcec.0.3.slave-oper
8 bit OUT FALSE lcec.0.3.slave-state-init
8 bit OUT FALSE lcec.0.3.slave-state-op
8 bit OUT FALSE lcec.0.3.slave-state-preop
8 bit OUT FALSE lcec.0.3.slave-state-safeop
8 s32 OUT 0 lcec.0.3.speed
8 s32 IN 0 lcec.0.3.speedaddcommand
8 bit OUT FALSE lcec.0.all-op
8 bit OUT FALSE lcec.0.link-up
8 s32 OUT 0 lcec.0.read.time
8 u32 OUT 0x00000000 lcec.0.slaves-responding
8 bit OUT FALSE lcec.state-op
8 bit OUT FALSE lcec.state-preop
8 bit OUT FALSE lcec.state-safeop
8 s32 OUT 0 lcec.write-all.time
5 s32 OUT 0 master.time
a ted uz muzem menit operacni mod driveru.
setp lcec.0.3.drivecontrol-13 1
setp lcec.0.3.drivecontrol-14 1
setp lcec.0.3.drivecontrol-15 1





no a to je cele z hlediska linuxcnc
Tady doplnim par poznámek co se mi osvědčilo.
Vetsina zajimavych informaci je dmesg, všechny chyby a varovani, takze si v jednom okne pustim
while true;do sudo dmesg -c;done
a tim mam zajisteno, ze vidim poslední radky dmesg a pracuju v adlsim okne

Když se chci z linuxcnc podivat na nejakou hodnotu do driveru lze pouzit prikaz
ethercat soe_read -p0 'S-0-0013'
kde -p0 znamena číslo driveru. Ja mam jen jeden takze 0. Pozor není to číslo slave, ktere sviti vlevo na displaji,ale první číslo které vypise ethercat slave.
mk@debian:~$ ethercat slave
0 1:0 PREOP + 0x00000024:0x00242804
mk@debian:~$ ethercat soe_read -p0 'S-0-0016'
0x08 0x00 0x1e 0x00 0x33 0x00 0x54 0x00 0x28 0x00 0x90 0x00
Tady je vypis parametru S-0-0016 tedy Configuracni list AT prikazu datagramu.
Jsou to vždy dvojice hexa cisel kde první 4 jsou interni a další nam říká
0x33 0x00 znamena prevedeno na jedno číslo 0x0033 hex tedy 51 decimalne a to znamena S-0-0051 Position feadback.
Tady doplnim, ze jsem pouzil configurovatelny datagram,. Kde si můžete nastavit co je potřeba. Lze pouzit i prednastvene datagramy. To nam, říká parametr S-0-0015. Viz dokumentace.

Protože driver nepodporuje CoE, nepůžeme bohužel použít přikazy
ethercat pdos ani ethercat cstruct, které by ukázaly konfiguraci syncmanagera vycteneho z driveru. škoda.
takže to musíme udělat oklikou.

Dál muzeme menit mod driveru i z prikazove radky
sudo ethercat state INIT například prepne do inicializacni faze. Nepodari se vam ho zvednout az do OP protože nebude nastavena komunikace takze to vyhodi nejakou chybu na hodiny a synchronizaci.
Další uzitecna věc je stupeň debug který lze menit.
sudo ethercat debug 2 coz zvysi ukecanost do dmesg. Bohužel hodne, takze je tam pak informace o kazdem paketu. Nekdy staci uroven 1.

Nyní se vrátím, jak sem nekde před půl metrem textu sliboval, k telegramu a jak si ho postavit na strane driveru.
jako první je potřeba nastavit parametr S-0-0015 Telegram type parametr
bit 0-2 na 1
takže binarne bude vypadat treba v ethercat configuratoru takhle
00000000 00000111
Podrobnosti v manualu s parametrama
tim řekneme driveru, že ma používat vlastní konfiguraci telegramu a nyni je potrena nastrkat do S-0-0016 a s-0-0024 patřičné parametry.
v ethercat confu v záložce Process data jsou videt patřičné parametry
pak stačí vybrat nahoře At nebo MDT podle toho jestli chcete kjonfigurovat příchozí nebo odchozí data a pak dole pravou myší a insert.
v nabídce pak stačí vybrat patřičný parametr.
na obrázku je AT Analog input 1 a je tu i krasne videt decimalni i hexadecimalni hodnota parametru a take typ promenné.
timto krokem se objevi parametr datagramu i na leve strane a kdyz si ulozite soubor, tak uz nezmizi.
Na rozdil od situace kdy si parametr zadate rucne v zalozce SoE-online do S-0-0016 a S-0-0024. To taky funguje ale pri přištim spusteni configuratoru se tyto parametry ztrati. To me chvili mátlo.
add-telegram-value.jpg

Přidání digitálního vstupu do telegramu.

Telegram obsahuje vzdy mastr control word a drive status word, kde jsou (jestli sem to dobre pochopil) dva bity konfigurovatelne a je mozne si tam strcit co je potreba.
Dalsi moznost je přidat cele slovo jako Signal status word a Signal control word (jeden AT jeden MDT) kde mame k dispozici podstatne vic bitu.
ukažu to na přikladu HOME, ktery lze bud pouzit pouze jako informaci o input stavu, nebo lze (a to nebudu ukazovat) nastavit vnitrni proces driveru, kdy si houmovani vezme na sve tirko a linuxcnc se pak o nic nestara protoze si driver udela pomoci NC prikazu vse sam.
Na konektoru X31 je 8 konfigurovatelnych vstupu. Ty muzeme v indraworksu přidelit, nebo to udelame rucne v ethercat configuratoru, ale tam je to o poznani slozitejsi.
V mem driveru koukal z pinu 4 drat, tak sem ho zvolil jako home switch. jak je videt na obrazku tak dkonce sviti zelene, protoze sem ho pripojil na 24V
home switch.jpg
V pravo se pak jeste pro upresneni da nastvit patricny bit, to je dobry pro pripad, kdy nas zajima konkretni bit z celeho slova.
home switch je bitova zalezitost, takze netreba nastavovat.

Jako druhy krok je zapotřebí nejak informaci o sepnutem spinaci poslat do řídícího systemu a k tomu můžeme použít Signal status word a nastavit na bit 0 informaci o home switch.
Opet je videt ze sviti zelene a tim mame kontrolu, že home switch funguje a je namapovany na bit 0
home switch-status-w.jpg
Takhle si mužeme do systemu posílat co se nám zrovna hodí. Samozřejme za předpokladu, že telegram obsahuje na obou stranach S-0-0144 Signal status word. a pro obrácenou komunikaci ze systemu do driveru pak analogicky S-0-0145 Signal control word. Tim napriklad muzeme informovat driver aby se nahoumoval.



Berte to pouze jako hruby souhr informaci kde zdaleka není všechno.
Muzete si dodefinovat další řídicí a kontrolni slova v datagramu jako status control word a signal control word do kterých lze nastrkat například houmovani osy, a podobne věci.

Tenhle návod ještě není definitivní a ještě ho v případě zájmu doupravím, ale postupně. dneska už sem uplně vypsanej.

Martin
Naposledy upravil(a) fupe dne 25. 10. 2017, 8:54, celkem upraveno 4 x.
Monteg
Příspěvky: 1480
Registrován: 30. 10. 2006, 5:37
Bydliště: LOUNY

23. 3. 2017, 7:01

Hm tak tohle je dost dobrý - Děkuji :D
lubos
Sponzor fora
Příspěvky: 5088
Registrován: 2. 5. 2007, 3:47
Bydliště: Praha

23. 3. 2017, 8:15

Pěkné počtení.
Jak je to pak s nějou I/O kartou, případně analog výstupem? Je nějaká karta rozumně dostupná?
XpertMill, Gravos, Ninos, Galaad
IQ156
-1500Kč, -520Kč, -1čokoláda, - 28000Kč
www.freeair.cz www.rotexelectric.eu www.retrofitcnc.cz
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22371
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

23. 3. 2017, 10:57

Ano
Profcom
Vsechna prava na chyby vyhrazena (E)
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

23. 3. 2017, 2:26

V mezičase sem nahrubo nastudoval jak přidat digitalni vstupy, jak je přiřadit třeba k home a jak je přenašet pomoci status wordu do linuxcnc, pak sem si uvědomil, že sem nedopsal čast jak si nakonfigurovat user telegram a jak do nej nahazet potřebné parametryi, tak až bude chvile tak to dopíšu.
M
3pajky
Příspěvky: 217
Registrován: 26. 12. 2015, 7:22

23. 3. 2017, 7:27

Cau, super clanok. Mohol by si sa zamerat na detajli?
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

23. 3. 2017, 9:29

3pajky píše:Cau, super clanok. Mohol by si sa zamerat na detajli?
No jasne, co konkretne by te zajimalo?
M
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

24. 3. 2017, 1:04

Přidal sem informaci jak konfigurovat vlastni telegram (datagram) a jak nastavit digitalni IO popřipadě analog vstup a jak prenest tyto data do systemu.
Martin
testone
Sponzor fora
Příspěvky: 7174
Registrován: 3. 12. 2010, 5:56
Bydliště: Slaný

24. 3. 2017, 1:16

bomba
díky
Obvykle se dějí věci obvyklé. Méně často se dějí věci neobvyklé a zcela vyjímečně se dějí věci vyjímečné...
Masturn 40 CNC, Hermle UWF1200H CNC a pár klasik
http://www.radialengine.cz" onclick="window.open(this.href);return false;
http://www.autopejsek.cz" onclick="window.open(this.href);return false;
3pajky
Příspěvky: 217
Registrován: 26. 12. 2015, 7:22

24. 3. 2017, 6:45

V ethercat konfiguratore sa neviem prepnut z Init do Op, chyba 0x0004 a 0x0012. Na beckhoff som nasiel ze sa takto bude spravat ak nesedia Pdo datagrami s Hw, alebo Sw, tak predpokladam ze mam chybu ze nemam nastaveny operacny mod pozicna smicka s enkoderom 1, tak som to zmenil, ale menic to odmietol a bola kopa hodin, tak uz som v tom nevrtal, snad je chyba tam a pojde to prepnut.
Aky balik modu menica pouzivas? Basic, servo, synchronizacia, vreteno?
Nebude problem s tym ze menic podla toho co som pozeral ma len 32bit synchronizaciu DC?
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

24. 3. 2017, 8:59

3pajky píše:V ethercat konfiguratore sa neviem prepnut z Init do Op, chyba 0x0004 a 0x0012. Na beckhoff som nasiel ze sa takto bude spravat ak nesedia Pdo datagrami s Hw, alebo Sw, tak predpokladam ze mam chybu ze nemam nastaveny operacny mod pozicna smicka s enkoderom 1, tak som to zmenil, ale menic to odmietol a bola kopa hodin, tak uz som v tom nevrtal, snad je chyba tam a pojde to prepnut.
Aky balik modu menica pouzivas? Basic, servo, synchronizacia, vreteno?
Nebude problem s tym ze menic podla toho co som pozeral ma len 32bit synchronizaciu DC?
V 32bit hodinach urcite problem neni. Muj (robokopuv) driver ma taky 32bitovy hodiny a jede.
Uplne nerozumim drube otazce s tim modem. Na co konkretne se ptas?
Zkus trochu popsat tvoje parametry. Driver, motor, atd.
Dokazes s tim tocit treba z indraworksu? Ja mel asi 20chyb, nez sem to prepnul, nektery byly trivialni a nektery zabraly hodiny, protoze sem netusil co znamenaj.
A nektery byly uplbe divny, stacilo zmenit hodnotu, ktera odpovidala manualu na neco neco jineho a zase zpet a najednou bylo po chybe.
M
3pajky
Příspěvky: 217
Registrován: 26. 12. 2015, 7:22

24. 3. 2017, 9:58

Niesom teraz doma, ale menic bude ten isty. S motorom uz tocim, este to nieje dokonale, ale to uz doladim na stroji... Cez indraworks, easi startup.
Neviem ako je to s tym registrom Dc, 32bit je vraj na 4,2sekundy a 64bit na cez 500 rokov. Ale co to znamena pre mna neviem, zatial som s tymto problem nemal, len sa pytam..

V indraworkse v stromovej strukture prva, alebo druha polozka ak na nu kliknes pravim tlacitkom, tak tam mas moznost zmenit balicek aky bude menic pouzivat. Tak ze ktory pouzivas..

Ja som si uz tiez uzil svoje s touto hracickou, tak snad to bude stat zato.
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

25. 3. 2017, 3:24

3pajky píše: V indraworkse v stromovej strukture prva, alebo druha polozka ak na nu kliknes pravim tlacitkom, tak tam mas moznost zmenit balicek aky bude menic pouzivat. Tak ze ktory pouzivas..
Az budes u stroje udelej screenshot. furt nevim,co myslis. Mozna sem to nastavoval zbytecne slozite.
Taky me nejdriv zmatlo, ze driver pouziva field bus a pro nej jiny ridici a kontrolni slova nekde kolem 4070 myslim oproti etherctu a sercosuIII
jediny co jsem vybiral v indraworksu bylo jestli pouzit encoder na motoru, nebo externi a podobny veci.
M
Mex
Příspěvky: 10288
Registrován: 6. 2. 2014, 10:29

25. 3. 2017, 3:51

Tak tohle je hodně dobrý počin :-)
Velký dík za Tvé know-how a navíc za spoustu práce, kterou jsi do toho popisu vložil.
Za to bys zasloužil pochvalu před rozvinutou bojovou zástavou.
3pajky
Příspěvky: 217
Registrován: 26. 12. 2015, 7:22

26. 3. 2017, 4:29

prikladam foto kadial sa dostanes k vyberu toho balika.
pocuj, mas nastaveny operacny mod-position control,encoder1? ked to nastavim, tak neviem prepnut menic do OM. preco?
Přílohy
Clipboard01.jpg
Odpovědět

Zpět na „LinuxCNC - drive pod nazvem EMC2“