chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

NUC980 DIY項(xiàng)目大挑戰(zhàn) - EtherCAT實(shí)現(xiàn)

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來(lái)源:未知 ? 2023-02-02 11:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.背景

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

2.EtherCAT主站軟件方案

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

3.1 RT-Thread 下載

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

3.2 Some移植

下載soem-1.4.0,將整個(gè)目錄放在rt-thread項(xiàng)目里,下圖是我的目錄,供參考

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

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

osal.c 主要是微秒及的延時(shí)和定時(shí)函數(shù);

oshw.c 主要是網(wǎng)絡(luò)端和本機(jī)端數(shù)據(jù)的大小端轉(zhuǎn)換;

nicdrv.c 主要是網(wǎng)絡(luò)數(shù)據(jù)收發(fā)。

Some已經(jīng)給出了很多操作系統(tǒng)移植,我的移植是基于rtk,這個(gè)是嵌入式系統(tǒng),和我們的開發(fā)環(huán)境最接近。

3.2.1 osal.c移植

主要內(nèi)容是實(shí)現(xiàn)osal_usleeposal_gettimeofday兩個(gè)函數(shù)。

我開始思路是自定義一個(gè)定時(shí)器用于EtherCAT,當(dāng)時(shí)用了Timer4。等實(shí)現(xiàn)差不多了,發(fā)現(xiàn)系統(tǒng)時(shí)鐘用的是Timer5,很多地方功能重復(fù)。最終和系統(tǒng)共用Timer5,省了個(gè)Timer,代碼也簡(jiǎn)化了不少。下面就是改動(dòng)過的相關(guān)代碼,osal_timer_init這個(gè)初始化函數(shù)要在啟動(dòng)EhterCAT功能之前調(diào)用。

 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移植

主要修改就是調(diào)用自己的網(wǎng)絡(luò)發(fā)送和接收函數(shù),我把它們命名為net_send和net_recv。這兩個(gè)函數(shù)最好的實(shí)現(xiàn)是直接操作網(wǎng)卡(或者叫emac),我現(xiàn)在的實(shí)現(xiàn)參考了tcpdump的方法,在協(xié)議棧中加鉤子(hook)實(shí)現(xiàn),這樣對(duì)原來(lái)系統(tǒng)影響最小,網(wǎng)口除了EtherCAT,還可以當(dāng)正常的網(wǎng)口用。


ecx_setupnic函數(shù)中創(chuàng)建mutex(這個(gè)按照rt-thread格式改一下即可),安裝網(wǎng)絡(luò)鉤子

ecx_closenic函數(shù)中刪除mutex,卸載網(wǎng)絡(luò)鉤子。


3.2.4 net_hook.c實(shí)現(xiàn)


主要實(shí)現(xiàn)EtherCAT數(shù)據(jù)幀收發(fā),中間加了個(gè)環(huán)形緩沖區(qū)用于接收。具體原理就是在網(wǎng)卡加個(gè)鉤子函數(shù),有數(shù)據(jù)來(lái)的時(shí)候先經(jīng)過鉤子函數(shù),我們把EtherCAT數(shù)據(jù)幀截住,不傳給原來(lái)的lwip協(xié)議棧;如果要發(fā)送數(shù)據(jù),就直接調(diào)用發(fā)送函數(shù),繞過lwip協(xié)議棧。這樣也不影響lwip協(xié)議棧工作。


具體實(shí)現(xiàn)見附件。


3.2.5 some基本功能測(cè)試


采用官方的slave_info測(cè)試代碼,測(cè)試主要分為時(shí)鐘測(cè)試和soem EtherCAT協(xié)議?;竟δ軠y(cè)試。在終端中輸入 soem_test + 回車即可。


我接了一個(gè)匯川IS620N驅(qū)動(dòng)器,下面是輸出的部分內(nèi)容:

 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. 運(yùn)動(dòng)控制測(cè)試


基礎(chǔ)工作做好以后,我們就能真正的控制電機(jī)運(yùn)行了。在控制電機(jī)運(yùn)行之前,還需要了解CIA402相關(guān)的規(guī)范,啟動(dòng)伺服需要按照規(guī)范要求,按順序來(lái)。


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


a)初始化時(shí)鐘 osal_timer_init

b)初始化網(wǎng)卡ec_init

c)等待進(jìn)入INIT態(tài)


d)初始化驅(qū)動(dòng)器(is620n)ec_config_init

e)DC配置


f)申請(qǐng)并等待進(jìn)入Pre-OP態(tài)

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

h)配置FMMU ec_config_map


i)申請(qǐng)并等待進(jìn)入Safe-OP態(tài)


j)設(shè)置CSP模式

k)發(fā)送和接收過程數(shù)據(jù)1次,觸發(fā)SLAVE

l)申請(qǐng)并等待進(jìn)入OP態(tài)


m)進(jìn)入過程數(shù)據(jù)收發(fā)循環(huán)


在進(jìn)入數(shù)據(jù)數(shù)據(jù)收發(fā)循環(huán)后,按次序發(fā)送控制字啟動(dòng)伺服(6040h發(fā)送6,7和15),然后就可以不斷發(fā)送新的控制位置讓電機(jī)轉(zhuǎn)起來(lái)了!



