東莞市遠(yuǎn)控自動(dòng)化控制技術(shù)有限公司 ?
產(chǎn)品選型指導(dǎo) 資料下載 產(chǎn)品定制 18676950315
2023-05-23 責(zé)任編輯: 熱站網(wǎng) 1548
《XPLC006E功能簡(jiǎn)介》
XPLC006E是正運(yùn)動(dòng)運(yùn)動(dòng)控制器推出的一款多軸經(jīng)濟(jì)型EtherCAT總線運(yùn)動(dòng)控制器,XPLC系列運(yùn)動(dòng)控制器可應(yīng)用于各種需要脫機(jī)或聯(lián)機(jī)運(yùn)行的場(chǎng)合。
XPLC006E自帶6個(gè)電機(jī)軸,最多12軸運(yùn)動(dòng)控制(含虛擬軸數(shù)),支持12軸直線插補(bǔ)、電子凸輪、電子齒輪、同步跟隨、虛擬軸設(shè)置等功能。
XPLC006E支持多任務(wù)同時(shí)運(yùn)行,同時(shí)可以在PC上直接仿真運(yùn)行,編程方式多種可選,支持ZDevelop軟件的Basic/PLC梯形圖/HMI組態(tài)和常用上位機(jī)軟件編程。
XPLC006E只支持EtherCAT總線軸,不支持脈沖軸和編碼器軸。采用EtherCAT總線與驅(qū)動(dòng)器通訊,1ms的刷新周期。
XPLC006E支持PLC、Basic、HMI組態(tài)三種編程方式。PC上位機(jī)API編程支持C#、C++、LabVIEW、VB、matlab、Qt、Linux、.Net、iMAC、Python、 ROS等接口。
→此款產(chǎn)品有XPLC004E、XPLC006E、XPLC008E三個(gè)不同軸數(shù)的型號(hào)可選。
《XPLC864E功能簡(jiǎn)介》
XPLC864E在XPLC006E的功能基礎(chǔ)上做了升級(jí)(即上節(jié)介紹的XPLC006E的功能都支持),部分資源空間優(yōu)于XPLC006E,使用方法基本一致,不同之處在于XPLC864E,硬件支持32點(diǎn)輸入、32點(diǎn)輸出、2個(gè)ADC、2個(gè)DAC,支持脈沖軸和總線軸混合使用,總實(shí)軸軸數(shù)為8,除了帶EtherCAT接口之外,輸出口硬件上可配置為8個(gè)軸的脈沖方向信號(hào)輸出,另帶兩路編碼器輸入,可由輸入口配置
XPLC864E支持PLC、Basic、HMI組態(tài)三種編程方式。PC上位機(jī)API編程支持C#、C++、LabVIEW、VB、matlab、Qt、Linux、.Net、iMAC、Python、 ROS等接口。
一、通訊接線
1.EtherCAT總線接線
使用一根網(wǎng)線將XPLC006E控制器的“EtherCAT總線端口”與“伺服驅(qū)動(dòng)器的EtherCAT總線端口”相連即可。
注意:伺服驅(qū)動(dòng)器的EtherCAT接口有兩個(gè),有些驅(qū)動(dòng)器這兩個(gè)口可以隨意接,有些分為“EtherCAT IN”和“EtherCAT OUT”,IN口接上一級(jí)設(shè)備,OUT口接下一級(jí)設(shè)備,二者不能混用,要注意連接順序。
多軸控制時(shí)伺服驅(qū)動(dòng)器的EtherCAT OUT口再連接下一級(jí)驅(qū)動(dòng)設(shè)備的EtherCAT IN口,依此類(lèi)推。
slot槽位編號(hào)、node節(jié)點(diǎn)編號(hào)和驅(qū)動(dòng)器編號(hào)規(guī)則如上圖所示,EtherCAT總線接口的槽位號(hào)默認(rèn)是0,節(jié)點(diǎn)編號(hào)按照與控制器的連接先后順序從0開(kāi)始依次編號(hào),驅(qū)動(dòng)器編號(hào)則是只給帶電機(jī)設(shè)備編號(hào),其他類(lèi)型設(shè)備忽略,也是按連接順序從0開(kāi)始編號(hào),這些編號(hào)在總線指令中將會(huì)用到。
硬件接線完成還需運(yùn)行總線初始化程序才能與驅(qū)動(dòng)器通訊,初始化模板程序參見(jiàn)下文。
注意:使用EtherCAT總線擴(kuò)展模塊時(shí),也要執(zhí)行總線初始化操作,再映射IO的編號(hào)后才可操作擴(kuò)展IO。
2.控制器與電腦連接
控制器與電腦可以通過(guò)串口或網(wǎng)口連接,下面以網(wǎng)口連接例展開(kāi)說(shuō)明。
先將控制器與電腦用一根網(wǎng)線連接好,接通控制器的電源,再打開(kāi)ZDevelop編程軟件,點(diǎn)擊菜單欄“控制器”→“連接”,打開(kāi)“連接到控制器”窗口。
通過(guò)“連接到控制器”窗口,可以快速查看本機(jī)IP,對(duì)比控制器與電腦是否處于同一網(wǎng)段。
IP地址列表下拉選擇時(shí),會(huì)自動(dòng)查找當(dāng)前局域網(wǎng)可用的控制器IP地址(控制器上電POWER燈和RUN燈亮的時(shí)候就能查找到該控制器的IP地址)。
同一個(gè)網(wǎng)絡(luò)有多個(gè)控制器的時(shí)候,IP的下拉列表若沒(méi)有顯示目標(biāo)控制器的IP地址,可以采取IP掃描來(lái)查看當(dāng)前所有可用的控制器IP地址,掃描完成之后確定關(guān)閉此窗口,重新在IP下拉列表選擇。
選擇正確的IP地址,點(diǎn)擊連接之后,連接成功或失敗均有信息提示。
控制器出廠的缺省IP地址為192.168.0.11,“連接到控制器”窗口能顯示出本機(jī)IP地址,請(qǐng)注意設(shè)置有線網(wǎng)卡與無(wú)線網(wǎng)卡各自的IP。電腦需要設(shè)置IP地址與控制器IP處于同一網(wǎng)段才能連接,即四段的前三段要相同,最后一段不同才能通訊。
若控制器與電腦不處于同一網(wǎng)段,則需要修改控制器或電腦其中之一的IP地址,使二者處于同一網(wǎng)段。
若控制器IP地址遺忘,可通過(guò)網(wǎng)口連接控制器,再獲取控制器IP。
二、EtherCAT總線驅(qū)動(dòng)器通訊說(shuō)明
1.通訊周期
使用EtherCAT伺服驅(qū)動(dòng)器時(shí)需要保證控制器與伺服周期一致才可正常通訊使用。
EtherCAT伺服驅(qū)動(dòng)器一般支持不同周期,通訊周期主要有250us,500us,1ms,2ms,4ms,連接時(shí)自動(dòng)匹配控制器周期,不需要設(shè)置,當(dāng)通訊周期無(wú)法自動(dòng)匹配時(shí),通訊失敗,通過(guò)修改控制器周期解決(SERVO_PERIOD指令或升級(jí)固件修改)。
控制器一般默認(rèn)為1ms,使用SERVO_PERIOD指令讀取控制器周期。伺服周期越小,位置控制越精細(xì),響應(yīng)速度也更快。
驅(qū)動(dòng)器的PDO是必要的配置,代表著當(dāng)前驅(qū)動(dòng)器包含的功能。
PDO全名為(Process Data Object),指在EtherCAT總線網(wǎng)絡(luò)中周期的進(jìn)行主站與從站的數(shù)據(jù)交互的功能,可以看作一個(gè)數(shù)組空間,每個(gè)數(shù)組元素存放了不同的功能碼,PDO在一個(gè)周期中執(zhí)行這些功能碼對(duì)應(yīng)的操作,這些功能碼就叫做數(shù)據(jù)字典,數(shù)據(jù)字典用4位16進(jìn)制數(shù)來(lái)表示。
如6040h控制字(用于控制伺服軸的使能、啟動(dòng)、停止、報(bào)警、復(fù)位等運(yùn)行狀態(tài)),每個(gè)數(shù)據(jù)字典Index可包含32個(gè)子字典Sub-Index。數(shù)據(jù)字典的功能和初始值查看驅(qū)動(dòng)器手冊(cè)的描述。
數(shù)據(jù)字典的編號(hào)及功能是協(xié)議本身就確定好的,用戶只需按照數(shù)據(jù)字典的描述設(shè)置數(shù)據(jù)字典的bit位,所有的標(biāo)準(zhǔn)EtherCAT設(shè)備都使用一套數(shù)據(jù)字典。
松下A6B伺服驅(qū)動(dòng)器的EtherCAT相關(guān)說(shuō)明內(nèi)容可查看松下文檔《技術(shù)資料-EtherCAT通訊規(guī)格篇》。
EtherCAT初始化過(guò)程中必須進(jìn)行驅(qū)動(dòng)器PDO配置,“DRIVE_PROFILE”指令配置驅(qū)動(dòng)器的PDO列表,目前提供約20幾種配置選擇,每種配置包含哪些數(shù)據(jù)字典查看該指令說(shuō)明確認(rèn),如下圖,具體內(nèi)容可以在《ZBasic編程手冊(cè)》中查看。
DRIVE_PROFILE=-1表示驅(qū)動(dòng)器的內(nèi)置缺省PDO列表,驅(qū)動(dòng)器內(nèi)置PDO列表包含哪些數(shù)據(jù)字典需要查看驅(qū)動(dòng)器手冊(cè)。
DRIVE_PROFILE已有的配置不能滿足需求就自定義PDO,采用SDO相關(guān)指令操作數(shù)據(jù)字典配置驅(qū)動(dòng)器需要的PDO。
驅(qū)動(dòng)器的相關(guān)參數(shù)修改,同樣使用SDO指令讀寫(xiě)對(duì)應(yīng)的數(shù)據(jù)字典進(jìn)行配置或通過(guò)驅(qū)動(dòng)器軟件修改。SDO指令包含數(shù)據(jù)字典讀取“SDO_READ”、“SDO_READ_AXIS”和數(shù)據(jù)字典寫(xiě)入“SDO_WRITE”、“SDO_WRITE_AXIS”。
(1)數(shù)據(jù)字典讀取語(yǔ)法
SDO_READ (槽位號(hào), 設(shè)備編號(hào), 數(shù)據(jù)字典編號(hào), 數(shù)據(jù)字典子編號(hào), 數(shù)據(jù)類(lèi)型, 讀取數(shù)據(jù)存儲(chǔ)TABLE位置)
SDO_READ_AXIS (軸號(hào), 數(shù)據(jù)字典編號(hào), 數(shù)據(jù)字典子編號(hào), 數(shù)據(jù)類(lèi)型, 讀取數(shù)據(jù)存儲(chǔ)TABLE位置)
(2)數(shù)據(jù)字典寫(xiě)入語(yǔ)法
SDO_WRITE (槽位號(hào), 設(shè)備編號(hào), 數(shù)據(jù)字典編號(hào), 數(shù)據(jù)字典子編號(hào), 數(shù)據(jù)類(lèi)型, 寫(xiě)入數(shù)據(jù)值)
SDO_WRITE_AXIS (軸號(hào), 數(shù)據(jù)字典編號(hào), 數(shù)據(jù)字典子編號(hào), 數(shù)據(jù)類(lèi)型, 寫(xiě)入數(shù)據(jù)值)
自定義PDO的配置方法請(qǐng)咨詢正運(yùn)動(dòng)的銷(xiāo)售工程師或者技術(shù)工程師。
可使用驅(qū)動(dòng)器軟件修改,或控制器端操作SDO指令修改。修改驅(qū)動(dòng)器參數(shù)先連接驅(qū)動(dòng)器,可選USB線或WLAN連接驅(qū)動(dòng)器,使用USB線連接電腦與驅(qū)動(dòng)器端的X1端口,給驅(qū)動(dòng)器上電。
打開(kāi)松下驅(qū)動(dòng)器軟件PANATERM,彈出“選擇與驅(qū)動(dòng)器通信”窗口,選擇與驅(qū)動(dòng)器通過(guò)USB連接后,自動(dòng)獲取到驅(qū)動(dòng)器信息顯示在窗口內(nèi),點(diǎn)擊OK連接成功,就能對(duì)驅(qū)動(dòng)器進(jìn)行設(shè)置。
點(diǎn)擊菜單欄“顯示”→“對(duì)象編輯器”,打開(kāi)如下窗口,找到需要設(shè)置的數(shù)據(jù)字典,在“Setting Value”一欄直接修改數(shù)據(jù)字典的內(nèi)容。
修改完成將參數(shù)傳送給驅(qū)動(dòng)器,并寫(xiě)入驅(qū)動(dòng)器的EEPROM,驅(qū)動(dòng)器再次上電后參數(shù)生效。
例:設(shè)置UNITS脈沖當(dāng)量,即設(shè)置電機(jī)轉(zhuǎn)一圈需要發(fā)送多少個(gè)脈沖。
SPEED速度、ACCEL加速度、DECEL減速度和運(yùn)動(dòng)指令等都是以UNITS為基本單位。
如上圖,通過(guò)數(shù)字字典6091h設(shè)置電子齒輪比,6091h-01h設(shè)置電子齒輪比分子,6091h-02h設(shè)置電子齒輪比分母,此時(shí),電子齒輪比=1/1,6092h-01h設(shè)為10000表示給電機(jī)發(fā)10000個(gè)脈沖能使電機(jī)旋轉(zhuǎn)一圈,對(duì)應(yīng)的脈沖當(dāng)量UNITS=10000,MOVE(2)表示給電機(jī)發(fā)送20000個(gè)脈沖,此時(shí)電機(jī)轉(zhuǎn)兩圈。
或者使用SDO指令讀寫(xiě)數(shù)據(jù)字典修改參數(shù)。修改完成使用驅(qū)動(dòng)器軟件讀取6092h-01h的值為10000。
示例:
SDO_WRITE(Bus_Slot,iNode,$6091,1,7,1) '電子齒輪比分子
SDO_WRITE(Bus_Slot,iNode,$6091,2,7,1) '電子齒輪比分母
SDO_WRITE(Bus_Slot,iNode,$6092,1,7,10000) '電機(jī)一圈脈沖數(shù)
若要使用驅(qū)動(dòng)器的IO口,才會(huì)涉及到驅(qū)動(dòng)器的IO映射操作,否則忽略。當(dāng)驅(qū)動(dòng)器產(chǎn)生IO報(bào)警時(shí),可根據(jù)驅(qū)動(dòng)器手冊(cè)的提示,修改IO的設(shè)定值。
驅(qū)動(dòng)器自身有輸入信號(hào),作用為保護(hù)信號(hào),默認(rèn)使能狀態(tài),若不接入外部信號(hào),驅(qū)動(dòng)器就會(huì)保護(hù)報(bào)錯(cuò),調(diào)試階段可以關(guān)閉這些信號(hào)方便調(diào)試,將輸入值設(shè)置為0即可,需要使用驅(qū)動(dòng)器IO時(shí)要對(duì)驅(qū)動(dòng)器的IO編號(hào)映射后才能使用,后續(xù)根據(jù)實(shí)際需求接入實(shí)際信號(hào)。
點(diǎn)擊驅(qū)動(dòng)器軟件PANATERM主界面的“參數(shù)”按鈕打開(kāi)下方窗口,選中要修改的IO信號(hào)后,在“設(shè)定值”一欄修改。
驅(qū)動(dòng)器IO映射需要PDO包含數(shù)據(jù)字典60FDh,然后使用DRIVE_IO指令設(shè)置驅(qū)動(dòng)器IO地址,映射的編號(hào)范圍不要與總線上的其他設(shè)備的IO編號(hào)重復(fù)。
DRIVE_IO (軸號(hào))=輸入輸出IO起始編號(hào)。
示例:
DRIVE_PROFILE(iAxis) = 5 '設(shè)定對(duì)應(yīng)的帶IO映射的PDO模式
DRIVE_IO(iAxis) = i_IoNum '設(shè)定驅(qū)動(dòng)器輸入/輸出IO起始編號(hào)
5.參數(shù)寫(xiě)入驅(qū)動(dòng)器
可使用驅(qū)動(dòng)器軟件修改,或控制器端操作SDO指令修改。
驅(qū)動(dòng)器的數(shù)據(jù)字典參數(shù)或其他的參數(shù)設(shè)置完成后,先點(diǎn)擊“傳送”將修改的全部參數(shù)傳入驅(qū)動(dòng)器,再點(diǎn)擊EEP,將參數(shù)寫(xiě)入驅(qū)動(dòng)器的EEPROM,給驅(qū)動(dòng)器重新上電后修改的參數(shù)生效,圖片上值修改了輸入?yún)?shù),在上圖參數(shù)一覽中可參看多中類(lèi)別的參數(shù)并修改。
6.驅(qū)動(dòng)器軸號(hào)映射
EtherCAT總線驅(qū)動(dòng)電機(jī)設(shè)備連上控制器之后,驅(qū)動(dòng)器軸號(hào)需要使用指令映射綁定。
EtherCAT總線上連接的設(shè)備的設(shè)備號(hào)按照連接順序從0開(kāi)始自動(dòng)編號(hào),驅(qū)動(dòng)器編號(hào)也是按連接順序給驅(qū)動(dòng)器設(shè)備自動(dòng)從0開(kāi)始編號(hào)的,只算總線上的驅(qū)動(dòng)器設(shè)備,其他設(shè)備是沒(méi)有驅(qū)動(dòng)器編號(hào)的。
EtherCAT總線上連接的驅(qū)動(dòng)器需要使用指令映射驅(qū)動(dòng)器的軸號(hào),使用AXIS_ADDRESS 指令映射,映射完成之后才能使用BASE指令選擇驅(qū)動(dòng)器軸號(hào),發(fā)送脈沖,控制驅(qū)動(dòng)器所連的電機(jī)運(yùn)行。
軸映射寫(xiě)在總線初始化程序中,總線掃描之后,開(kāi)啟總線之前。
語(yǔ)法:AXIS_ADDRESS(軸號(hào))=(槽位號(hào)<<16)+驅(qū)動(dòng)器編號(hào)+1
EtherCAT總線的槽位號(hào)是0。軸號(hào)為驅(qū)動(dòng)器映射的目標(biāo)軸號(hào),映射時(shí)每個(gè)驅(qū)動(dòng)器的軸號(hào)不重復(fù),指向空閑軸號(hào)即可。
示例:
AXIS_ADDRESS (6)=(0<<16)+0+1 '第一個(gè)ECAT驅(qū)動(dòng)器,驅(qū)動(dòng)器編號(hào)0,綁定為軸6
AXIS_ADDRESS (7)=(0<<16)+1+1 '第二個(gè)ECAT驅(qū)動(dòng)器,驅(qū)動(dòng)器編號(hào)1,綁定為軸7
AXIS_ADDRESS (8)=(0<<16)+2+1 '第三個(gè)ECAT驅(qū)動(dòng)器,驅(qū)動(dòng)器編號(hào)2,綁定為軸8
ATYPE(6)=65 '設(shè)置為ECAT軸類(lèi)型,65-位置 66-速度 67-轉(zhuǎn)矩
ATYPE(7)=65
ATYPE(8)=65
7.驅(qū)動(dòng)器控制模式
EtherCAT驅(qū)動(dòng)器一般有三種控制模式,分別為CSP周期位置模式,CSV周期速度模式,CST周期力矩模式。提供ATYPE指令設(shè)置控制模式。
CSP,CSV,CST模式的設(shè)置需要預(yù)先設(shè)置PDO,PDO同時(shí)包含下方數(shù)據(jù)字典時(shí),即可直接修改ATYPE數(shù)值進(jìn)行模式切換。驅(qū)動(dòng)器默認(rèn)PDO列表內(nèi)置有哪些數(shù)據(jù)字典需要查看驅(qū)動(dòng)器手冊(cè)確定。
(1)當(dāng)PDO包含607Ah時(shí),ATYPE可設(shè)置為65,周期位置模式,此時(shí)使用運(yùn)動(dòng)指令控制電機(jī)運(yùn)動(dòng)。
(2)當(dāng)PDO包含60FFh時(shí),ATYPE可設(shè)置為66,周期速度模式,此時(shí)使用DAC指令控制電機(jī)以設(shè)置值的速度運(yùn)行,速度單位有兩個(gè),脈沖數(shù)/S和R/MIN,有驅(qū)動(dòng)器確定,使用時(shí)先給較小的數(shù)值,觀察電機(jī)速度情況,再加大。
(3)當(dāng)PDO包含6071h時(shí),ATYPE可設(shè)置為67,周期力矩模式,此時(shí)使用DAC指令控制電機(jī)以設(shè)置值的力矩運(yùn)行,DAC值范圍0-1000,對(duì)應(yīng)0-100%的6071設(shè)置值,比如DAC=10,此時(shí)電機(jī)力矩=1%的6071h值。
注意:速度模式和力矩模式切換時(shí),先將DAC=0后,再修改ATYPE,防止出現(xiàn)事故。
A.位置模式:ATYPE=65
將DRIVE_PROFILE配置為帶位置的模式1,ATYPE=66,執(zhí)行總線初始化程序后,設(shè)置軸的UNITS、SPEED等運(yùn)行參數(shù),使用運(yùn)動(dòng)指令給電機(jī)發(fā)脈沖控制軸的運(yùn)行,注意試運(yùn)行時(shí)SPEED的值不要設(shè)置過(guò)大。
位置模式也是實(shí)際過(guò)程中用的較多的一種模式,運(yùn)行效果參見(jiàn)后續(xù)章節(jié)。
B.速度模式:ATYPE=66
將DRIVE_PROFILE配置為帶速度的模式22,ATYPE=66,執(zhí)行總線初始化程序后,在線命令欄發(fā)送DAC指令即可控制電機(jī)運(yùn)行,如下圖,DAC=5000表示電機(jī)以每秒5000個(gè)脈沖的速度持續(xù)運(yùn)行,DAC命令發(fā)送后電機(jī)一直運(yùn)行,要提高運(yùn)行速度將DAC的值加大,DAC的值太小電機(jī)會(huì)克服不了摩擦力無(wú)法轉(zhuǎn)動(dòng)。
注意:出于安全因素考慮,DAC不要設(shè)置過(guò)大,先設(shè)置一個(gè)較小值,觀察電機(jī)運(yùn)行情況后慢慢往上增加。此模式下停止電機(jī)在線命令發(fā)送DAC=0即可,或按下軟件的緊急停止按鈕。
C.力矩模式:ATYPE=67
將DRIVE_PROFILE配置為帶力矩的模式30,ATYPE=67,執(zhí)行總線初始化程序后,在線命令欄發(fā)送DAC指令即可控制電機(jī)運(yùn)行。如下圖,DAC=30,當(dāng)前驅(qū)動(dòng)器為0.03的力矩,DAC等于1000時(shí)表示100%力矩。要提高運(yùn)行速度將DAC的值加大,DAC的值太小電機(jī)會(huì)克服不了摩擦力無(wú)法轉(zhuǎn)動(dòng)。
注意:出于安全因素考慮,DAC不要設(shè)置過(guò)大,先設(shè)置一個(gè)較小值,觀察電機(jī)運(yùn)行情況后慢慢往上增加。此模式下停止電機(jī)在線命令發(fā)送DAC=0即可,或按下軟件的緊急停止按鈕。
8.驅(qū)動(dòng)器報(bào)警
觀察驅(qū)動(dòng)器上LED面板上是否有報(bào)錯(cuò)信息,報(bào)錯(cuò)會(huì)顯示錯(cuò)誤碼,根據(jù)驅(qū)動(dòng)器手冊(cè)排查錯(cuò)誤,修正后將報(bào)警清零。
打開(kāi)驅(qū)動(dòng)器軟件的警報(bào)窗口,也能看當(dāng)前驅(qū)動(dòng)器是否有警報(bào),或查詢歷史警報(bào)。
歷史警報(bào)信息
初始化過(guò)程中按軸號(hào)清除驅(qū)動(dòng)器的錯(cuò)誤,重復(fù)調(diào)用DRIVE_CLEAR指令清除多個(gè)驅(qū)動(dòng)器錯(cuò)誤。
語(yǔ)法:DRIVE_CLEAR(模式值)
模式值0-清除當(dāng)前告警,1-清除歷史告警,2-清除外部輸入告警。
示例:
BASE(i)
DRIVE_CLEAR(0) '清除驅(qū)動(dòng)器錯(cuò)誤
DELAY 50
DATUM(0) '清除控制器軸狀態(tài)錯(cuò)誤"
DELAY 100
9.驅(qū)動(dòng)器回零
EtherCAT總線可使用控制器提供的回零方式DATUM(mode),mode模式值選擇查看ZBasic編程手冊(cè)的DATUM指令。EtherCAT總線也可以使用驅(qū)動(dòng)器本身的回零模式。
驅(qū)動(dòng)器本身回零使用DATUM(21,mode2)指令,mode2模式值要查驅(qū)動(dòng)器手冊(cè)數(shù)據(jù)字典6098h回零模式,如下圖所示,mode2填入對(duì)應(yīng)Value值,mode2缺省值為0,也是驅(qū)動(dòng)器回零模式,注意此時(shí)的原點(diǎn)限位等信號(hào)要接在驅(qū)動(dòng)器上,所以要使用驅(qū)動(dòng)器回零時(shí)需要對(duì)驅(qū)動(dòng)器的IO進(jìn)行映射。
示例:初始化完成后再運(yùn)行驅(qū)動(dòng)器回零程序。
BASE(iAxis) '按驅(qū)動(dòng)器軸號(hào)逐個(gè)回零
AXIS_STOPREASON = 0
SPEED = 100 '回零速度
CREEP = 10 '反找速度
ACCEL = 1000
DATUM(21,2) '驅(qū)動(dòng)器回零模式value=2
WAIT IDLE
IF AXIS_STOPREASON = 0 THEN
?"回零成功"
ELSE
?"回零失敗" ,"停止原因:",AXIS_STOPREASON,"狀態(tài)字0X",HEX(DRIVE_STATUS)
ENDIF
三、EtherCAT總線初始化
EtherCAT總線初始化操作是控制器與EtherCAT總線驅(qū)動(dòng)器通訊的重要步驟,也是第一步,初始化成功表示著二者成功建立了通訊連接,之后才可順利進(jìn)行運(yùn)動(dòng)控制和讀寫(xiě)驅(qū)動(dòng)的參數(shù)。
按照前面的步驟接好線,給EtherCAT伺服驅(qū)動(dòng)器和控制器上電,使用ZDevelop軟件連接控制器,EtherCAT總線使用一段程序來(lái)初始化,將初始化程序下載到控制器運(yùn)行之后,才能設(shè)置軸參數(shù)和執(zhí)行運(yùn)動(dòng)指令控制伺服電機(jī)的運(yùn)動(dòng)。
初始化程序中包含WDOG=1開(kāi)總使能,和AXIS_ENABLE(軸號(hào)) = 1開(kāi)單軸使能,使能前用手可以轉(zhuǎn)動(dòng)點(diǎn)擊,使能完成后便旋轉(zhuǎn)不動(dòng),需要給電機(jī)發(fā)送脈沖才能使其轉(zhuǎn)動(dòng)。
2.初始化模板程序
(1)主要初始化程序
'用戶使用的時(shí)候只需要設(shè)置程序頭的四個(gè)常量的值即可。程序其他地方不用改動(dòng)。分別設(shè)置起始的脈沖軸號(hào),和使用的脈沖軸個(gè)數(shù),總線軸的起始映射軸號(hào),和總線軸的個(gè)數(shù)。
'****************ECAT總線初始化
global CONST PUL_AxisStart = 0 '本地脈沖軸起始軸號(hào)
global CONST PUL_AxisNum = 0 '本地脈沖軸軸數(shù)量
global CONST Bus_AxisStart = 0 '總線軸起始軸號(hào)
global CONST Bus_NodeNum = 1 '總線配置節(jié)點(diǎn)數(shù)量,用于判斷實(shí)際檢測(cè)到的從站數(shù)量是否一致
global CONST BUS_TYPE = 0 '總線類(lèi)型??捎糜谏衔粰C(jī)區(qū)分當(dāng)前總線類(lèi)型
global CONST Bus_Slot = 0 '槽位號(hào)0(單總線控制器缺省0)
global MAX_AXISNUM '最大軸數(shù)
MAX_AXISNUM = SYS_ZFEATURE(0)
global Bus_InitStatus '總線初始化完成狀態(tài)
Bus_InitStatus = -1
global Bus_TotalAxisnum '檢查掃描的總軸數(shù)
delay(3000) '延時(shí)3S等待驅(qū)動(dòng)器上電,不同驅(qū)動(dòng)器自身上電時(shí)間不同,具體根據(jù)驅(qū)動(dòng)器調(diào)整延時(shí)
?"總線通訊周期:",SERVO_PERIOD,"us"
Ecat_Init() '初始化ECAT總線
while (Bus_InitStatus = 0)
Ecat_Init()
wend
END
'************************ECAT總線初始****************************************
'初始流程: slot_scan(掃描總線) -> 從站節(jié)點(diǎn)映射軸/io -> SLOT_START(啟動(dòng)總線) -> 初始化成功
'****************************************************************************
global sub Ecat_Init()
local Node_Num,Temp_Axis,Drive_Vender,Drive_Device,Drive_Alias
RAPIDSTOP(2)
WAIT IDLE(0)
for i=0 to MAX_AXISNUM - 1 '初始化還原軸類(lèi)型
AXIS_ENABLE(i) = 0
atype(i)=0
AXIS_ADDRESS(i) =0
DELAY(10) '防止所有驅(qū)動(dòng)器全部同時(shí)切換使能導(dǎo)致瞬間電流過(guò)大
next
Bus_InitStatus = -1
SLOT_STOP(Bus_Slot)
delay(200) '延時(shí)時(shí)間可以按需調(diào)整,確保驅(qū)動(dòng)器已上電可以等待EtherCAT到位
slot_scan(Bus_Slot) '掃描總線
if return then
?"總線掃描成功","連接從站設(shè)備數(shù):"NODE_COUNT(Bus_Slot)
if NODE_COUNT(Bus_Slot) <> Bus_NodeNum then '判斷總線檢測(cè)數(shù)量是否為實(shí)際接線數(shù)量
?""
?"掃描節(jié)點(diǎn)數(shù)量與程序配置數(shù)量不一致!" ,"配置數(shù)量:"Bus_NodeNum,"檢測(cè)數(shù)量:"NODE_COUNT(Bus_Slot)
Bus_InitStatus = 0 '初始化失敗。報(bào)警提示
'return
endif
'"開(kāi)始映射軸號(hào)"
for Node_Num=0 to NODE_COUNT(Bus_Slot)-1 '遍歷掃描到的所有從站節(jié)點(diǎn)
Drive_Vender = NODE_INFO(Bus_Slot,Node_Num,0) '讀取驅(qū)動(dòng)器廠商
Drive_Device = NODE_INFO(Bus_Slot,Node_Num,1) '讀取設(shè)備編號(hào)
Drive_Alias = NODE_INFO(Bus_Slot,Node_Num,3) '讀取設(shè)備撥碼ID
if NODE_AXIS_COUNT(Bus_Slot,Node_Num) <> 0 then '判斷當(dāng)前節(jié)點(diǎn)是否有電機(jī)
for j=0 to NODE_AXIS_COUNT(Bus_Slot,Node_Num)-1 '根據(jù)節(jié)點(diǎn)帶的電機(jī)數(shù)量循環(huán)配置軸參數(shù)(針對(duì)一拖多驅(qū)動(dòng)器)
Temp_Axis = Bus_AxisStart + Bus_TotalAxisnum '軸號(hào)按NODE順序分配
'Temp_Axis = Drive_Alias '軸號(hào)按驅(qū)動(dòng)器設(shè)定的撥碼分配(一拖多需要特殊處理)
base(Temp_Axis)
AXIS_ADDRESS(Temp_Axis)= (Bus_Slot<<16)+ Bus_TotalAxisnum + 1 '映射軸號(hào)
ATYPE=65 '設(shè)置控制模式 65-位置 66-速度 67-轉(zhuǎn)矩
DRIVE_PROFILE=-1 '配置為驅(qū)動(dòng)器內(nèi)置PDO列表,可改為1,-1,等參數(shù) '配置為驅(qū)動(dòng)器內(nèi)置PDO列表
' Sub_SetDriverIo(Drive_Vender,Temp_Axis,128 + 32*Temp_Axis) '映射驅(qū)動(dòng)器IO IO映射到控制器IO32-以后每個(gè)驅(qū)動(dòng)器間隔32點(diǎn)
' Sub_SetNodePara(Node_Num,Drive_Vender,Drive_Device,j) '設(shè)置特殊總線參數(shù)
disable_group(Temp_Axis) '每軸單獨(dú)分組
Bus_TotalAxisnum=Bus_TotalAxisnum+1 '總軸數(shù)+1
next
else 'IO擴(kuò)展模塊
Sub_SetNodeIo(Node_Num,Drive_Vender,Drive_Device,1024 + 32*Node_Num) '映射擴(kuò)展模塊IO
endif
next
?"軸號(hào)映射完成","連接總軸數(shù):"Bus_TotalAxisnum
delay(200)
SLOT_START(Bus_Slot) '啟動(dòng)總線
if return then
'?"開(kāi)始清除驅(qū)動(dòng)器錯(cuò)誤"
for i= Bus_AxisStart to Bus_AxisStart + Bus_TotalAxisnum - 1
BASE(i)
DRIVE_CLEAR(0)
DELAY 50
'?"驅(qū)動(dòng)器錯(cuò)誤清除完成"
datum(0) '清除控制器軸狀態(tài)錯(cuò)誤"
wa 100
wdog=1 '使能總開(kāi)關(guān)
'"軸使能"
AXIS_ENABLE=1
next
Bus_InitStatus = 1
?"軸使能完成"
'本地脈沖軸配置
for i = 0 to PUL_AxisNum - 1
base(PUL_AxisStart + i)
AXIS_ADDRESS = (-1<<16) + i
ATYPE = 4
next
?"總線開(kāi)啟成功"
else
?"總線開(kāi)啟失敗"
Bus_InitStatus = 0
endif
else
?"總線掃描失敗"
Bus_InitStatus = 0
endif
end sub
(2)驅(qū)動(dòng)器IO映射(需要使用驅(qū)動(dòng)器IO時(shí)才映射,否則不用映射)
' ************************總線驅(qū)動(dòng)IO映射**************************************
'通過(guò)DRIVE_IO指令映射驅(qū)動(dòng)器對(duì)象字典中60FD,60FE輸入輸出狀態(tài),要設(shè)置正確的DRIVE_PROFILEE或者POD后才可以正常映射
'DRIVE_PROFILE模式包含60FD/60FE
'iAxis - 軸號(hào) iVender - 驅(qū)動(dòng)器類(lèi)型 i_IoNum - 輸入輸出起始編號(hào)
' **************************************************************************
global sub Sub_SetDriverIo(iVender,Iaxis,i_IoNum)
if iVender = $66f then '松下驅(qū)動(dòng)器
DRIVE_PROFILE(iAxis) = 5 '設(shè)定對(duì)應(yīng)的帶IO映射的PDO模式
DRIVE_IO(iAxis) = i_IoNum
REV_IN(iAxis) = i_IoNum '負(fù)限位應(yīng)60FD BIT0
FWD_IN(iAxis) = i_IoNum + 1 '正限位先對(duì)應(yīng)60FD BIT1
DATUM_IN(iAxis) = i_IoNum + 2 '原點(diǎn)先對(duì)應(yīng)60FD BIT2
INVERT_IN(i_IoNum,ON) '特殊信號(hào)有效電平反轉(zhuǎn)
INVERT_IN(i_IoNum + 1,ON)
INVERT_IN(i_IoNum + 2,ON)
endif
end sub
(3)擴(kuò)展模塊IO映射(連接了擴(kuò)展模塊才設(shè)置)
' ***********************總線IO擴(kuò)展模塊映射**************************************
'通過(guò)NODE_IO(Bus_Slot,Node_Num)分配模塊IO起始地址
' *******************************************************************************
global sub Sub_SetNodeIo(iNode,iVender,iDevice,i_IoNum)
if iVender = $41B and iDevice = $130 then '正運(yùn)動(dòng)EIO1616MT
NODE_IO(Bus_Slot,iNode) = i_IoNum
endif
end sub
(4)特殊參數(shù)配置
' ********************************從站節(jié)點(diǎn)特殊參數(shù)配置********************************
'通過(guò)SDO方式修改對(duì)應(yīng)對(duì)象字典的值修改從站參數(shù)(具體對(duì)象字典查看驅(qū)動(dòng)器手冊(cè))
' ******************************************************************************************************
global sub Sub_SetNodePara(iNode,iVender,iDevice,Iaxis)
if iVender = $41B and iDevice = $1ab0 then '正運(yùn)動(dòng)24088脈沖擴(kuò)展軸
SDO_WRITE(Bus_Slot,iNode,$6011+Iaxis*$800,0,5,4) '設(shè)置擴(kuò)展脈沖軸ATYPE類(lèi)型
SDO_WRITE(Bus_Slot,iNode,$6012+Iaxis*$800,0,6,0) '設(shè)置擴(kuò)展脈沖軸INVERT_STEP脈沖輸出模式
NODE_IO(Bus_Slot,iNode) = 32 + 32*iNode '設(shè)置240808上IO的起始映射地址
elseif iVender = $66f then '松下驅(qū)動(dòng)器
SDO_WRITE(Bus_Slot,iNode,$3741,0,3,0) '以撥碼為ID
SDO_WRITE(Bus_Slot,iNode,$3401,0,4,$10101) '正限位電平 $818181
SDO_WRITE(Bus_Slot,iNode,$3402,0,4,$20202) '負(fù)限位電平 $828282
SDO_WRITE(Bus_Slot,iNode,$6091,1,7,1) '電子齒輪比分子
SDO_WRITE(Bus_Slot,iNode,$6091,2,7,1) '電子齒輪比分母
SDO_WRITE(Bus_Slot,iNode,$6092,1,7,10000) '電機(jī)一圈脈沖數(shù)
SDO_WRITE(Bus_Slot,iNode,$607E,0,5,0) '電機(jī)正轉(zhuǎn)0 反轉(zhuǎn)224
SDO_WRITE(Bus_Slot,iNode,$6085,0,7,4290000000) '異常減速度
'SDO_WRITE(Bus_Slot,iNode,$1010,1,7,$65766173) '寫(xiě)EPPROM(寫(xiě)EPPROM后驅(qū)動(dòng)器需要重新上電)
'?"寫(xiě)EPPR0M OK 請(qǐng)斷電重啟"
endif
end sub
EtherCAT初始化成功后會(huì)打印信息提示,如下。若初始化失敗也會(huì)打印信息提示。
EtherCAT總線上連接的設(shè)備信息有如下三種查看方法。查看總線狀態(tài)的前提是初始化操作成功,否則無(wú)法查看。
(1)在菜單欄“控制器”→“控制器狀態(tài)”窗口查看“槽位0節(jié)點(diǎn)”。
(2)在菜單欄“調(diào)試”→“總線狀態(tài)診斷”打開(kāi)如下窗口查看控制器總線槽位接口的設(shè)備信息。
(3)還可以通過(guò)在線命令發(fā)送“?*EtherCAT”打印EtherCAT總線上的全部設(shè)備信息。
4. EtherCAT總線驅(qū)動(dòng)器控制效果
初始化成功后,將各個(gè)總線軸依此回零,配置好軸參數(shù)之后,就可以使用指令讓總線軸按需求動(dòng)作。
在程序中寫(xiě)入運(yùn)動(dòng)指令、在線命令發(fā)送運(yùn)動(dòng)指令或使用“手動(dòng)運(yùn)動(dòng)”窗口控制電機(jī)運(yùn)行。
示波器采集軸參數(shù)波形:
使用“手動(dòng)運(yùn)動(dòng)”功能快速手動(dòng)操作電機(jī)運(yùn)動(dòng),運(yùn)動(dòng)前先設(shè)置左側(cè)軸參數(shù)。