国产成人av人人爽人人澡-亚洲国产日韩欧美一区-好吊日视频这里只有精品-日本高清精品视频在线

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當(dāng)前位置:首頁 >> Nuvoton/新唐 >> NuMaker-IIoT-NUC980 測評之 EtherCAT 實(shí)現(xiàn)

NuMaker-IIoT-NUC980 測評之 EtherCAT 實(shí)現(xiàn)

關(guān)鍵字:物聯(lián)網(wǎng) NUC980 作者:不詳 來源:不詳 發(fā)布時(shí)間:2023-03-04  瀏覽:16
1、背景
作者:lg28870983
最近計(jì)劃DIY一個(gè)EtherCAT控制器,一直在看資料和選型,初步定了NUC980的方案,主要是看中NUC980的RAM比較大,采購還算方便(最近缺芯,大家都懂)。


選定硬件之后,NUC980跑什么系統(tǒng)呢?從以往經(jīng)驗(yàn)來看,ARM9一般跑linux比較多,資源也好找,同時(shí)官方提供BSP。但這次任務(wù)有點(diǎn)特殊,EtherCAT對實(shí)時(shí)性要求比較高,linux不是最合適的。結(jié)合MCU開發(fā)經(jīng)驗(yàn),就準(zhǔn)備上個(gè)RTOS,以前M3和M4的芯片,主要用FreeRTOS,最近也開始用RT-Thread。新唐官方也推出了NUC980的RT-Thread版BSP,對開發(fā)者非常友好,最終決定了NUC980+RT-Thread的方案。


剛好最近官方有個(gè)DIY項(xià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跑起來。這個(gè)參考官方的文檔就可以了。


3.2 Some 移植
下載soem-1.4.0,將整個(gè)目錄放在rt-thread項(xiàng)目里,下圖是我的目錄,供參考
在some-1.4.0及其子目錄中需要手工編輯SConscript腳本,這兒就不展開了。后續(xù)我把源碼打包發(fā)上來。


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_usleep和osal_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,代碼也簡化了不少。下面就是改動過的相關(guān)代碼 (請至評測原文網(wǎng)址),osal_timer_init這個(gè)初始化函數(shù)要在啟動EhterCAT功能之前調(diào)用。


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),這樣對原來系統(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ù)來的時(shí)候先經(jīng)過鉤子函數(shù),我們把EtherCAT數(shù)據(jù)幀截住,不傳給原來的lwip協(xié)議棧;如果要發(fā)送數(shù)據(jù),就直接調(diào)用發(fā)送函數(shù),繞過lwip協(xié)議棧。這樣也不影響lwip協(xié)議棧工作。


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


3.2.5 some 基本功能測試
采用官方的slave_info測試代碼,測試主要分為時(shí)鐘測試和soem EtherCAT協(xié)議;竟δ軠y試。在終端中輸入 soem_test + 回車即可。
我接了一個(gè)匯川IS620N驅(qū)動器,下面是輸出的部分內(nèi)容:
Slave:1
Name:IS620N
Output size: 96bits
Input size: 224bits
State: 4
Delay: 0[ns]
Has DC: 1
DCParentport:0
Activeports:1.0.0.0
Configured address: 1001
Man: 00100000 ID: 000c0108 Rev: 00010001
SM0 A:1000 L: 128 F:00010026 Type:1
SM1 A:1400 L: 128 F:00010022 Type:2
SM2 A:1800 L:  12 F:00010064 Type:3
SM3 A:1c00 L:  28 F:00010020 Type:4
FMMU0 Ls:00000000 Ll:  12 Lsb:0 Leb:7 Ps:1800 Psb:0 Ty:02 Act:01
FMMU1 Ls:0000000c Ll:  28 Lsb:0 Leb:7 Ps:1c00 Psb:0 Ty:01 Act:01
FMMUfunc 0:1 1:2 2:0 3:0
MBX length wr: 128 rd: 128 MBX protocols : 04
CoE details: 0d FoE details: 00 EoE details: 00 SoE details: 00
Ebus current: 0[mA]
only LRD/LWR:0




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


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


a)初始化時(shí)鐘 osal_timer_init
b)初始化網(wǎng)卡ec_init
c)等待進(jìn)入INIT態(tài)


d)初始化驅(qū)動器(is6(is620n)ec_config_init
e)DC配置


f)申請并等待進(jìn)入Pre-OP態(tài)
g)配置過程數(shù)據(jù)TxPDO/RxPDO(自定義函數(shù)process_data_config)
h)配置FMMU ec_config_map


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


j)設(shè)置CSP模式
k)發(fā)送和接收過程數(shù)據(jù)1次,觸發(fā)SLAVE
l)申請并等待進(jìn)入OP態(tài)


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


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




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


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


附件程序里還參考本站貼子移植了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)。

編輯:admin  最后修改時(shí)間:2023-03-04

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

大尺度激情福利视频在线观看| 国产主播精品福利午夜二区| 亚洲国产精品久久琪琪| 亚洲一区二区三区有码| 免费观看潮喷到高潮大叫| 九九蜜桃视频香蕉视频| 男女激情视频在线免费观看| 丰满人妻熟妇乱又伦精另类视频| 国产欧美日韩一级小黄片| 日韩不卡一区二区视频| 欧美日韩无卡一区二区| 欧美亚洲国产日韩一区二区| 国产精品成人一区二区三区夜夜夜 | 欧美精品亚洲精品日韩专区| 欧美乱视频一区二区三区| 国产精品成人一区二区三区夜夜夜 | 国产精品伦一区二区三区在线| 久热青青草视频在线观看| 日韩在线免费看中文字幕| 国产熟女一区二区精品视频| 精品香蕉国产一区二区三区| 日本精品理论在线观看| 国产伦精品一一区二区三区高清版| 亚洲欧美日韩国产自拍| 99在线视频精品免费播放| 日本丰满大奶熟女一区二区| 精品高清美女精品国产区| 国产精品丝袜一二三区| 国产精品免费视频视频| 日韩欧美三级视频在线| 亚洲国产性感美女视频| 熟女高潮一区二区三区| 激情亚洲一区国产精品久久| 中国美女偷拍福利视频| 激情五月综五月综合网| 欧美中文日韩一区久久| 噜噜中文字幕一区二区| 日本加勒比在线播放一区| 国产欧美日韩在线一区二区| 日本午夜乱色视频在线观看| 情一色一区二区三区四|