技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 快速入門 | 篇十六:正運(yùn)動控制器EtherCAT總線快速入門

快速入門 | 篇十六:正運(yùn)動控制器EtherCAT總線快速入門

時間:2020-11-27 15:52:34來源:正運(yùn)動技術(shù)

導(dǎo)語:?運(yùn)動控制器的固件升級、ZBasic 程序開發(fā)、ZPLC 程序開發(fā)、與觸摸屏通訊和輸入/輸出IO 的應(yīng)用、運(yùn)動控制器數(shù)據(jù)與存儲的應(yīng)用、運(yùn)動控制器ZCAN、EtherCAT 總線的使用、示波器的應(yīng)用、多任務(wù)運(yùn)行的特點(diǎn)、運(yùn)動控制器中斷的應(yīng)用、U盤接口的使用、ZDevelop 編程軟件的使用、運(yùn)動控制器的基礎(chǔ)軸參數(shù)與基礎(chǔ)運(yùn)動控制指令以及運(yùn)動緩沖等。

  之前正運(yùn)動技術(shù)與大家分享了,運(yùn)動控制器的固件升級、ZBasic 程序開發(fā)、ZPLC 程序開發(fā)、與觸摸屏通訊和輸入/輸出IO 的應(yīng)用、運(yùn)動控制器數(shù)據(jù)與存儲的應(yīng)用、運(yùn)動控制器ZCAN、EtherCAT 總線的使用、示波器的應(yīng)用、多任務(wù)運(yùn)行的特點(diǎn)、運(yùn)動控制器中斷的應(yīng)用、U盤接口的使用、ZDevelop 編程軟件的使用、運(yùn)動控制器的基礎(chǔ)軸參數(shù)與基礎(chǔ)運(yùn)動控制指令以及運(yùn)動緩沖等。

  今天,我們來講解一下正運(yùn)動技術(shù)運(yùn)動控制器EtherCAT 總線快速入門。

  視頻教程:《視頻教程:正運(yùn)動控制器EtherCAT總線快速入門

  以下是圖文詳解

  一準(zhǔn)備工作

  

  (一)材料準(zhǔn)備

  1.硬件

  

  1.png

  

  2.軟件

  

  2.png

  

  1)ZDevelop V3.10版本控制器編程軟件。從正運(yùn)動技術(shù)官網(wǎng)(www.zmotion.com.cn)下載壓縮包,解壓后直接運(yùn)行應(yīng)用程序,無需安裝。

  2)松下伺服驅(qū)動器上位機(jī)調(diào)試軟件。從松下官網(wǎng)下載后安裝。

  (二)硬件接線

  1.控制器接線

  控制器接口的用途參見下圖。

  

  3.png

  

  1)主電源:將控制器主電源接線端子上的E+24V端子接入24V直流電源正極,將EGND端子接入24V直流電源負(fù)極。

  2)以太網(wǎng)EtherNET端口接線:使用一根網(wǎng)線將控制器的EtherNET端口與電腦的以太網(wǎng)口相連。

  3)伺服驅(qū)動器與控制器接線:使用一根網(wǎng)線將控制器的EtherCAT總線端口與伺服驅(qū)動器的X2A或X2B口相連。

  

  4.png

  

  注意伺服驅(qū)動器的EtherCAT接口有兩個,有些驅(qū)動器這兩個口可以隨意接,有些分為EtherCAT IN和EtherCAT OUT,IN口接上一級設(shè)備,OUT口接下一級設(shè)備,二者不能混用,要注意連接順序。

  多軸控制時伺服驅(qū)動器的EtherCAT OUT口再連接下一級驅(qū)動設(shè)備的EtherCAT IN口,依此類推。

  2.驅(qū)動器接線

  伺服驅(qū)動器與電機(jī)和編碼器的接線參見驅(qū)動器手冊,將驅(qū)動器接入220V市電。

  二 控制器與電腦連接

  

  控制器與電腦可以通過串口或網(wǎng)口連接,下面以網(wǎng)口連接例展開說明。

  (一)網(wǎng)口通訊操作方法

  先將控制器與電腦用網(wǎng)線連接好,接通控制器的電源,再打開ZDevelop編程軟件,點(diǎn)擊菜單欄“控制器”→“連接”,打開“連接到控制器”窗口。

  

  5.png

  

  通過“連接到控制器”窗口,可以快速查看本機(jī)IP,對比控制器與電腦是否處于同一網(wǎng)段。

  IP地址列表下拉選擇時,會自動查找當(dāng)前局域網(wǎng)可用的控制器IP地址(控制器上電POWER燈和RUN燈亮的時候就能查找到該控制器的IP地址)。

  同一個網(wǎng)絡(luò)有多個控制器的時候,IP的下拉列表若沒有顯示目標(biāo)控制器的IP地址,可以采取IP掃描來查看當(dāng)前所有可用的控制器IP地址,掃描完成之后確定關(guān)閉此窗口,重新在IP下拉列表選擇。

  

  6.png

  

  選擇正確的IP地址,點(diǎn)擊連接之后,編程軟件與控制器連接成功,在線命令與輸出窗口打印信息提示。

  

  7.png

  

  控制器出廠的缺省IP地址為192.168.0.11,“連接到控制器”窗口能顯示出本機(jī)IP地址,請注意設(shè)置有線網(wǎng)卡與無線網(wǎng)卡各自的IP。電腦需要設(shè)置IP地址與控制器IP處于同一網(wǎng)段才能連接,即四段的前三段要相同,最后一段不同才能通訊。

  若控制器與電腦不處于同一網(wǎng)段,則需要修改控制器或電腦其中之一的IP地址,使二者處于同一網(wǎng)段。

  修改控制器IP地址需要先使用串口連接控制器,獲取控制器IP地址,然后修改本機(jī)IP或控制器IP使二者處于同一網(wǎng)段。

  (二)修改控制器IP地址

  先使用串口連接控制器,獲取控制器IP地址,再修改控制器IP地址。

  方法一:可以通過菜單欄“控制器”→“修改IP地址”窗口直接修改控制器IP地址。

  

  8.png

  

  方法二:通過IP_ADDRESS指令發(fā)送在線命令修改。

  

  9.png

  

  指令發(fā)送修改成功之后自動斷開連接,在線命令打印控制器連接錯誤信息,通過網(wǎng)口連接選擇新IP地址192.168.0.23再次連接控制器,IP地址修改成功后永久有效。

  (三)修改本機(jī)IP地址

  以WIN10為例,在開始菜單里打開控制面板,打開“網(wǎng)絡(luò)和Internet”。

  

  10.png

  

  再打開“網(wǎng)絡(luò)與共享中心”。

  

  11.png

  

  點(diǎn)擊“以太網(wǎng)”。

  

  12.png

  

  在“以太網(wǎng)狀態(tài)”窗口點(diǎn)擊“屬性”,打開“以太網(wǎng)屬性”窗口,找到Internet協(xié)議版本4(TCP/IPv4)打開,就能看到本機(jī)IP地址修改窗口,勾選“使用下面的IP地址”,在IP地址輸入欄里修改IP,將本機(jī)IP改為和控制器IP處于同一網(wǎng)段,修改完成點(diǎn)擊“確認(rèn)”即可成功修改IP。

  再次打開“連接到控制器”窗口嘗試連接到控制器。

  

  13.png

  

  三 EtherCAT伺服驅(qū)動器參數(shù)設(shè)置

  

  (一)通訊周期

  使用EtherCAT伺服驅(qū)動器時需要保證控制器與伺服周期一致才可正常通訊使用。

  EtherCAT伺服驅(qū)動器一般支持不同周期,通訊周期主要有250us,500us,1ms,2ms,4ms,連接時自動匹配控制器周期,不需要設(shè)置,當(dāng)通訊周期無法自動匹配時,通訊失敗,通過升級控制器固件修改控制器周期解決。

  控制器一般默認(rèn)為1ms,使用SERVO_PERIOD指令讀取控制器周期。

  伺服周期越小,位置控制越精細(xì),響應(yīng)速度也更快。

  (二)驅(qū)動器PDO設(shè)置

  PDO全名為Process Data Object,指在EtherCAT總線網(wǎng)絡(luò)中周期的進(jìn)行主站與從站的數(shù)據(jù)交互的功能,可以看作一個數(shù)組空間,每個數(shù)組元素存放了不同的功能碼,PDO在一個周期中執(zhí)行這些功能碼對應(yīng)的操作,這些功能碼就叫做數(shù)據(jù)字典,數(shù)據(jù)字典用4位16進(jìn)制數(shù)來表示。

  

  14.png

  

  RxPDO:主站傳送數(shù)據(jù)給從站。

  TxPDO:從站傳送數(shù)據(jù)給主站。

  EtherCAT總線上控制器為主站,伺服驅(qū)動器為從站。

  如6040h控制字(用于控制伺服軸的使能、啟動、停止、報警、復(fù)位等運(yùn)行狀態(tài)),每個數(shù)據(jù)字典Index包含32個子字典Sub-Index。數(shù)據(jù)字典的功能和初始值查看驅(qū)動器手冊的描述。

  數(shù)據(jù)字典的編號及功能是協(xié)議本身就確定好的,用戶只需按照數(shù)據(jù)字典的描述設(shè)置數(shù)據(jù)字典的bit位,所有的標(biāo)準(zhǔn)EtherCAT設(shè)備都使用一套數(shù)據(jù)字典。

  松下A6B伺服驅(qū)動器的EtherCAT相關(guān)說明內(nèi)容可查看松下文檔《技術(shù)資料-EtherCAT通訊規(guī)格篇》。

  

  15.png

  

  EtherCAT初始化過程中必須進(jìn)行驅(qū)動器PDO配置,DRIVE_PROFILE指令配置驅(qū)動器的PDO列表,目前提供20幾種配置選擇,每種配置包含哪些數(shù)據(jù)字典查看該指令說明確認(rèn),如下圖,具體內(nèi)容可以在《ZBasic編程手冊V3.2.4》中查看。

  

  16.png

  

  

  DRIVE_PROFILE=-1表示驅(qū)動器的內(nèi)置缺省PDO列表,驅(qū)動器內(nèi)置PDO列表包含哪些數(shù)據(jù)字典需要查看驅(qū)動器手冊。

  DRIVE_PROFILE已有的配置不能滿足需求就自定義PDO,采用SDO相關(guān)指令操作數(shù)據(jù)字典配置驅(qū)動器需要的PDO。

  驅(qū)動器的相關(guān)參數(shù)修改,同樣使用SDO指令讀寫對應(yīng)的數(shù)據(jù)字典進(jìn)行配置或通過驅(qū)動器軟件修改。SDO指令包含數(shù)據(jù)字典讀取SDO_READ、SDO_READ_AXIS和數(shù)據(jù)字典寫入SDO_WRITE、SDO_WRITE_AXIS。

  數(shù)據(jù)字典讀取語法:

  SDO_READ (槽位號, 設(shè)備編號, 數(shù)據(jù)字典編號, 數(shù)據(jù)字典子編號, 數(shù)據(jù)類型, 讀取數(shù)據(jù)存儲TABLE位置)

  SDO_READ_AXIS (軸號, 數(shù)據(jù)字典編號, 數(shù)據(jù)字典子編號, 數(shù)據(jù)類型, 讀取數(shù)據(jù)存儲TABLE位置)

  數(shù)據(jù)字典寫入語法:

  SDO_WRITE (槽位號, 設(shè)備編號, 數(shù)據(jù)字典編號, 數(shù)據(jù)字典子編號, 數(shù)據(jù)類型, 寫入數(shù)據(jù)值)

  SDO_WRITE_AXIS (軸號, 數(shù)據(jù)字典編號, 數(shù)據(jù)字典子編號, 數(shù)據(jù)類型, 寫入數(shù)據(jù)值)

  自定義PDO的配置方法請咨詢正運(yùn)動的銷售工程師或者技術(shù)工程師。

  (三)驅(qū)動器參數(shù)設(shè)置

  修改驅(qū)動器參數(shù)先連接驅(qū)動器,可選USB線或WLAN連接驅(qū)動器,使用USB線連接電腦與驅(qū)動器端的X1端口,給驅(qū)動器上電,打開松下驅(qū)動器軟件PANATERM,彈出“選擇與驅(qū)動器通信”窗口,選擇與驅(qū)動器通過USB連接后,自動獲取到驅(qū)動器信息顯示在窗口內(nèi),點(diǎn)擊OK連接成功,就能對驅(qū)動器進(jìn)行設(shè)置。

  

  17.png

  

  點(diǎn)擊菜單欄“顯示”→“對象編輯器”,打開如下窗口,找到需要設(shè)置的數(shù)據(jù)字典,在“Setting Value”一欄直接修改數(shù)據(jù)字典的內(nèi)容。

  修改完成將參數(shù)傳送給驅(qū)動器,并寫入驅(qū)動器的EEPROM,驅(qū)動器再次上電后參數(shù)生效。

  

  18.png

  

  例:設(shè)置UNITS脈沖當(dāng)量,即設(shè)置電機(jī)轉(zhuǎn)一圈需要發(fā)送多少個脈沖。

  SPEED速度、ACCEL加速度、DECEL減速度和運(yùn)動指令等都是以UNITS為基本單位。

  如圖,通過數(shù)字字典6091h設(shè)置電子齒輪比,6091h-01h設(shè)置電子齒輪比分子,6091h-02h設(shè)置電子齒輪比分母,此時,電子齒輪比=1/1,6092h-01h設(shè)為10000表示給電機(jī)發(fā)10000個脈沖能使電機(jī)旋轉(zhuǎn)一圈,對應(yīng)的脈沖當(dāng)量UNITS=10000,MOVE(2)表示給電機(jī)發(fā)送20000個脈沖,此時電機(jī)轉(zhuǎn)兩圈。

  

  19.png

  

  或者使用SDO指令讀寫數(shù)據(jù)字典修改參數(shù)。修改完成使用驅(qū)動器軟件讀取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ū)動器IO信號

  驅(qū)動器自身有輸入信號,作用為保護(hù)信號,默認(rèn)使能狀態(tài),若不接入外部信號,驅(qū)動器就會保護(hù)報錯,調(diào)試階段可以關(guān)閉這些信號方便調(diào)試,將輸入值設(shè)置為0即可,需要使用驅(qū)動器IO時要對驅(qū)動器的IO編號映射后才能使用,后續(xù)根據(jù)實際需求接入實際信號。

  點(diǎn)擊驅(qū)動器軟件PANATERM主界面的“參數(shù)”按鈕打開下方窗口,選中要修改的IO信號后,在“設(shè)定值”一欄修改。

  

  20.png

  

  驅(qū)動器IO映射需要PDO包含數(shù)據(jù)字典60FDh,然后使用DRIVE_IO指令設(shè)置驅(qū)動器IO地址,映射的編號范圍不要與總線上的其他設(shè)備的IO編號重復(fù)。

  DRIVE_IO (軸號)=輸入輸出IO起始編號。

  示例:

          DRIVE_PROFILE(iAxis) = 5         '設(shè)定對應(yīng)的帶IO映射的PDO模式

          DRIVE_IO(iAxis) = i_IoNum        '設(shè)定驅(qū)動器輸入/輸出IO起始編號

  (五)參數(shù)寫入驅(qū)動器

  驅(qū)動器的數(shù)據(jù)字典參數(shù)或其他的參數(shù)設(shè)置完成后,先點(diǎn)擊“傳送”將修改的全部參數(shù)傳入驅(qū)動器,再點(diǎn)擊EEP,將參數(shù)寫入驅(qū)動器的EEPROM,給驅(qū)動器重新上電后修改的參數(shù)生效,圖片上值修改了輸入?yún)?shù),在下圖查看不同類別參數(shù)變更后的值并修改。

  

  21.png

  

  (六)驅(qū)動器軸號映射

  EtherCAT總線上連接的設(shè)備的設(shè)備號按照連接順序從0開始自動編號,驅(qū)動器編號也是按連接順序給驅(qū)動器設(shè)備自動從0開始編號的,只算總線上的驅(qū)動器設(shè)備,其他設(shè)備是沒有驅(qū)動器編號的。

  EtherCAT總線上連接的驅(qū)動器需要使用指令映射驅(qū)動器的軸號,使用AXIS_ADDRESS 指令映射,映射完成之后才能使用BASE指令選擇驅(qū)動器軸號,發(fā)送脈沖,控制驅(qū)動器所連的電機(jī)運(yùn)行。

  軸映射寫在總線初始化程序中,總線掃描之后,開啟總線之前。

  語法:AXIS_ADDRESS(軸號)=(槽位號<<16)+驅(qū)動器編號+1

  EtherCAT總線的槽位號是0。軸號為驅(qū)動器映射的目標(biāo)軸號,映射時每個驅(qū)動器的軸號不重復(fù),指向空閑軸號即可。

  示例:

          AXIS_ADDRESS (6)=(0<<16)+0+1         '第一個ECAT驅(qū)動器,驅(qū)動器編號0,綁定為軸6

          AXIS_ADDRESS (7)=(0<<16)+1+1         '第二個ECAT驅(qū)動器,驅(qū)動器編號1,綁定為軸7

          AXIS_ADDRESS (8)=(0<<16)+2+1         '第三個ECAT驅(qū)動器,驅(qū)動器編號2,綁定為軸8

          ATYPE(6)=65                             '設(shè)置為ECAT軸類型,65-位置 66-速度 67-轉(zhuǎn)矩

          ATYPE(7)=65

          ATYPE(8)=65

  (七)驅(qū)動器控制模式

  EtherCAT驅(qū)動器一般有三種控制模式,分別為CSP周期位置模式,CSV周期速度模式,CST周期力矩模式。提供ATYPE指令設(shè)置控制模式。

  

  22.png

  

  CSP,CSV,CST模式的設(shè)置需要預(yù)先設(shè)置PDO,PDO同時包含下方數(shù)據(jù)字典時,即可直接修改ATYPE數(shù)值進(jìn)行模式切換。驅(qū)動器默認(rèn)PDO列表內(nèi)置有哪些數(shù)據(jù)字典需要查看驅(qū)動器手冊確定。

  1.當(dāng)PDO包含607Ah時,ATYPE可設(shè)置為65,周期位置模式,此時使用運(yùn)動指令控制電機(jī)運(yùn)動。

  2.當(dāng)PDO包含60FFh時,ATYPE可設(shè)置為66,周期速度模式,此時使用DAC指令控制電機(jī)以設(shè)置值的速度運(yùn)行,速度單位有兩個,脈沖數(shù)/S和R/MIN,由驅(qū)動器確定,使用時先給較小的數(shù)值,觀察電機(jī)速度情況,再加大。

  3.當(dāng)PDO包含6071h時,ATYPE可設(shè)置為67,周期力矩模式,此時使用DAC指令控制電機(jī)以設(shè)置值的力矩運(yùn)行,DAC值范圍0-1000,對應(yīng)0-100%的6071設(shè)置值,比如DAC=10,此時電機(jī)力矩=1%的6071h值。

  注意速度模式和力矩模式切換時,先將DAC=0后,再修改ATYPE,防止出現(xiàn)事故。

  位置模式:ATYPE=65

  將DRIVE_PROFILE配置為帶速度的模式1,ATYPE=65,執(zhí)行總線初始化程序后,設(shè)置軸的UNITS、SPEED等運(yùn)行參數(shù),使用運(yùn)動指令給電機(jī)發(fā)脈沖控制軸的運(yùn)行,注意試運(yùn)行時SPEED的值不要設(shè)置過大。

  位置模式也是實際過程中用的較多的一種模式,運(yùn)行效果參見在文章后半部分。

  

  23.png

  

  速度模式:ATYPE=66

  將DRIVE_PROFILE配置為帶速度的模式22,ATYPE=66,執(zhí)行總線初始化程序后,在線命令欄發(fā)送DAC指令即可控制電機(jī)運(yùn)行,如下圖,DAC=5000表示電機(jī)以每秒5000個脈沖的速度持續(xù)運(yùn)行,DAC命令發(fā)送后電機(jī)一直運(yùn)行,要提高運(yùn)行速度將DAC的值加大,DAC的值太小電機(jī)會克服不了摩擦力無法轉(zhuǎn)動。

  出于安全因素考慮,注意DAC不要設(shè)置過大,先設(shè)置一個較小值,觀察電機(jī)運(yùn)行情況后慢慢往上增加。

  此模式下停止電機(jī)在線命令發(fā)送DAC=0即可,或按下軟件的緊急停止按鈕。

  

  24.png

  

  力矩模式:ATYPE=67

  將DRIVE_PROFILE配置為帶力矩的模式30,ATYPE=67,執(zhí)行總線初始化程序后,在線命令欄發(fā)送DAC指令即可控制電機(jī)運(yùn)行,如下圖,DAC=30,當(dāng)前驅(qū)動器為3%的力矩,DAC等于1000時表示100%力矩。要提高運(yùn)行速度將DAC的值加大,DAC的值太小電機(jī)會克服不了摩擦力無法轉(zhuǎn)動。

  出于安全因素考慮,注意DAC不要設(shè)置過大,先設(shè)置一個較小值,觀察電機(jī)運(yùn)行情況后慢慢往上增加。

  此模式下停止電機(jī)在線命令發(fā)送DAC=0即可,或按下軟件的緊急停止按鈕。

  

  25.png

  

  (八)驅(qū)動器報警

  觀察驅(qū)動器上LED面板上是否有報錯信息,報錯會顯示錯誤碼,根據(jù)驅(qū)動器手冊排查錯誤,修正后將報警清零。

  

  26.png

  

  打開驅(qū)動器軟件的報警窗口,也能看當(dāng)前驅(qū)動器是否有警報,或查詢歷史警報。

  

  27.png

  

  

  初始化過程中按軸號清除驅(qū)動器的錯誤,重復(fù)調(diào)用DRIVE_CLEAR指令清除多個驅(qū)動器錯誤。

  語法:DRIVE_CLEAR(模式值)

  模式值0——清除當(dāng)前告警;模式值1——清除歷史告警;模式值2——清除外部輸入告警。

  示例:

          BASE(i)

          DRIVE_CLEAR(0)         '清除驅(qū)動器錯誤

          DELAY 50

          DATUM(0)                 '清除控制器軸狀態(tài)錯誤"

          DELAY 100

  (九)驅(qū)動器回零

  EtherCAT總線可使用控制器提供的回零方式DATUM(mode),mode模式值選擇查看ZBasic編程手冊的DATUM指令。EtherCAT總線也可以使用驅(qū)動器本身的回零模式。

  驅(qū)動器本身回零使用DATUM(21,mode2)指令,mode2模式值要查驅(qū)動器手冊數(shù)據(jù)字典6098h回零模式,如下圖所示,mode2填入對應(yīng)Value值,mode2缺省值為0,也是驅(qū)動器回零模式,注意此時的原點(diǎn)限位等信號要接在驅(qū)動器上,所以要使用驅(qū)動器回零時需要對驅(qū)動器的IO進(jìn)行映射。

  

  28.png

  

  示例:初始化完成后再運(yùn)行驅(qū)動器回零程序。

          BASE(iAxis)         '按驅(qū)動器軸號逐個回零

          AXIS_STOPREASON = 0

          SPEED = 100         '回零速度

          CREEP = 10         '反找速度

          ACCEL = 1000

          DATUM(21,2)         '驅(qū)動器回零模式value=2

          WAIT IDLE

          IF AXIS_STOPREASON = 0 THEN

              ?"回零成功"

          ELSE

              ?"回零失敗" ,"停止原因:",AXIS_STOPREASON,"狀態(tài)字0X",HEX(DRIVE_STATUS)

          ENDIF

  四 EtherCAT總線初始化

  

  (一)初始化基本流程

  按照前面的步驟接好線,給EtherCAT伺服驅(qū)動器和控制器上電,使用ZDevelop軟件連接控制器,EtherCAT總線使用一段程序來初始化,將初始化程序下載到控制器運(yùn)行之后,才能設(shè)置軸參數(shù)和執(zhí)行運(yùn)動指令控制伺服電機(jī)的運(yùn)動。

  

  29.png

  

  初始化程序中包含WDOG=1開總使能,和AXIS_ENABLE(軸號) = 1開單軸使能,使能前用手可以轉(zhuǎn)動點(diǎn)擊,使能完成后便旋轉(zhuǎn)不動,需要給電機(jī)發(fā)送脈沖才能使其轉(zhuǎn)動。

  (二)初始化程序

  1.主要初始化程序

  用戶使用的時候只需要設(shè)置程序頭的四個常量的值即可。程序其他地方不用改動。分別設(shè)置起始的脈沖軸號,和使用的脈沖軸個數(shù),總線軸的起始映射軸號,和總線軸的個數(shù)。

     '****************ECAT總線初始化

     global CONST PUL_AxisStart = 0         '本地脈沖軸起始軸號

     global CONST PUL_AxisNum = 0         '本地脈沖軸軸數(shù)量

     global CONST Bus_AxisStart = 0            '總線軸起始軸號

     global CONST Bus_NodeNum = 1          '總線配置節(jié)點(diǎn)數(shù)量,用于判斷實際檢測到的從站數(shù)量是否一致

   global CONST BUS_TYPE = 0                 '總線類型??捎糜谏衔粰C(jī)區(qū)分當(dāng)前總線類型

     global CONST Bus_Slot = 0                     '槽位號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)         '延時3S等待驅(qū)動器上電,不同驅(qū)動器自身上電時間不同,具體根據(jù)驅(qū)動器調(diào)整延時

   ?"總線通訊周期:",SERVO_PERIOD,"us"

     Ecat_Init()             '初始化ECAT總線

       while (Bus_InitStatus = 0)

         Ecat_Init()

     wend

     END

       '*********************ECAT總線初始************************

     '初始流程: slot_scan(掃描總線) -> 從站節(jié)點(diǎn)映射軸/io -> SLOT_START(啟動總線) -> 初始化成功

  '**********************

  global sub Ecat_Init()

      local Node_Num,Temp_Axis,Drive_Vender,Drive_Device,Drive_Alias

      RAPIDSTOP(2)

      for i=0 to MAX_AXISNUM - 1             '初始化還原軸類型

          AXIS_ENABLE(i) = 0

          atype(i)=0

          AXIS_ADDRESS(i) =0

          DELAY(10)                         '防止所有驅(qū)動器全部同時切換使能導(dǎo)致瞬間電流過大

  next

  Bus_InitStatus = -1

      ' Bus_TotalAxisnum = 0

  SLOT_STOP(Bus_Slot)

  delay(200)

  slot_scan(Bus_Slot)                     '掃描總線

  if return then

      ?"總線掃描成功","連接從站設(shè)備數(shù):"NODE_COUNT(Bus_Slot)

      if NODE_COUNT(Bus_Slot) <> Bus_NodeNum then '判斷總線檢測數(shù)量是否為實際接線數(shù)量

          ?""

          ?"掃描節(jié)點(diǎn)數(shù)量與程序配置數(shù)量不一致!" ,"配置數(shù)量:"Bus_NodeNum,"檢測數(shù)量:"NODE_COUNT(Bus_Slot)

          Bus_InitStatus = 0 '初始化失敗。報警提示

          'return

      endif

  '"開始映射軸號"

  for Node_Num=0 to NODE_COUNT(Bus_Slot)-1         '遍歷掃描到的所有從站節(jié)點(diǎn)

      Drive_Vender = NODE_INFO(Bus_Slot,Node_Num,0)         '讀取驅(qū)動器廠商

      Drive_Device = NODE_INFO(Bus_Slot,Node_Num,1)         '讀取設(shè)備編號

      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ù)(針對一拖多驅(qū)動器)

          Temp_Axis = Bus_AxisStart + Bus_TotalAxisnum         '軸號按NODE順序分配

          'Temp_Axis = Drive_Alias                         '軸號按驅(qū)動器設(shè)定的撥碼分配(一拖多需要特殊處理)

          base(Temp_Axis)

          AXIS_ADDRESS(Temp_Axis)= (Bus_Slot<<16)+ Bus_TotalAxisnum + 1        '映射軸號

          ATYPE=65                 '設(shè)置控制模式 65-位置 66-速度 67-轉(zhuǎn)矩

              DRIVE_PROFILE=-1             '配置為驅(qū)動器內(nèi)置PDO列表

              ' Sub_SetDriverIo(Drive_Vender,Temp_Axis,128 + 32*Temp_Axis)     '映射驅(qū)動器IO,IO映射到控制器IO32-以后每個驅(qū)動器間隔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

 ?"軸號映射完成","連接總軸數(shù):"Bus_TotalAxisnum


  wa 200

  SLOT_START(Bus_Slot)             '啟動總線

  if return then


      wdog=1     '使能總開關(guān)


      '?"開始清除驅(qū)動器錯誤"

      for i= Bus_AxisStart to Bus_AxisStart + Bus_TotalAxisnum - 1

          BASE(i)

          DRIVE_CLEAR(0)

          DELAY 50

          '?"驅(qū)動器錯誤清除完成"

          datum(0)     '清除控制器軸狀態(tài)錯誤"

          wa 100

          '"軸使能"

          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

      ?"總線開啟成功"

  else

      ?"總線開啟失敗"

      Bus_InitStatus = 0

  endif

 else

  ?"總線掃描失敗"

  Bus_InitStatus = 0

 endif

