http://www.henanjusheng.com 2026-04-30 09:43 深圳市正運(yùn)動(dòng)技術(shù)有限公司
今天,正運(yùn)動(dòng)小助手給大家分享一下ZMC432-V2運(yùn)動(dòng)控制器在EtherCAT總線(xiàn)下通過(guò)PDO指令實(shí)現(xiàn)PDO數(shù)據(jù)字典交互,并以SMC總線(xiàn)電缸為例進(jìn)行控制的快速入門(mén)教程。
01 ZMC432-V2運(yùn)動(dòng)控制器介紹
ZMC432-V2高性能多軸運(yùn)動(dòng)控制器是一款兼容EtherCAT總線(xiàn)和脈沖型的獨(dú)立式運(yùn)動(dòng)控制器,自帶6軸本地差分脈沖軸,最多可擴(kuò)展至32軸,能實(shí)現(xiàn)總線(xiàn)軸+脈沖軸混合插補(bǔ)的多軸運(yùn)動(dòng)控制場(chǎng)合。同時(shí)支持正運(yùn)動(dòng)遠(yuǎn)程顯示功能,能提供網(wǎng)絡(luò)組態(tài)顯示,可實(shí)時(shí)監(jiān)控和調(diào)整參數(shù)配置。

ZMC432-V2硬件功能特性
(1)支持32軸運(yùn)動(dòng)控制(脈沖+EtherCAT總線(xiàn)),EtherCAT最小通訊周期可達(dá)125us。
(2)24路通用輸入、12路通用輸出,2路模擬量輸出(DA),其中包括2路高速輸入和2路高速輸出。
(3)6路差分脈沖軸輸出,總線(xiàn)軸、脈沖軸可混合插補(bǔ)。
(4)內(nèi)置多項(xiàng)實(shí)時(shí)性運(yùn)動(dòng)控制功能,例如視覺(jué)飛拍、多維PSO、高速位置鎖存,多軸同步運(yùn)行等。
(5)可通過(guò)EtherCAT擴(kuò)展模塊進(jìn)行IO硬件資源擴(kuò)展,可擴(kuò)展至4096個(gè)隔離輸入口和4096個(gè)隔離輸出口。
(6)具備豐富的運(yùn)動(dòng)控制功能,如點(diǎn)位運(yùn)動(dòng)、電子凸輪、直線(xiàn)插補(bǔ)、圓弧插補(bǔ)、連續(xù)軌跡加工。
(7)支持掉電檢測(cè)、掉電存儲(chǔ),多種程序加密方式,能夠有效防止系統(tǒng)故障,保護(hù)項(xiàng)目工程文件數(shù)據(jù),并提高系統(tǒng)的可靠性。
(8)通過(guò)純國(guó)產(chǎn)IDE開(kāi)發(fā)環(huán)境RTSys進(jìn)行項(xiàng)目開(kāi)發(fā),可實(shí)時(shí)仿真、在線(xiàn)跟蹤以及診斷與調(diào)試,簡(jiǎn)便易用,支持多種高級(jí)上位機(jī)語(yǔ)言聯(lián)合編程進(jìn)行二次開(kāi)發(fā)。
02 ZMC432-V2控制器接口介紹


03 ZMC432-V2控制器接線(xiàn)參考
1.數(shù)字量輸入口IN接線(xiàn)

圖1 輸入口通用接線(xiàn)圖

圖2 輸入口單端編碼器接線(xiàn)圖
2.數(shù)字量輸出口接線(xiàn)

圖3 輸出口通用接線(xiàn)圖

圖4 輸出口單端脈沖軸接線(xiàn)圖
04
控制器開(kāi)發(fā)
1.PC開(kāi)發(fā)
支持以下語(yǔ)言進(jìn)行開(kāi)發(fā),我們所有的開(kāi)發(fā)語(yǔ)言和所有控制器提供的都是同一套API接口。

2.脫機(jī)開(kāi)發(fā)
使用自主自研的IDE RTSys進(jìn)行開(kāi)發(fā),支持Basic、梯形圖開(kāi)發(fā)。

