色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

NUC980 DIY項目大挑戰 - EtherCAT實現

RTThread物聯網操作系統 ? 來源:未知 ? 2023-02-02 11:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.背景

最近計劃DIY一個EtherCAT控制器,一直在看資料和選型,初步定了NUC980的方案,主要是看中NUC980的RAM比較大,采購還算方便(最近缺芯,大家都懂)。
選定硬件之后,NUC980跑什么系統呢?從以往經驗來看,ARM9一般跑linux比較多,資源也好找,同時官方提供BSP。但這次任務有點特殊,EtherCAT對實時性要求比較高,linux不是最合適的。結合MCU開發經驗,就準備上個RTOS,以前M3和M4的芯片,主要用FreeRTOS,最近也開始用RT-Thread。新唐官方也推出了NUC980的RT-Thread版BSP,對開發者非常友好,最終決定了NUC980+RT-Thread的方案。
剛好最近官方有個DIY項目官方活動,就報了名。

2.EtherCAT主站軟件方案

EtherCAT本身還是比較復雜的,我們就不自己造輪子了,考慮用開源方案,畢竟硬件成本這么低,商用方案是真的用不起啊!
現在開源主站主要就兩種,SOEM和IGH(相關的資料網上很多,這兒就不展開了),IGH只支持linux,所以只能選SOME,最新版本是SOEM1.4,本次移植就基于該版本。
3. 移植過程

3.1 RT-Thread 下載

本次移植基于最新發布的release4.1.0, 這個可以到github下載,最近Gitee也更新了。移植EtherCAT之前,首先把Nuvoton的BSP跑起來。這個參考官方的文檔就可以了。

3.2 Some移植

下載soem-1.4.0,將整個目錄放在rt-thread項目里,下圖是我的目錄,供參考

在some-1.4.0及其子目錄中需要手工編輯SConscript腳本,這兒就不展開了。后續我把源碼打包發上來。

Some移植主要是三個文件 osal.c,oshw.c和nicdrv.c。

osal.c 主要是微秒及的延時和定時函數;

oshw.c 主要是網絡端和本機端數據的大小端轉換;

nicdrv.c 主要是網絡數據收發。

Some已經給出了很多操作系統移植,我的移植是基于rtk,這個是嵌入式系統,和我們的開發環境最接近。

3.2.1 osal.c移植

主要內容是實現osal_usleeposal_gettimeofday兩個函數。

我開始思路是自定義一個定時器用于EtherCAT,當時用了Timer4。等實現差不多了,發現系統時鐘用的是Timer5,很多地方功能重復。最終和系統共用Timer5,省了個Timer,代碼也簡化了不少。下面就是改動過的相關代碼,osal_timer_init這個初始化函數要在啟動EhterCAT功能之前調用。

 1staticrt_uint32_tus_ticks;
2voidosal_timer_init(void)
3
{
4rt_uint32_tcmp=ETIMER_GetCompareData(5);
5us_ticks=1*cmp/(1000000/RT_TICK_PER_SECOND);
6rt_kprintf("rt-threadhwtimer51us=%dticks ",us_ticks);
7}
8intosal_usleep(uint32usec)
9
{
10//udelay(usec);
11/*ajustmentforprecision*/
12//usec-=usec/4080;
13usec-=usec/1500;
14/*rt_hw_us_delayworkforadelaylessthan16us*/
15do{
16if(usec>=1000)
17{
18rt_hw_us_delay(1000);
19usec-=1000;
20}else{
21rt_hw_us_delay(usec);
22usec=0;
23}
24}while(usec>0);
25return0;
26}
27intosal_gettimeofday(structtimeval*tv,structtimezone*tz)
28
{
29//returngettimeofday(tv,tz);
30RT_ASSERT(tv!=NULL);
31rt_uint32_ttimer_tick,rt_tick;
32rt_base_tlevel=rt_hw_interrupt_disable();
33timer_tick=ETIMER_GetCounter(5);
34rt_tick=rt_tick_get();
35rt_hw_interrupt_enable(level);
36tv->tv_sec=rt_tick/1000;
37tv->tv_usec=(rt_tick%1000)*1000+timer_tick/us_ticks;
38return0;
39}