5. 總結(jié)


整個(gè)移植過程還是充滿了挑戰(zhàn),主要也是因?yàn)榻衲瓴砰_始接觸EtherCAT,很多概念是邊學(xué)邊用,網(wǎng)上也參考了不少同學(xué)的帖子。很多人反應(yīng)匯川的伺服用SOEM驅(qū)動(dòng)DC同步模式總是有問題,確實(shí)遇到了很多奇奇怪怪的問題。經(jīng)過這兩個(gè)月的折騰,總算開了個(gè)頭,基礎(chǔ)打好了。

下一步可優(yōu)化的就是現(xiàn)在的網(wǎng)絡(luò)移植改用直接操作emac,這樣可以減少網(wǎng)絡(luò)抖動(dòng)。

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

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

SOEM已經(jīng)提交PR #1260,等待通過。有問題可通過本帖留言或郵件聯(lián)系我,大家一起改進(jìn)。


版權(quán)聲明:本文為RT-Thread論壇用戶「lg28870983」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。


原文鏈接:

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


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


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



愛我就給我點(diǎn)在看

點(diǎn)擊閱讀原文


原文標(biāo)題:NUC980 DIY項(xiàng)目大挑戰(zhàn) - EtherCAT實(shí)現(xiàn)

文章出處:【微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • RT-Thread
    +關(guān)注

    關(guān)注

    32

    文章

    1498

    瀏覽量

    43543

原文標(biāo)題:NUC980 DIY項(xiàng)目大挑戰(zhàn) - EtherCAT實(shí)現(xiàn)