05
PDO的基本概念介紹
EtherCAT總線(xiàn)簡(jiǎn)介:
EtherCAT為倍福公司開(kāi)發(fā)的一種基于以太網(wǎng)的開(kāi)放式架構(gòu)的實(shí)時(shí)工業(yè)現(xiàn)場(chǎng)總線(xiàn)通訊協(xié)議,現(xiàn)已發(fā)展為一種標(biāo)準(zhǔn)協(xié)議,目前是最快的工業(yè)以太網(wǎng)技術(shù)之一,具有高性能、拓?fù)浣Y(jié)構(gòu)靈活,低成本、高精度、應(yīng)用簡(jiǎn)單等優(yōu)點(diǎn)。
EtherCAT充分利用了以太網(wǎng)的全雙工特性,使用主從模式介質(zhì)訪(fǎng)問(wèn)控制。
控制器EtherCAT通訊口和EtherCAT從站之間通過(guò)COE(CANopen over EtherCAT)協(xié)議進(jìn)行數(shù)據(jù)交換。
控制器和從站之間數(shù)據(jù)傳輸?shù)膬煞N方式:
①按指定時(shí)間周期性交換數(shù)據(jù),稱(chēng)為PDO。
②請(qǐng)求應(yīng)答式交換數(shù)據(jù),稱(chēng)為SDO。
EtherCAT總線(xiàn)通信過(guò)程如下:

PDO是什么?在EtherCAT總線(xiàn)中起到什么作用?
PDO全名為Process Data Object,指在EtherCAT總線(xiàn)網(wǎng)絡(luò)中周期的進(jìn)行主站與從站的數(shù)據(jù)交互的功能。
PDO數(shù)據(jù)用于周期性數(shù)據(jù)讀取和控制,讀寫(xiě)速度快。
主站和從站通過(guò)PDO進(jìn)行數(shù)據(jù)交換時(shí),一方發(fā)送數(shù)據(jù)后,另一方不需要應(yīng)答。
控制器通過(guò)指令控制EtherCAT從站時(shí),控制器和從站之間通過(guò)PDO方式進(jìn)行數(shù)據(jù)交換。
PDO列表可以看作一個(gè)數(shù)組空間,每個(gè)數(shù)組元素存放了不同的功能碼,PDO在一個(gè)周期中執(zhí)行這些功能碼對(duì)應(yīng)的操作,這些功能碼就叫做數(shù)據(jù)字典,數(shù)據(jù)字典用4位16進(jìn)制數(shù)來(lái)表示。
PDO分為兩種:從站傳送數(shù)據(jù)給主站用的TxPDO和主站傳送數(shù)據(jù)給從站用的RxPDO。
其中EtherCAT總線(xiàn)上控制器為主站,伺服驅(qū)動(dòng)器或其他總線(xiàn)模塊為從站。
一個(gè)節(jié)點(diǎn)的TxPDO是將數(shù)據(jù)由此節(jié)點(diǎn)傳輸?shù)狡渌?jié)點(diǎn),而RxPDO則是接收由其他節(jié)點(diǎn)傳輸?shù)臄?shù)據(jù)。
PDO報(bào)文數(shù)據(jù)域中每個(gè)字節(jié)都用作數(shù)據(jù)傳輸,因此報(bào)文利用率高。
06
PDO相關(guān)指令說(shuō)明
1.NODE_PDOBUFF--特殊設(shè)備PDO設(shè)置

2.NODE_PDO_WRBUFF--偏移修改PDO

3.NODE_PDO_RDBUFF--偏移讀取PDO

07
如何導(dǎo)入總線(xiàn)電缸設(shè)備的配置文件并查詢(xún)PDO信息
從站設(shè)備描述文件ESI是EtherCAT從站設(shè)備的配置文件,文件為XML格式。它由從站設(shè)備制造商提供,主要包含該設(shè)備所有能被主站識(shí)別、配置和控制的必要信息,其核心作用是讓主站能認(rèn)識(shí)從站,控制器可以通過(guò)配置文件識(shí)別電缸設(shè)備信息并完成對(duì)應(yīng)的過(guò)程數(shù)據(jù)對(duì)象PDO的映射與配置。
添加SMC總線(xiàn)電缸的配置文件
方式一:在RTSys軟件配置文件中添加xml文件。
①將對(duì)應(yīng)電缸設(shè)備的xml文件復(fù)制到工程路徑的文件夾里。

②打開(kāi)RTSys【工程視圖】→【配置文件】→【增加到配置文件】。

③選擇目標(biāo)xml文件→【打開(kāi)】。

④這樣xml文件就添加到配置文件中了。(注:xml文件添加會(huì)自動(dòng)轉(zhuǎn)為zml文件)