3.2.2 oshw.c移植

不需做什么工作。


3.2.3 nicdrv.c移植

主要修改就是調用自己的網絡發送和接收函數,我把它們命名為net_send和net_recv。這兩個函數最好的實現是直接操作網卡(或者叫emac),我現在的實現參考了tcpdump的方法,在協議棧中加鉤子(hook)實現,這樣對原來系統影響最小,網口除了EtherCAT,還可以當正常的網口用。


ecx_setupnic函數中創建mutex(這個按照rt-thread格式改一下即可),安裝網絡鉤子

ecx_closenic函數中刪除mutex,卸載網絡鉤子。


3.2.4 net_hook.c實現


主要實現EtherCAT數據幀收發,中間加了個環形緩沖區用于接收。具體原理就是在網卡加個鉤子函數,有數據來的時候先經過鉤子函數,我們把EtherCAT數據幀截住,不傳給原來的lwip協議棧;如果要發送數據,就直接調用發送函數,繞過lwip協議棧。這樣也不影響lwip協議棧工作。


具體實現見附件。


3.2.5 some基本功能測試


采用官方的slave_info測試代碼,測試主要分為時鐘測試和soem EtherCAT協議棧基本功能測試。在終端中輸入 soem_test + 回車即可。


我接了一個匯川IS620N驅動器,下面是輸出的部分內容:

 1Slave:1
2Name:IS620N
3Outputsize:96bits
4Inputsize:224bits
5State:4
6Delay:0[ns]
7HasDC:1
8DCParentport:0
9Activeports:1.0.0.0
10Configuredaddress:1001
11Man:00100000ID:000c0108Rev:00010001
12SM0A:1000L:128F:00010026Type:1
13SM1A:1400L:128F:00010022Type:2
14SM2A:1800L:12F:00010064Type:3
15SM3A:1c00L:28F:00010020Type:4
16FMMU0Ls:00000000Ll:12Lsb:0Leb:7Ps:1800Psb:0Ty:02Act:01
17FMMU1Ls:0000000cLl:28Lsb:0Leb:7Ps:1c00Psb:0Ty:01Act:01
18FMMUfunc0:11:22:03:0
19MBXlengthwr:128rd:128MBXprotocols:04
20CoEdetails:0dFoEdetails:00EoEdetails:00SoEdetails:00
21Ebuscurrent:0[mA]
22onlyLRD/LWR:0



4. 運動控制測試


基礎工作做好以后,我們就能真正的控制電機運行了。在控制電機運行之前,還需要了解CIA402相關的規范,啟動伺服需要按照規范要求,按順序來。


程序主要流程如下,具體代碼見附件。


a)初始化時鐘 osal_timer_init

b)初始化網卡ec_init

c)等待進入INIT態


d)初始化驅動器(is620n)ec_config_init

e)DC配置


f)申請并等待進入Pre-OP態

g)配置過程數據TxPDO/RxPDO(自定義函數process_data_config)

h)配置FMMU ec_config_map


i)申請并等待進入Safe-OP態


j)設置CSP模式

k)發送和接收過程數據1次,觸發SLAVE

l)申請并等待進入OP態


m)進入過程數據收發循環


在進入數據數據收發循環后,按次序發送控制字啟動伺服(6040h發送6,7和15),然后就可以不斷發送新的控制位置讓電機轉起來了!



5. 總結


整個移植過程還是充滿了挑戰,主要也是因為今年才開始接觸EtherCAT,很多概念是邊學邊用,網上也參考了不少同學的帖子。很多人反應匯川的伺服用SOEM驅動DC同步模式總是有問題,確實遇到了很多奇奇怪怪的問題。經過這兩個月的折騰,總算開了個頭,基礎打好了。

下一步可優化的就是現在的網絡移植改用直接操作emac,這樣可以減少網絡抖動。

附件程序里還參考本站貼子移植了uffs文件系統,編譯如果有問題,可能還需要下載uffs、ramdisk、optparse和netutils包。