文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何在 nuc980 上切換到持久文件系統(tǒng)?

    我遵循了“NUC980 Linux 4.4 BSP 用戶手冊(cè)EN.pdf”文檔,但當(dāng)我嘗試取消選擇“初始 RAM 文件系統(tǒng)和 RAM 磁盤 (initramfs/initrd) 支持
    發(fā)表于 08-29 07:58

    為什么無(wú)法將 PG.12、PG.13、PG.14 用作 NUC980 的 GPIO?

    無(wú)法將 PG.12、PG.13、PG.14 用作 NUC980 的 GPIO
    發(fā)表于 08-29 07:52

    NUC980是否可以對(duì) EBI 進(jìn)行 DMA?

    是否可以對(duì) EBI 進(jìn)行 DMA?我有從 USB 到 SDRAM 的 DMA 工作,但是當(dāng)我將 DMA 目標(biāo)地址更改為 EBI(60000000 美元)時(shí),我沒有收到任何外部總線活動(dòng)。如果我將 DMA 到 SDRAM 中的臨時(shí)緩沖區(qū),然后將 CPU 復(fù)制到 EBI,它會(huì)按預(yù)期工作。
    發(fā)表于 08-29 07:05

    如何使用 NUC980 系列微處理器 (MPU) 構(gòu)建具有帶外 (OOB) 功能的簡(jiǎn)單遠(yuǎn)程監(jiān)控應(yīng)用?

    如何使用 NUC980 系列微處理器 (MPU) 構(gòu)建具有帶外 (OOB) 功能的簡(jiǎn)單遠(yuǎn)程監(jiān)控應(yīng)用。
    發(fā)表于 08-19 06:21

    耐達(dá)訊自動(dòng)化EtherCAT轉(zhuǎn)RS232:示波器連接的“開掛秘籍”

    一個(gè)復(fù)雜的電力系統(tǒng)測(cè)試項(xiàng)目,需要把多臺(tái)RS232接口的示波器接入基于EtherCAT的自動(dòng)化測(cè)試系統(tǒng)。可兩者通信不兼容,數(shù)據(jù)傳輸成了大問題。后來(lái)他用了耐達(dá)訊自動(dòng)化EtherCAT轉(zhuǎn)RS232網(wǎng)關(guān),把網(wǎng)關(guān)
    發(fā)表于 07-23 15:31

    醫(yī)療界的“萬(wàn)能轉(zhuǎn)換器耐達(dá)訊EtherCAT轉(zhuǎn)RS\\-232“協(xié)議互聯(lián)的秘密武器

    采用EtherCAT時(shí),如何讓“老司機(jī)”搭上“新生代”的快車,就成了一個(gè)核心技術(shù)挑戰(zhàn)。 兩者的“性格”迥異。RS-232網(wǎng)關(guān)是低速、點(diǎn)對(duì)點(diǎn)的串行標(biāo)準(zhǔn),簡(jiǎn)單可靠。而EtherCAT協(xié)議則是基于以太網(wǎng)的實(shí)時(shí)
    發(fā)表于 07-23 15:28

    RS232轉(zhuǎn)EtherCAT網(wǎng)關(guān)讓電力儀表開啟\"躺贏\"模式

    在電力自動(dòng)化領(lǐng)域,RS232儀表與Ethercat網(wǎng)絡(luò)間的協(xié)議壁壘常令工程師頭疼。如何低成本實(shí)現(xiàn)數(shù)據(jù)互通?本文從技術(shù)與應(yīng)用角度解析這一問題的解決方案。 技術(shù)痛點(diǎn)與需求 RS232儀表憑借可靠性在
    發(fā)表于 07-21 15:31

    耐達(dá)訊RS232轉(zhuǎn)Ethercat網(wǎng)關(guān):建筑驅(qū)動(dòng)連接的“秘密武器”

    ,能夠讓舊設(shè)備也能享受到Ethercat的優(yōu)勢(shì),實(shí)現(xiàn)與現(xiàn)代控制系統(tǒng)的無(wú)縫對(duì)接。 在實(shí)際的建筑項(xiàng)目中,我們就遇到過這樣的問題。某建筑項(xiàng)目中,有一批采用Rs232接口的驅(qū)動(dòng)器,由于控制系統(tǒng)
    發(fā)表于 07-21 15:29

    讓老舊醫(yī)療設(shè)備“聽懂”新語(yǔ)言:CAN轉(zhuǎn)EtherCAT的醫(yī)療行業(yè)應(yīng)用

    與中央控制系統(tǒng)通信。工程師部署了耐達(dá)訊通信技術(shù)CAN轉(zhuǎn)EtherCAT網(wǎng)關(guān)后,通過以下步驟實(shí)現(xiàn)連接: 硬件連接:將網(wǎng)關(guān)的CAN接口接入驅(qū)動(dòng)模塊,EtherCAT接口接入主控PLC; 參數(shù)配置:在
    發(fā)表于 07-18 15:27

    破界而立:CAN轉(zhuǎn)EtherCAT在VAV系統(tǒng)的融合實(shí)踐

    EtherCAT的100Mbps帶寬,支持128個(gè)溫控節(jié)點(diǎn)同步通信;3)通過標(biāo)準(zhǔn)以太網(wǎng)接口實(shí)現(xiàn)BAS系統(tǒng)的集中管理。在需要分階段升級(jí)的項(xiàng)目中,該方案可使系統(tǒng)擴(kuò)容周期縮短40%。 總結(jié):在建筑智能化改造
    發(fā)表于 07-16 14:27

    打破協(xié)議壁壘,CAN轉(zhuǎn)EtherCAT連接工業(yè)相機(jī)秒變跨國(guó)CP”!

    傳感器控制;EtherCAT低延遲、高吞吐,適配實(shí)時(shí)圖像傳輸。當(dāng)需要將CAN相機(jī)接入EtherCAT網(wǎng)絡(luò)時(shí),耐達(dá)訊通信技術(shù)CAN轉(zhuǎn)EtherCAT網(wǎng)關(guān)成為核心橋梁,通過數(shù)據(jù)幀解析與映射實(shí)現(xiàn)
    發(fā)表于 07-14 16:20

    突破性技術(shù):制藥凍干機(jī)實(shí)現(xiàn)EtherCAT與Profinet網(wǎng)關(guān)模塊無(wú)縫監(jiān)控集成

    案例分享:凍干機(jī)EtherCAT 轉(zhuǎn) Profinet 實(shí)現(xiàn)溫濕度監(jiān)控 在現(xiàn)代醫(yī)藥生產(chǎn)過程中,凍干機(jī)作為關(guān)鍵設(shè)備,對(duì)溫濕度的控制與監(jiān)測(cè)尤為重要。某醫(yī)藥企業(yè)在其凍干機(jī)系統(tǒng)升級(jí)中,面臨一個(gè)典型的通訊挑戰(zhàn)
    的頭像 發(fā)表于 03-19 13:55 ?360次閱讀
    突破性技術(shù):制藥凍干機(jī)<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>EtherCAT</b>與Profinet網(wǎng)關(guān)模塊無(wú)縫監(jiān)控集成

    科技綻放-EtherCAT轉(zhuǎn)Profinet網(wǎng)關(guān)智能連接項(xiàng)目

    開疆智能EtherCAT轉(zhuǎn)Profinet網(wǎng)關(guān)智能連接項(xiàng)目:直接體現(xiàn)了從Profinet到EtherCAT的連接核心內(nèi)容,智能連接突出了該項(xiàng)目的技術(shù)特點(diǎn)。工業(yè)互聯(lián)方案強(qiáng)調(diào)了該
    的頭像 發(fā)表于 12-09 17:15 ?542次閱讀
    科技綻放-<b class='flag-5'>EtherCAT</b>轉(zhuǎn)Profinet網(wǎng)關(guān)智能連接<b class='flag-5'>項(xiàng)目</b>

    舵機(jī)技術(shù)新紀(jì)元:解鎖DIY項(xiàng)目的無(wú)限可能

    Hey小伙伴們,在DIY的世界里,你是否曾因?yàn)檎也坏揭豢詈线m的舵機(jī)而苦惱?是不是總覺得你的遙控車、機(jī)器人或無(wú)人機(jī)少了那份精準(zhǔn)與靈動(dòng)?今天,就讓我們一起走進(jìn)舵機(jī)的技術(shù)殿堂,探索那些讓DIY項(xiàng)目從此起飛
    的頭像 發(fā)表于 10-30 15:42 ?783次閱讀