方式二:通過(guò)XMLParsingTools工具將XML文件轉(zhuǎn)換成ZML文件再添加進(jìn)配置文件。(此軟件可以在正運(yùn)動(dòng)技術(shù)官網(wǎng)-技術(shù)與支持-下載中心-工具軟件中下載)
①打開(kāi)XMLParsingTools工具,點(diǎn)擊左上角文件夾位置-【Open xml】。

②選擇想要轉(zhuǎn)換的xml文件-【打開(kāi)】。

③打開(kāi)后選擇對(duì)應(yīng)的從站型號(hào)、從站類(lèi)型為特殊設(shè)備。

④點(diǎn)擊左上角文件夾位置-【Export zml】導(dǎo)出。

⑤選擇對(duì)應(yīng)路徑-設(shè)置文件名(不超過(guò)20個(gè)字符)-【保存】。

⑥打開(kāi)RTSys【工程視圖】→【配置文件】→【增加到配置文件】。

⑦選擇要添加的zml文件-【打開(kāi)】即可完成zml文件的添加。

下載basic程序執(zhí)行總線(xiàn)初始化
添加配置文件后,點(diǎn)擊【下載到RAM/ROM】即可把配置文件的信息導(dǎo)入到控制器,使控制器識(shí)別該設(shè)備,然后執(zhí)行總線(xiàn)初始化,讓控制器作為主站和EtherCAT總線(xiàn)電缸從站設(shè)備建立正常通訊。

查詢(xún)當(dāng)前設(shè)備PDO映射信息
總線(xiàn)初始化完成、控制器和總線(xiàn)電缸設(shè)備通訊上后,可以通過(guò)RTSys在線(xiàn)命令功能,輸入ZTEST(30,10,nodeid)指令即可查詢(xún)對(duì)應(yīng)節(jié)點(diǎn)編號(hào)設(shè)備的PDO映射與關(guān)鍵數(shù)據(jù)字典信息。
如下圖為總線(xiàn)驅(qū)動(dòng)器查詢(xún)示例:在線(xiàn)命令執(zhí)行ZTEST(30,10,0)后,打印輸出該節(jié)點(diǎn)0的總線(xiàn)驅(qū)動(dòng)器的當(dāng)前PDO信息。

08
使用NODE_PDOBUFF指令對(duì)總線(xiàn)電缸實(shí)現(xiàn)控制和狀態(tài)檢測(cè)
以SMC EtherCAT總線(xiàn)電缸為例

電缸,也稱(chēng)電動(dòng)缸,是將伺服電機(jī)與絲杠一體化設(shè)計(jì)的模塊化產(chǎn)品,將伺服電機(jī)的旋轉(zhuǎn)運(yùn)動(dòng)轉(zhuǎn)換成直線(xiàn)運(yùn)動(dòng)。
SMC EtherCAT總線(xiàn)電缸通過(guò)EtherCAT總線(xiàn)接收控制指令,實(shí)現(xiàn)位置等模式控制,并能反饋實(shí)時(shí)的位置、狀態(tài)及故障等信息。
EtherCAT總線(xiàn)電缸的控制,與EtherCAT總線(xiàn)變頻器等從站類(lèi)似,主要區(qū)別在于各廠(chǎng)家數(shù)據(jù)字典的定義不同,需查閱電缸說(shuō)明手冊(cè)或聯(lián)系廠(chǎng)家技術(shù)支持,明確動(dòng)作所需要的參數(shù)地址及寫(xiě)入順序,使用NODE_PDOBUFF指令即可實(shí)現(xiàn)控制。
下面通過(guò)Basic編程實(shí)現(xiàn)電缸定位控制及報(bào)警檢測(cè)。SMC電缸設(shè)備的PDO映射列表如下圖所示,按照該參數(shù)地址操作即可實(shí)現(xiàn)控制,更多參數(shù)說(shuō)明可見(jiàn)電缸手冊(cè)對(duì)應(yīng)章節(jié)詳細(xì)內(nèi)容。


總線(xiàn)電缸進(jìn)行參數(shù)初始化
在進(jìn)行定位控制之前,要對(duì)電缸進(jìn)行必要的參數(shù)初始化設(shè)置,根據(jù)手冊(cè)7011h詳細(xì)說(shuō)明可見(jiàn),當(dāng)bit4-15置ON時(shí)才可修改對(duì)應(yīng)參數(shù)數(shù)值,因此在參數(shù)初始化時(shí)先通過(guò)node_pdobuff指令將7011h的bit4-15置位后再設(shè)置各數(shù)據(jù)的初始化數(shù)值。

