欧美韩国日本桃色,一区二区三区国产私人毛片,精品极品精品,亚洲一区人妻,久久久久久久久亚洲免费,青娱乐91,亚洲情涩,久久久成人毛片,日本欧美不卡二区在线

中國(guó)自動(dòng)化學(xué)會(huì)專(zhuān)家咨詢(xún)工作委員會(huì)指定宣傳媒體
文摘詳情
gkongbbs

EtherCAT運(yùn)動(dòng)控制器與EtherCAT總線(xiàn)電缸的自定義PDO控制

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ù)配置。

QQ20260429-104424.webp

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控制器接口介紹

正運(yùn)動(dòng)ZMC432-V2控制器接口介紹.webp

ZMC432-V2控制器接口介紹表格.webp

03 ZMC432-V2控制器接線(xiàn)參考

1.數(shù)字量輸入口IN接線(xiàn)

ZMC432-V2控制器接線(xiàn)參考1.webp

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

ZMC432-V2控制器接線(xiàn)參考2.webp

圖2 輸入口單端編碼器接線(xiàn)圖

2.數(shù)字量輸出口接線(xiàn)

ZMC432-V2控制器接線(xiàn)參考3.webp

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

ZMC432-V2控制器接線(xiàn)參考4.webp

圖4 輸出口單端脈沖軸接線(xiàn)圖

04

控制器開(kāi)發(fā)

1.PC開(kāi)發(fā)

支持以下語(yǔ)言進(jìn)行開(kāi)發(fā),我們所有的開(kāi)發(fā)語(yǔ)言和所有控制器提供的都是同一套API接口。

正運(yùn)動(dòng)控制器開(kāi)發(fā)1pc開(kāi)發(fā).webp

2.脫機(jī)開(kāi)發(fā)

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

正運(yùn)動(dòng)技術(shù)開(kāi)發(fā)環(huán)境及工具.webp

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ò)程如下:

EtherCAT總線(xiàn)通信過(guò)程.webp

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è)置

PDO相關(guān)指令1.png

2.NODE_PDO_WRBUFF--偏移修改PDO

PDO相關(guān)指令2.webp

3.NODE_PDO_RDBUFF--偏移讀取PDO

PDO相關(guān)指令3.webp

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ù)制到工程路徑的文件夾里。

方式一1.webp

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

方式一2.webp

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

方式一3.webp

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

方式一4.webp

方式二:通過(guò)XMLParsingTools工具將XML文件轉(zhuǎn)換成ZML文件再添加進(jìn)配置文件。(此軟件可以在正運(yùn)動(dòng)技術(shù)官網(wǎng)-技術(shù)與支持-下載中心-工具軟件中下載)

①打開(kāi)XMLParsingTools工具,點(diǎn)擊左上角文件夾位置-【Open xml】。

方式二1.webp

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

方式二3.png

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

33333.png

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

four.png

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

方式二5.png

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

方式二6.png

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

方式二7.png

下載basic程序執(zhí)行總線(xiàn)初始化

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

下載basic程序執(zhí)行總線(xiàn)初始化.png

查詢(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信息。

查詢(xún)當(dāng)前設(shè)備PDO映射信息.png

08

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

以SMC EtherCAT總線(xiàn)電缸為例

以SMC EtherCAT總線(xiàn)電缸為例.png

電缸,也稱(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)容。

8(1).png

83.png

總線(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ù)值。

總線(xiàn)電缸進(jìn)行參數(shù)初始化.png

'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)電缸上使能并執(zhí)行回零動(dòng)作.png

①總線(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è)排查故障。

檢測(cè)總線(xiàn)電缸是否報(bào)警1.png

檢測(cè)總線(xiàn)電缸是否報(bào)警2.png

'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配置信息.png

PDO偏移寫(xiě)入示例:修改電缸速度

若需要修改電缸的速度(對(duì)應(yīng)數(shù)據(jù)字典7021h),根據(jù)索引列表信息可知,7021h在PDO中的字節(jié)偏移為6,數(shù)據(jù)字典大小為2字節(jié)。

我們先將要修改的值按小端序字節(jié)拆分后依次存入TABLE數(shù)組,再通過(guò)偏移指令寫(xiě)入從站PDO即可。

PDO偏移寫(xiě)入示例:修改電缸速度1.png

PDO偏移寫(xiě)入示例:修改電缸速度2.png

舉個(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偏移寫(xiě)入示例:修改電缸速度3.png

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ù)可拼接還原為完整的位置值。

PDO偏移讀取示例:讀取電缸當(dāng)前位置1.png

PDO偏移讀取示例:讀取電缸當(dāng)前位置2.png

舉個(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é))。

PDO偏移讀取示例:讀取電缸當(dāng)前位置3.png

10

Basic測(cè)試程序使用步驟

RTSys軟件添加工程項(xiàng)目

①打開(kāi)RTSys軟件,點(diǎn)擊菜單欄【文件】→【打開(kāi)工程】。

Basic測(cè)試程序使用步驟1.png

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

Basic測(cè)試程序使用步驟2.png

下載basic程序執(zhí)行總線(xiàn)初始化

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

下載basic程序執(zhí)行總線(xiàn)初始化.png

實(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)功能控制。

最后一張.png

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控制

二維碼.webp

正運(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)控制卡等等。

版權(quán)所有 工控網(wǎng) Copyright?2026 Gkong.com, All Rights Reserved
陆良县| 和龙市| 富民县| 永川市| 伊通| 镶黄旗| 信宜市| 堆龙德庆县| 临朐县| 岱山县| 崇阳县| 泸定县| 筠连县| 旅游| 获嘉县| 抚远县| 玉山县| 合江县| 勐海县| 岑溪市| 雷山县| 新乡县| 教育| 五指山市| 济源市| 资中县| 台南市| 云梦县| 沙湾县| 福安市| 吐鲁番市| 务川| 双牌县| 彰武县| 南康市| 云和县| 柘城县| 蓬溪县| 民县| 宿州市| 瑞昌市|