鏈接:
https://pan.baidu.com/s/1uWbiUfzX1R061OJQ5LG6OQ?pwd=wdtt
提取碼: wdtt

SOEM已經提交PR #1260,等待通過。有問題可通過本帖留言或郵件聯系我,大家一起改進。


版權聲明:本文為RT-Thread論壇用戶「lg28870983」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。


原文鏈接:

https://club.rt-thread.org/ask/article/160414965e80294e.html


———————End———————


你可以添加微信:rtthread2020 為好友,注明:公司+姓名,拉進RT-Thread官方微信交流群!



愛我就給我點在看

點擊閱讀原文


原文標題:NUC980 DIY項目大挑戰 - EtherCAT實現

文章出處:【微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RT-Thread
    +關注

    關注

    32

    文章

    1414

    瀏覽量

    42027

原文標題:NUC980 DIY項目大挑戰 - EtherCAT實現

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    絕了!耐達訊自動化EtherCAT轉RS232盤活RFID閱讀器

    家人們,作為工程師,咱們在項目里遇到通信協議“打架”的情況還少嗎?今天就來聊聊耐達訊自動化EtherCAT轉RS232網關連接RFID閱讀器,堪稱工業界的“破圈”妙方。 咱先了解下這仨主角
    發表于 07-23 15:34

    耐達訊自動化EtherCAT轉RS232:示波器連接的“開掛秘籍”

    一個復雜的電力系統測試項目,需要把多臺RS232接口的示波器接入基于EtherCAT的自動化測試系統。可兩者通信不兼容,數據傳輸成了大問題。后來他用了耐達訊自動化EtherCAT轉RS232網關,把網關
    發表于 07-23 15:31

    醫療界的“萬能轉換器耐達訊EtherCAT轉RS\\-232“協議互聯的秘密武器

    采用EtherCAT時,如何讓“老司機”搭上“新生代”的快車,就成了一個核心技術挑戰。 兩者的“性格”迥異。RS-232網關是低速、點對點的串行標準,簡單可靠。而EtherCAT協議則是基于以太網的實時
    發表于 07-23 15:28

    RS232轉EtherCAT網關讓電力儀表開啟\"躺贏\"模式

    在電力自動化領域,RS232儀表與Ethercat網絡間的協議壁壘常令工程師頭疼。如何低成本實現數據互通?本文從技術與應用角度解析這一問題的解決方案。 技術痛點與需求 RS232儀表憑借可靠性在
    發表于 07-21 15:31

    耐達訊RS232轉Ethercat網關:建筑驅動連接的“秘密武器”

    ,能夠讓舊設備也能享受到Ethercat的優勢,實現與現代控制系統的無縫對接。 在實際的建筑項目中,我們就遇到過這樣的問題。某建筑項目中,有一批采用Rs232接口的驅動器,由于控制系統
    發表于 07-21 15:29

    讓老舊醫療設備“聽懂”新語言:CAN轉EtherCAT的醫療行業應用

    與中央控制系統通信。工程師部署了耐達訊通信技術CAN轉EtherCAT網關后,通過以下步驟實現連接: 硬件連接:將網關的CAN接口接入驅動模塊,EtherCAT接口接入主控PLC; 參數配置:在
    發表于 07-18 15:27

    破界而立:CAN轉EtherCAT在VAV系統的融合實踐

    EtherCAT的100Mbps帶寬,支持128個溫控節點同步通信;3)通過標準以太網接口實現BAS系統的集中管理。在需要分階段升級的項目中,該方案可使系統擴容周期縮短40%。 總結:在建筑智能化改造
    發表于 07-16 14:27

    CAN轉EtherCAT:化工行業高效通信的“破局者”

    ?如何在復雜工況下實現毫秒級實時響應?這一系列挑戰,正成為化工智能化升級的“絆腳石”。 化工場景中,傳感器、執行器多采用CAN總線協議,而控制層普遍部署EtherCAT網絡。兩者協議差異導致數據交互需通過
    發表于 07-15 15:40

    打破協議壁壘,CAN轉EtherCAT連接工業相機秒變跨國CP”!

    傳感器控制;EtherCAT低延遲、高吞吐,適配實時圖像傳輸。當需要將CAN相機接入EtherCAT網絡時,耐達訊通信技術CAN轉EtherCAT網關成為核心橋梁,通過數據幀解析與映射實現
    發表于 07-14 16:20

    CAN轉EtherCAT網關在食品機械領域的應用

    ethercat
    無錫耐特森
    發布于 :2025年07月11日 17:06:17

    PROFINET到EtherCAT主站協議轉換網關的工程實現指引

    ethercat
    jf_69310483
    發布于 :2025年07月09日 11:25:48

    PROFINET轉EtherCAT網關的基礎原理應用

    ethercat
    jf_69310483
    發布于 :2025年07月08日 17:53:16

    突破性技術:制藥凍干機實現EtherCAT與Profinet網關模塊無縫監控集成

    案例分享:凍干機EtherCAT 轉 Profinet 實現溫濕度監控 在現代醫藥生產過程中,凍干機作為關鍵設備,對溫濕度的控制與監測尤為重要。某醫藥企業在其凍干機系統升級中,面臨一個典型的通訊挑戰
    的頭像 發表于 03-19 13:55 ?278次閱讀
    突破性技術:制藥凍干機<b class='flag-5'>實現</b><b class='flag-5'>EtherCAT</b>與Profinet網關模塊無縫監控集成

    科技綻放-EtherCAT轉Profinet網關智能連接項目

    開疆智能EtherCAT轉Profinet網關智能連接項目:直接體現了從Profinet到EtherCAT的連接核心內容,智能連接突出了該項目的技術特點。工業互聯方案強調了該
    的頭像 發表于 12-09 17:15 ?419次閱讀
    科技綻放-<b class='flag-5'>EtherCAT</b>轉Profinet網關智能連接<b class='flag-5'>項目</b>

    舵機技術新紀元:解鎖DIY項目的無限可能

    Hey小伙伴們,在DIY的世界里,你是否曾因為找不到一款合適的舵機而苦惱?是不是總覺得你的遙控車、機器人或無人機少了那份精準與靈動?今天,就讓我們一起走進舵機的技術殿堂,探索那些讓DIY項目從此起飛
    的頭像 發表于 10-30 15:42 ?646次閱讀
    主站蜘蛛池模板: 无码AV动漫精品一区二区免费 | 国产精品99久久久久久AV下载 | 亚久久伊人精品青青草原2020 | 涩涩免费视频软件 | 无限资源在线看影院免费观看 | 99视频在线免费观看 | 午夜亚洲国产理论片二级港台二级 | 色鲁97精品国产亚洲AV高 | 中文字幕亚洲无线码一区 | 小p孩玩成年女性啪啪资源 小777论坛 | 免费撕开胸罩吮胸视频 | 最近韩国HD免费观看国语 | 伧理片午夜伧理片 | 美女扒开尿口让男生添动态图 | 扒开双腿疯进出爽爽爽动态图 | 日本69xx 老师| 国产伦精品一区二区三区 | 2017必看无码作品 | 娇喘嗯嗯 轻点啊视频福利 娇喘高潮教室h | 中文字幕成人 | 国产成人午夜精品免费视频 | 日日干夜夜爱 | 成人高清网站 | 国产午夜在线观看视频播放 | 亚洲无遮挡无码A片在线 | 欲奴第一季在线观看全集 | 亚洲国产精品线在线观看 | 久久青草热热在线精品 | 野花韩国高清完整版在线观看5 | 一二三四韩国免费观看 | MMM日本兽交 | 伦理79电影网在线观看 | 午夜国产羞羞视频免费网站 | 97资源总站(中文字幕) | 超碰caoporn | 伦理片在线线手机版韩国免费6 | 永久免费精品影视网站 | 国产精品久久国产三级国不卡顿 | 诱人的秘书BD在线观看 | 在线亚洲精品福利网址导航 | 日本美女靠逼 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品