'iNode - 電缸節(jié)點(diǎn)號(hào),有多個(gè)電缸時(shí)由iNode區(qū)分不同電缸 '*****************************SMC電缸初始化 ************************** global sub sub_SMC_Init(iNode) '初始化SMC電缸的相關(guān)參數(shù) node_pdobuff(0,iNode,$7011,0,6) = (node_pdobuff(0,iNode,$7011,0,6) Or $FFF0) '數(shù)據(jù)字典7011h bit4-15 置1,開(kāi)放參數(shù)修改限制 node_pdobuff(0,iNode,$7020,0,5) = SET_BIT(0,node_pdobuff(0,iNode,$7020,0,5)) '數(shù)據(jù)字典7020h bit0 置1,設(shè)置絕對(duì)值模式 '扭矩模式參數(shù) node_pdobuff(0,iNode,$7025,0,6) = 0'推壓力(設(shè)0為定位運(yùn)行),對(duì)應(yīng)數(shù)據(jù)字典7025h node_pdobuff(0,iNode,$7026,0,6) = 0 '閥值,對(duì)應(yīng)數(shù)據(jù)字典7026h node_pdobuff(0,iNode,$7027,0,6) = 0'推動(dòng)速度,對(duì)應(yīng)數(shù)據(jù)字典7027h '扭矩/位置模式通用參數(shù) node_pdobuff(0,iNode,$7028,0,6) = 100'決定位置推力,對(duì)應(yīng)數(shù)據(jù)字典7028h node_pdobuff(0,iNode,$7029,0,7) = 0 '區(qū)域1,對(duì)應(yīng)數(shù)據(jù)字典7029h node_pdobuff(0,iNode,$702A,0,7) = 0'區(qū)域2,對(duì)應(yīng)數(shù)據(jù)字典702Ah node_pdobuff(0,iNode,$702B,0,7) = 50 '決定位置寬度,對(duì)應(yīng)數(shù)據(jù)字典702Bh end sub
總線(xiàn)電缸上使能并執(zhí)行回零動(dòng)作
執(zhí)行定位動(dòng)作之前需要進(jìn)行伺服使能和原點(diǎn)回零的準(zhǔn)備工作,根據(jù)手冊(cè)說(shuō)明將7010h的bit9和bit12置1即可執(zhí)行上使能和執(zhí)行回零動(dòng)作。