end sub

  2.驅(qū)動器IO映射(需要使用驅(qū)動器IO時才映射,否則不用映射)。

  '************************總線驅(qū)動IO映射**************************************

  '通過DRIVE_IO指令映射驅(qū)動器對象字典中60FD,60FE輸入輸出狀態(tài),要設(shè)置正確的DRIVE_PROFILEE或者POD后才可以正常映射

  'DRIVE_PROFILE模式包含60FD/60FE

  'iAxis - 軸號 iVender - 驅(qū)動器類型 i_IoNum - 輸入輸出起始編號

  '**************************************************************************

  global sub Sub_SetDriverIo(iVender,Iaxis,i_IoNum)

      if iVender = $66f then '松下驅(qū)動器

          DRIVE_PROFILE(iAxis) = 5 '設(shè)定對應(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 '正限位先對應(yīng)60FD BIT1

          DATUM_IN(iAxis) = i_IoNum + 2 '原點(diǎn)先對應(yīng)60FD BIT2

          INVERT_IN(i_IoNum,ON) '特殊信號有效電平反轉(zhuǎn)

          INVERT_IN(i_IoNum + 1,ON)

          INVERT_IN(i_IoNum + 2,ON)

      endif

  end sub

  3.擴(kuò)展模塊IO映射(連接了擴(kuò)展模塊才設(shè)置)。

  '***********************總線IO擴(kuò)展模塊映射**************************************

  '通過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)動EIO1616

          NODE_IO(Bus_Slot,iNode) = i_IoNum

      endif

  end sub

  4.特殊參數(shù)配置。

  '********************************從站節(jié)點(diǎn)特殊參數(shù)配置********************************

  '通過SDO方式修改對應(yīng)對象字典的值修改從站參數(shù)(具體對象字典查看驅(qū)動器手冊)

  '******************************************************************************************************

  global sub Sub_SetNodePara(iNode,iVender,iDevice,Iaxis)

      if iVender = $41B and iDevice = $1ab0 then                              '正運(yùn)動24088脈沖擴(kuò)展軸

          SDO_WRITE(Bus_Slot,iNode,$6011+Iaxis*$800,0,5,4)             '設(shè)置擴(kuò)展脈沖軸ATYPE類型

          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ū)動器

          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)                '寫EPPROM(寫EPPROM后驅(qū)動器需要重新上電)

          '?"寫EPPR0M OK 請斷電重啟"

      endif

  end sub

  EtherCAT初始化成功后會打印信息提示,如下。若初始化失敗也會打印信息提示。

  

  30.png

  

  (三)總線節(jié)點(diǎn)狀態(tài)查看

  EtherCAT總線上連接的設(shè)備信息有如下三種查看方法。查看總線狀態(tài)的前提是初始化操作成功,否則無法查看。

  1.在菜單欄“控制器”→“控制器狀態(tài)”窗口查看“槽位0節(jié)點(diǎn)”。

  

  31.png

  

  2.在菜單欄“調(diào)試”→“總線狀態(tài)診斷”打開如下窗口查看控制器總線槽位接口的設(shè)備信息。

  

  32.png

  

  3.還可以通過在線命令發(fā)送?*EtherCAT打印EtherCAT總線上的全部設(shè)備信息。

  

  33.png

  

  (四)運(yùn)行效果

  初始化成功后,將各個總線軸依此回零,配置好軸參數(shù)之后,就可以使用指令讓總線軸按需求動作。

  在程序中寫入運(yùn)動指令、在線命令發(fā)送運(yùn)動指令或使用“手動運(yùn)動”窗口控制電機(jī)運(yùn)行。

  

  34.png

  

  示波器采集總線軸參數(shù)波形:

  

  35.png

  

  使用“手動運(yùn)動”功能快速手動操作電機(jī)運(yùn)動:

  

  36.png

  

  正運(yùn)動技術(shù)運(yùn)動控制器EtherCAT總線快速入門就講到這里。更多學(xué)習(xí)視頻及圖文請關(guān)注我們的公眾號“正運(yùn)動小助手”。

  本文由正運(yùn)動小助手原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運(yùn)動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。

  

  37.png

  


標(biāo)簽: 運(yùn)動控制器

點(diǎn)贊

分享到:

上一篇: SOR 5NN-K45-N4-F1A 45-550P...

下一篇:運(yùn)動控制卡應(yīng)用開發(fā)教程之VC6.0

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號