基于rt thread smart构建EtherCAT主站
我把源碼開源到到了gitee,https://gitee.com/rathon/rt-thread-smart-soem
有興趣的去可以下載下來跑一下
軟件工程推薦用vscode 打開。rt thread smart的教程可以參考官網資料,這里就不多闡述了。
用的是100ask的imx6ull開發板,雷賽的dm3e-556步進電機。實驗需要用到兩個網口,一個走tcp數據(基于lwip協議棧),一個走ethercat數據(基于soem)。
工程目錄如下
tcp目錄下為實驗用到的應用程序代碼。
實驗方案
PC通過tcp/ip通訊向rt smart開發板發送報文,rt smart后臺運行“tcp”進程。tcp進程的NetDataThread線程實時接收PC數據,并通過共享內存將數據轉發給內核空間的“simpletest”線程。simpletest線程實時接收進程發來的數據,解析數據內容,并通過全局變量將參數傳遞給EtherCAT定時器中斷服務函數。根據tcp傳輸數據,控制EtherCAT步進電機運轉。 數據為“left”,電機正轉 數據為“right”,電機反轉 數據為“stop”,電機停止運動 數據為“up”,電機加速 數據為“down”,電機減速1.首先,編譯內核代碼,生成rtthread.imx等文件。
2.接著編譯應用程序代碼,實驗所用代碼為tcp.c代碼,編譯生成tcp.elf文件。然后將tcp.elf文件拷貝至emmc或者sd卡中。
scons --app=tcp可以通過 100ask_imx6ull_flashing_tool 燒錄工具將 rt-smart 內核固件文件 rtthread.imx,通過 USB 加載至內存中運行。
此時系統運行后,會打印出如下數據
然后后臺運行tcp.elf程序
然后用上位機與rt smart建立tcp連接,我這里用的是野火的上位機。
連接成功后打印數據如下:
最后通過上位機發送“left”、“right”、“up”、“down”、“stop”字符串可以實現電機的運動。
pc的ip地址為192.168.1.100
開發板的ip地址為192.168.1.30:7575.
實驗效果如下
基于rt thread smart構建EtherCAT主站
軟件架構
rt thread的lwip協議棧
RT-Thread 的 lwIP 移植在原版的基礎上,添加了網絡設備層以替換原來的驅動層。和原來的驅動層不同的是,對于以太網數據的收發采用了獨立的雙線程結構,erx 線程和 etx 線程在正常情況下,兩者的優先級設置成相同,用戶可以根據自身實際要求進行微調以側重接收或發送。
lwip接收過程
soem收發函數
總結
以上是生活随笔為你收集整理的基于rt thread smart构建EtherCAT主站的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 青海无海迅达有鲜 物净天泽与宁共享 迅达
- 下一篇: UG模具设计讲述模具常见问题描叙