①總線(xiàn)電缸打開(kāi)/關(guān)閉使能。
'iNode - 電缸節(jié)點(diǎn)號(hào) Istatus -使能狀態(tài) 0/1 '*****************************SMC電缸使能 ************************** global sub SMC_AxisEnAble(iNode,Istatus) if(Istatus = 0) then '關(guān)閉使能,對(duì)應(yīng)數(shù)據(jù)字典7010h node_pdobuff(0,iNode,$7010,0,6) = CLEAR_BIT(9,node_pdobuff(0,iNode,$7010,0,6)) else '打開(kāi)使能,對(duì)應(yīng)數(shù)據(jù)字典7010h node_pdobuff(0,iNode,$7010,0,6) = SET_BIT(9,node_pdobuff(0,iNode,$7010,0,6)) endif end sub
②總線(xiàn)電缸執(zhí)行回零動(dòng)作,并判斷回零是否完成。
'iNode - 電缸節(jié)點(diǎn)號(hào) '*****************************SMC電缸回零 ************************** global sub SMC_AxisHome(iNode) '回零標(biāo)志置1,對(duì)應(yīng)數(shù)據(jù)字典7010h node_pdobuff(0,iNode,$7010,0,6) = SET_BIT(12,node_pdobuff(0,iNode,$7010,0,6)) delay(500) '回零標(biāo)志復(fù)位,對(duì)應(yīng)數(shù)據(jù)字典7010h node_pdobuff(0,iNode,$7010,0,6) = CLEAR_BIT(12,node_pdobuff(0,iNode,$7010,0,6)) LOCAL TimeOut '超時(shí)時(shí)間60s TimeOut=60000 '等待回零完成 WHILE TimeOut>0 '根據(jù)6010h的各bit位的狀態(tài)來(lái)判斷回零是否完成---具體判斷查閱電缸手冊(cè) IF READ_BIT2(10,node_pdobuff(0,0,$6010,0,6))=1 THEN IF READ_BIT2(11,node_pdobuff(0,0,$6010,0,6))=1 THEN PRINT "回零完成,回零動(dòng)作正常" RETURN ELSE PRINT "回零結(jié)束,回零動(dòng)作異常" RETURN ENDIF ENDIF DELAY(10) TimeOut = TimeOut-10 WEND IF TimeOut <=0 THEN PRINT "回零超時(shí)" ENDIF end sub
總線(xiàn)電缸執(zhí)行定位運(yùn)動(dòng)
先向電缸寫(xiě)入目標(biāo)位置、速度、加減速度參數(shù),再將啟動(dòng)標(biāo)志(7012h)bit0置ON,執(zhí)行定位運(yùn)動(dòng)。
'iNode - 電缸節(jié)點(diǎn)號(hào)' iPos - 目標(biāo)位置的絕對(duì)坐標(biāo),單位0.01mm,寫(xiě)100就是1mm' iSpeed - 運(yùn)動(dòng)速度,單位1mm/s' iAcc - 運(yùn)動(dòng)加速度,單位1mm/s/s 'iDec - 運(yùn)動(dòng)減速度,單位1mm/s/s '*****************************SMC電缸定位運(yùn)動(dòng) ************************** global sub SMC_AxisMove(iNode,ipos,iSpeed,iAcc,iDec) node_pdobuff(0,iNode,$7021,0,6) = iSpeed '速度,對(duì)應(yīng)數(shù)據(jù)字典7021h node_pdobuff(0,iNode,$7023,0,6) = iAcc '加速度,對(duì)應(yīng)數(shù)據(jù)字典7023h node_pdobuff(0,iNode,$7024,0,6) = iDec '減速度,對(duì)應(yīng)數(shù)據(jù)字典7024h node_pdobuff(0,iNode,$7022,0,7) = ipos '目標(biāo)位置,對(duì)應(yīng)數(shù)據(jù)字典7022h '啟動(dòng)標(biāo)志置1,對(duì)應(yīng)數(shù)據(jù)字典7012h node_pdobuff(0,iNode,$7012,0,5) = SET_BIT(0,node_pdobuff(0,iNode,$7012,0,5)) delay(100) '啟動(dòng)標(biāo)志復(fù)位,對(duì)應(yīng)數(shù)據(jù)字典7012h node_pdobuff(0,iNode,$7012,0,5) = CLEAR_BIT(0,node_pdobuff(0,iNode,$7012,0,5)) end sub
檢測(cè)總線(xiàn)電缸是否報(bào)警
讀取6010h的Bit15 ALARM信號(hào),若ALARM信號(hào)為ON,說(shuō)明電缸發(fā)生報(bào)警。
對(duì)應(yīng)的報(bào)警代碼輸出到6030h數(shù)據(jù)字典上,最新觸發(fā)的報(bào)警代碼會(huì)固定輸出到6030h子索引1(報(bào)警1)上,歷史報(bào)警依次推送到報(bào)警2\3\4。
通過(guò)PDO指令讀取6030h子索引為1的數(shù)據(jù)字典,如果該值非0,即可根據(jù)具體報(bào)警代碼對(duì)照手冊(cè)排查故障。


'iNode - 電缸節(jié)點(diǎn)號(hào) '***************************** SMC電缸報(bào)警檢測(cè) ************************** global sub SMC_GetAxisAlm(iNode) local alm_code '定義局部變量 '判斷6010h的bit15 ALARM 是否報(bào)警 if read_bit2(15,node_pdobuff(0,iNode,$6010,0,6)) = 1 then alm_code = node_pdobuff(0,iNode,$6030,1,5) '讀取PDO數(shù)據(jù)賦值給變量 ?"觸發(fā)報(bào)警,當(dāng)前報(bào)警1具體報(bào)警代碼:",alm_code endif end sub
09
如何通過(guò)偏移指令去讀寫(xiě)PDO的使用說(shuō)明
當(dāng)遇到一些特殊設(shè)備無(wú)法使用node_pdobuff指令去讀寫(xiě)數(shù)據(jù)字典時(shí),可以通過(guò)PDO偏移指令實(shí)現(xiàn)讀寫(xiě)功能。讀寫(xiě)指令分別是NODE_PDO_WRBUFF(偏移修改PDO)和NODE_PDO_RDBUFF(偏移讀取PDO)。
下面以總線(xiàn)電缸設(shè)備舉例說(shuō)明該偏移指令的具體用法。
獲取PDO配置信息
查看設(shè)備zml文件中PDO配置選項(xiàng),獲取目標(biāo)數(shù)據(jù)字典在PDO列表中的字節(jié)偏移量和數(shù)據(jù)字節(jié)大小。
其中RxPDO對(duì)應(yīng)的PDO字典內(nèi)容可以通過(guò)NODE_PDO_WRBUFF指令修改;
而TxPDO對(duì)應(yīng)的PDO字典內(nèi)容可以通過(guò)NODE_PDO_RDBUFF指令讀取。

PDO偏移寫(xiě)入示例:修改電缸速度
若需要修改電缸的速度(對(duì)應(yīng)數(shù)據(jù)字典7021h),根據(jù)索引列表信息可知,7021h在PDO中的字節(jié)偏移為6,數(shù)據(jù)字典大小為2字節(jié)。
我們先將要修改的值按小端序字節(jié)拆分后依次存入TABLE數(shù)組,再通過(guò)偏移指令寫(xiě)入從站PDO即可。


舉個(gè)例子:假設(shè)要向節(jié)點(diǎn)1的電缸寫(xiě)入的速度值是1500,那么對(duì)應(yīng)的十六進(jìn)制數(shù)據(jù)是0x05DC,按小端序拆分為2字節(jié)后將其寫(xiě)入TABLE(100)、TABLE(101)后再調(diào)用PDO偏移修改指令:NODE_PDO_WRBUFF(0,1,6,100,2)。
指令參數(shù)對(duì)應(yīng)含義:槽位號(hào)0,從站節(jié)點(diǎn)為1,將TABLE數(shù)組TABLE(100)、TABLE(101)的2字節(jié)數(shù)據(jù)(每個(gè)TABLE存儲(chǔ)1字節(jié)),寫(xiě)入從站PDO偏移6字節(jié)的位置。

PDO偏移讀取示例:讀取電缸當(dāng)前位置
若需要讀取電缸的當(dāng)前位置(對(duì)應(yīng)數(shù)據(jù)字典6020h),根據(jù)索引列表信息可知,6020h在PDO中的字節(jié)偏移為4,數(shù)據(jù)字典大小為4字節(jié)。
調(diào)用偏移讀取指令即可直接從PDO對(duì)應(yīng)偏移位置讀取位置數(shù)據(jù),按小端序字節(jié)拆分后依次存入TABLE數(shù)組,后續(xù)可拼接還原為完整的位置值。


舉個(gè)例子:假設(shè)節(jié)點(diǎn)1的電缸當(dāng)前位置值為80000,那么對(duì)應(yīng)十六進(jìn)制數(shù)據(jù)是0x00013880,調(diào)用PDO偏移讀取指令:NODE_PDO_RDBUFF(0,1,4,100,4)。指令讀取后將數(shù)據(jù)按小端序拆分為4字節(jié),存入對(duì)應(yīng)TABLE(100)~TABLE(103),將TABLE各字節(jié)數(shù)據(jù)并將數(shù)據(jù)合并的結(jié)果如下。
指令參數(shù)對(duì)應(yīng)含義:槽位號(hào)0,從站節(jié)點(diǎn)為1,從從站PDO偏移4字節(jié)處讀取4字節(jié),數(shù)據(jù)依次存入TABLE數(shù)組TABLE(100)~TABLE(103)位置(每個(gè)TABLE存儲(chǔ)1字節(jié))。

10
Basic測(cè)試程序使用步驟
RTSys軟件添加工程項(xiàng)目
①打開(kāi)RTSys軟件,點(diǎn)擊菜單欄【文件】→【打開(kāi)工程】。

②選擇對(duì)應(yīng)文件目錄下的zpj文件。

下載basic程序執(zhí)行總線(xiàn)初始化
點(diǎn)擊【下載到RAM/ROM】把程序下載進(jìn)控制器,執(zhí)行總線(xiàn)初始化完成即可讓控制器和電缸通訊上。

實(shí)現(xiàn)電缸功能控制
總線(xiàn)初始化成功之后,會(huì)執(zhí)行電缸控制流程,對(duì)電缸進(jìn)行參數(shù)初始化后會(huì)循環(huán)檢測(cè)SMC_Cmd的值,通過(guò)修改SMC_Cmd參數(shù)實(shí)現(xiàn)對(duì)應(yīng)功能控制。

Basic電缸控制流程主體代碼:
'****************電缸控制流程**************** global SMC_Cmd '控制指令 SMC_Cmd = 0 global Const SMC_AxisNode = 0 '定義節(jié)點(diǎn)號(hào)為0 sub_SMC_Init(SMC_AxisNode) '初始化節(jié)點(diǎn)0的SMC電缸參數(shù) while 1 if SMC_Cmd = 1 THEN SMC_Cmd = 0 SMC_AxisEnAble(SMC_AxisNode,on) '電缸0 使能 ?"電缸節(jié)點(diǎn)"SMC_AxisNode, "Enable" elseif SMC_Cmd = 2 THEN SMC_Cmd = 0 SMC_AxisEnAble(SMC_AxisNode,off) '電缸0 關(guān)閉使能 ?"電缸節(jié)點(diǎn)"SMC_AxisNode, "disable" elseif SMC_Cmd = 3 THEN SMC_Cmd = 0 SMC_AxisHome(SMC_AxisNode) '電缸0 回零 ?"電缸節(jié)點(diǎn)"SMC_AxisNode, "Datum" elseif SMC_Cmd = 4 THEN SMC_Cmd = 0 SMC_AxisRes(SMC_AxisNode) '電缸0 復(fù)位 ?"電缸節(jié)點(diǎn)"SMC_AxisNode, "RESET" elseif SMC_Cmd = 5 THEN SMC_Cmd = 0 ?SMC_GetAxisPos(SMC_AxisNode) '電缸0 讀取位置 ?SMC_AxisNode, "Current Postion is" elseif SMC_Cmd = 6 THEN SMC_Cmd = 0 ?"enable",SMC_GetIfServo(SMC_AxisNode) '電缸0 是否使能 ?"idle",SMC_GetIfIdle(SMC_AxisNode) '電缸0 是否靜止 ?"inp",SMC_GetIfInp(SMC_AxisNode) '電缸0 是否到位 ?"home",SMC_GetHomeStatus(SMC_AxisNode) '電缸0 是否回零 ?"alm",SMC_GetIfAlm(SMC_AxisNode) '電缸0 是否報(bào)警 ?"almreason",SMC_GetStopReason(SMC_AxisNode) '電缸0 當(dāng)前報(bào)警原因 ?"pos",SMC_GetAxisPos(SMC_AxisNode) '電缸0 當(dāng)前位置 JOG不計(jì)位置 ?SMC_AxisNode, "Current Status" elseif SMC_Cmd = 7 THEN SMC_Cmd = 0 SMC_AxisMove(SMC_AxisNode,100,50,1000,1000) '電缸0 定位 絕對(duì)位置100 速度50 加速度1000 減速度1000 SMC_AxisMove(SMC_AxisNode,0,50,1000,1000) '電缸0 定位 絕對(duì)位置0 速度50 加速度1000 減速度1000 endif wend
教學(xué)視頻請(qǐng)點(diǎn)擊→EtherCAT運(yùn)動(dòng)控制器與EtherCAT總線(xiàn)電缸的自定義PDO控制

正運(yùn)動(dòng)技術(shù)專(zhuān)注于運(yùn)動(dòng)控制技術(shù)研究和通用運(yùn)動(dòng)控制軟硬件產(chǎn)品的研發(fā),是國(guó)家級(jí)高新技術(shù)企業(yè)。正運(yùn)動(dòng)技術(shù)匯集了來(lái)自華為、中興等公司的優(yōu)秀人才,在堅(jiān)持自主創(chuàng)新的同時(shí),積極聯(lián)合各大高校協(xié)同運(yùn)動(dòng)控制基礎(chǔ)技術(shù)的研究。主要業(yè)務(wù)有:運(yùn)動(dòng)控制卡_運(yùn)動(dòng)控制器_EtherCAT運(yùn)動(dòng)控制卡_EtherCAT控制器_運(yùn)動(dòng)控制系統(tǒng)_視覺(jué)控制器__運(yùn)動(dòng)控制PLC_運(yùn)動(dòng)控制_機(jī)器人控制器_視覺(jué)定位_XPCIe/XPCI系列運(yùn)動(dòng)控制卡等等。